From 1ba7873b8f2bdfcf0adc3848db2b1995c97676ff Mon Sep 17 00:00:00 2001 From: leotrs Date: Tue, 13 Oct 2020 18:13:17 -0400 Subject: [PATCH 01/37] split config/utils.py into config/logger.py and config/utils.py, in preparation for the new classes coming soon --- manim/config/__init__.py | 3 +- manim/config/logger.py | 104 +++++ manim/config/main_utils.py | 3 +- manim/config/utils.py | 825 ++++++++++++++++++++++++++++++++----- 4 files changed, 838 insertions(+), 97 deletions(-) create mode 100644 manim/config/logger.py diff --git a/manim/config/__init__.py b/manim/config/__init__.py index 5895076cc5..3a9317ffa6 100644 --- a/manim/config/__init__.py +++ b/manim/config/__init__.py @@ -1,7 +1,8 @@ import logging from contextlib import contextmanager -from .utils import make_config_parser, make_logger, make_config, make_file_writer_config +from .logger import make_logger +from .utils import make_config_parser, make_config, make_file_writer_config __all__ = [ "logger", diff --git a/manim/config/logger.py b/manim/config/logger.py new file mode 100644 index 0000000000..9d207fb406 --- /dev/null +++ b/manim/config/logger.py @@ -0,0 +1,104 @@ +""" +logger.py +--------- + +Functions to create and set the logger. + +""" + +import logging +import json +import copy + +from rich.console import Console +from rich.logging import RichHandler +from rich.theme import Theme +from rich import print as printf +from rich import errors, color + +HIGHLIGHTED_KEYWORDS = [ # these keywords are highlighted specially + "Played", + "animations", + "scene", + "Reading", + "Writing", + "script", + "arguments", + "Invalid", + "Aborting", + "module", + "File", + "Rendering", + "Rendered", +] + +WRONG_COLOR_CONFIG_MSG = """ +[logging.level.error]Your colour configuration couldn't be parsed. +Loading the default color configuration.[/logging.level.error] +""" + + +def make_logger(parser, verbosity): + """Make the manim logger and the console.""" + # Throughout the codebase, use Console.print() instead of print() + theme = parse_theme(parser) + console = Console(theme=theme) + + # set the rich handler + RichHandler.KEYWORDS = HIGHLIGHTED_KEYWORDS + rich_handler = RichHandler( + console=console, show_time=parser.getboolean("log_timestamps") + ) + rich_handler.setLevel(verbosity) + + # finally, the logger + logger = logging.getLogger("manim") + logger.addHandler(rich_handler) + + return logger, console + + +def parse_theme(config_logger): + theme = dict( + zip( + [key.replace("_", ".") for key in config_logger.keys()], + list(config_logger.values()), + ) + ) + + theme["log.width"] = None if theme["log.width"] == "-1" else int(theme["log.width"]) + + theme["log.height"] = ( + None if theme["log.height"] == "-1" else int(theme["log.height"]) + ) + theme["log.timestamps"] = False + try: + customTheme = Theme( + { + k: v + for k, v in theme.items() + if k not in ["log.width", "log.height", "log.timestamps"] + } + ) + except (color.ColorParseError, errors.StyleSyntaxError): + printf(WRONG_COLOR_CONFIG_MSG) + customTheme = None + + return customTheme + + +class JSONFormatter(logging.Formatter): + """Subclass of `:class:`logging.Formatter`, to build our own format of the logs (JSON).""" + + def format(self, record): + record_c = copy.deepcopy(record) + if record_c.args: + for arg in record_c.args: + record_c.args[arg] = "<>" + return json.dumps( + { + "levelname": record_c.levelname, + "module": record_c.module, + "message": super().format(record_c), + } + ) diff --git a/manim/config/main_utils.py b/manim/config/main_utils.py index 1c937b18d4..ac3908c635 100644 --- a/manim/config/main_utils.py +++ b/manim/config/main_utils.py @@ -14,7 +14,8 @@ import colour from manim import constants, logger, config, file_writer_config -from .utils import make_config_parser, JSONFormatter +from .utils import make_config_parser +from .logger import JSONFormatter from ..utils.tex import TexTemplate, TexTemplateFromFile diff --git a/manim/config/utils.py b/manim/config/utils.py index e3354329b5..e85284e501 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -2,49 +2,21 @@ utils.py -------- -Functions to create the logger and config. +Functions to create and set the config. """ -import os import sys -import logging -from pathlib import Path import configparser -import json -import copy +from pathlib import Path +from collections.abc import Mapping, MutableMapping +import numpy as np import colour -from rich.console import Console -from rich.logging import RichHandler -from rich.theme import Theme -from rich import print as printf -from rich import errors, color from .. import constants from ..utils.tex import TexTemplate, TexTemplateFromFile -HIGHLIGHTED_KEYWORDS = [ # these keywords are highlighted specially - "Played", - "animations", - "scene", - "Reading", - "Writing", - "script", - "arguments", - "Invalid", - "Aborting", - "module", - "File", - "Rendering", - "Rendered", -] - -WRONG_COLOR_CONFIG_MSG = """ -[logging.level.error]Your colour configuration couldn't be parsed. -Loading the default color configuration.[/logging.level.error] -""" - def config_file_paths(): library_wide = Path.resolve(Path(__file__).parent / "default.cfg") @@ -70,55 +42,6 @@ def make_config_parser(): return parser -def make_logger(parser, verbosity): - """Make the manim logger and the console.""" - # Throughout the codebase, use Console.print() instead of print() - theme = parse_theme(parser) - console = Console(theme=theme) - - # set the rich handler - RichHandler.KEYWORDS = HIGHLIGHTED_KEYWORDS - rich_handler = RichHandler( - console=console, show_time=parser.getboolean("log_timestamps") - ) - rich_handler.setLevel(verbosity) - - # finally, the logger - logger = logging.getLogger("manim") - logger.addHandler(rich_handler) - - return logger, console - - -def parse_theme(config_logger): - theme = dict( - zip( - [key.replace("_", ".") for key in config_logger.keys()], - list(config_logger.values()), - ) - ) - - theme["log.width"] = None if theme["log.width"] == "-1" else int(theme["log.width"]) - - theme["log.height"] = ( - None if theme["log.height"] == "-1" else int(theme["log.height"]) - ) - theme["log.timestamps"] = False - try: - customTheme = Theme( - { - k: v - for k, v in theme.items() - if k not in ["log.width", "log.height", "log.timestamps"] - } - ) - except (color.ColorParseError, errors.StyleSyntaxError): - printf(WRONG_COLOR_CONFIG_MSG) - customTheme = None - - return customTheme - - def make_config(parser): """Parse config files into a single dictionary exposed to the user.""" # By default, use the CLI section of the digested .cfg files @@ -253,18 +176,730 @@ def make_file_writer_config(parser, config): return fw_config -class JSONFormatter(logging.Formatter): - """Subclass of `:class:`logging.Formatter`, to build our own format of the logs (JSON).""" - - def format(self, record): - record_c = copy.deepcopy(record) - if record_c.args: - for arg in record_c.args: - record_c.args[arg] = "<>" - return json.dumps( - { - "levelname": record_c.levelname, - "module": record_c.module, - "message": super().format(record_c), - } +class ManimConfig(MutableMapping): + + _OPTS = { + 'background_color', + 'background_opacity', + 'custom_folders', + 'disable_caching', + 'ffmpeg_loglevel', + 'flush_cache', + 'frame_height', + 'frame_rate', + 'frame_width', + 'frame_x_radius', + 'frame_y_radius', + 'from_animation_number', + 'images_dir', + 'input_file', + 'leave_progress_bars', + 'log_dir', + 'log_to_file', + 'max_files_cached', + 'media_dir', + 'movie_file_extension', + 'pixel_height', + 'pixel_width', + 'png_mode', + 'preview', + 'progress_bar', + 'save_as_gif', + 'save_last_frame', + 'save_pngs', + 'scene_names', + 'show_in_file_browser', + 'skip_animations', + 'sound', + 'tex_dir', + 'tex_template_file', + 'text_dir', + 'upto_animation_number', + 'verbosity', + 'video_dir', + 'write_all', + 'write_to_movie', + } + + def __init__(self, parser): + self._d = {k: None for k in self._OPTS} + self._parser = parser + self.digest_parser(parser) + + # behave like a dict + def __iter__(self): + return iter(self._d) + + def __len__(self): + return len(self._d) + + def __getitem__(self, key): + return getattr(self, key) + + def __setitem__(self, key, val): + getattr(ManimConfigDict, key).fset(self, val) # fset is the property's setter + + # don't allow to delete anything + def __delitem__(self, key): + raise AttributeError("'ManimConfigDict' object does not support item deletion") + + def __delattr__(self, key): + raise AttributeError("'ManimConfigDict' object does not support item deletion") + + # helper type-checking methods + def _set_from_list(self, key, val, values): + if val in values: + self._d[key] = val + else: + raise ValueError(f'attempted to set {key} to {val}; must be in {values}') + + def _set_boolean(self, key, val): + if val in [True, False]: + self._d[key] = val + else: + raise ValueError(f'{key} must be boolean') + + def _set_str(self, key, val): + if isinstance(val, str): + self._d[key] = val + elif not val: + self._d[key] = "" + else: + raise ValueError(f'{key} must be str or falsy value') + + def _set_between(self, key, val, lo, hi): + if lo <= val <= hi: + self._d[key] = val + else: + raise ValueError(f'{key} must be {lo} <= {key} <= {hi}') + + def _set_pos_number(self, key, val, allow_inf): + if isinstance(val, int) and val > -1: + self._d[key] = val + elif allow_inf and (val == -1 or val == float('inf')): + self._d[key] = float('inf') + else: + raise ValueError(f'{key} must be a non-negative integer (use -1 for infinity)') + + # builders + def digest_parser(self, parser): + for key in [ + 'write_to_movie', + 'save_last_frame', + 'write_all', + 'save_pngs', + 'save_as_gif', + 'preview', + 'show_in_file_browser', + 'progress_bar', + 'sound', + 'leave_progress_bars', + 'log_to_file', + 'disable_caching', + 'flush_cache', + 'custom_folders', + 'skip_animations', + ]: + setattr(self, key, parser['CLI'].getboolean(key, fallback=False)) + + for key in [ + 'from_animation_number', + 'upto_animation_number', + 'frame_rate', + 'max_files_cached', + 'pixel_height', + 'pixel_width', + ]: + setattr(self, key, parser['CLI'].getint(key)) + + for key in [ + 'verbosity', + 'media_dir', + 'log_dir', + 'video_dir', + 'images_dir', + 'text_dir', + 'tex_dir', + 'input_file', + 'output_file', + 'png_mode', + 'movie_file_extension', + 'background_color', + ]: + setattr(self, key, parser['CLI'].get(key, fallback='', raw=True)) + + for key in [ + 'background_opacity', + 'frame_height', + 'frame_width', + ]: + setattr(self, key, parser['CLI'].getfloat(key)) + + val = parser['CLI'].get('tex_template_file') + if val: + setattr(self, 'tex_template_file', val) + + val = parser['ffmpeg'].get('loglevel') + if val: + setattr(self, 'ffmpeg_loglevel', val) + + return self + + def digest_args(self, args): + self.input_file = args.file + self.scene_names = ( + args.scene_names if args.scene_names is not None else [] ) + self.output_file = args.output_file + + for key in [ + "preview", + "show_in_file_browser", + "sound", + "leave_progress_bars", + "write_to_movie", + "save_last_frame", + "save_pngs", + "save_as_gif", + "write_all", + "disable_caching", + "flush_cache", + "log_to_file", + "transparent", + "dry_run", + "media_dir", + "scene_names", + "video_dir", + "images_dir", + "tex_dir", + "text_dir", + "log_dir", + "custom_folders", + "verbosity", + ]: + if hasattr(args, key): + attr = getattr(args, key) + # if attr is None, then no argument was passed and we should not + # change the current config + if attr is not None: + self[key] = attr + + # The -s (--save_last_frame) flag invalidates -w (--write_to_movie). + if self["save_last_frame"]: + self["write_to_movie"] = False + + # Handle the -n flag. + nflag = args.from_animation_number + if nflag is not None: + if "," in nflag: + start, end = nflag.split(",") + self.from_animation_number = int(start) + self.upto_animation_number = int(end) + else: + self.from_animation_number = int(nflag) + + # Handle the -r flag. + rflag = args.resolution + if rflag is not None: + try: + w, h = rflag.split(",") + self.pixel_width = int(w) + self.pixel_height = int(h) + except ValueError: + raise ValueError(f'invalid argument {rflag} for -r flag (must have a comma ",")') + + # Handle --custom_folders + if args.custom_folders: + for opt in [ + 'media_dir', + 'video_dir', + 'text_dir', + 'tex_dir', + 'log_dir' + ]: + self[opt] = self._parser['custom_folders'].get(opt, raw=True) + + return self + + def digest_dict(self, _dict): + return self + + def digest_file(self, filename, cascade=True): + return self + + # regular methods + def copy(self): + return copy.deepcopy(self) + + # config options are properties + preview = property( + lambda self: self._d['preview'], + lambda self, val: self._set_boolean('preview', val), + doc='Whether to play the movie once it is done rendering' + ) + + show_in_file_browser = property( + lambda self: self._d['show_in_file_browser'], + lambda self, val: self._set_boolean('show_in_file_browser', val), + doc='Whether to show the rendered file in the file browser' + ) + + progress_bar = property( + lambda self: self._d['progress_bar'], + lambda self, val: self._set_boolean('progress_bar', val), + doc='Whether to show progress bars while rendering animations' + ) + + leave_progress_bars = property( + lambda self: self._d['leave_progress_bars'], + lambda self, val: self._set_boolean('leave_progress_bars', val), + doc='Whether to leave the progress bar for each animations' + ) + + log_to_file = property( + lambda self: self._d['log_to_file'], + lambda self, val: self._set_boolean('log_to_file', val), + doc='Whether to save logs to a file' + ) + + sound = property( + lambda self: self._d['sound'], + lambda self, val: self._set_boolean('sound', val), + doc='Whether to play a sound to notify when a scene is rendered' + ) + + write_to_movie = property( + lambda self: self._d['write_to_movie'], + lambda self, val: self._set_boolean('write_to_movie', val), + doc='Whether to render the scene to a movie file' + ) + + save_last_frame = property( + lambda self: self._d['save_last_frame'], + lambda self, val: self._set_boolean('save_last_frame', val), + doc='Whether to save the last frame of the scene as an image file' + ) + + write_all = property( + lambda self: self._d['write_all'], + lambda self, val: self._set_boolean('write_all', val), + doc='Whether to render all scenes in the input file' + ) + + save_pngs = property( + lambda self: self._d['save_pngs'], + lambda self, val: (print(f'setting to {val}'), self._set_boolean('save_pngs', val)), + doc='Whether to save all frames in the scene as images files' + ) + + save_as_gif = property( + lambda self: self._d['save_as_gif'], + lambda self, val: self._set_boolean('save_as_gif', val), + doc='Whether to save the rendered scene in .gif format.' + ) + + verbosity = property( + lambda self: self._d['verbosity'], + lambda self, val: self._set_from_list( + 'verbosity', val, ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] + ), + doc='Verbosity level of the logger.' + ) + + ffmpeg_loglevel = property( + lambda self: self._d['ffmpeg_loglevel'], + lambda self, val: self._set_from_list( + 'ffmpeg_loglevel', val, ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] + ), + doc='Verbosity level of ffmpeg.' + ) + + pixel_width = property( + lambda self: self._d['pixel_width'], + lambda self, val: self._set_pos_number('pixel_width', val, False), + doc='Frame width in pixels' + ) + + pixel_height = property( + lambda self: self._d['pixel_height'], + lambda self, val: self._set_pos_number('pixel_height', val, False), + doc='Frame height in pixels' + ) + + aspect_ratio = property( + lambda self: self._d['pixel_width'] / self._d['pixel_height'], + doc='Aspect ratio (width / height) in pixels' + ) + + frame_height = property( + lambda self: self._d['frame_height'], + lambda self, val: self._d.__setitem__('frame_height', val), + doc='Frame height in logical units' + ) + + frame_width = property( + lambda self: self._d['frame_width'], + lambda self, val: self._d.__setitem__('frame_width', val), + doc='Frame width in logical units' + ) + + frame_y_radius = property( + lambda self: self._d['frame_height'] / 2, + lambda self, val: ( + self._d.__setitem__('frame_y_radius', val) + or self._d.__setitem__('frame_height', 2*val) + ), + doc='Half the frame height' + ) + + frame_x_radius = property( + lambda self: self._d['frame_width'] / 2, + lambda self, val: ( + self._d.__setitem__('frame_x_radius', val) + or self._d.__setitem__('frame_width', 2*val) + ), + doc='Half the frame width' + ) + + top = property( + lambda self: self.frame_y_radius * constants.UP, + doc='One unit step in the positive vertical direction' + ) + + bottom = property( + lambda self: self.frame_y_radius * constants.DOWN, + doc='One unit step in the negative vertical direction' + ) + + left_side = property( + lambda self: self.frame_x_radius * constants.LEFT, + doc='One unit step in the negative horizontal direction' + ) + + right_side = property( + lambda self: self.frame_x_radius * constants.RIGHT, + doc='One unit step in the positive horizontal direction' + ) + + frame_rate = property( + lambda self: self._d['frame_rate'], + lambda self, val: self._d.__setitem__('frame_rate', val), + doc='Frame rate in fps (rames per second)' + ) + + background_color = property( + lambda self: self._d['background_color'], + lambda self, val: self._d.__setitem__("background_color", colour.Color(val)), + doc="Background color of the scene." + ) + + from_animation_number = property( + lambda self: self._d['from_animation_number'], + lambda self, val: self._d.__setitem__('from_animation_number', val), + doc='Set to a number greater than 1 to skip animations.' + ) + + upto_animation_number = property( + lambda self: self._d['upto_animation_number'], + lambda self, val: self._set_pos_number('upto_animation_number', val, True), + doc=('Set to less than the number of animations to skip ' + 'animations. Use -1 to avoid skipping.') + ) + + skip_animations = property( + lambda self: any([self.save_last_frame, self.from_animation_number]), + lambda self, val: self._set_boolean('skip_animations', val), + doc=('Set to less than the number of animations to skip ' + 'animations. Use -1 to avoid skipping.') + ) + + max_files_cached = property( + lambda self: self._d['max_files_cached'], + lambda self, val: self._set_pos_number('max_files_cached', val, True), + doc='Maximum number of files cached. Use -1 for infinity.' + ) + + flush_cache = property( + lambda self: self._d['flush_cache'], + lambda self, val: self._set_boolean('flush_cache', val), + doc='whether to delete all the cached partial movie files.' + ) + + disable_caching = property( + lambda self: self._d['disable_caching'], + lambda self, val: self._set_boolean('disable_caching', val), + doc='whether to use scene caching.' + ) + + png_mode = property( + lambda self: self._d['png_mode'], + lambda self, val: self._set_from_list('png_mode', val, ['RGB', 'RGBA']), + doc='Either RGA (no transparency) or RGBA (with transparency).' + ) + + movie_file_extension = property( + lambda self: self._d['movie_file_extension'], + lambda self, val: self._set_from_list('movie_file_extension', val, ['.mp4', '.mov']), + doc='Either .mp4 or .mov.' + ) + + background_opacity = property( + lambda self: self._d['background_opacity'], + lambda self, val: self._set_between('background_opacity', val, 0, 1), + doc='A number between 0.0 (fully transparent) and 1.0 (fully opaque).' + ) + + frame_size = property( + lambda self: (self._d['pixel_width'], self._d['pixel_height']), + lambda self, tup: ( + self._d.__setitem__('pixel_width', tup[0]) + or self._d.__setitem__('pixel_height', tup[1]) + ), + doc='' + ) + + @property + def quality(self): + f"""Video quality ({list(_QUAL.keys())})""" + q = { + 'pixel_width': self.pixel_width, + 'pixel_height': self.pixel_height, + 'frame_rate': self.frame_rate, + } + for qual in _QUAL: + if q == _QUAL[qual]: + return qual + else: + return None + + @quality.setter + def quality(self, qual): + if qual not in _QUAL: + raise KeyError(f'quality must be one of {list(self._qual.keys())}') + self.frame_size = _QUAL[qual]['width'], _QUAL[qual]['height'] + self.frame_rate = _QUAL[qual]['frame_rate'] + + @property + def transparent(self): + """Whether the background opacity is 0.0.""" + return self._d['background_opacity'] == 0.0 + + @transparent.setter + def transparent(self, val): + if val: + self.png_mode = 'RGBA' + self.movie_file_extension = '.mov' + self.background_opacity = 0.0 + else: + self.png_mode = 'RGB' + self.movie_file_extension = '.mp4' + self.background_opacity = 1.0 + + @property + def dry_run(self): + """Whether dry run is enabled.""" + return ( + self.write_to_movie == False + and self.write_all == False + and self.save_last_frame == False + and self.save_pngs == False + and self.save_as_gif == False + ) + + @dry_run.setter + def dry_run(self, val): + if val in [True, False]: + if val: # dry run + self.write_to_movie = False + self.write_all = False + self.save_last_frame = False + self.save_pngs = False + self.save_as_gif = False + else: # set to default + self.write_to_movie = True + self.write_all = False + self.save_last_frame = False + self.save_pngs = False + self.save_as_gif = False + else: + raise ValueError(f'dry_run must be boolean') + + media_dir = property( + lambda self: self._d['media_dir'], + lambda self, val: self._d.__setitem__('media_dir', Path(val)), + doc='Main output directory, relative to execcution directory.' + ) + + def _get_dir(self, key): + dirs = [ + 'media_dir', + 'video_dir', + 'images_dir', + 'text_dir', + 'tex_dir', + 'log_dir', + 'input_file', + 'output_file', + ] + dirs.remove(key) + dirs = {k: self._d[k] for k in dirs} + return self._d[key].format(**dirs) + + log_dir = property( + lambda self: self._get_dir('log_dir'), + lambda self, val: self._d.__setitem__('log_dir', val), + doc='Directory to place logs' + ) + + video_dir = property( + lambda self: self._get_dir('video_dir'), + lambda self, val: self._d.__setitem__('video_dir', val), + doc='Directory to place videos' + ) + + images_dir = property( + lambda self: self._get_dir('images_dir'), + lambda self, val: self._d.__setitem__('images_dir', val), + doc='Directory to place images' + ) + + text_dir = property( + lambda self: self._get_dir('text_dir'), + lambda self, val: self._d.__setitem__('text_dir', val), + doc='Directory to place text' + ) + + tex_dir = property( + lambda self: self._get_dir('tex_dir'), + lambda self, val: self._d.__setitem__('tex_dir', val), + doc='Directory to place tex' + ) + + custom_folders = property( + lambda self: self._d['custom_folders'], + lambda self, val: self._set_boolean('custom_folders', val), + doc='Whether to use custom folders.' + ) + + input_file = property( + lambda self: self._get_dir('input_file'), + lambda self, val: self._d.__setitem__('input_file', val), + doc='Input file name.' + ) + + output_file = property( + lambda self: self._get_dir('output_file'), + lambda self, val: self._d.__setitem__('output_file', val), + doc='Output file name.' + ) + + scene_names = property( + lambda self: self._d['scene_names'], + lambda self, val: self._d.__setitem__('scene_names', val), + doc='Scenes to play from file.' + ) + + @property + def tex_template(self): + if not hasattr(self, '_tex_template') or not self._tex_template: + fn = self._d["tex_template_file"] + if fn: + self._tex_template = TexTemplateFromFile(filename=fn) + else: + self._tex_template = TexTemplate() + return self._tex_template + + @tex_template.setter + def tex_template(self, val): + if isinstance(val, (TexTemplateFromFile, TexTemplate)): + self._tex_template = val + + @property + def tex_template_file(self): + return self._d['tex_template_file'] + + @tex_template_file.setter + def tex_template_file(self, val): + if val: + if not os.access(val, os.R_OK): + logging.getLogger("rich").warning(f"Custom TeX template {val} not found or not readable.") + else: + self._d["tex_template_file"] = Path(val) + self._tex_template = TexTemplateFromFile(filename=val) + else: + self._d["tex_template_file"] = val # actually set the falsy value + self._tex_template = TexTemplate() # but don't use it + + +class ManimFrame(Mapping): + _OPTS = { + 'pixel_width', + 'pixel_height', + 'pixel_width', + 'pixel_height', + 'aspect_ratio', + 'frame_height', + 'frame_width', + 'frame_y_radius', + 'frame_x_radius', + 'top', + 'bottom', + 'left_side', + 'right_side', + } + _CONSTANTS = { + 'UP': np.array((0.0, 1.0, 0.0)), + 'DOWN': np.array((0.0, -1.0, 0.0)), + 'RIGHT': np.array((1.0, 0.0, 0.0)), + 'LEFT': np.array((-1.0, 0.0, 0.0)), + 'IN': np.array((0.0, 0.0, -1.0)), + 'OUT': np.array((0.0, 0.0, 1.0)), + 'ORIGIN': np.array((0.0, 0.0, 0.0)), + 'X_AXIS': np.array((1.0, 0.0, 0.0)), + 'Y_AXIS': np.array((0.0, 1.0, 0.0)), + 'Z_AXIS': np.array((0.0, 0.0, 1.0)), + 'UL': np.array((-1.0, 1.0, 0.0)), + 'UR': np.array((1.0, 1.0, 0.0)), + 'DL': np.array((-1.0, -1.0, 0.0)), + 'DR': np.array((1.0, -1.0, 0.0)), + } + + def __init__(self, c): + if not isinstance(c, ManimConfigDict): + raise TypeError("argument must be instance of 'ManimConfigDict'") + # need to use __dict__ directly because setting attributes is not + # allowed (see __setattr__) + self.__dict__['_c'] = c + + # there are required by parent class Mapping to behave like a dict + def __getitem__(self, key): + if key in self._OPTS: + return self._c[key] + elif key in self._CONSTANTS: + return self._CONSTANTS[key] + else: + raise KeyError(key) + + def __iter__(self): + return iter(list(self._OPTS) + list(self._CONSTANTS)) + + def __len__(self): + return len(self._OPTS) + + # make this truly immutable + def __setattr__(self, attr, val): + raise TypeError("'ManimFrame' object does not support item assignment") + + def __setitem__(self, key, val): + raise TypeError("'ManimFrame' object does not support item assignment") + + def __delitem__(self, key): + raise TypeError("'ManimFrame' object does not support item deletion") + + +for opt in list(ManimFrame._OPTS) + list(ManimFrame._CONSTANTS): + setattr( + ManimFrame, + opt, + property(lambda self, o=opt: self[o]) + ) From 6e0ba47a1e8b5c23d3c36ab1d7d75450d121a46f Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 14 Oct 2020 22:08:00 -0400 Subject: [PATCH 02/37] change every mention of file_writer_config to config. Also some tweaks to ManimConfig --- manim/__main__.py | 31 +- manim/camera/camera.py | 6 +- manim/config/__init__.py | 10 +- manim/config/default.cfg | 20 +- manim/config/logger.py | 1 + manim/config/main_utils.py | 2 +- manim/config/utils.py | 294 ++++++++---------- manim/constants.py | 2 +- manim/grpc/impl/frame_server_impl.py | 9 +- manim/mobject/mobject.py | 4 +- manim/mobject/svg/text_mobject.py | 6 +- manim/scene/scene.py | 67 ++-- manim/scene/scene_file_writer.py | 104 ++++--- manim/utils/module_ops.py | 8 +- manim/utils/tex_file_writing.py | 6 +- .../logs_data/BasicSceneLoggingTest.txt | 2 +- tests/helpers/graphical_units.py | 13 +- tests/test_cli_flags.py | 15 +- tests/test_config.py | 5 +- tests/test_container.py | 2 +- tests/test_copy.py | 16 +- tests/test_logging/test_logging.py | 2 +- tests/test_scene_rendering/conftest.py | 3 - .../test_caching_relalted.py | 1 - .../test_caching_related.py | 1 - tests/utils/GraphicalUnitTester.py | 26 +- 26 files changed, 300 insertions(+), 356 deletions(-) diff --git a/manim/__main__.py b/manim/__main__.py index 6db788c9ec..bded3c61df 100644 --- a/manim/__main__.py +++ b/manim/__main__.py @@ -8,7 +8,7 @@ import importlib.util import types -from manim import constants, logger, console, config, file_writer_config +from manim import constants, logger, console, config from manim import Scene from manim.utils.module_ops import ( get_module, @@ -17,38 +17,35 @@ ) from manim.utils.file_ops import open_file as open_media_file from manim.grpc.impl import frame_server_impl +from manim.config.utils import init_dirs from manim.config.main_utils import * def open_file_if_needed(file_writer): - if file_writer_config["verbosity"] != "DEBUG": + if config["verbosity"] != "DEBUG": curr_stdout = sys.stdout sys.stdout = open(os.devnull, "w") - open_file = any( - [file_writer_config["preview"], file_writer_config["show_in_file_browser"]] - ) + open_file = any([config["preview"], config["show_in_file_browser"]]) + if open_file: current_os = platform.system() file_paths = [] - if file_writer_config["save_last_frame"]: + if config["save_last_frame"]: file_paths.append(file_writer.get_image_file_path()) - if ( - file_writer_config["write_to_movie"] - and not file_writer_config["save_as_gif"] - ): + if config["write_to_movie"] and not config["save_as_gif"]: file_paths.append(file_writer.get_movie_file_path()) - if file_writer_config["save_as_gif"]: + if config["save_as_gif"]: file_paths.append(file_writer.gif_file_path) for file_path in file_paths: - if file_writer_config["show_in_file_browser"]: + if config["show_in_file_browser"]: open_media_file(file_path, True) - if file_writer_config["preview"]: + if config["preview"]: open_media_file(file_path, False) - if file_writer_config["verbosity"] != "DEBUG": + if config["verbosity"] != "DEBUG": sys.stdout.close() sys.stdout = curr_stdout @@ -74,13 +71,13 @@ def main(): # something_else_here() else: - update_config_with_cli(args) - init_dirs(file_writer_config) + config.digest_args(args) + init_dirs(config) if file_writer_config["log_to_file"]: set_file_logger() - module = get_module(file_writer_config["input_file"]) + module = get_module(config["input_file"]) all_scene_classes = get_scene_classes_from_module(module) scene_classes_to_render = get_scenes_to_render(all_scene_classes) for SceneClass in scene_classes_to_render: diff --git a/manim/camera/camera.py b/manim/camera/camera.py index ef2aa55eac..c4fa3c00d9 100644 --- a/manim/camera/camera.py +++ b/manim/camera/camera.py @@ -14,7 +14,7 @@ import cairo import numpy as np -from .. import logger, config, camera_config +from .. import logger, config from ..constants import * from ..mobject.types.image_mobject import AbstractImageMobject from ..mobject.mobject import Mobject @@ -1063,9 +1063,7 @@ def adjusted_thickness(self, thickness): """ # TODO: This seems...unsystematic - big_sum = op.add( - camera_config["default_pixel_height"], camera_config["default_pixel_width"] - ) + big_sum = op.add(config["default_pixel_height"], config["default_pixel_width"]) this_sum = op.add(self.pixel_height, self.pixel_width) factor = fdiv(big_sum, this_sum) return 1 + (thickness - 1) / factor diff --git a/manim/config/__init__.py b/manim/config/__init__.py index 3a9317ffa6..491b14a89e 100644 --- a/manim/config/__init__.py +++ b/manim/config/__init__.py @@ -2,14 +2,13 @@ from contextlib import contextmanager from .logger import make_logger -from .utils import make_config_parser, make_config, make_file_writer_config +from .utils import make_config_parser, ManimConfig, ManimFrame __all__ = [ "logger", "console", "config", - "file_writer_config", - "camera_config", + "frame", "tempconfig", ] @@ -23,9 +22,8 @@ logging.getLogger("PIL").setLevel(logging.INFO) logging.getLogger("matplotlib").setLevel(logging.INFO) -config = make_config(parser) -camera_config = config -file_writer_config = make_file_writer_config(parser, config) +config = ManimConfig(parser) +frame = ManimFrame(config) # This has to go here because it needs access to this module's config diff --git a/manim/config/default.cfg b/manim/config/default.cfg index cc4d7be3ac..e911db5d8e 100644 --- a/manim/config/default.cfg +++ b/manim/config/default.cfg @@ -73,16 +73,13 @@ upto_animation_number = -1 media_dir = ./media # --log_dir (by default "/logs", that will be put inside the media dir) -log_dir = logs +log_dir = {media_dir}/logs -# # --video_dir -# video_dir = %(MEDIA_DIR)s/videos - -# # --tex_dir -# tex_dir = %(MEDIA_DIR)s/Tex - -# # --text_dir -# text_dir = %(MEDIA_DIR)s/texts +# the following do not have CLI arguments but depend on media_dir +video_dir = {media_dir}/videos +tex_dir = {media_dir}/Tex +text_dir = {media_dir}/texts +images_dir = {media_dir}/images # --use_js_renderer use_js_renderer = False @@ -193,5 +190,6 @@ log_height = -1 log_timestamps = True [ffmpeg] -# Uncomment the following line to manually set the loglevel for ffmpeg. See ffmpeg manpage for accepted values -# loglevel = error +# Uncomment the following line to manually set the loglevel for ffmpeg. See +# ffmpeg manpage for accepted values +loglevel = ERROR diff --git a/manim/config/logger.py b/manim/config/logger.py index 9d207fb406..d93228f4a6 100644 --- a/manim/config/logger.py +++ b/manim/config/logger.py @@ -6,6 +6,7 @@ """ +import os import logging import json import copy diff --git a/manim/config/main_utils.py b/manim/config/main_utils.py index ac3908c635..c91b9ea035 100644 --- a/manim/config/main_utils.py +++ b/manim/config/main_utils.py @@ -13,7 +13,7 @@ import colour -from manim import constants, logger, config, file_writer_config +from manim import constants, logger, config from .utils import make_config_parser from .logger import JSONFormatter from ..utils.tex import TexTemplate, TexTemplateFromFile diff --git a/manim/config/utils.py b/manim/config/utils.py index e85284e501..4fb4c6fce6 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -6,7 +6,10 @@ """ +import os import sys +import copy +import logging import configparser from pathlib import Path from collections.abc import Mapping, MutableMapping @@ -42,138 +45,40 @@ def make_config_parser(): return parser -def make_config(parser): - """Parse config files into a single dictionary exposed to the user.""" - # By default, use the CLI section of the digested .cfg files - default = parser["CLI"] - - # Loop over [low_quality] for the keys, but get the values from [CLI] - config = {opt: default.getint(opt) for opt in parser["low_quality"]} - - # Set the rest of the frame properties - config["default_pixel_height"] = default.getint("pixel_height") - config["default_pixel_width"] = default.getint("pixel_width") - config["background_color"] = colour.Color(default["background_color"]) - config["frame_height"] = 8.0 - config["frame_width"] = ( - config["frame_height"] * config["pixel_width"] / config["pixel_height"] - ) - config["frame_y_radius"] = config["frame_height"] / 2 - config["frame_x_radius"] = config["frame_width"] / 2 - config["top"] = config["frame_y_radius"] * constants.UP - config["bottom"] = config["frame_y_radius"] * constants.DOWN - config["left_side"] = config["frame_x_radius"] * constants.LEFT - config["right_side"] = config["frame_x_radius"] * constants.RIGHT - - # Tex template - tex_fn = None if not default["tex_template"] else default["tex_template"] - if tex_fn is not None and not os.access(tex_fn, os.R_OK): - # custom template not available, fallback to default - logging.getLogger("manim").warning( - f"Custom TeX template {tex_fn} not found or not readable. " - "Falling back to the default template." - ) - tex_fn = None - config["tex_template_file"] = tex_fn - config["tex_template"] = ( - TexTemplate() if not tex_fn else TexTemplateFromFile(filename=tex_fn) - ) - - # Choose the renderer - config["use_js_renderer"] = default.getboolean("use_js_renderer") - config["js_renderer_path"] = default.get("js_renderer_path") - - return config - - -def make_file_writer_config(parser, config): - """Parse config files into a single dictionary used internally.""" - # By default, use the CLI section of the digested .cfg files - default = parser["CLI"] - - # This will be the final file_writer_config dict exposed to the user - fw_config = {} - - # These may be overriden by CLI arguments - fw_config["input_file"] = "" - fw_config["scene_names"] = "" - fw_config["output_file"] = "" - fw_config["custom_folders"] = False - - # Note ConfigParser options are all strings and each needs to be converted - # to the appropriate type. - for boolean_opt in [ - "preview", - "show_in_file_browser", - "leave_progress_bars", - "write_to_movie", - "save_last_frame", - "save_pngs", - "save_as_gif", - "write_all", - "disable_caching", - "flush_cache", - "log_to_file", - "progress_bar", - ]: - fw_config[boolean_opt] = default.getboolean(boolean_opt) - - for str_opt in [ - "png_mode", - "movie_file_extension", - "background_opacity", - ]: - fw_config[str_opt] = default.get(str_opt) - - for int_opt in [ - "from_animation_number", - "upto_animation_number", - ]: - fw_config[int_opt] = default.getint(int_opt) - if fw_config["upto_animation_number"] == -1: - fw_config["upto_animation_number"] = float("inf") - - # for str_opt in ['media_dir', 'video_dir', 'tex_dir', 'text_dir']: - for str_opt in ["media_dir", "log_dir"]: - fw_config[str_opt] = Path(default[str_opt]).relative_to(".") - dir_names = { - "video_dir": "videos", - "images_dir": "images", - "tex_dir": "Tex", - "text_dir": "texts", +def determine_quality(args): + old_qualities = { + "k": "fourk_quality", + "e": "high_quality", + "m": "medium_quality", + "l": "low_quality", } - for name in dir_names: - fw_config[name] = fw_config["media_dir"] / dir_names[name] - - if not fw_config["write_to_movie"]: - fw_config["disable_caching"] = True - if config["use_js_renderer"]: - file_writer_config["disable_caching"] = True + for quality in constants.QUALITIES: + if quality == constants.DEFAULT_QUALITY: + # Skip so we prioritize anything that overwrites the default quality. + pass + elif getattr(args, quality, None) or ( + hasattr(args, "quality") and args.quality == constants.QUALITIES[quality] + ): + return quality - # Read in the streaming section -- all values are strings - fw_config["streaming"] = { - opt: parser["streaming"].get(opt) for opt in parser["streaming"] - } + for quality in old_qualities: + if getattr(args, quality, None): + logging.getLogger('manim').warning( + f"Option -{quality} is deprecated please use the --quality/-q flag." + ) + return old_qualities[quality] - # For internal use (no CLI flag) - fw_config["skip_animations"] = fw_config["save_last_frame"] - fw_config["max_files_cached"] = default.getint("max_files_cached") - if fw_config["max_files_cached"] == -1: - fw_config["max_files_cached"] = float("inf") + return constants.DEFAULT_QUALITY - # Parse the verbosity flag to read in the log level - fw_config["verbosity"] = default["verbosity"] - - # Parse the ffmpeg log level in the config - ffmpeg_loglevel = parser["ffmpeg"].get("loglevel", None) - fw_config["ffmpeg_loglevel"] = ( - constants.FFMPEG_VERBOSITY_MAP[fw_config["verbosity"]] - if ffmpeg_loglevel is None - else ffmpeg_loglevel - ) - return fw_config +_QUAL = { + 'low_quality': {'pixel_height': 480, 'pixel_width': 854, 'frame_rate': 15}, + 'medium_quality': {'pixel_height': 720, 'pixel_width': 1280, 'frame_rate': 30}, + 'high_quality': {'pixel_height': 1080, 'pixel_width': 1920, 'frame_rate': 60}, + 'production_quality': {'pixel_height': 1440, 'pixel_width': 2560, 'frame_rate': 60}, + '4k_quality': {'pixel_height': 2160, 'pixel_width': 3840, 'frame_rate': 60}, +} class ManimConfig(MutableMapping): @@ -193,6 +98,7 @@ class ManimConfig(MutableMapping): 'from_animation_number', 'images_dir', 'input_file', + 'js_renderer_path', 'leave_progress_bars', 'log_dir', 'log_to_file', @@ -215,6 +121,7 @@ class ManimConfig(MutableMapping): 'tex_template_file', 'text_dir', 'upto_animation_number', + 'use_js_renderer', 'verbosity', 'video_dir', 'write_all', @@ -233,18 +140,25 @@ def __iter__(self): def __len__(self): return len(self._d) + def __contains__(self, key): + try: + self.__getitem__(key) + return True + except AttributeError: + return False + def __getitem__(self, key): return getattr(self, key) def __setitem__(self, key, val): - getattr(ManimConfigDict, key).fset(self, val) # fset is the property's setter + getattr(ManimConfig, key).fset(self, val) # fset is the property's setter # don't allow to delete anything def __delitem__(self, key): - raise AttributeError("'ManimConfigDict' object does not support item deletion") + raise AttributeError("'ManimConfig' object does not support item deletion") def __delattr__(self, key): - raise AttributeError("'ManimConfigDict' object does not support item deletion") + raise AttributeError("'ManimConfig' object does not support item deletion") # helper type-checking methods def _set_from_list(self, key, val, values): @@ -283,6 +197,7 @@ def _set_pos_number(self, key, val, allow_inf): # builders def digest_parser(self, parser): + # boolean keys for key in [ 'write_to_movie', 'save_last_frame', @@ -299,9 +214,11 @@ def digest_parser(self, parser): 'flush_cache', 'custom_folders', 'skip_animations', + 'use_js_renderer', ]: setattr(self, key, parser['CLI'].getboolean(key, fallback=False)) + # int keys for key in [ 'from_animation_number', 'upto_animation_number', @@ -312,6 +229,7 @@ def digest_parser(self, parser): ]: setattr(self, key, parser['CLI'].getint(key)) + # str keys for key in [ 'verbosity', 'media_dir', @@ -325,16 +243,20 @@ def digest_parser(self, parser): 'png_mode', 'movie_file_extension', 'background_color', + 'js_renderer_path', ]: setattr(self, key, parser['CLI'].get(key, fallback='', raw=True)) - for key in [ - 'background_opacity', - 'frame_height', - 'frame_width', - ]: + # float keys + for key in ['background_opacity']: setattr(self, key, parser['CLI'].getfloat(key)) + # other logic + self["frame_height"] = 8.0 + self["frame_width"] = ( + self["frame_height"] * self["pixel_width"] / self["pixel_height"] + ) + val = parser['CLI'].get('tex_template_file') if val: setattr(self, 'tex_template_file', val) @@ -364,23 +286,33 @@ def digest_args(self, args): "write_all", "disable_caching", "flush_cache", - "log_to_file", "transparent", - "dry_run", - "media_dir", "scene_names", + "verbosity", + "dry_run", # always set this one last + ]: + if hasattr(args, key): + attr = getattr(args, key) + # if attr is None, then no argument was passed and we should + # not change the current config + if attr is not None: + self[key] = attr + + for key in [ + "media_dir", # always set this one first + "dry_run", "video_dir", "images_dir", "tex_dir", "text_dir", "log_dir", "custom_folders", - "verbosity", + "log_to_file", # always set this one last ]: if hasattr(args, key): attr = getattr(args, key) - # if attr is None, then no argument was passed and we should not - # change the current config + # if attr is None, then no argument was passed and we should + # not change the current config if attr is not None: self[key] = attr @@ -398,6 +330,9 @@ def digest_args(self, args): else: self.from_animation_number = int(nflag) + # Handle the quality flags + self.quality = determine_quality(args) + # Handle the -r flag. rflag = args.resolution if rflag is not None: @@ -456,11 +391,18 @@ def copy(self): doc='Whether to leave the progress bar for each animations' ) - log_to_file = property( - lambda self: self._d['log_to_file'], - lambda self, val: self._set_boolean('log_to_file', val), - doc='Whether to save logs to a file' - ) + @property + def log_to_file(self): + """Whether to save logs to a file""" + return self._d['log_to_file'] + + @log_to_file.setter + def log_to_file(self, val): + self._set_boolean('log_to_file', val) + if val: + if not os.path.exists(self['log_dir']): + os.makedirs(self['log_dir']) + set_file_logger(self, self['verbosity']) sound = property( lambda self: self._d['sound'], @@ -488,7 +430,7 @@ def copy(self): save_pngs = property( lambda self: self._d['save_pngs'], - lambda self, val: (print(f'setting to {val}'), self._set_boolean('save_pngs', val)), + lambda self, val: self._set_boolean('save_pngs', val), doc='Whether to save all frames in the scene as images files' ) @@ -498,13 +440,19 @@ def copy(self): doc='Whether to save the rendered scene in .gif format.' ) - verbosity = property( - lambda self: self._d['verbosity'], - lambda self, val: self._set_from_list( - 'verbosity', val, ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] - ), - doc='Verbosity level of the logger.' - ) + @property + def verbosity(self): + return self._d['verbosity'] + + @verbosity.setter + def verbosity(self, val): + """Verbosity level of the logger.""" + self._set_from_list( + 'verbosity', + val, + ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], + ) + logging.getLogger('manim').setLevel(val) ffmpeg_loglevel = property( lambda self: self._d['ffmpeg_loglevel'], @@ -660,7 +608,7 @@ def copy(self): @property def quality(self): - f"""Video quality ({list(_QUAL.keys())})""" + """Video quality.""" q = { 'pixel_width': self.pixel_width, 'pixel_height': self.pixel_height, @@ -675,8 +623,8 @@ def quality(self): @quality.setter def quality(self, qual): if qual not in _QUAL: - raise KeyError(f'quality must be one of {list(self._qual.keys())}') - self.frame_size = _QUAL[qual]['width'], _QUAL[qual]['height'] + raise KeyError(f'quality must be one of {list(_QUAL.keys())}') + self.frame_size = _QUAL[qual]['pixel_width'], _QUAL[qual]['pixel_height'] self.frame_rate = _QUAL[qual]['frame_rate'] @property @@ -699,11 +647,11 @@ def transparent(self, val): def dry_run(self): """Whether dry run is enabled.""" return ( - self.write_to_movie == False - and self.write_all == False - and self.save_last_frame == False - and self.save_pngs == False - and self.save_as_gif == False + self.write_to_movie is False + and self.write_all is False + and self.save_last_frame is False + and self.save_pngs is False + and self.save_as_gif is False ) @dry_run.setter @@ -724,10 +672,26 @@ def dry_run(self, val): else: raise ValueError(f'dry_run must be boolean') + @property + def use_js_renderer(self): + self._d['use_js_renderer'] + + @use_js_renderer.setter + def use_js_renderer(self, val): + self._d['use_js_renderer'] = val + if val: + self["disable_caching"] = True + + js_renderer_path = property( + lambda self: self._d['js_renderer_path'], + lambda self, val: self._d.__setitem__('js_renderer_path', Path(val)), + doc='Path to JS renderer.' + ) + media_dir = property( lambda self: self._d['media_dir'], lambda self, val: self._d.__setitem__('media_dir', Path(val)), - doc='Main output directory, relative to execcution directory.' + doc='Main output directory, relative to execution directory.' ) def _get_dir(self, key): @@ -822,7 +786,7 @@ def tex_template_file(self): def tex_template_file(self, val): if val: if not os.access(val, os.R_OK): - logging.getLogger("rich").warning(f"Custom TeX template {val} not found or not readable.") + logging.getLogger("manim").warning(f"Custom TeX template {val} not found or not readable.") else: self._d["tex_template_file"] = Path(val) self._tex_template = TexTemplateFromFile(filename=val) @@ -865,8 +829,8 @@ class ManimFrame(Mapping): } def __init__(self, c): - if not isinstance(c, ManimConfigDict): - raise TypeError("argument must be instance of 'ManimConfigDict'") + if not isinstance(c, ManimConfig): + raise TypeError("argument must be instance of 'ManimConfig'") # need to use __dict__ directly because setting attributes is not # allowed (see __setattr__) self.__dict__['_c'] = c diff --git a/manim/constants.py b/manim/constants.py index 2f13f226ea..2d1a9b34c8 100644 --- a/manim/constants.py +++ b/manim/constants.py @@ -148,5 +148,5 @@ class MyText(Text): "low_quality": "l", } -DEFAULT_QUALITY = "production_quality" +DEFAULT_QUALITY = "high_quality" DEFAULT_QUALITY_SHORT = QUALITIES[DEFAULT_QUALITY] diff --git a/manim/grpc/impl/frame_server_impl.py b/manim/grpc/impl/frame_server_impl.py index 7f16121fa2..d87f2cd956 100644 --- a/manim/grpc/impl/frame_server_impl.py +++ b/manim/grpc/impl/frame_server_impl.py @@ -1,5 +1,4 @@ -from ...config import camera_config -from ...config import file_writer_config +from ...config import config from ...scene import scene from ..gen import frameserver_pb2 from ..gen import frameserver_pb2_grpc @@ -53,7 +52,7 @@ def __init__(self, server, scene_class): except grpc._channel._InactiveRpcError: logger.warning(f"No frontend was detected at localhost:50052.") try: - sp.Popen(camera_config["js_renderer_path"]) + sp.Popen(config["js_renderer_path"]) except PermissionError: logger.info(JS_RENDERER_INFO) self.server.stop(None) @@ -194,7 +193,7 @@ def on_deleted(self, event): def on_modified(self, event): super().on_modified(event) - module = get_module(file_writer_config["input_file"]) + module = get_module(config["input_file"]) all_scene_classes = get_scene_classes_from_module(module) scene_classes_to_render = get_scenes_to_render(all_scene_classes) scene_class = scene_classes_to_render[0] @@ -250,7 +249,7 @@ def on_modified(self, event): try: stub.ManimStatus(request) except grpc._channel._InactiveRpcError: - sp.Popen(camera_config["js_renderer_path"]) + sp.Popen(config["js_renderer_path"]) def get(scene_class): diff --git a/manim/mobject/mobject.py b/manim/mobject/mobject.py index 16227bc0d1..66fdead7c5 100644 --- a/manim/mobject/mobject.py +++ b/manim/mobject/mobject.py @@ -15,7 +15,7 @@ from colour import Color import numpy as np -from .. import config, file_writer_config +from .. import config from ..constants import * from ..container import Container from ..utils.color import color_gradient, WHITE, BLACK, YELLOW_C @@ -199,7 +199,7 @@ def show(self, camera=None): def save_image(self, name=None): self.get_image().save( - os.path.join(file_writer_config["video_dir"], (name or str(self)) + ".png") + os.path.join(config["video_dir"], (name or str(self)) + ".png") ) def copy(self): diff --git a/manim/mobject/svg/text_mobject.py b/manim/mobject/svg/text_mobject.py index da5fd26f55..60a3d1034d 100644 --- a/manim/mobject/svg/text_mobject.py +++ b/manim/mobject/svg/text_mobject.py @@ -13,7 +13,7 @@ import pangocairocffi import pangocffi -from ... import config, file_writer_config, logger +from ... import config, logger from ...constants import * from ...container import Container from ...mobject.geometry import Dot, Rectangle @@ -301,7 +301,7 @@ def text2svg(self): if self.font == "": if NOT_SETTING_FONT_MSG != "": print(NOT_SETTING_FONT_MSG) - dir_name = file_writer_config["text_dir"] + dir_name = config["text_dir"] hash_name = self.text2hash() file_name = os.path.join(dir_name, hash_name) + ".svg" if os.path.exists(file_name): @@ -875,7 +875,7 @@ def text2svg(self): """ size = self.size * 10 line_spacing = self.line_spacing * 10 - dir_name = file_writer_config["text_dir"] + dir_name = config["text_dir"] if not os.path.exists(dir_name): os.makedirs(dir_name) hash_name = self.text2hash() diff --git a/manim/scene/scene.py b/manim/scene/scene.py index 075db885f0..291ff77a81 100644 --- a/manim/scene/scene.py +++ b/manim/scene/scene.py @@ -13,7 +13,7 @@ from tqdm import tqdm as ProgressDisplay import numpy as np -from .. import camera_config, file_writer_config, logger +from .. import config, logger from ..animation.animation import Animation from ..animation.transform import MoveToTarget, ApplyMethod from ..camera.camera import Camera @@ -47,11 +47,11 @@ def handle_play_like_call(func): """ def wrapper(self, *args, **kwargs): - allow_write = not file_writer_config["skip_animations"] - if not self.camera.use_js_renderer: + allow_write = not config["skip_animations"] + if not config.use_js_renderer: self.file_writer.begin_animation(allow_write) func(self, *args, **kwargs) - if not self.camera.use_js_renderer: + if not config.use_js_renderer: self.file_writer.end_animation(allow_write) self.num_plays += 1 @@ -97,21 +97,18 @@ def construct(self): def __init__(self, **kwargs): Container.__init__(self, **kwargs) - self.camera = self.camera_class(**camera_config) - if not self.camera.use_js_renderer: - self.file_writer = SceneFileWriter( - self, - **file_writer_config, - ) + self.camera = self.camera_class() + if not config.use_js_renderer: + self.file_writer = SceneFileWriter(self) self.animations_hashes = [] self.mobjects = [] - self.original_skipping_status = file_writer_config["skip_animations"] + self.original_skipping_status = config["skip_animations"] # TODO, remove need for foreground mobjects self.foreground_mobjects = [] self.num_plays = 0 self.time = 0 - self.original_skipping_status = file_writer_config["skip_animations"] + self.original_skipping_status = config["skip_animations"] if self.random_seed is not None: random.seed(self.random_seed) np.random.seed(self.random_seed) @@ -129,7 +126,7 @@ def render(self): self.tear_down() # We have to reset these settings in case of multiple renders. - file_writer_config["skip_animations"] = False + config["skip_animations"] = False self.file_writer.finish() self.print_end_message() @@ -237,7 +234,7 @@ def update_frame( # TODO Description in Docstring **kwargs """ - if file_writer_config["skip_animations"] and not ignore_skipping: + if config["skip_animations"] and not ignore_skipping: return if mobjects is None: mobjects = list_update( @@ -673,7 +670,7 @@ def get_time_progression( ProgressDisplay The CommandLine Progress Bar. """ - if file_writer_config["skip_animations"] and not override_skip_animations: + if config["skip_animations"] and not override_skip_animations: times = [run_time] else: step = 1 / self.camera.frame_rate @@ -681,9 +678,9 @@ def get_time_progression( time_progression = ProgressDisplay( times, total=n_iterations, - leave=file_writer_config["leave_progress_bars"], + leave=config["leave_progress_bars"], ascii=True if platform.system() == "Windows" else None, - disable=not file_writer_config["progress_bar"], + disable=not config["progress_bar"], ) return time_progression @@ -824,12 +821,12 @@ def update_skipping_status(self): the number of animations that need to be played, and raises an EndSceneEarlyException if they don't correspond. """ - if file_writer_config["from_animation_number"]: - if self.num_plays < file_writer_config["from_animation_number"]: - file_writer_config["skip_animations"] = True - if file_writer_config["upto_animation_number"]: - if self.num_plays > file_writer_config["upto_animation_number"]: - file_writer_config["skip_animations"] = True + if config["from_animation_number"]: + if self.num_plays < config["from_animation_number"]: + config["skip_animations"] = True + if config["upto_animation_number"]: + if self.num_plays > config["upto_animation_number"]: + config["skip_animations"] = True raise EndSceneEarlyException() def handle_caching_play(func): @@ -849,7 +846,7 @@ def wrapper(self, *args, **kwargs): self.update_skipping_status() animations = self.compile_play_args_to_animation_list(*args, **kwargs) self.add_mobjects_from_animations(animations) - if file_writer_config["skip_animations"]: + if config["skip_animations"]: logger.debug(f"Skipping animation {self.num_plays}") func(self, *args, **kwargs) # If the animation is skipped, we mark its hash as None. @@ -857,7 +854,7 @@ def wrapper(self, *args, **kwargs): self.animations_hashes.append(None) self.file_writer.add_partial_movie_file(None) return - if not file_writer_config["disable_caching"]: + if not config["disable_caching"]: mobjects_on_scene = self.get_mobjects() hash_play = get_hash_from_play_call( self, self.camera, animations, mobjects_on_scene @@ -867,7 +864,7 @@ def wrapper(self, *args, **kwargs): f"Animation {self.num_plays} : Using cached data (hash : %(hash_play)s)", {"hash_play": hash_play}, ) - file_writer_config["skip_animations"] = True + config["skip_animations"] = True else: hash_play = "uncached_{:05}".format(self.num_plays) self.animations_hashes.append(hash_play) @@ -895,7 +892,7 @@ def handle_caching_wait(func): def wrapper(self, duration=DEFAULT_WAIT_TIME, stop_condition=None): self.revert_to_original_skipping_status() self.update_skipping_status() - if file_writer_config["skip_animations"]: + if config["skip_animations"]: logger.debug(f"Skipping wait {self.num_plays}") func(self, duration, stop_condition) # If the animation is skipped, we mark its hash as None. @@ -903,7 +900,7 @@ def wrapper(self, duration=DEFAULT_WAIT_TIME, stop_condition=None): self.animations_hashes.append(None) self.file_writer.add_partial_movie_file(None) return - if not file_writer_config["disable_caching"]: + if not config["disable_caching"]: hash_wait = get_hash_from_wait_call( self, self.camera, duration, stop_condition, self.get_mobjects() ) @@ -911,7 +908,7 @@ def wrapper(self, duration=DEFAULT_WAIT_TIME, stop_condition=None): logger.info( f"Wait {self.num_plays} : Using cached data (hash : {hash_wait})" ) - file_writer_config["skip_animations"] = True + config["skip_animations"] = True else: hash_wait = "uncached_{:05}".format(self.num_plays) self.animations_hashes.append(hash_wait) @@ -982,7 +979,7 @@ def finish_animations(self, animations): animation.finish() animation.clean_up_from_scene(self) self.mobjects_from_last_animation = [anim.mobject for anim in animations] - if file_writer_config["skip_animations"]: + if config["skip_animations"]: # TODO, run this call in for each animation? self.update_mobjects(self.get_run_time(animations)) else: @@ -1163,8 +1160,8 @@ def force_skipping(self): Scene The Scene, with skipping turned on. """ - self.original_skipping_status = file_writer_config["skip_animations"] - file_writer_config["skip_animations"] = True + self.original_skipping_status = config["skip_animations"] + config["skip_animations"] = True return self def revert_to_original_skipping_status(self): @@ -1179,7 +1176,7 @@ def revert_to_original_skipping_status(self): The Scene, with the original skipping status. """ if hasattr(self, "original_skipping_status"): - file_writer_config["skip_animations"] = self.original_skipping_status + config["skip_animations"] = self.original_skipping_status return self def add_frame(self, frame, num_frames=1): @@ -1195,7 +1192,7 @@ def add_frame(self, frame, num_frames=1): """ dt = 1 / self.camera.frame_rate self.increment_time(num_frames * dt) - if file_writer_config["skip_animations"]: + if config["skip_animations"]: return for _ in range(num_frames): self.file_writer.write_frame(frame) @@ -1216,7 +1213,7 @@ def add_sound(self, sound_file, time_offset=0, gain=None, **kwargs): gain : """ - if file_writer_config["skip_animations"]: + if config["skip_animations"]: return time = self.time + time_offset self.file_writer.add_sound(sound_file, time, gain, **kwargs) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index adb1713d1c..651bedb4c5 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -13,7 +13,7 @@ import datetime from PIL import Image -from .. import file_writer_config, logger, console +from .. import config, logger, console from ..constants import FFMPEG_BIN, GIF_FILE_EXTENSION from ..utils.config_ops import digest_config from ..utils.file_ops import guarantee_existence @@ -60,45 +60,46 @@ def init_output_directories(self): """ module_directory = self.get_default_module_directory() scene_name = self.get_default_scene_name() - if file_writer_config["save_last_frame"] or file_writer_config["save_pngs"]: - if file_writer_config["media_dir"] != "": - if not file_writer_config["custom_folders"]: + if config["save_last_frame"] or config["save_pngs"]: + if config["media_dir"] != "": + if not config["custom_folders"]: image_dir = guarantee_existence( os.path.join( - file_writer_config["images_dir"], + config["images_dir"], module_directory, ) ) else: - image_dir = guarantee_existence(file_writer_config["images_dir"]) + image_dir = guarantee_existence(config["images_dir"]) self.image_file_path = os.path.join( image_dir, add_extension_if_not_present(scene_name, ".png") ) - if file_writer_config["write_to_movie"]: - if file_writer_config["video_dir"]: - if not file_writer_config["custom_folders"]: + if config["write_to_movie"]: + if config["video_dir"]: + if not config["custom_folders"]: movie_dir = guarantee_existence( os.path.join( - file_writer_config["video_dir"], + config["video_dir"], module_directory, self.get_resolution_directory(), ) ) else: movie_dir = guarantee_existence( - os.path.join(file_writer_config["video_dir"]) + os.path.join(config["video_dir"]) ) + self.movie_file_path = os.path.join( movie_dir, add_extension_if_not_present( - scene_name, file_writer_config["movie_file_extension"] + scene_name, config["movie_file_extension"] ), ) self.gif_file_path = os.path.join( movie_dir, add_extension_if_not_present(scene_name, GIF_FILE_EXTENSION) ) - if not file_writer_config["custom_folders"]: + if not config["custom_folders"]: self.partial_movie_directory = guarantee_existence( os.path.join( movie_dir, @@ -134,7 +135,7 @@ def add_partial_movie_file(self, hash_animation): self.partial_movie_directory, "{}{}".format( hash_animation, - file_writer_config["movie_file_extension"], + config["movie_file_extension"], ), ) self.partial_movie_files.append(new_partial_movie_file) @@ -149,7 +150,7 @@ def get_default_module_directory(self): str The name of the directory. """ - filename = os.path.basename(file_writer_config["input_file"]) + filename = os.path.basename(config["input_file"]) root, _ = os.path.splitext(filename) return root @@ -165,7 +166,7 @@ def get_default_scene_name(self): str The default scene name. """ - fn = file_writer_config["output_file"] + fn = config["output_file"] return fn if fn else self.scene.__class__.__name__ def get_resolution_directory(self): @@ -313,7 +314,7 @@ def begin_animation(self, allow_write=False): allow_write : bool, optional Whether or not to write to a video file. """ - if file_writer_config["write_to_movie"] and allow_write: + if config["write_to_movie"] and allow_write: self.open_movie_pipe() def end_animation(self, allow_write=False): @@ -326,7 +327,7 @@ def end_animation(self, allow_write=False): allow_write : bool, optional Whether or not to write to a video file. """ - if file_writer_config["write_to_movie"] and allow_write: + if config["write_to_movie"] and allow_write: self.close_movie_pipe() def write_frame(self, frame): @@ -339,9 +340,9 @@ def write_frame(self, frame): frame : np.array Pixel array of the frame. """ - if file_writer_config["write_to_movie"]: + if config["write_to_movie"]: self.writing_process.stdin.write(frame.tostring()) - if file_writer_config["save_pngs"]: + if config["save_pngs"]: path, extension = os.path.splitext(self.image_file_path) Image.fromarray(frame).save(f"{path}{self.frame_count}{extension}") self.frame_count += 1 @@ -384,15 +385,15 @@ def finish(self): If save_last_frame is True, saves the last frame in the default image directory. """ - if file_writer_config["write_to_movie"]: + if config["write_to_movie"]: if hasattr(self, "writing_process"): self.writing_process.terminate() self.combine_movie_files() - if file_writer_config["flush_cache"]: + if config["flush_cache"]: self.flush_cache_directory() else: self.clean_cache() - if file_writer_config["save_last_frame"]: + if config["save_last_frame"]: self.scene.update_frame(ignore_skipping=True) self.save_final_image(self.scene.camera.get_image()) @@ -408,7 +409,7 @@ def open_movie_pipe(self): temp_file_path = ( os.path.splitext(file_path)[0] + "_temp" - + file_writer_config["movie_file_extension"] + + config["movie_file_extension"] ) self.partial_movie_file_path = file_path self.temp_partial_movie_file_path = temp_file_path @@ -432,11 +433,11 @@ def open_movie_pipe(self): "-", # The imput comes from a pipe "-an", # Tells FFMPEG not to expect any audio "-loglevel", - file_writer_config["ffmpeg_loglevel"], + config["ffmpeg_loglevel"].lower(), ] # TODO, the test for a transparent background should not be based on # the file extension. - if file_writer_config["movie_file_extension"] == ".mov": + if config["movie_file_extension"] == ".mov": # This is if the background of the exported # video should be transparent. command += [ @@ -485,7 +486,7 @@ def is_already_cached(self, hash_invocation): """ path = os.path.join( self.partial_movie_directory, - "{}{}".format(hash_invocation, self.movie_file_extension), + "{}{}".format(hash_invocation, config['movie_file_extension']), ) return os.path.exists(path) @@ -495,20 +496,20 @@ def combine_movie_files(self): partial movie files that make up a Scene into a single video file for that Scene. """ - # Manim renders the scene as many smaller movie files - # which are then concatenated to a larger one. The reason - # for this is that sometimes video-editing is made easier when - # one works with the broken up scene, which effectively has - # cuts at all the places you might want. But for viewing - # the scene as a whole, one of course wants to see it as a + # Manim renders the scene as many smaller movie files which are then + # concatenated to a larger one. The reason for this is that sometimes + # video-editing is made easier when one works with the broken up scene, + # which effectively has cuts at all the places you might want. But for + # viewing the scene as a whole, one of course wants to see it as a # single piece. partial_movie_files = [el for el in self.partial_movie_files if el is not None] - # NOTE : Here we should do a check and raise an exeption if partial movie file is empty. - # We can't, as a lot of stuff (in particular, in tests) use scene initialization, and this error would be raised as it's just - # an empty scene initialized. + # NOTE : Here we should do a check and raise an exeption if partial + # movie file is empty. We can't, as a lot of stuff (in particular, in + # tests) use scene initialization, and this error would be raised as + # it's just an empty scene initialized. - # Write a file partial_file_list.txt containing all - # partial movie files. This is used by FFMPEG. + # Write a file partial_file_list.txt containing all partial movie + # files. This is used by FFMPEG. file_list = os.path.join( self.partial_movie_directory, "partial_movie_file_list.txt" ) @@ -533,24 +534,27 @@ def combine_movie_files(self): "-i", file_list, "-loglevel", - file_writer_config["ffmpeg_loglevel"], + config["ffmpeg_loglevel"].lower(), ] - if self.write_to_movie and not self.save_as_gif: + if config['write_to_movie'] and not config['save_as_gif']: commands += ["-c", "copy", movie_file_path] - if self.save_as_gif: + if config['save_as_gif']: commands += [self.gif_file_path] if not self.includes_sound: commands.insert(-1, "-an") - combine_process = subprocess.Popen(commands) - combine_process.wait() + try: + subprocess.check_call(commands) + except subprocess.CalledProcessError as exc: + logger.error(f'FFMPEG returned with code {exc.returncode}') + raise exc if self.includes_sound: sound_file_path = movie_file_path.replace( - file_writer_config["movie_file_extension"], ".wav" + config["movie_file_extension"], ".wav" ) # Makes sure sound file length will match video file self.add_audio_segment(AudioSegment.silent(0)) @@ -579,7 +583,7 @@ def combine_movie_files(self): "-map", "1:a:0", "-loglevel", - file_writer_config["ffmpeg_loglevel"], + config["ffmpeg_loglevel"].lower(), # "-shortest", temp_file_path, ] @@ -588,9 +592,9 @@ def combine_movie_files(self): os.remove(sound_file_path) self.print_file_ready_message( - self.gif_file_path if self.save_as_gif else movie_file_path + self.gif_file_path if config['save_as_gif'] else movie_file_path ) - if file_writer_config["write_to_movie"]: + if config["write_to_movie"]: for file_path in partial_movie_files: # We have to modify the accessed time so if we have to clean the cache we remove the one used the longest. modify_atime(file_path) @@ -602,9 +606,9 @@ def clean_cache(self): for file_name in os.listdir(self.partial_movie_directory) if file_name != "partial_movie_file_list.txt" ] - if len(cached_partial_movies) > file_writer_config["max_files_cached"]: + if len(cached_partial_movies) > config["max_files_cached"]: number_files_to_delete = ( - len(cached_partial_movies) - file_writer_config["max_files_cached"] + len(cached_partial_movies) - config["max_files_cached"] ) oldest_files_to_delete = sorted( [partial_movie_file for partial_movie_file in cached_partial_movies], @@ -614,7 +618,7 @@ def clean_cache(self): for file_to_delete in oldest_files_to_delete: os.remove(file_to_delete) logger.info( - f"The partial movie directory is full (> {file_writer_config['max_files_cached']} files). Therefore, manim has removed {number_files_to_delete} file(s) used by it the longest ago." + f"The partial movie directory is full (> {config['max_files_cached']} files). Therefore, manim has removed {number_files_to_delete} file(s) used by it the longest ago." + "You can change this behaviour by changing max_files_cached in config." ) diff --git a/manim/utils/module_ops.py b/manim/utils/module_ops.py index 98bd91079e..a5b2f6f465 100644 --- a/manim/utils/module_ops.py +++ b/manim/utils/module_ops.py @@ -1,6 +1,4 @@ -from .. import constants -from ..config import file_writer_config -from .. import logger, console +from .. import constants, logger, console, config import importlib.util import inspect import os @@ -62,10 +60,10 @@ def get_scenes_to_render(scene_classes): if not scene_classes: logger.error(constants.NO_SCENE_MESSAGE) return [] - if file_writer_config["write_all"]: + if config["write_all"]: return scene_classes result = [] - for scene_name in file_writer_config["scene_names"]: + for scene_name in config["scene_names"]: found = False for scene_class in scene_classes: if scene_class.__name__ == scene_name: diff --git a/manim/utils/tex_file_writing.py b/manim/utils/tex_file_writing.py index 51298b1acd..924e761d64 100644 --- a/manim/utils/tex_file_writing.py +++ b/manim/utils/tex_file_writing.py @@ -10,7 +10,7 @@ import hashlib from pathlib import Path -from .. import file_writer_config, config, logger +from .. import config, logger def tex_hash(expression): @@ -37,7 +37,7 @@ def generate_tex_file(expression, tex_template, source_type): elif source_type == "tex": output = tex_template.get_text_for_tex_mode(expression) - result = os.path.join(file_writer_config["tex_dir"], tex_hash(output)) + ".tex" + result = os.path.join(config["tex_dir"], tex_hash(output)) + ".tex" if not os.path.exists(result): logger.info('Writing "%s" to %s' % ("".join(expression), result)) with open(result, "w", encoding="utf-8") as outfile: @@ -89,7 +89,7 @@ def tex_to_dvi(tex_file, use_ctex=False, tex_compiler=None): result = tex_file.replace(".tex", tex_compiler["output_format"]) result = Path(result).as_posix() tex_file = Path(tex_file).as_posix() - tex_dir = Path(file_writer_config["tex_dir"]).as_posix() + tex_dir = Path(config["tex_dir"]).as_posix() if not os.path.exists(result): command = tex_compilation_command(tex_compiler, tex_file, tex_dir) exit_code = os.system(command) diff --git a/tests/control_data/logs_data/BasicSceneLoggingTest.txt b/tests/control_data/logs_data/BasicSceneLoggingTest.txt index 2e60f36bd2..c4131e12ab 100644 --- a/tests/control_data/logs_data/BasicSceneLoggingTest.txt +++ b/tests/control_data/logs_data/BasicSceneLoggingTest.txt @@ -1,4 +1,4 @@ -{"levelname": "INFO", "module": "main_utils", "message": "Log file will be saved in <>"} +{"levelname": "INFO", "module": "logger", "message": "Log file will be saved in <>"} {"levelname": "DEBUG", "module": "hashing", "message": "Hashing ..."} {"levelname": "DEBUG", "module": "hashing", "message": "Hashing done in <> s."} {"levelname": "DEBUG", "module": "hashing", "message": "Hash generated : <>"} diff --git a/tests/helpers/graphical_units.py b/tests/helpers/graphical_units.py index ad8914a032..42b5e8e4d4 100644 --- a/tests/helpers/graphical_units.py +++ b/tests/helpers/graphical_units.py @@ -5,8 +5,7 @@ import tempfile import numpy as np -import manim -from manim import config, file_writer_config, logger +from manim import config, logger def set_test_scene(scene_object, module_name): @@ -28,17 +27,17 @@ def set_test_scene(scene_object, module_name): set_test_scene(DotTest, "geometry") """ - file_writer_config["skip_animations"] = True - file_writer_config["write_to_movie"] = False - file_writer_config["disable_caching"] = True + config["skip_animations"] = True + config["write_to_movie"] = False + config["disable_caching"] = True config["pixel_height"] = 480 config["pixel_width"] = 854 config["frame_rate"] = 15 with tempfile.TemporaryDirectory() as tmpdir: os.makedirs(os.path.join(tmpdir, "tex")) - file_writer_config["text_dir"] = os.path.join(tmpdir, "text") - file_writer_config["tex_dir"] = os.path.join(tmpdir, "tex") + config["text_dir"] = os.path.join(tmpdir, "text") + config["tex_dir"] = os.path.join(tmpdir, "tex") scene = scene_object() data = scene.get_frame() diff --git a/tests/test_cli_flags.py b/tests/test_cli_flags.py index 242c728841..c77b94ac13 100644 --- a/tests/test_cli_flags.py +++ b/tests/test_cli_flags.py @@ -1,5 +1,6 @@ from manim import constants -from manim.config.main_utils import _determine_quality, parse_args +from manim.config.main_utils import parse_args +from manim.config.utils import determine_quality def test_quality_flags(): @@ -7,7 +8,7 @@ def test_quality_flags(): parsed = parse_args("manim dummy_filename".split()) assert parsed.quality == constants.DEFAULT_QUALITY_SHORT - assert _determine_quality(parsed) == constants.DEFAULT_QUALITY + assert determine_quality(parsed) == constants.DEFAULT_QUALITY for quality in constants.QUALITIES.keys(): # Assert that quality is properly set when using -q* @@ -15,14 +16,14 @@ def test_quality_flags(): parsed = parse_args(arguments) assert parsed.quality == constants.QUALITIES[quality] - assert quality == _determine_quality(parsed) + assert quality == determine_quality(parsed) # Assert that quality is properly set when using -q * arguments = f"manim -q {constants.QUALITIES[quality]} dummy_filename".split() parsed = parse_args(arguments) assert parsed.quality == constants.QUALITIES[quality] - assert quality == _determine_quality(parsed) + assert quality == determine_quality(parsed) # Assert that quality is properly set when using --quality * arguments = ( @@ -31,17 +32,17 @@ def test_quality_flags(): parsed = parse_args(arguments) assert parsed.quality == constants.QUALITIES[quality] - assert quality == _determine_quality(parsed) + assert quality == determine_quality(parsed) # Assert that quality is properly set when using -*_quality arguments = f"manim --{quality} dummy_filename".split() parsed = parse_args(arguments) assert getattr(parsed, quality) - assert quality == _determine_quality(parsed) + assert quality == determine_quality(parsed) # Assert that *_quality is False when not specifying it parsed = parse_args("manim dummy_filename".split()) assert not getattr(parsed, quality) - assert _determine_quality(parsed) == constants.DEFAULT_QUALITY + assert determine_quality(parsed) == constants.DEFAULT_QUALITY diff --git a/tests/test_config.py b/tests/test_config.py index 36c60243bd..bb906578dd 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -7,14 +7,11 @@ def test_tempconfig(): """Test the tempconfig context manager.""" original = config.copy() - with tempconfig({"frame_width": 100, "frame_height": 42, "foo": -1}): + with tempconfig({"frame_width": 100, "frame_height": 42}): # check that config was modified correctly assert config["frame_width"] == 100 assert config["frame_height"] == 42 - # 'foo' is not a key in the original dict so it shouldn't be added - assert "foo" not in config - # check that no keys are missing and no new keys were added assert set(original.keys()) == set(config.keys()) diff --git a/tests/test_container.py b/tests/test_container.py index 4bf8d27532..5a26b3ba56 100644 --- a/tests/test_container.py +++ b/tests/test_container.py @@ -1,5 +1,5 @@ import pytest -from manim import Container, Mobject, Scene, file_writer_config +from manim import Container, Mobject, Scene def test_ABC(): diff --git a/tests/test_copy.py b/tests/test_copy.py index dde6a08947..2210dda1e2 100644 --- a/tests/test_copy.py +++ b/tests/test_copy.py @@ -1,5 +1,5 @@ import os -from manim import Mobject, BraceLabel, file_writer_config +from manim import Mobject, BraceLabel, config def test_mobject_copy(): @@ -18,13 +18,13 @@ def test_mobject_copy(): def test_bracelabel_copy(tmp_path): """Test that a copy is a deepcopy.""" # For this test to work, we need to tweak some folders temporarily - original_text_dir = file_writer_config["text_dir"] - original_tex_dir = file_writer_config["tex_dir"] + original_text_dir = config["text_dir"] + original_tex_dir = config["tex_dir"] mediadir = os.path.join(tmp_path, "deepcopy") - file_writer_config["text_dir"] = os.path.join(mediadir, "Text") - file_writer_config["tex_dir"] = os.path.join(mediadir, "Tex") + config["text_dir"] = os.path.join(mediadir, "Text") + config["tex_dir"] = os.path.join(mediadir, "Tex") for el in ["text_dir", "tex_dir"]: - os.makedirs(file_writer_config[el]) + os.makedirs(config[el]) # Before the refactoring of Mobject.copy(), the class BraceLabel was the # only one to have a non-trivial definition of copy. Here we test that it @@ -43,5 +43,5 @@ def test_bracelabel_copy(tmp_path): assert copy.submobjects[0] is not orig.brace # Restore the original folders - file_writer_config["text_dir"] = original_text_dir - file_writer_config["tex_dir"] = original_tex_dir + config["text_dir"] = original_text_dir + config["tex_dir"] = original_tex_dir diff --git a/tests/test_logging/test_logging.py b/tests/test_logging/test_logging.py index f4ae349a34..504a76ecce 100644 --- a/tests/test_logging/test_logging.py +++ b/tests/test_logging/test_logging.py @@ -43,7 +43,7 @@ def test_logging_when_scene_is_not_specified(tmp_path, python_version): "-m", "manim", path_basic_scene, - "-l", + "-ql", "--log_to_file", "-v", "DEBUG", diff --git a/tests/test_scene_rendering/conftest.py b/tests/test_scene_rendering/conftest.py index 81826ab815..0555550633 100644 --- a/tests/test_scene_rendering/conftest.py +++ b/tests/test_scene_rendering/conftest.py @@ -2,9 +2,6 @@ import os -from manim import file_writer_config - - @pytest.fixture def manim_cfg_file(): return os.path.join(os.path.dirname(__file__), "manim.cfg") diff --git a/tests/test_scene_rendering/test_caching_relalted.py b/tests/test_scene_rendering/test_caching_relalted.py index 629917332d..7827248e08 100644 --- a/tests/test_scene_rendering/test_caching_relalted.py +++ b/tests/test_scene_rendering/test_caching_relalted.py @@ -1,7 +1,6 @@ import os import pytest import subprocess -from manim import file_writer_config from ..utils.commands import capture from ..utils.video_tester import video_comparison diff --git a/tests/test_scene_rendering/test_caching_related.py b/tests/test_scene_rendering/test_caching_related.py index 3f6d4ec973..03395571ab 100644 --- a/tests/test_scene_rendering/test_caching_related.py +++ b/tests/test_scene_rendering/test_caching_related.py @@ -1,7 +1,6 @@ import os import pytest import subprocess -from manim import file_writer_config from ..utils.commands import capture from ..utils.video_tester import * diff --git a/tests/utils/GraphicalUnitTester.py b/tests/utils/GraphicalUnitTester.py index 7f856ded1c..e9db4f0f7d 100644 --- a/tests/utils/GraphicalUnitTester.py +++ b/tests/utils/GraphicalUnitTester.py @@ -7,7 +7,7 @@ import warnings from platform import system -from manim import config, file_writer_config +from manim import config class GraphicalUnitTester: @@ -52,26 +52,24 @@ def __init__( tests_directory, "control_data", "graphical_units_data", module_tested ) - # IMPORTANT NOTE : The graphical units tests don't use for now any custom manim.cfg, - # since it is impossible to manually select a manim.cfg from a python file. (see issue #293) - file_writer_config["text_dir"] = os.path.join( - self.path_tests_medias_cache, "Text" - ) - file_writer_config["tex_dir"] = os.path.join( - self.path_tests_medias_cache, "Tex" - ) + # IMPORTANT NOTE : The graphical units tests don't use for now any + # custom manim.cfg, since it is impossible to manually select a + # manim.cfg from a python file. (see issue #293) + config["text_dir"] = os.path.join(self.path_tests_medias_cache, "Text") + config["tex_dir"] = os.path.join(self.path_tests_medias_cache, "Tex") - file_writer_config["skip_animations"] = True - file_writer_config["write_to_movie"] = False - file_writer_config["disable_caching"] = True + config["skip_animations"] = True + config["save_last_frame"] = True + config["write_to_movie"] = False + config["disable_caching"] = True config["pixel_height"] = 480 config["pixel_width"] = 854 config["frame_rate"] = 15 for dir_temp in [ self.path_tests_medias_cache, - file_writer_config["text_dir"], - file_writer_config["tex_dir"], + config["text_dir"], + config["tex_dir"], ]: os.makedirs(dir_temp) From e33d3aac4dded44fb9fc5894e1553c360d987caf Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 14 Oct 2020 22:09:27 -0400 Subject: [PATCH 03/37] refactor logger to play nicely with the new config system --- manim/__main__.py | 3 --- manim/config/logger.py | 25 ++++++++++++++++++++++++- manim/scene/scene_file_writer.py | 2 +- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/manim/__main__.py b/manim/__main__.py index bded3c61df..d1acc00508 100644 --- a/manim/__main__.py +++ b/manim/__main__.py @@ -74,9 +74,6 @@ def main(): config.digest_args(args) init_dirs(config) - if file_writer_config["log_to_file"]: - set_file_logger() - module = get_module(config["input_file"]) all_scene_classes = get_scene_classes_from_module(module) scene_classes_to_render = get_scenes_to_render(all_scene_classes) diff --git a/manim/config/logger.py b/manim/config/logger.py index d93228f4a6..bc8a154c3c 100644 --- a/manim/config/logger.py +++ b/manim/config/logger.py @@ -50,11 +50,11 @@ def make_logger(parser, verbosity): rich_handler = RichHandler( console=console, show_time=parser.getboolean("log_timestamps") ) - rich_handler.setLevel(verbosity) # finally, the logger logger = logging.getLogger("manim") logger.addHandler(rich_handler) + logger.setLevel(verbosity) return logger, console @@ -88,6 +88,29 @@ def parse_theme(config_logger): return customTheme +def set_file_logger(config, verbosity): + # Note: The log file name will be + # _.log, gotten from + # file_writer_config. So it can differ from the real name of the scene. + # would only appear if scene name was provided when manim + # was called. + scene_name_suffix = "".join(config["scene_names"]) + scene_file_name = os.path.basename(config["input_file"]).split(".")[0] + log_file_name = ( + f"{scene_file_name}_{scene_name_suffix}.log" + if scene_name_suffix + else f"{scene_file_name}.log" + ) + log_file_path = os.path.join(config["log_dir"], log_file_name) + file_handler = logging.FileHandler(log_file_path, mode="w") + file_handler.setFormatter(JSONFormatter()) + + logger = logging.getLogger('manim') + logger.addHandler(file_handler) + logger.info("Log file will be saved in %(logpath)s", {"logpath": log_file_path}) + logger.setLevel(verbosity) + + class JSONFormatter(logging.Formatter): """Subclass of `:class:`logging.Formatter`, to build our own format of the logs (JSON).""" diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index 651bedb4c5..ce2c5a0ffe 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -110,7 +110,7 @@ def init_output_directories(self): else: self.partial_movie_directory = guarantee_existence( os.path.join( - file_writer_config["media_dir"], + config["media_dir"], "temp_files", "partial_movie_files", scene_name, From 8b1a8fc0961e9c2d90e32015f0e14d4fb5707ded Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 14 Oct 2020 22:09:42 -0400 Subject: [PATCH 04/37] move init_dirs --- manim/config/main_utils.py | 15 --------------- manim/config/utils.py | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/manim/config/main_utils.py b/manim/config/main_utils.py index c91b9ea035..fbe93dbb64 100644 --- a/manim/config/main_utils.py +++ b/manim/config/main_utils.py @@ -19,21 +19,6 @@ from ..utils.tex import TexTemplate, TexTemplateFromFile -def init_dirs(config): - for folder in [ - config["media_dir"], - config["video_dir"], - config["tex_dir"], - config["text_dir"], - config["log_dir"], - ]: - if not os.path.exists(folder): - if folder == config["log_dir"] and (not config["log_to_file"]): - pass - else: - os.makedirs(folder) - - def _find_subcommand(args): """Return the subcommand that has been passed, if any. diff --git a/manim/config/utils.py b/manim/config/utils.py index 4fb4c6fce6..7b3d2779e2 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -19,6 +19,22 @@ from .. import constants from ..utils.tex import TexTemplate, TexTemplateFromFile +from .logger import set_file_logger + + +def init_dirs(config): + for folder in [ + config["media_dir"], + config["video_dir"], + config["tex_dir"], + config["text_dir"], + config["log_dir"], + ]: + if not os.path.exists(folder): + if folder == config["log_dir"] and (not config["log_to_file"]): + pass + else: + os.makedirs(folder) def config_file_paths(): From 5d787f396ceaf3b3ba6672688043c37dd5b32770 Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 14 Oct 2020 22:09:56 -0400 Subject: [PATCH 05/37] change a dumb logic for a smart logic --- manim/config/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index 7b3d2779e2..9ec35fdd23 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -571,7 +571,7 @@ def verbosity(self, val): ) skip_animations = property( - lambda self: any([self.save_last_frame, self.from_animation_number]), + lambda self: self._d['skip_animations'], lambda self, val: self._set_boolean('skip_animations', val), doc=('Set to less than the number of animations to skip ' 'animations. Use -1 to avoid skipping.') From 12a5055a2d791a49d4f69887a48e4122f57c3e7f Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 14 Oct 2020 22:12:07 -0400 Subject: [PATCH 06/37] delete old/unsed/moved stuff --- manim/config/main_utils.py | 270 ------------------------------------- 1 file changed, 270 deletions(-) diff --git a/manim/config/main_utils.py b/manim/config/main_utils.py index fbe93dbb64..faa5ecc9a7 100644 --- a/manim/config/main_utils.py +++ b/manim/config/main_utils.py @@ -423,273 +423,3 @@ def _parse_args_no_subcmd(args): ) return parser.parse_args(args[1:]) - - -def update_config_with_cli(args): - """Update the config dictionaries after parsing CLI flags.""" - parser = make_config_parser() - default = parser["CLI"] - - ## Update config - global config - - # Handle the *_quality flags. These determine the section to read - # and are stored in 'camera_config'. Note the highest resolution - # passed as argument will be used. - quality = _determine_quality(args) - section = parser[quality if quality != constants.DEFAULT_QUALITY else "CLI"] - - # Loop over low quality for the keys, could be any quality really - config.update({opt: section.getint(opt) for opt in parser["low_quality"]}) - - # The -r, --resolution flag overrides the *_quality flags - if args.resolution is not None: - if "," in args.resolution: - height_str, width_str = args.resolution.split(",") - height, width = int(height_str), int(width_str) - else: - height = int(args.resolution) - width = int(16 * height / 9) - config.update({"pixel_height": height, "pixel_width": width}) - - # Handle the -c (--background_color) flag - if args.background_color is not None: - try: - background_color = colour.Color(args.background_color) - except AttributeError as err: - logger.warning("Please use a valid color.") - logger.error(err) - sys.exit(2) - else: - background_color = colour.Color(default["background_color"]) - config["background_color"] = background_color - - config["use_js_renderer"] = args.use_js_renderer or default.getboolean( - "use_js_renderer" - ) - config["js_renderer_path"] = args.js_renderer_path or default.get( - "js_renderer_path" - ) - - # Set the rest of the frame properties - config["frame_height"] = 8.0 - config["frame_width"] = ( - config["frame_height"] * config["pixel_width"] / config["pixel_height"] - ) - config["frame_y_radius"] = config["frame_height"] / 2 - config["frame_x_radius"] = config["frame_width"] / 2 - config["top"] = config["frame_y_radius"] * constants.UP - config["bottom"] = config["frame_y_radius"] * constants.DOWN - config["left_side"] = config["frame_x_radius"] * constants.LEFT - config["right_side"] = config["frame_x_radius"] * constants.RIGHT - - # Handle the --tex_template flag, if the flag is absent read it from the config. - if args.tex_template: - tex_fn = os.path.expanduser(args.tex_template) - else: - tex_fn = default["tex_template"] if default["tex_template"] != "" else None - - if tex_fn is not None and not os.access(tex_fn, os.R_OK): - # custom template not available, fallback to default - logger.warning( - f"Custom TeX template {tex_fn} not found or not readable. " - "Falling back to the default template." - ) - tex_fn = None - config["tex_template_file"] = tex_fn - config["tex_template"] = ( - TexTemplateFromFile(filename=tex_fn) if tex_fn is not None else TexTemplate() - ) - - ## Update file_writer_config - fw_config = {} - - if config["use_js_renderer"]: - fw_config["disable_caching"] = True - - if not hasattr(args, "subcommands"): - fw_config["input_file"] = args.file if args.file else "" - fw_config["scene_names"] = ( - args.scene_names if args.scene_names is not None else [] - ) - fw_config["output_file"] = args.output_file if args.output_file else "" - - # Note ConfigParser options are all strings and each needs to be converted - # to the appropriate type. - for boolean_opt in [ - "preview", - "show_in_file_browser", - "leave_progress_bars", - "write_to_movie", - "save_last_frame", - "save_pngs", - "save_as_gif", - "write_all", - "disable_caching", - "flush_cache", - "log_to_file", - ]: - attr = getattr(args, boolean_opt) - fw_config[boolean_opt] = ( - default.getboolean(boolean_opt) if attr is None else attr - ) - # for str_opt in ['media_dir', 'video_dir', 'tex_dir', 'text_dir']: - for str_opt in ["media_dir"]: - attr = getattr(args, str_opt) - fw_config[str_opt] = os.path.relpath(default[str_opt]) if attr is None else attr - attr = getattr(args, "log_dir") - fw_config["log_dir"] = ( - os.path.join(fw_config["media_dir"], default["log_dir"]) - if attr is None - else attr - ) - dir_names = { - "video_dir": "videos", - "images_dir": "images", - "tex_dir": "Tex", - "text_dir": "texts", - } - for name in dir_names: - fw_config[name] = os.path.join(fw_config["media_dir"], dir_names[name]) - - # the --custom_folders flag overrides the default folder structure with the - # custom folders defined in the [custom_folders] section of the config file - fw_config["custom_folders"] = args.custom_folders - if fw_config["custom_folders"]: - fw_config["media_dir"] = parser["custom_folders"].get("media_dir") - for opt in ["video_dir", "images_dir", "tex_dir", "text_dir"]: - fw_config[opt] = parser["custom_folders"].get(opt) - - # Handle the -s (--save_last_frame) flag: invalidate the -w flag - # At this point the save_last_frame option has already been set by - # both CLI and the cfg file, so read the config dict directly - if fw_config["save_last_frame"]: - fw_config["write_to_movie"] = False - - # Handle the -t (--transparent) flag. This flag determines which - # section to use from the .cfg file. - section = parser["transparent"] if args.transparent else default - for opt in ["png_mode", "movie_file_extension", "background_opacity"]: - fw_config[opt] = section[opt] - - # Handle the -n flag. Read first from the cfg and then override with CLI. - # These two are integers -- use getint() - for opt in ["from_animation_number", "upto_animation_number"]: - fw_config[opt] = default.getint(opt) - if fw_config["upto_animation_number"] == -1: - fw_config["upto_animation_number"] = float("inf") - nflag = args.from_animation_number - if nflag is not None: - if "," in nflag: - start, end = nflag.split(",") - fw_config["from_animation_number"] = int(start) - fw_config["upto_animation_number"] = int(end) - else: - fw_config["from_animation_number"] = int(nflag) - - # Handle the --dry_run flag. This flag determines which section - # to use from the .cfg file. All options involved are boolean. - # Note this overrides the flags -w, -s, -a, -g, and -i. - if args.dry_run: - for opt in [ - "write_to_movie", - "save_last_frame", - "save_pngs", - "save_as_gif", - "write_all", - ]: - fw_config[opt] = parser["dry_run"].getboolean(opt) - if not fw_config["write_to_movie"]: - fw_config["disable_caching"] = True - # Read in the streaming section -- all values are strings - fw_config["streaming"] = { - opt: parser["streaming"][opt] - for opt in [ - "live_stream_name", - "twitch_stream_key", - "streaming_protocol", - "streaming_ip", - "streaming_protocol", - "streaming_client", - "streaming_port", - "streaming_port", - "streaming_console_banner", - ] - } - - # For internal use (no CLI flag) - fw_config["skip_animations"] = fw_config["save_last_frame"] - fw_config["max_files_cached"] = default.getint("max_files_cached") - if fw_config["max_files_cached"] == -1: - fw_config["max_files_cached"] = float("inf") - # Parse the verbosity flag to read in the log level - verbosity = getattr(args, "verbosity") - verbosity = default["verbosity"] if verbosity is None else verbosity - fw_config["verbosity"] = verbosity - logger.setLevel(verbosity) - - # Parse the ffmpeg log level in the config - ffmpeg_loglevel = parser["ffmpeg"].get("loglevel", None) - fw_config["ffmpeg_loglevel"] = ( - constants.FFMPEG_VERBOSITY_MAP[verbosity] - if ffmpeg_loglevel is None - else ffmpeg_loglevel - ) - - # Parse the progress_bar flag - progress_bar = getattr(args, "progress_bar") - if progress_bar is None: - progress_bar = default.getboolean("progress_bar") - fw_config["progress_bar"] = progress_bar - - global file_writer_config - file_writer_config.update(fw_config) - - -def _determine_quality(args): - old_qualities = { - "k": "fourk_quality", - "e": "high_quality", - "m": "medium_quality", - "l": "low_quality", - } - - for quality in constants.QUALITIES: - if quality == constants.DEFAULT_QUALITY: - # Skip so we prioritize anything that overwrites the default quality. - pass - elif getattr(args, quality, None) or ( - hasattr(args, "quality") and args.quality == constants.QUALITIES[quality] - ): - return quality - - for quality in old_qualities: - if getattr(args, quality, None): - logger.warning( - f"Option -{quality} is deprecated please use the --quality/-q flag." - ) - return old_qualities[quality] - - return constants.DEFAULT_QUALITY - - -def set_file_logger(): - # Note: The log file name will be - # _.log, gotten from - # file_writer_config. So it can differ from the real name of the scene. - # would only appear if scene name was provided when manim - # was called. - scene_name_suffix = "".join(file_writer_config["scene_names"]) - scene_file_name = os.path.basename(file_writer_config["input_file"]).split(".")[0] - log_file_name = ( - f"{scene_file_name}_{scene_name_suffix}.log" - if scene_name_suffix - else f"{scene_file_name}.log" - ) - log_file_path = os.path.join(file_writer_config["log_dir"], log_file_name) - - file_handler = logging.FileHandler(log_file_path, mode="w") - file_handler.setFormatter(JSONFormatter()) - - logger.addHandler(file_handler) - logger.info("Log file will be saved in %(logpath)s", {"logpath": log_file_path}) From 91587d12d6871c34078cade576f10237721358a8 Mon Sep 17 00:00:00 2001 From: leotrs Date: Sun, 25 Oct 2020 22:52:50 -0400 Subject: [PATCH 07/37] special handling of dry_run and delete unnecessary file --- manim/config/utils.py | 32 ++++++------ .../test_caching_relalted.py | 52 ------------------- 2 files changed, 16 insertions(+), 68 deletions(-) delete mode 100644 tests/test_scene_rendering/test_caching_relalted.py diff --git a/manim/config/utils.py b/manim/config/utils.py index 9ec35fdd23..68701115aa 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -305,7 +305,7 @@ def digest_args(self, args): "transparent", "scene_names", "verbosity", - "dry_run", # always set this one last + ]: if hasattr(args, key): attr = getattr(args, key) @@ -314,9 +314,13 @@ def digest_args(self, args): if attr is not None: self[key] = attr + # dry_run is special because it can only be set to True + if hasattr(args, 'dry_run'): + if getattr(args, 'dry_run'): + self['dry_run'] = True + for key in [ "media_dir", # always set this one first - "dry_run", "video_dir", "images_dir", "tex_dir", @@ -672,21 +676,17 @@ def dry_run(self): @dry_run.setter def dry_run(self, val): - if val in [True, False]: - if val: # dry run - self.write_to_movie = False - self.write_all = False - self.save_last_frame = False - self.save_pngs = False - self.save_as_gif = False - else: # set to default - self.write_to_movie = True - self.write_all = False - self.save_last_frame = False - self.save_pngs = False - self.save_as_gif = False + if val: + self.write_to_movie = False + self.write_all = False + self.save_last_frame = False + self.save_pngs = False + self.save_as_gif = False else: - raise ValueError(f'dry_run must be boolean') + raise ValueError('It is unclear what it means to set dry_run to ' + 'False. Instead, try setting each option ' + 'individually. (write_to_movie, write_alll, ' + 'save_last_frame, save_pngs, or save_as_gif)') @property def use_js_renderer(self): diff --git a/tests/test_scene_rendering/test_caching_relalted.py b/tests/test_scene_rendering/test_caching_relalted.py deleted file mode 100644 index 7827248e08..0000000000 --- a/tests/test_scene_rendering/test_caching_relalted.py +++ /dev/null @@ -1,52 +0,0 @@ -import os -import pytest -import subprocess - -from ..utils.commands import capture -from ..utils.video_tester import video_comparison - - -@video_comparison( - "SceneWithMultipleWaitCallsWithNFlag.json", - "videos/simple_scenes/480p15/SceneWithMultipleWaitCalls.mp4", -) -def test_wait_skip(tmp_path, manim_cfg_file, simple_scenes_path): - # Test for PR #468. Intended to test if wait calls are correctly skipped. - scene_name = "SceneWithMultipleWaitCalls" - command = [ - "python", - "-m", - "manim", - simple_scenes_path, - scene_name, - "-ql", - "--media_dir", - str(tmp_path), - "-n", - "3", - ] - out, err, exit_code = capture(command) - assert exit_code == 0, err - - -@video_comparison( - "SceneWithMultiplePlayCallsWithNFlag.json", - "videos/simple_scenes/480p15/SceneWithMultipleCalls.mp4", -) -def test_play_skip(tmp_path, manim_cfg_file, simple_scenes_path): - # Intended to test if play calls are correctly skipped. - scene_name = "SceneWithMultipleCalls" - command = [ - "python", - "-m", - "manim", - simple_scenes_path, - scene_name, - "-ql", - "--media_dir", - str(tmp_path), - "-n", - "3", - ] - out, err, exit_code = capture(command) - assert exit_code == 0, err From e69f3fe2dfe97c0c464c7ca952474192cc045f06 Mon Sep 17 00:00:00 2001 From: leotrs Date: Sun, 25 Oct 2020 22:55:04 -0400 Subject: [PATCH 08/37] delete repeated line and restore original skipping status correctly --- manim/scene/scene.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/manim/scene/scene.py b/manim/scene/scene.py index 291ff77a81..779cbd43d4 100644 --- a/manim/scene/scene.py +++ b/manim/scene/scene.py @@ -103,12 +103,10 @@ def __init__(self, **kwargs): self.animations_hashes = [] self.mobjects = [] - self.original_skipping_status = config["skip_animations"] # TODO, remove need for foreground mobjects self.foreground_mobjects = [] self.num_plays = 0 self.time = 0 - self.original_skipping_status = config["skip_animations"] if self.random_seed is not None: random.seed(self.random_seed) np.random.seed(self.random_seed) @@ -119,6 +117,7 @@ def render(self): """ Render this Scene. """ + self.original_skipping_status = config["skip_animations"] try: self.construct() except EndSceneEarlyException: @@ -126,7 +125,7 @@ def render(self): self.tear_down() # We have to reset these settings in case of multiple renders. - config["skip_animations"] = False + config["skip_animations"] = self.original_skipping_status self.file_writer.finish() self.print_end_message() From 151ac773bb214726d6a2f4816a9c1314a3601f36 Mon Sep 17 00:00:00 2001 From: leotrs Date: Sun, 25 Oct 2020 22:55:48 -0400 Subject: [PATCH 09/37] if there is no partial_movie_directory, then we cannot check if anything is cached --- manim/scene/scene_file_writer.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index ce2c5a0ffe..91ecddda51 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -125,6 +125,8 @@ def add_partial_movie_file(self, hash_animation): hash_animation : str Hash of the animation. """ + if not hasattr(self, 'partial_movie_directory'): + return # None has to be added to partial_movie_files to keep the right index with scene.num_plays. # i.e if an animation is skipped, scene.num_plays is still incremented and we add an element to partial_movie_file be even with num_plays. From 694077c6805b95dc2817a3d5082a248465266384 Mon Sep 17 00:00:00 2001 From: leotrs Date: Sun, 25 Oct 2020 22:59:37 -0400 Subject: [PATCH 10/37] add test for the -s flag --- tests/test_scene_rendering/test_cli_flags.py | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/test_scene_rendering/test_cli_flags.py b/tests/test_scene_rendering/test_cli_flags.py index aa815223ac..e9fb2a3fcd 100644 --- a/tests/test_scene_rendering/test_cli_flags.py +++ b/tests/test_scene_rendering/test_cli_flags.py @@ -1,4 +1,5 @@ import pytest +from pathlib import Path from ..utils.video_tester import * @@ -61,3 +62,26 @@ def test_n_flag(tmp_path, simple_scenes_path): ] _, err, exit_code = capture(command) assert exit_code == 0, err + + +def test_s_flag(tmp_path, manim_cfg_file, simple_scenes_path): + scene_name = "SquareToCircle" + command = [ + "python", + "-m", + "manim", + simple_scenes_path, + scene_name, + "-ql", + "-s", + "--media_dir", + str(tmp_path), + ] + out, err, exit_code = capture(command) + assert exit_code == 0, err + + is_empty = not any((tmp_path / 'videos').iterdir()) + assert is_empty, 'running manim with -s flag rendered a video' + + is_empty = not any((tmp_path / 'images').iterdir()) + assert not is_empty, 'running manim with -s flag did not render an image' From 70649b79acac5c9cc7b9481c982340b59497d549 Mon Sep 17 00:00:00 2001 From: leotrs Date: Sun, 25 Oct 2020 23:00:01 -0400 Subject: [PATCH 11/37] use the new "quality" config option --- tests/utils/GraphicalUnitTester.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/utils/GraphicalUnitTester.py b/tests/utils/GraphicalUnitTester.py index e9db4f0f7d..8eeec5c735 100644 --- a/tests/utils/GraphicalUnitTester.py +++ b/tests/utils/GraphicalUnitTester.py @@ -62,9 +62,7 @@ def __init__( config["save_last_frame"] = True config["write_to_movie"] = False config["disable_caching"] = True - config["pixel_height"] = 480 - config["pixel_width"] = 854 - config["frame_rate"] = 15 + config["quality"] = "low_quality" for dir_temp in [ self.path_tests_medias_cache, From 1bd4272c8ef366b2df9f8a6ca7efef43160806bd Mon Sep 17 00:00:00 2001 From: leotrs Date: Sun, 25 Oct 2020 23:00:33 -0400 Subject: [PATCH 12/37] why ignore skipping here? --- manim/scene/scene_file_writer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index 91ecddda51..bd69cc7e1a 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -396,7 +396,7 @@ def finish(self): else: self.clean_cache() if config["save_last_frame"]: - self.scene.update_frame(ignore_skipping=True) + self.scene.update_frame(ignore_skipping=False) self.save_final_image(self.scene.camera.get_image()) def open_movie_pipe(self): From e74289e57955cf160239a6337370f7a8ef4a2d54 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 08:27:01 -0400 Subject: [PATCH 13/37] fix the -s flag when there are no animations --- manim/config/utils.py | 2 -- manim/scene/scene_file_writer.py | 2 ++ tests/test_scene_rendering/simple_scenes.py | 7 ++++++ tests/test_scene_rendering/test_cli_flags.py | 25 ++++++++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index 68701115aa..e1fa020a78 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -813,8 +813,6 @@ def tex_template_file(self, val): class ManimFrame(Mapping): _OPTS = { - 'pixel_width', - 'pixel_height', 'pixel_width', 'pixel_height', 'aspect_ratio', diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index bd69cc7e1a..d9f3dc88b8 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -486,6 +486,8 @@ def is_already_cached(self, hash_invocation): :class:`bool` Whether the file exists. """ + if not hasattr(self, 'partial_movie_directory'): + return False path = os.path.join( self.partial_movie_directory, "{}{}".format(hash_invocation, config['movie_file_extension']), diff --git a/tests/test_scene_rendering/simple_scenes.py b/tests/test_scene_rendering/simple_scenes.py index b05c27575f..6522d4cf60 100644 --- a/tests/test_scene_rendering/simple_scenes.py +++ b/tests/test_scene_rendering/simple_scenes.py @@ -27,3 +27,10 @@ def construct(self): self.wait(1) self.play(ShowCreation(Square().shift(3 * DOWN))) self.wait(1) + + +class NoAnimations(Scene): + def construct(self): + dot = Dot().set_color(GREEN) + self.add(dot) + self.wait(1) diff --git a/tests/test_scene_rendering/test_cli_flags.py b/tests/test_scene_rendering/test_cli_flags.py index e9fb2a3fcd..dba46483c6 100644 --- a/tests/test_scene_rendering/test_cli_flags.py +++ b/tests/test_scene_rendering/test_cli_flags.py @@ -64,6 +64,31 @@ def test_n_flag(tmp_path, simple_scenes_path): assert exit_code == 0, err +def test_s_flag_no_animations(tmp_path, manim_cfg_file, simple_scenes_path): + scene_name = "NoAnimations" + command = [ + "python", + "-m", + "manim", + simple_scenes_path, + scene_name, + "-ql", + "-s", + "--media_dir", + str(tmp_path), + ] + out, err, exit_code = capture(command) + assert exit_code == 0, err + + print(list((tmp_path / 'images' / 'simple_scenes').iterdir())) + + is_empty = not any((tmp_path / 'videos').iterdir()) + assert is_empty, 'running manim with -s flag rendered a video' + + is_empty = not any((tmp_path / 'images' / 'simple_scenes').iterdir()) + assert not is_empty, 'running manim with -s flag did not render an image' + + def test_s_flag(tmp_path, manim_cfg_file, simple_scenes_path): scene_name = "SquareToCircle" command = [ From a78acbaec2ccbedd0bac59464edcc5a7a377f81f Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 08:32:20 -0400 Subject: [PATCH 14/37] this should have gone in with the previous commit --- tests/test_scene_rendering/test_cli_flags.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_scene_rendering/test_cli_flags.py b/tests/test_scene_rendering/test_cli_flags.py index dba46483c6..5693e7c964 100644 --- a/tests/test_scene_rendering/test_cli_flags.py +++ b/tests/test_scene_rendering/test_cli_flags.py @@ -108,5 +108,5 @@ def test_s_flag(tmp_path, manim_cfg_file, simple_scenes_path): is_empty = not any((tmp_path / 'videos').iterdir()) assert is_empty, 'running manim with -s flag rendered a video' - is_empty = not any((tmp_path / 'images').iterdir()) + is_empty = not any((tmp_path / 'images' / 'simple_scenes').iterdir()) assert not is_empty, 'running manim with -s flag did not render an image' From 8d661cea6bd45d4300dde60608aa42662006ef02 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 09:41:25 -0400 Subject: [PATCH 15/37] make the [custom_folders] use the same syntax as the [CLI] section --- manim/config/default.cfg | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/manim/config/default.cfg b/manim/config/default.cfg index e911db5d8e..9e4a6bcb06 100644 --- a/manim/config/default.cfg +++ b/manim/config/default.cfg @@ -167,10 +167,11 @@ streaming_console_banner = Manim is now running in streaming mode. # under media_dir, as is the default. [custom_folders] media_dir = videos -video_dir = %(media_dir)s -images_dir = %(media_dir)s -text_dir = %(media_dir)s/temp_files -tex_dir = %(media_dir)s/temp_files +video_dir = {media_dir} +images_dir = {media_dir} +text_dir = {media_dir}/temp_files +tex_dir = {media_dir}/temp_files +log_dir = {media_dir}/temp_files # Rich settings [logger] From d5b81714d6d35ca8c223f575a79761932555ce03 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 16:51:26 -0400 Subject: [PATCH 16/37] fix handling of background color flag --- manim/camera/camera.py | 1 - manim/config/utils.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/manim/camera/camera.py b/manim/camera/camera.py index c4fa3c00d9..d5c265464c 100644 --- a/manim/camera/camera.py +++ b/manim/camera/camera.py @@ -52,7 +52,6 @@ class Camera(object): # Note: frame height and width will be resized to match # the pixel aspect ratio "frame_center": ORIGIN, - "background_color": BLACK, "background_opacity": 1, # Points in vectorized mobjects with norm greater # than this value will be rescaled. diff --git a/manim/config/utils.py b/manim/config/utils.py index e1fa020a78..b0b3388152 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -305,7 +305,7 @@ def digest_args(self, args): "transparent", "scene_names", "verbosity", - + "background_color", ]: if hasattr(args, key): attr = getattr(args, key) From 334e2c4ccef32ace9b470262856f7fb12f82b6c9 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 16:52:50 -0400 Subject: [PATCH 17/37] run black --- manim/camera/camera.py | 1 + manim/config/logger.py | 2 +- manim/config/utils.py | 680 ++++++++++++++++--------------- manim/scene/scene_file_writer.py | 22 +- 4 files changed, 352 insertions(+), 353 deletions(-) diff --git a/manim/camera/camera.py b/manim/camera/camera.py index d5c265464c..69d1e28c57 100644 --- a/manim/camera/camera.py +++ b/manim/camera/camera.py @@ -89,6 +89,7 @@ def __init__(self, background=None, **kwargs): "frame_height", "frame_width", "frame_rate", + "background_color", ]: setattr(self, attr, kwargs.get(attr, config[attr])) diff --git a/manim/config/logger.py b/manim/config/logger.py index bc8a154c3c..9b1d91291d 100644 --- a/manim/config/logger.py +++ b/manim/config/logger.py @@ -105,7 +105,7 @@ def set_file_logger(config, verbosity): file_handler = logging.FileHandler(log_file_path, mode="w") file_handler.setFormatter(JSONFormatter()) - logger = logging.getLogger('manim') + logger = logging.getLogger("manim") logger.addHandler(file_handler) logger.info("Log file will be saved in %(logpath)s", {"logpath": log_file_path}) logger.setLevel(verbosity) diff --git a/manim/config/utils.py b/manim/config/utils.py index b0b3388152..d383c85937 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -80,7 +80,7 @@ def determine_quality(args): for quality in old_qualities: if getattr(args, quality, None): - logging.getLogger('manim').warning( + logging.getLogger("manim").warning( f"Option -{quality} is deprecated please use the --quality/-q flag." ) return old_qualities[quality] @@ -89,59 +89,59 @@ def determine_quality(args): _QUAL = { - 'low_quality': {'pixel_height': 480, 'pixel_width': 854, 'frame_rate': 15}, - 'medium_quality': {'pixel_height': 720, 'pixel_width': 1280, 'frame_rate': 30}, - 'high_quality': {'pixel_height': 1080, 'pixel_width': 1920, 'frame_rate': 60}, - 'production_quality': {'pixel_height': 1440, 'pixel_width': 2560, 'frame_rate': 60}, - '4k_quality': {'pixel_height': 2160, 'pixel_width': 3840, 'frame_rate': 60}, + "low_quality": {"pixel_height": 480, "pixel_width": 854, "frame_rate": 15}, + "medium_quality": {"pixel_height": 720, "pixel_width": 1280, "frame_rate": 30}, + "high_quality": {"pixel_height": 1080, "pixel_width": 1920, "frame_rate": 60}, + "production_quality": {"pixel_height": 1440, "pixel_width": 2560, "frame_rate": 60}, + "4k_quality": {"pixel_height": 2160, "pixel_width": 3840, "frame_rate": 60}, } class ManimConfig(MutableMapping): _OPTS = { - 'background_color', - 'background_opacity', - 'custom_folders', - 'disable_caching', - 'ffmpeg_loglevel', - 'flush_cache', - 'frame_height', - 'frame_rate', - 'frame_width', - 'frame_x_radius', - 'frame_y_radius', - 'from_animation_number', - 'images_dir', - 'input_file', - 'js_renderer_path', - 'leave_progress_bars', - 'log_dir', - 'log_to_file', - 'max_files_cached', - 'media_dir', - 'movie_file_extension', - 'pixel_height', - 'pixel_width', - 'png_mode', - 'preview', - 'progress_bar', - 'save_as_gif', - 'save_last_frame', - 'save_pngs', - 'scene_names', - 'show_in_file_browser', - 'skip_animations', - 'sound', - 'tex_dir', - 'tex_template_file', - 'text_dir', - 'upto_animation_number', - 'use_js_renderer', - 'verbosity', - 'video_dir', - 'write_all', - 'write_to_movie', + "background_color", + "background_opacity", + "custom_folders", + "disable_caching", + "ffmpeg_loglevel", + "flush_cache", + "frame_height", + "frame_rate", + "frame_width", + "frame_x_radius", + "frame_y_radius", + "from_animation_number", + "images_dir", + "input_file", + "js_renderer_path", + "leave_progress_bars", + "log_dir", + "log_to_file", + "max_files_cached", + "media_dir", + "movie_file_extension", + "pixel_height", + "pixel_width", + "png_mode", + "preview", + "progress_bar", + "save_as_gif", + "save_last_frame", + "save_pngs", + "scene_names", + "show_in_file_browser", + "skip_animations", + "sound", + "tex_dir", + "tex_template_file", + "text_dir", + "upto_animation_number", + "use_js_renderer", + "verbosity", + "video_dir", + "write_all", + "write_to_movie", } def __init__(self, parser): @@ -167,7 +167,7 @@ def __getitem__(self, key): return getattr(self, key) def __setitem__(self, key, val): - getattr(ManimConfig, key).fset(self, val) # fset is the property's setter + getattr(ManimConfig, key).fset(self, val) # fset is the property's setter # don't allow to delete anything def __delitem__(self, key): @@ -181,13 +181,13 @@ def _set_from_list(self, key, val, values): if val in values: self._d[key] = val else: - raise ValueError(f'attempted to set {key} to {val}; must be in {values}') + raise ValueError(f"attempted to set {key} to {val}; must be in {values}") def _set_boolean(self, key, val): if val in [True, False]: self._d[key] = val else: - raise ValueError(f'{key} must be boolean') + raise ValueError(f"{key} must be boolean") def _set_str(self, key, val): if isinstance(val, str): @@ -195,77 +195,79 @@ def _set_str(self, key, val): elif not val: self._d[key] = "" else: - raise ValueError(f'{key} must be str or falsy value') + raise ValueError(f"{key} must be str or falsy value") def _set_between(self, key, val, lo, hi): if lo <= val <= hi: self._d[key] = val else: - raise ValueError(f'{key} must be {lo} <= {key} <= {hi}') + raise ValueError(f"{key} must be {lo} <= {key} <= {hi}") def _set_pos_number(self, key, val, allow_inf): if isinstance(val, int) and val > -1: self._d[key] = val - elif allow_inf and (val == -1 or val == float('inf')): - self._d[key] = float('inf') + elif allow_inf and (val == -1 or val == float("inf")): + self._d[key] = float("inf") else: - raise ValueError(f'{key} must be a non-negative integer (use -1 for infinity)') + raise ValueError( + f"{key} must be a non-negative integer (use -1 for infinity)" + ) # builders def digest_parser(self, parser): # boolean keys for key in [ - 'write_to_movie', - 'save_last_frame', - 'write_all', - 'save_pngs', - 'save_as_gif', - 'preview', - 'show_in_file_browser', - 'progress_bar', - 'sound', - 'leave_progress_bars', - 'log_to_file', - 'disable_caching', - 'flush_cache', - 'custom_folders', - 'skip_animations', - 'use_js_renderer', + "write_to_movie", + "save_last_frame", + "write_all", + "save_pngs", + "save_as_gif", + "preview", + "show_in_file_browser", + "progress_bar", + "sound", + "leave_progress_bars", + "log_to_file", + "disable_caching", + "flush_cache", + "custom_folders", + "skip_animations", + "use_js_renderer", ]: - setattr(self, key, parser['CLI'].getboolean(key, fallback=False)) + setattr(self, key, parser["CLI"].getboolean(key, fallback=False)) # int keys for key in [ - 'from_animation_number', - 'upto_animation_number', - 'frame_rate', - 'max_files_cached', - 'pixel_height', - 'pixel_width', + "from_animation_number", + "upto_animation_number", + "frame_rate", + "max_files_cached", + "pixel_height", + "pixel_width", ]: - setattr(self, key, parser['CLI'].getint(key)) + setattr(self, key, parser["CLI"].getint(key)) # str keys for key in [ - 'verbosity', - 'media_dir', - 'log_dir', - 'video_dir', - 'images_dir', - 'text_dir', - 'tex_dir', - 'input_file', - 'output_file', - 'png_mode', - 'movie_file_extension', - 'background_color', - 'js_renderer_path', + "verbosity", + "media_dir", + "log_dir", + "video_dir", + "images_dir", + "text_dir", + "tex_dir", + "input_file", + "output_file", + "png_mode", + "movie_file_extension", + "background_color", + "js_renderer_path", ]: - setattr(self, key, parser['CLI'].get(key, fallback='', raw=True)) + setattr(self, key, parser["CLI"].get(key, fallback="", raw=True)) # float keys - for key in ['background_opacity']: - setattr(self, key, parser['CLI'].getfloat(key)) + for key in ["background_opacity"]: + setattr(self, key, parser["CLI"].getfloat(key)) # other logic self["frame_height"] = 8.0 @@ -273,39 +275,37 @@ def digest_parser(self, parser): self["frame_height"] * self["pixel_width"] / self["pixel_height"] ) - val = parser['CLI'].get('tex_template_file') + val = parser["CLI"].get("tex_template_file") if val: - setattr(self, 'tex_template_file', val) + setattr(self, "tex_template_file", val) - val = parser['ffmpeg'].get('loglevel') + val = parser["ffmpeg"].get("loglevel") if val: - setattr(self, 'ffmpeg_loglevel', val) + setattr(self, "ffmpeg_loglevel", val) return self def digest_args(self, args): self.input_file = args.file - self.scene_names = ( - args.scene_names if args.scene_names is not None else [] - ) + self.scene_names = args.scene_names if args.scene_names is not None else [] self.output_file = args.output_file for key in [ - "preview", - "show_in_file_browser", - "sound", - "leave_progress_bars", - "write_to_movie", - "save_last_frame", - "save_pngs", - "save_as_gif", - "write_all", - "disable_caching", - "flush_cache", - "transparent", - "scene_names", - "verbosity", - "background_color", + "preview", + "show_in_file_browser", + "sound", + "leave_progress_bars", + "write_to_movie", + "save_last_frame", + "save_pngs", + "save_as_gif", + "write_all", + "disable_caching", + "flush_cache", + "transparent", + "scene_names", + "verbosity", + "background_color", ]: if hasattr(args, key): attr = getattr(args, key) @@ -315,19 +315,19 @@ def digest_args(self, args): self[key] = attr # dry_run is special because it can only be set to True - if hasattr(args, 'dry_run'): - if getattr(args, 'dry_run'): - self['dry_run'] = True + if hasattr(args, "dry_run"): + if getattr(args, "dry_run"): + self["dry_run"] = True for key in [ - "media_dir", # always set this one first - "video_dir", - "images_dir", - "tex_dir", - "text_dir", - "log_dir", - "custom_folders", - "log_to_file", # always set this one last + "media_dir", # always set this one first + "video_dir", + "images_dir", + "tex_dir", + "text_dir", + "log_dir", + "custom_folders", + "log_to_file", # always set this one last ]: if hasattr(args, key): attr = getattr(args, key) @@ -361,18 +361,14 @@ def digest_args(self, args): self.pixel_width = int(w) self.pixel_height = int(h) except ValueError: - raise ValueError(f'invalid argument {rflag} for -r flag (must have a comma ",")') + raise ValueError( + f'invalid argument {rflag} for -r flag (must have a comma ",")' + ) # Handle --custom_folders if args.custom_folders: - for opt in [ - 'media_dir', - 'video_dir', - 'text_dir', - 'tex_dir', - 'log_dir' - ]: - self[opt] = self._parser['custom_folders'].get(opt, raw=True) + for opt in ["media_dir", "video_dir", "text_dir", "tex_dir", "log_dir"]: + self[opt] = self._parser["custom_folders"].get(opt, raw=True) return self @@ -388,251 +384,257 @@ def copy(self): # config options are properties preview = property( - lambda self: self._d['preview'], - lambda self, val: self._set_boolean('preview', val), - doc='Whether to play the movie once it is done rendering' + lambda self: self._d["preview"], + lambda self, val: self._set_boolean("preview", val), + doc="Whether to play the movie once it is done rendering", ) show_in_file_browser = property( - lambda self: self._d['show_in_file_browser'], - lambda self, val: self._set_boolean('show_in_file_browser', val), - doc='Whether to show the rendered file in the file browser' + lambda self: self._d["show_in_file_browser"], + lambda self, val: self._set_boolean("show_in_file_browser", val), + doc="Whether to show the rendered file in the file browser", ) progress_bar = property( - lambda self: self._d['progress_bar'], - lambda self, val: self._set_boolean('progress_bar', val), - doc='Whether to show progress bars while rendering animations' + lambda self: self._d["progress_bar"], + lambda self, val: self._set_boolean("progress_bar", val), + doc="Whether to show progress bars while rendering animations", ) leave_progress_bars = property( - lambda self: self._d['leave_progress_bars'], - lambda self, val: self._set_boolean('leave_progress_bars', val), - doc='Whether to leave the progress bar for each animations' + lambda self: self._d["leave_progress_bars"], + lambda self, val: self._set_boolean("leave_progress_bars", val), + doc="Whether to leave the progress bar for each animations", ) @property def log_to_file(self): """Whether to save logs to a file""" - return self._d['log_to_file'] + return self._d["log_to_file"] @log_to_file.setter - def log_to_file(self, val): - self._set_boolean('log_to_file', val) + def log_to_file(self, val): + self._set_boolean("log_to_file", val) if val: - if not os.path.exists(self['log_dir']): - os.makedirs(self['log_dir']) - set_file_logger(self, self['verbosity']) + if not os.path.exists(self["log_dir"]): + os.makedirs(self["log_dir"]) + set_file_logger(self, self["verbosity"]) sound = property( - lambda self: self._d['sound'], - lambda self, val: self._set_boolean('sound', val), - doc='Whether to play a sound to notify when a scene is rendered' + lambda self: self._d["sound"], + lambda self, val: self._set_boolean("sound", val), + doc="Whether to play a sound to notify when a scene is rendered", ) write_to_movie = property( - lambda self: self._d['write_to_movie'], - lambda self, val: self._set_boolean('write_to_movie', val), - doc='Whether to render the scene to a movie file' + lambda self: self._d["write_to_movie"], + lambda self, val: self._set_boolean("write_to_movie", val), + doc="Whether to render the scene to a movie file", ) save_last_frame = property( - lambda self: self._d['save_last_frame'], - lambda self, val: self._set_boolean('save_last_frame', val), - doc='Whether to save the last frame of the scene as an image file' + lambda self: self._d["save_last_frame"], + lambda self, val: self._set_boolean("save_last_frame", val), + doc="Whether to save the last frame of the scene as an image file", ) write_all = property( - lambda self: self._d['write_all'], - lambda self, val: self._set_boolean('write_all', val), - doc='Whether to render all scenes in the input file' + lambda self: self._d["write_all"], + lambda self, val: self._set_boolean("write_all", val), + doc="Whether to render all scenes in the input file", ) save_pngs = property( - lambda self: self._d['save_pngs'], - lambda self, val: self._set_boolean('save_pngs', val), - doc='Whether to save all frames in the scene as images files' + lambda self: self._d["save_pngs"], + lambda self, val: self._set_boolean("save_pngs", val), + doc="Whether to save all frames in the scene as images files", ) save_as_gif = property( - lambda self: self._d['save_as_gif'], - lambda self, val: self._set_boolean('save_as_gif', val), - doc='Whether to save the rendered scene in .gif format.' + lambda self: self._d["save_as_gif"], + lambda self, val: self._set_boolean("save_as_gif", val), + doc="Whether to save the rendered scene in .gif format.", ) @property def verbosity(self): - return self._d['verbosity'] + return self._d["verbosity"] @verbosity.setter def verbosity(self, val): """Verbosity level of the logger.""" self._set_from_list( - 'verbosity', + "verbosity", val, - ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], + ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"], ) - logging.getLogger('manim').setLevel(val) + logging.getLogger("manim").setLevel(val) ffmpeg_loglevel = property( - lambda self: self._d['ffmpeg_loglevel'], + lambda self: self._d["ffmpeg_loglevel"], lambda self, val: self._set_from_list( - 'ffmpeg_loglevel', val, ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] + "ffmpeg_loglevel", val, ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] ), - doc='Verbosity level of ffmpeg.' + doc="Verbosity level of ffmpeg.", ) pixel_width = property( - lambda self: self._d['pixel_width'], - lambda self, val: self._set_pos_number('pixel_width', val, False), - doc='Frame width in pixels' + lambda self: self._d["pixel_width"], + lambda self, val: self._set_pos_number("pixel_width", val, False), + doc="Frame width in pixels", ) pixel_height = property( - lambda self: self._d['pixel_height'], - lambda self, val: self._set_pos_number('pixel_height', val, False), - doc='Frame height in pixels' + lambda self: self._d["pixel_height"], + lambda self, val: self._set_pos_number("pixel_height", val, False), + doc="Frame height in pixels", ) aspect_ratio = property( - lambda self: self._d['pixel_width'] / self._d['pixel_height'], - doc='Aspect ratio (width / height) in pixels' + lambda self: self._d["pixel_width"] / self._d["pixel_height"], + doc="Aspect ratio (width / height) in pixels", ) frame_height = property( - lambda self: self._d['frame_height'], - lambda self, val: self._d.__setitem__('frame_height', val), - doc='Frame height in logical units' + lambda self: self._d["frame_height"], + lambda self, val: self._d.__setitem__("frame_height", val), + doc="Frame height in logical units", ) frame_width = property( - lambda self: self._d['frame_width'], - lambda self, val: self._d.__setitem__('frame_width', val), - doc='Frame width in logical units' + lambda self: self._d["frame_width"], + lambda self, val: self._d.__setitem__("frame_width", val), + doc="Frame width in logical units", ) frame_y_radius = property( - lambda self: self._d['frame_height'] / 2, + lambda self: self._d["frame_height"] / 2, lambda self, val: ( - self._d.__setitem__('frame_y_radius', val) - or self._d.__setitem__('frame_height', 2*val) + self._d.__setitem__("frame_y_radius", val) + or self._d.__setitem__("frame_height", 2 * val) ), - doc='Half the frame height' + doc="Half the frame height", ) frame_x_radius = property( - lambda self: self._d['frame_width'] / 2, + lambda self: self._d["frame_width"] / 2, lambda self, val: ( - self._d.__setitem__('frame_x_radius', val) - or self._d.__setitem__('frame_width', 2*val) + self._d.__setitem__("frame_x_radius", val) + or self._d.__setitem__("frame_width", 2 * val) ), - doc='Half the frame width' + doc="Half the frame width", ) top = property( lambda self: self.frame_y_radius * constants.UP, - doc='One unit step in the positive vertical direction' + doc="One unit step in the positive vertical direction", ) bottom = property( lambda self: self.frame_y_radius * constants.DOWN, - doc='One unit step in the negative vertical direction' + doc="One unit step in the negative vertical direction", ) left_side = property( lambda self: self.frame_x_radius * constants.LEFT, - doc='One unit step in the negative horizontal direction' + doc="One unit step in the negative horizontal direction", ) right_side = property( lambda self: self.frame_x_radius * constants.RIGHT, - doc='One unit step in the positive horizontal direction' + doc="One unit step in the positive horizontal direction", ) frame_rate = property( - lambda self: self._d['frame_rate'], - lambda self, val: self._d.__setitem__('frame_rate', val), - doc='Frame rate in fps (rames per second)' + lambda self: self._d["frame_rate"], + lambda self, val: self._d.__setitem__("frame_rate", val), + doc="Frame rate in fps (rames per second)", ) background_color = property( - lambda self: self._d['background_color'], + lambda self: self._d["background_color"], lambda self, val: self._d.__setitem__("background_color", colour.Color(val)), - doc="Background color of the scene." + doc="Background color of the scene.", ) from_animation_number = property( - lambda self: self._d['from_animation_number'], - lambda self, val: self._d.__setitem__('from_animation_number', val), - doc='Set to a number greater than 1 to skip animations.' + lambda self: self._d["from_animation_number"], + lambda self, val: self._d.__setitem__("from_animation_number", val), + doc="Set to a number greater than 1 to skip animations.", ) upto_animation_number = property( - lambda self: self._d['upto_animation_number'], - lambda self, val: self._set_pos_number('upto_animation_number', val, True), - doc=('Set to less than the number of animations to skip ' - 'animations. Use -1 to avoid skipping.') + lambda self: self._d["upto_animation_number"], + lambda self, val: self._set_pos_number("upto_animation_number", val, True), + doc=( + "Set to less than the number of animations to skip " + "animations. Use -1 to avoid skipping." + ), ) skip_animations = property( - lambda self: self._d['skip_animations'], - lambda self, val: self._set_boolean('skip_animations', val), - doc=('Set to less than the number of animations to skip ' - 'animations. Use -1 to avoid skipping.') + lambda self: self._d["skip_animations"], + lambda self, val: self._set_boolean("skip_animations", val), + doc=( + "Set to less than the number of animations to skip " + "animations. Use -1 to avoid skipping." + ), ) max_files_cached = property( - lambda self: self._d['max_files_cached'], - lambda self, val: self._set_pos_number('max_files_cached', val, True), - doc='Maximum number of files cached. Use -1 for infinity.' + lambda self: self._d["max_files_cached"], + lambda self, val: self._set_pos_number("max_files_cached", val, True), + doc="Maximum number of files cached. Use -1 for infinity.", ) flush_cache = property( - lambda self: self._d['flush_cache'], - lambda self, val: self._set_boolean('flush_cache', val), - doc='whether to delete all the cached partial movie files.' + lambda self: self._d["flush_cache"], + lambda self, val: self._set_boolean("flush_cache", val), + doc="whether to delete all the cached partial movie files.", ) disable_caching = property( - lambda self: self._d['disable_caching'], - lambda self, val: self._set_boolean('disable_caching', val), - doc='whether to use scene caching.' + lambda self: self._d["disable_caching"], + lambda self, val: self._set_boolean("disable_caching", val), + doc="whether to use scene caching.", ) png_mode = property( - lambda self: self._d['png_mode'], - lambda self, val: self._set_from_list('png_mode', val, ['RGB', 'RGBA']), - doc='Either RGA (no transparency) or RGBA (with transparency).' + lambda self: self._d["png_mode"], + lambda self, val: self._set_from_list("png_mode", val, ["RGB", "RGBA"]), + doc="Either RGA (no transparency) or RGBA (with transparency).", ) movie_file_extension = property( - lambda self: self._d['movie_file_extension'], - lambda self, val: self._set_from_list('movie_file_extension', val, ['.mp4', '.mov']), - doc='Either .mp4 or .mov.' + lambda self: self._d["movie_file_extension"], + lambda self, val: self._set_from_list( + "movie_file_extension", val, [".mp4", ".mov"] + ), + doc="Either .mp4 or .mov.", ) background_opacity = property( - lambda self: self._d['background_opacity'], - lambda self, val: self._set_between('background_opacity', val, 0, 1), - doc='A number between 0.0 (fully transparent) and 1.0 (fully opaque).' + lambda self: self._d["background_opacity"], + lambda self, val: self._set_between("background_opacity", val, 0, 1), + doc="A number between 0.0 (fully transparent) and 1.0 (fully opaque).", ) frame_size = property( - lambda self: (self._d['pixel_width'], self._d['pixel_height']), + lambda self: (self._d["pixel_width"], self._d["pixel_height"]), lambda self, tup: ( - self._d.__setitem__('pixel_width', tup[0]) - or self._d.__setitem__('pixel_height', tup[1]) + self._d.__setitem__("pixel_width", tup[0]) + or self._d.__setitem__("pixel_height", tup[1]) ), - doc='' + doc="", ) @property def quality(self): """Video quality.""" q = { - 'pixel_width': self.pixel_width, - 'pixel_height': self.pixel_height, - 'frame_rate': self.frame_rate, + "pixel_width": self.pixel_width, + "pixel_height": self.pixel_height, + "frame_rate": self.frame_rate, } for qual in _QUAL: if q == _QUAL[qual]: @@ -643,24 +645,24 @@ def quality(self): @quality.setter def quality(self, qual): if qual not in _QUAL: - raise KeyError(f'quality must be one of {list(_QUAL.keys())}') - self.frame_size = _QUAL[qual]['pixel_width'], _QUAL[qual]['pixel_height'] - self.frame_rate = _QUAL[qual]['frame_rate'] + raise KeyError(f"quality must be one of {list(_QUAL.keys())}") + self.frame_size = _QUAL[qual]["pixel_width"], _QUAL[qual]["pixel_height"] + self.frame_rate = _QUAL[qual]["frame_rate"] @property def transparent(self): """Whether the background opacity is 0.0.""" - return self._d['background_opacity'] == 0.0 + return self._d["background_opacity"] == 0.0 @transparent.setter def transparent(self, val): if val: - self.png_mode = 'RGBA' - self.movie_file_extension = '.mov' + self.png_mode = "RGBA" + self.movie_file_extension = ".mov" self.background_opacity = 0.0 else: - self.png_mode = 'RGB' - self.movie_file_extension = '.mp4' + self.png_mode = "RGB" + self.movie_file_extension = ".mp4" self.background_opacity = 1.0 @property @@ -683,105 +685,107 @@ def dry_run(self, val): self.save_pngs = False self.save_as_gif = False else: - raise ValueError('It is unclear what it means to set dry_run to ' - 'False. Instead, try setting each option ' - 'individually. (write_to_movie, write_alll, ' - 'save_last_frame, save_pngs, or save_as_gif)') + raise ValueError( + "It is unclear what it means to set dry_run to " + "False. Instead, try setting each option " + "individually. (write_to_movie, write_alll, " + "save_last_frame, save_pngs, or save_as_gif)" + ) @property def use_js_renderer(self): - self._d['use_js_renderer'] + self._d["use_js_renderer"] @use_js_renderer.setter def use_js_renderer(self, val): - self._d['use_js_renderer'] = val + self._d["use_js_renderer"] = val if val: self["disable_caching"] = True js_renderer_path = property( - lambda self: self._d['js_renderer_path'], - lambda self, val: self._d.__setitem__('js_renderer_path', Path(val)), - doc='Path to JS renderer.' + lambda self: self._d["js_renderer_path"], + lambda self, val: self._d.__setitem__("js_renderer_path", Path(val)), + doc="Path to JS renderer.", ) media_dir = property( - lambda self: self._d['media_dir'], - lambda self, val: self._d.__setitem__('media_dir', Path(val)), - doc='Main output directory, relative to execution directory.' + lambda self: self._d["media_dir"], + lambda self, val: self._d.__setitem__("media_dir", Path(val)), + doc="Main output directory, relative to execution directory.", ) def _get_dir(self, key): dirs = [ - 'media_dir', - 'video_dir', - 'images_dir', - 'text_dir', - 'tex_dir', - 'log_dir', - 'input_file', - 'output_file', + "media_dir", + "video_dir", + "images_dir", + "text_dir", + "tex_dir", + "log_dir", + "input_file", + "output_file", ] dirs.remove(key) dirs = {k: self._d[k] for k in dirs} return self._d[key].format(**dirs) log_dir = property( - lambda self: self._get_dir('log_dir'), - lambda self, val: self._d.__setitem__('log_dir', val), - doc='Directory to place logs' + lambda self: self._get_dir("log_dir"), + lambda self, val: self._d.__setitem__("log_dir", val), + doc="Directory to place logs", ) video_dir = property( - lambda self: self._get_dir('video_dir'), - lambda self, val: self._d.__setitem__('video_dir', val), - doc='Directory to place videos' + lambda self: self._get_dir("video_dir"), + lambda self, val: self._d.__setitem__("video_dir", val), + doc="Directory to place videos", ) images_dir = property( - lambda self: self._get_dir('images_dir'), - lambda self, val: self._d.__setitem__('images_dir', val), - doc='Directory to place images' + lambda self: self._get_dir("images_dir"), + lambda self, val: self._d.__setitem__("images_dir", val), + doc="Directory to place images", ) text_dir = property( - lambda self: self._get_dir('text_dir'), - lambda self, val: self._d.__setitem__('text_dir', val), - doc='Directory to place text' + lambda self: self._get_dir("text_dir"), + lambda self, val: self._d.__setitem__("text_dir", val), + doc="Directory to place text", ) tex_dir = property( - lambda self: self._get_dir('tex_dir'), - lambda self, val: self._d.__setitem__('tex_dir', val), - doc='Directory to place tex' + lambda self: self._get_dir("tex_dir"), + lambda self, val: self._d.__setitem__("tex_dir", val), + doc="Directory to place tex", ) custom_folders = property( - lambda self: self._d['custom_folders'], - lambda self, val: self._set_boolean('custom_folders', val), - doc='Whether to use custom folders.' + lambda self: self._d["custom_folders"], + lambda self, val: self._set_boolean("custom_folders", val), + doc="Whether to use custom folders.", ) input_file = property( - lambda self: self._get_dir('input_file'), - lambda self, val: self._d.__setitem__('input_file', val), - doc='Input file name.' + lambda self: self._get_dir("input_file"), + lambda self, val: self._d.__setitem__("input_file", val), + doc="Input file name.", ) output_file = property( - lambda self: self._get_dir('output_file'), - lambda self, val: self._d.__setitem__('output_file', val), - doc='Output file name.' + lambda self: self._get_dir("output_file"), + lambda self, val: self._d.__setitem__("output_file", val), + doc="Output file name.", ) scene_names = property( - lambda self: self._d['scene_names'], - lambda self, val: self._d.__setitem__('scene_names', val), - doc='Scenes to play from file.' + lambda self: self._d["scene_names"], + lambda self, val: self._d.__setitem__("scene_names", val), + doc="Scenes to play from file.", ) @property def tex_template(self): - if not hasattr(self, '_tex_template') or not self._tex_template: + if not hasattr(self, "_tex_template") or not self._tex_template: fn = self._d["tex_template_file"] if fn: self._tex_template = TexTemplateFromFile(filename=fn) @@ -796,50 +800,52 @@ def tex_template(self, val): @property def tex_template_file(self): - return self._d['tex_template_file'] + return self._d["tex_template_file"] @tex_template_file.setter def tex_template_file(self, val): if val: if not os.access(val, os.R_OK): - logging.getLogger("manim").warning(f"Custom TeX template {val} not found or not readable.") + logging.getLogger("manim").warning( + f"Custom TeX template {val} not found or not readable." + ) else: self._d["tex_template_file"] = Path(val) self._tex_template = TexTemplateFromFile(filename=val) else: - self._d["tex_template_file"] = val # actually set the falsy value - self._tex_template = TexTemplate() # but don't use it + self._d["tex_template_file"] = val # actually set the falsy value + self._tex_template = TexTemplate() # but don't use it class ManimFrame(Mapping): _OPTS = { - 'pixel_width', - 'pixel_height', - 'aspect_ratio', - 'frame_height', - 'frame_width', - 'frame_y_radius', - 'frame_x_radius', - 'top', - 'bottom', - 'left_side', - 'right_side', + "pixel_width", + "pixel_height", + "aspect_ratio", + "frame_height", + "frame_width", + "frame_y_radius", + "frame_x_radius", + "top", + "bottom", + "left_side", + "right_side", } _CONSTANTS = { - 'UP': np.array((0.0, 1.0, 0.0)), - 'DOWN': np.array((0.0, -1.0, 0.0)), - 'RIGHT': np.array((1.0, 0.0, 0.0)), - 'LEFT': np.array((-1.0, 0.0, 0.0)), - 'IN': np.array((0.0, 0.0, -1.0)), - 'OUT': np.array((0.0, 0.0, 1.0)), - 'ORIGIN': np.array((0.0, 0.0, 0.0)), - 'X_AXIS': np.array((1.0, 0.0, 0.0)), - 'Y_AXIS': np.array((0.0, 1.0, 0.0)), - 'Z_AXIS': np.array((0.0, 0.0, 1.0)), - 'UL': np.array((-1.0, 1.0, 0.0)), - 'UR': np.array((1.0, 1.0, 0.0)), - 'DL': np.array((-1.0, -1.0, 0.0)), - 'DR': np.array((1.0, -1.0, 0.0)), + "UP": np.array((0.0, 1.0, 0.0)), + "DOWN": np.array((0.0, -1.0, 0.0)), + "RIGHT": np.array((1.0, 0.0, 0.0)), + "LEFT": np.array((-1.0, 0.0, 0.0)), + "IN": np.array((0.0, 0.0, -1.0)), + "OUT": np.array((0.0, 0.0, 1.0)), + "ORIGIN": np.array((0.0, 0.0, 0.0)), + "X_AXIS": np.array((1.0, 0.0, 0.0)), + "Y_AXIS": np.array((0.0, 1.0, 0.0)), + "Z_AXIS": np.array((0.0, 0.0, 1.0)), + "UL": np.array((-1.0, 1.0, 0.0)), + "UR": np.array((1.0, 1.0, 0.0)), + "DL": np.array((-1.0, -1.0, 0.0)), + "DR": np.array((1.0, -1.0, 0.0)), } def __init__(self, c): @@ -847,7 +853,7 @@ def __init__(self, c): raise TypeError("argument must be instance of 'ManimConfig'") # need to use __dict__ directly because setting attributes is not # allowed (see __setattr__) - self.__dict__['_c'] = c + self.__dict__["_c"] = c # there are required by parent class Mapping to behave like a dict def __getitem__(self, key): @@ -876,8 +882,4 @@ def __delitem__(self, key): for opt in list(ManimFrame._OPTS) + list(ManimFrame._CONSTANTS): - setattr( - ManimFrame, - opt, - property(lambda self, o=opt: self[o]) - ) + setattr(ManimFrame, opt, property(lambda self, o=opt: self[o])) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index d9f3dc88b8..b3dadbf758 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -86,9 +86,7 @@ def init_output_directories(self): ) ) else: - movie_dir = guarantee_existence( - os.path.join(config["video_dir"]) - ) + movie_dir = guarantee_existence(os.path.join(config["video_dir"])) self.movie_file_path = os.path.join( movie_dir, @@ -125,7 +123,7 @@ def add_partial_movie_file(self, hash_animation): hash_animation : str Hash of the animation. """ - if not hasattr(self, 'partial_movie_directory'): + if not hasattr(self, "partial_movie_directory"): return # None has to be added to partial_movie_files to keep the right index with scene.num_plays. @@ -409,9 +407,7 @@ def open_movie_pipe(self): # TODO #486 Why does ffmpeg need temp files ? temp_file_path = ( - os.path.splitext(file_path)[0] - + "_temp" - + config["movie_file_extension"] + os.path.splitext(file_path)[0] + "_temp" + config["movie_file_extension"] ) self.partial_movie_file_path = file_path self.temp_partial_movie_file_path = temp_file_path @@ -486,11 +482,11 @@ def is_already_cached(self, hash_invocation): :class:`bool` Whether the file exists. """ - if not hasattr(self, 'partial_movie_directory'): + if not hasattr(self, "partial_movie_directory"): return False path = os.path.join( self.partial_movie_directory, - "{}{}".format(hash_invocation, config['movie_file_extension']), + "{}{}".format(hash_invocation, config["movie_file_extension"]), ) return os.path.exists(path) @@ -541,10 +537,10 @@ def combine_movie_files(self): config["ffmpeg_loglevel"].lower(), ] - if config['write_to_movie'] and not config['save_as_gif']: + if config["write_to_movie"] and not config["save_as_gif"]: commands += ["-c", "copy", movie_file_path] - if config['save_as_gif']: + if config["save_as_gif"]: commands += [self.gif_file_path] if not self.includes_sound: @@ -553,7 +549,7 @@ def combine_movie_files(self): try: subprocess.check_call(commands) except subprocess.CalledProcessError as exc: - logger.error(f'FFMPEG returned with code {exc.returncode}') + logger.error(f"FFMPEG returned with code {exc.returncode}") raise exc if self.includes_sound: @@ -596,7 +592,7 @@ def combine_movie_files(self): os.remove(sound_file_path) self.print_file_ready_message( - self.gif_file_path if config['save_as_gif'] else movie_file_path + self.gif_file_path if config["save_as_gif"] else movie_file_path ) if config["write_to_movie"]: for file_path in partial_movie_files: From 02224236870ffd6af13d87f66b4a4fbfcd0fadc0 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 17:11:41 -0400 Subject: [PATCH 18/37] add new test data --- .../creation/DrawBorderThenFillTest.npz | Bin 0 -> 2487 bytes .../creation/FadeInFromDownTest.npz | Bin 0 -> 2494 bytes .../creation/FadeInFromLargeTest.npz | Bin 0 -> 2494 bytes .../creation/FadeInFromTest.npz | Bin 0 -> 2494 bytes .../creation/FadeInTest.npz | Bin 0 -> 2494 bytes .../creation/FadeOutAndShiftTest.npz | Bin 0 -> 1843 bytes .../creation/FadeOutTest.npz | Bin 0 -> 1843 bytes .../creation/GrowFromCenterTest.npz | Bin 0 -> 2494 bytes .../creation/GrowFromEdgeTest.npz | Bin 0 -> 2494 bytes .../creation/GrowFromPointTest.npz | Bin 0 -> 2494 bytes .../creation/ShowCreationTest.npz | Bin 0 -> 2494 bytes .../creation/ShrinkToCenterTest.npz | Bin 0 -> 1843 bytes .../creation/SpinInFromNothingTest.npz | Bin 0 -> 2494 bytes .../creation/UncreateTest.npz | Bin 0 -> 1843 bytes .../creation/WriteTest.npz | Bin 0 -> 4512 bytes .../geometry/AnnularSectorTest.npz | Bin 0 -> 3876 bytes .../geometry/AnnulusTest.npz | Bin 0 -> 9050 bytes .../geometry/ArcBetweenPointsTest.npz | Bin 0 -> 3081 bytes .../graphical_units_data/geometry/ArcTest.npz | Bin 0 -> 3008 bytes .../geometry/CircleTest.npz | Bin 0 -> 5938 bytes .../geometry/CoordinatesTest.npz | Bin 0 -> 19757 bytes .../geometry/CurvedArrowTest.npz | Bin 0 -> 3039 bytes .../geometry/CustomDoubleArrowTest.npz | Bin 0 -> 2813 bytes .../graphical_units_data/geometry/DotTest.npz | Bin 0 -> 2001 bytes .../geometry/DoubleArrowTest.npz | Bin 0 -> 2060 bytes .../geometry/Elbowtest.npz | Bin 0 -> 1912 bytes .../geometry/EllipseTest.npz | Bin 0 -> 4577 bytes .../geometry/LineTest.npz | Bin 0 -> 2063 bytes .../geometry/PolygonTest.npz | Bin 0 -> 2833 bytes .../geometry/RectangleTest.npz | Bin 0 -> 2514 bytes .../geometry/RoundedRectangleTest.npz | Bin 0 -> 4320 bytes .../geometry/SectorTest.npz | Bin 0 -> 2574 bytes .../geometry/VectorTest.npz | Bin 0 -> 2097 bytes .../graph/PlotFunctions.npz | Bin 0 -> 14712 bytes .../indication/ApplyWaveTest.npz | Bin 0 -> 2494 bytes .../indication/CircleIndicateTest.npz | Bin 0 -> 2494 bytes .../indication/FlashTest.npz | Bin 0 -> 2494 bytes .../indication/FocusOnTest.npz | Bin 0 -> 2494 bytes .../indication/IndicateTest.npz | Bin 0 -> 2494 bytes .../ShowCreationThenDestructionTest.npz | Bin 0 -> 1843 bytes .../ShowCreationThenFadeOutTest.npz | Bin 0 -> 1843 bytes .../indication/ShowPassingFlashAroundTest.npz | Bin 0 -> 1843 bytes .../indication/ShowPassingFlashTest.npz | Bin 0 -> 1843 bytes .../indication/TurnInsideOutTest.npz | Bin 0 -> 2494 bytes .../indication/WiggleOutThenInTest.npz | Bin 0 -> 2494 bytes .../movements/HomotopyTest.npz | Bin 0 -> 2557 bytes .../movements/MoveAlongPathTest.npz | Bin 0 -> 2043 bytes .../movements/MoveToTest.npz | Bin 0 -> 2503 bytes .../movements/PhaseFlowTest.npz | Bin 0 -> 2762 bytes .../movements/RotateTest.npz | Bin 0 -> 2494 bytes .../movements/ShiftTest.npz | Bin 0 -> 2496 bytes .../sample_scenes/BasicScene.npz | Bin 0 -> 2494 bytes .../sample_scenes/BasicTex.npz | Bin 0 -> 5608 bytes .../sample_scenes/GeometryScene.npz | Bin 0 -> 6902 bytes .../threed/AmbientCameraMoveTest.npz | Bin 0 -> 8658 bytes .../graphical_units_data/threed/AxesTest.npz | Bin 0 -> 5071 bytes .../threed/CameraMoveTest.npz | Bin 0 -> 10372 bytes .../graphical_units_data/threed/CubeTest.npz | Bin 0 -> 3879 bytes .../threed/SphereTest.npz | Bin 0 -> 21714 bytes .../transform/ApplyComplexFunctionTest.npz | Bin 0 -> 2497 bytes .../transform/ApplyFunctionTest.npz | Bin 0 -> 3697 bytes .../transform/ApplyMatrixTest.npz | Bin 0 -> 2432 bytes .../transform/ApplyPointwiseFunctionTest.npz | Bin 0 -> 1843 bytes .../transform/ClockwiseTransformTest.npz | Bin 0 -> 5938 bytes .../CounterclockwiseTransformTest.npz | Bin 0 -> 5938 bytes .../transform/CyclicReplaceTest.npz | Bin 0 -> 6685 bytes .../transform/FadeToColortTest.npz | Bin 0 -> 2505 bytes .../transform/MoveToTargetTest.npz | Bin 0 -> 2466 bytes .../transform/RestoreTest.npz | Bin 0 -> 5938 bytes .../transform/ScaleInPlaceTest.npz | Bin 0 -> 1950 bytes .../transform/ShrinkToCenterTest.npz | Bin 0 -> 1843 bytes .../transform/TransformFromCopyTest.npz | Bin 0 -> 5938 bytes .../transform/TransformTest.npz | Bin 0 -> 5938 bytes .../updaters/UpdaterTest.npz | Bin 0 -> 2713 bytes .../updaters/ValueTrackerTest.npz | Bin 0 -> 1843 bytes .../writing/DarwinTexMobjectTest.npz | Bin 0 -> 6194 bytes .../writing/DarwinTextMobjectTest.npz | Bin 0 -> 4692 bytes .../writing/DarwinTextTest.npz | Bin 0 -> 3904 bytes .../writing/LinuxTexMobjectTest.npz | Bin 0 -> 6208 bytes .../writing/LinuxTextMobjectTest.npz | Bin 0 -> 5038 bytes .../writing/LinuxTextTest.npz | Bin 0 -> 3893 bytes .../writing/WindowsTexMobjectTest.npz | Bin 0 -> 6194 bytes .../writing/WindowsTextMobjectTest.npz | Bin 0 -> 4692 bytes .../writing/WindowsTextTest.npz | Bin 0 -> 3868 bytes .../template_generate_graphical_units_data.py | 18 +++++++++++++ tests/test_renderer.py | 24 ++++++++++++++++++ 86 files changed, 42 insertions(+) create mode 100644 tests/control_data/graphical_units_data/creation/DrawBorderThenFillTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/FadeInFromDownTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/FadeInFromLargeTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/FadeInFromTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/FadeInTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/FadeOutAndShiftTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/FadeOutTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/GrowFromCenterTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/GrowFromEdgeTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/GrowFromPointTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/ShowCreationTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/ShrinkToCenterTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/SpinInFromNothingTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/UncreateTest.npz create mode 100644 tests/control_data/graphical_units_data/creation/WriteTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/AnnularSectorTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/AnnulusTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/ArcBetweenPointsTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/ArcTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/CircleTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/CoordinatesTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/CurvedArrowTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/CustomDoubleArrowTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/DotTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/DoubleArrowTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/Elbowtest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/EllipseTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/LineTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/PolygonTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/RectangleTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/RoundedRectangleTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/SectorTest.npz create mode 100644 tests/control_data/graphical_units_data/geometry/VectorTest.npz create mode 100644 tests/control_data/graphical_units_data/graph/PlotFunctions.npz create mode 100644 tests/control_data/graphical_units_data/indication/ApplyWaveTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/CircleIndicateTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/FlashTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/FocusOnTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/IndicateTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/ShowCreationThenDestructionTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/ShowCreationThenFadeOutTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/ShowPassingFlashAroundTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/ShowPassingFlashTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/TurnInsideOutTest.npz create mode 100644 tests/control_data/graphical_units_data/indication/WiggleOutThenInTest.npz create mode 100644 tests/control_data/graphical_units_data/movements/HomotopyTest.npz create mode 100644 tests/control_data/graphical_units_data/movements/MoveAlongPathTest.npz create mode 100644 tests/control_data/graphical_units_data/movements/MoveToTest.npz create mode 100644 tests/control_data/graphical_units_data/movements/PhaseFlowTest.npz create mode 100644 tests/control_data/graphical_units_data/movements/RotateTest.npz create mode 100644 tests/control_data/graphical_units_data/movements/ShiftTest.npz create mode 100644 tests/control_data/graphical_units_data/sample_scenes/BasicScene.npz create mode 100644 tests/control_data/graphical_units_data/sample_scenes/BasicTex.npz create mode 100644 tests/control_data/graphical_units_data/sample_scenes/GeometryScene.npz create mode 100644 tests/control_data/graphical_units_data/threed/AmbientCameraMoveTest.npz create mode 100644 tests/control_data/graphical_units_data/threed/AxesTest.npz create mode 100644 tests/control_data/graphical_units_data/threed/CameraMoveTest.npz create mode 100644 tests/control_data/graphical_units_data/threed/CubeTest.npz create mode 100644 tests/control_data/graphical_units_data/threed/SphereTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/ApplyComplexFunctionTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/ApplyFunctionTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/ApplyMatrixTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/ApplyPointwiseFunctionTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/ClockwiseTransformTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/CounterclockwiseTransformTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/CyclicReplaceTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/FadeToColortTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/MoveToTargetTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/RestoreTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/ScaleInPlaceTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/ShrinkToCenterTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/TransformFromCopyTest.npz create mode 100644 tests/control_data/graphical_units_data/transform/TransformTest.npz create mode 100644 tests/control_data/graphical_units_data/updaters/UpdaterTest.npz create mode 100644 tests/control_data/graphical_units_data/updaters/ValueTrackerTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/DarwinTexMobjectTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/DarwinTextMobjectTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/DarwinTextTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/LinuxTexMobjectTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/LinuxTextMobjectTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/LinuxTextTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/WindowsTexMobjectTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/WindowsTextMobjectTest.npz create mode 100644 tests/control_data/graphical_units_data/writing/WindowsTextTest.npz create mode 100644 tests/template_generate_graphical_units_data.py create mode 100644 tests/test_renderer.py diff --git a/tests/control_data/graphical_units_data/creation/DrawBorderThenFillTest.npz b/tests/control_data/graphical_units_data/creation/DrawBorderThenFillTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..3cb5150efe769a2df0acc2479d90c54855879de0 GIT binary patch literal 2487 zcmWIWW@Zs#U|`??Vnv4UWwmcqIT;ulSS1&1mjXUqDSE9_)A=^@xVJ8+kaiAcx^B{vZb$Fc>U5v<&1AB8mJ zrWKu^?Dw($cYX2y%D<0S%h&yS^x^u$!#~g7J*@xz`FsE8{q=R#`>f{H*OveP_wU== z^Y7o?zhirM|DL~pAHKW%_i+C9`a88&^`(Cw&0c-E`~AB0e%IsU=l-+%`@Oc(LPm}e z;-*n@Gz6#+0uTO|*vQH2Pv>Uz&;NVpKQ9A=ox8cYdH=N=m!s{!*E2IToS(Svl}|V$ z!-2L@dNdqH)4`C<2gg2E)a;4TW3k!$wfMg|70QlLBSu328Uj`SSOdHnnM9azHM0;Q a)c|h5pfTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8O?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/creation/FadeOutTest.npz b/tests/control_data/graphical_units_data/creation/FadeOutTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..f8eb0c53bff6a6400e391731be2b7f2d50a82338 GIT binary patch literal 1843 zcmWIWW@Zs#U|`??Vnv2kYYX--WMg1xV3lOxV-R6TD@x2wjZaA|Nz}_LsAOai0LuWC zGJsTpz}piW`3?p!v_8!KDpI~%Mb<+r)25*}f=4ZLOOn8nqfN^{9Jrz^k#pa3-@`xa zk7n(Q`F=?EPH^b<+iJeaRWZjkyEDtP^n5Gt%$c?7-?zxhjMwY7|NazHUOz#6v5wee zo9>?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/creation/GrowFromCenterTest.npz b/tests/control_data/graphical_units_data/creation/GrowFromCenterTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..85ee31861443ab5891d89894be73b6e9952e4bdd GIT binary patch literal 2494 zcmWIWW@Zs#U|`??Vnv2L)Be*soD2*Ntdb0T3?d9^MTxno@hOQViF$bjm5dAmU>TrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8O?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/creation/SpinInFromNothingTest.npz b/tests/control_data/graphical_units_data/creation/SpinInFromNothingTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..85ee31861443ab5891d89894be73b6e9952e4bdd GIT binary patch literal 2494 zcmWIWW@Zs#U|`??Vnv2L)Be*soD2*Ntdb0T3?d9^MTxno@hOQViF$bjm5dAmU>TrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8O?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/creation/WriteTest.npz b/tests/control_data/graphical_units_data/creation/WriteTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..6e81913d02b1b55b5625fdc1cde1ad557cd5d4ee GIT binary patch literal 4512 zcmeHL`!`$J9#3x{W~!x~QZ34=-i~P%qlBsF%(R$RhY~?OOInX;YKTXPM`t=y>Uj+v z>e-?XNdzTGBgx!qP$Z#5h>-C}Qi(_-NQiKc&YgSL{o(!vGv};x&R+ZMwf5)x+27CS ze9yk(wsV&j2n6~FxQ>JF6r4)ZI0ypW*?knG0n!46$Auzpgj^4e4>h~>UGfglfe&wh zp`h(i+lP2EDHqCQt6kF~Hs86XHgv)BpY%*t&VKKvu&=P5=XZ&qT8`>9-MB)(nr>b2 zXF(Kgt0BnS@IuZUQUZn)6dJR3UeyQMeAtebYqg%(*Go)t{&uVy*X zhCQ5u9LqJGHkzKOl*{u))iE0(?}W-7pgTVm2I9Xf!hk@JL~o$#HiW$((95d-bTRv( zlf)$RJ(>oA3oQ&ssu^)%sYK?}7);7OmN@qKh(k)eMcC`CFecO&VY?~mgJQ5RE?J~1 z-ltA6eF7T#t7H7)-ki*7Xk(*Ot4_G)pRt~d9}XLG)=~BMWTEzwP;$CTy$th9P~v#l z;G?g2;F}cHD)nst8OUls6a*SfMj)AE&9EGXqY@iAQI*Vp_~KSb3k*SC<5N!**n4ek zDkWg$=9-|ITIAt)^(KM$OM+Z<6UR=RK=jY{B(tlM*sW32rqC|7Sk`CKSPXMqn=85} zM{cR)0+@3!#wHwSForJDs`k;Ep;#NvcU_4+L8($|bbjpgPdcL{Nk9wV(XZpAT1+Z3oa$&qqf}QS#@Wwb>_s@vHH>Ug(?+K&9LUAjwvH zgAoM>WmgIx)}+a3Hay8jj%k}8!Ssa-HYkUytW~W}#EAI`{xqmk+#XU@yDr2uX7AMa z;?cnQW>Y#vLRO9rkdDRm9#7`_9V%geY+Nz8SQVy$We2CsKS_kmOnJEwR@u?W3`Uhh z&efK1URq=4QeRwN7~5cc`EjN}--Kb>@=&7aZxGz2@x=Azd8$G>+kXz%dnxKzNK0VC zWCDwa!Z2-Nzt3}bY{J7ddZX0odIP?*Lu#Gczys!l(G zva#gWJRV-obnr+WwrR*j0qGUphW{BeQ|7p-n5}TwqoMC7?-Vt(2TN6QZpkcpW2wKw z)yVScTAi9ehxldp$walVW6Ecy&3PNTKAQFn9GsoJ5wq3nhOz|mS=bUp5 z9o&?jsA7zf=ChU3!Y(g*gFli6jviI(+s^$mIIhep%Bw3jiWJZ)e2F)08#9vk5HHZ^ z;2V9#_SP@Fg)t|6#Xx2fC_}oWxm-(nFARh9@eN5!7?;Z!PC9PpqxypMEZg4CrP~$iL1 zVYFG(c8=HP#=59cU}3>3_D3H-n8;0&b245Zbd6VR3|Cxjg*zyVF=68CEh;@8`nHFe zKS}-y9p-3C(lhqm0s1of@G|k&yg24$5;v&zZCFsKt&0gkDD5#cSI(%O?ItihoK&s) zhWHhqXzjW%NNklWNB|^WvZ>C8kvnSJnZr)7)tgC^9Gl3B`WzCLXY4oN+(LE8hKy z%y#}r!yMY%!#s}m11AETi7Bx}KRlJ@s<^A^_?a@_R``5L!1N7qU>(aXyE{}OEOKpl zEtI0UEw+l^?%H+Yfb_8{C}11ZJMqxHcWJ9J#Tc(N<=E5^xUTv41!y6lU*hsZzy~-vNj??*G6VZKmo5J=A+Ci0=XAsp zwt7z#+)TlJk$$~IVeJi82gLcQdqt^I&W>(;Dws?bRLaKG%{m@Ut}cr?^^j+WGY!*k zugRZJ2Om2G{;Y;-Q|*$ke|6J=-&Et1oDewIYSpgI&4nihNf&)a_F+q^ZObuUs_xz* zlg7@tE|r?5K}B`m2S1#@iOXK!A4NVPw5^jYjTQ-=E?~&0kxRJj=x^3e!ac1p$vWI; zmk{NMwy1W88?6d5v`mdS|Fj(5U3W&?G|iac`E8cM(YMvF)~`|qk6wN^v{s5>u*L(S z4d)F-mU`k08kp6)t^bRaH0X5O#4XGlwH5NX7FhPyzq1#_ESmuq^?>Xv=H)Bq0aP1; zS59($3d~4ZXB{)uxx|3yQJMfh5^R+E+ZUxU;1ZIY4y!S6Athw%AzD2*>Ch2B!_TjM zNn54!(F&U^14{Rf;^=7*n6t4J%O0m(P< z_ne`4_te(?)?<&RrMEh!@7bFzK?aVBf#7)UKh4_t&8x7Hu7+vxM3r4R=4-4p=d!jb zpFTsRSx63xKAm-FR5qgCU&0u%84> zYvT}uWkn~(OxNU?_03|q^=Ndu-WniEL`vu4BvA+Q^m6?}P58vj#MOH8wSWv)+}`u| z_Pt3MnP}@xENt;=xUgLW`C9^2%vs2f1`a7!`Zn?J2JLa4$A0vK=}1;MsWKW*xAh#7 zuVooQKSTLgA1_T=5kiwFrAe21rfw0%@HQ$3!aghuTUjkw*OZ!a?G`&~2QGN38@=$s zdgPXAHxxPl5k?3o|&&M)y$k5g4j7^DtLE9WdCwHMA8sarA1$gPyD{^&r*OzyA#X zR3-Ia!T#wPxRbBax#G6tZ(2M5-+sz}DY~;`yZyhrD_7ih@7eC%0i5>0)BS^v{sn$G BX=VTb literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/AnnularSectorTest.npz b/tests/control_data/graphical_units_data/geometry/AnnularSectorTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..cb6ef9cab2cb795666428c11b85cd69e30755de3 GIT binary patch literal 3876 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 M@c;Kv@(A+30QryU*Z=?k literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/ArcBetweenPointsTest.npz b/tests/control_data/graphical_units_data/geometry/ArcBetweenPointsTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..383926737d3f213cd7657ee0b216ef2afac5fe4b GIT binary patch literal 3081 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 b{zL!gd-r9lt=q(Rw}2n;575BoH}C%d&VYDl literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/CoordinatesTest.npz b/tests/control_data/graphical_units_data/geometry/CoordinatesTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..94b122d26a478f779defb1952f22c17a64c19e1f GIT binary patch literal 19757 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/CurvedArrowTest.npz b/tests/control_data/graphical_units_data/geometry/CurvedArrowTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..75ce061e1b771fe083fa052eaedc4a81af6293d0 GIT binary patch literal 3039 zcmeHJX;4#F6n=3oz!j2v$*-|4 zqpid03x?7;=6}2u zr?ySU*Zs~GwY&D$wi^2rv$|3YHTJj)FtSSGa|VjTt}!H&XfWDF7<>wOkANS+_4E^h zIkB?~tlg{nQ%wwpvf(CNn#Gw=;g};0KB1HBAkIKE2qCLZH!T_hNrjU91sk*vB3i1f0y*grMHe zWDx>)+VM+ZU0Hngq&Y|hf|4ItCLq>KzJYmV>mX=|Uc6>n9g9F^DW;Arv>=9AAR|7A zP;L517lK~g!+9$G=S7wA$`Ibm)S|D#0gOpBH(wcl>9?q1W_$pc$$hG{^l+{XF%Ox^ zV@$g2xKSjnQvm6CU|=1Va?cV?3@i>_&S@(~r`bn!C(qi$kz71(bOJ=Ry3abz{!E%v zU0q%K*yE>jO{x%d$ELizTyRDx5Ns_iEnPF2o0|*HAOZtnSUoud22P2WB&-)qCbNB7 zPT|SW&`=4B+t=5p95)J|1m;qtvawEfIH1Ixnv;|BuCsGzBZ8ASmhQ3{f{rwgc5&>f zj4M~J)IN*pSEex@o^C}Vk-1fJ5oFFFvd6U8qIZT_Sa?G@$;Q^!%^CrGes5^_QDMq7 zLsi?fAo6?}YpG{P+Hxt(ni>~{f*XK>9%M^2ZJ1ecxod|)K;wp{rVN>1URzz-X4l~0 z;86<5lzCxwWtmcBiZePZN>Ys9{A?m#UYrwn0r}x;6Zw4pLxiBC!(gx1{VmwNfD2=X z=-wleMJ|;}RRU-z4SjnwDk{px4^IL3(KF`14)FaKHpdj`jXgK%lGnEARoIlLsjJkt^!rJ9M?-hjvwSIM&v} zjAYOj=o)skSeffhJl@}KlA#R2^FC`h@4W!Xlp zjAcA5rMeO5w4(%53N2h7an4x^h@}*PmdHTlWw8b8r95_ue{5Oy*OKio&dojdpb`_sc!>NSvJ$0ALrq-9eHV9m(7cK#BbU-~gP!*$b?!Pnn;va#`Nl=L>9rO*3I?!{9=;!xcwoaj8goTAwHopPDjW{>*rEmEm zjUtg3(*=Nc#ZNt9(Ot-OhT|XwEUg=^DfR%+uS#qII7Ur?nfrac7>ZU7#le2&-@~J5 zG@9c4<5KIwy8`p(8Dn~VjKyM^dwl1sxuJS$beve@$vgr;&wKYR3=)a-xw%Rhili@(lT~F;v{wWN2bX19o$bl2_D(4rrxH>-Kk)MM%3!g6NdM{h7OGGrc2?he^5iUE zAQ*;=^`teUXh?s5zjL&-qoa1ei;Mc3eIA=;6PDW3(9j@lYcn@*{9IR8H>_62VtmM+ zn310^OaGC_;}Ly)mWQ-^931vvj(-7TS~B=(boBId6(jrB@At|P<0{4v$jaMTTUBat z06d7mu9U5R#^^FPcXx-9Y5F#$*)BUP%b6XIdc(=__tQ>I=NRtbuH`{%MpiLIxjQiGfssivx9} zgo(C*(9lU~5L_}z6+|W{V{1^p!&s$P0)LY{tWrh!rU^UdSFM>UEkyMzl5@m^cLmi1 zrlg1ik*_bUW2SJNPRO zH4NZ~R4VlqsG+5$WhzJvEzVsWZJ~8hLL*z{@-wQO=TmpLy`+CBm&>Qzx+darINTvl zie9ADPWzHbNmwuxe(RxLFMKjP%cUsICOjU`Sw7B{NF>tE&g3G0L#(cg(@|4Dp9hhQ ztlV5_yNFO;B%4$!BN9)aK2}T$?CYkrZs!TLSg1r1h%+c>V~7WNQkg7%F&qswW@6~X z8Ek@ktD68*h*f1UzwPE0vs#GK#TvdbDFIH|X*&-5_YSz?5ga|z#?}ev1j+vCu==Nl b5?JWqZ%0>pq&+NQ0BqnzhEFm4VFB<5HKu~J literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/DotTest.npz b/tests/control_data/graphical_units_data/geometry/DotTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..5a02949626a042fc8755d35da6a2676d002320fd GIT binary patch literal 2001 zcmWIWW@Zs#U|`??Vnv3p(YG7y*%=rbSS1zuUrg|DDcxi>EKS`!aU<$-+5%>}1uhTI_tetUvSh zzg4rhSu56G+V#3r?B~7Q*9$lQxWD=;|Ej{jE5drSe_#Ef`>*zmTi_H%h+{^{(GVEv zA#fmQY0$~G!--~d{WhOW`SdeZZ+h{1ZU%-2_8DfgZ`RnI4^w_3)$8`|D=^Q9M9v6a z`+DWRZ(+~EfZ;Z~*KKjH?NuYTX2*A>OhD<-8%uAAJ^pC%-3q9<%PXFhf#HMs!*}<$ zz4-on=XFj7hJcWVYDdeZ z(7wNvogl?|kV5eRL7 JbUnCA1_04)s@4Di literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/DoubleArrowTest.npz b/tests/control_data/graphical_units_data/geometry/DoubleArrowTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..1a1c711ca3d35a84c4d7e954ff52ed881f828b7b GIT binary patch literal 2060 zcmWIWW@Zs#U|`??Vnv3ix4(8)u`@695F>0NeLK9+a$W0UGyt20uWWyTVAeAVBl zH$N=>pZ#}9x%sR5b^UqO{D05C-y8OO!NhI-QN3HX-uJkF>1(>V=OjspTSm#z5ExM* zFlFlV%BR%@Yzzz!>|d2wZT?tcGuvO&vm6KsK&wQS6azq)kw7hoB*VP$Hq zXm$8YO$G*qDXz7m*&|hMDveU$Mt>wJLP=vzlycRQ$HQ9s+!q$^=?&E-~Qj-4>RS= zfB!73kTZWjxvVg3sq6Kym9}dyrQfRU>t6H&YCXgeqvU7^4CfGN_`f7`*4(M7JHPK{ zWMJSs8o%uIuD$np85jyQN<>^-y3KFqX!?)&gc=hFDex27$$^fkH`O zH9hN?7#KP(g47u9;$mP>a0>^Tb>sy|u>?r*C>RZa(Gb8A0y&S_1H2iTM3`~alL$Qx bz%0dpR%-@$vw|xtMg~R(8=$NjJ4g)xTb6o< literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/EllipseTest.npz b/tests/control_data/graphical_units_data/geometry/EllipseTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..e03a18dcd5af42ca563e68e77defeaa5d29ece86 GIT binary patch literal 4577 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/LineTest.npz b/tests/control_data/graphical_units_data/geometry/LineTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..c00ad5f58cea796606f6a7c93bec8c4e8e91f00b GIT binary patch literal 2063 zcmWIWW@Zs#U|`??Vnv3WrL(1L*%=rbSS1qX8LpR|_EW(l!a(9k)%bfvF}|qv`Vlk@xHKe%r>@{xAFc*!gS3-^{enU(bhr-kSH%t|qUobaTYIy7kM- z%}-y=xp!ZG`S#a8AMX2Sx_7?(KY4fY=ZAkiI-L>GZ^!$({_E}gk)ffi5Z8>7gCGPR zgx=nky7}gmg9!y+bb;pr^Z&G+AzN@Fu`e|u343_!oY`(d-V20>C7b;4)} vjD`SBLf}Wd4Re4uBa;X-uId|MZ3D1?Wk9RU1H4(;K%$I5Xal78f-7_YWPr!4 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/PolygonTest.npz b/tests/control_data/graphical_units_data/geometry/PolygonTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..ed0f2ec9c4fb9ab519983c31717e555d10888eb5 GIT binary patch literal 2833 zcmeH}i%(Nm9LEnhaMNWtp)dmzmMmFTQFMZkiNc}|g>;n1ZKs!t$XJF@K%^ETN{x>g z6jM<0;a*^SETmlKlZ&xJ_?+&+q&DoZtDL zM=sxQ*&8+hfH&dy0}zt@)9sWM0LU!XfOmim_&PpJ91;3eSVGu_n7AY}unI?@6d)D4 z#&lj$A4Y)RCbAE{yUp3PtnOstnN?QTTFQ4m<)o(BUQ7J;oM3fD9p_+rjkVfKu|-e? z{6bHrN!Qx`Ajq+FPG0|XoBz4)=$Yn*(T2N8IsW}SzWe<}Lt*cap+~Dzq702H{Z{wc z=Q_K`ozfYvF1o6RHvQQ#`FLIBGb`!r_HM0d&e&UN*g7y5rF9$|*LhW?gufbUGU~7F z*Cxi?R25YzHFSB2<`p9}8V1VB%FIdG|E+sg+7T;HkI7@OY7hC4V>RDdloUBMYX(4^ zK-6b^P?|X1eo4O^fQNf+l#C+Oq@keH?TliiS8r;;{~KJKIkeO&fdhay&xg*;heqVR z7(PxtfD@UUV^a7EAuf1xDfOHS=l_tUiYu}JfWQB>V7gxFHH;cl)0K?$gt7d~5K$+B za;9P_m*g4Vrs~oga`?<0)-z3^$$^-(v6NDWV|d9U1=pb!B|Lju%M2dI-1QP+}cV1UA-YEHkdyG6a1@{r2re(}g#>So-3hwsLao9Cdz5-{&MJSm$4;&7@ z!~$<;_A-Ov5(NA>LPdbt!4dM*3=I4zxSIgu?v4mJSFWSNO+gYCc=c17O3p#%oEwRz zPGXm;DfJ&CX#71il?&xE9q%4&GQcLMBdx3|e#@AE(|i?$FYwAK3pDaN%9^G;GZ5sH z_8I{Pnds!h6H^l*ILr@P1iF?{>Pck0(`H@_={8<71%Y=k(6y2U?y`r#0t{@aWr54Z z5U9gIZ<+UK2?+$Dm*eF(UlFI)sB zK%fCvxJk4K)J#JluJCliB2c~XOJI>?wm(ijzo2c(e^qnd1()&Gy)MR9*m=HDJ3A=( zb=K#Yf8&A#TAvqgJ1*asIOJROa?)|)GA%VZZwTqjdTD?$zOa+dyaj6uggxE71Fda? zWke#I++Y!xQH23QR?^l^B*Bs*BB4alM6y@QN}vIR0^PwB3G@b0>OP~1B>qVUk%W}6 z6gx4Y)a_|yC2(FaMF%GhQ{3T{VM;&{D`{(EDQ+x9$YUwpC9DK47eaw+2~(tSB_T?# z2?xMPEPm|g|E%y0f_uV&AwpR=rQ-77hCu5VA;1?*F-FKPG6d0IQcQaBP>d4E*>!C4 zKs}KhDA_|K?};@;Qfsdwl!;m~?)gA*0Fh)xli`5+HA*6hKT9OJ6^}@9-@BKR$f0=^ z(`V>(g}cw&VsfRQx}*10S3vAS;_a@A<1QwLDwq8H<^>blbK~$dIdK$DrYwG5FT^8Z z>~#!IO*%!o&byT&*91d#`&5c$ZnJS2I<&rFo8GT1sDEvO*0fnGu_Ju{E+*eNRgRWS zUgUJ`dSny7bw@_F%i8j((S~uDzH}`)u;jr1!U37*!b-lMnYqofe|v%bdzdnKOn`s9 V&hq^%EK#c&{CL9OYIynr@E89cksAO2 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/RectangleTest.npz b/tests/control_data/graphical_units_data/geometry/RectangleTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..735e00cf457344be01d2f5d4d97c9614874de504 GIT binary patch literal 2514 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/geometry/VectorTest.npz b/tests/control_data/graphical_units_data/geometry/VectorTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..c8b465dbf328a6bfb5408859ed19d37fb1427bf8 GIT binary patch literal 2097 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 NFFWw(erxr={u>Gfkdy!b literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/indication/ApplyWaveTest.npz b/tests/control_data/graphical_units_data/indication/ApplyWaveTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..85ee31861443ab5891d89894be73b6e9952e4bdd GIT binary patch literal 2494 zcmWIWW@Zs#U|`??Vnv2L)Be*soD2*Ntdb0T3?d9^MTxno@hOQViF$bjm5dAmU>TrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8O?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/indication/ShowCreationThenFadeOutTest.npz b/tests/control_data/graphical_units_data/indication/ShowCreationThenFadeOutTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..f8eb0c53bff6a6400e391731be2b7f2d50a82338 GIT binary patch literal 1843 zcmWIWW@Zs#U|`??Vnv2kYYX--WMg1xV3lOxV-R6TD@x2wjZaA|Nz}_LsAOai0LuWC zGJsTpz}piW`3?p!v_8!KDpI~%Mb<+r)25*}f=4ZLOOn8nqfN^{9Jrz^k#pa3-@`xa zk7n(Q`F=?EPH^b<+iJeaRWZjkyEDtP^n5Gt%$c?7-?zxhjMwY7|NazHUOz#6v5wee zo9>?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/indication/ShowPassingFlashAroundTest.npz b/tests/control_data/graphical_units_data/indication/ShowPassingFlashAroundTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..f8eb0c53bff6a6400e391731be2b7f2d50a82338 GIT binary patch literal 1843 zcmWIWW@Zs#U|`??Vnv2kYYX--WMg1xV3lOxV-R6TD@x2wjZaA|Nz}_LsAOai0LuWC zGJsTpz}piW`3?p!v_8!KDpI~%Mb<+r)25*}f=4ZLOOn8nqfN^{9Jrz^k#pa3-@`xa zk7n(Q`F=?EPH^b<+iJeaRWZjkyEDtP^n5Gt%$c?7-?zxhjMwY7|NazHUOz#6v5wee zo9>?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/indication/ShowPassingFlashTest.npz b/tests/control_data/graphical_units_data/indication/ShowPassingFlashTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..f8eb0c53bff6a6400e391731be2b7f2d50a82338 GIT binary patch literal 1843 zcmWIWW@Zs#U|`??Vnv2kYYX--WMg1xV3lOxV-R6TD@x2wjZaA|Nz}_LsAOai0LuWC zGJsTpz}piW`3?p!v_8!KDpI~%Mb<+r)25*}f=4ZLOOn8nqfN^{9Jrz^k#pa3-@`xa zk7n(Q`F=?EPH^b<+iJeaRWZjkyEDtP^n5Gt%$c?7-?zxhjMwY7|NazHUOz#6v5wee zo9>?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/indication/TurnInsideOutTest.npz b/tests/control_data/graphical_units_data/indication/TurnInsideOutTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..85ee31861443ab5891d89894be73b6e9952e4bdd GIT binary patch literal 2494 zcmWIWW@Zs#U|`??Vnv2L)Be*soD2*Ntdb0T3?d9^MTxno@hOQViF$bjm5dAmU>TrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8OTrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8O{&o5r>U z3ltOIXQo(t8OXW!pPz1X^v~5ZHT9qWRs8#Ovpc+8EnY1?z52I%K3}^3vd#JP<Fq!a=-U6GB_-rJ9qBE zKk}RJeZBFWmw`bl_Wi2KlP4$I&A)#mX=4J*_L~>0mha+XVA!;-{A!Mw^xxVad#_nv z4P{`MuypmVms$)ACoYHHEfHm4c=B>p9!TM*l2G$lRtAR3U8`oVV`6BqiM{F@4zy_A zx>w6qGcYLlhnHRkX@$z`pcL6zkPPZ z`w&nTy!LgS(cQ(MOqg6;TpXb{{r{5Fr%xwtjrtq-{Q2|6_21V=y{~%nn~jRa&!|x& tIs`uG|KberW@Hj!#?@Fu1WyAah>hBG3-D$Ir$$BwMg|+8>}qiH4FGy=CyD?7 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/movements/MoveAlongPathTest.npz b/tests/control_data/graphical_units_data/movements/MoveAlongPathTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..f326c7640cab46b0dd1b696f252335c9471ac24c GIT binary patch literal 2043 zcmWIWW@Zs#U|`??Vnv3i)x~!**%=rbSS1>LxB7cXehp%VRER%ig)%|wKZX@4QBc{?Tz!F$IZa-K&E8(-2w}l zL+dx+fA75fvgbU028IP^9@VdU{PD+azpuq*yJJ^e%{p1k#K15mbkFbdtYeQ0Kg|I; zC3S1udjEH!-A9!w{eZb_QvF%ES0PN z|Ih69TeA?YsZT5!85mCKl&w5|Z@>N9khf*lm3BZAiUoFGNq&F7#_s>ed0O}Wt`1v$ zvKXjv6pV(zXb23O5cs2?#~9$v$RxsytExtLwE>*{Q7i5MZ&o&t3PvEb0n#hMl{WzH Cgv2%g literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/movements/MoveToTest.npz b/tests/control_data/graphical_units_data/movements/MoveToTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..50f3af687267b57f637f554c3d984b8809dd5cbd GIT binary patch literal 2503 zcmWIWW@Zs#U|`??Vnv4e)eN6aIT;ulSS1%$#s9@Fz8ou+G~1OzQC)N|5g6K7XcIO-;I#A}t_tMwn)k6+VV z{UGzf6Uz?={=O?|&#!#=FK%Du*I#cJAN+o>|K-h!O7e|~&<^YYCnZ+^baDf*RS_S5v|cV719gJKXD zjgkW#0uL_qxGjGB^QR^IgC9RC-hbz1V30cd{PSAbV|x1f-|Ox(Ff5q3&T7s}Ee3`Y zH{Py#TC~&F(sJR6q>UFs85jh%-46YJ{`Wt*f9pS1tXa*#px_f;dKoA&VfpG^U@ezJ z@0N%%Fg$s=DsLAT1H-41Q1e(;28POAt7flbVra05z3Lmz$lx$<-K%9F?f#?MM}rQS z(ngaF#aZTU+10GAzp9rVKYFwkl+`xeUAO5SI8R;(Z8rvGLdnAq3*P@<_0gcOukRZu zr;mcs5Eu;sZV&B!FejH}s&P~E@?Vxu;~0=!w-K%$I5Xal56!3{A0Ve1*e literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/movements/PhaseFlowTest.npz b/tests/control_data/graphical_units_data/movements/PhaseFlowTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..2d84c60a7896f573bb81fa7380c49afbc984bc7a GIT binary patch literal 2762 zcmWIWW@Zs#U|`??Vnv4k{k<0~xEL53SS1#7!dS5{vcGV~4z&gf|Mf3vCTte~7!Uc+DlP zeJu0W@P~bT|EfLTod1pe{vWSC>+i37|LA)6eZTy7a{Kn$*H+p5{dfBK^3{)D?%w|0 z{{H=cKhEC%ZC?KT^ZC5`iXGME|33VE>tFtUpMAyGUyD~ie(fI@D;r;1QTpfckMqy} zc6WEXL)ct2=e`0Jr&YH? zm)U{}RI`$+rzK-q85pG74?ldrJ?YEb^1pY!^NxV}YSfG15P0zajedYPBa;X-u9hbv epc)uKY}9sWfHy0!YG+_z1VS4iT>(r~3=9C5%*}8B literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/movements/RotateTest.npz b/tests/control_data/graphical_units_data/movements/RotateTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..85ee31861443ab5891d89894be73b6e9952e4bdd GIT binary patch literal 2494 zcmWIWW@Zs#U|`??Vnv2L)Be*soD2*Ntdb0T3?d9^MTxno@hOQViF$bjm5dAmU>TrN z29PQcczbJOmvEp&+rt~T&dRo!ES}($*m_j$Y{K#z5fPpR%3|HxowrtmKV&^FyLwC0 z{6_ur{Qic^rGEH-KJ@eJtFx!C=gaHt)7{r^zWea+zdvd$|NZz?5~F{dzx=oU@3+g# z%YVQ=XK|6?=vtgxR|!ta@Oe?mDiu|%V%J?;1M2s?u8Zu!wHMGtA4J% zk+pTvi9NxwtPBj1%VSOZ9^d@mUY~t$jLBT(~^l~Tz z!-VClcfAA|a5?mDi6{fZlb5UVc5yK4ycwB9m~pkX5TVq-2x6nQy#l;h*+8O{zwM7_L%N=60&unbTs z14tDJyuG!tD>zW3_2CUJ%};EKXG1*}`m`KWJDafF-WCgF_&?m}Aw=O1G4E8e}O z>GXk9+aGGbTdDWv@}Gjb{Z*eoeZ9>-`Tb=1!*AbxsI#}3&u_oqR(9IwhllU}dtLYY z=iR&i%FO5OzfouP=G}RI`R(y#-|zQ_UH6~%`E~m0r!`+IEdQJS|6OS@)29#OoKbS1 zLtyjGHxsEdR62W&dA_!EHk_}|EO3u ztLw43ue2B#PFTHNl_+uUpZ%Zc$9|=v3=AnRSLN;EVqo}G5^5gH%D_;$Yt`&^ObiV+ zu~&UT2FzRcYT0TA1_l4{(#xR?3=@{G-t`h>&gIa%B|z;@MzxOy-Dt9*MwZ!gdEKoX zv*W8*Yj^cnUj^m0(p#a+szJFd<;AMglAzovdHLm+H~Ck8*dL3X|9cm0-+6%&I7l=0CHjnvj6}9 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/sample_scenes/BasicScene.npz b/tests/control_data/graphical_units_data/sample_scenes/BasicScene.npz new file mode 100644 index 0000000000000000000000000000000000000000..85ee31861443ab5891d89894be73b6e9952e4bdd GIT binary patch literal 2494 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/sample_scenes/GeometryScene.npz b/tests/control_data/graphical_units_data/sample_scenes/GeometryScene.npz new file mode 100644 index 0000000000000000000000000000000000000000..6b2241107edceeb86a689a1c888264f8f3131e5d GIT binary patch literal 6902 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/threed/AxesTest.npz b/tests/control_data/graphical_units_data/threed/AxesTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..49df37b47d7550689ff36987c1e3f6ba522e2b24 GIT binary patch literal 5071 zcmb_g3s93+7XHOWJ8HEvKmk$cj#H_y5?_c&A+=qx8qgwyR53)0Jd_e%0VDxp*IlfY zVif^F2%qLl9_yR$K4EqPMTUn%OP_pB<4s&Fy`nH+z}^iRN?~YqlqVA zDrB5x{HWSm&iTa^@S+jDo@SA0XFTn8{Gtwt4mMA<%3d0jmcDYMkD0TR{7{;QS-!P* zNKf;F2mkC`>3qku)9IPXXLky(eqdr^qK+Pc*L}{-z&%uN@wS7TlPSqLoC|hZs&X)b zUAe#4<6(axv1;JLW4e0Pfb{g3puYC8nxjZBB<5_?aL41s^<&mwvBvc2Jx*tE<7tP#

&75sz# zOXD89(ziYPapPW(kuI!nruK!tTn4-=Pbdo&sN<0bSnewz=-!oS&IZeE4u}-~<>mgq z%c7$86rC#92#Bz~v-teYk(hQjq%QA38=<#~S&Ajt0*vkOt@EJ;R&%T~S{s-}T4r(u7%h)z=&!QL}%k+Tdplk?-nR+gBgXpl1au@uQ5 zaET^kFS#+|Mv23@V+1U)l~QPgMhtINY>m}fOPG4A-+^<|NJ60Tkqg*@@~%!zeYuU? zm=Es_w-XpW_>1VOCq_3+3q+@!zl8afRefL+qH_~X>Zk_QODr4zt%8+sbV`?mDxZdT!|K)Z=(AV{y# zW6f_ZWz@yCC$9K6M+kt44PmLNsgw_Gwl>X$R)GV$GWH#RU#!`%zaVAw*qa?NFS;@U z#5Uzc$HABUVr^?n-->Phb}oqVJ*XTMz!|UQmJ_G%e^}H@lz<%e+C?r%!N)y4a+>L} z80r&Up`KL8OUNWj^UVXk>(OjK%mT=r3~t`Q2}Kwpx)B9^0n8rWJ{p8lI6_xMIExLd zy_=AuOBM;VA`B*ZxGg~|z)H$iEkhlO-pM2ktHqcOR|;pS^;Xa>)sJh^!;(pXZo1#f zsI&l9bGpZ-e|X!2+@f%jvJ4T&6}WH4L$ojr-uVe7v%RCTI-b zwK~pE+t0H@8Ii^edveui;Qk6Y2S2VK4wsP#*yn>9ap7s(gH<|pr8C#kI=qy=l8M(U zN1bah9n7W69MD38SJic@xS%8(htzG>UZ5W*76&#URe~m1aRXAqiexAp zu0DVMd~$p5;cZqtuBu$ZMl%op`mc?I`}gmgd4#B2D;Do`HT+<>jPb;oa4d1fvOsE7&H=lLfMwS;PUm%eUsv`y?fzkB$y zRYc)hTfDqb-%i#X_3iHc-htmw#!F-NmXtgR6lX8CON!zSTlWIMe}6Nn*Xw$cK_|Xk z6K3h`b2ouU0M_i=qy+wq=@GaW;Q_NVh z%Grl>HWv@@NVRbEe}FDx9R3Hoh>8<-4L?D$_n;IG=*$G+i}(g4dr7fP??R2o7k|9m zJEaety!DBUZ2__eK@WHWQcHv4U?0jyoJ6!sDV~e~pF7xxnohQbu7_>0!CgKhm8PX& zO2_u+Z<#Q@bXnu6SLuqFnWL7z3I}&nXw_%k%%@?fMD!vr%ZxZ=g{PpQ2%$BHqVCB7 zdF9@qYRsW}NA{9S>4v9B{1Qm+Y~;csaX9hpcdJkIASR+C6adoO_@?9xL zO3q`U~ zG(W8eLi3%gGf{yp5jS2EJ6l-Jrm+WyOZD+tjsU$3Mz%puBB6l~jhYL7I}^C^~YZ7)cKR z>Tp(3IDUcnYI@;`sQRojEm16>YS=}oRmOH1>E-F@-hRBL`Q z)(>uY5%hNG0=({n>-{D=a$Q2#`CaL^fPw;AYpScY&)-Ydk+|@cD$1Fm8Ckj061}CG z#%dQ&PvGCPa&G-g8BjS&fF$}f4f^f}6*(@Efm$F*rh@40x=RZvx@nFi_SPf-?qYBa z2PfP$TXXmtAl{4^0238UIvZ)`fNC+J#a{X+7if`+QT?#=Pm|aSO>R_dZSu?H-FA0@ u%*R)JgIHim3s|h|{Pw$__j#Xp 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/threed/CubeTest.npz b/tests/control_data/graphical_units_data/threed/CubeTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..859acd741bba14dcb71b3c2db8ff74a0781b000c GIT binary patch literal 3879 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/threed/SphereTest.npz b/tests/control_data/graphical_units_data/threed/SphereTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..85c81c82a9c5b4f4eb64866d89f89ee7a4ce663f GIT binary patch literal 21714 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

%KljPOi$1W;nHJ#6Rq?XY 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 D)Mks- literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/ApplyMatrixTest.npz b/tests/control_data/graphical_units_data/transform/ApplyMatrixTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..8a50b9dc6cc8bc54aa0e397f7b7d99a8a4f76b3e GIT binary patch literal 2432 zcmWIWW@Zs#U|`??Vnv3)$m^BwfXoI~Nd`U!5r(v)#N5>Ql*E!my}W`-Mg{?}3{WWp zNEHaYy}m!|cDO`CV(HsZ4&9)G&Rlvon5rkZnyQw(6fhB)Y*E7DxpB6h=Q^eEtQ`HQ zx?Y~fk~gne5`X`EAbD=)x%n^uetGkK`F`8~iC@mY`1|GQ&7<9)U)I?C{qXMj%X<~S zUcLQ!|M~L#e-+jLKIQEG|N7C*}zIyd)o8h|k z>)Rhcemr;n%W5kdn?1S5^?gf=iZ*>VW<;2?e5Hvf1H*+(Enij!hLTxc!9cmW5GzKd zMnhu+q>b*QkGAP<+k7*p?Q4~-kJ@DR?5$CMm#^Fg%W&7P`+mLQ2Fe%ZOTn3?!2I*i znh3q={g-mgZvXtvOqJ|EYRG5^fJ5N^`TYUjj7%cTxY|pIaB2XiNd~mmQ-C)s8%UH9 M2yKA09w&$g0F@J|WB>pF literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/ApplyPointwiseFunctionTest.npz b/tests/control_data/graphical_units_data/transform/ApplyPointwiseFunctionTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..f8eb0c53bff6a6400e391731be2b7f2d50a82338 GIT binary patch literal 1843 zcmWIWW@Zs#U|`??Vnv2kYYX--WMg1xV3lOxV-R6TD@x2wjZaA|Nz}_LsAOai0LuWC zGJsTpz}piW`3?p!v_8!KDpI~%Mb<+r)25*}f=4ZLOOn8nqfN^{9Jrz^k#pa3-@`xa zk7n(Q`F=?EPH^b<+iJeaRWZjkyEDtP^n5Gt%$c?7-?zxhjMwY7|NazHUOz#6v5wee zo9>?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/ClockwiseTransformTest.npz b/tests/control_data/graphical_units_data/transform/ClockwiseTransformTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..5622807c530cd0ce426513756674ddcc7f00e53c GIT binary patch literal 5938 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 b{zL!gd-r9lt=q(Rw}2n;575BoH}C%d&VYDl literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/CounterclockwiseTransformTest.npz b/tests/control_data/graphical_units_data/transform/CounterclockwiseTransformTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..5622807c530cd0ce426513756674ddcc7f00e53c GIT binary patch literal 5938 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 b{zL!gd-r9lt=q(Rw}2n;575BoH}C%d&VYDl literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/CyclicReplaceTest.npz b/tests/control_data/graphical_units_data/transform/CyclicReplaceTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..0b953aeb82e61feda83d8a57b4340b0480c8fc37 GIT binary patch literal 6685 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/RestoreTest.npz b/tests/control_data/graphical_units_data/transform/RestoreTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..5622807c530cd0ce426513756674ddcc7f00e53c GIT binary patch literal 5938 zcmeHLc{H2p+kQKy%e139)7HLprL|N$Y7aVmx+&T!p+$<4+G!d@LfX+XLraIMJ*u5j z6_iMbkW8z#Dp5r&5xXcs2!dFCPjt@t&iT&y{`>toZ%+PspZ9&9`?>D>y07bbFI!1` zzYl_-9pHZua%BB};<+>g-PXg&sbo5a-N(q z|M`H{!6)9xotKd3%^NI4omY1ZZXG}K^A4+?CtDMbOD1(>8CG)xC$DeYTh(AXSDpO{ zr`m&?5fb{F3{fo`q0Ukq=%w|(r=g0; z7%#iUo_sSE2>RPGPIQUo`inL$#O2)5*LN;?RUt-pj0zvyrM6r`(3jHAw>~}*b4)1+ z3aT73tnNc0qqUto_eVz7PWRK+F%h>9^yY=%?p+D;Wqst=TWSAbQP}ME+%u%h$TxgE zz~{#ly-T|_v?(m903*@s#IdcfQ zS*70i$K-QbxWhx4B96$|H{-Bje;>odn8fOb8Ed9pl~H{>D6d9$z%?)Rgx)QWnHl9w zHeBd*WU5T;3SBHiI@u-2LC~4@%cjTKZImN0!!9sMYS@@|5ot*IOIhrkfKYf`NQlxx zz3=mddtx0JS=wIfP03cJ%qQWBTcCSGI@P6za1{|wVPDfD)QI*&LPQl&!!OOyJ!h$5j#8<|789o`iVm-I$YM-afAu_=srT2!wEtj)}!5Mgv{=l5GWXt zxan89#&%YyZV%fy*4e_n!^lU>n;pg~;PFTIyAlp9p2vr@cT+2h_hNIIh4~i=fy58Y zpPAp$aeen!xvQfcSd#11-n!42vk)}!zD>9AAdVI|`2%-t$dJ0v3f7oD_mX-lcw;{V@nb#}| zV@aeSnXJ_xZ?S3Vh#Ofj1qeE6s^pi3GVh-+4sel?UkKP?r}2@*xqofTOsTe0b;cJq^!13e^8mVU>=vcU}=iZvbDS-{e z`y;y;hs$(rE)aaHd;*D52~zW8^^*v!espDN=?E1N;dCzC;lT{ggp)C7l@VTwc9?J; zcJU8*M6aT%nFW+EEbX=k&wmd=Hbt)}D-R-4Y|-U0ZHIW)!MQ`!zY{_WKPB`hYzvL< ztW4jWPB7dS-8d)%pK9!sICsbNt$Xm?C7Cx;Mb3$j-4vUUcRb|l_0XySRd%e&`)or> zZa5&qkJ^402w%-*>QBaxHuPLn2?2X>o|Sv97N4~iHwjh0uW#Y79pj0GL$X-TP6*m* z%Omq0`#V>=8Rfls@+i1=YKqxj+4@QcsXgFTS|)ww>C9pZKAUt6_ub6b z0RSRrrpX0!s5RRnZ!1DxYb_`C@bKDKc2{1D1gOF+iDr@jwTka)FHBj%?5SVUcsX4@ z!R$D&8S$qN^t;-wB<+5yoFbwoCfEI^8Tk6I8}WWT56SEEJHChR?P~eZmdJnHmqEg; zX~c*uupSX}mukH_+E@4!m+=l!=R}kT7hVy_-+@OPL7|K=bNVXEbTI_?1-j=h0eY!n z!YYXi!nCnwl|}Q%_@8M{>6K`gV{+TmV(k@0+sg}?K0o=ko$8<;1eF|Gf_z_|&}X;6 z&Y`zDnjQxs>62f;s)80cMAd#a$#MpuAq85N<(i zlJ`Gxs;p@J_~z~zC)S@ZDK#N=p@1Y`dz~!iBtTM8{}%*)xl+RIx+P`~mdT#~7|YM7 z*-pf7fo^7|xwxb;@QX>lJ&D}G!oKb=1V%B&%iePi2D+-{AVpV$gjw;Wk~^x>-;7|w zd{J)-O0U#G%j)6V_L^A5Mp%p`U(XaAxLr+JR1i=2E~yfwMBj>B85HnjijIuQxfHH z!KmH#P*vu45L7#qSed@sT@o1qX@|i-nQ>&^zM>e3Q*>+_OFKQg`Q31JsrCL*ux^OE z7{?9{=9 zw|>6J`JHVqJ}gj}}1ROyq2 z2C9&`x9Mz_1TSRw+krCuPUG!Bq_|yG>FN<0J5%XkJZM^XoaEX%@3bAdhhkR${cx)F zHTJ%5ld9@w;1kI;Yu!~Mpa+ellN5Jr4}XNxge_sK7~WxtY5;F%QL=c*v?N!nU@9r9 zdJ~L;*r47Ozv;Eh(;N9}yAP)sMeM9*#>{wtE#YAa;Mp5ut}WLm!)UV> z@m&?F8BzGajl~fsS%nSEz#K7G7|6RQ-eT-KV`<7Q6#uZ{7Yz;2PIw>Wl?_9-1sTA5 z+r{*f)qGvpXcni_IwV)Ht1nr=9h>aF3KUmNfw*jCc5-vgj4MqYBi+)1WT9`7aT5bA zn`M;BF3-`)h^t?)_r7oew6HWsT3*7!L8?Cd%jU$XJc6+fK7>~q*B5#>rw1ljinwL$ zg~;5TIjOX*jlY^h_cM)TR>p%iq9au94aMofoBnvUsI&zdz|lx~CK*YLyUp~=hHmCy zenPBsv+Jjh6P^6UY0748$)fdj$Cyu)ZgBWdai7?JA%sHz2GTW1S%HYmY6t_W}x0V1U#9OKcTtf_Q$_UN78`DNus%Z zUiF(+cF7hQp_Svqg+p7HD}N;GZBD-$`BG>}Fl(2|b$F`AyvEBN_2It<1~7fKe!4m5 zmf|hYXF1ooWzjsj0)qtn%}FD{(u1KcyuWB=6%|;J3%V1qN15pifQ(sa2r&L5nAncy zCYiBGK1(TOlcbrIf4n+6s6f+43YJ;XD;7ZAN77=g>&3>P^|L6QK}A{}(*RBK2hj0N zP`+>8YbThn1S2;CUu%4cn#ScH&yW>6IRz17)Th;XxJVs>DlSWweQL?J5Y3G#SF@N= z26Y=%p8k4cv-CG~s!kFTgbj+iGh~G20KC2$({6m4=gmwg7XcA|e)0o1T$zfqh%DN8 zmu!`YRKHeUrq!4rVDP$RRWZ3@k9D@=!w<`*(zAX&y)u*|%xkxcsJC48D8Y{yedW5? zI(4xpy6LBD|1?HzTQ~``F=-*;HUoUB&i>d4YRMyD^cH8?vbHD{9l$l>GPz?gtzZ!Z zQ?ppu(qnwb!=N-b)5u*(a6pb)_*)5(8$+peCDvJDK+LZD6bOVG zmL)M+%DlV)^8n)Xgj2E#Lq&4>$3nF3rZeWkaUAtUxU7=`&J&eDi?aPy@#UYQ{IlWL zPGbmQJFyN6AO08|oT|sZ-541tYVB)Jg|WiO;D|;S)}Pl#`(A;d1Duli{OQG2lzH*) zg&3jM4cUuzzfxuo#n)zQB2phWH>9f*Bs5WGpeLWa$lJeOP#_#*NlN+OC`N?YC`J|g zBeGRe49NRD<(4XF zzyhgs$Ll|vmaen`&vz!$WEObaR&eORPz0~?@=xKAGqVKcV9j+^ebr#Ut4P3!6N*4* zYRVV=4Bh-^f%&Qd4r`>lC0WjX{~%p5YZ=-6B56>x)&ie5?|}dhj!y0#G2?0{WZl184BX*KX>fk_4BgH+HQ_e^vf91kNE(OUzP`sFXjXE1H{39Dl_Y221%0*=fUX z>MdYRMxe+C{J!%B0)q#&k2Z3?e+o}GUS=^;$N-H|- zd=5uKk?_2X?QinCq+{Ix8o`FqASM4H0AUPJ?}FeKQPCWD-7Ef=pEs5 zEc>#N*NhTE!&GBG!kB&zSDfVe`yBW}BIypovUVf8Vv3}j?)d`W&y5{@yXJ4AW;ALkWlktxw}$xfeVn9 z^$pHipvYMdy2Q!c5?zy0=|zR3UvE5R*~|vwTN#JNN9H9*ZmgdqIk>Kj=i1+%4Wd8r z3LN!Xf#_w4;@qVeWW&S#_5B^stS=GvLjPX>BJf{BVCUxziOW`7zS}49|9#>9-=*#W b{zL!gd-r9lt=q(Rw}2n;575BoH}C%d&VYDl literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/ScaleInPlaceTest.npz b/tests/control_data/graphical_units_data/transform/ScaleInPlaceTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..c981716fc1ae9b5d9f95c86158bc9f40d73f4985 GIT binary patch literal 1950 zcmWIWW@Zs#U|`??Vnv2y&z!FDurn|;uu3xUF^Djv6(#1T#-}8fBNfdZWqS}0h58=ti zvNA9TxQ8<`FdVrU3Jk@<5>W;Q2N?|EKjIP)v%bZGOmzV3;8HxZ@9*!^6=g4fGmq35 x81?sP2!KN1!~efb0p5&EBFwmIQ$#p50J9qdTHPAp&B_K6WduSSAngOLUjg3?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/TransformFromCopyTest.npz b/tests/control_data/graphical_units_data/transform/TransformFromCopyTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..5622807c530cd0ce426513756674ddcc7f00e53c GIT binary patch literal 5938 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 b{zL!gd-r9lt=q(Rw}2n;575BoH}C%d&VYDl literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/transform/TransformTest.npz b/tests/control_data/graphical_units_data/transform/TransformTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..5622807c530cd0ce426513756674ddcc7f00e53c GIT binary patch literal 5938 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 b{zL!gd-r9lt=q(Rw}2n;575BoH}C%d&VYDl literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/updaters/UpdaterTest.npz b/tests/control_data/graphical_units_data/updaters/UpdaterTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..f0eba4e757d93e707c66ad64a920995c7be77ef7 GIT binary patch literal 2713 zcmWIWW@Zs#U|`??Vnv4iR}TGU=VD-JV3lOxV-R6TD@x2wjZaA|Nz}_LsAOai0LuWC zGJsTpz}xE^v#zGg9Q$Z8Q>TNaxjC4p<+9TSF`bO`%bL2eOkzx~v!?JZ<=pu8lE_Cs zm-Pp9s)VgxxX$qAs9@do=d~us!s8QIehJik`gt(j;{EUc2PN-4{rzJ1)%^YcA5LCr zzx@0rn z_jfNNgTvylU%wul)4Q|g=ckqX%^4UnmaIN^?u8Zu!wHKUq2l^+GHL1Qnnl0A<;Joy zFeI|?&Z?^Vb>%<*|MgR+ih_l9t(v`#iJ`$J_Ns3<(7bu;UM*YAz@XqCUV1r{fnmb( z)w^DTOuHO)J5^78h*d-p!Px;p&u z0YX1)5`^Il9` zT>Tp~x{iPU@bIwn>{ownDn2A6LF2ffMn8U^&8F3Hdnyb!LgU+F-}CeHhJG--$2tr-}_5Ty$`>>zMemK)yKPc?%X*7O+XJ)^6u@ieDnUj zzsc1fIW^xG%0d#@fs?U23KDPJx+OKwuGY$?@>9x1c`?8o9~(M(F9& zrw^}<-mbA}^XA2%(&9}*_{?_~LFL6lc=1#J@6Uz}8xBYs7#kPAde1wA3*J$ukA}c# t2;dBXhW^v`0p5&EBFwlNk_fF0j372@vogS&l?^1y2!u93+8x}q1OT#AlimOT literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/updaters/ValueTrackerTest.npz b/tests/control_data/graphical_units_data/updaters/ValueTrackerTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..f8eb0c53bff6a6400e391731be2b7f2d50a82338 GIT binary patch literal 1843 zcmWIWW@Zs#U|`??Vnv2kYYX--WMg1xV3lOxV-R6TD@x2wjZaA|Nz}_LsAOai0LuWC zGJsTpz}piW`3?p!v_8!KDpI~%Mb<+r)25*}f=4ZLOOn8nqfN^{9Jrz^k#pa3-@`xa zk7n(Q`F=?EPH^b<+iJeaRWZjkyEDtP^n5Gt%$c?7-?zxhjMwY7|NazHUOz#6v5wee zo9>?m-RFP&{-xMr4zX{P91Vfd5Eu=C(GVC70m32hL0&$~ U0=!wl)f^)OBZCc4_92)D0GlsS4FCWD literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/DarwinTexMobjectTest.npz b/tests/control_data/graphical_units_data/writing/DarwinTexMobjectTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..131df64cc9627a19b96e3eaa308f3bdc97e994d9 GIT binary patch literal 6194 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/DarwinTextMobjectTest.npz b/tests/control_data/graphical_units_data/writing/DarwinTextMobjectTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..0a3587e8368d795b6d469eef2a6bb0cc00aa383f GIT binary patch literal 4692 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/DarwinTextTest.npz b/tests/control_data/graphical_units_data/writing/DarwinTextTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..05c861d9ecfdf444ac15414f7a65b083478b894d GIT binary patch literal 3904 zcmeHK`CC(08os#B)DcEeEKTejfG)5HxDsYy8ti7@JEETq`+>T}ja&80oZ62mN@EutNA(!8GfG%1DF!KTs)zhk&x_Wi zT|rXjzKjSHr_`T#CfeEFzBnPnf$(U|_V<_1;unylG+R40etM43Q|cJf$sLxQOP7{a zXhM1zFdDDOC4P_rbJ26Ww))~gX0tX~@SwGMn;v={J2A~nGl3=_{3DRh_s?0HUhaKG*pPGrX$Ao2$s`h~&&v~9^`r-}`*<*I@l^H#iDHKtEu?zVHUU6g z8ECt<-F)nXk9u|D{@z&rpnp_}Vhk(d-q6_`&ba^pziQU$5(`jq{8Ujf-o;qQ_vJZ# ztBVu;4_!@)l2;bk9U^AGhtp$3*_p@F)6;R{dxx)}>Kz~T=dmniWB+FCXq##5WLJ{1 z)Pa_e= zD6d$)-N?0^g*quMTf=ivS#}*s>Q28(xj^mgaj4OjKE2Pm+?*CXiWT7tx&s?i@f}by zUNJn^@Usj3Xe@t}73(&wRZ8jRWWwtBUE7q^54r?TL?b&gogCIpI`N(KoC zxJQzd%Iqw4f-b(+hnJGRiw^!VVZZIw^T}&d1?j2{U*O0&!;G3q6#z+^d>D*Jw0+Zh z?JSL01K&opOa$Y;0*hUS#J%|kx+B}XWnDrhaOSXk)~uo+_+^CS!mEiY6tBD^-G!tU%3E-Ex9fg& z(GK?Qg^_FKK03fj^?OU7K)jp}*S0@2J1RU}8a0I~5Q5H#lTV#GrBttos--V|XnpIw zWv&&?dNAkthL1gA_`ru08e8#}D8f%<+8a#lH!@0>x*Es-9Iftiv!Q+miy8NXsSj=p zP%>-j!&c5xe38Wmh!T7LLj1}Y78PRVIuFizi`-t6QoWkh1|c|8bavs^?cy^*(;iOq z4B`qe!sB$h-_137tqP*&vihzvB15@1W-kB?RP@B~!5?$vEsc86<@4T)#THQr0<_U} zz&r|h*mQQ&nG&MlxWJdaL~Hlv&#J*(pnQpay~}makgQ(D5htgXQnI)1FlgUEyP|Tc zQZP~=8y^`pkfnv==o9y0E)+E48C#>2`gRi=4xRP~ebR+4zaci>I?J+%K{B516%5N3 ziAQMyHx)IGb{cKfgTXO-c3lqc>*KLy;E`;Z_gx_Ip3AE*jM`Q+c~B&E1c zrG#7L6`Bq@@?4Cs6{V_{*Cb@rgjn6U=s@!R4k(wF`j-B+&!1yX51ityY-+8? zc{)txR;@kkHc9!=Wa`f)!y0GOlck8218+$uBC4>^8ZtzFEGTjOj@U^t8q3Sp$fZLl zyo{s53_Da<6;ZyAh=}NACN7Ex8VTBLji9YioAN0ndab;7BG79w>sd&a!;=|^JthDV zVyekhPUs)@;LcWfl3k$e#a5%1b#Kar$Ej*%-Y6^_F*y&;VS6bq69OiJVPezPeYp)H z3&rMIByy770Iwy2Ji1*LOaM!TGR{$;jDIk_1%j(&7$*ckCW`VqrJkkweZW4R1E{&-`VPV zu4!hZk7ea&SZzBaS4p1+?G_~?$94Uz(^z{u?go}>FOt#0V=9wrS zbC4GJ=$_-P#f-{%+-;}bENjL7R%O1W?@z^i;tBW|=eqKJMFH1g{I))kleH9NEu`k% zA3>4v7Fp?zclHG(Ud|VZ4FlG*mSRI~IIF?=6!9>Us?7)Y4P)>DTds6}!l9)wM!Qc< zkUapL#2$;Ac{ArcJjS^#X8tC1O!6sVyA5DnAo_ z^=iA~&@?rYtp{36E`JooVYRzM2t?%N>Wwd(_b`ltC%TrWuTK z`F)N_;=7w35r#pa{y+1f2c1CLY&a0V-0NE5k71cxAvw-Cj9jCVp=340x*O4)%0cPo zKf!+IbBLc2_=LbaEsp@4chlLlXY>E7cmIpj4V{hm|E+${yKUXJ@l^*rox$hArwaH# DZ2$!J literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/LinuxTexMobjectTest.npz b/tests/control_data/graphical_units_data/writing/LinuxTexMobjectTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..a5d33772ff375a944bc0453f593766c2d63e7385 GIT binary patch literal 6208 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 B`2zp| literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/LinuxTextMobjectTest.npz b/tests/control_data/graphical_units_data/writing/LinuxTextMobjectTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..d5dc8b1fa86d0c3b8c8ee1adbd229114daa9abb1 GIT binary patch literal 5038 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 W+jSQ;V66!P?E+3H@I?H%-}W!p7iGx+ literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/LinuxTextTest.npz b/tests/control_data/graphical_units_data/writing/LinuxTextTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..8d84013b69bf1c5c06ce82543d862c8b117370de GIT binary patch literal 3893 zcmeHK`&ScZ8XoFe_N)i2E1*^`6<1h5pa{_lhS(~`ErL=AQ4GlViGQfRBquS1PCOM8#~Y+_UsS)7u1{;Pi6oB{24rs0kz9>SIbNR;O^cdfGJ=GL?(vCMPP1+C55@f-ysiYd!Avrz3#@Q!!hgud6tQi5K5 z3&9#R^(xJhpv>T&xZWzH8OEd0!{yH#?1ZtJlZQ0Vf~9O z^~de5Jceww7;XgG4;1Rgx3wnLo>AwgemQo}*u!)g_9P*FN`W__c@jVWJ&bqfcMSXi z7&y;t+%{;L3~AD^9}%-30J>z~qV@tnqcM|~91>D@%g0kW;J(PukMZ}MFYn;LEQ7bS zip$_RCCu&{SQRei3~ zx4;-f|n8#8+(Nn z%#K;T0n@EqXj|<$O1Q*oR`pR+CP-M#YOjscY~1Tsx4}}Vm%Pd+%i@tfv^|-vl^p_r zku6($fieRpe&(R;(rhdeFc0+Qw_?@HQm3^(V;joDWxjSfX_4Jh$t+E)9{9YDleF-Z z+1!epuDCViFoxss@~uhJxhKLwI%zM>#sVoUe&_MCor!LjG!tk$4a zC<{%Fo^Bjz$b_~rq$x70`H%tP;W14)q9rbh+5O=l742=?en!CE&fuF|N1?4x`~%fo zS&mp&@(CvhC&Mad2P0gbLNeZt)N#E9zgGA<3BB}1DB|-I1$h#_W`WfxOV=WJ>iUTO z7YT4HV$i6~kea&r=KhSgs9E0f*>vrQ+Hp*R$p}?m7~x<#>$g?oc+Oeag!Tl|2sqy> z3a-h7R!1eoR|S9D_1UY62Nu}E%rxqoQ7oO^cjmrz+FUXR51*;tPb2{{jG>rOkZQ0XKe2RgE})i%wPj;}C|D(59Xs6Qs&n=Y=&|LeCNNsl_5z zE$QQ09scT*fZ! zhXxVSmGZs2|4PjU6+d-wfDY>vY%ELLpZjly zAYIt?3G!&oGc`q7y(JnKhy9k;Ya@*NQ!fF*ok(%W}LwH!(4p(WRaV zTKy*Um7V43*z4$Vw_eNdIf}O^ku&N@VoOPO zapUM7CSSU%J)(03aPw^x4J-*UK}vb9Eu z!^*3x*mbd^^~E@JL!_VZy5PfIP76)Xt#nb+=dxV+eOf4M96fJht4q zZD>rG>M0qT0L{5R`{KER&Gq4{*gB4wg6<$xw^|U5aqPIwl{Yi32mL?!VWF@tymwad z_rxHbfraGwyGIUOhNi9eNsu+D8|gM11~ORUGHg~YWj3_&3f}@4q?6|$4C5(0x{`rJ&emN3NIw852qqc!lyAiD5ik-@&XQgot`~j9Z??QaXz%B!KGxE3h pT=O-0&uq{CYjXd~)Lo;U`~PiuuleqMf9I(YxSs>BQ@d^Ne*iV7^C$oS literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/WindowsTexMobjectTest.npz b/tests/control_data/graphical_units_data/writing/WindowsTexMobjectTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..131df64cc9627a19b96e3eaa308f3bdc97e994d9 GIT binary patch literal 6194 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/WindowsTextMobjectTest.npz b/tests/control_data/graphical_units_data/writing/WindowsTextMobjectTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..0a3587e8368d795b6d469eef2a6bb0cc00aa383f GIT binary patch literal 4692 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 literal 0 HcmV?d00001 diff --git a/tests/control_data/graphical_units_data/writing/WindowsTextTest.npz b/tests/control_data/graphical_units_data/writing/WindowsTextTest.npz new file mode 100644 index 0000000000000000000000000000000000000000..087fc8b76cf4be1f495056c56274e1eb0ad1d578 GIT binary patch literal 3868 zcmeHK>o;5J9^PtN)6)*8M=>46s%+1=M-Do#|KKNBzW|4><(p3EbB_{BtK z6&`!$`){_!nZ^z3Po3}#S`6s@?289i;*8kE+?R@G2QvOenH$EA|6=R~=9xh`S3QCe zlytPS8fn-!ujbHv|7nR_%GC+8bfVXjf&|NPk$aT_C%AN{blnmCvLoKV1eVEXEmZMU zK_NOf@-%K36L{w^ei{dF-f7`_E=BljhmpmYa|0nIge+9z)<~-9!ax4x)AbVqe*pyU zLRGU8s71)K|YJQ*+nfFIl`D~l)Kx+QdxA1R@3q$L&Y3UB=z z0DQRCBq5Gk7cYvCs^>=VGXg{;j!PIxmr|Vc4GdXYq#kgQzpzfP0fC=ZIVX9LTi~V8u_D+ zfE}iG4_l2K)KidX&e5cihU(bWE-PBuM1RSxCMi|Rc1-0)m_vz)#K2ljjeYyl+nJR~ z293Vv9`oDfhIm0~HioY=NpbIJy5&hW105h{iwnb|!-+U|oa6~%su)G>q3Y)Q z9E9w+KK6Pa0swwLyKU!}H_F!wn!5v_N)G;O_8F?QaX311%oq#xx?%`fiAABvWb)0B z@vH?wHlfPbisCHSsz-6c&TGbfY@w%tMS+JC4nxn3e_fBZUxqyeIdk_mO5}K*>}nIn z8?)A@%=g$#jo}CU+m!9(CLQtPGXsojbV0o+3=GTiwP9qX4O(HN_WS1b^L?bzWJO_- zeN;qI>-%pvm=ncCnP7Zn^23if^CzcAn{ibGC5~vHxw0u?Rj~(r0C{9A#j6Uv-&`h- zzFB@uJxuCIz^5VF`Mcd7)=S|pU*F>?Ti@kDO(~H{jfg?BNyBtC3~`QiyBN6@0CH<; zkc2hWu-RG=?%oJKmSU?`dy^;2)3fDkT8#t0E4nq|op0_}g@*9ej}3kHZD$qBTsVWBhn2A}`g`g_!!bxzg zU%|36#FGPMZuP=UDOt(&4zQ!xu$*#CAwPqvy6Y+KMLcd+<~MZ*R}5r3F;3#c&gYE% zLz!Hj%HQMde>GTgv&IlQ^D9&8*@!f0br{h|X;PUcLnRK|q|e<18T0J@YyHLwu4de? z7@5`+pHqJcs^xS;7A6FJYBM78dA4i%>{zy=suz(D*Ja$)J{i&9Yjj-&yiQC?2avfsPt@5_U@BjL~3OSJ$;+u z-m?qgU3>ATLak!EZ|pnYrfBM`^OnpX#T|K(%XHC!(zc&)1Z{!cPLeUd38~yYJm5B2 zRw|95@*i*Rl8w4qMqax|M|J6%nwqR5kHn65c*&Mre$@T&f$^y?uE@gw`{^J zP^B>e9x4&LokR3tZ71w)J_ve@-F4}~h_dv(%hmOB!b*Qz{w6NB@7a4b6i1V)?rQYZ5@wX|z5X@W3FtVN2n@D>0<5q9!UC&EHmHv0w^3-;5a+@O55jKr>*NowL zn3>i|dfeJ_#Obme@tj8$q@?D%b3Ghh32%;4pbji`u3pk@LWoqhYm;y8c%AwYq=szApyr z0h$tNkS6p$g6MaEd)bbFHe4uhfI(N9F4SeaFjo_qKcwajUowK-Hg$+bmi3vC4-7v- zG1lPIgTq?ob^usiKB-xeLFx*}orp89VkOK7GDs2Ign-L1%F2U-enq0a=Hy+qAb!R+0W{G+A#$EHB#`R3aEW!J1`o zeV@iB1pXQbd>mdto%Yk)vRnWE^|F8BaB))^|J&J~_S?E`qe2fn+`)VAW_SBvh0N55 literal 0 HcmV?d00001 diff --git a/tests/template_generate_graphical_units_data.py b/tests/template_generate_graphical_units_data.py new file mode 100644 index 0000000000..ee91f4525c --- /dev/null +++ b/tests/template_generate_graphical_units_data.py @@ -0,0 +1,18 @@ +from manim import * +from tests.helpers.graphical_units import set_test_scene + +# Note: DO NOT COMMIT THIS FILE. The purpose of this template is to produce control data for graphical_units_data. As +# soon as the test data is produced, please revert all changes you made to this file, so this template file will be +# still available for others :) +# More about graphical unit tests: https://github.com/ManimCommunity/manim/wiki/Testing#graphical-unit-test + + +class YourClassHere(Scene): + def construct(self): + circle = Circle() + self.play(Animation(circle)) + + +set_test_scene( + YourClassHere, "" +) # can be e.g. "geometry" or "movements" diff --git a/tests/test_renderer.py b/tests/test_renderer.py new file mode 100644 index 0000000000..04458b2da0 --- /dev/null +++ b/tests/test_renderer.py @@ -0,0 +1,24 @@ +import pytest +from manim import CairoRenderer, Camera, tempconfig, config + + +def test_renderer(): + """Test that CairoRenderer instances initialize to the correct config.""" + # by default, use the config + assert ( + CairoRenderer(Camera).video_quality_config["frame_width"] + == config["frame_width"] + ) + # init args override config + assert ( + CairoRenderer(Camera, frame_width=10).video_quality_config["frame_width"] == 10 + ) + + # if config changes, reflect those changes + with tempconfig({"frame_width": 100}): + assert CairoRenderer(Camera).video_quality_config["frame_width"] == 100 + # ..init args still override new config + assert ( + CairoRenderer(Camera, frame_width=10).video_quality_config["frame_width"] + == 10 + ) From 12e1e528eb8d736b876b63410cef797d6ecc1389 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 17:46:00 -0400 Subject: [PATCH 19/37] merge master --- .github/manimdependency.json | 27 +- .github/workflows/ci.yml | 28 +- .github/workflows/python-publish.yml | 23 + .gitignore | 1 + README.md | 27 +- docs/requirements.txt | 1 + docs/source/_static/custom.css | 5 + docs/source/_static/manim-logo-sidebar.svg | 87 ++ .../_static/non_standard_rate_funcs.png | Bin 0 -> 129669 bytes docs/source/_templates/logo-text.html | 2 + docs/source/changelog.rst | 41 +- docs/source/conf.py | 3 +- docs/source/examples.rst | 9 +- docs/source/examples/3d.rst | 73 +- docs/source/examples/advanced_projects.rst | 247 +++- docs/source/examples/animations.rst | 61 +- docs/source/examples/annotations.rst | 16 +- docs/source/examples/camera_settings.rst | 49 +- docs/source/examples/formulas.rst | 8 +- docs/source/examples/neat_projects.rst | 4 - docs/source/examples/plots.rst | 35 +- docs/source/examples/shapes.rst | 43 - .../examples/shapes_images_positions.rst | 199 ++++ docs/source/examples/tex.rst | 161 +++ docs/source/examples/text.rst | 14 - docs/source/index.rst | 1 + docs/source/installation/linux.rst | 54 +- docs/source/installation/troubleshooting.rst | 63 + docs/source/installation/win.rst | 6 +- docs/source/manim_directive.py | 55 +- docs/source/reference.rst | 10 +- example_scenes/advanced_tex_fonts.py | 141 +++ example_scenes/basic.py | 114 +- example_scenes/custom_template.tex | 15 - example_scenes/customtex.py | 22 +- logo/cropped.png | Bin 154686 -> 16587 bytes logo/dark/dark_background.svg | 113 ++ logo/dark/transparent_background.svg | 105 ++ logo/graph.png | Bin 116608 -> 0 bytes logo/light/light_background.svg | 113 ++ logo/light/transparent_background.svg | 105 ++ logo/logo.py | 185 --- logo/with_name.png | Bin 111118 -> 0 bytes logo/with_subtext.png | Bin 161453 -> 0 bytes manim/__init__.py | 4 + manim/__main__.py | 7 +- manim/animation/creation.py | 4 +- manim/animation/numbers.py | 2 +- manim/animation/specialized.py | 2 +- manim/animation/transform.py | 10 +- manim/camera/camera.py | 38 +- manim/camera/moving_camera.py | 4 +- manim/camera/multi_camera.py | 11 +- manim/config/logger.py | 7 +- manim/grpc/impl/frame_server_impl.py | 2 +- manim/mobject/coordinate_systems.py | 6 +- manim/mobject/mobject.py | 8 +- manim/mobject/svg/drawings.py | 2 +- manim/mobject/svg/svg_mobject.py | 2 +- manim/mobject/svg/tex_mobject.py | 70 +- manim/mobject/svg/text_mobject.py | 236 ++-- manim/mobject/three_d_shading_utils.py | 54 - manim/mobject/types/image_mobject.py | 18 +- manim/mobject/types/point_cloud_mobject.py | 4 +- manim/mobject/types/vectorized_mobject.py | 2 +- manim/renderer/__init__.py | 0 manim/renderer/cairo_renderer.py | 218 ++++ manim/scene/graph_scene.py | 4 +- manim/scene/js_scene.py | 1 - manim/scene/moving_camera_scene.py | 11 +- manim/scene/scene.py | 563 ++------- manim/scene/scene_file_writer.py | 47 +- manim/scene/three_d_scene.py | 56 +- manim/scene/vector_space_scene.py | 14 +- manim/scene/zoomed_scene.py | 4 +- manim/utils/caching.py | 102 ++ manim/utils/color.py | 2 +- manim/utils/exceptions.py | 2 + manim/utils/family.py | 33 + manim/utils/module_ops.py | 3 +- manim/utils/rate_functions.py | 227 +++- manim/utils/space_ops.py | 4 +- manim/utils/tex.py | 475 ++++---- manim/utils/tex_file_writing.py | 172 ++- manim/utils/tex_templates.py | 1024 +++++++++++++++++ poetry.lock | 373 +++--- pyproject.toml | 6 +- requirements.txt | 19 - .../creation/DrawBorderThenFillTest.npy | Bin 1639808 -> 0 bytes .../creation/FadeInFromDownTest.npy | Bin 1639808 -> 0 bytes .../creation/FadeInFromLargeTest.npy | Bin 1639808 -> 0 bytes .../creation/FadeInFromTest.npy | Bin 1639808 -> 0 bytes .../creation/FadeInTest.npy | Bin 1639808 -> 0 bytes .../creation/FadeOutAndShiftTest.npy | Bin 1639808 -> 0 bytes .../creation/FadeOutTest.npy | Bin 1639808 -> 0 bytes .../creation/GrowFromCenterTest.npy | Bin 1639808 -> 0 bytes .../creation/GrowFromEdgeTest.npy | Bin 1639808 -> 0 bytes .../creation/GrowFromPointTest.npy | Bin 1639808 -> 0 bytes .../creation/ShowCreationTest.npy | Bin 1639808 -> 0 bytes .../creation/ShrinkToCenterTest.npy | Bin 1639808 -> 0 bytes .../creation/SpinInFromNothingTest.npy | Bin 1639808 -> 0 bytes .../creation/UncreateTest.npy | Bin 1639808 -> 0 bytes .../creation/WriteTest.npy | Bin 1639808 -> 0 bytes .../geometry/AnnularSectorTest.npy | Bin 1639808 -> 0 bytes .../geometry/AnnulusTest.npy | Bin 1639808 -> 0 bytes .../geometry/ArcBetweenPointsTest.npy | Bin 1639808 -> 0 bytes .../graphical_units_data/geometry/ArcTest.npy | Bin 1639808 -> 0 bytes .../geometry/CircleTest.npy | Bin 1639808 -> 0 bytes .../geometry/CoordinatesTest.npy | Bin 1639808 -> 0 bytes .../geometry/CurvedArrowTest.npy | Bin 1639808 -> 0 bytes .../geometry/CustomDoubleArrowTest.npy | Bin 1639808 -> 0 bytes .../graphical_units_data/geometry/DotTest.npy | Bin 1639808 -> 0 bytes .../geometry/DoubleArrowTest.npy | Bin 1639808 -> 0 bytes .../geometry/Elbowtest.npy | Bin 1639808 -> 0 bytes .../geometry/EllipseTest.npy | Bin 1639808 -> 0 bytes .../geometry/LineTest.npy | Bin 1639808 -> 0 bytes .../geometry/PolygonTest.npy | Bin 1639808 -> 0 bytes .../geometry/RectangleTest.npy | Bin 1639808 -> 0 bytes .../geometry/RoundedRectangleTest.npy | Bin 1639808 -> 0 bytes .../geometry/SectorTest.npy | Bin 1639808 -> 0 bytes .../geometry/VectorTest.npy | Bin 1639808 -> 0 bytes .../graph/PlotFunctions.npy | Bin 1639808 -> 0 bytes .../indication/ApplyWaveTest.npy | Bin 1639808 -> 0 bytes .../indication/CircleIndicateTest.npy | Bin 1639808 -> 0 bytes .../indication/FlashTest.npy | Bin 1639808 -> 0 bytes .../indication/FocusOnTest.npy | Bin 1639808 -> 0 bytes .../indication/IndicateTest.npy | Bin 1639808 -> 0 bytes .../ShowCreationThenDestructionTest.npy | Bin 1639808 -> 0 bytes .../ShowCreationThenFadeOutTest.npy | Bin 1639808 -> 0 bytes .../indication/ShowPassingFlashAroundTest.npy | Bin 1639808 -> 0 bytes .../indication/ShowPassingFlashTest.npy | Bin 1639808 -> 0 bytes .../indication/TurnInsideOutTest.npy | Bin 1639808 -> 0 bytes .../indication/WiggleOutThenInTest.npy | Bin 1639808 -> 0 bytes .../movements/HomotopyTest.npy | Bin 1639808 -> 0 bytes .../movements/MoveAlongPathTest.npy | Bin 1639808 -> 0 bytes .../movements/MoveToTest.npy | Bin 1639808 -> 0 bytes .../movements/PhaseFlowTest.npy | Bin 1639808 -> 0 bytes .../movements/RotateTest.npy | Bin 1639808 -> 0 bytes .../movements/ShiftTest.npy | Bin 1639808 -> 0 bytes .../sample_scenes/BasicScene.npy | Bin 1639808 -> 0 bytes .../sample_scenes/BasicTex.npy | Bin 1639808 -> 0 bytes .../sample_scenes/GeometryScene.npy | Bin 1639808 -> 0 bytes .../threed/AmbientCameraMoveTest.npy | Bin 1639808 -> 0 bytes .../graphical_units_data/threed/AxesTest.npy | Bin 1639808 -> 0 bytes .../threed/CameraMoveTest.npy | Bin 1639808 -> 0 bytes .../graphical_units_data/threed/CubeTest.npy | Bin 1639808 -> 0 bytes .../threed/SphereTest.npy | Bin 1639808 -> 0 bytes .../transform/ApplyComplexFunctionTest.npy | Bin 1639808 -> 0 bytes .../transform/ApplyFunctionTest.npy | Bin 1639808 -> 0 bytes .../transform/ApplyMatrixTest.npy | Bin 1639808 -> 0 bytes .../transform/ApplyPointwiseFunctionTest.npy | Bin 1639808 -> 0 bytes .../transform/ClockwiseTransformTest.npy | Bin 1639808 -> 0 bytes .../CounterclockwiseTransformTest.npy | Bin 1639808 -> 0 bytes .../transform/CyclicReplaceTest.npy | Bin 1639808 -> 0 bytes .../transform/FadeToColortTest.npy | Bin 1639808 -> 0 bytes .../transform/MoveToTargetTest.npy | Bin 1639808 -> 0 bytes .../transform/RestoreTest.npy | Bin 1639808 -> 0 bytes .../transform/ScaleInPlaceTest.npy | Bin 1639808 -> 0 bytes .../transform/ShrinkToCenterTest.npy | Bin 1639808 -> 0 bytes .../transform/TransformFromCopyTest.npy | Bin 1639808 -> 0 bytes .../transform/TransformTest.npy | Bin 1639808 -> 0 bytes .../updaters/UpdaterTest.npy | Bin 1639808 -> 0 bytes .../updaters/ValueTrackerTest.npy | Bin 1639808 -> 0 bytes .../writing/DarwinTexMobjectTest.npy | Bin 1639808 -> 0 bytes .../writing/DarwinTextMobjectTest.npy | Bin 1639808 -> 0 bytes .../writing/DarwinTextTest.npy | Bin 1639808 -> 0 bytes .../writing/LinuxTexMobjectTest.npy | Bin 1639808 -> 0 bytes .../writing/LinuxTextMobjectTest.npy | Bin 1639808 -> 0 bytes .../writing/LinuxTextTest.npy | Bin 1639808 -> 0 bytes .../writing/WindowsTexMobjectTest.npy | Bin 1639808 -> 0 bytes .../writing/WindowsTextMobjectTest.npy | Bin 1639808 -> 0 bytes .../writing/WindowsTextTest.npy | Bin 1639808 -> 0 bytes .../logs_data/BasicSceneLoggingTest.txt | 2 +- tests/helpers/graphical_units.py | 16 +- tests/test_camera.py | 16 - tests/test_copy.py | 10 +- tests/test_pango.py | 18 +- tests/test_scene_rendering/conftest.py | 6 +- tests/utils/GraphicalUnitTester.py | 14 +- 179 files changed, 4325 insertions(+), 1876 deletions(-) create mode 100644 docs/source/_static/manim-logo-sidebar.svg create mode 100644 docs/source/_static/non_standard_rate_funcs.png create mode 100644 docs/source/_templates/logo-text.html delete mode 100644 docs/source/examples/neat_projects.rst delete mode 100644 docs/source/examples/shapes.rst create mode 100644 docs/source/examples/shapes_images_positions.rst create mode 100644 docs/source/examples/tex.rst delete mode 100644 docs/source/examples/text.rst create mode 100644 example_scenes/advanced_tex_fonts.py create mode 100644 logo/dark/dark_background.svg create mode 100644 logo/dark/transparent_background.svg delete mode 100644 logo/graph.png create mode 100644 logo/light/light_background.svg create mode 100644 logo/light/transparent_background.svg delete mode 100644 logo/logo.py delete mode 100644 logo/with_name.png delete mode 100644 logo/with_subtext.png delete mode 100644 manim/mobject/three_d_shading_utils.py create mode 100644 manim/renderer/__init__.py create mode 100644 manim/renderer/cairo_renderer.py create mode 100644 manim/utils/caching.py create mode 100644 manim/utils/exceptions.py create mode 100644 manim/utils/family.py create mode 100644 manim/utils/tex_templates.py delete mode 100644 requirements.txt delete mode 100644 tests/control_data/graphical_units_data/creation/DrawBorderThenFillTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/FadeInFromDownTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/FadeInFromLargeTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/FadeInFromTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/FadeInTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/FadeOutAndShiftTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/FadeOutTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/GrowFromCenterTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/GrowFromEdgeTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/GrowFromPointTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/ShowCreationTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/ShrinkToCenterTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/SpinInFromNothingTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/UncreateTest.npy delete mode 100644 tests/control_data/graphical_units_data/creation/WriteTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/AnnularSectorTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/AnnulusTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/ArcBetweenPointsTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/ArcTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/CircleTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/CoordinatesTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/CurvedArrowTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/CustomDoubleArrowTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/DotTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/DoubleArrowTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/Elbowtest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/EllipseTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/LineTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/PolygonTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/RectangleTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/RoundedRectangleTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/SectorTest.npy delete mode 100644 tests/control_data/graphical_units_data/geometry/VectorTest.npy delete mode 100644 tests/control_data/graphical_units_data/graph/PlotFunctions.npy delete mode 100644 tests/control_data/graphical_units_data/indication/ApplyWaveTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/CircleIndicateTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/FlashTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/FocusOnTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/IndicateTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/ShowCreationThenDestructionTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/ShowCreationThenFadeOutTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/ShowPassingFlashAroundTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/ShowPassingFlashTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/TurnInsideOutTest.npy delete mode 100644 tests/control_data/graphical_units_data/indication/WiggleOutThenInTest.npy delete mode 100644 tests/control_data/graphical_units_data/movements/HomotopyTest.npy delete mode 100644 tests/control_data/graphical_units_data/movements/MoveAlongPathTest.npy delete mode 100644 tests/control_data/graphical_units_data/movements/MoveToTest.npy delete mode 100644 tests/control_data/graphical_units_data/movements/PhaseFlowTest.npy delete mode 100644 tests/control_data/graphical_units_data/movements/RotateTest.npy delete mode 100644 tests/control_data/graphical_units_data/movements/ShiftTest.npy delete mode 100644 tests/control_data/graphical_units_data/sample_scenes/BasicScene.npy delete mode 100644 tests/control_data/graphical_units_data/sample_scenes/BasicTex.npy delete mode 100644 tests/control_data/graphical_units_data/sample_scenes/GeometryScene.npy delete mode 100644 tests/control_data/graphical_units_data/threed/AmbientCameraMoveTest.npy delete mode 100644 tests/control_data/graphical_units_data/threed/AxesTest.npy delete mode 100644 tests/control_data/graphical_units_data/threed/CameraMoveTest.npy delete mode 100644 tests/control_data/graphical_units_data/threed/CubeTest.npy delete mode 100644 tests/control_data/graphical_units_data/threed/SphereTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/ApplyComplexFunctionTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/ApplyFunctionTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/ApplyMatrixTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/ApplyPointwiseFunctionTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/ClockwiseTransformTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/CounterclockwiseTransformTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/CyclicReplaceTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/FadeToColortTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/MoveToTargetTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/RestoreTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/ScaleInPlaceTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/ShrinkToCenterTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/TransformFromCopyTest.npy delete mode 100644 tests/control_data/graphical_units_data/transform/TransformTest.npy delete mode 100644 tests/control_data/graphical_units_data/updaters/UpdaterTest.npy delete mode 100644 tests/control_data/graphical_units_data/updaters/ValueTrackerTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/DarwinTexMobjectTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/DarwinTextMobjectTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/DarwinTextTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/LinuxTexMobjectTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/LinuxTextMobjectTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/LinuxTextTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/WindowsTexMobjectTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/WindowsTextMobjectTest.npy delete mode 100644 tests/control_data/graphical_units_data/writing/WindowsTextTest.npy delete mode 100644 tests/test_camera.py diff --git a/.github/manimdependency.json b/.github/manimdependency.json index c9db99700f..960c1f900f 100644 --- a/.github/manimdependency.json +++ b/.github/manimdependency.json @@ -1,6 +1,25 @@ { - "windows": { - "ffmpeg": "https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-4.3.1-2020-09-21-full_build.zip", - "pango": "v0.1.0" - } + "windows": { + "ffmpeg": "https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-4.3.1-2020-09-21-full_build.zip", + "pango": "v0.1.0", + "tinytex": [ + "standalone", + "preview", + "doublestroke", + "ms", + "setspace", + "rsfs", + "relsize", + "ragged2e", + "fundus-calligra", + "microtype", + "wasysym", + "physics", + "dvisvgm", + "jknapltx", + "wasy", + "cm-super", + "babel-english" + ] + } } \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 83f89cdd93..dfed897489 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,22 +1,22 @@ name: CI on: push: - branches: - - master + branches: + - master pull_request: - branches: - - master + branches: + - master jobs: test: runs-on: ${{ matrix.os }} env: - POETRY_VIRTUALENVS_CREATE: false + POETRY_VIRTUALENVS_CREATE: false strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python: [3.6,3.7, 3.8] + python: [3.6, 3.7, 3.8] steps: - name: Checkout the repository @@ -36,8 +36,8 @@ jobs: shell: bash id: pip-cache-and-time run: | - echo "::set-output name=dir::$(pip cache dir)" - echo "::set-output name=date::$(/bin/date -u "+%m%Y")" + echo "::set-output name=dir::$(pip cache dir)" + echo "::set-output name=date::$(/bin/date -u "+%m%Y")" - name: pip cache uses: actions/cache@v2 @@ -73,27 +73,31 @@ jobs: if: runner.os == 'Windows' uses: actions/cache@v2 with: - path: ${{ github.workspace }}\ManimCache - key: ${{ runner.os }}-dependencies-ffmpeg-tinytex-${{ hashFiles('.github/manimdependency.json') }}-${{ steps.pip-cache-and-time.outputs.date }} + path: ${{ github.workspace }}\ManimCache + key: ${{ runner.os }}-dependencies-ffmpeg-tinytex-${{ hashFiles('.github/manimdependency.json') }}-${{ steps.pip-cache-and-time.outputs.date }} - name: Download system dependencies (Windows) if: runner.os == 'Windows' && steps.cache-windows.outputs.cache-hit != 'true' run: | $ffmpegUrl = python -c "import json;print(json.load(open('.github/manimdependency.json'))['windows']['ffmpeg'])" $pangoVersion = python -c "import json;print(json.load(open('.github/manimdependency.json'))['windows']['pango'])" + $tinyTexPackages = $(python -c "import json;print(' '.join(json.load(open('.github/manimdependency.json'))['windows']['tinytex']))") -Split ' ' $OriPath = $env:PATH echo "Install Tinytex" Invoke-WebRequest "https://ci.appveyor.com/api/projects/yihui/tinytex/artifacts/TinyTeX.zip?job=image:%20Visual%20Studio%202019" -O "$($env:TMP)\TinyTex.zip" Expand-Archive -LiteralPath "$($env:TMP)\TinyTex.zip" -DestinationPath "$($PWD)\ManimCache\LatexWindows" $env:Path = "$($PWD)\ManimCache\LatexWindows\TinyTeX\bin\win32;$($env:PATH)" tlmgr update --self - tlmgr install standalone preview doublestroke ms setspace rsfs relsize ragged2e fundus-calligra microtype wasysym physics dvisvgm jknapltx wasy cm-super babel-english + foreach ($c in $tinyTexPackages){ + $c=$c.Trim() + tlmgr install $c + } $env:PATH=$OriPath echo "Completed Latex" Invoke-WebRequest "$ffmpegUrl" -O "$($env:TMP)\ffmpeg.zip" 7z x "$($env:TMP)\ffmpeg.zip" -o"$($PWD)\ManimCache" Move-Item "ManimCache\ffmpeg-*" "ManimCache\FFmpeg" - Invoke-WebRequest "https://github.com/ManimCommunity/manim-windows/releases/download/$($pangoVersion)/pango-windows-binaires-x64.zip" -O "$($env:TMP)\Pango.zip" + Invoke-WebRequest "https://github.com/ManimCommunity/pango-windows-binaries/releases/download/$($pangoVersion)/pango-windows-binaires-x64.zip" -O "$($env:TMP)\Pango.zip" mkdir "$($PWD)\ManimCache\Pango" 7z x "$($env:TMP)\Pango.zip" -o"$($PWD)\ManimCache\Pango" diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 1e6d6e28b0..f6c415b0b4 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -26,3 +26,26 @@ jobs: - name: Publish release to pypi run: poetry publish --build + + - name: Get Upload URL + id: create_release + shell: bash + env: + access_token: ${{ secrets.GITHUB_TOKEN }} + tag_act: ${{ github.ref }} + run: | + ref_tag=$(python -c "print('${tag_act}'.split('/')[-1])") + res=$(curl -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${access_token}" https://api.github.com/repos/ManimCommunity/manim/releases/tags/${ref_tag}) + upload_url=$(python -c "import json;print(json.loads('''${res}''')['upload_url'])") + echo "::set-output name=upload_url::${upload_url}" + + - name: Upload Release Asset + id: upload-release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: dist/*.tar.gz + asset_name: manimce-${{ steps.tag.outputs.tag }}.tar.gz + asset_content_type: application/gzip diff --git a/.gitignore b/.gitignore index f7da3fa521..4606afd95d 100644 --- a/.gitignore +++ b/.gitignore @@ -58,6 +58,7 @@ docs/_build/ docs/build/ docs/source/_autosummary/ docs/source/reference/ +docs/source/_build/ # PyBuilder target/ diff --git a/README.md b/README.md index 02199c7da1..ef925be878 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Manim is an animation engine for explanatory math videos. It's used to create pr > NOTE: This repository is maintained by the Manim Community, and is not associated with Grant Sanderson or 3Blue1Brown in any way (though we are definitely indebted to him for providing his work to the world). If you want to study how Grant makes his videos, head over to his repository (3b1b/manim). This is a more frequently updated repository than that one, and is recommended if you want to use Manim for your own projects. - ## Table of Contents: + - [Installation](#installation) - [Usage](#usage) - [Documentation](#documentation) @@ -19,7 +19,6 @@ Manim is an animation engine for explanatory math videos. It's used to create pr - [Contributing](#contributing) - [License](#license) - ## Installation Manim has a few dependencies that need to be installed before it. Please visit @@ -27,10 +26,10 @@ the [documentation](https://manimce.readthedocs.io/en/latest/installation.html) and follow the instructions according to your operating system. - ## Usage Here is an example manim script: + ```python from manim import * @@ -47,18 +46,18 @@ class SquareToCircle(Scene): self.play(FadeOut(square)) ``` -Save this code in a file called `example.py`. Now open your terminal in the +Save this code in a file called `example.py`. Now open your terminal in the folder where you saved the file and execute + ```sh manim example.py SquareToCircle -pl ``` You should see your video player pop up and play a simple scene where a square -is transformed into a circle. You can find some more simple examples in the +is transformed into a circle. You can find some more simple examples in the [GitHub repository](https://github.com/ManimCommunity/manim/tree/master/example_scenes). Visit the [official gallery](https://manimce.readthedocs.io/en/latest/examples.html) for more advanced examples. - ## Command line arguments The general usage of manim is as follows: @@ -68,33 +67,33 @@ The general usage of manim is as follows: The `-p` flag in the command above is for previewing, meaning the video file will automatically open when it is done rendering. The `-l` flag is for a faster rendering at a lower quality. Some other useful flags include: -* `-s` to skip to the end and just show the final frame. -* `-n ` to skip ahead to the `n`'th animation of a scene. -* `-f` show the file in the file browser. + +- `-s` to skip to the end and just show the final frame. +- `-n ` to skip ahead to the `n`'th animation of a scene. +- `-f` show the file in the file browser. For a thorough list of command line arguments, visit the [documentation](https://manimce.readthedocs.io/en/latest/tutorials/configuration.html). - ## Documentation -Documentation is in progress at [ReadTheDocs](https://manimce.readthedocs.io/en/latest/). +Documentation is in progress at [ReadTheDocs](https://manimce.readthedocs.io/en/latest/). ## Help with Manim + If you need help installing or using Manim, please take a look at [the Reddit Community](https://www.reddit.com/r/manim) or the [Discord -Community](https://discord.gg/mMRrZQW). For bug reports and feature requests, +Community](https://discord.gg/mMRrZQW). For bug reports and feature requests, please open an issue. - ## Contributing + Is always welcome. In particular, there is a dire need for tests and documentation. For guidelines please see the [documentation](https://manimce.readthedocs.io/en/latest/contributing.html). This project uses [Poetry](https://python-poetry.org/docs/) for management. You need to have poetry installed and available in your environment. You can find more information about it in its [Documentation](https://manimce.readthedocs.io/en/latest/installation/for_dev.html) - ## License The software is double-licensed under the MIT license, with copyright diff --git a/docs/requirements.txt b/docs/requirements.txt index efc99da41e..cdcccbc2ad 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,3 +1,4 @@ Sphinx==3.1.2 guzzle-sphinx-theme recommonmark>=0.5.0 +sphinx-copybutton \ No newline at end of file diff --git a/docs/source/_static/custom.css b/docs/source/_static/custom.css index 343a51bd12..e7c4f59c97 100644 --- a/docs/source/_static/custom.css +++ b/docs/source/_static/custom.css @@ -28,3 +28,8 @@ img { padding: 14px 0 14px 20px; margin: 20px 0; } + +div.example-reference { + background-color: #dff0d8; + border: 1px solid #3c763d; +} diff --git a/docs/source/_static/manim-logo-sidebar.svg b/docs/source/_static/manim-logo-sidebar.svg new file mode 100644 index 0000000000..115e0cc8a8 --- /dev/null +++ b/docs/source/_static/manim-logo-sidebar.svg @@ -0,0 +1,87 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/docs/source/_static/non_standard_rate_funcs.png b/docs/source/_static/non_standard_rate_funcs.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3aa8346ec13678cf16cf4691887b2c3a75206b GIT binary patch literal 129669 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 wDLMI1-<3?x`j-)t+QyjJHuwGgJ!?HLV6V0R zpS6;?=DyGC)Ny>g*X;V=MZN-+^69}W55k=)?8(w!lqQ?9t-SZEZ8nuNaFs@z`A{Ve z9-bfM`VkAwPph9oJO;M_4itFII0IZF6q;!?!{4?37F(=}$AA3AvjAgJ+f-oSOs~*` ztlM44@^-Jzy8cLodCcpNjYJ|<6gf`{9PQ`$+3>XAShLzzlZUYchMp<7;ZKj>atWeO zg>ZnJMRMX*nAHEO+f+wy;FQ>(*dG;m)EZ+%aT3Dh1VXG6L&n)!w?n(K+xNYd(TKNX z^~2#Fx|JHNf%l7tHbU%WBX+{b{oU5b-cty*cmX)}^mvjqqrM8{nZE5br5+Fx^7 z%!Kru|3@t4rK^O;xzo^TpS#&8J1GfItZdL{k$`I{=C|j*zYlLCG&{TSH$-%@;EwbD z?=DaOWx`grsvBY0gv%~}@tvA&kA`!N8Xhb|@qs%cTIA8#=ccHOwt_}=5ErHIXXUWP z$4=c|9QPdPF115~><_4Zo>qT=J7Rqwtc0s6bJb16?Wl`cAdb-cD2Tw;z19C?`eX|4zLQ^&*OfN{EGNfd7Ef3v}bE3js_#Pts&)kq-u9R>B14`Xx7OncR@2^JRN zIpzEJn3|Qs%Qt2= zRN+blraZ(M@#CiD%* zH554#i3*dPuF%sG$qzM_xMo~BLCu$fHc!3Xf$>U*?&BAZyS)e1Gsq8iyPoJ4Qwd-? zyVv&m1xJMS^X`6YO$fFWbGutA`sMEj!8=>_+gU>9|mE`g(BFG%r`5);u$>Rx{# zvF@V;S7!o=Z!ucQkZ}v9JA+kvigW_1G;lrQm}|YC)Eh8AK|YEIF1zf~5ugcdz(mhS zI<7eQ*!VFL1Zjo#JW|)=v*RIw3*|~t!Li_S=H)+>Wh@a72T(tG(IDOKHSN~~q!iEL zsJO#Rvqf^;g{#Di--4##;E0_ zj9`gE53{UWk~6z^l7>}CPF*|*owFxB6BL{Ip3PE9ClgctoW@w=-2GFp7_*94tX z-HWbgzAfkX#Sl!frN{{*D+Mp1KWYx@ny8XFA&*(JE@IhtSj#Q&wdC7_l$0?;GK9L{ z(&n&)ym)^Jo$Fnsk9eE^lOs(r8DvetJG())PA8bxIXUNwm?!)%w1i^sa?vE<3Ai>$ zcpRDbXK<(;tc!#Uw(~n|kj3BI>}*}LDST^LzzhyauIJ0bu9DDt*PUF8n8zN#LI0FE zRQ<4&YNPbIG2ccr|rTc2sP6x%|lYJPVFpCCXf1Rz!{UG4Py~ zRVCGZe)%9`-p0wC`ErjhEAYHya8aJ;^-Tm2cI18u_@(_d01NhM#dVFJu(oq730O;X zSvs%y464$YhpUu& zJ`O>z3F`kh*F>Y(kv1=cCFSena1I4Fmhh=GVl&-d+f6$~fqmJvd@3^1WgM;LzWmlJ zY6{kTwLsLTT*rQ`bOVl{ZuBBx!IYbUMCs?p{94| zWg0v;0=!@-S@-HHnS^sk4G=^{4rXZ~a(Zsalf*6D!u7 zn>JcM{ufirJrxC-`l=x~lNz5d>yd2YJYmUKblG2ENM((7q~||6olM3JbWa1Vv`+(Z zp2n%qsmI&f$G2h<{JeKlzKH^_Izaqf}jv4FmXUTA&x-?iHcPA0R;b((-o+dJUeCFZ-L}3PX zGT;`CERojbKjs`MK-AEeRERPNk8w*alIWxiM?`SFPSjRxpAEHk)DxNd^^@m!#$zre zTX#2XUSJn|$0G$CjP-9?U!8JMplcxrlVfU$67K>ca!s)K@Pf9v7mJZVVkILhMab!0 zx_R4%!tr>zrrX#EXGPH|c1G)@$}egQT^nasHkmxwjwRR(??kjeXhM+)9>5gfaMNVw zvoev4;BZJcdBng` z_{yQofCpt1dc$T)v|;hp+AQ~!f$noioO;?|7zLN<^H0ML;&wo z8pmL(S)44VwV}2>i>wDVE5*U`P#iKYunfr-fk5nJY1MHF87Tn<;mEuWpQQ9U2>ZWD z(?o0!h%#vftK%fnnuu@?De87?A&Wpj{sXNTt((bEetHLWR07*G-3Y0ya%^`g z$Gtt4p>{VA-eai;N@7E1gIx*NSd;q!Tx`}q+|4q8(h>2}@=x35gfZC%hyL4b$M!uE zdIZb_iKf!e3~Wk6-|3KjwpqlCbMzD1Z1%S2*{&P>ayXEFa6O#RGDE>hl(TqDX$RN% z<-Xez&ak5&_-iAjCvG_ydL@wTO5fM2xd~TjgD_m7^*iA zBmrFmN%GLMiI~q9z7{8W=_wSFc}+F#H|j#HB!|+n;S49MwbBm(^y@jh{g_|kRMkmB z&eG_S{_c%RW*B6IvmckaP`IG7l34(fbc>hqXvx6 z+pfcZvyrq~W@)ET#2^vfc&-9=MyWNzNTDkpB*4fjBfhfq2rNvryYsR^&@46(XSToM z`pVBVY_boAA26RSw}bIIOBiX}7=hFr8g~oQ5mHV~_Scd}UYzjt4ls1VK^6d&F+Vif zlniI#ui)&%P(Uv_O&)VvY>fe!6K&2HZa7qRe9Wwn)Itb-1IWu5PCjacbjT%}|# zBcENzgt@>a$R0>76}?Hnx-RoeCBy%>;GAEF-eIbt%jT@Xd+S0&-CwU2^F z-MTnIeSFvt<}({cG^n@x0!+G=Byn4R2bS7RAv;ZQvAS|g@OvqqQ)XfyUQ;nGdXbiq z+*Z7hOK$+@d#8^`@gl{|+A$bc%7Uv(U>gD=<-E9izVtcTSm6j9R<1TS3cG4_`6H)O znJDb&lS-SThlK$Qlnc_>En`#Ah@HYIk!M9coCxQVq558V5ubALYyK?^9BH9nPV~iJ z4tM!C_!%L08xK&E%=aKmYSEk?o5o)JbqO`xN&w?+Ud{$Mw7}!mB@SC84?||?ZKv9G4`dk?u--A#VIE=ZNS2`4yz zlkXo2xbDC41PuEcFwerBOlqVT)~V8Ot!hi03nyB|Z1*e##)IZk*V?Q;FO0g4{3IIm z`=)Q*G$)G?smOi#`CjBOJ9{l$^k@*@K*%C~T(Dj6twuF}R~GDct=p!u7BZPT`b=9L zIyxyGn9??aPHf2HNRutsUliC&+}Yf>id<|MkKg)E6%eFFCmf;l(*`K*A8<2QGP?wB zHg-)ZT~MbE9S0s7lvlmm#`Zr2=dCQn4lChqqW&4!vij}gsgK3hoe_U;ZE3bNN3*l{ zq-ty?N86O(BM1#lJNq-3YWRb{!763ZQMr4= z>;+p7be)5?eyF%NSY^4zQeG|rQ@e3HkyGwc@xO(2SP#{ z0JS&vZprTl$TNR8*L>XPI>PNqZ`68IGivQRHdzUdGMZGoakv664!A}R@TiY+smAUp z5nb>6cm7^jBEiARPrw2g-+EG2t(*B~J_EONPQv#qO=e@Vv%j$u&k<&CDj975184zWfLaU!qg@9QJiG5I<$iJQ}YIc%HI&QHN&Fj7>^Ows2cKiI8eaq&bd z(Jfd3#kIZ`k3W9>E&Vur!&!?ay9Bg!JBzoK?Yzo7`N;$xq6-9ZGMj_SiI_;G*IiuB zz?k^kBCT<%C_|)G|2%w);dWq%N!IEKIU|_MKbg^ist5HKSlPDMQpwJ9<_(zqU1XWlRF8`$^-`<9amBOr_98g4z(mJjB zxeGttCQ7~DJTWjihM8#d_RG1?U7WwCZ9b;+THK8o)LRFNc8j`yYsu`IBy);$8OYOo z)x=7|2YyRz4?#qPVcNB@%p}5SA<+fWurAKbupu9^b`Eush$%-&qToc>9Vz@#>)LQHB3C8I*m=Gf4uI=^_`OQa!`Ym1K7v6JTvt!rwRxS zX%zR0zpC1fBS(>(G~Zj2r@3x~-e|BiYvYvdvnbLm>7-_FXLC7*)AC|~ybj_zy}aex z8oHP~BHj__m$j4U^&XcFne}F;U`QJ_U1`aBW&h_s~Xq z?;aNjToHu1*xJs6KZnfn?23OKlp8xoBr;Fmm*bs(dFDD zLX{2wVEr#pq18jCHuO2}KIKpADHoT}Gs$HXbQN^-Gg4}7Oo6}e(k*5YMns2m-cn`C zLugsgJw}>GMlBcVeyBlnpGIJASEO71RRL!MiLdv1f5$JDgWy`+L=yU6q_!b4Vsz$L zq{hO}>KMks^r#!mQv-Kv_za&e!N=E!L50J!w$ZYY-_EP-WA|E9K4U4v-%W?hZMhgk ziEY12rFt5kdchJO5@;2)Zi6K-Uhb@!&br3qR)Q@CGVD*zr&t0y4 z|DfnM9#5b5d&r&52J)KR*x(^U-Pky;`Bob;avUvIuE0os!r}hWq$*7alwqK)6n0^c zO&x^eYRbL(Va`>iv}k`6Bhp~TVM5ba^sQwnVYCg<1nHy9bilgwn{NKBDv){LDazr0 ze<5mi$c?OfAi*WGwbK zY<;b!-J=*CD5^QUn(<+uMv7#v{TSF(fP~BZ;@=IFai)3*A26l~V?(L;lR|bw9fQoP zOcbFvvhz;cE*C8pQ<0H_b|X?UG!iAAhy7_)4psh8cIlt0@5-Aq&uHG?BOu&2ZO%b{ z@q?0`d;5XyKl1h`H@aT71c^4|Th%@Z*i`KgfGA{(<5-HRwA(mI$9R0Cx$Wwr;FAFX z3nMtq(TYJ6-(l|z_PXsiaRCUBGBHu5Zrz0^_-t(>^?r{{@1+(U) z&@$yG#n419$MXet%x4vePB99N6`)vt!q3!bAcZ69ay+>W*uCwQG8hJ0k?FT6NK<9R zc#|t@Sfs;-)V>_9yZ2J?uXr;EtjAXeuHyZO^b0Rpxb&CQ0{)wM|$^f0D87-KJTwaKm&%z|K3l{ zxW9~D$GC>-&wrzp=l%?u{X1*Uu7V3n^dWibMP}$%B)@18q;#%`MO!Knx|miL$pdc! zms60outysz<_2YA?1GG$c%Lr!Sb22ZT$FBGEwt#SQW468VG2IgRC%WJr-drPmq3*<4a2#BB9TPrYW%; z)DGU)_Y)`*+4oD`cV6sATWE?V4c%_95eae=7O+K0QwV}tS@0h8iQHF-hYN=x#aZa#+KTF;gZauqm`x7~7B0J`w5l@Yr z^8fKQ;-x*L$CL$pSIm$C{b6+y-L{epwl4SORv#8{Szm5v8CJQeN%rp&CBhRv?7EOz z9H)5%Jec9-zUdI31)7q-J=W!9Jo{p|p57D{f<4xsHEuf}-)zrh_<1-Selcv?@n9Gr zU7leHwzQg`fYf|;sQD<~ieLw1b!Qv3XkOktv>50&hjddPdeNbSClC4iop_#Eg<5+4IUj!`tb2@I@^Gy}3kNtu`7kumPnTTx1!r0G?2&XT2+7E6z<@!?DBRIIKiRvI}R( zBWN28w?aH&u6Q z4}_9vzGFmaU@!AH{>W%mu5u|46X6*OJ2P_3VDFC-I)@rgghsgY&ezkR`_+?Jf3pAN zm$doblaUMrvJpO@kd(p%-}IN2ebQ(xOH8ye`>U~9;KHevN&6M&y8N#Q=TMtetb?}) zk}I-A@jui;8CulN);6;l0bWC|6m;AX1J`pS0%4y#`1>`B{`0fu&3_xZ9G8NmwVmL| z>*-|4`?JeW=l`S>Jp=LNL zERz6x*H|(`(5e0c&#{;i4}WAbn;bGfE8rBIfxABv=*t~0HqZj50%Z}yaJvU&J`a#+ z4*P$Ii-5K3Tlbt^R2CFSZik96O9ZY8bnQvHrB6?1$YAW@2IX~ooSB6&b*RMYv)C)XumDXsQgE5va$kccO7 zzs{5)m~)_HU9N&N{Jh9Qvje+s3?1}+%R&B&%Ms@XH4yP7^4A^(neMm~yF0^gHrTVy%w34!3tGAvJIi>=J3k zwbJPK3`;Xz)@0i_RKvTDWeyK5|Mgz zcQnWu3w^4$GT`NPocuf0RBdQfM6fnC+H6u>QK104P=P<}53$@CM7}&#h;dJYb+V9> z6(K~(*_C;JBk(wdNEVf{E*4cYFv$NJPIRg^#2);f7k9Z zGDr|96azgaGUSm&Wz-b9SB21%hmuaXBrnO;;c zEtELUp-bU}cWcYdhg{5}V@s1#wxaQaKJw`zk(Tjbg$@V@H~gy+5(hIqPPIY^lL?l+ zmgGtp9D)n*OA>Bt@2k_R-~Wm>eS9VG84E1G5L8vgPTu0=Q$VR1T_T-RX=WFkqU6HGr6lg;IkR8>#=1IVpan4|DfJ--hiyS}-2OkQ%R zwV%X&KqKCh-2O<>UTw?|;%i}Y9LOi_-8-r9$gP)jwy(R zvZ%RL1#4WV6-%@$E;7r&f>}_^9T8@ZdbbDH;Ofrnb^2+b6#duTsl*PxCKcaC8D$(+ z^>>M(U&>0#30QsTU7X(K;FSy~W`U)|&{vYJ^_8aC+HhD58)g(#i+aZ{(hasd^L6^A zhsS*w%Y98M)k*hx(b&au7yhrbG)^(rbTJ?{on@l_`i9Cii0Y^8ZQ5oR?cbGYH38^t z5pJZtW#xN~tgwF?mp+lC=SzEX8;B7HsBP(&z=1T=WSM0=!!$~WZr5wCN;w$v`m@Sy zZ;vj@w?FmQVeV=A%7KU_2qi^HU+@VuQw`KKv0;-(qT*2UyC;&sVOU=0Vc+cjf(pTo#eACj&hE2TD1~Ngjf2|Kb_(+}9z@zf zlb?*Q|6{oOvB!R8FIFOiq)r#($#MtjMp8OtG%Qxl5=g9oME?)_OGa{$<@VP}l~kQmAA` zMtJFrm;YRWvp9qS3SeMuEoz^MmDDn}+=s7cS}6Q9STZ{HN%LMa^m`$eu<=w9e#AoA z81PBaG}1~%b)Ez)lfNQa!I8@{{~dLN4{+3hgBC?a>;cjUQ=~-6H#Z>!TgG&?unHd# zQ|0gc(WCd(lA5{=1ynKRKumJw9tyshD#)&M)r`aAOS^;d-+_vuM|RAyJ&op!A+_I$E zctk(E{D(IiLzP@P)>^iY*vX8Ep^Yn|m0;zo(3+BT{}h>@i`yvt6f+Lm5{SsFd`B|! z>M^Jf-#8iH%1T0u;z6xYT}D8r4QGX}ve4k`Y+%cmv3Ay&E%jUdEeShDO@YEObS-1e za?L%6e;S*p(cQ!AC&VhnQVm@%&A5)yZ21p-|9Jlk2eL_6M;}VD`XEuH%~aP;+?<V$uuQ@p2I2zA(*Gu>8x;+7yj^@=KOWsa2S#>Vz0IvhQCVz${QnYZYZBF zfb&+3cSbN1u3Tkcx+XpciL)_jjHr&>JZbtC;@D7`heR#7m<+pp1gCHl7gDjJX%oNQf%B5g)l>2|1>0yjc6*^Wf^sn^yCC z;HOgLVuoHsO;=n)pf`t?O}d$LFQV^|F&>A0ZFZ%}v?W-vw7W7FChjxKxj)b5-}l;!-&Y~f5D4C6N?M-+AwwZ+&>xw{2{_NMyA#3+z8g5-5S z8r8ZIA3FsKY3Sf$r?U1Ma-Y+uScwS(>szztX}~ z-HE))m^oL6wxv~7;po8emx~)Zkl7L5&3B3wz&E26J^9U-i{kNG_T{lI>yHg-!p$JU z%kFQ_hhto(%eFFY$Yt<*SXr(?qK%1Oe0r(VVCta(N8mr@iJw`(vg)om#5?lgtc;WS zbtu}?AZ)RLKIEnFTdr(&cZY5B zZh-O6qiZdL%LYTc&NvYa1_Pd2s-#3=5wD#9TObKAm!zepmbgFe{hw`?-5qvauYK$Z z?K%J%aaeA~225(DB_yC>9PUM#w}vCOQBOrgMJWJRvp=t005v2DFc*6zdWvZSHj)g( zyUu&}zXcAeAYf?IrDXeDX)MXTm^C}Du&&Als7q5`UPMVIQqk#>4--`jP~g%lOFKBA z-JL9j7Z#f5V8a#g7O)rO1I!d@b#)wJ3e4U|;B%Ro9ZE|KMgRJgWA2asqL!2Zd&m~i z1UGV`N$ngEpMmJ&rIeJE(1Qaaht+oI`BJqQF^aeDrxUipb6Gt-;!@?DIKFis4K3m8 z0fQVepupsbO-dTx><@PxA@@EAefUAIGHhQ*ESX)CFF8pA{BKc3pu=hbE*V8d2Oprx zAwtwq`eScGG=YG^(JG}01|0yec(3~+`rRD3VqFH-)0kj=4afRdw-ItUU$&iTlZ#we zC8`z4ZxHYwVgztdqcMUO(c?Ev!c%j-0#l*pm9O;%`m+qr16&ZSbZ-00)ws(rv5hS?1>>-N zrAaN-A2^2^z4i;#i3|?f?$RgKm^NDpYEgY}rPw5|^Cr)2(Cf@``($*}UVp8Nm<09G zUGad!>4#=HQ6iVCorPvB8!NR4pUDA-Mw4FbBMdb)*0qzo@85BZ0UIY=l=G`Ax3$2r z?aMRz!YbIDU_(PPbq$RccI=2wv@Y`odcqb84 zDpN7wE8+-K)q(slc>J(X_$vJ&W_M>`UykauzPYrv#>K@2f@BN!fZ4(S4`ynH{(nYe0$OMPcc3Q%kmPV7RkpA$ zGeM4I!8c_dpRpie-6Fz|S2uE)vP z*~NCYULgLBxZii{kRDu+INYi~T|AmG&K$uXjF0oOi2Qkh#tt`QUz zl*s>qf{B9z`t|vK1OSWxM2~$c0RiOk^tx~5?Jg68gM<10_f7z~={j|iAiuu8UU^At zB#GShZpjA7l0E`3f>SjuCq^RO-=m|W;t~>}nuf zT&|XL!zOE%vGMVNyc0}VvKoW7;ga;EIhgKzDoOyR0#Sj-)z${y9&GYcZTu{p*RhRy z07vk2zXEVRe7-;|WuN~01__eGGZ^NWe;x zsh^neO`6@cBfI@!E8Ydbc@%n|ultcRX#zwbfW-3ZNz9N<0*K$01rJvAz6}ly9Wl_- zE{%k#X-C{}5ZfguB>_sNFBks|oFP?py;0Nq^DE?R(oNa=ssUt*A@%-HL;Q~a4n4@s zv&Mp!qqpSq-t~hXcL}@S-X zI%wm@IiXw~j`HZfVr=%!_+|)*P~^XPPB&FY>Q@|({0eVxT~;dD``G_}i0;ajZ%3aF ztaq$x5)=5-tF=IRvK~8RE(3Tc&Q@ww1>)ly|5za}>9YO_st707;P3cW%P5&BLBCP1 zX0axm^9?H*U^5+yhIljs@Tai~?)k}Y#&tS;{`1frUjZ{s#5K$$CC7eKae*8nqkMOf zB7UVTUI}ya!X#C9Qb8)gG5~F4x=?G>nb{{1j@IHR6evnDzS=4{)4@@>UaDjO06a7) z?YD=ObUWNi&hEfLpcB5S=dXV&OOiB*^#&Mv0&J}Kw^PQ6EN;8%)68d1n#oJdm$mURh5HsL z9;a3LoW$dVj{#mq=AvfC3@j{K`xg~2xO2Xd$9Cxehw5*we4~p^I&|Dcb~agHk4^Th z{=VHZ3$1In*D_nyxNmP`qubhk4vWTq_Pmaq02f!=;c-Rz#lcH|13`|U=bVvAhMbR) zFhyGmv<(mDX=HEIhIgCO+ReGl`}q9}%R-GoG(MBIt(aopeDP=8HJHT;4LK_tn}fGC zyx%t_FM+lz|6$5%_y=$7Z?aCjm9wmG(pnV_Hl3B84FF(CtNn5_WS;*n#Or8bVf1CT z&P1#l7{qu-7S`={*s|S}31b8{>P5M16rIXVaYpef^^HB3z0O5nlL@Cy?`z$IyHm^0 z!+lfk$4=Wt`bY<&g>F58yGN$xytvNK%W1$ZY=dqbC3&Q(t*Fk_DiU93 z&)`iIV2v$ou#D%6Qf#Mv{88 zoqwdKmysjqY{CN9e-qm$bJ5UKydnq7*7+OJc;yOWA+eYw*eH+T1z z>&m3oz)w_+9e7 zR%M3@D%{?j0?~yLa-Q{Ua$?=5Ppimn>x@OTj!JUa?=d68mP0j0RcB_Po1jeT!eMjK z5Gi_f3#R%d=O2vx4@)hV>oOU{ZKZsDAN5lkzwJHA#1oiZ?@d;!w%TVEyrNME%LmIs z=DK~kSR(ACvgtze=Fe&Q-JVOB7pgE)h zquF_x;reV^?7jM$xr>O%g6{il*|fkIZx=(?X{BQ}3_vh*9P`Suml%4sv5GLK<>J!N zftd&hetQgWF*T(qu-$yx+QR8U4-8dxzqseWUk!Q^I$vsvu2q~Zo1I!r&I6}QW_t~V zK%FMt$#fkrHc08VkJ!I|rW_#viv~XBJ8!tBvVcsdDNw}wT8&!64E;}a9Z~)7&;Ewx zc}WYI!KVggZqpEbC}3dw^yy!pK*6tK$9lS`*WY$!H_^Z^@Fyr^#55>hq^zv0qWc>m z!PVa?-8q{^x6cv*vof?E_ZU(MZS(hI0pnB{f!wbw=i$59eXx5x+6j+i3J6TYtLcy7 zyJ+wN=a~zG&t^lB8*F`F_T<+2Hn@@-s|c9>2osvAMvrWI2LXVq8?SDPq{&TZutlRH z5vOI$)6}$#tZbkW#cc9Lm(5#I%>FHx?ci0hLEG7rA)2}4auF@|1} z#oo$M9ZA-C4Xq7CeWIpywI_xQXO$m1Qv|;wtUe!sMmCV6n9k&@p4Hn_FWG(m4Pj z5q(>3Ire~;l$M(OwXqe)#5z*0mVQuvdbK;=Vl*4X!2BrCwKmIow6K3Z?kH#X-r=ys zNeo{@^&d4gHIM4^aI>Y*2Mzh!+CCACom1C3D~#0ITkxT ztKI@L${tq$a@5Pf7|ylmIEMCBm&ajcFqd(Wri%&%kPGr4bh*^CmxY^e9F0);qnQL; zM!Mw+dCrs4k~w_e==6;Dl9x?SL}MWVD&Hcq$IifWKEUT$$0QIR2tf-?Y3wNSBk$vE zRV}})_y`4A;}U}3pT#mnU&#aR*V^<8{V-naT(-HL7KzvX)Mrr6E8Oj#A|_8%p$=-nax% zF$4bRJ!O%+!9oQ23D&PS^Xf+8S(4e0A${+U`+0S!esLLqBlmfyKwfMlzhg=yuVa*& zxVA@TG6A!0eo+dZ9CIpTEm6VC+w=KfzpP$@WxDG@AUkXst;BG+HIoU0e*j2t9wk3! zUE-Mbq5&Uai4`uUY&=9fhi)enu4Vcm!K@2P-yLk03?gJJt4x|5VDdGyfqrj8vFqh< zyLB(+s+h8Ry0Z0^V~fb8&LjBEX98@nihD{KV0Zpr(1buxACV8b(*A-4$g@H}*F)3as{>x8;v3v)$?0G?* zP=NPx9KqB}qHr$CD|wa``YS9`d$lV2`9$V*!5y7Vj%RDH@t*e++7k)I0HmIYV_ha4 zB+LegWOl?6>`{17$l-ICbC}3Kl7|W85R*4xkFr1Mxd?DJ_FD<+QiM-s!}CNUAimG| zP5~S!lRkZ?ana@fx&z8-YUqNjC_cOp;#VUh2rVTs0kZ>d$@SJ{$HXYy^WCLkg76G+ z6V+D7B7Ddi#se`e`H6-y{rEId%YL9n0@s+b#H4@O;^rG3O_vu(XS+tc6AHI1)?=V+ zu&kXf5og>WOw2QiCm}EFytb~bhAtQ9lmZQH03JP%&dmCTZBx>iafud%y(H>kuQgbd zEwk!qbvL$%=Noa*3?p$SPyZuMV$9zx!IGDk|Kp{=p=e-{=NjitFqgo8w%V~>UT8iM z*KG4~Pi;9TGtZYY!S9Mh@%ck_#7t1;zR&xFob0@xyxfG|>`qU{tP({$I0qaaUc)HN zpb%jZEt$P0#^7Qn$E02Thvvul%j-ek!Nx<^9DT#wP@3=)MbPj@)Y~XhT=fFBd+T!M z+xUeP;#1++G@31}@ISzsy+x&H(qXMrsV%i0W<*{j_ zUeUytgaj`02^4eBd~`Q7*t*bJn^qh&azRZU3WnUJqk(5jih{+G8g~P2@vi^P*CM?M+R@1?42MhepMc z`z6_#?2~&%g9uln;o<9+Y!$daQ5)CE#e2zSPw2r8mi;qg5Z9wFUb||uq`PVyXC3&j z6DSdmK-p+&xnaQjd7i-b-ddDemSVXE9yP1SjxsZI#k0WSM#Qm3=2sdEfRZ)yNGgm~ zb3Bs@?U&4Xta~D&S)G90yPb2go3?(l+D*NmxOWh#^fL(<4;ZsAgeqX$gyOz_vt6n7 zU{?V;=mqpIeh;s+CNsGVU%x2Cc|r|F7%|uaMNK=)X^PkH-cdBFjDB=;S*J(R#udtB zZw4P`uFM%(U$orh5jtVEp^tS9SA2YT`@V;?dK@JxR#1^fw+TUqfu8R+X9Mpj1ZwPjSL z57vZVycW!*vmUt{J)_5~L#~9(cEi?sb$zYg_F9DrAp6X6K0yd6K7B8>fB1^)CYcf2 z1ryso5q+<^N=^5j?VZ@NfyO1_S298TsSMRvY-GOdB!~|hy#v3wAX(6` z6|cdZYwzv9tWLmDJznkd3u^})09;#8!x40F`XXnGreFr`92fJAbrYRB=wxqlo8w7o zcH)_HD1!0k5UL7;V$0Ljz&IMB$h1JLR5^Sv9zEtbvHf!+*_RS%1v!Spi*&gwX5Do< zeYEz*xZAdTKX=`({X02H_KWnfsj=SjS|HecS^PsYqC0sTN5lg!3lfpuc8D=SdqQQy zbltd>FjXYBbdmEp3OPVRAQ#z_A)yIbki2vR-!~gcQAsOn*`5&kCR+#X2s#a0)^2l5 zyfP(IlcAPQR~<qmI%9zA9^ znLI^Ln10MX?r>vO6pQyOTgy-){sTYR$ zplBOT9&1rMX3ewN=@NK(2l{`=SzJ>##I7Q-|@ZAkLs_6xjjpIm6)<7yV6#RB=B78F= z^)Mp#R&bhz8EbC!z3Ew+pw|H%qG{2L=ta+Q0G*)*t+H9nBv%XxIOcQ1-<1$)J zf0?T;{cZxOa8_Yc^&6Qx<7E6V3L zC&ktDV~7N&?{!PmlIdu;?-gD>q$J$`mitHNxKeRJn}H~zF@ zct>%&sf<5vbxD$bKW@Cgm3?ZTzW~ywBZ-`pl(&KY^UxG;*}|n3*RfQ_hdv;86Nw59 z++UK3+~!)$iC-{Vx6rbE*Wx$_J=cSOY16g|=?8o7c@Ii8$ix^$F1{wDxO&l9{Q0?o z*(bCu#20|X1ZSO2u1)knnz_G3DOIfV^nI*xsy*n;V}?9Z@IS}Gc2j;`SXpx-o>C2m zx#9{hT@NBM;X&(wJ8vrqal~P@V@%P9d9a~6Hm_cWq*56Zc(Ls zDQvNnl?GD|W6{k?-uS7{4JZT5nYL7i@h((atus;|1X#YQCVE1Y7}%c)x4;ktFP&WYh zcY&+0{=_VI`Q#LqjOzi7T+h8>Bw_;Ah!ULTDb6U;9vON-b* zp@#=VcO;QXc^FF`4iS>6;YN$+SsDeG*jIgzlg{ixFZ^1%*(F83tE&lxt|m!?`(6&B z-A9#GH!)taU--o%r&7t7zfQQj_qd`%KyuLJrLLIP|Jc__kHJ-V%>2ENdj>2K3<+l) z`xJ)3uW&DSZGHWJbxdlW(WY{q8(4J@RGE_d!-){LZaG|YG8NkmJ9<>TIiBL(s$ozq zmyZC9Y@C5pht>*fnUcl3>oSYY^Q?aa`i~S@41LSyB(B1lsI$&v?ohigoKx@sF$m$36=47^^iqK)VC zP9{GV$1SsYw&s8Hs+RAvhobz&`@HA=;1G>ba`A7-Mxt;?vGwNp;6LoCRq4Ee{@D99 z@4CjaE)KVyAq9TEg_TS1q7cLXMm^gJL>s>QIb(Ncb1O}lJVotf6Y^bvf_b_DEFB!U zpW}US%FmEF9lPo5?D3-D*OiTDxrb*QpU0FWMzurk(D{eRz zCMPnR{#ziqY01U7@b2rUj@}0Go?QB> z+Z*`yxZn9Md>*?&d!Dl5wuisB0&te((_JSPs^QeCn^wC45RBHFf|z2aX+W|f_%}Q# zLD7Wa57J3e{{eg!g@7k+4mx?-65MZac2Y!Gs2Ufz;_bje*L2>@EmO&jta)HhQ&y9R zqpaQf48;bY^bDR&C&dL=3<<`n&SZ({asr1H;M zBw0oV7yd3NTIr9%^f~Ob(g_bPE+lp7&rKm&Lf*9$rX$cIFWJYzZ@!sH#Z8zWBME4! zh1tq{cY5YyuX=r_@tnS-y%ZPGTDK7uob`i$hGR3z6Omiq#I^o{N#zAIG7^VwCm_7^ z=&{eQ6T23xn%?8aX~pR-i?kK=G#H=`VVy>T<9uTtL-zBHT;o(_Qrtw@Dh?w(T~yZQFdVK6}5|ulE;N>$o)YpP6&c-_m~Ib8-@x<`?c_K?%gieS!Mr z%*96UTS|h#V&WY?=ik^(LAAd|I|c>sGjfAJ^2(-A{RtY-&5Z4&;|p_zc083#q)5i2 z@ag>T(i;Rk5^^>R&Zn|jRgPTJl>~Ki^vuRCX!tq((Bq{(_O-gl7q!wr!D(B38f(+_^^-X)UBUvfu%oL{^*u+6r zhcc)@K|R0d-!=0WEx!kI0!NC?qmF?H!BIxTRe*nZ@7dombZV&_+Li4c^_==J>W+|j z^}06~TT#LMdCSc&c#Bq@xk=#1{aWf8;Lp_I@1IT2_0&15b@if6vXvMzw)obWQtUl$ zXJU-oJHkE6`+^@|rLOz4!okh6Eo*ipJej#(Nb}kv$L8X0FCSK@Qp?tOi>6{!(jPPIwYNR8t zBS;$RrOgb5N;{8&1XB{!ND|(@5wZSLwvE~4TAGBopX0@A*{4tBoPsV{i?YMEeP*>c zy%%46XLL>TR3e;>Q3*(z56@?v>)PQiLnl&H1;E5iN_64bRPlL@~ ztHMNzRle3t6|KAI%3(#&hdk?5>$i$xM_Gi%G>yU$ghInxVEyrR$zeg^FEcIoBKHHwC`dTB186v>13CvK=l<7&PL@x#|03)c@$dTO-x!|e zuU2PyC)?(|8R_A9Sd zI|Atxk{7?=`OjU@6Q66D;EP(6l47oO`?tc_b;Xt}!HmP*))XminL?w2?gFC%uSh1GIAi{%J>qUExsEuslW|99hI)x9(5ARD5{42ekq_H*W zLf(w|aZI|@J!+ycw)rCc!FDA~gnV7+Y!AF~L~t)Fb`{N=y)Q z+BjvvtO@}_6r?2f(%6Jx#4s(M7vt^HS= z%q_l6`PJ!lKINIv%}Qtj2)BYJ!|8}WZXpog?v;!n=pA7>COJ)4iHb9oi2j<*17yOL zI1+TG&3ti5?Wp2>~l;>L}*I}Pt|Ft4@FtrD}vqQe9<9SXTcsFkEJLCSnUSq%A4=7AET`>&Dq|0k&c zKvw_z8<4qJ|F8OEjO_m^LC&Q1(B=1G3x|1#F3qwKO^kSi6qvB3@QG-yA5pli8*Y_8V67PS^ zNdP!GRb{~Eb}|R6Sj^VZ1VAIP6)_0op@AWAA8-ze-P!r&2VTgVf;j;Y;c}I-1+A89 za&_gL`<2GEYAtgegxe!0weU^*F8EQOEL_^#e1k)avRHWq#)ek_ zNpJTu;FAwLF#mR#Uvcy|gVQ+2;ugU83tJ_Ky}4mkS67c9#*PDNDA1kxApa0djr1TS zAV37DkN*dqm;emWqun0GaxJ!%NO-#AW@^o(CBr5vVzI40r_{Ok|d)e^f4$JMN?;YS&j)`VWWKZ9(I(CZ@*t$06pNg*k5VKcE zU*G&7t9;#R?bX(6jgxzIbk5tx3~lgom?DNy5_~2Hc54b=BZ$&b9II}|t=52H2Ov7= z1?C>n|6ZfkR`2b~klFBHZ$B5WQ7-y=%F+&`mxt~Cu-#mtH!wg^FaXdm#UqHMzWD?t zd||5_FOuV2WRum_)^@`vRi1%WgxYp1aMws^Rrtoc!S&^q8kh@K@Tl z#h;W0Yh+LZOl>BC=?lAs)O3-K*_BrqaWW$f6&-z>0*_snW}oK))ll(J_j@zjhSUd} zavjIpM%!ifui6@#z%iv5CA!CbTsxakZ^|y4zf}toMba{kcHgOO7PjbKLy2Bu`bv=k zUjL{YJZy5_z>Gn2YTnF&Y^)8ocX{7+yg-dPLTa4jk3Vbrtk<=UD_%;K6H+$ol%;rT zIB9Wr_CmV}(CZ0i{TW$I4Zg7oaWTgmQ+9^yI+Z{bGe9P*qN*VEoI{%G3j?f`cq9@M z%8-I3lwZ4nbK>x-3G~tjwoy>`r}fM0QA4qnR?}-iY`QvA+X!@R4fQ#CRPb$Xb-5-G z@OgQ2f02Y`K!z~MNHz0mIbj-IPNG}YnjE;|UC|AmjG&Yzd&=~eKUJL0GgV0nQte_9 z8k_{xcDyW%C3d_Ki6Q^h*%BKpyONntj)PXG@**)U8yfQbKyh&)|dm< z-LZ9VYbX8D<|?ozTW9=bb{Pxd%uIyI{PrHr&Pm&@!NDEsYZB(bRTSQS3%)vcX+*gCmbjHo>-Q(YDS|xHYTx;QkFyV3wEH{8t*|c+ZL7QnUQEjNn zuJSx^UNsi*6}ml)%pm#7HW&IWp_Y1%V`gS%s?k=7@f|eXeeK4SD?Z>LWbS!K^gol;;Q{!yDsUmAN z+m&zD_dsB|>Tgg18OFw;V4YHJMFOiOo)tO)&tbb2tmJzX@hnwCc~g?{}-9b7>bNI zbp~WBwSzY4m`C1Zox~p=VJL@RRdrx|U> z8H>E+QQrB)^&nU~%00<6pT}yc>cO+Gk~PqP#;1IQ?FIh?q3yfcpBmfDP0^7iZ^V<# ziSUlNE2!fGZz;gX3i9f)`|H(xGZ=>VyowQO zi05B)TjwUGq>m^0f6#EBouCJB0~k216EZ+00Unpn52V)f$Sl+9)DkX_Rf5 z1Vu6cb7{%I4-jrgK7NyYg)fueQaSb554k!x_2_tw!?s<-3UdV;jmObci4r*tfZctkF7nDpSCpqOH>59GD4o`u2wd^$5Iy+GzBu9H>%Us=PX-2tPrWTK; zpJHLjGQ87fU8sPey=*{DrRG$w>jL_Db_a60OkGkROa;3H=^AJhRAP9D z&Ia4um$%u79+Sw$r4`9M07RIV54tABHUom>4GlTf9JM zX!O#Gup}fb4NNb?B}VLI0W7k{QYyx3Te?X&wRF?x3;7H7vP(;L8LRW!3lLVK7$kO@ z2swS&s?}Kg#JS?OFoy9Gohw^rH#}SS%e}{u&%*50R3UKjM1(}pdM@2LE1Wq^YI%B> z)xYOiAY?n8mhV1;m0?Y zY&?6U0jZbv$$^@v+oAX|InDbO%_lkgIq52>%VA2jh-hgO8NMfu)4o3V1OrR0wYhdn zr`xsM#5$2^nU-@N_*NAdEm-@sMmP|Z8iH!ibV8Hi8n#ijo{pht3`2gd0-;Yrz?ga% zip}#n>9195t_Ca2Yz-K|i&21ef?sKD%5^3yFB@CY;6VfIK{?M?M@P=6>7B{i|AgkL z=HyI;=ZOl*Mnh23-Iw#{8IFqacB@-$I;gyA*SeQOr>>4DYim!yD+9|M(>UEN%2a@- zNuG&%&`(Z{mlN?632nS^H#)vdvh+tg8@9rq+fI1nCugH07PpZ1BO>2uWZf2(3YRp4 z$Oj`^#G{<)cF+@#H1jA{D#e>e%OI%-8xcw1U*~y~xSe{4lubooq2tkT2`Lz9N0OE_ zClX8xI@CL9p-&!FBB&4bF2t-;S0rJrX!Jlh}%3ifdpX-%paVX#%Sr9;sP&Rd$A|oAO6<1fo!cQgaB>)!Tes zD`_9*UH17_Ivkc&0#eRsY1A~jd0u7fU1az;e=j3Uz<73IaE7mH5IRw}1CLcOUTcS+ zQLvz0JoJn)qymY;2RF&1Br0#cgq=3fz!1!Q_(Wqlr8vWbP}n*Wo1)MV!?kk++I(bU zbY#wQACP`E)X615(`rB8;q9zSt!j>jDX9IZ|Ml10U5eJZCD5=MgS)YrMWM(CF@VC3 zZYLl>Inu+SVo?LmIT8>fAl~ARPcn;ivGGO>3`0)m2s%lEa`ZguUNVkFZ-lfpt3cZ!>l5vWg}L5E@QZmqhj&Ln-5E}ocJ4Fh6?qsn>&5#v#g!rQ4`kRz2iqQ2 zvuR@*G(DG<@=Z!tpqx-#v)dm9_g+leV(}MbyR4%4so=7r_L+xrf1S+QrIu)rX>jRS zQAQzzxh(hhPKU(b?aFxrlFqe65>Q|mnBP^@_f#VD2IAlN_q7E`_7Uc56MJ%wN|a^b zZT59=MefS)-!kGfJvme!ovggVe{KfDKJwmW0rfTK&u;4Uv{;S?N6|p*x2^*!j2(Sb z_7w-UhYJL}`b%m(OIt((Yk%oVt6InVCdxg?h5WEQsrC4~jASh&UBKoij%7n3|N{MJ|iWF%0)QokxH9f`ld`6uId*4;G)vN4;N(N~1Jq0yN z?`&QlXxbl+j+#tfO=2sUFXwzIh6r$vt$3aUF(z@_;#&Y!=Rr;(DNC={4G8V?E8gpz!br zp8cimiK}4!wx4MBXxL>b7ms$rD?45bBX1YUGDNAq7*q~;CzO0lEBuRx@V`ZiBxq-+ z3_7@N=VQ?;0c$u!>tn_cde}dI?IV)PX|MLRzF(i`fmf`bi8+(#xh)OK5{M)rj~z?u zX}aG+P5K)9M?^-V?3}NJhCY>>kT8C<6m3_#-xT}4xeM7M~BB1DH;62`E3q4&rnzS@!o?r^rA+xAI3uY^+{UV{YJQO?d2>N4 zsth2Ko{@uoX+>WwEE2;-W&@t|#&L7A%AZfk50hZg_{{iI!8G~$Kwg@|9MxoGw?zy6 zii=b*e@n_k5wYY2%3Jf`wnJJ{zk$}LJkM?cS47hNK+Ql-Wq6t9@Nb-hhAkpkoGiWZ=93jsQADn8x!ffEA%ZAUH*jzzBm2bDavMc#&Cne2e8` zVmOh%IPCREq%HDp^!*4lc zG+lvi71O(*-Tzta7MW$~R#gwTqs+c}|oe*sfR(u4cW6y2xi zn7m!6^=SIhM@lgu@MpxLxso`D7MW#I+{3O^CvKP}G?)Z!>fnXg3qM~+Yod})Qk}w;X63>|DLmW@%{4t*vw%(2ooGfvC*(c+gH(+<>{}Og^ zm!ee5)AZ~$Cmv;~{5ZZmACz*vy&BY_(5`C$w_VgSZbu{4Stb-%g~<;#B!ERQn(%j` zASg>cGNvQjKI0`;RN+R8@zAp)S;8mb&KHxmg>k!pL^wg#=Tu#OUiz=j72cs`BF=W0 z+j+mxLEpil)5z@EE44$0Qrl4cJy6?#3Q_ zrwFn^Uk0QEL&4wHTFJm_R?-X}R8lO}H;XU(@W_t7k1WJGs6#jFRh8S^9`K5A3mB90 zFTiH3i|tR!o#C*og)K1HQ8WDMIm`~d8sei!5sVJZ@HNQYkD(fRf&qxK-UnWLp!y&t zd`BP@Q8COrqpyXnE9NEE%S9pQ=_KU%_ig;}_xQ&+`3HDx?shiYQK)Ts8_~Wy!VI6A z`<9qYWwyHT4KUz^x;-4;9d9P^+NL1N@@|5h?9%>mXf!dj$JJ!EAk}_7jx3?wPVyu3 zyDv3091f~b_Vjp&mhk|ELMhR2OVxx8}CwVNibml2S=}O1I*-vXIN8EV9M4 z)3Pe99lcI-u7s8r;+a$EskYd3GWzt(buB|Dr98Ci>*mJhskL0WLB2_Zl~i zz&N+Vz1PI80|fq&GM+4vMP@R(|18QC=D)w*rwsG{CWmncdw@QKSmAAG+M1EGYk4vS zSkG~yiXQx3FQiZj#aPA%XZrMdYGHY-O*p0eg=$Yo#<+clA8q{cokzJ>i`TgC8nn^evBypsbg4P`u#L(EVaN^HmT|!?7}QZREJJ z{sNj_Q&Z2cLIsw~SsyQR8F^plv2tF{*7vde+%e5!(&222>O+2|E$vC#lqSFa2Wh@Yvj}2D8}3EGRKpL zGwKa|YoSh7jf<_i(_iPteJ6|34&7}p(MehuDiSwTb|YRIMi3Ab_U))hS_nwk9lz*L zO-AuKcx+z=ME33mxbF^uOs5XdAisSh?N_;Gd`%rl%RX0V_{N(jeh z5tg*w;q4bEkn}wbFc{kgf>X4)761z1_;I1vL4b~SZErr&NWSG?Q^`4e#z|bm{((EH zc^T1jG9b!E=03C9lt9+ph+u4Iyp$Ty@l^qA^Hqn&ZLVf*=lLYf48ES&155JWld|wJ z1DdCkRjZCSS*R?3O5{m_?AYebk=`IBxEfOl+$KBoZU-W`XzrRAwXbzXS*S^z%$Zp< z(qoH$AnLLzF7(Aznhr*OSMhz$pU1}PmY`flvyYuu>@fX21*sK?PgFw^D&vb`&aq6rI0Zd9mE0TB?6(9**#gAnU;pXO9>n+rdB4dCr=b7y$2HO3?$Y>yreJZ4-W{k*3hg z-GyZ%BP*VV=wNsC60X)m0oLP^UQEaO3m8QQVl^&J#F%(XSJ`XS8^6md8O63+;Y^U# zq$bw1PvmLkZ({tWFKZKD(r8vM)**15O<;DbU`=)))9V}o|4Uc1tDbLecImkTo+F?2 zkCe463sOs{Ia_lTCgEelgn&5_sIme?5EuyR!K^e~$~1sOoNaUn?m_NF_c%Ks8#5 zs5nE5?#3Y0oX)1!+?L=59#7c-9eh*VyC}0mm^eZTK`i`>E2Hb~FS(3A$LHcI&V(C& zOd+0!i)N=yKS;Or38yYZ1o-^(8oAIj3}8^P-Ds9DGHm@{{Z#h8NijRqJI&)m7(G?M zKl-o7GX=2VvQ5ZH1_>cTh3Y&V?ILtsRX~5feMbp+*MlPTEkLR6R0*@4OK?xx!hTU9>&PjzO*^&MG(+iD=1z?;)ktjOtY;=O+QfS=#KGcO`i0 z_2hrLXkJV4j3pwIdI%a_M>eM*t98@CBJ`?3`g|TWX!!)-3k&VxHMUx0X?Qq(4P!}! z(dEO|tAE23RL?Ys6*-q7!xya`(eCiIS;twnV#4~B6&F#%79CB6jnJ{PZMU-8GoJ>P z1fF^yJ6hg3nTix9g?$!;*&)B0On#6&3IBcUCbS(;3TOm%f8HAMzl;fX)YqV-H_zv{ zEfi+(P`TeQ;;-d7wn+r_3e$4h z%l8K(I}R^og3WQ9c&>BWo)(LBcn~qc@d_)^gyKD^5Tj*6Tp05Wyabq^+y;TOh_z?7M4IxSQZ)IaEd8e31nAf2U*mIJ7kM zeW(XugER!kseaQ->?oiGOTd=6|EW4#V@q#yHT3f-o4{-D*t9|)G*CoflBg+;3X|qz zS2~YVkl`9cvEF{qq&Ncw-ir%)KlY$!O*7)Cz;3r6NN9$k=R zzk(7NdDcdCIxal1&WVA6%!Es0K63E!Sk#kiD5OlqVH*oXcvgSFSYJJZL#G0x|c7Or7HJ!E>*d~VT(`m2)hH^`t_I9WaTYYLpl zh0jF(c72utatRjd#Q~n(KwCzLt~)5~u4{K9hjsx}wc=u85*~=>P~UcQJVPHI)K4Gk znC`buVZV!^ok5DF&T>MHr0s(wMco7|e@D5U)fGwz=I;iLP%)>b>o8_2H>g z{9-_HQ=N+E;V%9gSRhVC8GF0^Vw;J>G9s+j6MCP`ef7i!MNQ3$8r34~X^!u2Ta-g3 z1|%7=ZRN1h!UATx^`2)o{HHw9O(4rgwkG>bH#_pumc5wv=8>;G4y*ECRjbk)sl*0D zgH-geXUx92L-H5>X}Oo6$fXUchfPzCgYvYwIlmvADkgIJs}EuH5e2dN90mbslZN(W z{K+XEMNL$M=(Ya~e7z_ixV)ePq%6tC*HOA>8`z@m?&3Ulaqn@2SZ4l9GQ=ouUu&+% zzinSJ6&4^3R?Yq*OJOI8n%p!qJ=0bkQ|t>v1ahzh)q+Eruph)dUlDy+sp_aZqyV<) z0F)(^R9fXhN$$&uYbs6(^jPNk009>$#WNE$OIb`xLIMwJF52Gb3LMU^>>aI6+TG=7 zq-KIA#XtB~e<0&h^ir-9C19;c%$=YtI(h*Tuq}O7NC|_@UKDq5+co}apC%sihhd7o+AmL*A_2KN!csh?5i@{#lTjR@5t2en_NO0f{ ztN(!|D*~P`uJ{utc~)5WS0HLIL5ocsx>3t$q;2(GuF)n2KJD1R4RXTO+${_LjXLax zo)=8$VDEtjsTbxu9wB_C9d6`LVJ8dWXLHrhBpg?qs6{hUD!QOrviuab(H?BU-2tu3 zhwYox$UhT`5+deUzbnU-5oNFm{X5{|`Mpsbnf?rSy@ef^j~@MJmNs?@&-K}uAWVE@ zmt&z@PO3A@%23^psrnW13uD((Al*URe@WY-Dk4}|fT>|H#Xh&XK17wO6$7~qB42&_ zdQcW3a8YbXstBj{CL^jer2UL6-g8=gJ1PL1^H6qarXm=3`MbJzmAXv!Lwk0Xw`1dUu9(X|YY zhyN3ip{7&neT|;E8c8o)YAr_EKG@Ljy9ogofe(p*p8&@ZWB+*+Z93zHp8Z;Z?zv&I zwdUF>Ek8EYWS{DFCIf*iXc+k@NG;)Sg5r*dI*{iPqD*|`)q+pSsw$ts_BW7eZNIm3 z(+%M22&`O(1utuNS7Co#8^Z+n8 z17J{@U}qi=EkAN06vk5b2hO?LoknB-b?ETwSnF#)h2b{*Cj+Un9D3>}wSZ`cceb`3 zlD0x!0i`V6B{Q%p*9YVU%TS3Ng(rR%gt2Io2MK^z=Tc(+%f^z*>|B@2(2t?yO$Vwh z32|x^!Ph1-Ulqt#HRl?- zRM$D7yC9P-QTq+;mV&#U`*+CljU0GZ>em=T2cTI*@bqS2s2@;C6#SJuuY;X{s9L5M zzMA)H3OxzvBttAUmE*bJs|@7fvknqws!?q67rUduKw4ro9W*0eY=hX)J5dn`aR$$H zdSbb_S?qtQmHHqFE*}j8qQ_b*XJL+k%4TQSzi1gSq+~&}L0-3mN^n?4Qwd2Ug|O>S z3tH<>V+6vIx@aSGtk(zWNN>lJ6ka>W5Zu}rBGmGECaB3zwy=hn(*gQWIGlJfsU$>4e$)1j@Z>|@^kxZ6{8%rvpk2I9eu;rYo zqZ)a^Kj8|oV0eYNp@N#GNX@}}Y5FLc7ep0L(ziqOYOgv3zdCgP4W3-X>%S{y zH?>}>Z^tJ5UI05OU{tiIj1)2#DWy$4gv0k!Nz{_5f;Y3Lp?#t6*W zH9l=lq8A#pZ>l1KCEVA{UMR3RwOZw!3INl={mPhnJm~o`-gD2z&1@`x@@T9U~3gX;(vOpf@)y^9D zSlrRjU0B(nItPPok@{@H!rs?Zvybh)1poS=0r^G>VWcj24%&1wU7+~NTF>URB}{4f zeZ2<)`M2@liELsbRFXi=rQ4nWRFD}^)owNX2og{D{qw6lF7ldJCd6&kqv=@-`5g32 zjawnnWam@}*Jf!?+&b8t3x1_PMNtY(?{Wx3sirB!Ow{jG=^F?!Xg;TVeQ1aF!N}3- zE7Pg}zNu>zn@yV{XZaKnGIi+(CzabMYtQ{q9?1Q+bi1_t(ln z2m5%}J>0jwteTgY-qR*cX}qP$0Vp*;DNI@aqv z6C5LXnBJ^#c$zhlI!w-q(*)7m#(7ac3_)53ToREA)^pp{^SjeWsEo9{%)rKbsn=mA zB>$5WjiG<1xDu@e*$lf~GUE*$N(OfGk^)$m8^_x;x|YbUe2 z5q+0�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 z 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�w12wZRF4=+ zp@MvT+mox1DCUFo5++rjD~7(@Fs`wYM$FDe!sTEIedGwxVV5w5GDMMBTuTkdClHH^ znUMIu@ijUdqwYm7sZ!Fdab3DqIe&S+^fbB1K;+QyofYN=GasWOXWWA8Go0g7D?t>5 zBK*wH0DnB&3ZJgUmnels#$GHc=|bCM@ykxQv_;QTTcEGlRBDU!uO=1VHI zj^P9lvMB%$1EXb1kh!!Vb0v^m{RKk18sSvuoq%rRh$cNz6BgaKSLv;Vn z*IAGcrCnWu$OM>RA`zjRny}!sr4r+TV#S;*kUcWrgENAOL~=3T?txUu8H>pZ^lxIt zQWk6l7}FeQnG0}TIN|M{UuTJ)&XD2=@g)C!qKyneb2&JSTnCsga^lzVRgRz$AuyDR zu*4$e$~U~5Xw(m`*E>TlP>m&Ba_(u2$R8JdvtI2o4Xv;H)`|2u<4N9~h|!ouFeU~z>x}8X*i@f3>a=Al9Y3UZA}lX z)z=OYmyF-_{X`!Y6td}Zc)*GoQ&HKBj@R!2-fbnp;qMa%J-BHXD`+tprNFR+bJi^d z?kV?d;&$%`EJp`m(_xGKo(~IIOOE>k-2-u7UI?94MR$gm6%IBkV0`?sSh)b@OxLMZ zo1w7if}H$Uh%AO-$MHGMy&Hy#Zg%hzNw!W;8S#=Q)sX6B=eX}T;BL$muF;QRF6~xl z&P^Ce;OAvwai;%T*# zIV^tPvysloure7>f_$8LE-79gNyvw;t_DL!!9m~FH6g{;l<1isxXv&CS+Qt=0*$C* z(No{8YwQ?(h2cT8ijmSwEdEN0^Rs6@%65TJuDrQ1(2xx19fL9)M}K8R%VVw6|A6g6 z0It7iw@7Z}kuR*4VrC^^? zgNs>hoeKGL4Abyteu4EYeI8cC|KCX};z;u)bB?$kCyPZW77T)14sV#pr2+1{wq_}i z6tPK@uZ6P}zygBN<|{LHmm3RTs7ta~s*r~xC6aT@5-~E}u4YJm2>1me`?8THr=V1f zh(>4fEny>hOtnMcZN}v!@*${lLcbEyRfz|RLV(AAJv@SBsSQFk$~>B8r~!5?Mi<$A zT^wq&Wd-JxR7H&?ET?6ROic7%?`+@OX_eyhtmAIR0=7oun{-(dSY< zsp!GaVpbW#@WZ&()9G^ULQ2&ZVhBwxR?fGn{H+>}_xFE`*67TL9W2PK(ry<)v83{+ zoQPEyf;cqz8XnV}rf4RF$9TZ;Zgg=ae^%hr9Q@EDkEPgRzmMyhCx(5EA=kSD)740uLG+5}gcb@AZN4>vuIh#x~mn`FrymVpM2B|Y0g-y6~z zkMQdTaPnWkhMAp>1?FuxJbIPmI#$ zEI%M$uVHeLkkll3d6hxjd5!#aKOenq9nXdCBqe=s+pXTxA7S*L#%*>Pnk+2yjq{Thy=9_`%mNM?{0I7r5R(-N9 zSCp4~X+TlQ)nriz$IZ7JRgKN1fizUmuQXc12Ak*?a>G%5(SZnkMO}V%w9BGM;MWE} zV@S?cR*MrJR<9luxIj&N-?8$=jG~7js+BWa=yGM&+w|_?@n5c`CDZXJ8IX66-@FgWW|#OU_&a+n^ya7idV3lgsEe3V-p| z*69F7;!M9e^AOT1U9IPNQRPIp6k5F5|qQ)O=aW+UY|O<&|)Av~_JYMtFhv>Dj0IPc;iH+6ZV8GlIQ7#$yyMdgc{mC=Jvs`$+46<`wSS#^i_oHz!vLUDxfHARhgx- zHR*JVF-NoaDSO+cgo|#hGoRD2@y-u6)uuD2dll>zAgt}b{AH43=;ch8d{y|pS-AkY z>}{*j`~Fx?Hg9>9KgDW4begNoED&$VismYPWlI<5Q&W=(!e4z#8@Ou@6Pf=6FRYw?vu!DC zLS8F*DH-f>w}s??pn4yMAsNLQwLkTRQ^hN{C?44&pJn)-jfBj9GSuHU9m9d7BC=Y? z%=uOvTl#xfuhqQSUMc4Om5pNz$<{}<^?~Jk8{OI}LL7^c1AN9*dG+T(-82Peo9}az zm_0INi`71fWbBl1ZI4aPtBPa~H^0(rZX;z6r^i=C`;bu%b~_u{S@^WtY;RBS>mA=S zFdCp^3c!tsn>@0ZTv{g5Q1Zl(?hlNUd;ToEjLxCAezzgj)tt?e-=rx&1O;X*oXIMh zXG7G?kF9NQ%+4{%P6Dl?qXw9*bMzX$ON{F2ZLT2tnd93a@+>K~E`c9xXOCZO3j5ex zf1(Cd5>fXRr#u&+_fhjWcX!mQtE%r#P!YzO4#a(AGEj?DGB{j!ep{Hi7|Kp5@mt<% zm%wv1L884zA}A>tPxAF;tWV}64!wPHQ#hXiQotCao zQ;6x?f=AJt@UDK^W%vNQ12s>k$@w7_Ln|8?YOo#nMU9%$P=&43uLw%xV@>1B_5Mq2T{4<}t zqGf2D7Neb-{%qMJB0^^LuP7SoUZQIAbS$)RK*`2_Z)xnyoD3F6n7^5jH4)ys4c(r& zK2j?b%CLEteTZ^~k1c|u7p``B_0}=^0ehev>Or~$LTRgve9}oY!Z}rtbm$V|)iAH~ zi6U8lTwL)Q{e0_0NE3A0bnJ!jousycirM$XpT4z`ri0u4H-P(cCGpT}_7iQS6sN5=u&c#q55Jds}N# zSngKPX;R3J4!^7A(1(puE38 zZk;#Ih~y`Og$|cWy4X-sFl@2ElDs<~XNd>CpeqN{AYKtI)oP#&+3@$_#w6!6v%yYx zE;YyZp7YS)@`_QQ*AWIBsElJrsB>QMHR-Za0w0E`+pi5FN{4O*4-zf731df^ z?w-)JzI^1zWn~ug*Ffrzzg_>XM;b$vgXFE{#u3g@oAFgKMM4NospBpZ(Bq=SXa7l{ zETao?dgs*9@O}o>RI0s5T3%KjzncfgdM5ELlc7| zBIJHh1`WsU-N(&t@2T-*aE8=a6Glj_=+<(PxM`Mq_so6_r7kD+vR=YN=~Mkg*pUD-$SP#OJRqR9bUcQZszUErqC2v?07+bfCdK^1XPM`U+0|_G zGwglaa#69H`EwW>k5j3{SK;jIZxU7^rn8tx=7HYAJIqB=a>eg$^jJ{H`cjcI z$)?yv+-d2-?$sA{asKg!$<};-e)L|C6;hY><{g%ho3!Vd@?8nRSpg6Wj?O&0Yp9_X zs7<$i8S+TB7>Al(Ix#;TVXa6w{|-wHnHJ%4D$xc{#IqKw2IwAK+-LcD=Re;#5ua>a z**BSpD$h3VsYTTt`DJw#Xc$?B%LhMZBJeoL%UFJdALU~XJFKiWx9-4K&%|idoJhEn zo5lRn9odVGRz`7tC~cY*<8jHsoLA+xxpgXUlOLP;qSQ%r5cexsjCeiXc%4Y35W zDO#@`Z`$l z3n3Wc9P3N!w{wlAF}t45w>-d5P!Q*sd#(yAE5o4r*=#zR-<=xH&57MdDoiZ$02svZ zJUW)*p7(D0Y_}Scka)7^ho761dhEkOSoj=l@EyEr{izV8rv_&VHjS8jUg22D@CE0W zCicHq&UwEE;}RM3bnAtJ#pc6`FkQcQ3(zXsxCdnic^sPS*0O~@KcZay_Aot|rlV1= zB^R86Z#iiszzh2>f{s@JswrQ}Vc^+Mg?II(ONRTLU%E!m12!!9@G3O>QNho1WjZO5 zv?sKh2VeyxvC1F_9?A^zAj$-vKI0DG7a`)zn1*&25M=!24~8I|n@6SY5176+nIn1j z6Uio%zGHgN(#%&P)kvg;6ToC>JAgdaV6r><2Ig(R5tcF+5A`&UgJW+7I%BnoID(Rr zu!qXs5Q`VkvPQDE1m(>6#$rWn#)cTdrY7`&Z^P_XA5~XJl8%(b=O-TKCg5F(76t5w75s zq~hna9bQl8N3Rxxf84iU=i1<|vmgrXQ_f(dRU zN>vBqv~#=2=9&`ZX2s`nlS&HqM>|^13~5+H+YI5~remql@s3>}+Wxv_>=o;{f`YLb z9-5j+Oe&PMs*ndaRUc>Y=^%cLpy&5SCo`|$*~;l7`{ybm)NA1%<8GVK*Ts-JqLPVe z;-rn~?{C6V4I}Gz#PE@mx!3pch|X8TMY!OQ*nP_0Hvlc%Bn^#hwNMfx85Ga-g^yM{ z+2KT1p;GN>r>W&maQEyP0b$5^Mt^n8h9g&eUC&p2J2x$q5I#~KARyILtjN#Juv^5I zfa%%WEe)|mo_@#SFix&JdpnPM7pHhRx8gY%6#=~*qVv5cx%_poh7Iv;J*u)txrY*gQafYpr->1R&Uo{9Z__QHpN~k zh?W_2ETP_<(Miq^3{?HstQP~Yd2;$i*8vcoPwqiMZkAHtlF_GmZaUMQX3QtPTmI0J z@<@^YGmFCp;p<7@#IDdM=q!XvscNU8#m`07jKysPr*>8aeYA_<%+8IckEaRd%XijT8tOYo}KU;*O`dmud2It z&5-#!hy{L(4LDqn1Ugjv-488ShX4eI>E4a^e(shPj*0g|-EmwUB!x=uo3rU(Gzu0q zGu+IFlCXvDQ?T4biu$wKMi68clXio@{>IytS^$Kj3H#+rY&8IGZhOD!AbQMJ67 z4M=pJ;Sa+I>Or7nrVb8*HRC&E5_D`D2_kZGU$518{w+JywG(Rtez~VJ@+l`A(w@n! z&+3cx?&xjlgUax&>N+gfQd{n}=QAFh-D%{54`b;(9mXWIKcXv&&O|Obx^3USnixa!?Nxa7%|sv&>K89Ex1_{foX;Y5W*?ML_nRN0eW<4{!bTk15+ zD1&zjQp)0G(v2^u-iDoUV7+tL3_rlv3$}pcijy@{bd?Qh8srk2aq7B!oSQ?e14$<13uk0g$v&@Gs7GVCeIfc z*;_Ac2|SO{vZ=E-3m60u)@FUo#jC2!Qop{bxk{mK_jph{WZJ0n(yQC5zxF<m6W#e*+>YW$k1q)U9AICh2R^A{J)`us6kxe z5gyTuv_G>{E{1#!o`bX^t+7_fp>+`wJXnanrRFpFPIdwzDF{$ zDD;&#G&?UT!B;f?4x1{NXOn`6`yjb5Zm+{x%B9J^M|U3H5XK@g$4Ry{ve$aloxL57 zH(k_>!#e3)*j@aVkRE%y()$V#!Ua~VLE`AP)mE@;9oP#ls(l@gQTS`K->AK z3;};XRE7uT<|2f}JLkwEiV1dT7gJekMHt=`VTSB1?9AZ^aF)CMsfCu<`uw8HqfpPOBqIO z7|3E%0!Hl8C_~TD3f8%MzHFbIUzr@XC;i>Qv#klv&WxgDkwFpuWzXl|j0)5_`(si? z?$qt)oAN-Ft&0)KMwOj|s3XmkeC(I$EFd{$HpLLMa9BJea1H|_{2^DP>$W^V!BngC zbQBW-((x+>>Fg!()+u9rEeO>rU;vmu-?SkIy)bAH@OMWh(E6}#DdMqo{OgQrII_g)btXpqNW;p-zWIN4U@|Tp`ZUncyL8uD*dr~ z#@$T{0{)v&fxBrmUQTjHQpJp=b>I zmOZ}6BqRn!FfBc|s5Cm4`ZuU{SZJglK_TMO$xN3_5KIgFmgUJAuXP^eLPbl`Xq^;9 zRN=P%gI>9Dh4g4KJ(d=VvVP5LTjgC^ax`#?sir0j?wOlr9X8@BF| zUz*{Ts&bIwoUK4M>G=rzI5Y|3@u9F)2$?EIdSD{*x#ed2TuVYruO?!njy+WXGgSy% z2sQ1|8_Z;<#DaT%vPOeV#NmRnNkUUqZtXDw4G_Ahr zFgacMizgH)eE{v#1(UXf>Oyd`Zv0=9?Rv6v*cCN#wl$O^8LWD03E&@MtMYPI#XKxD zmogGg=zAFxLD0NVuypA-{|`KF$)L*_HsdlU6!Y8mk7Y(W(fJB#RW@y?-wH^b1v%GM zswq3hJI6QF05q|ylbq*{)4^JOo5Elq@9L@OntHMMW+GH4HqbkUHL@ulORSo`*D;<# zShyf-s&l2m*Lgpm9fjaWnCb_tp=9r~xks3iU&cABb#Ou1sY6v0VthUkpwmq%q;n?b z-iAHgb1CwZb3Qgz>ekW<=HA9gj4QG|>C@HyJ-w93R#N`6#~Mw=^St)a_~%EBYL6DO zOFa0q)$kGdP~P=CmBT7~={5$GG&Msk@ejRb!G98`Sdssra&C{|!D!cy1oQpub(56D z$4N9jTB<~PArZHqC+?heh^1qOwLNTO7}n4V%R;Lh2q_x|2Jb8=IzA}jd?dxbammwp z^_#A1tg&KJxJn0)FKfRcuqfU1b(pQy0in3HzMds_(iGqK23|`D zF}I*U$b<@q#Yup}_a~)b{AeX(H%|-Ep|*6DmzQpz@TL5UO2n;ZI?h-qZeB{yBV4XMzU1wC$mjR+5qPC-mbqSy z#J^8A1|rynP530`Kg`brBx9l&Q8%~gw#`DehbVPx`GUQn(uoKN8&mf)@-cHJGig3Y zt5Y$}4GV{Uue zubp&`W~v>n?0$49exHwnrl~!kx^^UG&IX&_@Uhy`Ls6i!HhNhS?4a?IL|I0PLmHJhQe?(VaAK50;qJkCo--)Q#* z4U3?w1YVBP7l!kKS^fP))c^(BOB&sbl}ivs&is z%=9Cu&iiZPiNtG`C(6Fll$j9gl9+zU+xTc0p^`ym>gc*Z;U050q?M8-Gt~9&WHG&4 z`_qXt!B{8!D6mFefa9dZACdDJ)rL6}q6OGHC^@I%{e3mg{}jSocFcsv@62X5mdW+u zXye`~Mk@2^|GR|lO#hCwMueRLcRESX7s+F%{$JE1DWa7GWd6&c=py!=@7-)Yf-_pO z36Ybv&90jn68GP$8WeJT{hCOXI{zn!TK&+P+`GCvLSblsJaz$uCaKll-K?=&poFU1 zR)EH+Gh@CV<-_!8IYwH6@Ji?Vj9q$_i-KmPv*2u*O>aH(b&(pycc@on&xVw^xQb%x zq*5q2Yk}gW0C&?KqfjQLT_Lcp3!+4nt6P<=m*3*k`shd^a^EPS6+BdB<3_?zLJ=V~ z!o#INrDrO+XH3F>m>qW$c}RRB_90=`K^vmo5XZ=_qeIp=x)Q6~614x#m?6FTvkm2J zC3;b-a15#)%zR_JTwmMopu3)&19c6J=2Q@?j>OZkHu-AxxZKqVYYz%+5!*UmcLdMa zr<(S+M7*`x_5Bdt-^lSRkRzrBAGG%$W2(&ORRxid7hFka{jKJqNi@D?x@yapJ~V!q z0`i0chYgTx!LI$$rt;v-^m(a*B#}Z?ew*>~%cC{784G2AeJOr}QXLdsU^X;M3O+1H z$nq_Qxy02vv^gBvt;z};x=TQm39n%4RZ66<6}MVGp2V=b^!1$C+TLy0iVRHLSSYk* z_w^JOdHAV~F5GCNkcaunRCBKXs&Jf7078cG{f8hYcD(%`i#s9)kp(Sc4pqaRv8}h% z_(WCi-l#i%>alZ1m3;{+nj27b$DS6a)1FmfrT0=`gE%1;57JEs`JKl!Wu4GO==5Cp z*^V7Gcq3K4^;(}9cf_tcj+wcL37uj-cQlHi8JPB=U`KVk{*tWEE9?9)AL`+f*;|L& zU+)~){c&YC*8_G-gAZR^Nek4{z->PB3*PTc88$1hgxIOgD9TLByI{U%J8pF3RXoh36+AY}WpgS!nQUK<*W0FgwH;U}^bn;C~a5L&Fc5MnfS6`nvejJ(NN zazSuo>~IO!dNL{Oiilz~mD2PxEA?hOQgs;&3j0W;|089ZX5v9YF-sfs_-@cJzL%?~ z)`~@MUJXw=4_+du2y^AF*2ea(N%M|&;P&~TOYt0BjCF0E$5PnqZH+&8U7QG)d00ln zpX}#@tMkEUyp#5oxYvh3_<%=bqL-}}o=*XBsCi-dd*84mqeR~&b0Q??5KlJ`x@8`a zF1q~Iurpj)D()UD51!hMqoCvtZg0!uyW}D|xlh6peQZL$ed>&KOMEjndR^4oga92@ z7+52-?|*&C$3G3w4{O^t)q0sS>GvV4aG^&C2cVO8WwTh8DBAC4yb1q5R0yH55fWc4g*DRwp%{o(|L|+F@J8Ly9&B z(8YrH8sj!!afqg*6Ui9J1e`OxXLlowE6XWo)%T=o(SJ+b!u6t?W|(FvasHSEUp2Xn zpjtker%~tjb_iI)g>!`3G&fO4T||L^p0BO}==4StUdh>*Ov!og)Z5|AT^S1t433&8 zHcR)nmKmv$L##KOqf0_}H@qv2kIL^Wnkm9+l;h2wQs~0aBTdED@S}YC$6Gpy4{DS3 zadBWm9{Sj9by2VeV0WQdJxX(ZXV-%EcRQKN%iua>tBh|!Z$mEM_=;$kkMy~*!kzCW z;DGP1k(l%rzC;~>V90kCVvx((_bbn*cp*UR0jSUf#UG+``b?!l_7P7Cti3hlzN0&m-M3{W^dI zXbXB3fx6*bbWI001+71(LVTe@kV&j}iRRf{;1@m{aSDLl8c-R34*$nG_w+E=p=MKg zIUu@2t{B2;IoxUJwF0Rb6(AzwweR#gX_CqB)3OGBgfB|XADCW$5pRDV#jfMhW3Tm& zeA_}9^F#B4sPT3ntOmQ~XIyx6*W4m61n&iAS%t{%ZA3~CYF;zTmtT{(KaxJG>0yXV z8luFavU72lGM4%zp^;z9v{Cp4>>U>TT>1*NDmq;HmazTNvP4HX3O13O^l0IhFHl96TIcR_h^pDdc< zMU^#!k-1C+k^DQfDZWIhY2@VGOG*}oPL?wmO*&s~E|ZM8*}Ly^y z;S#>#8fH?%yFcigO$~pu5$$@TY-D8EyAjc~9oJQyu~AjJm4N`?iokV0p}Hj_tq0IY z&6!VJz?bPy1&t9%;CAAg1OKP-Jv_R?rO16Fx~*>rYNBN#}0HOHhyBkDI!UI zTl>n4AOo{Ck<*(4_A{sX%pW%ku=+mbC?L8N@GC^9q;bg=wl%)l9nuTBoit{9#DX}NfiGL^h&W=%zy67+2HD_5bo)y zgH8X!#xY5PFT_Wb7xs`yry{;a0Zfjkefy^OUKG-#v(2dNxvH(RPCZQ)ro{%5F#iyh z<`a+U#`5C_xXLb^#7=wK{CSb%h|xyEK@x%a?T3tU)8v#6aCQBXXooc4;=cgw^XJbd zgFpT>9@j6aX->;T2iK3M|4#N!^vHlvDQ%cg^(Xd3(_+6>5jv+@1#iX9GG~&ZDM;6( zFFCdV)19%lI@PjI6Cy*l(4BW1viHB-@mb${o-9Ln*Zi>1MW37tao|J z#lF>?dj~MvN=U;M&NbvzlLzk z0k+@cPTd#7w+az!9&;;vk4H6Crm&E^Hkp-=PrtJ@*%>8vlErt>2lwHm>wN;=uV2rv zUkYrv3T}Av&+xPi8f@-P4F8lyJQkyiNlN-anBEw3Fi{%%w;y}caT(BUZ9MDN1FR#& zep{<%q0pH6dnA+*;SYk$HR3xyKVu2newH@|eJhR)Mo1DIJzT%92HfYhB9PBpet@7k z2E84ZnWt3Z(Txy#onel&hxCq_hoA`sOtq!!^G~tKyVJI_-_9oz7om()lnxL+gI-3d z2;|@o2*Kmr)~vm}POI*nT=~`2)z?K>5c+1NCW#G)NV|YGOWH9hLH|Qt(h+JU{RodZ zYVR_;x&*NYs}=``stPwy`{xGdJJruMT|ZE{10R=+`?#b*@5Di&71Ft&UDu%`W}i19 z9*48^Ic^jXK8q-BeS!`cS8NWA`aO)1X`jcS5N6EVS{#963ze3dx}rl_LJ#+3zW0x5 zj`i)x#yAa2khRwrbRTDc+*}=F^PjmN+)*(dddEax{WNuS%>R7vv(*c6CZe=ewwJOh zKa3rCr!hB)4GB&c&9z;z?cZl0s$IDs?fBbp&g}+UI`~X!BH{6i177Sn(ncDLh&mcvMCGX&niQw|@{|5=MvLs^_X1F3% z0CjssXn=m{o$`jR%5(njks)`HtA15h%6znX#)qNj(&r;#fWY_W^_+3f<(O#v z!vp;PTPq_zSKZf_=WD(fX=!Qsc_~c&?kyVFzn9E^2f{-ZOvo79j{*vKQv%K*0h0pV zL%SRNgCuKn2iUc@k5aGs#p)g&II|Uo(STqz1wKkv6`wcPdb;OoAs%4kyA4Lk4N0O; z0^+isbgc_WtEmRv%>VaHeL(0&6f0@}Z@&~jAcXgn`@;RVUub0PN*Dsd^z`(6*V8sB+;+GCM)0O( zWwm*CkHdQ0Bm)p`PGL6>!+rgq1;%g~n-YcLnDoWx9Ii1S}-e%DK{8IGDFT zl9EgSEMmURmp3ilV39Z>Ev;nCi|^>b2aPXN8E{Pg=tl9uX-i;5ef<)Ffx=UT-OKx{ zI`CSA3&Ks-h59{vFvDYv4+ z$RU=Tl2W5V4C;6Br>LYvouWk#dHLwbK8AqvBiY*ge1wSqLpC6{`q26>w5amE+RLfn zhqub~z@`Le7YF= znlJ?ma1r))=5J+FJ|!;>b_NZWb!w_+5mBmlrP@k5w&K z^r!U0jE-@v+h}UBK^-!ZPst-%k4<4_LGQih(MpR-+MYWW)i5dKa0&&2)Ncr z!)YEElT%aEmw$_*dSsvd>^;^RoS^OD2(JGfsYObjf2;0dV7!(sXr!FMr-tYje*)q+ z5erV1k#L?PD5wEvg3`4iV6n!)XxVQD>tW9 zL}!9i%+dy$S6GVdIu?Q-$*q!#Uas zz@gOv&jPIv2c-v3$?RSyLT#_P(Jbn_=+lWP|JfLN1KgGGFpGv$?ddzTzzYKiU?383y(nSe>jy~|HF0=n>9 zL*|TpNlLZLCCtqeaA$?GBvN;n%Me;`7VW^7BfNFafv?Z#?xjMImX*=ZW}d^fg!N7S zcW0*hp;Jju2`VC8-4Ntz>j{Zrs3>}i=ka9u=2m~~6!Z4~?%Od2ISUmWc0Cv4LW5HW z4@^UR0uWydm1!7hTT(?>}b0!0Enfkp3uqjmupFe&S0C2LOV+L(L ziH9WtS2(X=nMGGkg9vz;be48x4+PEuHE(Xp0%C&qXWM5)@4li)?{ZmwK*{}@tvEj z^#3-p{@+HzBk6el{uzlR`0*Ddl|d=+NpV1ib&zxnJb^Y#PL9UaW)RFpV(I+yaSLP* zNy#?cHT&X%^&L7I?1NfiD=SsUEvI^LP2$q&ZP!M`Qc%mvjtlY0c&^qinXdY09c}H+ znlapeOy_~;#;@1LfJ{?Bknzh!@*NZ?Z#)6Y*|R%r78V60E&p9#2?~l{$j>0=F<{#; za=hOkm)Z=BsHrykZ}ltr{KZNObuK$oO6MUb=Ak{$DYA^_H7KX=rr)tK7XhD{P%pOm zh)R2(uKHi8Lc&brF5A3LjhKu0-;sxl{shw=4gYadnjm#TYLMc~AyD%7Zwqh~+4@ec zQ02TqQD)ep-O%e+B#GpQ=0f+M-x?=XLy%BcGc=3^oHYd}rv|clTDU4x&9-k})V93r z?W`sJ_O^wOuDIKG=xl<)2ERfw%gm#7jekFZ)qyF-n8+hj3|Zj!de%a=LPQkl*U?PD zx^)pi3+T!jLM**~HKj7ee0p?7fVXL{#cOr)w;ot`levnOMVid52y_ww#dz*fq+UQ0 z{dnwk z<%0eEzat*`??|C}rv3dIO1u)vytLHdG$)Y}$2>ti61qfRKtF1u+?{k-QX*ew++l>g zHaN&&zf^CSUIZGQz27f%Q`6Tkfbd!E`5l%wcqWNV_9tvB3z=TyXr`eB02#9S){h#IDLP?oC6Dci0hU*F7wZmg~qM(dI9@5 zDJDKdzsqk=F3s*xWpk-SGF08c??-Mh(v-lkuScus7Ojnt1bXnr1HN@)!hYzV($EO!!lsuLJgdZb8F~56cT#D)tmQ#_C0ZvIXRV^GVYvs6EaNbWK*DP_M*8kFRyZTsO zzr_v+tfZd-%0|>;tv>S-Q8da9$UD#NLiYadZT` ziXdhs-_2ahZd_KGhSPj~T1?|ZuKl1J5!*OU&2GR)-0Tr=Nk3ehTJ4H2Wf_*SJ`ns! z*G?~yQp_p2%eOrolhAanE^BnsxaBGQ9Zm51Wt%myZ@O6HYPhuQta|J%W8fcza1`O! zr_1vi=rc;gT0qN*yZv<^DD-oXe?Uq@O$YkrF7UGK$6aQe#bT9KqmSEFwuSXYC)Z}3 z_vr@T18P3pB6sVstyhyn|LP%!tCS%YpzxZu-K^8S>-VH!v2@9_^5gRNh`|!@e7Mb2 z!x{9s^c3?p-$#G(t6*=05>OtuHbHk7h+X=A@#0~y5F?gNSHo7XL30D$E(&#w{gnb^ zP7V&Q0* zJJsweuNK3HLmPSd5=U}TLg)3jo_`CA@ha&lKJ6g@QE@XD_T=$O*Sd)14@*n>rhMnW z&M@?81yyhvTjLra)oFF&arU_C@xo&|LrY6|BxGNk^HEkVY#ePX<1D)X0hO7p6+G;} zcAN~P1KQ$Ipc;)D0;_xKh$U;w#PlUes8s+4Qpsc5z}XNwBO)l(R^w z9w;*8cObcl3UXsDj=QFewzm2`(?dCzF8IrRFZ}`xH(Okm{i8qu-!`Rmj~YzzYg3bv zPI62jl)I89d>q4(*NJha@<9V<7EdPTFsAry8Tf^CECe5)Mw~yB!I7$93_YKpMU-4# z?LYX1=_xDM$Kf5B_e4>j+Gq`fQ5y7kW?Fe3=f>X+5$iGJo~Glof{E8?Sy^=k&_&)? zuZG|5Ub^%$wF^Rn&f^9yh0OZ6`-MlZohPL64sUmc`xWi9{r=+7dS>k6sdn43vs|=u zVQmN>d2(i+>!rdsoqktf=>p=mD^QdD4}RjiI6vA4*vdY=#CzX|tEsD&F{mh6Umx{@ zE~7AK>>2ohk{wD*irYI(#^E7kqI<>*<;RXnZxng`^g~qz{rJ2Ot zZhUvP;U?C7EOW++LpMvK0CKe-O}DGQSAR7!Orm-|-yCQ~6lDdD7)P4`}DIIuh z3?TtQruh{pBNUDuf>_xQ@C^T)K7c~ZC%cvaCn}ngoS1lcenD?^cU0N_P(sQHy*a5R z*lm2kmclmpq~7Ur!Bj7zt@)$0n@InYvwG<_N|`-#-6A(xwVN@MK9iBOy5_#j%XhM- zfzEsJ8Q3uaa)IWp>&e(R4hxMg30bHqFEW?3i&r(&DOk{I80m8Xpyb0`PtV{j6v(*@ zMuQ{jBikbFaqkI>UHlQUG5R5Ao=6D%H47njGbZ=jxx?*=Fauioj7zXfSOKwQ7|Lv- z7!tqsD4>JoG2l7++(~XsA4b1w^U#HMenk5XYMdQ+yLSl=><937&qJ%iuYav|mUms7 zJho#`dv-VdP!&}Gp}mKD){ZBRPrk<<2e$z$$>Efy$7{whK(|@J6#QEHTw&YYeD#() z;U?2>d!=1L7tftUMxBFuAmk56BZ&$p3&8&;CubfnT=9IOnqz$N0My^qheQNMF8p=B zwVgB{s%mIN8^1ox=>oA_MJ<~W5NK%L%Y9QGQ`~*B?RTE9cPJH!zlb>%u^t!mIC3Tl zz}_qSFph226L!sDm}t|nE#)p0XO=l<)!ymrxYn)&S@1cwqJ;{n9iJ9Ihn!>4>4SxPYtXHy*Z6$1bmeyLZ|yc}DoLxD^5t?=&=|3wff?nl zOkzNFTCIx1kEQ+2Y~?~B@H3yrle)DF3`ZEH!%x=sJBs5|K+SM6kv;4Wj?Sl?aFdm4 z^FrK`WJ6B^K#MQGCuTG2{OgADK$26`(Sfa-1Sb+t))=_=k)xF$48_g!^WQeT)V%e! zmj@#Er}Y{a(fF-rg0-8Il|n%pjn5oL7ioTE{W5XZeO{(QKk2LlHb7O&qwX9on|~Nc zVrIsyMxqqwmY08qTIW}MILidmmRtx=pNN%4!I#&YhK}-EH#9_T)s*&mtF0dz!>I}U z-*KVeY<>h7YHOFo=Z$Y)y5L$My+}G>SW!og0nIU%KDlI5Yr0MOL;~(9xWJL@k9sTf zxB2h)Xf5d{isu)_HElu*MgeKg(-9=tp3O-G)~S6c4$A}jlrZCsqU2J;>3E{;YVyXA zUnmYmJEv8|$x2K7pyYuEq3~AB)V2S;bZjEo1K!5{Zl+gO`#>6Z>2)$htn;avf|%^T zA`-C$6Syn9eWSxKCEa~*O|69>Z-~$5#0V^qn}a@ zcQqkHrg5U?z#xA41E_->;%)+!xIMdx6Q8HMge&3GmQ#^BKSN}>sQLXVm6?I__Od;t zbk8WRqVI1t8?s8HK}m-3F9xM2xiv6d7=e3U zPZVxjvAkyE+2RiicPD`W^h^Q8XxQ4ikOB*4@w{_@ByPq4=@ zAL5HQRiK6}wVbx+4Gb2Jo0~c=d^0GZBsNZk*w?s{V=(9Wil$RyJGicrNJY8*@LCM*HPPab&49R8_x; z-cTIj094byn48Ie;N}$`j`qna*t{MsFf4Q7!k}OaBm)1bgcLLz7+iaOrH0$?_BiEv51HACiveoH8+hCqi? zFN1i#<$kaj5`a)Mg0N%Ciq84(Td^zrw9{Oxrp|Juqp#i6nSRx!yCf%uBqe=uT*yD$ znS0Y+`w>5|Db{8O=ue$Cb3dGAK3Ju0rs%oqJUq`#A&tk@7Soekue%#Y;Vj@UNC40u zjl#Fu2zPZsHldpti3d20Nu|#Eg*~aKzpwg`7^Jx?xjm2Ynd|k$0bRfafnjT&3n1>a zn<7B#8@es*(0HnuldNd@GRR@;$$QYBu}W@t42* zT-p^VbA+0Q(Oc5{(Q_!;>rWb zaw+IsEk$0D4aGW@a!2OxLpPYz9iQa6PBL)R9nKTB%`B*S;JQGeab z38+O}@{b@YgNc#Bq%!Qkt#)eCBm*C6vvcSQ8w+JOU9gF<-#sm>a1wbUVWXi*V=960 zlb)hDj(^xRdt}6w=W!LUi;zm14m66L*Ew%k380;oB5#4<$RYLACHU9)v-Z-3Z??Tr z$fAVOaMb*2uqYv9j1kMD&Y$@%b&;&nn#SuzSBvK>dXfj!=hdYy(qi!Z;QNt1aV=W& z@OSYau*-l*AJwtt*poz5Mevxb4ceV`vt;=xdf&rP2Q{9*4PUrv<_oWfw&+~z7Wn{!A0?Cgn_ zF`c(xNv6%7`S7kf=T&rG2E@>!FoyjB;#&`a&(iTPBaKp1*aaQ|IqSk@NR7@<|KSPF zF;#=Lz~w>LwIvzOr4^zXTx!($~j|4ll)wJ#LUt+XTRHE#VM3HzOL=AWr^wSV}O4=Mm;y2E* z6Jo6F`7J*E5}49IPjdObp(2y+7$tvVM*X#W^dU+@cVV-J-Kc6Nk@D)!ZzqCP*caCp z3$Mm){fz^>boF4P9Ql}C+O5;%E!S46w?mXvzaAsnIp1o}gTpu74U5*o@y~Eya-p7= zPqtEmwgot(<^lP?MuB)I?h30^!lVG>G6$b0sge7++pV*DQc(jtjQP3ysavf~DGE#y zhS-x%BXZ@{?PXz+dh>+h_VE5O=8O@6(bQh4&_S3{Ge)Mha$m(VpsNz}v?xa8wwe&o zh2(Bw0XYGaME;I2rG@#g1T~OR4<|e%fE0EElPR681#*=;@0CcQh=gM_P>j^O8z`LE zbz01vI$mv4h|gCfa#-AQl`}91Xb#xV$3vfQzj(k#FKE1P&9*^@`{w=WQ*C;O`2(S! zHtvldjW+z9j<(d{-S91f(?29d2a z#|^}*@tJpgRAdm`4j>>%pxmUAP?K>P0O&QZ>Asg^DAJwLeIc;K9&N415%p$?&o|F! zz~?f^6YM80`TDp|r|4}M(Dr{=I_s#Yy2tCQNC-pM00W3fcQ+^@N=bL8NDbZHHHgv- zARyh1bfa{44&5L%^n0K0@16f=t-I#TxhMACpY3^2Cg3VsyAtWP6({l7$nU-WhlwaC z#BoSCYgB6CsXj?l-xil89MFZjX4|g#?A%A3t?4g;OY~iD4xMW4$R{sXIPJP_IBvz@ z0BALpm~mycSTx1Dv#4T}x62O__)Io&KL1YVR4CJHe^0aBLoS@_&ij<*JKdVjUiOj5 zIv+TUXaZygWA4^Gjpk^RwmZmE{C-i$5hsx^`+a>js>eO|6=(zFoWSj;C2Hsxd!~_C zTa*NbEbKqkFl1wZl+;c4z7Xh|`Y^}+x9dkJhu-fwuih7{5Lr)7!JZ7dB<ri`L~G&>S-sk#5*F1BmuYpb|lz{R(~9q;d0nd?@dMG))@J;DOtQ zJDkecbyEs4gkJ7zENrJg(0oySPl#EMImy025M&9Fk1)qH9CbNc740jINL##+bg%+k zQQ1#pj|=;62TXA0nH3hT`#xO-R*r}efR%_ETBt?z|JfvYlH%ezGQzA+A;`%0A&r3Y$(3XGe6_81=LAL^@SOta zaQ!AUENbO#A=}h^e49o^e*`Qc)3m>ozp21gPF1HWd8o0L4l3GlfRjSeqq^_o4e8o` zNySW7Ia89(T0Mix+HNz0sG!#H!%^1s{jk-qTx=ncJ{6B8X!m8~UVb`sm`}?_#1$v* z13m*k!U)tIR`#P*dVD+C%p%Kko2-eDRd)0@py6Cp2HIlp%%a;{fopR5k}TYo%+Wt$ zGGp>C$T(AHlVSAEVhb!4%Kly3ES7Ko~2oNYC>xnj&9 zVXA)(w!r8M{a8FBc=e!~8V1FjIr1TVDa#Rfkt}rG+xN)E-P#$y9$B3y7C$P}fRaKf z%oK2w$$RoMg}SsybTW`wYrbj3>c zQrJ`gv2`{pgQ=7$^F}B&l*S}m2-@+^0P2L4Jl@!GPJ=6(R~lPHgRu;|M1xQT!aZ`A z3;8aU?Lx;$}_=I03I^vb)RQp6jQF&y*y_mCPVQ^@u+h1M>6D;~8Yip~K z>ovYPIjg#X^99@AxfvYc!oL{Thu|&LM}b0?Rb(7#u7d{?d4rYae^np!kfKCMNo)d& z1al^FiEMogw|shud$WM7Tlny;hQHdGy`dE-d=>T^w@hbiJrtC$8o?w8<*2aGSYZ4p zWY4E($kev#do4x@6HN|^Ka1kutEJtJV9?)r5JX^xZgV42>VwwT}N>7Y^$e`ORTL$_9yY4*sJkN->J+=goc*a_A&Yev2g|EX%zfA)&c5 z#sP$2Kb2_j{j9VQwn|X}Pd?568S;jjzY)iM2pa7X4eYOa)0t$woo%bL^M&!gsdIp2 zQp`$yi|=N-1CGaJMfJ z(Sle;qk=^as-EqakAXsRQu9%>eCw69@>5~f++FL#jP-)s{GqrKSZacJQO}({8ubn4 zCLn8WkW>uEzxLoDsl6X2k@TzIz66sHnZftIA;S7kg^8X) zP*Qn(`T5gc#JqrQggO7iT}Z1AdUw_}BSmt1`1a$t63xhtF^h-{nG7zLFXl5?Uxzc} z#XP2Le3zM!F4|GLP#ryultP*bp~_PC4r)&Q|CqpAWoTzlMvMYwxb zbT&_~OQ@M?k}e#+37#c#j1h=&2n`jhD|$I=P1T8+q!E~3n44neW04obKWh6o4{2e; zUeRfG<3p4VN&4QcQT^{7W4X{c-UcD6aQMI6d9+XwJr`h(9QsfjMqAPzGJfp*(>PK! zaI*yY9#7kVhpAQn^IQ}M{SS$OeY&t~6gw^1sDRy4h{a&?fl_KI1o}tG?>XXO4xz9< zSRKlv#9fgyXO)KF8cgPxbWHnkc&hVdL?+u$@buP)D(b6d!XC8`dY|vg57U&o_wH)BlR`&)*F zNM>5E>_LIr3aMys8(z{|nuo&^|EF{+!}xR3Q{C@WpCJIn25k9@)mRAs1tBhB)K=3A z$4I-@&w4cWk9HhAi&V65!P3tiF06Qh*?sK~i@3Fgym~=R4&W-~g7z_@;78+|AJgmc zrwuYWMs=%xov1rDfu?okHJlcK@{aGFpVxnVTtk1#50R;3FC3m6zEhDtBPUWiIvKVy z7v>hwktaNkrXJjhkT65=dH7251pKGaX7`c^Yw|Nz3qmOM6s<8k2A(rec&>+%x}Zu6 z3SKzhQa*f#A=0d)j3|b1Vl}}jkE5K~8=hZFbknvaL9z=BPiyEBV@9$mAE>={X$&HB zl`RY8YZ7bOM6>EAi6TS#>FZPI`<|OddSLN9o;MSgRJd&Cdsn`_l6xzI@Zn?cx<2LOZ;0d-53Il0d)#79*XCFNz|M%!#1hTm?sad!l z(yq7Oa&DhU`P$aMoS=fUJwV8UDM6l;_4ke~=4pJQ*GuQXw_hj-@(w|Ne&OxzBCSq&8`8nBT8qz(wJdlT3f|aBWV;0ow zkF{d)oI~@~y`SNP44E+(7rb_N3N#}y3Crl%cMGJo;aEp?^PRDiU-Z~gTj)`rSyB1? zryonRCH)ZsWd2jKd6k%~DJDGRf)6`vzhm#}=2c5h&c6@|8~4Do5Vkzqv2~Ay!!I}Y z=Nz@iM^u#_!tl-h0k#6<4k<(5-j((2y`5%^_D$Y{z_3WEABk*m_g@~I%ZGpG=g_0N zS!-wdZAxBwlhtQwr9O%GpOE{?XCE=%G9A`-ffBBKS*QH&7FYLS#E0*CL(*a(k7jh4 z#>69$i>0nCY4uNRa18L%Tx3M<3w^&E;@#Pb3V?$0GW5NQ3bmcq0L=Oxvr{sQQfxl^ z#~V>Hg}}M4KBcr$LFm=HC~!T-gm}`n9E3DI7Nb^?1cs|nz$$`tK8Gx5^ol2P=lSnX)~S&%BR#wg`{`A(!3 zv07}`qx17&lR={MaNgmI-gtQc^P4H7rW9Q(G?KWe?X=Xz)B^&=AFoJG;TIcW6!sm% z0;@S9_QQZ*X7w%;c>L#BemG|z2>JYkt+E|PG|8@a%)d@^Gen(z#s9Noz9VAo3Uq#! z>0XWVy5rUSb!g){l$s+Jqq-!Q}Cd{S#3c?|I$O6eJW!qAJIJI;2eJ_Z}8>BQfn6j3^Co)OpeFbW8AVVEE8Z3&VIRT;bO6xRBm^)8zQ zNErVZpKlA$LCib3T{7@sr*L<65GRv08YfW(hyTjSV?teQxT|zdrjFMp55xW3pGZ3I z_^<^4BI{^H3^GbgS;9qPa6SLOi^UV4CUf(xTj^em+ZP{G^2D(-jTUx*G$+EY^1`QY zUJ0q{J69z_>Ck%ApBpE0iu_^Ha{ZpX-hL49L3UbC8tiK`^u^ZGPCIl|F3$TVCX@W1 zKX57n@3Yf_8;14r+}|~`Nui8)6`4TDDbM7#2nVU!GS}8DaO_=)+5U7VE_&}mM&(!i zqWy8%@cz=Fcdk(g#XgSW2SYFPVAvWgI)@V{D-9f?01Jr$kYws|4E!g=hAMahF-C+u ztLDKzoZst8cX-LQvmu@* z(XJEZk^ko>dhy?Iz)WgrXs0_)JC)$>oueL9#0R4L}QYB!gYusu&(I|Zr596WJR@Y|Jl-%*EG8Aqb8N1#igH$$&n z(8F*lJC77vP^ymS-AexNVXJ{=xYe5NXjuuvc(=T@y@NMaI(14d*( z8Xb=k`Ij7Ri1w^~Pj7ANJl5jTd~S8{xHMAYgJmS!uD`v<(f1CeHfpY;zRxW4cnZd# z@|*}0*x@a1uA~&pe{{T3WD%y;S!aX@%j!j(dleNG{TUh2oV~2GCl1+s3%F48^GPf$ zEXwq7aDmiM0#Q5cAm;83G{n3QzTf_--#fBcmioU3+95<7>A5F}YThCdSd*8BsRfEQ z?=^1l?r%nWJ&rQSZC44$`hB?g%>j1azeb|_Q}1pr`$J(MpL2FE?{@#tNv^K7h^Lv% zSz#(;6*mBqVNkX?>9EvUAlISa0yHcZGqB#b;AttLR3iK0AKr#@?V8 zYZUIcj@_>8=9Vw0+ma*i9#ul~N>B=|e`@F6AsBaEz>GuJYiT9_92eQ9f#6#o03$l} z_qXfH$>Zk@2T8lWr>AG?j|Ltyb$%4?iF5pW$1sLk!VrsaMGEgbR*lrnOqt%~ z5S~&yxRMH|X9A3*y?|^P=-_vr-lVZagdkWAHSc8ok%~U4e+p!+ChYenEHFYPy|SPe z0CKX&MRStKZrQFd55N0jkKJeIfFJIhPfFKojohFvKD+XMe#pj!H${B#)5+-dPYqCA zXTYdg|LHo;{h3X(4qm=^Zq0UBT}ztzmwd!WDLpEeorw7Iy{;}Z5ZDL;XTa46cH{NR2>_P(nUezn7LxD`djRv;QNh2rxA$k1BVhKRmp1NR{VWh^ineJ_7)jx;Ew+5O6aEbTlLod&{BHkLYb~E&Am|s%vVXfW6K5Vt1U8iAhEBzDSeC&tr7iFrsF12c3GT6Hq-PZf|dA za=%m7IGLKZN+cgO;PVfs$lHi`U-rbsp73#9`(@V89=2&e;$4qQ_5V9S-cPki-jy^i z+h^b!0VZd_4}%A!7$Sfb{!e_!FDQI>NOI`_&5LCIEbD0=-Ab`cO1=!GqRlYk>3&*{ z7cD1(e*1;d$NP8X8J@ZhOTKy-R#__{QRE_2UbW9ZOHlW%_!7j%G4uo3q+MBwDM>2; z%CfJ!+Ffn{#A^PPM2?Z|HU`x5>sqHmDg5CoXY5@I2Gc`3;OEs;-+070khT1*++9>N; zGCN{GzaEAi|M0N%#_^;35u9O@(f?rN7Mt5i+A8IZ6wUH)llmRx`ZlgEM9@HX_4|Wg z`#{`iH;{EB1X1wohakB=^t~d4;b<0Xa;oOt29QnWfEOCb?Y;5z8u-?`KfCABm163< zLKyl*YhQ7De)D|&RKBPjMr=c_qHiy&nbg!zrgFidoHLfkoicNW1>~F(Wu7bb#~A7V zYc~Ei0;;JWSs>M94>JD9c6qim+r$RenEi>hFQ+d^B&9vwu0Sdkafd7T_{hvYvENlT zay#tH@B7()cC;WkAD60 zo*hqpF#&7;Xq&53lT;!THoNxA-i6t4cXhkI{+hD_->BiLKW?M7)Fx#%+K9)`;9y~! z+Yi2_?lUESP98b?WLmJI*Su@e)Z^_Fzads?wOMm!pmA?&;FpS3)k5UEs~Ib*HRc&P^so3HJQ5wE8S-)nw-NhZG4qVmfdsHeNpFkm%FZKQgiFA$@y z1!kvp`w2CV`Q-?IEZDF*@OJT5$ci+(iFVQiH?Sl6C*HML2pJ&UD@Mh;WD*AZW>yA_Zaq zdl0jM$0-H2;}htdIKJ_#99 zJSn&v%?i;}!hJUE06z5|JRL=+^!Ru4EUCgCsNhoiM+?z|C0b+J^~k~?K#9o?LS*#@ z=RZYPk3O{gMKoNHXf46;zJM-GEQCr&f)pc4L26#=+NK%am)x_fWiZuF2H9OF0&O9)YuYL^DFR zHgvSp{bOT~N^tJCJu8)ieHFyujQ1H?JD!*8L2)+4kb0Wx=t60befW1mk!xvXJyL4y z(0ryEOM^n*{&p5hZdC;}7#E1*Y~pR6^D9T5)J2UjuAhH`2RRhFM<25ch*jN0&tfQ^ zymC-kG?U-_>VK`FQqE^4`2A0E5~5$o>h3I;dXCFdoi>T}#p4YW&!L4<+QLq~!2+Y7 zq)!&u=&g4WIsAQ2i1`B3pn(9j$o@4gpi!y?kXdP<7#^GMd&*iZ)W(NIEPDmo3?ZtD9O>| zB&zuD=5ibi(?|ZP<RK-IgMN_;evXNc=qC+> zd02m+m>0I;=H`;h5FHO}cDP=Pl84M0nf6nk@SIMa)2M6m1<=0SWh~%9aY9zl=Q}l> zZ9tIQvj&Y9Z>V+2ZBFOfB|Q!!!S#nP%o8Tf;xHW7PqTm3MZpV|`kORV6ZeJuDEhGL z&9+%ltg@_rI!L4w=uyq(6qOa!lBnqyY*4p~5=_+z3n!Zzy=n}V4?=End_6sDA$h4j zHCZhaS#_T&CKKV0a|=^#K^ILh9Vc3yX}U~*BO01m2Aa&Xn){Zt_f9SfJ@u;?3rn%S zbXkd<&R2!VPDWL=1T~e89TigpjRD4$)azaUm>0z@guz2c_dh(~x+!ey_u0wC zw^n86wKMJ8-xr6C$Xm-FcMr}#=+{dbh3`08$)fw<-*$z=TyfcP_NGF1#0)W6v5HB=3< z=~XxYSWUvPsx?C!u|QZ2OZA2shN6w6ulHV`PzD4o*`-{60>_El8(%dmeu<|)GsD@) z#c<4~O(|Y9%RlWABeLZ8Nccm}iznzD6{u6N$YmT7crnB~CEx{Av15tUH%-Ntd4>oZ zL^Gg1=^lh*>5;jT^w`kjsUe1rIV$-g9rU^vc#?qoX?oUE?}C6vdCTEmg1ucGv;*gog1UH-68drR8gmp*fJiIxwv zyf$AAKIDES(~!5{Xj-7+OHlhfB96lh`Yo0}vXhLD#?)}O^o2Di&Uz9(CnLPFDO<5{ zXx9mRYP>}tc84`~tul)L)tB^KGu*?8#f`4(Xn@1|$#9jZm!UZ3(d9j#+wno6%)LYc z4jGN)J-8c>h(l3T*en{^qawcK5sN*$jHg0&U@Uqu`T)F%b;V|`1Mel1gKQ~jWncGb z1f~{q-*9z{A@}0K%>ISMGIH>r4mrEsZw1P!3zV?Pm5S#BzVBzLmfeIija;NXdN=lj zdWbMSCVVU}!8Pl@`k+1=l2FNQbGfvl_UcTcfe_IyF4s*;pM^J@UGPX3C01{9p1jAf zB-vkqn!3kjUUE7#9GhLqFjg_9+_hNZxA^UcUA-! zuI@9jppV~_mT7EXj}geIseSy-sr!Pfw$MimjCceGJx?bH;lI>lqYWeIMC)=fvEMn- zd|r;)FrBU4OSi>XoCwp9$Fx$5-~lnUxa!yGA6%tG`Fk0(yRz8%;Tc9>?;6jNIw56C z7I&jiQGa`0t^Y#Nc%F}^^#rar*}}h*e=(=Eki*>mye?}NF&mNal7_vTl*&fIi1hpS z5&9nMS@-EsoyMaND1`aECJr}W?ysK?JK%A}%DOX#5qcx6=D1jNJqB(lt^eSS=QC}M zj|;vZuNTioM9};$!{tg>M`Gj*^bG0^u9zTnfVa>HZ3Ba?qs~Nt;9T7>8d~2|D-V_BwLTcze2PQ^jPh_I|Qz6+iYGrPF@cy)#bBVS;-afgvCsOz04OAYI6PKv1JA> z_pymc7RH+kC{k0!8{uf6L?c;Re%^+jF-UDT&F*`(Xe>o+x2f5M>AQaQEryV$K2GxV zoB@^BReV@pI+rY&?o^_{i1P)+E1es6N75N#^=GZ(xR?2b9WPrUr{z7!yP((msr zmX=&^KF+L`vCQPKQQF&vw;|&b1jDJ)%WTr+4-CV-+HQO-8`Ij!R`(oi4FqyUuC*n7 zG)wTP>4E7Wb@%K&a)9%VMc%XS@VNv=9zAr;vZDSzw)az0^`GnR6`%XPd;{;vVLp#2 zJU}~}@A75j(8}SY3wjJr&`qQLJ4{ef0i&-waGIKn(%qozQPaZTMl$s zJ?g}5JL#A&$a}-WN8Id|kBD^_Lv}wUu4Vfl^>_7N78Xa+;PLAT=~Q5ank}dVpu)y< zcD~}zuAol01vG{00+9y0FT+ZW*BDOaO3#eOToOFF4E9W1qogim*4$;|vrs@3&)|H+ zVTxt-<1Gt*3Tq zQwtQznle4Miq&pm4M?D0(Q^G}yE z8bKbz$-N59g(B~g9USX(3QAC>$WK*RJ+^OduNLt#1x@E~fo;SGdTZ?G|9uh^H{YgbD zl{reT7&7Z_wpo$WvI-V1ah{MRL#9HTf!>@^)zhAKa>rHbYt!`><|%b%e6V$$$V}=7 z)6iwx;k#m`U5tU}gX76L3o(KGbGB0-ulqT@z6GY2yR4H+IIdesxUMIq8>EOYN9H{D zBkr>p-)mD9y|hJL@oON!BGELR zZX&14r%=`>k+#bq2!BpIfu3(rzsooUrv5%m$wX;z@I{0s6-ayfSj;UXBC1T57)ftI z%5@IiWqR+ESnZ_k*sOMh7svv2q|p=GIN0M%0KE$6HH#V|5}=1EzJHP=6;(=nsP)S- zC$T4H3wjOlW?Y37=VT<3^dh-bd>+`>R{hMoE#!JGDZYi~_qAy^R&qQ#8u2{-Yfx>u z(Il3;M#r{b6+6Q}N_3M&)aYyK+}a#WI6hY3J~)mzYMq z_}|aAabCW4P|1CDk%%gH$xKxk8{@ubZH?36RgUUXya)|hyuK2001BBK;uYzOQF`x} zN#R;YWxE289oEbJ@>Sd|GV8XD4#Rd1uj|;r1kB8TePq{Pn9VQND_(WX{ze}UMwjnV zGvi|j1di9>HAjsbmZbKL104yU$o>qBbe4-1dAQbNKl%J3sc2P+wqPMwQ6+d;@O##+ zS$JACgrPnJs~_i9DDPd#sx!$aEg~{8+Z1u^#xrts``;_DXm%IG=3k*d$0`BEO`<;a zJ;4Q;4qXqpT8J|%=CdxAX^*>LU7z||DhmEtli6eX1eP;{RXmj&7otv1yLM}|PUyCl zsxV88b&X>GYUF9^ZiJ`)?1px`meyrMc`&fAWZ7_f{&2epwCkW0F}WoG>7L7dM&^=X z7!UeZ#Ccdf+2FR_^jvkW;o@^k^AB9sl0-UW5UR4vXYcV~FDU64C&N;_Q&t3@fA*`# zCj4Bzj?h6XZ(azDWh9j=Qc^E*7X4l5+~Z?qSpn%rmXs>3T#yKB@l%dqN; z-E@47v1>)UZ?3Y;hnQ*K;jeCAMpckCFh$#Q{78 z3#WB@*h{VjSXP;PfwLP@XUB#fX8h1qlr0ZrRclInp}xixt+5p!PIq6G(9i|h=b~*A z;MhRIBWlOIx*fr(I;S6P^(sjSBv|`%!lB zNAIh@QNW;otE^Ub%jPEJo3(`&YQU1Xw>Aq0dT0wvP~8qeCOa$SiOIU52LMmKgK9I~ zO}NU>o7ooTvbiNZ*8V4M2sC*dKWa>Z3e0&-OUyVCp38I|Mkf$9OnRt2Y@v@0?&mXv zL2=wT+~I%E8+JZgms@E?zQ2E7W$cK1fA#bNc^90AL{17PB&H*T(O`OzaT`nVPK*C8 zZ?-EvHSZYxDcRgh&wrWsVQR4tw{Me&za1KU&Mw#==&)kne>D3n_f7<_n%KBE337iR zB;xm&j=A)-#?Pv&8#quLFh7>#`vbFO1M>%Qm?fB}ba>_rnGxxlaiwj=Ags2=P*Ah7 z0bQ>06EIA_79t{utI1RpoB{TrIInnU>%Qlu#yhD7l!9=>urGnK432vyfO*b`1pvWS z)Cw@wGNFZgPZ*p$P8zoTf+56}j=_YAiuS)Oo4K}sxzN3AxsC7$J3b|fcfPZ=)`_lr+U`FW*RZ-8ynL5F zK4+?wZ)zI3VV0%{Q4?O=E!0f1y=}lW&;tRe^ADhB_U*l4dJb-8|I8)yVWNjC{4e94 zcmgDz+Fo*qY6W2*94Kqp!Pe~*t6ko{6_@g6c#B2A+)oIc%1yqd2%16X%ozXhak|A| zdEO|!l)|xHFzwGD<`*MOV+xG3`_$VkJ>4Gl52N0}x^tyfu~LKnglT8 zLHQh5YTup7f)|NpDl%07m^^_0bzd7`SxVs+!rrqMn)@w)ThU6^MfiDkZF*iqyD5i? zZcEW?$kfi&*zow-{jy&=^zh@w0g(i!QzN#3z6DUM1B!ucX%OduSPl2P2|rJ5-0U!O zolNQ;E{uot^?l2{5B<0i_8KDg-?WWPjdlLX)Xot0C}W}^$OMX;edqY;8HE5Jpy6~l zX1xyJsXSWLi;JcBdZGTu_jW4RK?RF@V!CEuRVoVSy`U;%+mT#EGq%RfG5(|!!HBR# zn4Z1c+CA1iSdbAV7JE;db2WU&ko$DAX3Jye!O3=RDWH#J1je+-p=11UZaV8i-S~nL zh16iTBad`(yxoZT>(`}}<_?&ZAx0r|DO{rj`02daaET9!D`uw#C5t_B3> z!H6h=pebXVy^!Tpv!DX6oZSpkK*M_GzGT|p(7x9bQ)Bz_%*t%`n6>3DlkoZ>m*o1v zSAc}QNY+~BWgtcc!SsWS;H%_XpDd3rN&AFvzN2L>q{k9A3JiGHiMWrX93*REGF z6rXmnY|XV5==k><=SEqleR=!=SI2{~13F-LUli}d?G2Zc2j;{CWuXIO&-X1QKsaCU zDZX#I9IayU+R(BZ$CGk(1s%)?CcZu?@$(vMh(kxYb$;ha<=Vlif!9Q*=~~-*fMIVX z+yFcCv;&JQ!J1FFPs<$0Qe4|mTCo5k{%&NP#88*f<3xnSlP`yOnpV-jAjX_{&1NUM zw&8=67b8wxRkY(-i+6nfB9tAc*+5zPNGR4Q-?#LQcZzn;4LxXbq&?V3*vn=L>WA+hY00<5aKe8k+PV>v0YAz<|`3p+rX2Wz!o`ahcs*IDC`*1cN_2T|&ROSAxLge)7u6M3A*{DyDzHvUjq7@17pfo3GZJ)`=20ZicdJK=fX%hR}H@(d2IASz20Y6$wmWTd;mh1D{n}KWu;h zbu|y|zEJn>YBHflEfqb+GM@Y|o#SX@-A|W&oVIw-vrspmBOC_%#_{0DA7X$0Fav<_ zB9F7n*Hj+A&^X#OLy1dllvQVfk^-iKydd z@%Yg#-uqoQ<%qhS^TnYgYZ!MzGG+JXs}5q)MQC>&j=obBb#C9U>}qz@EVj=o2$2Ye zEcR{+ha}U%D=*$U@gi;1Y6o18kVS z98q^Lc*%P~U>F3w2lmJiG=4z{+CL|31^Akb-)Bk;c2qQm;UCyh=SNuOz>ZiQk?#Y^hg&NE;0U`co9rZP#qv z=N$Wo(ddg@j%y2m$~l*ovrJO|CoAGiuX4~}65r2kcFc6S;~74jFs8qu8=+)WnuV1m zY~K(leR0lfEzXc#k)LFBe0#uR`VDiEyi|Yj=Wt|-grABaW)RdCh<-o_ER(2Yq6C6o zG0bb^AAcwwE$RpP`Z zO@zINm!M+za=qvEfHYE4TYHi#*sV}BGpo!hlkkI~Ax5mCitWlo#Ma>TfurS*z!U-u z6S_Y4W0&mG9@MzW(403Mw->4h_HB``U5sjxN*~euI5^#2LhpugfOCkzh{R}cR}fJx zFOl(hj?eu;m9Xe(1trqlp18Oq2m>_{31jZZNo`WI6pb@xDV--^feV7^hsqT1d_)S$ zPb~Vac|^eigmG<%LcJ&cJD5u8^- zUfCW~!_4d`ONb_x8O3y=@Ym|ExbP$q0t$y-7)PY|75}rR4Ri4);u(2K|JjX3WHeT+ zm%ZgCKif*AtoYSlQ^IC&5Y+U)fB4H9*J%8Zk-UMkHeZlJ*0FR&n^H)ZVX5I!UokO1 zuR#5XH(dH~UN4wZM2JQInfPZgA^pqvRN~MKFX=>4Rv%Ud41-YEMy-LJbD>;ewg}tK zHu%2|k3shOjr;@3#zQBLFwl8!eP`TFG~8o7@%7`SG_hs7Uf88x+LW8K^cz#m*2bl1 z=fa7m4M3>W)CxW#v0G$EZj{^wd7|==c(n3^$c)zzWGW!4HA&wZtZ2;;&by_l~;h>~!N2xwDa{UDftH@zNy3IxJ_Ha%iCb zvLx5Ve!$szGnT{c=*d+JcAT!KWmf2nA?H?{<(N;w5C`iza4~y86Iprsg>NH}KnvlO zZ8FgYrttqCm_NL0A^lq&jaA}s-y}j5^bg7!@xj-tCEeB28iilKe2}JG2(%b@)x|n@ zbLMlvPdZbkD8-rz$4$P?Kvr%u+;RNi4FWtUYGp~L144yeiDNi#L>K~! z)Vh%KpO=xnPdw1|8>&QlCuNOgbcgoDXro7Wl*bGIyR%0)CUDTe=TlGnhG|pKQz;Xl zO49o&*R1ir82m5FmJt}@N!+89CoViqGB?poZF(8tHj5FM7L=x`d2@IlPBKjtGKsqX zsGv!ji13$>cHG}^9nP0v9%^5_!_xWJ;r1ItZqRhDtvj^IOG4Gh4Md#~bPv%w;3A1U z^8W9UQPr2Y@+MS#CPAT3+Qitj)1=*vD*XEXb%EaP*8MR&rn}25*q7L-DR(-|K_)zQEo48mgtj3Hkd@uJ0Tx)7mTg{%(a zTzy3AL9gGU0RJEy6aFLhEw2xl(5qB81qsyM@ooS`pnBFvkqBH@1>D}6KU7*{9;7v4 z)SuXP&e&Z-8-ZH1+}%YMv@8a{1lQ8nZzU8Glg#?%o$~dzhawX{7 zQf+MB3(#Bs8 zg681UtYC9top{*WKF%Edhk4FTXza(j*thBKO@2-*E3$UgSY=Uze$r-Td_M9z?L{q* z?T=grGX9rRDhV3=Cg(F=wY=W(8HCbVD>R$ib1qi-(%)|sLylt-g*Q?tAsh4>5YDkm znYHr|$|=;{Oh2%fe0~rbwJ*YcFnFw8ngg3=NQ*#!X#0{;EJG$s-@r6qVFhlT^#%Wl zdDLys{rivn;?xWn6w0FZC=9VxCdf)W_y}IqwfAW!e0ff5A|L|Ob~#lu{5P5V%lCq3 z0R1&cd%kuH{KsY6fux4DX_#ylp@%&;%`fLzupsL46GcG(sFyCe?^|j{(9xnn%DD=q zcxE$)3HjaT;GY|QdLMpRrfGi~o6;fcux!t^bo(2IunXtzGPyEjRnWJX6zjx5fL}gj{P_A zEa=cAP}=w+q03GOF{NiQb_F7xNrH-OI4kAsLz!dBmsQOTQ(0pnt zBb!q9-3bM9HVQ5!pQC~!O7nGIF4Nk(_wO;$F66`0&%H{X z9G~z30utA}Q|Y@&N3kegf1=!QV1hjJInYD19InnaYFB?56gpQ)Lyar0AC3N4hvh8J z{@zgs+zFksC7UkGbrh$5qLX>ckyXL$_>CfqIz^Z->=7jgI!8NK!xHgX!v2GX253Ek z*#9LkpwbcUs5qMy`c)-|^WK3X5?%lL@4=a!5ds!j-H` zqILO7MD$k3M(hone4gRfgMFf*w|NirpSB2lYX^*?+;Od1UJNX<5Vsws&Z>v#FRA!& zHb+S8aW?H_yR;P0B&_tgA|b^>)vcpeVHeJMzYu1kTWrw#oFgnQrfciW^uUdjgaga; zvnP*a*+y7{ge+djCV+}&2&ZJ(cmpT1lO~?WXRDsap>m)`hwQ&AU>+7@r?~ff&A;XjM4jbLi%s?$3<{!uPLwHr za^zl{;4k)a{R@{&+Vu;8-`HO*^ge%&_Z=_^WIz_YxZ|dK`Jd*dahnO&KfH9KEe&x8 z+i&UX3j;mVSSH#}oFif=$lHt#4u6ww|EJ`@W_x$Do(^@onQ+sa?>?gUqj-J1FL{jm;(6izL3Vz^gWb{rcg z!QA2hBpkB(WF)lm(1__RpN?+|Wdb)Du!Lbna@tO+1_YwKNpW$aRprTPRaG@MK%=`EZk!B;h59cK!BKavag`3`R)tmcyW~~kVdVTnsxw1iG+eJ_sy5G@M)k{4-8b}%6NJ*t7`n^`{~c@MT}f?T)a%#Gf*pg8)e`2 zbC34k6roOBr|wQ9Het3qjk2rt4797*Y-T)!XWYeTJRxX2AWfl^Y5dd3h~nPxJnGFM z4854!4y*eB(`-U}Z6y5&IWtQsc&$(Bb^S@!S)OCa;9FQYm32qfQyZa!zjmmv1r0Cy z5LYML+tMa_%|<8iOy&)L41`K%HODd}*jl@}o@%jPopwxt#(q0Q({L`H5I6$8k!&IC z9-2FHGC};}U4p6!x1A|+9N#qQ3E{T6CZoGAA9t1scsg#xitBr8V6rz067P(B>||0? zPBPk?qs2ok{oraHrdg+@ID{G1`mf>679n?#( zuK%^bueMNYzMd`2*ZcS6JCkgzVD#VLzMJ|zp4nUW(fux`QDrBWMk@VMDye ze*(byiq$1@X;`yHdtFBYf@i~v@W$%{rTfK(4CI+RC9<;>r|!7xx_zUsb@gif0Pu%S zS=(=#&ufH@-}o|nay=v&)lWQhM7-~?AZ>#70}X_~hXOwls;+(h+nGO1CHiDa6el_! zki1&h_dW5FksUXij)k;C*HZ)4lEep`?95&wKBW0@mYx$iuYCR zYl1z6zL20X-~V2XRf`$BiyV{%3d4Q#Ru+gu9v;WO3y4B`TJ$Tzf1Ez%;@ZxJ=9~dxrk{3fp=1BIfpEbV>V1p>-)I>O5 zJV&va{bjmAFT%`BM*X%7Q_||cS1#S3!W|~hQM-P3 zEqIzGak)=&d{BPA7E>bz7G8>53Q`vowf+M7mD?gJrJ>GUWhYC*?=aYP%ci4U!$o)? za8uPj^v;YE4VFGxXWADTmYZFutXB6vOCs#?A;8({okjx4=g6KRU%{Pb|6?ybF;&f~ z%Q}aDMd!m4Ykw5qWnnq)9*2f0%95B##5G$K6AjgSCBv6>mt3sKQk>@N@NvktU;H|7 zHo>D=i8T2D0flfn*fSm9E&dmIaa*%`Dq8Zl>uZ1VLGinwwsAZG1iSQAgQ$~7DA(h; zmd)99_|;ls19O#!;wv{2f$Z`~#A4n>0Aa+3DVb@Fy(X|v?l$xzu`2%I!jUq9f%xH0 zcB};GI(;00gOHZnAB9{1118XK9DIi|t8d?r`!ozJf&GDd1;XRaoT%dN_~gatX6H?Q zDLe&u94+v0fAM%&yZB}w^>OrCgTHl;|C0mpxKrj%`uTi^?2xC6GX# zAO9Gr<`}l{jyo~B*i~3&AIKKRvsD4EVDPGM3DwR>S^vpN*|wxa;CT^I$g?uX^Nz$F zTN_a?z$Sj&Iy1VMf_ZOeXWnivw2hrlesu^GYNIXSv>SMg`k>$5j`&k=-fAizoRiz- zvMQ9n@7Av)%eUS=ew`K2Y?2b+B0ga*K2UN)_ga}Pxouha4gmYdH=(|I4e=>F|`w;{9oepFZ) z5WkfDFCk*gMnTe;UsTZ0qLTR#gyVH1DZ@Bj8maY)TuO*gif=5*nBGg2*FGK+^v!*| zetEWvIuQ$?mYW#Z57yJ5Rgck}w}WtKcV&X}m3^F!fe^!eeF7Ow$VRLGE)cDy=2Zxt zPCh*J4E$FGKtEd$@x%<1E6i$#k9{03Mr~X5JHFB8e&e%zm}EX)h9^8Raj= zuzx9e`AH{m&GUa$1frMv?`(PvBKRG1HFOE&!FH5XSj_-E=+nb$nDW-wY2u2C=)=VVkd~Ut zq~Mx(Z{v$0Q{^ph)u(@I`j8s?45?G3FWL_76L?>< z@1ED7-2$d_H1V~ZSk(@yG*l=zB5B3KD{CD4Gn_$7?X9$k=_5?07}9^FBYiVpnI7jRy(V77tXZ+g zt@V5()Z*ghj3MG9SX9P_{H#(4WetA}WXed;pJk36N@?AMG@xg>k-A>I6_m%jV^~T{ zBKe7Zp4oc}(A&<2>%|f=G}Yd0XDF1H^0L?o>x*uB|HL#?aolHZbPm$vPJBNe_WI;d zubL|!0OGIub1DTg!_k8*Lp0?O{gFgGj3=rVO}nj9C0}0=Qfi;d@XU`rZ1@K<%e)*8S|n!)S)U z^D6X^o?f(&zYnGW_l|9hopA*x%GOb%!0EI4dn`?@6LRj=m~PQmgvzjAC*rk6YFfNB z9)Lr^$NyA>3ChP^oDgr*m!MvbSd@n+KPJ3NLPEGSwS>x>m)TW8L$~7}XQktYo#Gdx zw~)h>xneD^G0<0W$#ff zys0>QSAjaq-<14}s63ITi*03k(PwQjn_iO$>lz0QS^Gq|x^tmgBJi zxR1il;nE7G%JuEcZjB8?xIgrESp+X|caS8)!Y3y3A)?7sDcXLLUEXsE4?Y8{!ngW1~bP7NB~LBhgz z$_nIh{W~nM>Y7MH_Vr9gqgOjk&)R$)Ny0SvU1UW*CoJG>(ck>F+x* z^lKtgrzl`>6z0FX#O+QF%Wf+w0|rJa48`ONGS zD<>pujY7V`R4RdzHfk`RwWlid%c#omSD94CZWZC>xGS#n$}!}M=E=e1Hk|GUHyZEs z`Ic|hIa7Io3$gX#%T7I`V zkVN0}&w2Wdow_4rgZH z@$nr9_Jc zHCc_7f}`>9*y#WCRa||#*y>g~ULsP5WhZR(=giT z-_T?Utwf&%P9&WLu0Kp=K2A`}D~vplVuy5F zAK|<5X$zJLatBIA{ht0$v+fc+yldpE8%YDk=&PznmAeD#45GYiNzIc#`V@D%W93Yi zI$H%zLz+o*+xQPDZU}XzQ^1j%aG<+M9vdMfIAIP+xCj1dwQ@b zs%k`_o4DCgyVKcDerW^Ig%~D2JpeW4Xq{C@k`3ptagmuRu@pPwWm>V-8J{0 zd@|p7RssA?C9RnzvQ-8}0Mi;epvdeZQ{26$9{eGUT)@S($hQEUHWR(a-;dkQ94n9w zHwc=4#%v#36~5%uTHvaQB6ej}S?Rf%+QIqOj6_-oWUH1Qey=ZSW*tznEHEnIO7(ck zigx?S^4DKrW#@r1&1_&psX^y|ub^HEls3Kgn^hH*=Oa`k`pw^Hf0I~vB>WLz=;k2w zm!`H6kINfQzxSrtH`tUa5H}?;z&Tz^P3#FUscf)aRjeLY!jBx3{BJKpYyEZl%e3)e zi|dV`r7o?yHu4{%ZkGG3WV5_!^Gc7jUs0A8u1YHqD?YSYoEJj<-y-JQ9n!=g8&ZPj1(J#Ov$0huA)E0((=h-xayGAt5_K7nP@vNVZ;$YDp`6cq zwEBjqg1lWIvO=|!kdh`jckCE6RPVIxl(7`eC-3Xi-*OgVbYV8gBHs7fs8dO#hNX&M z2_scM0lU%20w8HNA$EKW!S+72leL!P4P=u_AYV&3{u)c0Cz<*h;P!D(H~dJPQ}Zf< zW>WqB&8FYIloa*mmL5NedBVe+q}D)}Lx@4ClPmtYharo5t#9$nbtnJK-)*c#+gCJu zsgoZM@;yCnQ9=~PfnlrN6=?(e0UhBg|pCeXYG zXXFROwT-^RuN-bF_`)pzt%67ceS={VYu%tAA|++YG^lg*M6Bh|4`$+BxlJ#vz$!*d z7V$XO_JK!Q@2>(;<-D}*#^O$^`@`W;s`Crg1HzUou~-Utlj@Z*1lnM<_7e*ga#I3W)(=30H75?Res9cqmzBUJ#?lV>$tyuZj2 zzAk38>B(2zScQ7@>rBqsMC(WcFp<&)`Z#N7N+q|PlpqTjE~x`rco@#^9~js(7P&)= z8ang-5rr!L>a>;^hZSpQwV7)3Y8dLMhfT^=)1L!s#rT9F@o_)XInTaQ)^>p3FtnM_ zrZa(Wv$U~K@T_U4>rUA9`7bx|jaNzIJ1V+Kx2>0F&9Ghx^=O|z+EzYpL`X$Y!mVH6 zY=*ul#wa;n8Y@PS_Q3vzM8bfn6bhro@jApDc1p=77(=)X2>0g^00FtJkg?8z)EqDq zCL134z&S7Yv45x0Vjs#!yc@6}u3TTB@9sfE&Oa7rA@ldMFqPx4C8)azky1@gi(jIv zoqmzMaPVnGvvigL{mJKjr*ps1BIN(Mwu`tlZLQRRRD|D=98erAegB!PXG7(C|Jl8@ zc4$^75hzr&dXK1dcfO)#OGx%6iNO)lmL0pK+&9Ab_(y1({MvjF7mwX>5F^UEmRM^4 z_`gUDLVp8guW?@bJ{K((a014mLc_Z)^nswSy5zfU8}hU5QY(?+l5Y+v?ySB42`#GT z!Ty=C+~^g6(T`zdB6mt7e)5#iYfpsRZXyXZF11tzT!)!dS3T>nGsiD2e-yse)-AKx zVh}V9WD18BR1J%qWm;V&*~|+nl${s}F@tS7we#n@V$h>dT}sRS)EBeDy>f%>Tr?KM zNG@KZ<3~;={?AVOrZ+-kk13mu0U4>*A=$gW2twN5;EFsx{)L=GRsO0aUibNf8mc_5 zAlN0L=z}$2$7}JsIyQeLN1;Wq9{+oSY;V(UbCE)s;)R0xJWFIVKp&rKGj4xSP0pv7 zI~g09%nQ00tKkG>4!nGK0i#x9&9Idba_MT$p&EU+QHFKqb&dP?zL;icZMI=va&Aa4fHqP3LS*oh zp}M|nH_?0J$wtZF81YX5$R*KeGd1AIy+R@n33ymufa5eZ*l5sdB`sWyP42wNA_-OX zrMSV~ir5Gxn~gvvA7M2pCX8;Cs=rFhq?#ck>2fTv`^8N-_$emu{!d9)qn$kmyW@ax z>HZSi+~GV$MF|x8@k?Z?E9?FeYAy#_COo=0nD*mtI{^+{-IP?`zzyYdx|q^` ziGEIf)#r^nPV8b7T~PkBTU1uqe@JA4|eyZY~rEW14qNsv)Dte_Lt|9E_R;w z=YA$S+^GD_D6^XT#!8t}i)*NfPse$ykK>YlWL>cgcE}2Q!^!IkJ5dTXI~a*f)!g*5 zt;RAy%nufijiGB8scC-G=?$5{-9nBAatNIQGD2(Y z+f#e(@UK?$xeI`}qp%>u5ULabF0#&ox}{)v(>6Je<_S69bewn(h#a$Oh}aya8-8)f z$pUtN4fbqDuCn(guCX<20f#HyB=o0z*{ntpI6~*s_`H2zXs5>Gd_a+4szBUxRg&f2 z1Vq)-zKOPF*ZwHBeZg1A3#|wDzV&!&Vq}9QYPy?sckGRRj*Ny#8KBVnWIGsdvqDPdMnZ-(u*U=0;8x|2qcnv%i=CF)_bn{iJ@CMMJc5}ET~R4$LFKmqG$!`otgK*<@McFQ(I zhsfMkQvtN>)hQ*K9rj}r%XFC_O?m%q&zpp=& z^#LB=u(2ua7DrdbCXTaz26SJO33rayZQY#WMV-X~B@~W{I13pqpa!Qv(pRA5(TnDTbNs$84z+Ru0&&Y~PLQw32^zvK}adt-!0 zh*G5dO4=BoPk>`6f*^*l#|5Yf##r0|Nej`Ag5T%tqS8DmH=AJm@+FafLoFZdf@#6Q zNGW;Nh4li_iAKepz|uLw_p`GYbM~+=mTTug1MZdD5b{BEB(eesEKyL%_24(IbF^ji zUEi1vZTG!222lN><(l9eylnMit-~mciU@Zc%8VjPM64K0s`V84N7AwBx&-ZQk;A-r zm1Foi7)x3Y;MTl)jUTrHb!Gubk;GmgjgK~P@WE@UOaClJ^1yZWtNngbmt>ac^&o~U zusA{+90+)ZP&X}_Tl+4rt4Y}2=_vYxfrFd#GvACvZQYmwI-8|Zq=<>e?r%A6YfBV8 z6HCBdS=jBl!}R(fGybyrZJ_XCqHTe5f9jO>&dFUh)XfNVm^+9u%#boV5cQG1Jl>{Y zO48H?2lX%Fk_q?mieAi<^#=?VZz2MeqB(%3kI$De1S$bAhemBW=2PpGLV5HF6bq52 zVvOhh*J0>MqNJs^OMvwcjtm+)0j4k1S_?tMhrh7O0Mo5?!<}ZC!$(f&RB%{;%i=Q?_k5hPv+Z39)P2%g_SgaA2rRh6vGsI`owx?K13$u7V4GdgSE=Q6BXgT=^l z$yhRVJ#dX)c#7yy%4br!sqj~tnhx5EG=uBgXlWUO^u!rU>=-7Pz%k*9ptT)6z_C<5 zbhZMbM={jo_Ekqfei%;4t|v?&4S}I`b>8+daH&$J7R#2=+$8ou1Ea7-d^Ej7o=4WC zV_|mhHsVc-PTI6MKI8^@+j&$is7Sc}vhVA;6S|0?^8-Jvl54vAn?vkrP5sv5%pR+$ zd;dMzyfs}&7&ClD&JW8a0EA@X#}ml?$>dWqeucX>Q!zb6R90!ED>S3AV@Q+zC+JEY zI@<3Ua7(4%%!W#G)3fPLK`tUnA}7`ZGi=gg|7^9yyATsjNplZ(e_)9)*ot2qYYR5T6_!wfR zHz%N!L`OTj=39m)w=TmB;)q@0v1_g{%X4(G%@U)M_ed4?=w38HO zcbsiB4@2h?qwCkgTijY}8*2=5#LmevPSRh5HV`?Uhxxk(cO&-Uq*asqF z81CW(&xqoHOZ)F;R9egRKR8r8Q|s&1{{-yJel;L+=Mrv36K>&t_09I>wv|mqM%wG_*$~Dw^VV(g1U~6^bE;eGgRX#bcs1kyLtAO%whYof3y9vwY>*CkmUO}Y)O;`3nMc{H#@~xAFl=E_HOM(5o z?ZLEm9||N~XlkC?xe;FADv#y%R>&m@iO%n@LdHduR++#-_{_mzYeBb^qV2 z&gPBQwizxhsf=vZ=D%oi(!gH{VgXjJ0XR66PJ@w{8onk_oE@g zi+?vFz}-sJ+o&AKY2|0-f=GjjbrpgqlPW$vq)d}kIbxV^%@T^<&f|(cdt&~A)XG|w zygLmF=nVef-8*fVmi@AgO2uTN3=aQYQw_CN#-I4WeSJzZ+@dw`V-k9Ro5376`|teR z---3md9!qeyR<^MF{GEOW)Z3DPLR4Z)#i?YTRXgn{5BKqe85pDQbH$T`7F(1Cxf&# z@7tzQ>5vL9@s)4ttvIVVyC<4qxW)03PDBUx-BwA*gGP5Ru2d^PET{)cep2uI(gNN3 zN#kTSG=GJ*Ix?`XA4&ViV_U(7z;>b7rgW)z$t_Nw@jyo_X{QtixCs;|3RBW#$G5~z z@YBJZR@|0Kp0=)|^LB$Iw)zqWbLxeOFWu0|5R4gMmSMXkdb)&)+50!b&yLSkNt*ZmqN%ohsr?g zYh`7U#o9j%0Z1al>LhzvS0N1R1xfZR2FsUkGg_7<)2)p(6B?M25de%3|2vM(zteRh zz%>2?E1R>lt}coe%VLRI15|*6`(%*j-!#`Cd*?e8OL<|iog{gQf?(x|fYZiuEQiRU zx~UZ?eO9c9JXzkVuK4kMILS{J_5#?LTLj`nNejEsn$#Y}?Gt=KO*g8(uWvTr${I}L zGR-SZAm^qAg&9FUy`nx&tjMn#nVS-{ z{L602(vdqvK^G+c|4O!D>`fKKoCTdd05(YI16za5wq6}ygA-==i^|$s0LV@?y}BB>Bpo9j3=VKjie|)!!S0>zT64jn5hgY;Fc40XxS7{7Q;anW zdGZqO0lblqmz&W6+g}-0;xyg&Tai1iLMf@K5#NIz82I@~0JkA7jv+D*!_rth(PtHeDRI3|CnDn?KaRQbYGfPPeUp}= z-H?{YMRw`s2I-leM#I)ZD@-Zl(dpL15~&>V6;DT8CuT^uRV#=9s~p-2Tn_^1z3I}LvZ`3%)++h~jSA@Jgx9{cDxSjQE$SK8}6-=D~ zX;;=BTeJlXFafJx-O+FQ7zapyg<@R123pfRTj4Tg8B#rB?T^JOfq(KHgr53V|00TB zXybGBI3$@*sFLXxZ|@!oc$vaAbcE`?h!@Q;R|9*HQ&~DSG!905LTm=R{cb92cN6&P zVwkxBVZLV6y?HG)oyAVf!5F+n)X-P28542=2i^fVq_=K(bZbPXJa1qiA8@}0$W2>l zCYXt`xIyzwQbMNZN1z=RFIX-FK;s-O)^wX}AHG1&o~=si&xDeCPwN+tl1qBLTh!6L z&=gCB8RJGI=5d;!+!ZcaMWkO8a~kI_V1x!u(2oYBO>eUwWSTjCGV_ejS~GtX&?Wlg zi8wopm5bv#hKF1xXE^4hY<~s}7$CHh_3VLm!%Wd*V`}Y4{3)<^ zgDUY={xHV&a$od;WasClF6WHsr_Qc&Ns0U5sM8Q|wH;sm;s*H)cCS+PQ=sN)K$;0W zN$y*PdD2ZRyqr}1RZ2rOdkLL5)imSL6Beq>N^i*L;K!@0!+jMyq0dwk7xL(CUA>JG zQGoM1{?O;v<06Vg`GvK$vfEpa><*6|>b+ZTF|;waP3=N#<&iS^4h{aHP>?`S6O z&h1wWqg!gU^<0Q(xGyPVtSxfy6_F=p9K0s)&+g&a)NjX~60>Qa?^FwQZSr2n`%u%> zJnbDSOc2hyMv=AR;|S39x44eqSAR)3Z;u?!F!uv)q=GIudnfZT0ehvRuq_dD${%liJ^bZ%qA7Let$sjjK1Fv>@E*(eh~EAJ4R6(`D}z^d{bNz4+H_AZc=`m{hi*+{=UZxJ#WOc|kYq?+#Dt5D->HF}C~om+@U<$`Vkm1DeXz;?mU64NLbj z3OhMTtGXFVSp?8p_M{3j-i5*Qm+YxB>q488FMm{?b}d#^ILH__y)~1WiCuqyG4#N5 z8a{t6OgK?MM?erH2^Rum-}$p1^uBuc8_lC6Qn<^?-_fjX{Sh9DRoStaz5cv9`~)|$=v-XZ_{lW+d%caAcBhmLh&`~?woaShntETVxEp}FONA!qG^ zdISVX7lv5mX4i%go_DNWVWO03hZ}UlVgJtDdIF&OjduDqx+MFJuuJWSG&8)0yMv#O zi2}jO{*SrAYi+`2{o0?O{Yqsa-)RfGH7Ot|_^` zp?W&nk2Q6s)^v3ITtCFn*;B5a?1E8KU$3qP!L;8=l`{;2=s$NulW4efcg&(a_tlNX zGUfS&gGq%os1QPPK~mIN!zvN-tHEvsoYzCwD`q0CM|j-)ZJe5VYUxUhZFUnm!-g-e z9n}z{YG3!NB?kN@)` z&A+w!to7gu6<89-!bJ&*@RDv(w4VIU0EEj9VwEX=p!`v~y(b##9FF3KfZ!sJ;%07o zyr8vOkfv3_R?=^$#3G?o*;u9A8~7XG!Ce0RC)-_pZuW_DbnD#c!)SWbNcn*o3Ic+$V7PA*vhx#Ew%|jr zr@VLb_}u7f9gp&e%*6mJJG-W{bDe!LtKvhv!|%Prg%A)tWbvmg`S}H6CF%efOwThbJ-s$GG|o4l$wzC$oCK`! zr&Jmi=bt(Pn%Y*)>;&!}0)x{tGplNAjRyzaT3eQA-Tr43Ibf6;-L;~LTtQ$ls&2Vv znVwVgn&5f+|GGATH+u-=o??J$X~|C8T}z&ygIil$?O{nY!ans8uW%9isPTuI^}TK` zuM3_Q>x?P}1_s8Bcah-Ga?ti9(%o#-;?yZbY1iAP9oeM(t%16XjEu0`cI55xa>*yM z06t;2HU + diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index 72046986bf..500b075cb6 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -2,11 +2,33 @@ Changelog ********* -manimce-v1.0.0-dev + +v0.2.0 ================== :Date: TBD +Changes since Manim Community release v0.1.0 + + + +Mobjects, Scenes, and Animations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. The ``alignment`` attribute to Tex and MathTex has been removed in favour of ``tex_environment``. +#. :class:`~.Text` now uses Pango for rendering. ``PangoText`` has been removed. The old implementation is still available as a fallback as :class:`~.CairoText`. + + + + + + + +v0.1.0 +================== + +:Date: October 21, 2020 + This is the first release of manimce after forking from 3b1b/manim. As such, developers have focused on cleaning up and refactoring the codebase while still maintaining backwards compatibility wherever possible. @@ -20,7 +42,7 @@ Command line ^^^^^^^^^^^^ #. Output of 'manim --help' has been improved -#. Implement logging with the :code:`rich` library and a :code:`logger` object instead of plain ol` prints +#. Implement logging with the :code:`rich` library and a :code:`logger` object instead of plain ol' prints #. Added a flag :code:`--dry_run`, which doesn’t write any media #. Allow for running manim with :code:`python3 -m manim` #. Refactored Tex Template management. You can now use custom templates with command line args using :code:`--tex_template`! @@ -42,6 +64,16 @@ Config system #. Implement a :code:`manim.cfg` config file system, that consolidates the global configuration, the command line argument parsing, and some of the constants defined in :code:`constants.py` #. Added utilities for manipulating Manim’s :code:`.cfg` files. #. Added a subcommand structure for easier use of utilities managing :code:`.cfg` files +#. Also some variables have been moved from ``constants.py`` to the new config system: + + #. ``FRAME_HEIGHT`` to ``config["frame_width"]`` + #. ``TOP`` to ``config["frame_height"] / 2 * UP`` + #. ``BOTTOM`` to ``config["frame_height"] / 2 * DOWN`` + #. ``LEFT_SIDE`` to ``config["frame_width"] / 2 * LEFT`` + #. ``RIGHT_SIDE`` to ``config["frame_width"] / 2 * RIGHT`` + #. ``self.camera.frame_rate`` to ``config["frame_rate"]`` + + Mobjects, Scenes, and Animations @@ -50,6 +82,7 @@ Mobjects, Scenes, and Animations #. Add customizable left and right bracket for :code:`Matrix` mobject and :code:`set_row_colors` method for matrix mobject #. Add :code:`AddTeXLetterByLetter` animation #. Enhanced GraphScene + #. You can now add arrow tips to axes #. extend axes a bit at the start and/or end #. have invisible axes @@ -64,6 +97,7 @@ Mobjects, Scenes, and Animations #. Add a :code:`Variable` class for displaying text that continuously updates to reflect the value of a python variable. #. The ``Tex`` and ``MathTex`` objects allow you to specify a custom TexTemplate using the ``template`` keyword argument. #. :code:`VGroup` now supports printing the class names of contained mobjects and :code:`VDict` supports printing the internal dict of mobjects +#. Add all the standard easing functions #. :code:`Scene` now renders when :code:`Scene.render()` is called rather than upon instantiation. #. :code:`ValueTracker` now supports increment using the `+=` operator (in addition to the already existing `increment_value` method) #. Add :class:`PangoText` for rendering texts using Pango. @@ -106,3 +140,6 @@ Other Changes #. Rename package from manimlib to manim #. Move all imports to :code:`__init__`, so :code:`from manim import *` replaces :code:`from manimlib.imports import *` #. Global dir variable handling has been removed. Instead :code:`initialize_directories`, if needed, overrides the values from the cfg files at runtime. + + + diff --git a/docs/source/conf.py b/docs/source/conf.py index 08605eeffc..4e4e15dcee 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -39,7 +39,7 @@ # -- Project information ----------------------------------------------------- -project = "manim" +project = "Manim" copyright = "2020, The Manim Community Dev Team" author = "The Manim Community Dev Team" @@ -52,6 +52,7 @@ extensions = [ "sphinx.ext.autodoc", "recommonmark", + "sphinx_copybutton", "sphinx.ext.napoleon", "sphinx.ext.autosummary", "sphinx.ext.doctest", diff --git a/docs/source/examples.rst b/docs/source/examples.rst index fea2e23c56..5f5fff964d 100644 --- a/docs/source/examples.rst +++ b/docs/source/examples.rst @@ -1,15 +1,14 @@ -Examples -============ +Example Gallery +=============== .. toctree:: - examples/shapes + examples/shapes_images_positions examples/annotations examples/plots - examples/text + examples/tex examples/formulas examples/3d examples/camera_settings examples/animations - examples/neat_projects examples/advanced_projects diff --git a/docs/source/examples/3d.rst b/docs/source/examples/3d.rst index 6a46f018df..9c25ab6642 100644 --- a/docs/source/examples/3d.rst +++ b/docs/source/examples/3d.rst @@ -1,10 +1,10 @@ 3D Scenes ================================= -.. manim:: Example3DNo1 +.. manim:: ThreeDSphere :save_last_frame: - class Example3DNo1(ThreeDScene): + class ThreeDSphere(ThreeDScene): def construct(self): axes = ThreeDAxes() sphere = ParametricSurface( @@ -18,10 +18,10 @@ self.set_camera_orientation(phi=75 * DEGREES, theta=30 * DEGREES) self.add(axes, sphere) -.. manim:: Example3DLightSourcePosition +.. manim:: ThreeDLightSourcePosition :save_last_frame: - class Example3DLightSourcePosition(ThreeDScene): + class ThreeDLightSourcePosition(ThreeDScene): def construct(self): axes = ThreeDAxes() sphere = ParametricSurface( @@ -32,13 +32,13 @@ ]), v_min=0, v_max=TAU, u_min=-PI / 2, u_max=PI / 2, checkerboard_colors=[RED_D, RED_E], resolution=(15, 32) ) - self.camera.light_source.move_to(3*IN) # changes the source of the light + self.renderer.camera.light_source.move_to(3*IN) # changes the source of the light self.set_camera_orientation(phi=75 * DEGREES, theta=30 * DEGREES) self.add(axes, sphere) -.. manim:: Example3DNo3 +.. manim:: ThreeDCameraRotation - class Example3DNo3(ThreeDScene): + class ThreeDCameraRotation(ThreeDScene): def construct(self): axes = ThreeDAxes() circle=Circle() @@ -50,9 +50,9 @@ self.move_camera(phi=75 * DEGREES, theta=30 * DEGREES) self.wait() -.. manim:: Example3DNo4 +.. manim:: ThreeDCameraIllusionRotation - class Example3DNo4(ThreeDScene): + class ThreeDCameraIllusionRotation(ThreeDScene): def construct(self): axes = ThreeDAxes() circle=Circle() @@ -62,10 +62,10 @@ self.wait(PI) self.stop_3dillusion_camera_rotation() -.. manim:: Example3DNo5 +.. manim:: ThreeDParametricSpring :save_last_frame: - class Example3DNo5(ThreeDScene): + class ThreeDParametricSpring(ThreeDScene): def construct(self): curve1 = ParametricFunction( lambda u: np.array([ @@ -79,3 +79,54 @@ self.set_camera_orientation(phi=80 * DEGREES, theta=-60 * DEGREES) self.wait() +.. manim:: ThreeDFunctionPlot + + class ThreeDFunctionPlot(ThreeDScene): + def construct(self): + resolution_fa = 22 + self.set_camera_orientation(phi=75 * DEGREES, theta=-30 * DEGREES) + + def param_plane(u, v): + x = u + y = v + z = 0 + return np.array([x, y, z]) + + plane = ParametricSurface( + param_plane, + resolution=(resolution_fa, resolution_fa), + v_min=-2, + v_max=+2, + u_min=-2, + u_max=+2, + ) + plane.scale_about_point(2, ORIGIN) + + def param_gauss(u, v): + x = u + y = v + d = np.sqrt(x * x + y * y) + sigma, mu = 0.4, 0.0 + z = np.exp(-((d - mu) ** 2 / (2.0 * sigma ** 2))) + return np.array([x, y, z]) + + gauss_plane = ParametricSurface( + param_gauss, + resolution=(resolution_fa, resolution_fa), + v_min=-2, + v_max=+2, + u_min=-2, + u_max=+2, + ) + + gauss_plane.scale_about_point(2, ORIGIN) + gauss_plane.set_style(fill_opacity=1) + gauss_plane.set_style(stroke_color=GREEN) + gauss_plane.set_fill_by_checkerboard(GREEN, BLUE, opacity=0.1) + + axes = ThreeDAxes() + + self.add(axes) + self.play(Write(plane)) + self.play(Transform(plane, gauss_plane)) + self.wait() diff --git a/docs/source/examples/advanced_projects.rst b/docs/source/examples/advanced_projects.rst index 6490877ceb..9e4552571d 100644 --- a/docs/source/examples/advanced_projects.rst +++ b/docs/source/examples/advanced_projects.rst @@ -1,10 +1,251 @@ Advanced Projects ================================= -.. manim:: ExampleSineCurve +.. manim:: OpeningManim + :ref_classes: Tex MathTex NumberPlane - class ExampleSineCurve(Scene): - # contributed by heejin_park, https://infograph.tistory.com/230 + class OpeningManim(Scene): + def construct(self): + title = Tex("This is some \\LaTeX") + basel = MathTex("\\sum_{n=1}^\\infty " "\\frac{1}{n^2} = \\frac{\\pi^2}{6}") + VGroup(title, basel).arrange(DOWN) + self.play( + Write(title), + FadeInFrom(basel, UP), + ) + self.wait() + + transform_title = Tex("That was a transform") + transform_title.to_corner(UP + LEFT) + self.play( + Transform(title, transform_title), + LaggedStart(*map(lambda obj: FadeOutAndShift(obj, direction=DOWN), basel)), + ) + self.wait() + + grid = NumberPlane() + grid_title = Tex("This is a grid") + grid_title.scale(1.5) + grid_title.move_to(transform_title) + + self.add(grid, grid_title) # Make sure title is on top of grid + self.play( + FadeOut(title), + FadeInFrom(grid_title, direction=DOWN), + ShowCreation(grid, run_time=3, lag_ratio=0.1), + ) + self.wait() + + grid_transform_title = Tex( + "That was a non-linear function \\\\" "applied to the grid" + ) + grid_transform_title.move_to(grid_title, UL) + grid.prepare_for_nonlinear_transform() + self.play( + grid.apply_function, + lambda p: p + + np.array( + [ + np.sin(p[1]), + np.sin(p[0]), + 0, + ] + ), + run_time=3, + ) + self.wait() + self.play(Transform(grid_title, grid_transform_title)) + self.wait() + + +.. manim:: SquareToCircle + :quality: low + + class SquareToCircle(Scene): + def construct(self): + circle = Circle() + square = Square() + square.flip(RIGHT) + square.rotate(-3 * TAU / 8) + circle.set_fill(PINK, opacity=0.5) + + self.play(ShowCreation(square)) + self.play(Transform(square, circle)) + self.play(FadeOut(square)) + + +.. manim:: WarpSquare + :quality: low + + class WarpSquare(Scene): + def construct(self): + square = Square() + self.play( + ApplyPointwiseFunction( + lambda point: complex_to_R3(np.exp(R3_to_complex(point))), square + ) + ) + self.wait() + +.. manim:: WriteStuff + :quality: low + + class WriteStuff(Scene): + def construct(self): + example_text = Tex("This is a some text", tex_to_color_map={"text": YELLOW}) + example_tex = MathTex( + "\\sum_{k=1}^\\infty {1 \\over k^2} = {\\pi^2 \\over 6}", + ) + group = VGroup(example_text, example_tex) + group.arrange(DOWN) + group.set_width(config["frame_width"] - 2 * LARGE_BUFF) + + self.play(Write(example_text)) + self.play(Write(example_tex)) + self.wait() + +.. manim:: SquareMovingWithUpdaters + :quality: low + + class SquareMovingWithUpdaters(Scene): + def construct(self): + decimal = DecimalNumber( + 0, + show_ellipsis=True, + num_decimal_places=3, + include_sign=True, + ) + square = Square().to_edge(UP) + + decimal.add_updater(lambda d: d.next_to(square, RIGHT)) + decimal.add_updater(lambda d: d.set_value(square.get_center()[1])) + self.add(square, decimal) + self.play( + square.to_edge, + DOWN, + rate_func=there_and_back, + run_time=5, + ) + self.wait() + + +.. manim:: ShapesWithVDics + :quality: low + + class ShapesWithVDics(Scene): + def construct(self): + square = Square().set_color(RED) + circle = Circle().set_color(YELLOW).next_to(square, UP) + + # create dict from list of tuples each having key-mobject pair + pairs = [("s", square), ("c", circle)] + my_dict = VDict(pairs, show_keys=True) + + # display it just like a VGroup + self.play(ShowCreation(my_dict)) + self.wait() + + text = Tex("Some text").set_color(GREEN).next_to(square, DOWN) + + # add a key-value pair by wrapping it in a single-element list of tuple + # after attrs branch is merged, it will be easier like `.add(t=text)` + my_dict.add([("t", text)]) + self.wait() + + rect = Rectangle().next_to(text, DOWN) + # can also do key assignment like a python dict + my_dict["r"] = rect + + # access submobjects like a python dict + my_dict["t"].set_color(PURPLE) + self.play(my_dict["t"].scale, 3) + self.wait() + + # also supports python dict styled reassignment + my_dict["t"] = Tex("Some other text").set_color(BLUE) + self.wait() + + # remove submoject by key + my_dict.remove("t") + self.wait() + + self.play(Uncreate(my_dict["s"])) + self.wait() + + self.play(FadeOut(my_dict["c"])) + self.wait() + + self.play(FadeOutAndShift(my_dict["r"], DOWN)) + self.wait() + + # you can also make a VDict from an existing dict of mobjects + plain_dict = { + 1: Integer(1).shift(DOWN), + 2: Integer(2).shift(2 * DOWN), + 3: Integer(3).shift(3 * DOWN), + } + + vdict_from_plain_dict = VDict(plain_dict) + vdict_from_plain_dict.shift(1.5 * (UP + LEFT)) + self.play(ShowCreation(vdict_from_plain_dict)) + + # you can even use zip + vdict_using_zip = VDict(zip(["s", "c", "r"], [Square(), Circle(), Rectangle()])) + vdict_using_zip.shift(1.5 * RIGHT) + self.play(ShowCreation(vdict_using_zip)) + self.wait() + + +.. manim:: VariablesWithValueTracker + :quality: low + + class VariablesWithValueTracker(Scene): + def construct(self): + var = 0.5 + on_screen_var = Variable(var, Text("var"), num_decimal_places=3) + + # You can also change the colours for the label and value + on_screen_var.label.set_color(RED) + on_screen_var.value.set_color(GREEN) + + self.play(Write(on_screen_var)) + # The above line will just display the variable with + # its initial value on the screen. If you also wish to + # update it, you can do so by accessing the `tracker` attribute + self.wait() + var_tracker = on_screen_var.tracker + var = 10.5 + self.play(var_tracker.set_value, var) + self.wait() + + int_var = 0 + on_screen_int_var = Variable( + int_var, Text("int_var"), var_type=Integer + ).next_to(on_screen_var, DOWN) + on_screen_int_var.label.set_color(RED) + on_screen_int_var.value.set_color(GREEN) + + self.play(Write(on_screen_int_var)) + self.wait() + var_tracker = on_screen_int_var.tracker + var = 10.5 + self.play(var_tracker.set_value, var) + self.wait() + + # If you wish to have a somewhat more complicated label for your + # variable with subscripts, superscripts, etc. the default class + # for the label is MathTex + subscript_label_var = 10 + on_screen_subscript_var = Variable(subscript_label_var, "{a}_{i}").next_to( + on_screen_int_var, DOWN + ) + self.play(Write(on_screen_subscript_var)) + self.wait() + +.. manim:: SineCurvePlot + + class SineCurvePlot(Scene): + # contributed by heejin_park, https://infograph.tistory.com/230 def construct(self): self.show_axis() self.show_circle() diff --git a/docs/source/examples/animations.rst b/docs/source/examples/animations.rst index 33eab8e9ca..8aeae55677 100644 --- a/docs/source/examples/animations.rst +++ b/docs/source/examples/animations.rst @@ -10,9 +10,9 @@ Some more examples will come soon here! Updaters ########## -.. manim:: Updater1Example +.. manim:: RotationUpdater - class Updater1Example(Scene): + class RotationUpdater(Scene): def construct(self): def my_rotation_updater(mobj,dt): mobj.rotate_about_origin(dt) @@ -22,9 +22,9 @@ Updaters self.add(line_reference, line_moving) self.wait(PI) -.. manim:: Updater2Example +.. manim:: RotationUpdater2 - class Updater2Example(Scene): + class RotationUpdater2(Scene): def construct(self): def updater_forth(mobj, dt): mobj.rotate_about_origin(dt) @@ -41,9 +41,9 @@ Updaters line_moving.remove_updater(updater_back) self.wait(0.5) -.. manim:: Example3 +.. manim:: NumberLinePointer - class Example3(Scene): + class NumberLinePointer(Scene): def construct(self): number_line = NumberLine() ##with all your parameters and stuff pointer = Vector(DOWN) @@ -57,10 +57,11 @@ Updaters self.play(pointer_value.set_value, 5) self.wait() self.play(pointer_value.set_value, 3) + self.wait() -.. manim:: Example4 +.. manim:: PointWithTrace - class Example4(Scene): + class PointWithTrace(Scene): def construct(self): path = VMobject() dot = Dot() @@ -77,9 +78,9 @@ Updaters self.play(dot.shift, LEFT) self.wait() -.. manim:: Example1ValTracker +.. manim:: PointMovingWithValTracker - class Example1ValTracker(Scene): + class PointMovingWithValTracker(Scene): def construct(self): dot_disp = Dot().set_color(RED) self.add(dot_disp) @@ -92,9 +93,9 @@ Updaters self.play(val_tracker.set_value, tick_end, rate_func=linear) self.wait() -.. manim:: Example2ValTracker +.. manim:: RotationValTracker - class Example2ValTracker(Scene): + class RotationValTracker(Scene): def construct(self): tick_start = 0 tick_end = 2 * PI @@ -105,4 +106,38 @@ Updaters line_moving = Line(ORIGIN, LEFT).set_color(ORANGE) line_moving.add_updater(my_rotation_updater) self.add(line_reference, line_moving) - self.play(val_tracker.set_value, tick_end, run_time=PI) \ No newline at end of file + self.play(val_tracker.set_value, tick_end, run_time=PI) + +.. manim:: PlaneFadeOut + + class PlaneFadeOut(Scene): + def construct(self): + sq2 = Square() + + sq1 = Square() + sq1.next_to(sq2, LEFT) + + sq3 = Square() + sq3.next_to(sq2, RIGHT) + + circ = Circle() + circ.next_to(sq2, DOWN) + + self.add(sq1, sq2, sq3, circ) + self.wait() + + self.play(FadeOut(sq1), FadeOut(sq2), FadeOut(sq3)) + self.wait() + +.. manim:: FadeInAndOut + + class FadeInAndOut(Scene): + def construct(self): + square = Square(color=BLUE).shift(2 * UP) + annotation = Text("Fade In", height=0.8) + self.add(annotation) + self.play(FadeIn(square)) + + annotation.become(Text("Fade Out", height=0.8)) + self.add(annotation) + self.play(FadeOut(square)) diff --git a/docs/source/examples/annotations.rst b/docs/source/examples/annotations.rst index 33a331bd95..746d53166d 100644 --- a/docs/source/examples/annotations.rst +++ b/docs/source/examples/annotations.rst @@ -1,10 +1,10 @@ Annotations ================================= -.. manim:: AnnotateBrace +.. manim:: BraceAnnotation :save_last_frame: - class AnnotateBrace(Scene): + class BraceAnnotation(Scene): def construct(self): dot = Dot([0, 0, 0]) dot2 = Dot([2, 1, 0]) @@ -15,26 +15,26 @@ Annotations b2text = b2.get_tex("x-x_1") self.add(dot, dot2, line, b1, b2, b1text, b2text) -.. manim:: ExampleArrow +.. manim:: VectorArrow :quality: medium :save_last_frame: - class ExampleArrow(Scene): + class VectorArrow(Scene): def construct(self): dot = Dot(ORIGIN) arrow = Arrow(ORIGIN, [2, 2, 0], buff=0) numberplane = NumberPlane() - origin_text = TextMobject('(0, 0)').next_to(dot, DOWN) - tip_text = TextMobject('(2, 2)').next_to(arrow.get_end(), RIGHT) + origin_text = Text('(0, 0)').next_to(dot, DOWN) + tip_text = Text('(2, 2)').next_to(arrow.get_end(), RIGHT) self.add(numberplane, dot, arrow, origin_text, tip_text) -.. manim:: ExampleArrowTips +.. manim:: ArrowTipsShowcase :quality: medium :save_last_frame: from manim.mobject.geometry import ArrowTriangleTip, ArrowSquareTip, ArrowSquareFilledTip,\ ArrowCircleTip, ArrowCircleFilledTip - class ExampleArrowTips(Scene): + class ArrowTipsShowcase(Scene): def construct(self): a00 = Arrow(start=[-2, 3, 0], end=[2, 3, 0], color=YELLOW) a11 = Arrow(start=[-2, 2, 0], end=[2, 2, 0], tip_shape=ArrowTriangleTip) diff --git a/docs/source/examples/camera_settings.rst b/docs/source/examples/camera_settings.rst index 5b28addf02..c41fb2f776 100644 --- a/docs/source/examples/camera_settings.rst +++ b/docs/source/examples/camera_settings.rst @@ -1,18 +1,18 @@ Camera Settings ================================= -.. manim:: Example1 +.. manim:: ChangingCameraWidth - class Example1(MovingCameraScene): + class ChangingCameraWidth(MovingCameraScene): def construct(self): text = Text("Hello World") self.add(text) self.play(self.camera_frame.set_width, text.get_width() * 1.2) self.wait() -.. manim:: Example2a +.. manim:: ChangingCameraWidthAndRestore - class Example2a(MovingCameraScene): + class ChangingCameraWidthAndRestore(MovingCameraScene): def construct(self): text = Text("Hello World").set_color(BLUE) self.add(text) @@ -21,9 +21,9 @@ Camera Settings self.wait(0.3) self.play(Restore(self.camera_frame)) -.. manim:: Example2b +.. manim:: ChangingCameraWidthAndRevert - class Example2b(MovingCameraScene): + class ChangingCameraWidthAndRevert(MovingCameraScene): def construct(self): text = Text("Hello World").set_color(BLUE) self.add(text) @@ -32,20 +32,21 @@ Camera Settings self.play(self.camera_frame.set_width, 14) -.. manim:: Example3 +.. manim:: MovingCameraCenter - class Example3(MovingCameraScene): + class MovingCameraCenter(MovingCameraScene): def construct(self): s = Square(color=RED, fill_opacity=0.5).move_to(2 * LEFT) t = Triangle(color=GREEN, fill_opacity=0.5).move_to(2 * RIGHT) + self.wait(0.3) self.add(s, t) self.play(self.camera_frame.move_to, s) self.wait(0.3) self.play(self.camera_frame.move_to, t) -.. manim:: Example4 +.. manim:: MovingAndZoomingCamera - class Example4(MovingCameraScene): + class MovingAndZoomingCamera(MovingCameraScene): def construct(self): s = Square(color=BLUE, fill_opacity=0.5).move_to(2 * LEFT) t = Triangle(color=YELLOW, fill_opacity=0.5).move_to(2 * RIGHT) @@ -59,9 +60,9 @@ Camera Settings self.play(self.camera_frame.move_to, ORIGIN, self.camera_frame.set_width,14) -.. manim:: Example5 +.. manim:: MovingCameraOnGraph - class Example5(GraphScene, MovingCameraScene): + class MovingCameraOnGraph(GraphScene, MovingCameraScene): def setup(self): GraphScene.setup(self) MovingCameraScene.setup(self) @@ -81,9 +82,9 @@ Camera Settings self.play(Restore(self.camera_frame)) self.wait() -.. manim:: Example6 +.. manim:: FollowingGraphCamera - class Example6(GraphScene, MovingCameraScene): + class FollowingGraphCamera(GraphScene, MovingCameraScene): def setup(self): GraphScene.setup(self) MovingCameraScene.setup(self) @@ -115,9 +116,9 @@ Camera Settings Note: ZoomedScene is derived class of MovingCameraScene, so one can use all functionality that were used before in the MovingCameraScene examples. -.. manim:: ExampleZoom1 +.. manim:: UseZoomedScene - class ExampleZoom1(ZoomedScene): + class UseZoomedScene(ZoomedScene): def construct(self): dot = Dot().set_color(GREEN) self.add(dot) @@ -126,9 +127,9 @@ so one can use all functionality that were used before in the MovingCameraScene self.wait(1) self.play(dot.shift, LEFT) -.. manim:: ExampleZoom2 +.. manim:: ChangingZoomScale - class ExampleZoom2(ZoomedScene): + class ChangingZoomScale(ZoomedScene): CONFIG = { "zoom_factor": 0.3, "zoomed_display_height": 1, @@ -151,9 +152,9 @@ so one can use all functionality that were used before in the MovingCameraScene self.play(self.zoomed_camera.frame.shift, 0.5 * DOWN) -.. manim:: ExampleZoom3 +.. manim:: MovingZoomedSceneAround - class ExampleZoom3(ZoomedScene): + class MovingZoomedSceneAround(ZoomedScene): # contributed by TheoremofBeethoven, www.youtube.com/c/TheoremofBeethoven CONFIG = { "zoom_factor": 0.3, @@ -170,8 +171,8 @@ so one can use all functionality that were used before in the MovingCameraScene image = ImageMobject(np.uint8([[0, 100, 30, 200], [255, 0, 5, 33]])) image.set_height(7) - frame_text = TextMobject("Frame", color=PURPLE).scale(1.4) - zoomed_camera_text = TextMobject("Zoomed camera", color=RED).scale(1.4) + frame_text = Text("Frame", color=PURPLE).scale(1.4) + zoomed_camera_text = Text("Zoomed camera", color=RED).scale(1.4) self.add(image, dot) zoomed_camera = self.zoomed_camera @@ -191,12 +192,12 @@ so one can use all functionality that were used before in the MovingCameraScene frame_text.next_to(frame, DOWN) - self.play(ShowCreation(frame), FadeInFromDown(frame_text)) + self.play(ShowCreation(frame), FadeInFrom(frame_text, direction=DOWN)) self.activate_zooming() self.play(self.get_zoomed_display_pop_out_animation(), unfold_camera) zoomed_camera_text.next_to(zoomed_display_frame, DOWN) - self.play(FadeInFromDown(zoomed_camera_text)) + self.play(FadeInFrom(zoomed_camera_text, direction=DOWN)) # Scale in x y z scale_factor = [0.5, 1.5, 0] self.play( diff --git a/docs/source/examples/formulas.rst b/docs/source/examples/formulas.rst index 5f615f9638..9642fa4a1f 100644 --- a/docs/source/examples/formulas.rst +++ b/docs/source/examples/formulas.rst @@ -4,9 +4,9 @@ Formulas -.. manim:: MoveFrameBox +.. manim:: MovingFrameBox - class MoveFrameBox(Scene): + class MovingFrameBox(Scene): def construct(self): text=MathTex( "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", @@ -24,9 +24,9 @@ Formulas ) self.wait() -.. manim:: MoveBraces +.. manim:: MovingBraces - class MoveBraces(Scene): + class MovingBraces(Scene): def construct(self): text=MathTex( "\\frac{d}{dx}f(x)g(x)=", #0 diff --git a/docs/source/examples/neat_projects.rst b/docs/source/examples/neat_projects.rst deleted file mode 100644 index 6c4863e9b1..0000000000 --- a/docs/source/examples/neat_projects.rst +++ /dev/null @@ -1,4 +0,0 @@ -NeatProjects -================================= - -This page is currently under construction. It will feature a selection of neat projects built with manim. diff --git a/docs/source/examples/plots.rst b/docs/source/examples/plots.rst index 2d5dc4ea7c..0e1de60b26 100644 --- a/docs/source/examples/plots.rst +++ b/docs/source/examples/plots.rst @@ -4,19 +4,19 @@ Plotting with manim Examples to illustrate the use of :class:`.GraphScene` in manim. -.. manim:: Plot1 +.. manim:: FunctionPlot :save_last_frame: - class Plot1(GraphScene): + class FunctionPlot(GraphScene): def construct(self): self.setup_axes() func_graph=self.get_graph(lambda x: np.sin(x)) self.add(func_graph) -.. manim:: Plot2yLabelNumbers +.. manim:: FunctionPlotWithLabbeledYAxe :save_last_frame: - class Plot2yLabelNumbers(GraphScene): + class FunctionPlotWithLabbeledYAxe(GraphScene): CONFIG = { "y_min": 0, "y_max": 100, @@ -30,10 +30,10 @@ Examples to illustrate the use of :class:`.GraphScene` in manim. func_graph = self.get_graph(lambda x: 20 * np.sin(x)) self.add(dot,func_graph) -.. manim:: Plot3DataPoints +.. manim:: SequencePlot :save_last_frame: - class Plot3DataPoints(GraphScene): + class SequencePlot(GraphScene): CONFIG = { "y_axis_label": r"Concentration [\%]", "x_axis_label": "Time [s]", @@ -46,7 +46,7 @@ Examples to illustrate the use of :class:`.GraphScene` in manim. dot = Dot().move_to(self.coords_to_point(time, dat)) self.add(dot) -.. manim:: Plot3bGaussian +.. manim:: GaussianFunctionPlot1 :save_last_frame: amp = 5 @@ -56,16 +56,17 @@ Examples to illustrate the use of :class:`.GraphScene` in manim. def gaussian(x): return amp * np.exp((-1 / 2 * ((x - mu) / sig) ** 2)) - class Plot3bGaussian(GraphScene): + class GaussianFunctionPlot1(GraphScene): def construct(self): self.setup_axes() - graph = self.get_graph(gaussian, x_min=-1, x_max=10).set_stroke(width=5) + graph = self.get_graph(gaussian, x_min=-1, x_max=10) + graph.set_stroke(width=5) self.add(graph) -.. manim:: Plot3cGaussian +.. manim:: GaussianFunctionPlot2 :save_last_frame: - class Plot3cGaussian(GraphScene): + class GaussianFunctionPlot2(GraphScene): def construct(self): def gaussian(x): amp = 5 @@ -78,10 +79,10 @@ Examples to illustrate the use of :class:`.GraphScene` in manim. self.add(graph) -.. manim:: Plot4SinCos +.. manim:: SinAndCosFunctionPlot :save_last_frame: - class Plot4SinCos(GraphScene): + class SinAndCosFunctionPlot(GraphScene): CONFIG = { "x_min": -10, "x_max": 10.3, @@ -107,10 +108,10 @@ Examples to illustrate the use of :class:`.GraphScene` in manim. two_pi.next_to(label_coord, RIGHT + UP) self.add(func_graph, func_graph2, vert_line, graph_lab, graph_lab2, two_pi) -.. manim:: Plot5Area +.. manim:: GraphAreaPlot :save_last_frame: - class Plot5Area(GraphScene): + class GraphAreaPlot(GraphScene): CONFIG = { "x_min" : 0, "x_max" : 5, @@ -130,10 +131,10 @@ Examples to illustrate the use of :class:`.GraphScene` in manim. area2 = self.get_area(curve2, 2, 3, bounded=curve1) self.add(curve1, curve2, line1, line2, area1, area2) -.. manim:: Plot6HeatDiagram +.. manim:: HeatDiagramPlot :save_last_frame: - class Plot6HeatDiagram(GraphScene): + class HeatDiagramPlot(GraphScene): CONFIG = { "y_axis_label": r"T[$^\circ C$]", "x_axis_label": r"$\Delta Q$", diff --git a/docs/source/examples/shapes.rst b/docs/source/examples/shapes.rst deleted file mode 100644 index d7057b41c1..0000000000 --- a/docs/source/examples/shapes.rst +++ /dev/null @@ -1,43 +0,0 @@ -Shapes & Images -================================= - -.. manim:: Example1Shape - :save_last_frame: - - class Example1Shape(Scene): - def construct(self): - d = Dot() - c = Circle() - s = Square() - t = Triangle() - d.next_to(c, RIGHT) - s.next_to(c, LEFT) - t.next_to(c, DOWN) - self.add(d, c, s, t) - self.wait(1) - -.. manim:: Example1ImageFromArray - :save_last_frame: - - class Example1ImageFromArray(Scene): - def construct(self): - image = ImageMobject(np.uint8([[0, 100, 30, 200], - [255, 0, 5, 33]])) - image.set_height(7) - self.add(image) - -.. manim:: Example2ImageFromFile - :save_last_frame: - - class Example2ImageFromFile(Scene): - def construct(self): - # Use PIL when you want to import an image from the web - import requests - from PIL import Image - img = Image.open(requests.get("https://raw.githubusercontent.com/ManimCommunity/manim/master/logo/cropped.png", - stream=True).raw) - img_mobject = ImageMobject(img) - # this line, when you want to import your Image on your machine - # img_mobject = ImageMobject("") - img_mobject.scale(3) - self.add(img_mobject) diff --git a/docs/source/examples/shapes_images_positions.rst b/docs/source/examples/shapes_images_positions.rst new file mode 100644 index 0000000000..57f69f1498 --- /dev/null +++ b/docs/source/examples/shapes_images_positions.rst @@ -0,0 +1,199 @@ +Shapes, Images and Positions +================================= + +.. manim:: GeometricShapes + :save_last_frame: + + class GeometricShapes(Scene): + def construct(self): + d = Dot() + c = Circle() + s = Square() + t = Triangle() + d.next_to(c, RIGHT) + s.next_to(c, LEFT) + t.next_to(c, DOWN) + self.add(d, c, s, t) + +.. manim:: PointMovingOnShapes + + class PointMovingOnShapes(Scene): + def construct(self): + circle = Circle(radius=1, color=BLUE) + dot = Dot() + dot2 = dot.copy().shift(RIGHT) + self.add(dot) + + line = Line([3, 0, 0], [5, 0, 0]) + self.add(line) + + self.play(GrowFromCenter(circle)) + self.play(Transform(dot, dot2)) + self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear) + self.play(Rotating(dot, about_point=[2, 0, 0]), run_time=1.5) + self.wait() + + +.. manim:: GradientImageFromArray + :save_last_frame: + + class GradientImageFromArray(Scene): + def construct(self): + n = 256 + imageArray = np.uint8( + [[i * 256 / n for i in range(0, n)] for _ in range(0, n)] + ) + image = ImageMobject(imageArray).scale(2) + self.add(image) + + +.. manim:: ArcShapeIris + :save_last_frame: + + class ArcShapeIris(Scene): + def construct(self): + colors = [DARK_BLUE, DARK_BROWN, BLUE_E, BLUE_D, BLUE_A, TEAL_B, GREEN_B, YELLOW_E] + radius = [1 + rad * 0.1 for rad in range(len(colors))] + + circles_group = VGroup() + + # zip(radius, color) makes the iterator [(radius[i], color[i]) for i in range(radius)] + circles_group.add(*[Circle(radius=rad, stroke_width=10, color=col) + for rad, col in zip(radius, colors)]) + self.add(circles_group) + + +.. manim:: DotInterpolation + :save_last_frame: + + class DotInterpolation(Scene): + def construct(self): + dotL = Dot(color=DARK_GREY) + dotL.shift(2 * RIGHT) + dotR = Dot(color=WHITE) + dotR.shift(2 * LEFT) + + dotMiddle = VMobject().interpolate(dotL, dotR, alpha=0.3) + + self.add(dotL, dotR, dotMiddle) + + +.. manim:: MovingAround + + class MovingAround(Scene): + def construct(self): + square = Square(color=BLUE, fill_opacity=1) + + self.play(square.shift, LEFT) + self.play(square.set_fill, ORANGE) + self.play(square.scale, 0.3) + self.play(square.rotate, 0.4) + + +.. manim:: TextAlignement + :save_last_frame: + + class TextAlignement(Scene): + def construct(self): + title = Text("K-means clustering and Logistic Regression", color=WHITE) + title.scale_in_place(0.75) + self.add(title.to_edge(UP)) + + t1 = Text("1. Measuring").set_color(WHITE) + t1.next_to(ORIGIN, direction=RIGHT, aligned_edge=UP) + + t2 = Text("2. Clustering").set_color(WHITE) + t2.next_to(t1, direction=DOWN, aligned_edge=LEFT) + + t3 = Text("3. Regression").set_color(WHITE) + t3.next_to(t2, direction=DOWN, aligned_edge=LEFT) + + t4 = Text("4. Prediction").set_color(WHITE) + t4.next_to(t3, direction=DOWN, aligned_edge=LEFT) + + x = VGroup(t1, t2, t3, t4).scale_in_place(0.7) + x.set_opacity(0.5) + x.submobjects[1].set_opacity(1) + self.add(x) + + +.. manim:: BezierSpline + :save_last_frame: + + class BezierSpline(Scene): + def construct(self): + np.random.seed(42) + area = 4 + + x1 = np.random.randint(-area, area) + y1 = np.random.randint(-area, area) + p1 = np.array([x1, y1, 0]) + destination_dot1 = Dot(point=p1).set_color(BLUE) + + x2 = np.random.randint(-area, area) + y2 = np.random.randint(-area, area) + p2 = np.array([x2, y2, 0]) + destination_dot2 = Dot(p2).set_color(RED) + + deltaP = p1 - p2 + deltaPNormalized = deltaP / get_norm(deltaP) + + theta = np.radians(90) + r = np.array( + ( + (np.cos(theta), -np.sin(theta), 0), + (np.sin(theta), np.cos(theta), 0), + (0, 0, 0), + ) + ) + senk = r.dot(deltaPNormalized) + offset = 0.1 + offset_along = 0.5 + offset_connect = 0.25 + + dest_line1_point1 = p1 + senk * offset - deltaPNormalized * offset_along + dest_line1_point2 = p2 + senk * offset + deltaPNormalized * offset_along + dest_line2_point1 = p1 - senk * offset - deltaPNormalized * offset_along + dest_line2_point2 = p2 - senk * offset + deltaPNormalized * offset_along + s1 = p1 - offset_connect * deltaPNormalized + s2 = p2 + offset_connect * deltaPNormalized + dest_line1 = Line(dest_line1_point1, dest_line1_point2) + dest_line2 = Line(dest_line2_point1, dest_line2_point2) + + Lp1s1 = Line(p1, s1) + + Lp1s1.add_cubic_bezier_curve( + s1, + s1 - deltaPNormalized * 0.1, + dest_line2_point1 + deltaPNormalized * 0.1, + dest_line2_point1 - deltaPNormalized * 0.01, + ) + Lp1s1.add_cubic_bezier_curve( + s1, + s1 - deltaPNormalized * 0.1, + dest_line1_point1 + deltaPNormalized * 0.1, + dest_line1_point1, + ) + + Lp2s2 = Line(p2, s2) + + Lp2s2.add_cubic_bezier_curve( + s2, + s2 + deltaPNormalized * 0.1, + dest_line2_point2 - deltaPNormalized * 0.1, + dest_line2_point2, + ) + Lp2s2.add_cubic_bezier_curve( + s2, + s2 + deltaPNormalized * 0.1, + dest_line1_point2 - deltaPNormalized * 0.1, + dest_line1_point2, + ) + + mobjects = VGroup( + Lp1s1, Lp2s2, dest_line1, dest_line2, destination_dot1, destination_dot2 + ) + + mobjects.scale(2) + self.add(mobjects) + diff --git a/docs/source/examples/tex.rst b/docs/source/examples/tex.rst new file mode 100644 index 0000000000..7e793e87e3 --- /dev/null +++ b/docs/source/examples/tex.rst @@ -0,0 +1,161 @@ +Text and LaTeX +=============== + + +Text +-------------- +The simplest way to add text to you animation is to use the :class:`~.Text` class. It uses the Pango library to render text. +With Pango, you are also able to render non-English alphabets like `你好` or `こんにちは` or `안녕하세요` or `مرحبا بالعالم`. + +The Text() mobject ++++++++++++++++++++ + +.. manim:: HelloWorld + :save_last_frame: + + class HelloWorld(Scene): + def construct(self): + text = Text('Hello world').scale(3) + self.add(text) + +For more examples, see: :class:`~.Text`. + + +LaTeX +------------------- + +The Tex() mobject ++++++++++++++++++++ +Just as you can use :class:`~.Text` to add text to your videos, you can use :class:`~.Tex` to insert LaTeX. + +.. manim:: HelloLaTeX + :save_last_frame: + + class HelloLaTeX(Scene): + def construct(self): + tex = Tex(r'\LaTeX').scale(3) + self.add(tex) + +Note that we are using a raw string (``r'---'``) instead of a regular string (``'---'``). +This is because TeX code uses a lot of special characters - like ``\`` for example - +that have special meaning within a regular python string. An alternative would have +been to write ``\\`` as in ``Tex('\\LaTeX')``. + +The MathTex() mobject +++++++++++++++++++++++ +Anything enclosed in ``$`` signs is interpreted as maths-mode: + +.. manim:: HelloTex + :save_last_frame: + + class HelloTex(Scene): + def construct(self): + tex = Tex(r'$\xrightarrow{Hello}$ \LaTeX').scale(3) + self.add(tex) + +Whereas in a :class:`~.MathTex` mobject everything is math-mode by default and you would use ``\text{}`` to +insert regular text: + +.. manim:: HelloMathTex + :save_last_frame: + + class HelloMathTex(Scene): + def construct(self): + tex = MathTex(r'\xrightarrow{Hello}\text{ \LaTeX}').scale(3) + self.add(tex) + +LaTeX commands and keyword arguments ++++++++++++++++++++++++++++++++++++++ +We can use any standard LaTeX commands in the AMS maths packages. For example the ``mathtt`` text type. + +.. manim:: AMSLaTeX + :save_last_frame: + + class AMSLaTeX(Scene): + def construct(self): + tex = Tex(r'$\mathtt{Hello}$ \LaTeX').scale(3) + self.add(tex) + +On the manim side, the :class:`~.Tex` class also accepts attributes to change the appearance of the output. +This is very similar to the :class:`~.Text` class. For example, the ``color`` keyword changes the color of the TeX mobject: + +.. manim:: LaTeXAttributes + :save_last_frame: + + class LaTeXAttributes(Scene): + def construct(self): + tex = Tex(r'Hello \LaTeX', color=BLUE).scale(3) + self.add(tex) + +Extra LaTeX Packages ++++++++++++++++++++++ +Some commands require special packages to be loaded into the TeX template. For example, +to use the ``mathscr`` script, we need to add the ``mathrsfs`` package. Since this package isn't loaded +into manim's tex template by default, we add it manually: + +.. manim:: AddPackageLatex + :save_last_frame: + + class AddPackageLatex(Scene): + def construct(self): + myTemplate = TexTemplate() + myTemplate.add_to_preamble(r"\usepackage{mathrsfs}") + tex = Tex(r'$\mathscr{H} \rightarrow \mathbb{H}$}', tex_template=myTemplate).scale(3) + self.add(tex) + +Substrings and parts ++++++++++++++++++++++ +The TeX mobject can accept multiple strings as arguments. Afterwards you can refer to the individual +parts either by their index (like ``tex[1]``), or you can look them up by (parts of) the tex code like +in this example where we set the color of the ``\bigstar`` using :func:`~.set_color_by_tex`: + +.. manim:: LaTeXSubstrings + :save_last_frame: + + class LaTeXSubstrings(Scene): + def construct(self): + tex = Tex('Hello', r'$\bigstar$', r'\LaTeX').scale(3) + tex.set_color_by_tex('igsta', RED) + self.add(tex) + +LaTeX Maths Fonts - The Template Library +++++++++++++++++++++++++++++++++++++++++++++ +Changing fonts in LaTeX when typesetting mathematical formulae is a little bit more tricky than +with regular text. It requires changing the template that is used to compile the tex code. +Manim comes with a collection of :class:`~.TexFontTemplates` ready for you to use. These templates will all work +in maths mode: + +.. manim:: LaTeXMathFonts + :save_last_frame: + + class LaTeXMathFonts(Scene): + def construct(self): + tex = Tex(r'$f: A \rightarrow B$', tex_template=TexFontTemplates.french_cursive).scale(3) + self.add(tex) + +Manim also has a :class:`~.TexTemplateLibrary` containing the TeX templates used by 3Blue1Brown. One example +is the ctex template, used for typesetting Chinese. For this to work, the ctex LaTeX package +must be installed on your system. Furthermore, if you are only typesetting Text, you probably do not +need :class:`~.Tex` at all, and should use :class:`~.Text` or :class:`~.PangoText` instead. + +.. manim:: LaTeXTemplateLibrary + :save_last_frame: + + class LaTeXTemplateLibrary(Scene): + def construct(self): + tex = Tex('Hello 你好 \\LaTeX', tex_template=TexTemplateLibrary.ctex).scale(3) + self.add(tex) + + +Aligning formulae +++++++++++++++++++ +A :class:`~.MathTex` mobject is typeset in the LaTeX ``align*`` environment. This means you can use the ``&`` alignment +character when typesetting multiline formulae: + +.. manim:: LaTeXAlignEnvironment + :save_last_frame: + + class LaTeXAlignEnvironment(Scene): + def construct(self): + tex = MathTex(r'f(x) &= 3 + 2 + 1\\ &= 5 + 1 \\ &= 6').scale(2) + self.add(tex) diff --git a/docs/source/examples/text.rst b/docs/source/examples/text.rst deleted file mode 100644 index d27e294ffd..0000000000 --- a/docs/source/examples/text.rst +++ /dev/null @@ -1,14 +0,0 @@ -Text -================================= - -.. manim:: Example1Text - :save_last_frame: - - class Example1Text(Scene): - def construct(self): - text = Text('Hello world').scale(3) - self.add(text) - -This is an example that illustrates how to use the :class:`~.Text` class. - -In case you want to use other alphabets like `你好` or `こんにちは` or `안녕하세요` or `مرحبا بالعالم`, you can have a look at :class:`~.PangoText` diff --git a/docs/source/index.rst b/docs/source/index.rst index 866827c752..f249eac707 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -25,6 +25,7 @@ information here will make it easier for newcomers to get started using tutorials reporting_bugs contributing + changelog Navigation ================== diff --git a/docs/source/installation/linux.rst b/docs/source/installation/linux.rst index 18bcb7e9b5..44c52d15be 100644 --- a/docs/source/installation/linux.rst +++ b/docs/source/installation/linux.rst @@ -10,8 +10,8 @@ instructions in `Certifying a clean install`_. The two necessary dependencies are cairo and ffmpeg. LaTeX is strongly recommended, as it is necessary to have access to the ``Tex`` and ``MathTex`` classes. -Ubuntu/Debian -************* +Ubuntu/Mint/Debian +****************** Before installing anything, make sure that your system is up to date. @@ -39,13 +39,57 @@ To install LaTeX: sudo apt install texlive texlive-latex-extra texlive-fonts-extra \ texlive-latex-recommended texlive-science texlive-fonts-extra tipa +If you don't have python3-pip installed, install it: + +.. code-block:: bash + + sudo apt install python3-pip + .. note:: These instructions are also valid for other Debian-based distributions or distributions that use the ``apt`` package manager. +Fedora/CentOS/RHEL +****************** + +To install cairo: + +.. code-block:: bash + + sudo dnf install cairo-devel + +To install ffmpeg, you have to add RPMfusion repository (If it's not already added). Please follow the instructions for your specific distribution in the following URL: + +https://rpmfusion.org/Configuration/ + +Install ffmpeg from RPMfusion repository: + +.. code-block:: bash + + sudo dnf install ffmpeg + +Install python development headers in order to successfully build pycairo wheel: + +.. code-block:: bash + + sudo dnf install python3-devel + +To install LaTeX: + +.. code-block:: bash + + sudo dnf install texlive-scheme-medium + + Arch/Manjaro ************ +Before installing anything, make sure that your system is up to date. + +.. code-block:: bash + + sudo pacman -Syu + To install cairo: .. code-block:: bash @@ -65,6 +109,12 @@ To install LaTeX: sudo pacman -S texlive-most +If you don't have python-pip installed, install it: + +.. code-block:: bash + + sudo pacman -S python-pip + .. note:: These instructions are also valid for other Arch-based distributions or distributions that use the ``pacman`` package diff --git a/docs/source/installation/troubleshooting.rst b/docs/source/installation/troubleshooting.rst index 356008bac6..4839e3422b 100644 --- a/docs/source/installation/troubleshooting.rst +++ b/docs/source/installation/troubleshooting.rst @@ -12,3 +12,66 @@ uses. Which can be done by running: .. code-block:: bash fmtutil -sys --all + + +.. _dvisvgm-troubleshoot: + +Installation does not support converting PDF to SVG? +---------------------------------------------------- + +First, make sure your ``dvisvgm`` version is at least 2.4: + +.. code-block:: bash + + dvisvgm --version + + +If you do not know how to update ``dvisvgm``, please refer to your operating system's documentation. + +Second, check whether your ``dvisvgm`` supports PostScript specials. This is needed in order to convert from PDF to SVG. + +.. code-block:: bash + + dvisvgm -l + + +If the output to this command does **not** contain ``ps dvips PostScript specials``, this is a bad sign. +In this case, run + +.. code-block:: bash + + dvisvgm -h + + +If the output does **not** contain ``--libgs=filename``, this means your ``dvisvgm`` does not currently support PostScript. You must get another binary. + +If, however, ``--libgs=filename`` appears in the help, that means that your ``dvisvgm`` needs the Ghostscript library in order to support PostScript. Search for ``libgs.so`` (on Linux, probably in ``/usr/local/lib`` or ``/usr/lib``) or ``gsdll32.dll`` (on 32-bit Windows, probably in ``C:\windows\system32``) or ``gsdll64.dll`` (on 64-bit Windows, probably in ``c:\windows\system32`` -- yes 32) or ``libgsl.dylib`` (on Mac OS, probably in ``/usr/local/lib`` or ``/opt/local/lib``). Please look carefully, as the file might be located elsewhere, e.g. in the directory where Ghostscript is installed. + +As soon as you have found the library, try (on Mac OS or Linux) + +.. code-block:: bash + + export LIBS= + dvisvgm -l + +or (on Windows) + +.. code-block:: bat + + set LIBS= + dvisvgm -l + + +You should now see ``ps dvips PostScript specials`` in the output. Refer to your operating system's documentation in order to find out how you can set or export the environment variable ``LIBGS`` automatically whenever you open a shell. + +As a last check, you can run + +.. code-block:: bash + + dvisvgm -V1 + +while still having ``LIBGS`` set to the correct path, of course. If ``dvisvgm`` can find your Ghostscript installation, it will be shown in the output together with the version number. + +If you do not have the necessary library on your system, please refer to your operating system's documentation in order to find out where you can get it and how you have to install it. + +If you are unable to solve your problem, check out the `dvisvgm FAQ `_. diff --git a/docs/source/installation/win.rst b/docs/source/installation/win.rst index 4023722b60..9b9516c5cb 100644 --- a/docs/source/installation/win.rst +++ b/docs/source/installation/win.rst @@ -8,8 +8,12 @@ instructions. Installing using Chocolatey *************************** -You can install manim very easily using chocolatey, by typing the following command. +.. important:: This is an outdated version. We are currently not able to update this package, though we are working on it. Please use other installation methods until + this problem is fixed. More inforation about this problem + is on _`this chat + `_. +You can install manim very easily using chocolatey, by typing the following command. .. code-block:: powershell diff --git a/docs/source/manim_directive.py b/docs/source/manim_directive.py index 7e0fb3cdb8..ffd8e90f47 100644 --- a/docs/source/manim_directive.py +++ b/docs/source/manim_directive.py @@ -21,6 +21,7 @@ def construct(self): render scenes that are defined within doctests, for example:: .. manim:: DirectiveDoctestExample + :ref_classes: Dot >>> dot = Dot(color=RED) >>> dot.color @@ -58,19 +59,44 @@ def construct(self): an image representing the last frame of the scene will be rendered and displayed, instead of a video. + ref_classes + A list of classes, separated by spaces, that is + rendered in a reference block after the source code. + + ref_functions + A list of functions and methods, separated by spaces, + that is rendered in a reference block after the source code. + """ from docutils.parsers.rst import directives, Directive -from docutils.parsers.rst.directives.images import Image import jinja2 import os from os.path import relpath +from typing import List import shutil classnamedict = {} +def process_name_list(option_input: str, reference_type: str) -> List[str]: + r"""Reformats a string of space separated class names + as a list of strings containing valid Sphinx references. + + TESTS + ----- + + :: + + >>> process_name_list("Tex TexTemplate", "class") + [":class:`~.Tex`", ":class:`~.TexTemplate`"] + >>> process_name_list("Scene.play Mobject.rotate", "func") + [":func:`~.Scene.play`", ":func:`~.Mobject.rotate`"] + """ + return [f":{reference_type}:`~.{name}`" for name in option_input.split()] + + class ManimDirective(Directive): r"""The manim directive, rendering videos while building the documentation. @@ -87,6 +113,8 @@ class ManimDirective(Directive): ), "save_as_gif": bool, "save_last_frame": bool, + "ref_classes": lambda arg: process_name_list(arg, "class"), + "ref_functions": lambda arg: process_name_list(arg, "func"), } final_argument_whitespace = True @@ -105,6 +133,17 @@ def run(self): save_as_gif = "save_as_gif" in self.options save_last_frame = "save_last_frame" in self.options assert not (save_as_gif and save_last_frame) + if "ref_classes" in self.options or "ref_functions" in self.options: + ref_classes = self.options.get("ref_classes", []) + ref_functions = self.options.get("ref_functions", []) + ref_content = ref_classes + ref_functions + ref_block = f""" +.. admonition:: Example References + :class: example-reference + + {' '.join(ref_content)}""" + else: + ref_block = "" frame_rate = 30 pixel_height = 480 @@ -172,14 +211,14 @@ def run(self): f'config["frame_rate"] = {frame_rate}', f'config["pixel_height"] = {pixel_height}', f'config["pixel_width"] = {pixel_width}', - f'file_writer_config["media_dir"] = "{media_dir}"', - f'file_writer_config["images_dir"] = "{images_dir}"', - f'file_writer_config["tex_dir"] = "{tex_dir}"', - f'file_writer_config["text_dir"] = "{text_dir}"', - f'file_writer_config["video_dir"] = "{video_dir}"', + f'file_writer_config["media_dir"] = r"{media_dir}"', + f'file_writer_config["images_dir"] = r"{images_dir}"', + f'file_writer_config["tex_dir"] = r"{tex_dir}"', + f'file_writer_config["text_dir"] = r"{text_dir}"', + f'file_writer_config["video_dir"] = r"{video_dir}"', f'file_writer_config["save_last_frame"] = {save_last_frame}', f'file_writer_config["save_as_gif"] = {save_as_gif}', - f'file_writer_config["output_file"] = "{output_file}"', + f'file_writer_config["output_file"] = r"{output_file}"', ] user_code = self.content @@ -218,6 +257,7 @@ def run(self): save_last_frame=save_last_frame, save_as_gif=save_as_gif, source_block=source_block, + ref_block=ref_block, ) state_machine.insert_input( rendered_template.split("\n"), source=document.attributes["source"] @@ -245,6 +285,7 @@ def setup(app):

{{ source_block }} +{{ ref_block }} {% endif %} {% if not (save_as_gif or save_last_frame) %} diff --git a/docs/source/reference.rst b/docs/source/reference.rst index 804869f38c..6dd7cfe9c5 100644 --- a/docs/source/reference.rst +++ b/docs/source/reference.rst @@ -29,7 +29,6 @@ Mathematical Objects ~mobject.numbers ~mobject.probability ~mobject.shape_matchers - ~mobject.three_d_shading_utils ~mobject.three_d_utils ~mobject.three_dimensions ~mobject.value_tracker @@ -118,6 +117,7 @@ Utilities ~utils.space_ops ~utils.strings ~utils.tex + ~utils.tex_templates ~utils.tex_file_writing @@ -131,11 +131,3 @@ Other modules _config constants container - - -.. This is here so that sphinx doesn't complain about changelog.rst not being - included in any toctree -.. toctree:: - :hidden: - - changelog diff --git a/example_scenes/advanced_tex_fonts.py b/example_scenes/advanced_tex_fonts.py new file mode 100644 index 0000000000..04d8ce74c6 --- /dev/null +++ b/example_scenes/advanced_tex_fonts.py @@ -0,0 +1,141 @@ +from manim import * + +# French Cursive LaTeX font example from http://jf.burnol.free.fr/showcase.html + +# Example 1 Manually creating a Template + +TemplateForFrenchCursive = TexTemplate( + preamble=r""" +\usepackage[english]{babel} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage[T1]{fontenc} +\usepackage[default]{frcursive} +\usepackage[eulergreek,noplusnominus,noequal,nohbar,% +nolessnomore,noasterisk]{mathastext} +""" +) + + +def FrenchCursive(*tex_strings, **kwargs): + return Tex(*tex_strings, tex_template=TemplateForFrenchCursive, **kwargs) + + +class TexFontTemplateManual(Scene): + """An example scene that uses a manually defined TexTemplate() object to create + LaTeX output in French Cursive font""" + + def construct(self): + self.add(Tex("Tex Font Example").to_edge(UL)) + self.play(ShowCreation(FrenchCursive("$f: A \\longrightarrow B$").shift(UP))) + self.play( + ShowCreation(FrenchCursive("Behold! We can write math in French Cursive")) + ) + self.wait(1) + self.play( + ShowCreation( + Tex( + "See more font templates at \\\\ http://jf.burnol.free.fr/showcase.html" + ).shift(2 * DOWN) + ) + ) + self.wait(2) + + +# Example 2, using a Template from the collection + + +class TexFontTemplateLibrary(Scene): + """An example scene that uses TexTemplate objects from the TexFontTemplates collection + to create sample LaTeX output in every font that will compile on the local system. + + Please Note: + Many of the in the TexFontTemplates collection require that specific fonts + are installed on your local machine. + For example, choosing the template TexFontTemplates.comic_sans will + not compile if the Comic Sans Micrososft font is not installed. + + This scene will only render those Templates that do not cause a TeX + compilation error on your system. Furthermore, some of the ones that do render, + may still render incorrectly. This is beyond the scope of manim. + Feel free to experiment. + """ + + def construct(self): + def write_one_line(template): + x = Tex(template.description, tex_template=template).shift(UP) + self.play(ShowCreation(x)) + self.wait(1) + self.play(FadeOut(x)) + + examples = [ + TexFontTemplates.american_typewriter, # "American Typewriter" + TexFontTemplates.antykwa, # "Antykwa Półtawskiego (TX Fonts for Greek and math symbols)" + TexFontTemplates.apple_chancery, # "Apple Chancery" + TexFontTemplates.auriocus_kalligraphicus, # "Auriocus Kalligraphicus (Symbol Greek)" + TexFontTemplates.baskervald_adf_fourier, # "Baskervald ADF with Fourier" + TexFontTemplates.baskerville_it, # "Baskerville (Italic)" + TexFontTemplates.biolinum, # "Biolinum" + TexFontTemplates.brushscriptx, # "BrushScriptX-Italic (PX math and Greek)" + TexFontTemplates.chalkboard_se, # "Chalkboard SE" + TexFontTemplates.chalkduster, # "Chalkduster" + TexFontTemplates.comfortaa, # "Comfortaa" + TexFontTemplates.comic_sans, # "Comic Sans MS" + TexFontTemplates.droid_sans, # "Droid Sans" + TexFontTemplates.droid_sans_it, # "Droid Sans (Italic)" + TexFontTemplates.droid_serif, # "Droid Serif" + TexFontTemplates.droid_serif_px_it, # "Droid Serif (PX math symbols) (Italic)" + TexFontTemplates.ecf_augie, # "ECF Augie (Euler Greek)" + TexFontTemplates.ecf_jd, # "ECF JD (with TX fonts)" + TexFontTemplates.ecf_skeetch, # "ECF Skeetch (CM Greek)" + TexFontTemplates.ecf_tall_paul, # "ECF Tall Paul (with Symbol font)" + TexFontTemplates.ecf_webster, # "ECF Webster (with TX fonts)" + TexFontTemplates.electrum_adf, # "Electrum ADF (CM Greek)" + TexFontTemplates.epigrafica, # Epigrafica + TexFontTemplates.fourier_utopia, # "Fourier Utopia (Fourier upright Greek)" + TexFontTemplates.french_cursive, # "French Cursive (Euler Greek)" + TexFontTemplates.gfs_bodoni, # "GFS Bodoni" + TexFontTemplates.gfs_didot, # "GFS Didot (Italic)" + TexFontTemplates.gfs_neoHellenic, # "GFS NeoHellenic" + TexFontTemplates.gnu_freesans_tx, # "GNU FreeSerif (and TX fonts symbols)" + TexFontTemplates.gnu_freeserif_freesans, # "GNU FreeSerif and FreeSans" + TexFontTemplates.helvetica_fourier_it, # "Helvetica with Fourier (Italic)" + TexFontTemplates.latin_modern_tw_it, # "Latin Modern Typewriter Proportional (CM Greek) (Italic)" + TexFontTemplates.latin_modern_tw, # "Latin Modern Typewriter Proportional" + TexFontTemplates.libertine, # "Libertine" + TexFontTemplates.libris_adf_fourier, # "Libris ADF with Fourier" + TexFontTemplates.minion_pro_myriad_pro, # "Minion Pro and Myriad Pro (and TX fonts symbols)" + TexFontTemplates.minion_pro_tx, # "Minion Pro (and TX fonts symbols)" + TexFontTemplates.new_century_schoolbook, # "New Century Schoolbook (Symbol Greek)" + TexFontTemplates.new_century_schoolbook_px, # "New Century Schoolbook (Symbol Greek, PX math symbols)" + TexFontTemplates.noteworthy_light, # "Noteworthy Light" + TexFontTemplates.palatino, # "Palatino (Symbol Greek)" + TexFontTemplates.papyrus, # "Papyrus" + TexFontTemplates.romande_adf_fourier_it, # "Romande ADF with Fourier (Italic)" + TexFontTemplates.slitex, # "SliTeX (Euler Greek)" + TexFontTemplates.times_fourier_it, # "Times with Fourier (Italic)" + TexFontTemplates.urw_avant_garde, # "URW Avant Garde (Symbol Greek)" + TexFontTemplates.urw_zapf_chancery, # "URW Zapf Chancery (CM Greek)" + TexFontTemplates.venturis_adf_fourier_it, # "Venturis ADF with Fourier (Italic)" + TexFontTemplates.verdana_it, # "Verdana (Italic)" + TexFontTemplates.vollkorn_fourier_it, # "Vollkorn with Fourier (Italic)" + TexFontTemplates.vollkorn, # "Vollkorn (TX fonts for Greek and math symbols)" + TexFontTemplates.zapf_chancery, # "Zapf Chancery" + ] + + self.add(Tex("Tex Font Template Example").to_edge(UL)) + + for font in examples: + try: + write_one_line(font) + except: + print("FAILURE on ", font.description, " - skipping.") + + self.play( + ShowCreation( + Tex( + "See more font templates at \\\\ http://jf.burnol.free.fr/showcase.html" + ).shift(2 * DOWN) + ) + ) + self.wait(2) diff --git a/example_scenes/basic.py b/example_scenes/basic.py index 6b2d6aa632..5eefaf3b90 100644 --- a/example_scenes/basic.py +++ b/example_scenes/basic.py @@ -3,12 +3,11 @@ from manim import * # To watch one of these scenes, run the following: -# python -m manim example_scenes.py SquareToCircle -pl +# python --quality m manim example_scenes.py SquareToCircle -p # -# Use the flat -l for a faster rendering at a lower -# quality. +# Use the flag --quality l for a faster rendering at a lower quality. # Use -s to skip to the end and just save the final frame -# Use the -p to have the animation (or image, if -s was +# Use the -p to have preview of the animation (or image, if -s was # used) pop up once done. # Use -n to skip ahead to the n'th animation of a scene. # Use -r to specify a resolution (for example, -r 1080 @@ -130,109 +129,4 @@ def construct(self): self.wait() -class VDictExample(Scene): - def construct(self): - square = Square().set_color(RED) - circle = Circle().set_color(YELLOW).next_to(square, UP) - - # create dict from list of tuples each having key-mobject pair - pairs = [("s", square), ("c", circle)] - my_dict = VDict(pairs, show_keys=True) - - # display it just like a VGroup - self.play(ShowCreation(my_dict)) - self.wait() - - text = Tex("Some text").set_color(GREEN).next_to(square, DOWN) - - # add a key-value pair by wrapping it in a single-element list of tuple - # after attrs branch is merged, it will be easier like `.add(t=text)` - my_dict.add([("t", text)]) - self.wait() - - rect = Rectangle().next_to(text, DOWN) - # can also do key assignment like a python dict - my_dict["r"] = rect - - # access submobjects like a python dict - my_dict["t"].set_color(PURPLE) - self.play(my_dict["t"].scale, 3) - self.wait() - - # also supports python dict styled reassignment - my_dict["t"] = Tex("Some other text").set_color(BLUE) - self.wait() - - # remove submoject by key - my_dict.remove("t") - self.wait() - - self.play(Uncreate(my_dict["s"])) - self.wait() - - self.play(FadeOut(my_dict["c"])) - self.wait() - - self.play(FadeOutAndShift(my_dict["r"], DOWN)) - self.wait() - - # you can also make a VDict from an existing dict of mobjects - plain_dict = { - 1: Integer(1).shift(DOWN), - 2: Integer(2).shift(2 * DOWN), - 3: Integer(3).shift(3 * DOWN), - } - - vdict_from_plain_dict = VDict(plain_dict) - vdict_from_plain_dict.shift(1.5 * (UP + LEFT)) - self.play(ShowCreation(vdict_from_plain_dict)) - - # you can even use zip - vdict_using_zip = VDict(zip(["s", "c", "r"], [Square(), Circle(), Rectangle()])) - vdict_using_zip.shift(1.5 * RIGHT) - self.play(ShowCreation(vdict_using_zip)) - self.wait() - - -class VariableExample(Scene): - def construct(self): - var = 0.5 - on_screen_var = Variable(var, Text("var"), num_decimal_places=3) - - # You can also change the colours for the label and value - on_screen_var.label.set_color(RED) - on_screen_var.value.set_color(GREEN) - - self.play(Write(on_screen_var)) - # The above line will just display the variable with - # its initial value on the screen. If you also wish to - # update it, you can do so by accessing the `tracker` attribute - self.wait() - var_tracker = on_screen_var.tracker - var = 10.5 - self.play(var_tracker.set_value, var) - self.wait() - - int_var = 0 - on_screen_int_var = Variable( - int_var, Text("int_var"), var_type=Integer - ).next_to(on_screen_var, DOWN) - on_screen_int_var.label.set_color(RED) - on_screen_int_var.value.set_color(GREEN) - - self.play(Write(on_screen_int_var)) - self.wait() - var_tracker = on_screen_int_var.tracker - var = 10.5 - self.play(var_tracker.set_value, var) - self.wait() - - # If you wish to have a somewhat more complicated label for your - # variable with subscripts, superscripts, etc. the default class - # for the label is MathTex - subscript_label_var = 10 - on_screen_subscript_var = Variable(subscript_label_var, "{a}_{i}").next_to( - on_screen_int_var, DOWN - ) - self.play(Write(on_screen_subscript_var)) - self.wait() +# See many more examples at https://manimce.readthedocs.io/en/latest/examples.html diff --git a/example_scenes/custom_template.tex b/example_scenes/custom_template.tex index cf730f975a..feb78b76e8 100644 --- a/example_scenes/custom_template.tex +++ b/example_scenes/custom_template.tex @@ -4,21 +4,6 @@ \usepackage{amsmath} \usepackage{amssymb} \usepackage[f]{esvect} -\usepackage{dsfont} -\usepackage{setspace} -\usepackage{tipa} -\usepackage{relsize} -\usepackage{textcomp} -\usepackage{mathrsfs} -\usepackage{calligra} -\usepackage{wasysym} -\usepackage{ragged2e} -\usepackage{physics} -\usepackage{xcolor} -\usepackage{microtype} -\DisableLigatures{encoding = *, family = * } -%\usepackage[UTF8]{ctex} -\linespread{1} \begin{document} diff --git a/example_scenes/customtex.py b/example_scenes/customtex.py index bb50bb4555..a4f9a0146f 100644 --- a/example_scenes/customtex.py +++ b/example_scenes/customtex.py @@ -12,8 +12,8 @@ class TexTemplateFromCLI(Scene): def construct(self): text = MathTex(r"\vv{vb}") - # text=Tex(r"$\vv{vb}$") self.play(Write(text)) + self.wait(1) class InCodeTexTemplate(Scene): @@ -22,10 +22,20 @@ class InCodeTexTemplate(Scene): """ def construct(self): - tpl = TexTemplate() - tpl.append_package(["esvect", ["f"]]) - config["tex_template"] = tpl + # Create a new template + myTemplate = TexTemplate() - # text=Tex(r"$\vv{vb}$") - text = MathTex(r"\vv{vb}") + # Add packages to the template + myTemplate.add_to_preamble(r"\usepackage{esvect}") + + # Set the compiler and output format (default: latex and .dvi) + # possible tex compilers: "latex", "pdflatex", "xelatex", "lualatex", "luatex" + # possible output formats: ".dvi", ".pdf", and ".xdv" + myTemplate.tex_compiler = "pdflatex" + myTemplate.output_format = ".pdf" + + # To use this template in a Tex() or MathTex() object + # use the keyword argument tex_template + text = MathTex(r"\vv{vb}", tex_template=myTemplate) self.play(Write(text)) + self.wait(1) diff --git a/logo/cropped.png b/logo/cropped.png index 8b584ca9706491f5ddd570cd3e5c0c86965ac0a1..5e7e9ac9e71e3cc3079f9960d28e597f895f2dc4 100644 GIT binary patch literal 16587 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 literal 154686 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 zⅅ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 + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/logo/dark/transparent_background.svg b/logo/dark/transparent_background.svg new file mode 100644 index 0000000000..9ae1cef73b --- /dev/null +++ b/logo/dark/transparent_background.svg @@ -0,0 +1,105 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/logo/graph.png b/logo/graph.png deleted file mode 100644 index 9ce65e9b182a0153ae0894dc9f2baaf83501318d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116608 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 z z%2BwUQW_9?^1UNJ6&EppNM|u`_~Js?08OhDX_1uAJ&VT8wz&3*Z3wFr;qwc|S# z?2o%SEvtCBaMzVhKayM%(hLDe2Yysspe}7!D~&eA%Yl-_D8>jkRMS;Ib=F7w;u`|j z-`?6n4vW?*!uGA^mtQUzE-U%*XdOU)Jp=n57%fFov-n%%wZB+o8%gqxI$1+k3HB^+ zeb-CT+Q{=GL$NON%=|CbRa;2uO^9vS5P+zlN?yt1vsKPOt<8R&Fed5UEwU{TF+sRf z=^0G{_tlt^YfttL#{#H9_K#zp8@o~7@u}Q_bCExvoO4Ur(H6!t*kODFs_mLF`%{=> z!*{^ED1YeG;)Z6~PT}hr&h1qjoAoD;qlU7it?#&Azg-tiJc-?qDJAQRfL_U0 zBIjHHqoQBRi=z@vTZj`Wi@X7$4iO}4f7lG6$}Rtc()y-Wo6WBILTUZ{{JNavCGq_i z+Lu=@CPzRF5(hG+a2A&~ObleCgs)Qz%5K}B*Qe&Eu}UdbOe zmOaZTZge2h=rxRVYdo_~Vxr*}YcvoiMSS+_L?4;c@x7X%YqfRuQ)5WNEm1n&0SbLv z3fe{96sIImNH;}8HgVBn-I;TK@ORB^HxV^PrlzDZz-;WGZB6nT&G_CDKVH)-$y6rv zpP8lS)8TsG5~ubV7z`UX@++X`uD^`3e14_;eV$an^Wm4LRl|}gQVdrh*;jGVm^?l; zAFtvW?-NY2#}qYdk;G!)|MYcLnpcYLIKcE72f)m?;^V)5i?bvg-WJKoMUx%_k5Y>n zr|;cuOzB&eua-M>p;u6SW;Ls$Z%?VLL}Ynu3FD?cFe#)ci){Klv!P$Y9ST;|aL-yu zP$Yxj62NC=QY$bRHUhT!B0coyc&a+ z*?j51DUct!_A8XIG9b`h4~bfB!mrrixL<(TJ+rqwlivFXw%}^@AwQ zmhv3~?#unKGs&zE`>}O%J@HbAUK}R6@8sil(li}{>Q8WmIn$^|0qUZao{eO^jVB9iB|0n`DucsoONt8go?$>-qi>`%9^H$o=qxw^2g zKUsfzyL(C}YGX)>{eivrhAkXfVj(c)ei3M`yl*|$730L}N_rA2AH;aC2sx&xh>Ud! zUOqYEQep&B!(ACnwRBr)({{M4yg2UcMUHq%0o4e>3j%jirs>roIN>R z2sQ6WZrRj?xt#l#5N+Mi6gy>~=MQ|+>r??osL~UrH&hWwaOY-@AIJz)=)TTJ4AHvn z{gt$S3&!O4?!V~wCsjFjw%=AjSN{y_n;&2b5>8vJQdg!3mYGSrcd26g z{Y-47o&{rClKv@mX{hW2t9r09 zw5$NaxuAhiZP!aJgU??0xDgSs__a&9n<|xXUivd8S{Ml_<9Q>m6So1?)o!a6?LZ1# zOVNqRCD{;X09lkS$sCo0rh6J1tDX2~@SXe$Z~YvcymQ;r+>(6-Q|ML#ad0Bl2b5QD z7t|0$8&KzEjxl4Ky6z@E?a@+0YUIt0arPtT4Uucrk7CB#_|Ej_OpiIJ4MBSjOCXycJbGpi03zL7-7)_U&OrBREF`4T! zwB2~Da0UD7!+@|!=xWgne>-F4EyE#Usy!#TE8T}Bg-M&s0B}WK59g^rF+?#3hIp_o zb&QusZ|~kEr1IJ3tjn24QOx7dQ@icH*6nRfh^A$=#Lqu)u$9FKw3K6BtT{$i+I+kI zFOaU5jhLabqIy3+zq7KBtRKQlF-ITf6*Z%e=Sc%$q|5|a(^l~t}xS6+ruIl^b zBU@csQC0{ogFuT@DO@i%eO?|pGStA|e!1}Pcaf`0o*|wgB$#8UX*WkaK%p{k`iT2pp-%-eS)5g-VH2U@?O zyPvovz>bZtR|%=uR2%p&7UU4DR<-i}uMvy)5Opv^|n#jqPTW9{cJ! z`z;xSfwo6WEyD``D3J*Kj!0_}VHoqz*l!$78EU@X;0=f}@T+7>)*C$pH6o51rOQS# z8LM9nt@X=#6|*%U6YY(0PxbMi04vV?{7NfjBvNqnP2oY*l=pj2Ey2}r1^f>C`LQD$ zp0KL*3pMN3uCdQ1%535XRi`nJ$eCfTOy~(7<3Ryv`R>q8V{evH2iP0Q6tevb^cG0gOl~Ny69pU_nVc zH*YBm()hW}i~+dW#p!%g(}fvAIWtMIToa6YX7_(&+*3h651#|TalqDO@o0wK*My+s z4z7i-q|?o_iJn30>ttkJ+PPN|ZIP9db|n0uq}MiYS$jL&&ZuLWf?S}%wXlBM@4`G8 zKL{?z9}XRL>@ZQbtoq}P(|uv2+O2lgI(IJKs1$Z5e2ONGpj_g6-(%ksnKiI^&NwN# zLdfYK3YK%!%`3fIZ_?6LZ<0H1O=t3is^N9{m3SNvh}yMk=^^c%uZ$*Z6IAH35jG_7 zSnB2ms-NG6rDW8*t@#EoPEk$3DBaw2)2=+9q{n#C*O7qJ?$`ru`G%!9oO6jR7+T2P{4FTpAQNB?Kc#! z29ipRQt+w=4yu3*E+2lHLTL8;$ul~Wl%c@em37tP(=Q6j)~{C5vqRcCq28p_Hzi#sBW(1)IH-{-k#BW*M&8uM$<;=W!VC@6klDGv`3 zhMDK1wsE5K^)0=NyYgN{P!NGjw_VxkIbTPiA@%7rB|Jz^FJY#-ch9ZMW&zOdp|g|k zG((yd7f?aFGX7pHa(?@`_sZ+0Q4wF4+C0496HtqWic10@OX|DrE)AO$(#8V{eVoc%~Uz|unMJI?b`!&o|$P)J&5m7Gy(H`KNqo<09M$x*1TQcX#{M62=c zz4hkp$q%P1hw7@R3sFVp&0CNr9wnj*9X%($xpWCOB}K_>ShqenVP*m33yn6zAFbtJXZp`@c#GG5eZ4iiCD?~7z+bYFK z85kwtKtygDh`(d*-|zTyk`Nh)GvGZs(5y)Ahy{kAlTwdtb3|q2s1e=?6fg1HH*Sz1 zBE;u&EE_nJwW#VFvaTVYuZg@XD{68$iuLJER51B{5^61>RsG!!YU|gpKZvBk`CV&& z;^&WRA!UytVr$oJ)E>8~Z%_nsNBI19i%m=E`&M!XQ*)>y{pKxu1SdT|zpsCjH_(q8 z|44_EL2~u}lcS8uZgy`2smu^J2!ODy0MnAlgZ7qK!Agw)tT=$G@)Y>}B`A2P<&`03 zKM1uT!hs<=RnM=2B;b?-96dqgWy!OMf?Z{# zEOOzs0bJ=Vm02$BLpXkx>MFA};Q#dv^%K-XIUp4z6lp}y$}@0OG+kU=(BoPdEw4W= zS9Uvg-zaUp$6yz~u1f#ju&^)3|Mx&5c`Tww*5&@DvA!@ah#A zn|&Z!Y)ArUKptU_Soc*x4lcdo__IDvvo=xc0!M0-?NYmC)-`*v8n2S)1DHCRq%dLu zXDCcG*t_>BjYTQ*8A#Eu&qm}T53Pqrg3-XO^ATeYze%yw4bq(J+FtdbG-c-e5;!Q! z!A5KRuKH|10PF6(gtK!6+@cFS5o42CdM^pLixT3#$gLo^=u9Qkpe|K|>s*DL&)Cov z1*ebSA)8cOOxOwy>0^UxvUasgqDCt32n#n}I&kz1L5j&Fc#gYh8qDlAMs7-({dBPm zw#Gek1jjY=X#g1IzH|Bx&9-HiUOW6&c!?~7tJ2ncl#wkcM`~qpLIb2M*x;@V@OSnX ziG&b3MGOj9Qb#J|_^Q`^qVCurbuD9RmTa-3qc&|r_V4r>6VgQmg=)IddtbW&v(?kYeys7;!hB&-|En3 z74<8v-mcZT|L})I4q~2~Bmzi6WzK?%V$Junl7-X7uS4rgdKO_xKt!29$91oH6O=qM zkl_RMn6Ut4+pFb0!I;qTG>dl7LLFln75eOEY(8hQ5@`c;wU=l_;a8pFlau zXBfvU%-#~5HJ7=780McWQF@JlY^b(6Zy&3JR81cYb|cx2BzW)5b^uO^sPtLy9W|S=zj+QQb)8hXw7C6LTwx zay0qeBx=e+Az|Fw(4#s(o^4)OTMY)tNLNl@X+VHPR$M`iqz@Z%v!Q7|AvBPA9GR%N z{(5y**!IP^T$WYrZg}V35+P%%yEc@thpL}> z-t^dcS(KV_#|DUgf=~!eNW?}bDt9NRvP4Y!i!>@O9V+h%Jb^WF={X#fw(K*DMGGKY zcO-lxl4ezjW@hb!%QyX|4q$up&2}Ui1EG^#MTSTbd-O=o6dI03?!z3f6ZAN`dQm*X zGu`@(IrokR0E5CD2Y~m?)2SCR*il$9>07(K-$D=IUGgD#fBLG;Qq8s?RyzE48dvEO zZ}ydzq_)E3yKWyt(eBW@)DXgw%4ZYmtWfasp!)E@LDuQE=m*-fe$+tE&*D4lsiQE0 z0XyQl34hoMwdtS~aKrL*-20A<3!KpqUaK4F^{O8LJglI5{rEO%=hm0Vb&v0;MuDo+ zic>m`Bf_-m0z_kEW37ue4)8bnA=?|E4-oD+0Qp@h8NOWxjX?eON;flQ~=C*0PlyK%cqJv z)#Uxc?ozEb94EeV7j0s~xK-quZQIYz=Io2zQT?5DatQdt992;iQ*=kZB|2g0k|j?c zwp5L^-$>+mDZ5i*P!Xl9I*1x|yRQ_PVfl&6pCgbl6|?jl=s2@;3l|GGti9?P>nR@+w`hH8BH`9d1Bc)#%J1{j9>tWndD? zR2wfA9B;!3ZT18l(9Lst9OZ3g^~x zRWCQMHvOoxx<0+3#9+&=6r|S{WkHjCDCy(xPFHz_9npA-Hx#*ge|&MBl`_f==N)Ci zgjaMA*}EoU#ZNlpsl}+-kkrHlE~{S=Pwf%dNH`x>sQwYH5`y5}Mtl)8xC}wYi9s_D ziSh)<|K46C2*PeHz|rSD7SDiQIJ+rSw}1#i+xl=M3eL&UV^DeDAe$pqeY@K7kktJ7 zKRY-;hvwC-G{!Xxps>R|kG{}-;FUe&J{Ru;RjxH4Ovh%0tK3BU1Eas7ughdw0g) zEf9AZ$*@>yb{*h#=~?jF?y^VlMdqx6ptO1hiVsA86DDYX%166FCXQVc#Zgd5E9H_F zkB=13!eqeYY(qL`Ejf!9i|PbscjqaQQp>{zj2bUk=MQ%ZfDv! zWLE!hukMGsTu;}C4hDR>N;mJS`}&N$ycU&ipkL4{qYzWtwtC*nO-q(7yRB@bEKJ}9 zgs1xk!=hB{3UH+8yPx0_v2;af0TbU->SX6@5_;(veDMuFZ&tJY25U>cj@?ZcZ@5 z2}LxEq4(LH{yKow`g7q;M~{h7=H%#2n+PS>gx8TI^4C`#w{I@K2%lWP-V=#o%^f=k ze^cpj*?@)Cdkp}Xm@QbKb{4+_O&#;{9k?x^Z4 z)oHHx><)rSTAXn4(j~GHb#0g+gZ4Q*nJ*Wf+A{eDQzh0t`F^e%iiYS=XSH|VzQ}!Z zqJKx#JMhe68z14W4CZ*JQMVb&X=a|`PC9LiRO!W7i9{T1)62Z-XpS~WU;FpI;d!J> z#bRA$hgbb1|J&`BxbkS`k6-}U(^P>(rYZ)T@#-34fIB&p_ftyG!r$2>EZoJMoNyhR zP=6u|;J#JG?H4$p5{y^i{Jq~lfl_G#o1nC8a^*N1VJ5v1)(IN-RRjwQuLo5pW1j?$ zbH14CN3+CGV{>_&Mn+34>QsNmB52PdW$MtKJGf2wyg%_hXyCelXGc+m=!mpHI1?Q__6-JK{UC{GNr*d)vXV~Zb)(ws0c(H#LNz8s2= zZjVQP+;XZivy5=ci3~Xip|DR%@3?1MJ=(LBvMdeXFFHC1zptPj|40lS=j={oEV!uT z`_Xaoii3hz9rK3!Yshm9AUUQ;^55GGkhioU2|`l7NO17Bwzfu|KI#k}l!hadld(jS zsqE8pQgD@73Q7(`m3LHK9($9*A!xSY$Lx^%A{;|9c*G#O3`k2xe;_P!dVw4@SwhYG z{(Ew=q=Du^KE3-9^&=4@OFYP}+Is}AW?4VGPd2pY`xA3%5(^8PU#R5)J6#m?k_5wuoO8BD2hvNKfJn zOTm!S@P9%qMx~Nml{_Lfv;PTL60umGIFpgdM>#&JYLt8VCZT4YX5`u79np_|j+-9P z4$Qqk4O8iOf*FwC(sR(i%J~PBph)OQe>)PA~JU)Ndj!=mOTjWp51d*Oy5B0l- z313+XCuJr9B9apUi--8(#~+)5kgv-^(bjpDiih-K!DYM4v}qqY4?UU*1nq;gv96K95)8 ze#*G-DM?f`aU>lHfBkwfrQa#Y!$ws5P^TWN0w2c*ga<|Og+g*xGbVadvscB1EHM>I zU9}xF@KpPTiJR>RQxZcRO-n9qG{-q6)&i;xSOfIs>Z)`aAm%8MCz%X>kz`+Y3OO3z zxALzmCNDg*crYl4()5yLRmPc#0Ei#}hTlhDDI`eFa0|WRb7#aXubW;+ph=xmViksf zx`eVuyTv4_1T@=%X5fHG0=_1FSrJji^c5G|*uDyqnLBVidAth~poAKr`*^>g9o2=q zq2sy+)L4Ha!$fo{t3OPiX<9n{pPAd&nwKPBCYrpCt)NB8f2t+k0{Ad#_1SP7NzshY zlITk`fWMRG!_B!V2x=JgS9U!LSP)f`Ax}JAiG*E~4%#Z~WDTHmt|o%@2ZKI9@Ie8T z_>XAgVl&R^0B}x{UdT5In$7Y$B0F^v!uv-3L(~K!57l^ABx6zw+Mii$&Ku0_e*J7} zaP#QF{euM0srQ|VhXJmKzlGa^>t(Uo{Z&6O8LvIMQ31_wdKPLEt^$Q|0+}&layEYx z9RrB36I7Ps1k4k|&GhU5iA4xuASmM;N~<3w%p{Z$S)TQ<&Tz)*x9-)ZO-E4Sf7IgA z(aiW8GUVPi&5z^c9XElHC{#@l6%UNk6hG90^l>E35>|>E#!RLZ8$aRKhmMCH4A2ke z>va<$y~PXSPcfzqBgCrru#a6N79KZm#G&_kkKq zbJ#Xf16o;OOX$G6(=K4+Ur;MCe2RH{Y=_2G~Y+(tm~H}$7Zdj ztXc_<3hB#7-&Mo;5}ZA|yCYEyxuiyPKnntdYH@cHi+4 ziHY0M7v_Ym!*>sMMHHmgV`DB5tJxK)tk5}%EDRstUf@lHn&*ektA)7sQgKFkPf7sv;D`mxrPzjO+kJvUC7>3-nhY;fazgJILNk zgb+q~7-Dl1VA%&cY8K;|@`rJVI#vb-TBD8GsF5-}n}_}!HFbBC1u3B|1wQY!90m@_ zRmv;nxN44duwsQT_-vR%O~%6bvLSl0Zh|d1DMb)%C=VA}VkHxu0U`|ocX?>5xJj1u z=^dP*Rih1U(b5c+75t+M5*^YV2SV9nDwCq1%R~!^A!$98@TLi}AFtaNASv#|KUF>7 z$?+dF*1R~d?R5PXluekbN|^EJ2?c23+&81$$f)*p^f;f(Aow{d`o}hqe^;a7M5&x) zMCf!qL0W^}TrXXqMU^tHBwILPxAH3`;}jhd%q*UZJ{Rfka8lON&yTOWL6R(S=0tfb zxy$l4q%t|%jq=Sxy%r4uvKCxhcz*j$v@nuI7(qV@@(*#u?6&=y@iR-m^tiq0(r+lv z@QC)3XK}e-_Z~)hS|=$wfecpVjaSK~l1+(T;KCmUi2kt4w1O_(XN_vx-d<{{Q8Msu zPicm@0p67UM0e3oa-NogH!w6PxTIG0&HWVV`@M4c4Q2`&rHhuH=Key2q^S9{8RA#K zfuAAnDHgC}>M5;$phrZ#y)>6|pjFC>E|=@|(DJR>tEAWcYk|j{Sh}9c z4A;3Ef+Bujby`h}*KhZ>cUHm9Eb&^4fuMTr#2c>VD_b8pSKIOJUhXHb!ZKN9j>$d$ z9kqVD&-d~#_A7H&C`<8{o18cF_vlW~jopmP0q)l#1eY3foEu8r@L#yUX?(*X%2Zpo zV!YGkZ(5K95AN(oEu`LGy!-b$Pn$M}zt>E?i}M-sj%VW%{!;$eVmWeu?Ti;&H9ZK5<^cm$j=k%a@`OchBEeb3i|2 zp2U|Q+mIhieokOUdDLascsj|7WzM1Kk8c7GCL-shX~}3q^TEi&Et+4SKxPJ>fVVAU zmakz&g)_s`0SxtU?!gYMSvabF`{q>X`UkBhk zdDGbgM)i{tynWJ2YU`(;Kw=Sj0(IsZD(70{?a{jSKWwIM(<;m*L_M0f_oUuHRVC{W ztuH@bPkww&_TGQE%|+biH|^Iwn>-Ile6&99v-j&WuffCps$VzSQ1WR<7Bg33`T-Ki z1Kf{SQ!e`F+pHxQJUN^e<#9l%W^}8{*Flq5Os=@WCve!lBwzW3svz(58o2x&)<6}R zfx70;tKT)4{`;?93JO@*YpY0PPHjEk1p3RYQfhT`A4GJF$3!lf{<3QFW&8Hd=T6BW zlM@y4b*9^A`BKz|yK`bYIvqVO{9_Ste$~d!ot$x7fY+Fl-lM1)>Xh$A+kK<)8EK)p zW|g7S!>o?w^w)(WZdY@NV;XH%9D5_tEdaEa$23`#d+c<3W7k?8_AA z^GJkCh*A%D(dOM|*J;uHqJc5J1*wo(z7)0bF8Ar0I!7tpls?w9qiW;i5v-Jv1XAH4_oUk)s;cb4z;FBYD|V}JR~AUkF1 zqpm(fed<3c>R;Qxz32bkgflSzH(XN- + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/logo/light/transparent_background.svg b/logo/light/transparent_background.svg new file mode 100644 index 0000000000..2fb30170b7 --- /dev/null +++ b/logo/light/transparent_background.svg @@ -0,0 +1,105 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/logo/logo.py b/logo/logo.py deleted file mode 100644 index 235b6c6081..0000000000 --- a/logo/logo.py +++ /dev/null @@ -1,185 +0,0 @@ -from manim import * - -NEW_BLUE = "#68a8e1" - - -class Thumbnail(GraphScene): - CONFIG = { - "y_max": 8, - "y_axis_height": 5, - } - - def construct(self): - self.show_function_graph() - - def show_function_graph(self): - self.setup_axes(animate=False) - - def func(x): - return 0.1 * (x + 3 - 5) * (x - 3 - 5) * (x - 5) + 5 - - def rect(x): - return 2.775 * (x - 1.5) + 3.862 - - recta = self.get_graph(rect, x_min=-1, x_max=5) - graph = self.get_graph(func, x_min=0.2, x_max=9) - graph.set_color(NEW_BLUE) - input_tracker_p1 = ValueTracker(1.5) - input_tracker_p2 = ValueTracker(3.5) - - def get_x_value(input_tracker): - return input_tracker.get_value() - - def get_y_value(input_tracker): - return graph.underlying_function(get_x_value(input_tracker)) - - def get_x_point(input_tracker): - return self.coords_to_point(get_x_value(input_tracker), 0) - - def get_y_point(input_tracker): - return self.coords_to_point(0, get_y_value(input_tracker)) - - def get_graph_point(input_tracker): - return self.coords_to_point( - get_x_value(input_tracker), get_y_value(input_tracker) - ) - - def get_v_line(input_tracker): - return DashedLine( - get_x_point(input_tracker), - get_graph_point(input_tracker), - stroke_width=2, - ) - - def get_h_line(input_tracker): - return DashedLine( - get_graph_point(input_tracker), - get_y_point(input_tracker), - stroke_width=2, - ) - - # - input_triangle_p1 = RegularPolygon(n=3, start_angle=TAU / 4) - output_triangle_p1 = RegularPolygon(n=3, start_angle=0) - for triangle in input_triangle_p1, output_triangle_p1: - triangle.set_fill(WHITE, 1) - triangle.set_stroke(width=0) - triangle.scale(0.1) - # - input_triangle_p2 = RegularPolygon(n=3, start_angle=TAU / 4) - output_triangle_p2 = RegularPolygon(n=3, start_angle=0) - for triangle in input_triangle_p2, output_triangle_p2: - triangle.set_fill(WHITE, 1) - triangle.set_stroke(width=0) - triangle.scale(0.1) - - # - x_label_p1 = MathTex("a") - output_label_p1 = MathTex("f(a)") - x_label_p2 = MathTex("b") - output_label_p2 = MathTex("f(b)") - v_line_p1 = get_v_line(input_tracker_p1) - v_line_p2 = get_v_line(input_tracker_p2) - h_line_p1 = get_h_line(input_tracker_p1) - h_line_p2 = get_h_line(input_tracker_p2) - graph_dot_p1 = Dot(color=WHITE) - graph_dot_p2 = Dot(color=WHITE) - - # reposition mobjects - x_label_p1.next_to(v_line_p1, DOWN) - x_label_p2.next_to(v_line_p2, DOWN) - output_label_p1.next_to(h_line_p1, LEFT) - output_label_p2.next_to(h_line_p2, LEFT) - input_triangle_p1.next_to(v_line_p1, DOWN, buff=0) - input_triangle_p2.next_to(v_line_p2, DOWN, buff=0) - output_triangle_p1.next_to(h_line_p1, LEFT, buff=0) - output_triangle_p2.next_to(h_line_p2, LEFT, buff=0) - graph_dot_p1.move_to(get_graph_point(input_tracker_p1)) - graph_dot_p2.move_to(get_graph_point(input_tracker_p2)) - - # - self.play(ShowCreation(graph),) - # Animacion del punto a - self.add_foreground_mobject(graph_dot_p1) - self.add_foreground_mobject(graph_dot_p2) - self.play( - DrawBorderThenFill(input_triangle_p1), - Write(x_label_p1), - ShowCreation(v_line_p1), - GrowFromCenter(graph_dot_p1), - ShowCreation(h_line_p1), - Write(output_label_p1), - DrawBorderThenFill(output_triangle_p1), - DrawBorderThenFill(input_triangle_p2), - Write(x_label_p2), - ShowCreation(v_line_p2), - GrowFromCenter(graph_dot_p2), - ShowCreation(h_line_p2), - Write(output_label_p2), - DrawBorderThenFill(output_triangle_p2), - run_time=0.5, - ) - self.add( - input_triangle_p2, - x_label_p2, - graph_dot_p2, - v_line_p2, - h_line_p2, - output_triangle_p2, - output_label_p2, - ) - ################### - pendiente_recta = self.get_secant_slope_group( - 1.9, - recta, - dx=1.4, - df_label=None, - dx_label=None, - dx_line_color=PURPLE, - df_line_color=ORANGE, - ) - grupo_secante = self.get_secant_slope_group( - 1.5, - graph, - dx=2, - df_label=None, - dx_label=None, - dx_line_color="#942357", - df_line_color="#3f7d5c", - secant_line_color=RED, - ) - - self.add( - input_triangle_p2, graph_dot_p2, v_line_p2, h_line_p2, output_triangle_p2, - ) - self.play(FadeIn(grupo_secante)) - - kwargs = { - "x_min": 4, - "x_max": 9, - "fill_opacity": 0.75, - "stroke_width": 0.25, - } - self.graph = graph - iteraciones = 6 - - self.rect_list = self.get_riemann_rectangles_list( - graph, iteraciones, start_color=PURPLE, end_color=ORANGE, **kwargs - ) - flat_rects = self.get_riemann_rectangles( - self.get_graph(lambda x: 0), - dx=0.5, - start_color=invert_color(PURPLE), - end_color=invert_color(ORANGE), - **kwargs - ) - rects = self.rect_list[0] - self.transform_between_riemann_rects( - flat_rects, rects, replace_mobject_with_target_in_scene=True, run_time=0.9 - ) - - # adding manim - picture = Group(*self.mobjects) - picture.scale(0.6).to_edge(LEFT, buff=SMALL_BUFF) - manim = Tex("Manim").set_height(1.5).next_to(picture, RIGHT).shift(DOWN * 0.7) - self.add(manim) diff --git a/logo/with_name.png b/logo/with_name.png deleted file mode 100644 index 04b710ab04d6f9cc009d192c21fa4011d6d9a6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111118 zcmeFZc{r788#ew_N|Pxfv)Dz(C}dU{nve(?%McMV&z4f=p|&Kmj3H#6EoCZXkzvW4 zm3dql)-tX2-Om!cy}$Q;zuzCfKlgJS9npS<`?>GyKF{+yuj|=?H&vA>4l^BwAc*4X z6@^<61pl}{>EHqI*Pjs6Fti7Pt}0yAbd8%GbbA@^6u+>sFcf+1_PCqr!ONVfmku1` zJ+wz8>1}9^bue2bHH&WQ@vqrY6M`}-`q^s3T)w#;^V5F4L0p&Q(`cIL_4?Wrj8FX` z?0fa#q01b!(HYH}bu|cADP`RtY54?$m2CHFLRRyVm!%is$$L+|N@|)kFpgixpSK>) zfzkXrYMHqqvYlUi$PU2+-99)j?v?-bBLrP}4pHy^a_oOiczk=akviO%?w?pAyuKbrPe}TfkTq*x+CjOPy|7I4uq3|zP{>zoy!SF9v z{>zoWVBue`l-~u&|9|pI3-Y0!Y~>rwB1y&O+qb@{v==D`)^Qv_Rs;9>SZx6cB1{+6OtFH>xi?0_vM${B=y zNh@0o+@HT3Sv|%|PC8ls4#}81CY)5kTjQl-t&bRber~8nAHjcm^T+32#7|AeSKG#2 zJCkJbDtt}b?A&GY23)#I$OnV0bAxDcF-77u?;Z~Lzd`a+r(p}vqE7Po5xb_|82o72 z3w3@vk?M1{Ej?vhrP-qvmrdGcNasQpDtqO@c*QJraJks_qN~DYH;FfJ{>)6Ht7+Mz zFD49|-59sew0;b`gh>?ZwfiR;x3pCPWN*ix8_XN<;J7dNHdw$ve7x!?=}e!JOVB|G zYWH)@d>c?{soXRhLlZrJokrNDZXEydXR%#Yxx}#D_DzeJ;Nkh9s3no@+uq`UXO*Wg=+epYknBJSjFOV#o99#U?A2ug zHeQyBEYjW2mn46kdy;f+%2I_>D0zlTh}8kAPmYMH%roQfbQo~C!*RPe#avzTnGwmBkk^`G%w8hoP+LUW&7PHdm~ znHJg$K|f5vqzbz<<0pI0^dsB_2Fkf@49oaS*rgJ72HLj|etzwpp27kV!dey<`y#jv z0Wjg{-9b4xAmI^FhknXY$5 zm;0U@Oti2JlG1t??18pz+X>aVX!!j{1Y9@TFJh}7(3(7on!bT!reX_YX6S0D*z&hG zguQz(pB^NG+?Dn}ZWZgPthcrgTisYm=R&Nc4KPAck>pY8>bjo#`uuyN^o=?S3T*T# zK8!yKxx1>8$M$f5$zopoa0C^aXXK=~Jg*-;MVOM=Fd2VR;YzsTwG*q87GypU1TikZ zou$JWNXXg%jOz3{!#Qr#%aUkRBgPaHyR-un{v>Dqf^W;lN}%%n8(}mumF5+QF?=At zJ~;z}?spm6*??g;NE`6UC52WtQO@}q;~Sc{>CROzE%X}&h70MkRfZ*ga$y0_1qW*a zX|6<<^Kye0^fj2#iQ<2BZhcN4$NLZGgcHpN(=7xe?G3k~3fe0V)>Tf}>r<`kqrUnR zeZ|+)H&pz?>RUmyx(|Qw^xuxwT6P*Zt~QCk=JoYC8&gfX!_h<0rDj$Gg#O!hMQ?<6 zqGi#Nbk~3jNDuUDaqC+*7`x;;w_f-)mU&HOx#G)nB!u=s@Zp0d0h?qMvT7s_-*{VF zAu+2hdR}{8hWZ>>*H?AQ4!_nF5+KDjtCo|Z;(&paX}$HiS>Ow?a?l+L#{-&rdT<~u<4Ae*@1xCSQ1$D6&t^y zE=3;=7ea>xHp81G90?G}pg@E&PC9Z2fn1kJW2khpDHViq-R{fCp6K~-anXjj<1?c} zE3vy%Wg8C%fJM}h2caF`BU;>%m*tSYK|xO0qzoo?ec$e8fz16$XKH8h2HC02y)LW1 zuRteK1G5T#_G_fwyZkd~Ylw6_5`$6I#~Jgdq0HzD#t4&#!$Z;YR0);=NW%h7HjjIH zHFeu(a**$p2drZ7TGUf#z-0_SX&5~x=K%ArxR5@5|8)4oub_s0k}&m87=U1c7B}?t zPTv5aGp}DQ4E~&qxwZ@H^4?@VU;zqpCx^wyRTAmyJe*OEMEkA$GPmzPb*ik?c9#?Z zKb=G3S-@)8p%72FHh^C54B)=0|Se zxMN~Q!@z{rti;xl6F?k+qdnmu{PLz%UXw|#cc<%5d@Yvj+&Tw#N$Apy@f^W-jq=yh zYmq3WuS&Jy(tvQu>6!~RrgTT1-B@VtFA%lStKgkxW_H-wc{!KiFe!S#;J84)l&%)^ zdEbUvh1@_pb)rE5ulM5S_1);}IR$e{-#cc(3*z(0^`ObYa*@uhplSd46UmKj`{4d}GSwAJMy@uubatQkkqzL%C)e*S?D5XAm3~Sr(yaPT^ zAN?KpIvNM@hhakeM$8$1VLEi^7z{q;%-<@_rA55#L+1PWI=2#NxiNY4 za;!*Cx4*#0V6QxgRP91Ps^C1;Xletg+olyp?;TtQs=$<9aF*U-)aPRG^gj}p}XC)!ur+3O`8Ly?xJX@<=bx7Dlz*VSVaoIh}mmM5-6m^mb>Gh*;Ob&CiCCEzn z;bs%2y!E!QuZthu;U6mI-dU-3VbVy^w|~nK^1(()tS;iRxwGjwEA^N5X@5*Qm!9G+ zVCfq

k3#SJF3VRaESnf}HGz*T1MYyD@K1zoX+`c_4m74Wu0JdfHB>{slj+Yfkz1 ziMu2X(U1_85d8lIel|%<^{DUtyn)FOh?KEfZ!oLk=j*MnYd7E$J$F)AE@{3Jl!B+P-$9$z*=|>6y3ek zHTPGVFcJ!HX?gOS>OA#vcA~=O1E1dVfaGhb_elR}Uevn)-wdW*IaS3755Z!hZKg+* zEk^cCE*mU;u<7Zq3ylp1D!mc~cQ_b}n9hKs)aa%dwQ3|v4@SGHoKK#MvRIHzO z#P6aO94bkyS-Bwlvif`W#jchY8lkeQeW13(dpM|RXsX>;g47V}opx(uQOcQ`L1rzl z8eEVYgBR?7gl?@S1_cGZ&CLy4Utf=VwHGqCe~`xpD<$D{+l3oA50I-NbvGS1XIi9o zcUIi(h8{MksAeV)DVyLn9$og`k9o9wA|W_I#-mYgt5dF_!fD1BzxX{G(MB$Z|Ik}# zt~NW2l(PXRvM}s}1fs#}@oxmXn1&JQX9rkmy?>_Sw-a#am}Y>SXCFiR#p;d0g|H@e zgfw9TL0rHV=XnWma`N)=VMadqb`)Eob!t4_ZX`%cTuVa}l@;II42YLyQ)Miq@y(vods9x46;egvjd)%9w03Q_H=k=BOqlkT z8#>p(==f6goVBeK234`zXJxdqHQEr2YP$j@DLxCp$EtG~cX-?fGv!_2lRu-hMlE|IT%pz=P;hS)|-|I$e_?nb)%?}Y?Mm6S$R{fg{LM)l6o$cHn15b0c z)~5KQky=-D<&e|*hBCX?dDR5zwFq#X3x6oTSd zF&nr*I4Ail)x-m}_hVIiS85d<-zz^-#0)m>GFr-cHlU)S;#|!+lg1EjFCmD`r}UR# z_$#qTJW%$u#CGN{{K(uLjCBx19S{&ORPBM}9p6|(A=uJxO@%CMVVj6-(ynK<@(kmf zq@hXb1DXJ-^D;wcP|SZ$5ll54HV1=>VfM2dM_6rZYG^JLzL(rnPY^jsIpP`$g;&kj z@w^R{k!HxU*^C`3ayjRBG-N>~_Qd5%=g*GFsrDDJhSOS*dcAOVd+#KD0WeNOW4F?+ zok*zA^ zFFUdHd>ifuE1aaZRsa;Yxf=1)n@o3QW+08KTFH@zgpA{4JGxp1H{gI_Ct}%+R?PRxL#|%1;;q0{b2)6{*rlAC@QItco8;Sz zRP>e_f!7pH@?{pc(SN63E)vvW%pzg`#{nufmZmV)jflz`uZ_k$#MaE~v-dtu$@L=< zh@&UYa>RJ?pM*98VTn8gj7%y6*MCanwd`L`Ub_f#54?H+)SIG^n_~e1lVFo<<`Gwr z$v1hbrtbsj%zyZ;;B8)Bcw=K@C!)p`Ym8-ws{8<4Gz1~b1RXX@K{Edu+p>m55N)b= zXzW6YD*WnF#oM+13u;<>2MzP1fO8x?C46XTJz;BLy?3^kVHk3Bi3n=QXu8>j#TdFsm^%FUIyE zuG3(1R8UP5(^^eHDOLR_iAZhokDvU%jIv{sKwcKoTJ*5~dPIZ3*MH zst6>QwG$$ySAua2hOYM>4wMOJWn}?DVZy$lBaI*NEngt>DY5*`O%>`fEOSr;N!p!< za(^Xh^2#GzK5zDId{UPEnYA!8Gox1}KzG=VxP?muG`{G|9zcX9-@9vRHEIJK4<}h2 zzf!n?a$p}tZW3*`w}4L}@C8^kfx7YDT8}5x0Hk7d8R!_@5-1%whBk09P*8w3hE4TK z&j9dR^&Az6Ak_=GYG)Td4^q8cIr>6+{@@J5Z?QYsYf=i9rnddD%*JeCM~+@89)@GN z^^Wk-&)kWgUn*fq=lwGxQNhg2?44n?cC^Mg_~*ihT5`bM}+Fz-&{8N`1Fvl$Leg^Y(dNDH}k|$35W4|lW>`yzKA_Z zvqQ3u+lpjL_rEBTFhG~A`e2sBJ%4avzoERvPOHSwMMg%_(BwNzw7r%?c#|I2nMgR# z#LTScb_RN>ond@({)8T_5sSD;(6dYFF5}kUm`Vi1}KSV1`=Qr`&M7*+7HdD~d+&cG1M9u5ea8!|F{r0R*u;!9S$J#hn< zy~-8x+r?<=Hl+)`*Ad@oV+-qSkH(xz?4lCRZ+liehPtf|3s zY|+9Jf-{}JT%m~IgfQ-sxz-&*ul)w6@JWMky5#B9{B*J}le2ScGrkgIawMuL%%o{I zS{|*!(PAO)?vxvnXCQi#(En`0titx8V1t2`SmQsOHpm>f^MC+lOG1fkRN65l}m5n^uo8Zny=$0{Zi}C=q4)e{ zR**65{MzI((mV?xd9SjSj%F-Y51XBSSt{}p@Y-EzJXP&p&vou}Q*TZ6xj}a6ZfZoe zsUmDD?$kY?A|TYj!+&?P^WFzL&jrRZ2nJiP{IwqKl4L%xoeOeLllhleJ50lbd4(-+ z?Bf3GJpr&eqZHxcZo2zZeq9eaV*~zodBu@ zsTm7yQT62Wn|D|SOS!~^)*d``wKrt>hT-~3x(A2ZUU^^;$Nee~WwO%72RGbU*qlvc z#b!3BH4!2*ezKB3e|z2B^8zPl1&*013b}Ajc)q%{adlWI)SN+%4TavaI-elf(R_q- zM<4NP@P>^Q0bpHo&dIoHW8g#dyxMuu23BDCdCiFXQx%c9S|5*$$5^8`$Fd3UZt^si zr{sk>C>ycX<$2m}{%m2ljo&T`*T#}y#A_7l~ekLIVITr6X=G%EqM1o zFFTU!YOaZ!>>pj4h}tR$v4Y^kr%(|dNA`>+e?6;-)o3s%(&q1M{F1cn@>B3 z3MYCAP;gIU$}1287$(xiBM)KYu02a|a!3HK8bpxqKyRh#?ah(3D3J8D%Q`NIpKq(4 z&7x1Vz4Nos;)1$Sqax|@+HbI%mDD}(=tH?3v0GbVp)C>=r)CG)&rJvgPlT}m87{wJ zHx)vq{6?o^bSZQRq0=b(>r&E&pRLf;tT!l5F>(G9a08bX@VfGzgQxdepM?dC4f0aA zc<3;HPO)2J*9cMK4f6s>J`Crtk;9(TO)XI`_eLB@*VMh-%_@eyMom49JAUFztt;V? z6XK-CVmoV*77(sF|+#nL#RShID zbpoh@8U#BTL^m)gsD3iRh z<~z6rUq3PkMj5%T50B!%dztBP_kzV)@0Euj`~T+XC)4?qj#{G!s6pW9dCp@H+u`d) zy6FD`cN3w9!Fs@8yG%0J+6e|CTfPFaQWdt!4>z{{6v-uB4E==JZRFkmvisYGk22Z0 zElVLxgHegm#5x{P@kl!w(mOvV-@^ex=G`0q@wCHbpthpd{j*7xkbm2Qic|w#TkHTE z(2*so4SyvVbuDeYw`jzuxoq2c_ypGldCMluRpx6zc~lVlhWr(2bd- z^xTmnKC7a!L7U(fj4I7BU{PMR5&E^v976Dm4;8$q_GsklP))C1Dt4$51H_QS$<_i2DSpmYruuz|Ss)3;lm}PaJWc4+Fpy&e{|PJozLO_v&z> zjNK3Us-FuTo#(mcCFns5t7H0eUf4K7bSzq1{k zM!BrCkt9*MIl78p{`0uqNb2x~{m(OknzPDG`^fb?Ydl&OjEOC=&1Ilc298f~8OZ0x z0jJC`@^saZnKs6kQv}c^(RwFeaNYnZF<}NA7=6#NL}jONSpnJM3q*f2{cRiJr7wKx zxr+I?i@*ijX&|5k4Fmv!7Pj*j;)5iqZ!yYWgE}(qrfp9M~UHI=UVegakwI;RF1_y^!PGeOcL~QW{nmR2%Ex z?IBWe#9VB;B39R1hqs||*b}*fVFhrAIo?E5vYr@@l|19;nA7G+Y<c(B`C@`a+AXFH+YtO5|Q{e$CwvVr=)-c}#(eGLlo1r^JE;R=do z6ZDCB2z$ew*Uq^JU;Oy!%#bLc8y0QK*{CVPqsx~EN*r%{63bz_sbyB@p-UO>3opTM zPS&tuzb+6`c3!#%2C_*GSrXlVI)~cr7No#*cusGn-2FBqdK9Y!T#y`kyVRr-&bAK) zmaB1C`q&p0Z!131tQEQJl?NsI|6P0;QOR_hct@WoDlXc1Zi#(|DwB#~HQARRBP)a1 z01^6D7DggjI}zD(3%5v5PB<;*5^#UGwkorQ|nZpgQh~H|yfA-%2QBuR2k8?VlN6bv~jiONOG5?{t zYf+0%>ULw=IoW~HC10t8;5p{$9a#8v2UDORvF*!O?Nrf%AQP6>Wfup{NlukGP|5Zw z{GJ?$pf_+|u?10%K>Ts3m4Y;BtbXvoSwTg|xUDQ^x2?r(_L(&neSOD!8F|RKHLq5L ze~0Y~>@8Z{B>)SU?tJRw(K%Mq=e=&}%e);MKDg2p_P4H#+HdDal7)pQtpSwQn0-c# znr^+>oi`ZKIPM{YXXEhWKw=ETwhE$j0XTi{`4eOu{{WB{XKgaHl!^ALA%ICM+U8jc zJ~AH&I`qFwLL={HddzR?OHZxSCoZ^;PxUTs_U$~l57xEv#)5O*TyRFxxI70E<%Pfq ztTx!72roBt(9iMd%UhR0mIl>G0a>GsdY9b=+kQ5jqQJOP;nci}F555V($qvR7(Pd0 z9-k^rP3N!|Xz!wi31!@T0E6~s#ZH*R&4f93H}P0u`yZdso;|={ryrjAR%qTDCsEii z5iYxK0nEp$Za1jt;(ssX@WL%j@(DxEU&xcMqr3%ViCcL{hA%3iJ4yuhu`TukgEb7; zd&uuNNtgM}iUpa~UK3k0ddON6RLF&G*Hg>NlyRWvfK>+ACW67I@@8Rgb?ni%O1YuY z!p4XuO!S%@|L}HmU6Kl{CyUg#n@c>)oo|5h1Q1uBd*-lHz^B`m+46Vd&RJetmLe7- zJX{s(3xmDsxWia@eo=ms0O=kVeJeDZTrzqZrBIA<^7LtvP1uf8*g1GuagELWQO*%q<)O2_Z@6Hz@-KN%?6H9vG)(mLf>;wx7z zuxour-rPWr?Zz`0V9^thkT#^N#2PMr>&-XOI|>0K4im_o@X3J*GV2072sb2^J;1;J zyBMeUf{OH>T?%mrz{sBXPL2g7xUSAfzAZ1U;W}~B@sNe>;=j@|DE<>7G2Ek=;8#r% z{YG$^HfQb$b|GNsvLI0M=avxE6x^HiIuLxw14g*1^^a~OH~S4fELO1v18xJwup{JX9JIwWz$cSm;=!C9S;2;)uApH!1BmMdoqIs`zm7wf{;(+E;9O4hw&%wMJy@Wfj%aAy|2~7?I&c% zs)5$p7+vqpf0Mhr%i&bwc?4{@xPj{W%Zpn;@jS2y>3@|QqMShLE+|rjag9f-Xftuj z3b8h~6Kl6%9{lv-?+y$fjx8Yi$h2|GcevXrNg!)_NJ`0Y;{|;pdSRGR?-k+Q&Xeh2 zCTmOnpCu0;v6%vwA(qJQL0!+9afacb@kYO$NFqJ{!gWh`TnOBh*|NUe?1-EIeNjI^ zQ)ZyG6mVeV^|aLQ98Vc?a|lMM^{@wpE+Kc4MtNQ`ACOOcfWtUjgFluXot~4k{5cu6GYLXfz zV(F!snkeT5hdChl;DGzLeZ=1;-wcqzSOQLbp{@?NGCsu&{nBC52a1n*xgUrD8JdiP?IrO|daQ6UgPCtjEiVv@xG6ZkXst6U7X_ zZC38CIV@ORS^sBy^;KpZLt-FLQCwu++8TN%4ZA{uhyAcZFV|>PE>-4X#{05Zw#p^ z=O>R5S&X)pHn=u7wpG9<7+w~Y;jT!w1mQD+^BppsTP-V1#ywBWuw8r}aHx8;1F?HT z0#5hk;LQ2Xdg1O{!}t&o@K4vsab~q_Ec19ikyOxaw+UHW(o5F3jRwKGg|=08&@kBz zHCSu24%JR);pe*ovAGW9|5s;0Uqse?HKt(3#s<6gdHr%eR<34ut4xD+llNa;ed9a& z7^GxZ(7$@R;qJd}S4h6{-1xehBH$Gg!LtSU(XQ+eS}Ke%j#qxQ1bW&HeBz?m6O3Y3?P{tplDS!P5rPl-N*HG(u zAoT*sc@oCpooX0bPS8;A&M^mcxHVmAH~NXNGkc^4`t~>f&8;8hV%+2EAn7v2mO`AR z6_B-+cH{5a`Y8nuzn0iEpwVcfHlS;+F72I?iN2AJS|f}c3%q(d!t`46l3sA}c-+!_bt1>< z$5n;mG^9iQ@`nTRoSdANbX7k@s)kdz(o1b@G^!8Yz54M~mE(`|A@so}bu={UzCAX0 zIv!2gNLjhcF=mTk`}o(OIJ$c<9S+RiN4>{Kf%8KMEa(16*V}%y0}HemN^Hvj?xEW^O`oxDi>-f`-dG`61h zikg~oo?-PP{NlYUX}3UB9B7FWQm%BKJL`#GWXj72Bq(?pFd22coKfme0S5B1A3t=$K9vWq896E z)gTBoMFoNR+Xu0E%nDZ#2^%*vHOnwzQtj0qE-W(cMSV+h%k7t4M+3PZegC+>3fssm z77jvT;rXjq2iV!!6%-Y}=T^=?QTU0<4=b7Fv{2F2Wdgl#jPDF8>E#G`t^-F;K-Gpu z*%E;PpCn@3-A7^{%XEnU(Vp&J-0?JnDz3JV?=z*U5(rTB+2{E;*PdyvZ+;A0c++;( z=^x`JgOal^-yA%~${PCgDH)K+KgPyR^6(s_58l6zoU%UGpt8AZ$YY^e2kGrqJZ{_b zjuA}WJ{K34;D2Zp;^?(-z)h;&3XLk1C)2C16>8yy#>u4iH1L$tRuJ+rSfGdg< z@+2ieOOG;}Tk1!12?+`OVjWd{jDNse*|O3*WHpoh6yAr$W2e=A{4g2FyQvTf?p7|p{&#@ zr)dq{r%r+XyKX^;V>BpSZH_UpJD zg!e$99uhzV?H-kP_i;pipPvu&XLEnMyxzm*gi4e%N_Xx^RxER0u`C`(f{3u2hEdwbdHS$2*A~YW+qpr{BSN` zz&Z=nGi8T*<@MT&hs}>DS_-i3TdZcTd{l?p?REX4*LFWkQUAbFk?8DwV3ipd$l2Kw zzs`X5dR1dsZhwmGqC9AB0Zn&;plTx29is=TMqk8-$sl+LSFc_zZtlz0&J#g{a(8C8 zC$Z%2hrOT;lCjzY*I11k(whs93J72^zZA^FKi7GjO(augMXIy#>;oK4YNQ2g99Sf# z%96U%AI~NI93%?P>4kp`nXY~j^xN9K6?q7yij0nqUNd42Z4^=73`!0-&ZpJoIuCG| z^YrNh&|-%&d$(&s>;Xy^opnheAu98>xXhKf(reeQeKbOBJ)_}Ly8GeDei(=5oa@ih z&~%4{$Fd~i=7PvmVtX}h3j$m>y4?5!)O?;L)`9)<;m5V(lHu;jUni0qLTG2AF8m!Q z9i{iaZk_}{Jv9S1ghlac|CtA%Eei7CQVtvW`0Pk=%ynuq(D;+I><)VT-d`BG&@|Q( zwGT2jHU=p4s1gNeqhyBWN4QCfU*EuHl)nCx53$bQ<+xG#YvBO_amjTC;U7ti5w)75 zd{H;~AJo)zK%V#1i!1Hr4ijHz@OanCFM|L`9jCtThZe!gbh+1*Sod>YxKOs-H`GKN zS_Vz49OB{((Bf<%O45{qle0jT^B{?|YOJV}t2MMbq&gTg3eGotWk)9kq?U}U$ z6ik}qpvz#eIH8ae(1%{h!#&VZX0fAya47Hi2Lu2MGq*mmZXJV3i06pX+_DbtdD!US zkHL&h#*aPlj4z zNlVqf14n(3NIB^4L|c4uf*SQx5elD;)j8j94|7+lBG*6%3r7$qbhqoRI;9?XbDNu2 zPT^Cvxi{@SjL3Kf9x@e<+l#nw0GS#rHH8S^}oHe zLYK}beO908Fo3(SYE)HJ6jfEj494e%k%%cPkMmH86`Jz#8k*bhio+RdSi6p}Zh2W}37tQI z#S<`i?6gzU0f1XsPqlCUK|-?$zhk1K2x8vfL(=5qfm)?cgM+Mv<|sfZWTpiO!oh() z2#^KbttNsw&qN_+-S-qU_-I*G@7Z_YWsR)er~-uskxNi8w-s&&4{l?d=Ns+p%~|IOYR6dp%dU^b^3#DN0re(r(9K ziQ&T>>esy{(_8MqT|*>z@EcUnosP&A<_$609**)V#)(%w#g&&6rD!M6(!ydd|xf&DSm(%m& z{w|rB#UQau8LIJ5uBAP>mC0W%Zu*IO6AUs99dTNP7tL>;uX9sJM<=IP(rH?=f_WIc zp5=@61Az*+?kj%)y+_}}ll>Vc*7;ka@wPeV-LiPX_F^n*j> z)Hx!1c%Si&-p-UaSJDz5PW^4eXeQ?GdH>?8WpTS@aT;1cw}@xS6Le00LZR|jBn9+J z_`SS9kBKe{UE}3JMn?A15I6gcHcHUoQmM`0^XTY1-(OS7;vsm!1_lP+8#f$=Rqp-5 za^0Eq)YO+XHbYfzp#`N6Iu8Jl`RGT%eAZ$7#vi9o_gJuTCa(k3+>0cv^HsPk7(P(3 zu;5AXGLe1$;=s}<4pd?)>j~Zh6rDIW#oVF0#bE1yVtisd6L8v5YeKso%S+SO&aGb^4l`2ukOqLG*PBWN6*6R~x4bex)5US8Hk zxy*ph;pg%3p_TI$*+7eoG-9hk5JA+;%)x*bH9ZUfW(+xk1Ov0VwuE2qRQoJQgONd+q-H)64EMbcgqQdU}q`%mhDq^2Bli z`T5Hi3Y6>yKiI0iAf)brg-lZkQczg^G5&pjUeXm;{DHbbDd^e)1bzZZ7&K4xm`ktd z2zj@-NHF5^g`Q=3`W6^!kOhA`n4-Eb;v#wBMJnHt6G}NuF`G9mjyNQJM%9}Wqi>Hd zAyquLIHHAVU*U#$95yb&84BCSsj4ST1WNEp%Qqv_4etO8bm`ZL)4r5_m)Nuc$L}6t zfU%!sWSB>D`KTpGKPW8+p`yDk$;X$i<#6?nW7|?;rYGlu>td3MNvM*^)Qqgxx~7M< zI^B!J#PIg^n~=Pwre+QkWPA9?k-7r2ma`^}M_Xe=j{u&@UWrraI(TSr)n2X4!S;UYnMIhld?;ly8gDodS;8d0CdExAPvjG%-)D#a6NACgCo zCloUYEwhJwIUVq@ZOfz9wuZKjNzx|hG?>x7cQp(4fdf9M28X6O)T*W`7u zMjeo+q6+_tcCW6{a%gC1h%6tfbjee}fNjSrzywXUx(FPD8+?wN?YAZHygl z7_*cE6l9Mq1^-y5Cby-TySlM}6zb$T0)YqBgRZ*ffg^_wWj@N$Hgww`7#L_a?*w}B zKZf7?ntByrquG4u3E{n$f^*ym1pd~v<8u%RYu11{3Po{)7cLV!^IWsfU zY<>k0sZiD8rSd+1cJHzQnm&+eG=hRi%RozOYyCNtw1&+l%qK9xmNT%khnEg}SL)9p z2utkXiQH9!Q80ai+8dzp`(sm6Mr$=l2VPnkYGrEbl-rw?V*!iTf-h=L9z2E@ ze-PT)Ws|{l&vaEvIgeCw$`^&AvRwe5^tYD<5^* zY@(G<`1=I@iG8uJp4;~ldBtcCZ3l{8=lp{ZHEkBZc)G5!)LrjZGE?`}%l&*AFXCO9 zB(6@}70xe@4hYa!%hi0d;X8(8FOQTArkLFY0l>}D51~IC=LgD{i$C0zzjW!z;CPAo zzL6XXNf3z_oTgu@VERgJjm9O##Y_9XAfV>+ri1Ht-(vLzmEli)-drXJ)JcBt-n}uV zFv4Jfb0_@e89+=CT&{lkt$TBDx^>@Q3F@tKb0|L`pLQ!y*rf3#Gt#0X*&YWXocEpA z`cy{CpcSC3@;>knhnXQM$H|+yCCLY_j5N}q00Q$m~Y z=|w2@)`Msd;=ZC5* z^;x0ig<c?=axxV5tCdkXv6ATd(D&8y# zDJdyw>1=%B3V&IN1~oJL;>ayzJCKj|#R&<=7mUR%+Btx|kk?ub$49;&2~BJnUX zIy%t0zvSepQ~LpK_^WD{9QtJO4$sp%I%@o5Vj`*>w~%6L%ge*VgI2iHq3T8-oHh^# z@jk3QAARF^k5<=aCVHl&o3QbEB(_M`x?Hzd*Wg}`Qpy=^y>Ey-kj%v*kUy7}T0~8> zy7=|thlNr)bnfNw1dYv4IZFC(df#3)AMe5B603)hR>UpyrSu@#+#qjc>wSl3#Xzxr z#2)X~N|i(!ojP@D%rZDQnD5=~>~1k)^cjABeuqu`7yZ&(YtNFlSTRW*j3=)&6V^nu z+fnyv9v{2BMt*!NT3D~%zWDU@HA(1fbPIYq%9!N;&$O&t9RCyt7cZpF_BZIrBTOpVcsyD)F{(l z-&~ME%In@b>ON(%trmu(|d%#g&|b>8U}b z^SAT!;LA>n?yN|aVqklcQ?k^8j%&V$lbOxTwpHpgDX#)Q<)_+#+2=3p9=9yC23 zV%0lsJ>3zl)yXNm*dK|#lukV>OejU*Nod@4lo}wevQs||3a=2KDu#_d_l*Z<&2PSUsO$bX zki*!U*xKm!mtIL;50Qez>`U2*M<8ysgrb?v()p_NTbY*9s2m9a`XgcNayFf1fZ1O? zAkZq(AP8&bp(16K#KM06Y8R+ThyQ}x&p%e@2U`xvCLiE^e@Cw<(1TiFJ?zQXmb~db zqIZR3Z@zS*SUVGS^LawR$0CIv8HSfG>T)i}1i8o;`9HpQQRl*YZcgcelWY<`tpOyw#1kiASQWu-Zn0gkrNAp8$qIVQ&ZEl zvkVCQm*qqGCgfkgezkmg^6c67%T6j2Z$AOA1`EDgVL;~%_one)xNt&PSonC4Ww9>! znl1HfIj^KxWPrXhugm4^J-C#?_g4=FWZ{W3F~<~-{L~QQT3Vp}ROWj0j`pbfYwzRq z4r`cnR>jjai@HrZty6USGC2l56(hLM8q-nhYz>AVF1|lou8+0r79ATdqS%ZrxmZem zpG$mAT96&j8bw9;5WfdFZuh@bP+WF>n0GDF>gPEcVw1?<92d@Ya%PCRT+gNF`i&b3 z_uhE91ORJ~*UQU_*2rmXV}PE4=3gBk|fB0AlB0iAJgSe#fxT^8qiiymm?pigr)-FoXuE#)ZPN0qpjYB)w*Zn!xW&AIgR zs;R!TUn?@4Yw7EuNzoF~%TkwUBgtz5X9B%XJ~m^2edE1n`H4RnjL1#xV<*nVet9k8 zc5F0noMWC)3Y^EjvYwYXP$q2czW%5?nLRFs-NQTLv>fec?h>vwyjW_&AXUUgbN`pc;*z|3jh1H)AfD+x zLp8K8+*>oI`6FDGqU=mooLU~*WPN!G?=+|j)pn z_&8_)cr-4R?8hIcMwT1LsQUY&Vc_5j5U^k6KfrzvU=h@!J zcM9)+Z)FsFNiF(^?7c4?OW&i~tC}9kQ(H=_0lX5NC(s}kwu;->l$kLzp|%+JH`PdM z<)8OwmS30H3zT@jKha5F^TgY_f>ZL3W3p_9JiO{$XQU`LgyL$07>50GYfBn!I*gT^ zM<1ASCn#;Qw{S%AQFoMxCsz!Gy%oGX!boixOGN`5TSlLd(N0jP9nOe(>3jT%jRpAyvHHYBsyfeo`&2zu<6mlxm-_3@AyM!AoP)n|du# zuk|#G{?eDSA;0LZO_Kws%Qn)2YlPL46Ldyr)bXmX>BbiW)pCn zQrM$y)&~EFtnUEFdj0<=dt~obQHY3SZ=NI>8Ksb2$;{rHj6zNc*<@#xnLR?Xh3vg$ zWbgm`qjS!;^ZP$n=c=o7>3N>}bC37?weFB_2c7|66F=Fy06u$rUn!b6ND&}!zn^2t z=i83ke*UomqI&Oc8C$tBe%6G*(gA-?elJ5M#iCP;l*kqE#8Ld_N`3AV_#lL37 zS5dEtFaV^$-9*qRd7P{YYV&Sd3Ms|@O7w9E-72=l8s(aHR+mTDx7yEK4j6pD=Yw24Mmy` zx8vB5Btzvn7gFJV?(>&CsDG(l6=rtX3SxfwI3-)1gtS-tnm^9IqT7gR+t;nziRyF0 zm;Wqt!tJ3Gd2cy#M2rR%*iwGcwQJWvXJARlBt|3dy6yKjb#c8P@Tg8eBP#Z0W1N<9 zN)RX>&FhOH=rzQk&GZN2O*W`9DW}v9f^ITvmmbakLRQ9%Q1E0T5L1;hC>lU~BHOQB?!X1U zQ9@wWUor@j!H)JYWDcP?{qV>W@3525(&G8cc)xi=K|x75z`K6d=lnQ$&vDRVMeOl` z5G^>MLuoYOo-xFhe5q@s=Pxs(o|A-po9!MM9f>v3E3<=)k}Kx2EHe2vQpA3rIW4kO z*xBoT#05MPsP3%&%D}c{BleNIX{tuhD%rV1v`b_~+OKKb=ltQPjimG8=WDLE7URjL z7zofMe*GqO%Y*d_)hFM-G?h~~?e^b+_{868*J9qO-!7Z~;9eEciy+Y)K=c23sg58u zP8O6Wsd<8y!}Dt+!3ZaU=pvwnsgWfX*MJH-1|VR7It&BsB9=zV1+@xI(9w2*)MWTf zMOqfGhaw=1IwqH`Lcxo`&YH;Ug$g@`d21wk-2M!VM;&P_ow> z^ur9b#+?(ZmDQ8*Uma&Do))na8n5p;pO&%4#%gW(8Ot@Ir}%k^xF)|o!58xy$Z(W0 z1q!vqL;V=zbjNC_rw_Mjv=&YOQ$W;DdK=UO*J*2t5v&a@~ZYZR!XOc zb`K6%u3qh!SnBI5wVpylb9Q#VU+$3eqK70rMgILYy9zUr&mqo4YGpBPQ;IHJ?T1_Z z%DH;@vO$C1c#J7P)%7)Q$)uy{#Vit>l@lvC5$bzbx$;Aw`+fW8P$NlqpD9Vt;IxO> zES+qnavQj0m&GvZ#uv`v!>D{0&g5Ara!`f>bK6FHwVZUIN-woT$%Tu^<5Nvg(4V!3 zISX(Li`f7_H+=b0J2qB5d^Fn@gMo%DMe8ZK^yxj|jZ`%>Fac>wk9TRgY}WTYFYhWS zdzM(J{=1DSg`ugZTe?HDVqIq-` z=U#erZ4~JXa&Ck11X1g|BSQ2^Fy#0>dCXI*Q|ztsS?kIkD-!6qpK~w{V+x-SkMy)( zhT<^o^XSfpUZXLB?%eV3jWhpej}QeaPYU8YYSR-u@cm`b(bhIL>enXfZzqgdH!-52 z`POee1Rq`UgOw+X3ujh zX|DdNG;_{pJR&qW-14`2((~6Vzp~4hPmcSAcJX%--@JMDOX*Oud6r6-39oUFWvc`Q zv5}HPwV6KZ1?{^ELgRBJI*_y1*5fl=NGr~oSw-_RGU1fSnHCp^rY^SN{y4}NSELXmdjP$wj-IUbl1%=TE zf}SLDwW6a625s5J+(~|X;5w6RINrzzeXCCL*muF4D%x?V73Iat$Nsy1vI5R}o$YL! za<>Ah1f#>xK`gW=0Sh|N#UXTVYm8vW-UJ%-bQmW`tDX~6Q@$z^dkvRpKP>cSQ^&h+ zKbW4KHH7vmH&hnoz#PHZ>G(@*c>R$2j?@0&^|bTir1VrTzr@ev^*WUZY7(e%tR3Wg z?3O-ZE4`I<{4q~Zdu@2aX}H8f(q;>r?c#^Amm+6RyZ3Iqj8E!-U1W;~$jtcG%sZH4 zUSziUNacR>Lb64ILIS-#9mDRd(tjK9ED2<;fhb87MqW)#4Pm*(4%h0@ypV{KoRU!) zX=!w5zjZTuO(P%0in|KHx%?dGoEr&X$~F%|J=NJM?iUzhVM^CP0dEcQWtumcnMI)` zuEkijL>)}1n`a5qZwdXX4?vdD`*_j$al24H_A4}Oa>Vs<;RXV|dh8l09p{D$=7%q7 zcuJNxwwYg(iHr03aGUMU8|NIkn>R+yF*mKc>1&$f9Ov&hMYdFPM2{SLZ?kG`5F9}MZT+X4WX%@ zRHLkW;S|03H&XJG0^@77gMUuzyKi5e7HjZK6j^c7&3;^=;tRIzK@OS#Js#M#FGQ5z zH6wyG^hVdClX51B{Xj&~CC9g$jFexuva!v(2iUk-d@za zHBOWo6ajVc486eh)ci;|uvy}w8m&u+>sdxQ#ZQ^Kzg1+5`o^fheB ztd66_EWUUtCuTp6Syf)gsPgj`1y|?vqr{7n1YlJVoT9qE;2)`LUzTxSQ|z3OTNlE_Sf3+Q2Irlm@{ye^KmqC+hr5B z=w9Hp?;tf-wjK#z3W-yW!-*3)hm0J4FesWVH||R_`)l4I&p4C;q3I1M5>cvl`dR>h zv6S9mE3CH7>V1bXc0~$$kk@}yhtM4}fz(Uc`Yt&WC@U9*rKL&^o+J+)efq$(;Ha*w zcBYuig%0bfCPPA-H)~;FUAM%;i3^`B1WSKDjgG3A!|lFp2U^#=#q7jz&rp)2_j)w>v;Lk zN=ilK{EB&S06cfv#jNAxAyX6dZ%cV(sjz#q*e3}UlH6*HGkcLaYwYt&4@AnNxj&rI zqu&vkcji#!)*l<#79l+v6bPdLTRxk6!AUZh<{D81YDJbYPp{XWhb6iv&pf3}NbV6Y z2gyfRG&QnPnjy2Ap{2$C*|jW6RcP}B3jKxG*3Lc$Y1hSTWo`8%VihDbBSfP&7S;%H zZ(3Wv!+_GN_v&$YPUoY|o_l7YZYSv92QDis{P8hR#*)BkGAFxytrw(mto%#|IOp9y zx*|GrJrROiO~pbNqK)LS&_OY6sGLqCZy_{GgXW>EP-}D$npC52_e|s?wJJr@*ACPz z0|AZWq&31oFO=yJX$M;3+Gc%Vq$cxJHy*>$gsjPnAG^0uAu;FWdGs60@5N+&;!bE7 z;L47R`co;|>;bw&cz~f+PPW5agLF<#*C)A$uB6>b|kC=wkzfV2CDE(iN%j zVV;;E$NW)>@gB}>q;XyTIc2>TBN*;x6X4qekBJM=g|4Zjxtu=eOiAIO7yWNLeFVfK zKo22+LhAppJ@MDc{HV(wEVS3;X+2%Ob0L^&&hHansz$Km=aQzL0xpBw<&nSL7&e>N zH)r?vc-3cG9dbY8oo zoN-JbNw|6x!E1j}3bJr_JReN!Fi*7Tx|HsB!)9~8<;VYdbjQCRoy?1>6rSCnu=C+x zbNU{%vMxV3=HOn|nR{=%-QUkLlG{FzNUJSAx=P=zlw6x7_fWO`-nBN=Pu(kBwt`tJ3W z1;DHCo+@1*p15Z!yK!Iq;~8e1JzeZ^{T{m%o6(yhn9_zt?Z%x3L+L6k3%mE&E`37U zm;CoC)EUOb?m?pw@&32U!_F6>md1@WBIo&U0Md&A^s^I=pudLY5NQ_)ChUIWD~!1I z4)_Yc_|69>8^Jmgejuem_*rt-r}teCz2s@(?$B+(Clgbv6$~4>< z$*AX>1UF+}wH#N>*tqqT5HMMe0%Gy{M#E5g`&7;@X4F7UugO!;F>$u|2k5cGJhEV7 z3s;yRr^AZy#0|doS0X3(GaY$mX12dtMtG(({qNDI^gigfhC{ub07$ogU(-^j>s;hp z->f7Yd&h21n1AK!*~xGmEHO=o@mq^q$3&(pZS@D=<}uhYSng=GhHZuzrRv9em2t4n zoTlhYFCC|?dR_HX`uXpB?5&DE1Bs4z6u?w5zt_yUW;K|0Dz^Ta(DwY6-eiNuzi$kG z2(3rVLRqhYoAHq#KhA6U>{Ez3+}n1_uvLqD)l!9t)=_8?wDZ}~OULlYX)30VE#0uO z%BZ=Ao`F7ek@3Xcx}~JOFu6aLqrP z)5zv$^E_dor4AMO?+Tjwy@Fz+E`%W%E}C?{RwO7t=*Qv+EmU(~|23eJujZYHvt5%P zcqeAj{xP4fr~~$k_J=kw5UYxE;x>5?y<}!E5<1zNDVPL8$T87%y-8vJ^$}STfi{aV z_Dx{32L*>!gZQy`?<%8BZv0GF^&i9VeLVkk3BLigeDcYg6ODmG$D>Uq^Sxbb8hbjJ zhY3S0GHY92Ot|)%gBqSyiMZgQsf(_V!C^~zj>@}?a+sub+V!vDWG5rbv>4mI^~iGV zZ1q{Ds#^BeQv8(ACS$ZhYvh#7L@4VzzTbARoXc0Ypii%PG6aEbi0}CCMO+upl%&JcP26+FefQBVF z{X@LJn9CT*kzIF=Uc(DPCPJ~d4;mc(!|rF2+LirTuVQ%3H)o(wy~)3bWyij5eCPwN z9_LAk$5iZ}8V;0lBQhOr$^?9w>S}0LWk@dGTgpus3~4*3902H$+O>nIPGllQ{KtfjH_MvanaLak}taX*uq=JVLdt~pi!jhok)U8^wJPH9`8ivCBHxa?bd(rl-MvtrZ9c&0+%SPvILn| z@;QB}u>%3siw`#RBBdlhge>{L9gP?0ePU{llwZYZk41!NyUr$?c#E)6UcwqcAT`(% zW16x~x564D@1W*K%!AuOz56-0#T`jvMicN~>n_1ZAb+o+f8%6@rt4yBnoH$?k7ih0Lv^u|z383~#wi2fLVd(HojoGvn+AB*>hl1XRw{N_l6@AIQ4vy;cxsY;Ig)NqeFvi z>&Eu}ml3X2s=&Lo@7`0p+b#Uy1o%iS8$<_q&iDj9?&>Rc`S-={OY^f6A>*@*p!7wl z_SpxDQAGuse&svQ;2VF4o8N7o$JJW9ed*J#FjzPKebG@OTTrVNV@N-fOjJqD^}HbIe=I9{=5fvqVp;H6qFpBcabDlHW{` zk9qJ{baRDWw{VgvJ2=shO3lGT0`>r)kw4F|3#7gm6`~E__`Z2xKQ;X-MTxx>&@REY z-RFbN11}|K@h^!`{0vYj(6aqGtsHxJWcz>KQTz8hk^@2_8^4c9;@9#5MOt3%grymF zJX4|1&x7!@+Y9)_(cjbd8J|9gDxBl#zFj&*%a0Na#pFK?VQ6*CN^JGnXxO#nIm-;5@H> zUy^kbMrX1v*IrrSuDgV#&0&d^=F1?<|FWV2EO#)T2+)QnxX@n0dH_eyb7+KngrZ}} zpjYB)nSQphCKsf;1pBVW7!cq{H#a`J^5AL67vqLLe-&vx&=BhX`Q+`9)=wu9xRSu2 zpv<-CygaMasfx-utCx*BQvWblRwyb0>Q$8e3te@;<%XU+djYjjC-|TYdxQXc`W)s=MB9HA zX@1UYwIb7F%Nyos=YxcL(TgpnBenci7nXkAVoUvVtICRjCpLX1DJcmFsxN8+72yNM zogNj*URJ8`5yGf#Dw!d>60O&EZk*eBZuPfeOxVar_a$91+hra35!w{%+WGJ|l6&{t#M~D`W2$NVjnpvrDB>e43 z>kRb;aORA@z+$-Lk=69WaVH{H)saR$G1@@tD{sqBWe?X7HchlH6Ee<=^&o)IKm9t1eGw3ek zLCQ2>k307ZY+)}mj=LzSr95XS;Ov>8r9qb_Y3ZFmD`Kn{g!8_;+m&f0eqM0p?nTBC zpErE27lM#~sFh)Cb`3ditzUF2P+p)${2Hv~zJy(3^cHRWIA>yngG zou{-VEF#V{;z&rJn<^|oql#g8ZT=OUVgRrrA64VHgF8l-Nf-AQM1Cfo^U8nRIsHTi zc4w*=OZ1jyWz^wEP%%x0QddDWuf7r;mM+SSVR`+4@)4^nb1%AX@z3u|_=gPAf2`Q{ z(}FRJQMzWFP14)bm^1qk@RF0mZ+n&TAI1F9Jqi!U#fJoy6SJIlk6?vRjw6OPZ?rZX z{Mmy7@+67Bi2b{V&fTE>3b3Duz(rEwi1Xow^B+304keItXi>D*6$rUS5PLP*M>6tDE1hu@lJ|G~SIO zw4b}L&zx0O^?Fq5btpzoAC1Cyc10CCwSQ+9{2_VYAIb^tXX}$UbSj(*>Ygx)I(#TZ zzmw9X55QySOF0cLs4r7aRdK*rY@LT}wO zYn2oKrFNXV*~a(B6GMf>HT0r`71IMyvO(_ljjVg|LgwN;k^*ptP1`~67h2`U8W(o zG<^=gbLL0A{67!t1YlTbbR|wF%5zP9)C_-eAY+1f06->jk=bOm3RplVdW$m4T4eP{ zw>ka%2fGTyMMF+>KxfomolWR80iT0F$m^|Dq&(V}kA^e3jvk=0a8ccgtO@%yLdvBl5yMGi56+@9dibqL)=?p8Exi zFQJQ*%qGF`yGfHmo%yoI87uUx9BKw0G=g_T=}S=9$GTmjY0TRgl;J3Z1}=s#Dl<;QdAhTi1uB zJK6l}^i_zyQ~0v#gLoTSiTN(l9&N#rOkK?UixXtJA~tk#1oXavi`S4g<8}a`{t2Cr z0U-o|`D{TAlY}%d+&;NNW6)&Hk3s0lODE?`hs;{{bH0^(kOF{$`MRp%7Gk{q_eF<& z+T%w+iEwj=x8p(1S5O?^tnwVY71XlGFdk53E#B4A^et^)F^5Qfo8imb?}Uia*Yz6x zRx|vY0Pw)M<*SjK|1|cy68cG6PLldu3OgSyt8Y7e2;ANDy{jNf$hKdM)i~U1N6qv5 zD=UC;`QO*~XQyDx2OHa+hF7p@qqO!S388r&q7t9lWPyMq1aWfwZ0{vwI#iH2q{heV z+(Bw=GJuBC&|CPv*J*}7K}&+(QS%JfN57|(zUj48m6@O?|Z`^_)p_;K4u{TEqqJ01zXiZ{if~#q`ffYI1foL!N()kny-0c z7DK2AMuqLs2`0()NpC=x#e9>Tiz?$&o~(8hYy^)_xngA!OhCeG>e+BX?sIx@u&c5d zn{6cA((?&fRk|TPNXd5T&$Hju>9p96FzvIT(IRFrDq=k@>9FSVh_pR(q@r`5=ib?6 zZ(L%>n8g!r4Ws2;*}x92XXZT2HX^U3VXLCf^1PBieAXkJD~SV78W0!QlX2KCnKBsT zI}Y!42Xn-nz-CqK_6zePcY>YTpZ#s}^B`o&XPK5Wy>!>lBxo>2mOl4{U1KwqHy_zkq2T(l zHAWqKjD6;h^C$Uv;OSe%pVuEZS_PMAVmBEyhoWy=ZL~fqs;dyYL5aNo9AOEdh1~Qe zzwdf!0MY?6a!a@F>#xGl4mw@o!9?e%CV`GX3JQdGK3BYM`jg+iZU63M+ij2Ic=RCq z^G92^eMt}$o5 zP{d~ZmHQh!%r|Ksegj*({G&Cz7tcA)6GF$)QtJE(tEcSV=p|!aXbJoV@ zI~l~?)KSCZgpHDVB@b}b|4`f(#phoWZJ((n?|*9>A+Oi_@Of`_w%rqIZC~;1op@mAURfZJOFejS@IxaZr^je;H06hr_y{u25~Mc> zz7J$ViQ(-iubzD~<|GC}DHK%nDCQm|3bA2PeH!q-6|{H`rpimFN0et`ii)(FW+nf4 zXXd8UeJo-TlsZ6&>NtC|8}@&U1g)Xy^(H?m)%%0#oMOgmF^i6APYk+OSmZgoM6Oel z_Ub)OVFF4$alP43#e}apB0^9k@&Yc9V!i=ZB=C{E&LiV3KEXIl;aFKrCy~_EN8r4C z^^frmmpuiG(a@yZL=%_XJG63yODxXj#tkpz6GETpHd?~T^z#4oiK=$@xtUFc2ru1e zu5!VKX@$U~NCjgMq=5~napAl;S#V)?sfTHa?`yK&hktWQA8c+atsFvT$G@*>r&DAQ zCJN23O_}Tv9;}5Rq0(8dfJgI?IZ|X@N%AxGW2Qt|DHKlU8ogT?0v<6ZV=MedhV_5D_Y9>|9?EBB_7uNmSOo-*1LkzyJ3V2Af7u zAnwC+QCMSZLy(@q8>!(EorC;ks~6-Sffj$=r%zOX}r}JQ^yOAn!@u0e~1&4 z@-u-d3~NCXs6anQc|LZHQGqavZUZ#tv84cT1k`oepObl=uu$_JWiN|Jh*#E$vxkLW zgJk)SS36R)B+GI0d}b6G3a|{@ye3cF{1pK63`Q-Y?;W8CoCvA?UE(W9{ffwYh06ELXtpl32P#h6K`@H< z=#(x7X02)5fJx2vCBAScr_74nt}+e zKVE3aYUDR%TzwY`{VS)tWw%*@`-1uXR@U;I%vTC)mODg9NB3d%!e$tMfm?H%rYK0%ft`D~q@q zVV5fpdF}etP=!C$ALW3#gnlgA4=H6|{Ta;^XlV!}sVd71IbBFDaVvn2#v?bOTPPfQ zm*ZZs_A^m;ety+V-94!`uxaO9Qmf<&RFU;{& z9ts6t%Zm`c7L`$jYfkk-H2#E4S33M|AJzLylO2w%QgLyUe#U>y87dB@czN@U z`hz;<>8-vQr`Unbh>^Fke_;9I0iSGmJ$4Lq?wT#X^$yJV3+WzprWh)5+q8NORYI zw1njsMk)O``oc-VRU~QCug%@`m&8M!ZGj=WC#}hWC6gVe%-)THK8Ok#@XZxE=c0tZ zdFcl96R(=51;XxvlZj%42_y!H(5u^wG3rgmEa0W$=REM@*4smTVe^w&QS*KV(T{xoE2k{GsJ2!Mo`;(8N zLinxf2<~yL^?EVUFwsJ9+-}}z*3_=QUUqxjyBejD5EX(=@&2JSpj8#VF)|A?PY(2@ zz2M{!b2|g=8J4}WX^zAWS+C!D`Ob;ln}{37T%=D+PshvRMSSg6k8A8JNCNra%N(f% zljVThmae{hQlRxZ-~Q}1Zibw7I^TNV0#hj!KWBCr%R3p3r6ASj$V+TABO@()cPsD4 z=++AW7kwO`se?RyK;k|L!aX>S>A#tNk|ZP;B6{X8^^8MV-ua*~l7XrOr7h=vZvBm$ ze4sfvO;-DNdZIKKPv_@FkkerhkBuWHy>9E>@*UIbC5p`BMWF=<*_VS_1~EiT1EZPgcI9+*@Maos%8@1+VEE`l*PnUm`=M`_4R_d$kMV^Gk~Q< z{g#drT&)NW8C6R>gh)(5uEG+#YjOE}FcPJuQN|YUbOwSG?CoEQ+|Ic-1wnK7D_!^z zh3dSW8##Kf6_S4d_ecdppcC`;>)(5=7q3f7N`j%OR0R9)rCCOU9ISLgP(vN7k79mU zZgt$NS(TTl${DmB8@odGZQtHEFJ?Gx-$>Y*reuRBHzRw@L>{G49msyU^?5Nn4zRq4 zcunJ82;*%`bb!G@MC}K35OgFwiwX?Xk#rS_vy42`(JB-4eZy%kPzeuFOTL(XEy{pI zw3&YU_Ko0Ze@nL7;|Pf!83yaW{Hat-pioj0 zO7#U>kbxak$7|*YkEE(qj8uxp2U$G*C-Bp4`Z^)i?V>&yb>Lw9;GjS#!ZiXwKrk;} z8+w;!WwS%%Rqlvp_XVqSI!!w7vdtYW(?Dn>?apm542}t70io@A^i5eT1eVYZK%kID zh}jiPLiERn8!BK{C(z<@Bu(3&fxFlqZJhgiR8`L+OZD6jPC}T{)&mjov}IwRYPDNdDj;Yy@_uvEzq^N8 zE)E-jj?SzNrz@NfD0{aYHWPla0%B{CMSX){^5p*W6iGK+gk-e?9*vz*#I7dBswxQX z_N(nx4K$wx3Gm*=T=~C`UA3|SS^L-@`hRF9-f`C47dtvM&>7zNq-2YS#$++VaBgQ2 z(=qdV8t+igHC~9+gQQP^UI@doOa9_BIc$em7637PB6Yur9(_iE@{n1(ZYTq!U5Mb| z0wDPcid*3=l7vTTtv6whYZ-?4L`V;y4DFhJq`w+03^4-VX-NUEu8sHDe|kl$5Eo2$ zw)PavF%ZjxF*+J?a)9;E;c*v&IH&F6vaO-Jy8sCHSuRoSW1ZJ>8tkCi5$uV(Hx{9McMKT9u z@*r8FP*uTv4vEs>K-~77V5%*Ia5c!^Slit6lS%SYPM3vPA~JGv#D|RpvMwxuSR09` z)4--j`Fw{|5Uk$^w@pM9DVx3x%EP^j}8jz;N$d$$kkjo`E?CAOhNz{0-W8^`Aarg*+z&hi=0)l2HdjY(a{U=yzZR^!&O&T*WY7t2dEsxQid3i zj*pK8!bIKouOm+z34_ecJS-uAL)-@Rk!rLcH3nNbE&+k8f&xCbPAOVSmq}z zqid5NUrJ{b($g@W~FhpcJ@kt|3W7+fHU-0SQmIO>D}!8#7g zh*Hy76a>F_MiMnRc&$doAc1cjLT=zT0bz(82<6nw{V{_Z3Ylq$c=^JG3pBzu#&N@R z2bt;db&z+0Xv~Kl$J{|pu3-c${rqt!0XT%+4~PgaEh;1ksygcr#aTO5+I~=K^E6Gt zd%eR@TQ5osD0E;36;LmLfFelr`JecTE*2rP;g`k6$*Dpfk33K6Xy~6HZ(+PkN7v!? ztU-Jmo#{~jcG0^NRF@BEPmS5)j9`CMWmyAjk1XrdfoJ9lJ{YjTSiiJL1K;YqJVfJ7 zM(TOgLa^rDso836$i{;U5t;Dt@DTsq`0TyP*WyU^vJCJ(CM4B@#gx&iVjY`|jI8s+ z0|aHS>F6MapXPrH@j-Ag=65F#Fc3kiPx6fyR5YRvSCkVZESfgAjRazN!JBxIjcp2c zNomNe(_swCkaLmvg^%cB5}xP?1y}DJt1WDFsgepwxUeId&cad9P;Ty8aDwmB0)XZTmd`7ZYBtMc&1KCub^xJNTZG2?=={c8|bR5o?g zvJf~XwI$+QkT)Nj;hmb~olZXtfelrPf-wpVEQ_FA#D%ct;a=WA4t|3=Om>Ri;k|e8 zr8BUf6Vm$dJ!u!3Zo`2UkXN})2jLxlU_Jif?g48fIV&I1=s^5s*7rd=LBjoxj?POY z;ra6A%dfu8?82z?K51uwz^O=Gm(0dh8oknI7vQqn=Xuq~bRf{r-?*u-XIex@&ZZ1I zP)(TRF)o;&!Ap_#_SM@su;h6wB)p*F+s-|##`m1h1BUKap7QQf`E$FRSssz^aP_V0 zE^Q9wV?+iAn~_6k?1xUuITp6d=mVM^GTLvnKi$GapD3sVrFR(b`bG*61w*)&U0-vB zzZL+kX2*0y(dhA+8VLr?VM*>4&it`id!6BE-RQpJaAss+M#02-mPVvfyx2f5DKZ$O zaDO$nfYs>B8mS=xiHuA*1E#>gJ3myCC);GJTg)R1>Az!7$cZ4gQvZK^B2 zyZ*H|JkXq3{{6h*j1sQQOy$U2v77Jk^v29e)2_?ZP^qrTs@`6^cS%bZNYz(W%`0?w zLN{2MO*38&8cwI{$b=8^JM9NRa2gHhqYj+$ZPdImsw2zueyz#$llI&J(O}_5K)C$^ zCZSfppl!?zQr1rcy}XMQ5uP+iDFR~Qy0-dkEhAuB+s*g!Z+aeLvby74B&(Ia92CgF zDJgjlwg`d#+ZV}p!JY0%56=%*X6lH+39)QnzfM6*3&f_324tCvcNQ4k%;xv^_kVQk zX=zfZ#bqbLh*qP|BbCynVOH_Q&>98V*~!>5;B0FEXIkvGqfbqZ)FH&&(g>K-5HSdi zzu`xOTi~5<26t56CUPP1ZM`vb{ECIaBC}r03>GAxbh<+nP$Q?9n}m2T>HbOBjTUXMOLTeQ1ro z`2{QgzD|!{$#KKw*owE4e-$mgt9e{7|E!;|aGsBh?CI9Y;9KW~i+~sw)irtoaX32_ zCfNw7w&sy#V&dWx3k!HqFoUJC9yS)pA2;cKkM|BP00pyR3dG!;T|}WlkUR2)j&{b7 z1O8gpVB9ar(t_0{xwe>{CvsW!C!Erd+BgYjGkFCC891`k)Yah(463LQgXE%=#6&b$ zcC4?z_FBV;()lB67Q&Yu_UU~zI4B`hBoK0BCLvBo`5`Q;Ksq)s-xz{X8KtPGxUdD` z9JlonBt4nnZ!poK+8$Sc@2)oa1k5wOz z7HE2MLvLtY_HV%vXDU2CSx72cg(L}%%I&w`)}6<4oid!sWBPa=peo!K#YTfwyvlr7 z{Gezn1C$-SL@;B)KXg^YBk7LQ+Y!buO5C!6o?an*qe5qHP}~6h0hrso0Ype9cccvO zPwdK(CdItIz(W!z*Di%Bf5%9v9u@A#BIy>$86bdm=%R$uP`0+_1$SQd@Y$;z9Qbg( zdp)Gk^P2zQfz$=j%SlE^Y}`4wHFT7RMWTpIs@ep^q84j?g6K?4EG*!VwrB~lmm#_U z5rVT4>ZO^RkM2MaGVc^+D$)o5E)V%ds|wfuao zB2f!@vSBbSrjQ&`IBt*wMeX5=JGR2rYB*31-5IEN4mDgx#GB6{P)Av0OWIx@B`9Q8 z>V;lKt1p2&#Mp`%xJA$~zbY$}ojC_#G3Rl~o`yVzEgg{+S00{+3M6yG@{ohuZ$3E= zon8bs2CcKD#5p)(Xk%-${O^DtCTQ~1_1h4w^8M1v_z2o7PGMo%uV26J?#(5jqd^2% zlTn!XbBM>IQG41})p*8BH!na&b-leZ^gG-VfW)dp9;f~OAd1p?triCf>|C&|)D44- z6#ebx0cFKUG4J1Byz<~9X7;@t8D*lAI6v5ox#2!f@ECK6iHYgFOM!F{Cm84TVcU+f z>o_p9{BB^lZ#YfaP7rhc*xE%7^BqF|9YW^fA+{4rWUvS2gNbpl!7du2xR8iLr{#hs zq;^BXr8-TWr!V)4BQ^x!)gvURxgG-*ae}7m_rD~8q21gPz1M2IMkl<}OJxMCq^b{} zTr&Yy)-U6l86Y&+em;s#1CJCpt%&e4J7^sd~afB z&X|uR^?QJQv;|u#i!V#$cn9jvY}+<_$f-t>10glB!;=NHwOLbeCzLRx?sWC?q7DDB zn}O89M#vR>$mowOai0EVXGQM0+1ckv6tgajTDPSw4i=UH81m7)R;vzj6^#tsKe_GM zpb1K(L9$l4&{@?lE}`yNYGv9;q;<{>N%ME-`*w(3iV~oa<_JT4+!k`QCF=?gShU%dYvT;1&J%m;J|kg+h2YMUPys#!AWngFZt z&VlJ=S{zR8NV$Wk1a09Lq3R>;*wJ0e>&^=f3Q)WECiN`vSPlz;u{cGq+M}1L8Xh8C z0M~>5^@Dn*h7;sGLte3-kh?{)_T8d`F}NtA!2Q61Ej9BUdoWxkfqx7UsL(k;g+mWN zMh;zZZm4P_Ov5f%zo2&Mf_5JnBtr=L=tUA7`=Pr1I5Z5QB@j;n=LC{+6w`kfIagrG z!QEI6^WCWg%CSNdi}ENz+%x+xPb9O;x#JEjcy+B9y{QLFo;Ng(ME|R}*C>xmhBvST ztO6uhom8_@9GW$NTmka)s%)T-!7>EJ;g8U1S0y1W!x+Q@nC`bO5MDBk+6*y^q=0=2 z*nCVSQDV9KF-(w?bkd(Y8GAi;;E=N2>Vyc}qJU8i9B>vTw3vnFQuzjQP*i6e~;^2VE&#*v$rX@mIQKP72)aBc0`P?iA@qT`Jd3o7J z8uM_3K0Xb876zHy?_i1J1FJW0e#}J`!-&7F8ZEO;e>iJb1gD2=&b@lT>vo21iFM(6 z6RnPc)Z5ez4GkK*t%G`s|G!c+gXvYvNGHTMbGnc6{iIou+z}T$v=E(Kmv>-7MC93~ zA(hPVxWx^=!%%R^sm}5PpgdwSyg`)zE!SQUAPnGNfU`^8X=P=BGCFE=kiMEwOa8rD zdCmfOPzeDggK?8K$c#WUJZ^247CS>5PH=bFFv%eM23F%+(|j02Rh{rZMU9gIn1`w#)>+&pYAx#axmD{ z*(@3y5N;2}?oC6(;e zw!JOq;v!P0)x^N{0I4Pt!!agS=n!gg830KF)_W?lF)2e z7^;eQ!(q2ZWT~}M)&0InmfAyZr;yz1{i5@g$;;-T4;q>YEG{kSbhRo zcRbOGy%N}^85y|nxyfOTO(z;h#PArL(RH4ooZkvPdZ(~yrS$H4Ex;Qe`aaw*sJr#l z{FB9yfaXmQ%QDmBfdHvgNV6$F%k$*;lwD>H(8tin=!c|PWCH*IBXy^uq9Re__|xrM zkZzrSn)(lM#_N#LI|&_zK;EUuZ(X0Bs6bF$wkD)n>wVj#gdkdB1X)DjWD~eI#*6-J z01h!z17}`^4?L`hK8^?lnh?3Dwppzl=TGP)Xi%PH^`d2HaKHv_S|rhx1ES4&n^nG< z6+y1gp_kM9nKLdnr8%oz*HZl9P6IIxKN-Ve2?}O|?@uAQqRzat*7$q<9Ua`)s>Gk9aVpbD)XI`uSKO}o zyFTSh8LlS>UDL@y>0uH)5x|xx;;V>`b~*N)xK~dYp^AJ7GV0S_z*Hr>cM{^7OrSO` zYRZMNy>!+K9UYy9-;@HP+~zimGOc6a%y@s#!L7Zm?F-EOi3Zf&PjmF?&}lRmBqt}6 zFfc4H(%dV0+SB;Eu|^IK3`e*g27=aCPd@b7Eq?zUaIHdd!+fYXN9(K?yqj-801n!D zh;ANykj)(V4T;J?`VItVfTzL(hrCYdGxYHAaO9Sud^o_wel@co|7#8I8JdJz^rnM@ z0Fo^C{rh*iJa@3DclRTgG{Bd!U^;*Dcbcso?B*-Q{N=~iTxY{p#DjGzYiqv-1!i0TycvGod6F*0;pp4F zA;*^(6Cj8gbXL24u&eE{_z7#TRbhTf^2_XIl@G_n{#>jWHhFreM*o!NN(ZL5CzTIw zT(DgxZT1=OTmXh72UPLB8R*XdrYwc4o|R)Wlh~qU!hN z#^jLkEz((cx3@1c>8kr@Tw>!BNN0!=v|>W85Lk(>y)ub1 zM0fMh@xG@S`r~@SsCjL6ld=(zk0d`CAzX|O>r>Yqmy3DlabK0Y0%zzgGjq1AoZ3&z zE_&ukdQF9O5Mz(Xy}>(kp!{cn?hm>aWxW`>^b4}j-^5R=Mt^pI zbYSC0kIF=ler*5%-qv2ytZBIFbP*SU52Ya5h4fB#@1tC+5nT~3t~Se6{#%( z$a6h}n+u9sWX~o*c!$Kvp)K^FMZf4Wy>z*byyoJ49+ly)Ppf9z>RtiCTDz=Jgr@#n zA$*+sLCLtlb-|@3-v_+Thu5@?5I|1hu*T>s&bz&4xZg9^Q6KW^e+>>b%@yHpZ9SJs z%2+E)LIG?cvAK8#1R>9G#<|fGvr0$1DkAO*a=$D7?3jvA;zbjg*2s#=; z4oAFte`=!{V9ECq&WSm7USJFUeotE3JDUX#sqhd0G9EG}DL`!LZ>ag~8{3YhWRZ!! zDUZ`T1DvfaUVdwC&i@t*3l@-M9A*|4bTohkT~Z+`T)*Hxa_gN`rpDXR+YlHA5iL13 z@E9VPq{$!|G25zhYH~6kR>ZLT&PeJ_R`L-A5=^9pyBBlPa_6(`ujvhvLC4%eW3X&( z9=g+?-d~jjhIkjH3lNQPVQ%q(v5t@rG$HJYa4z|Prsq;_=sXYAC))i<8PFMkg8s}k zZYEjiXh3FN`@>7p60W{@DQ6VY^w`)K2}W^HG%C+jPnY4aUtZrpp^-qo9o&7ao%5i| zt<1JgL;a!XU&u`*98VDLHc6pquN(trP&ofE;H7v(L~>3}P7C%Bgf=o88XC&&ZV`qJ z-}dwxI#pFwG%r{+6TqTo*$hMSOpDIyaM`E62Vfe}($ZRJqM@YphpTD&oFpJ;8z6@3 zkR}Q>WIYTY{_C%pqn9rpU(^ zcWD;2*Ap%?2dKB`KeNYX&Qb?C#_y7+Wf&@FKt&)Z*(rs$Qwc9~_$;{2E?(}F;M%<9^+Q@a9(p?-+AS}389g;z3j-o(A3i9fzDM;Iqdx;zfc)*-oEy)To5WCTnNAZdm&Lk!5r-=h&H%{t6!$0JNx4y zgq3ISC8wmorFvFxbRkaD049S#$j|;fy=XJnWw^N$ZWY=rDk&*>I9riPI#ZzJ~;&HBR|UV0f=;PAUFBw%$7s%RYP?*V2%rNMw|d5M`9C5~5T} zwxW!zGP6S^At6GGWR;N_8CfBuP%_HiLb4_EJwB@E`+a}!@BZWY;|ceDU)S|H$8j9z zai*>HOp5(<{xfCl+{r1~4MvumN1i0eY&?^PnS~4c7|#UiF8Fc~JM8-p_OCeJvrZw} zdd()F!Wd*+34QwZV2I@{Y84Gr9#&G6XxC5oX{BqJzcks80qg~f`E3oCzW6#v8e7%K zW3R~MqqnEuWagszLXKie&Kwb0)*Z34d;O*1d1(Y%vF~3~qv{@GH-hNy zlapSNl1)&5LseJf)~&~ER}bWly}f*oj?bAT$h2Ke#gFjpZUj~92|nO>jx(@ z9uEhr>)bfEP<=`Oq}8o=dQCJJ;2*9sBL*Wbb2fc!fa^C4K5qEn;NlQA`N^L<$Bbn( z9)MtuBsUP43EKx&UEg*{1>Nsz;xL5r@4>bL>z)ehZ+aE=@HkaBufndtmGHW>c;t-uTB@$= zqMBrf9WXsi{Mc712j=KOHmvk%NY!KblX&mg^nToZpbv(?T1kvk1&i|**)8lVmM^am zG0@`MLJX~XdanUe8!cQx6O^54JE%sWtsc_{d$cLB6GQNqj_Ys3b9qkmWSxP!?w)m= z8x*xVx_ibmo?tvQb^|SBP*KY+?fgXt3_PcdmHG%d+BkFTr8oY#S8j)1n0OOy;Xn7i z);4YwZeWk=`rzqW93kTw8uZ)=`_p94yv%`9hu6R@va5@WD-wl8lAm%MYKW|*oGNk} zK%Ig46(=lc3Tj!P{qU6fI#R+zVH4#?&Tw;xGyz#pI!kSvCsejK-RV#RZ2U zEM$#92aTmt@8Dw9-qYiO{y9i$_*2A+B;5j?j;{#E*!G$EF%MNp)VUQGVE=?7@uA=^ zumJ-=?F8Avr*S%o zAANjtXz=_BYoZ*{EAbNig}a+kWHMYA(X zN~_5MRYd8RMf>U^CO5$L34<|sMb31N^?V>JWU%Y+`$WczlTR>QWxWQ`3!4@fT8S^4+%Ei*i0 za4S3#G2QpE2KJdx+GxKds0(DhdGkPL(OEvT5#3Wva*T3ZOK;-cH*drdI6nNir9esz z?Zm!&IiuC<>sYL#yu{rOge)*QePdW5sTFZy(2-dujddonk%e(-6;SQzta#dZ0_1#- z@>HyUetRgwla6ZTm7zo$c$tn!{8%IUM$l=vlWsVQ}6^=)HE>p>TgrSzJyex zYF1L|L%_p3pGPN0i|E!o{OjbZRjYbjlX)6bt1j%_j>r3>B=#+Igkl*id4?s~XRP0EtO!dXOG(6M#fwp%TXvVzzDQQ2 z)>bWB#FNPS?c29g$7OIeeBa{93kVFnSzfN7F2CE;;u`5jWrpL^u-z0mpQG~gdsAbUt$I-f(;L$S5ICs(Z+s>gPE)Cxz}AWNBh$M0o@obOeY*?uIjwok$Gmh~ zwse9Ju(Vx|e=#j2ZrEu0;{IooOnv{=y-zA*Z!wvpSHJ8 zUu@5pr#M!5%D5nFc;%^>^RI1=L^e{bS#uactAmBU6ABUXvaSDvZ+-9Y_Xd2Z-o`qt85DN$H(um^aKC#6%sy{rJks zSF%;YFI)EJrkeUKeH@foCOCF7*gE#;fR)&XKh30F2SER|o4GU+HB?`LhYk2Zx6b12`rx+rR|Z z)8F6)4L~r<;EJgRsy*z^`QI2M`7z&0;)sZiJ`f>N5LT&qDXua@<>d=bbA8Zp!~Tq& zOjYJr?j-c{+bv3I{hFB^-0z>4v25=jGRyF3CXh~eDzam5-hyQMaV%?;l9GyHeD&&8 zf@IlAEMa*Fu30O?)B`1f4Bb0y`ItPrjZJ`g>%pznC9h>YJUfi>ng-E*IAF0&<^<#Sua3Y2*pONu^)Em2{u5R zvEP?G^uP-hlYb!@CiPZ{56haGn)=!e``o$1;}RAWq!RU9@(dj*(%JX#-vZv&T`eJT zidkjxq%o~Wag@3IYB$|M4@Q%{0uI!xJpGIGda9d19PER9L}KczzJ%BxgNfK>3K*`^i5^ zVUzdvzVFbQ{Dm}rns~_tpga!`+HgT@p&K7K~UUKp?2K7Hv$ zlufkwSqUPdIvzPKI(S{%^GSNSs7bn&=~aVMq2U?O(V@S%XP$rpLG8##%FhY2TE& zpF$_w8VPL`xqGEq=;oLzFYet+`WQWk6#@5}W$}5)#^xXhZzS@{c(|Tiga29UWHGd@4~V z@F4|U&bLq&B0;47P7c^aA<^`jbE;LcytlXD?AxIco#DRYPZrH>FMUz}H_m0cQuYi1 zVa}yZh1s`ykBnG8czJTN2_<2|WvzKsbzz&aWXkLN7Az%{fnd_|`==eAi5CSQ?S=jg zg2BM0X`Sw?C|_3s)NJqTQ+FCFw=mDV{B1b}K*{e21HQeY*QWR4?4c*$aGmTUQwJ#o zi+^uj*WarMJ4-gil5;IZgVjbZEEs4fKE^&<_S}4XA=Zv{X^)oMQt(BCGi+Kd?Mr;Q zsQ+#n&a5eMx?iRD)_>1%>4PvXnVrA5f1Sftj^4#8XrbC zBG`~h+-mWP{{jeX?W=D;CTtA_83~R)VH>xAMjK^3xXvOZqOc%x5n^8=Bt?Kbd?@Ms zx@Fr0(J3MO>O=6cSl#O4DQDZWxWcXallYpO+wa_@R^ih~VJK{Me#ve6`0?u}4OL;6y>`wEvT-tDYUdj*4*E=jSeURoN+K zyF-~-I=Z`8?%K6WLwhmr*gb{tZ%s`*w{L$o0E@q?OV@ekjkx_!39Hm71$+#EZuesL zGjbUj^}Wz3nN^3v=VlGUHm&4&Ik{CtNblh6+(pzKU1k2^{nv2Qipv9bent%sBVsjq zNCF_SK;k;up4_x}$;hY+Eks~lBX)q)sS3S)`!+*L34e$@WZ0M2j(^0@ABICK)+dZY z*GX1-6K8G2zRbtAg5(i)L@ZY{45&MBwUL+ zmrKVvx7Zu|=B;pwxDgzqRwmo5AXgB@aN)DX^Tva6+5VOXO@ov4{?DEh??{e7t71bW2dreYLv-p z3sO#@0Q>YpiS0*o_GWM>#IT;7eey)lhQl?;W3f4I?S;#ZJ$Opi7Xt#j1BZ9WZzHX` zO0&QMBvxnQzeKhc&f*WziOVISR4-D|++F|!A9z>p8e#YncaK2qwJV=GZS#pbT>NU#8 zj;)2P@LUFk0z$;6G($yzgN3cFtXsBhA=wi#H6S$fE;)i(SsJ~y9=JG>Kuy0Z9L z;Dvz=vjFQiGBLq7{RS9XvShkiC|n3@(!tw)c5*#+s!Hg=~n~@DZJ;s9uu~C?&gcwFzvu_-?pfR0UjPaqIfah z!+pUAXooD1LC3i{%gUiASp8mbFlX+5#t`WBpn*8m#caMvRzBU{zGn}$iHV6dDH_@1 z_wA>sx56%LOMCm(6gb#aCKPx5{mXFIKY>b<0K+S0LJ{;KX!lvjjL&Fk-GP>%g2i*< zZrG#U`NQ?JXP-Eli0H0r_q;XeAT+h9VquXdWaxI)jYl!Qjr#mU=WnD%E~h92#u&eV z5t+#>Yc<;$;P*kb<-wzBlI6>MlSp(4!0bPE@70-f$>4`Ql+;!%d!xce3Na2~v zl9A>CPOMq#*p`0!+E)q<`E=vY%c+@!3*pgx8a4Z5AFA=>oC2I1NTJufA5V6hr}Cs> zJ9_vq1r#Pept{$@B`99HbO~i1|I*YzmQA1EM{kAjt5>axX7X}V;h_lTRcGJ5do47l?-125 zUb>_vB4zyPS^O+^2QY*TBEVoDBPB)dWW9FLz<@GVJEKLpNrX|@v1whlLo$LQ<(aKb z=+=7O!QO)JZy3LCWt^AAVz+6UN7Pi?oHNSKw`Q*6T$NqD=>g&mUIP@_ua&4#W+HzY z#+|%PJfTxE)fc~&hBs;a+bt1r^(%#OJ0=VE0m_Om1Ii)$A!JViD-E;g#zHn;0qlX- zHGb_j*Tu%o%Ug`4C&1aar%$~?EKAUe8*rzQD#VR2JS98xEI($I-K~id_47@|=QQU( z7#)-2)bY>0zGK#ZM^x;z_dXk5?Q|B2vy}md9gpqcmrr!+{kU{BWeuiXfA=tS_w>A1 zc1C}dR?As@x@D^1?*U#JL(V9937)!4A#5ovEv+QM&&_=pT^z+T&}o>SfWjC1T4G~k zH$EN$IXvBcUx|VO+tGJIEqSZnZ42~8o>2bspU=64+DQ4QX!PotoHy*QDr;^FTQ``x zDxYF?`XO~|IO$y3m;Ko$LVM}9?B8JOUy$oYeP^7tL2%EXqgTiI`}c3`1MuM^KoKP` zFR!NQeOEI`NFb?xZsm6_LH$qM#VOsqpMpuWM^|k}!poN>;={S_p`pwaZZ8X0&shaK z7#Kt|kB(q>!VW1ZR^W(leFXBk6>mQ_1!*lc-M#`FS1!V-AD8^T_@?*eDshFK8xpN9 zoVIY#F#F{pU*fBBwZ(BG1FPYo`Oq!(#^SQ`>(=#f%4Ma`4r|*vJ3FhloI7_ez2fi6 zY+LtpzA7L&zz_%VWgIK0d?W-d`H`V%?9blF!m?-YpKk~Dz)Ek$vl~rWRy!%$VXJT4 zki-IydU1+E6#k^IAfOKtXviL26O-Mg{%rn$6t7KumLC}#3*6(gADTX#>kVdRW+*=> z7zA{J@Zn=q6GdFNH8c2#PfN#jtQb1f6CA8R^LZ;db*`G(jgE;j&xzsb3x^M3l_ zlPCHh!kGG?u%c=UfIM;ORlYTK*{4D*gQWsSEsMyYhVlf#W-VHK0#(q0#zCEo(YW%* zqmXfKJ>)9Ew`WhPSp)yqrlt>%r#_ zPxZ$meJr29-n*vVC9zqEYMMs1ElB%}+8rMy&7}qxp92dqRnuy5kPe~iH;6kqV*&=& z($-d0JV`kY3P`OROI;`V#CI9CQ4C%u0`%6_RwAyf`0yd%;X|)`_cpF)6kO@gb|^%g zm7*ObGEu@`b8$&E`NH+^@#6}XehX4>*ta?o?WF^D-gf)R2&M||d)shhC^g2-UR3j; zx;P^D?5)A?8M6nP%PW)Z@^wEMd=<@(V^NZrqgu!MqJiVDJ0+uchFL@8%aa9qq+mrHh|CAxkXu0p_|(bU0*T4G%AGkDsjIh)sIgZPy#dUER;><~-kVKD6cAaK`?pnMhm7 zN9G}UiDbLnv`A(K`-PWve~t6XrzIRlC;$!@;p^XOc#0;n)oszmy#F|2fUJUoSLwn3 zin*oFr%u5UVK>|g-{$R@zgg`vGZ7$uDi}$vv+_V&$<0+%U+0XXpNotaJ)(W91@9%h z;bqI&qcY4FR$LFsD|`F=>6^yU=$+d49yqEGjxYU1+JMo3gw%>JUp522Mj6@v0E@!V z9mcY_O?;=ta=ab?>oj$(yUx)}mI^?nmuH%8_Bql+r)P&1^T)~&8-I$s7L5uCzk7mt zu3g(l%ci4nIOceaEsMvIwTl;RYW>vJg1YAX*hHQdmzBL3a5Xnis?YGAc>B(W0VnZR zd>JHP0sEHjLqG?%JhMSf`zbcSuApo{8O09zp<4}{^AQ*pvgtkHYl9lwGca(I^nXtp z%t|<@T+Cj7$&}zYs;+J%JJEmVx!r!PN~KDHlG>d{mNRdom>NuL94VMv^6LC_52dnX z)0mq{$YVj2@8G6>pSyS0Lz5%-FC!+WrENle^bR8ETMevI*F?{qKR??3c11_Vu|q(E zpdVB03PnTavv#QhAc3DEYt>#_#vPkImRrnZ76t5Z!F8XVtY=v%%NnbS#FoxBmD{*4 zI6kehZgJ^2dwDI;v9j`icz3tAx0i4oBRSEBfba|Zm6epVLo5HMj91mG7Ge7avv zR5Xi5>SyhiOBDmU%YArwMw~vbIx#&YoTm7}RP{@qDnnMr_gK5R`ftVtZCwMde=<^Z z7|QKVX42G3r+t&583B%GF*OCUsj){#GmQ94)uVU$e|s)3^&AS zI^OU$gvXiBb_}R5uD~YB5UDS}|J;G{>GC?`Iux3ylPi>;bc#mtq~o-e7SG z+JIWVlP5-w^}T-B*TCGEbY`Q~PI`f-cjeE>y%Valn;1FTKef7f zZZ*Y_XTcheBlC(w9!xJ6pnIu_Z$kD6Ke#PG0lGL*?EkLY!_BSm^ACDRnV6Ne6>~`U zVy2LAE*cr_QoIrX`b^uzHLb)z)c#dF;63lEL1_I-6S4h0n7zv>O?H zTQZ0Hqw_QLU4(}ZDi1kK<5+U*2ogDeG%P5@PUiPVPU!1OJ_; z$LMwJss3(d8mp+AqoGRriM=oA>DY~jY55Mit)ds3d)D}|f-+zFew`mfk3r{*w?bIm zU;mpfj)vC>M2Hn09*zg{CGaMb=CSOTFV}->U?6ITKd%K4u(B$ecoOZp$Rdo)Fyx4yz!Je{ju)3 zGdJw3bV}{jlN1BxP4w=(cE1$QBEZXYxah4HQ+PvJS)ZmJ?fU@$OtF9r>bh>;T+aA~ z^x(90ETB=o=DUbLKkCW(>{dtcFnpTILx8hX$MJMe1#+Olm{W2fiF|8;SZqrJCgX1#-oUcjs^9AM)wgu(P?aazWg&k(_>~xxB=zU^GlropX-6HCR-0t* ztRZ-g#4$13_|k*uuaC&dc|7~~m1HM`i7e9nOG!PY{OyV2&JC`oO|#a`D`guRK6K)s zj40DPb6SVrWPkG1eEW}{1iQJ?_blbrxw}j#mx2bnAU{v=I{ekZm?=QHpR=s=QL3gN z^gjDfG6tthMJ7wWo!PPGs%^cgYjbhgcREI2U1f8{&>u8I zw+|&-&DFHhAF*D#QAqxp+18vDocZ5}OoEPcK359o&*eXsoKwd_g9%0K2a`7W_dqJJ zoXuXbk=CTRqGTnTy}8eC*UF5?$;(G%ifnTko!1%$2iM%5T^w-E#8QE0jic#4^7kBh zBkKEfbFP}y%>#zP0f?;cW8ai$^5yx%y%&$vb%Da;;N*P&=NrVDA5&5)TbQ5S2Zp~R z!w8ESApzeSeA9K2tKZSdiCt7wqbn2$%+k5~yt@~eZvkw_CVBf&k)SW1K!^L{Pe~+CKMVoWtk)YhrGz#}K zYHCw2M-BAjRocVsTs3N28MxMYEJ0)Ma=-N5(^ccQ5}SN%yKRG6*^FsfGP8zf#T}#S zOl-4@p9ObOeNBoz0HF@Gt@32nvuB4(g_rJ>Z3F6HOSBr$!pJxbVYav(oasiL2Up9! zePhH~t`*&d>8I07f6g3`B+Ti18+>{uy&@e-mC~|DPo9`bm_rOyy-88c_ex@Fl9Kv_ zrOjtkR~^lRy0 z9k3t{P^R+#x>H-ox5zT7%-tx&zV*uBL1U4{k@?kYyzZ8^rqAM@Jlem)=&*@iyxrWG zRMG*KlPsWGo>ckZVj<4OCHN5pF{g$-~v65$P6sIXAU)V_qjPomZ(F~;bLbjA(4*H>{ zKifOHcX-$zRhxRt@)ax4GLe@`Um~UlLUPc{NRRh6CQd8OECD;OUY!+(*wfE;uzoGE zjQI0vR4%wmPkW5(;6cqH`Y%aINh6b!E(028&d_4TT;0>m$jBqRen)?bafQqOHn0C0 zfb^(+qQL>XtXXikXHZ`U`{s4$PN3l9s@)VHEn1kvZKpgRDZi1EcgwR~T^)W`UhP<1 zddE}grPEWPc*k;b%@Z;#iS0E6b2e5v*qEUwjMSJp{o5u)3lBzsg#ARm_tnkK%qYyi zh#CP{Aea}1LH@q}e1%h*54lH8jNCqsn{Dt2Aq2rY#TT7tG?EtCxSFzsZ$Uwj(Pi?$ zuVZv5A+S~_%kpB~JR>-5YUam}Cz^4=$VULCXa$NOC^-22obKPl zXS<9XStBj6uNPg~4yW7O)tb7VGGWvaW%S>3;7c_1bD1lvt8X1KiL{&h6{{Lpw}4H) z9O4H8YT*tgtIxs=Tp!FbKy@kiOV18;_ z;QjlnVs->Rc=bvM?KO=XI2dgNazNBOj^(AL2{z|CZbs?)4!Ex6&*p=W7y2=r{Dc0T z@g=AKs-BjRz_qr-otG=qoi)83N7kJ6FKxf1bED+_)w0^6b$ez{sfa(l?@E;kt7L}1 zH&B5JVEr^^w>NIu#J)sZ5N!(vRM1BYDJdzTl{O3Aj3$_yI=}(yKSDRp{2KNLz#$AG z*4RZzNQfZid$iIEy=ZsFFU*0AfD&Y-AM?SRFoq%%<;}OBT&+O<0$ZarXMs5a!i?Cb z8(q@VTaI1O4vvm*-@jk0rlywi`t@xOk5xZ@{25Y0E2@=gXh?ob$567Gaw6iJYoT(q7WpQ0zjba z3G`Im?d=o-0s^%O>NKbzQeM4s4+}eA=R$$Ky2}ZHE>lzaGGePT8`@=d-UiXDp`(wz{@}k+}(Cy17?_vzdWY~ zcF>%<@Em(Ex9-!ERXuwF7C%5|$nNnUZ3S#-b_92Exae6}&@eDO*!5U_VXh6tpt=a# zyzLK@DX*Jt+$lli0WuW>S9^tPP+&j$7 z2ICvV)YTgb^0*czZAYsQfxcR7a)e&u(rN1J&!0aBYbgU1m3#sKN>OK`j)KnnER?MG zQaNq}HzqnJrUM@yh6hEYaKigTa5}c!L(AIUULGuG$M7%>8(Vn%lUJ|Cg~Bp%V<9<# z2D=yp{Jneku9uX^o`dQFt@*Wlue%gD?y>dD&xNMsTWo*)t;tm6P~x+VU;Ilu9da(} zNcS;Fs19kEoRJFjGpGF%sSx*_Aq$hoB?kU|t6>8bmHvunPtWiKLm5^lYJ{`|CB&x9 zUJ6I>j-|+3`!MPOS?GzMq9VPWoi`B&E&@kJP%Z2z_Dn@tJqH~^d3E&zan}BO85tRk zT=bxg3lf!ke*BoL?G4Vs!?q5om}u-jK?IdqM#87L@>Cx%2r1Pr)*HRktWMb)sY6v|FoHa7pSUp2@t;-`AX|Y!esBBVvtR%*p?VL+v97}=Sgg2TX15M2#X!mSAzeDuArpMMbxQUng@>DFD9b5Y)Z={U3-k&C^g(QDvOu z0YZ1QB{y=9yuAF0P*GY`=&}$lPj)VbA5yPlB8+l7!hz`3?;A1gLS(F1iChu-X&MJ& zKJkXq`LnvnZXNCI+wBda^i56U?L?$(c^@ofx9pyOTU4~1XlpPkL%V6y*hk)X{Wnqn z5v4hV7y#T`4}%oJMD-0!%<4D2zM^pIRET)wORaQcLI~^6O^+HkoSOgjA@XZuW292J z)b}qhXcm4~y8&lk4`ZvZdCmvONWiuO=H(bNyn3BLI6IRTNL1d&qEM+j3lOn5CFC>-?%#jlX;)qe;Z`sezu}O|TZk*A0|< z;AK_b^Hz3trJ#oQf=B|^bYXE}UIX|6L?k{)r`cVM9NV^SgE_*eMZ(3jV3#fl@86*VdkI+R9p&VPZ(Bu&!V&j zpY4{12RYPEpC?{;KYGOIH1)%qc&lJ@%sZ6wgn&T>N|Xja9b{D$3G9+M`OEU%$(TDJ9-h@a*;q{(asln!KA&m5S&`3>F z=(7sxIZEK#S@UcV;5)Ck5*o+0>Jm&MWJxxc%0-*Wt6q7QYQ>ECs2 zasHRmxvxrfO1V$lf+Kz#`@M~jhA$t?B=VOoG zF*Nm)gFWg}yvhYD&-$+iQZj+U(H>C#Y+EMnZUHuBOI}$~ZIRZH!;!1E3jdY;8N1Z= z)gSPmpKzsLsgJ9${tp6c*$M@N&BjUs_AuqPR_Z=-eUx*bST(`APiA{exvZ!*y{GV)Z{aa?u4ytxo` zo_@! zqXQl!ifo|i_k71P_e_O5J}g{Y?Y4=${zeRHtm^4mzUg?ifN@%5YG-blf_KZVy?<%8 zGecLJvuJTd(`q+RQwPWJOPYWtXDT}YCoGg6`z~U^80sf7;tsjHA7F~YT9sc$_td^le$$YHYYC{}T=7=X@7uIOM2Qj^e>Vm`erj z`lICygQKIPSoLpV#8y?_Asi;go_Me5wvQh_ju3S+6!p`XOGIVCZ_jZIu}$yo%~e@e zU6lEY3(n>q$7Pj7Fc=J|?jrmMAkz0}w&ED=tGI1tWrfErOuFDFfE<0uV#pi`vgor< zowGJF!VV)Bn8oeZ6Rk9!5RjR&TJ2j3WuxoAay`{(e6^XmvNHX#+y3!=&zb$Ct#w+y z=@hkO@(zfY#@R`Xj&P|21+V$n1*CwCTX`b18-tITGcgeF0B)HCYtM;fd<@W4{{{ z!wJa7lZb@~83{U?bofrs(7;b)@QId=j>DerA~$SBN;%rCgCf#}HlNPvu^kUjdwWa#wM>@3!3JiZ+Cv{0bJ3toSWVUcJxMU zEH|@+!$vSpVhVAZX#api(Bj$>i6Ek7DYzn9sHpHvydQXt5@*+`&_aj=NAZY_y^;&` zNJ!vyUHENumsL{BsP84}G*UW(A-{ENC7Gkb;e%j{=u*>Oy~33u8jY{tzP5)a?tM?4HwffSY%*`n-5t$O+s~k=sCW&f22odC z&ABs*mK0RH#^mFN0RcDQ;)MjWLqLEA&%$0IA@``Loj-<#Kwz!L!-H%{s&!20i@Z!s zv<;Epj1CCS84SeB1&EOso}{&L+S-WPg-BZ~5$3|e(7C-D$m89yV;LG?=~JgRSlif; zE(p{J82+NSZzBeNkByAPIxUX<`sL~F?p`%!9Qnr#5?6x>5|=WZMUPs}$j1bhm3&+M zo^{(SWn{*EyTuC*r_bGdRHm1@cq*sleaWlz1kdN^DHB+f-dv?S*x%_YZB$Ihmo%}TczyqF94czH98DK~2hjZ0;Z_!eo?^%ep8jq- z--yj}l2uP7eW3DYMIjcHt8=mrjVl!8dtlv^Z6rnX?(wY!MAUls?p-4(BS8J+liXzy zS1TX>MZIl*2@ycTtZ4)BsDyljGx?Zos}M?%L_w8TD=%)U)qkhML09A@sfZ) z-XcX|<|4<#hjF?^zmHEi{e$7Xt{S1nNvoyau%W*Hby##B$iBB#Ri}o~pC3eG+qIWA zz^>JyiyB?z;-maq`Ia5a;m#t5F*D+s0L|C^yx+sg*4EZUf&2`=O;X{G{(4iOfL~u< zAzJtL?rsiE7Iuo1)KucyhcdAWDv02a5It0mM7)bs@d-0NbF*!Wr3h5v*}rKhpx#W; zFWYbeqc{K{$PhLlcOHsiLkr=9yj2&~mWrkEU z_ydLS-pP$=$wtFhb`$M6zC9_DS*u+KXeoF%-#6`hpdO#neQi1A@FBlhkLm@g*E-7F zpW@qOGm2OF4|h%dZd>`6Vq>of!|C`?Glx@%m<4gEYQg;QUy24qQ@oLhi8p?t3sLZv z_m*%?sY)b>eR?HpQ03AdTAX_o?Q5HJT1Dm7;#}V$Qf!gi+J7e$u1y4FCRhHw={+lq z`0pkouw+ttU>ZPOCu$oxG%8roC<? zXVtC68rBQzcm_v8_WCwW-jH$UGA-M@;fk!`ss|!}nU3P1fPfuMAvS>J<^r`-P(JV2 zyZ7`zsxQ6|^J6e!hVcVqhS&mXn(wW7;-mpUbY^U>uLu0_P|8INgTVJfLbxO6uEph7Dk<0r?5}LbpplDl(GX5z=>)cmM$;r$Vfzp&=(R)k5UeM|~66@C1Jj zKC~6#GLd5CO-oms!!JS$2UU;I#nYE5=;)hP0%!PCd$ax z>En5&H8s%pb$6fDvs!)Vp|O>mCKx>(2}b{8o=Q94sLV|rj{H_@HX<{?@X0^^XmeIon*J>Zo=uzk!`cA%*XtT#a)3^>Lt=({#$@$?`Iu=dmeZL=DV&0$TuCtK4$|-i_!aw5G1aPlD(7m);R=6M`7zrp| z(HDXln(v}+f(j384YbZ}XBQ#2ed7BWB#ZQ;W#{v+F@}lR76B1IbM74988OE=6`pGg zzx(hdL!%dcQH>tOU?S@BU7FM~YNt5IrncJg=090qc*)&Ut+6_s{kR}JnV6$V;)m*-{^045SSBjjCy^{_G_Mg^QE)D&CM zz94C?$KHxW|8MCgo57ZkA_4RpcD3okMdl(fT3}!IqHT!-G}^^8HB7S6j~<4Yum^_4 zc(0Y}Z{9LKpZ>;LdP(80vDJPpC;gbfo;`PJO6U@2PMsEi`Xu1an}YEFfyKoDbd(WC zRF5s4~BvRN{TL^x^<|S*=7Ur@Fy{tVVl5CN%yG zGspvDYKNH!hS8n@!#&M2Sjxl#yX>}WLz6O_67~~#dv!El_$~31&W%2dv z*EPqlTw|4Rcvd$Uk(cLEXVU{t0_Cl+Y3&*~5&&ks9Uji6_4@K!v}nuX-T{WjxFYWb zy-3%HfPx&9Y#5?+hot&==!r})YW}c2+73xLLAPF3!8_Or7&?Xu&IOJ`Q$tsRfq zDl)^nJ)yq7$*eZ^Oh&>Q2worpo4D$>{|&*<2lb%~-3xe7R(5OKDHbw_fje!5v7q<) zmiCsGg+!YJBV9Q9Dk?|u&)RVEokVN&83`3PQy+q8puF@!r+!KO?%tgEWD!N?2mw?k zDqcZ-RY;sQh>u2K9pqxHs9Zl`;vQ#SQLXGW#9SSCP7wA28V?eT9B9T(cXy&!M;}IY zLcy(~vQp06od0KYc9fkT5J2Ew*MXoDMKzi_23M=VB;q&^hDS?e4Z;QK)UaYA;O#@?ORlAM72un&tS6-W9LC(Pi_Dvq<982b-~Px zS2GN%=uM=T>iO`1GeKHbN&Nu706TleAKkGuDsGnSMGBUkQNC#?ugT00O9D5qbj|0) z<$ok`w6w>Rk|xw*@^pDZrW0n4Y| zc~l{1EW+298b$^lpfnWKiXQ?)>%>ta2p|SIKVfW*6p=qQytdx=p`b{8e@s?dMP!O# zJBgXCHKyiZ2$4t4KUKQ9&A?28)532E)+?>>DL7_UYe-K|Pec*&Y%aHmvnY&&FB{jN zH8eCNcn*N#yTDqD;G+#axO=Nb!b}07A%Jn1)UA2&9zhn-3Kgq-*HR?t3akeua~Rqa7DNB>gtv6cl2yU;2E! z(y_M^DXXeaMGpQJn*^hkbV?NXcSYhidybo3mAZuwLRT8 zGihn3vWCm)K#l3b(A<#;f3cfH`*j4`udoHvZ}!XS)=didtX=KO?U2x_gO=?SB*WpC%UR^2q+Dh$Kq;Yh<;!n$!WR&0 z>dbvE8xxP3sD_lry&@v-0K#ze*FP@3gcfQIyuoyIo;II}Wy0v5G~O!(^B~z##@%Qp zV0(eAli!$)Ap{6fx1-zR+WtrsPp-rKWCLgNI7$GlqZocvg=lgET?ShAq{eI@6Ecv^ zgyoJH038iXmimo{I1&=E!20cxyGC{I%G!D@FT7b_X?5B7kVDfqW805Y+V-?5JDFYx z3dT^s=%ZW5sWrutY&SO=W~QJd#=G~App-U1)cVSb%iziY^j9dqNlGxceFtd{EPr)Q zGes86!k0W_CXJZ_FaQ({SLhOrD^hYax|`cU3Di9->oOXoKx$6 zcqHe%_I$KO-JM=trG4@t)z-zP-3Gxy>l9+!B$}pfg(=Epbg8>Far}eR12j;#24B&Z zGGFo1nP~d=>D_{$Sj1)1GPjot2jM%P*sG?ZashTIP6h0bLt(4$*qra8UBiTw4&>yC zTGO_gSBfW3zC%IL?KgS=IS~72OhR8M$L)nDCK=ef8TfuDHZuTl5VY*{1w`r5L{OZ@Y5eplA5>$dPst(U^aARbYL}{9d|qWE?YtQ z3^6c6%noJ28jRc8wMNKz?!}omFfwY0_luaWc3W_-s5pMiY~sha%^*F4(kW@@*#K_T zEqhDdvhfhl$`wp%ZXRnXI1KvOE&Fy{v+n^6xL!WNb#tAcYRH3*8SkP0a*cPUX&sN| zz!b*S^Yil&<`Ur96p?!D1uMrBPl^R z*sa@1Nl97%Jv+*19QX%ZL#2OiRr>V&TMS@zgd)P>u8aw6fK1n`vs3Sw8LnWzp-gPV zEUc5d{SIp#KXIb=joTZbaoaGN7-!c?E)obBwBbh%^EeKDdnI3PTB#Vq7dN_(%<+SA zh!4yBGe-TgDyeo_9qn^5$=k`V4Bl@tH&o(S<5uIf{-KBWCN_IhpZ{xqy1mMMT9Q}3 z^Xl#5nyR%Y#i&sX@k%jantCOdQw}<*gn|9WpSEXrZLISGx(^sc+ZM1)+`kY;)`lu9 zta>dL5fPDAo0xE^@^OsSH4IYPy2?@2=;Ef!AeLr4J%opgz~9iELiQkoq6F{)vG~w~ zj4CA~BY1CO2Mh~R?)BzkiI;SOz^DFis%mNjs+(KTDrK13J%a7yWd{249Xoffzznlb zw=JQNt?3W5_<+1cfzjh9twjv6d;CtnYiM8~ZbBL3Ma9L~J#;zCU_?rwL0uDMel#BM9Fhptdr}#Wc0YAos`1B6Pl`~mJ794`0#vbM$mev{@TPG}5 z#cWZ}>kSIIIMyMwMskZ!(O8aK@UfE^z+mFK)C+|zYrX%F8@z$P#5X}k+=Hz{J3%yQ z5IOhBCx-P)Lof<2kzZlWsT|S>gZS%!?)k8(!@MOY0_6cypXID>pbr>!Vz6N(C65rg zWj82Tfgul%7*$xca)W-j=-KBPzm<;BkQuk$-hqPElnWY$*0^xod-l}HNw{0VdHpb8UU+|7&>~yuOss0#TGKL&-|ZZ#vHB1F?cS-b zkEzCOPh-qMA9;LxbBLiQAE-mDT6|gM0Y+h+ipbw}JVR$&gdk77E}F zMu*)Nwa3Ju#=>Qf>$Y8!Wk1a7x;SsIDa1{;jyU}x_A&L5wjT%zUC{9YW~pmiX;>w2 zC2?Z;9I5qfetg}Rz4KlOHj==ktjF&LoPd%WS8X7F1r@W7!p_kA_a8r&ARKWd3jy3p zE{mXAo?wkE*!~UFlkO;z%en|Qc^=umK;&_7IDeB zKngVxp+q~^nByM9o0FodpB865Qs2HkqQh#^WVMliF2cC~ME+*CL`uZ)Kxnc`G(Ne%xBaR{ASitDM0|&~sS>*08@r6fSCqaxM)p+(vuOTSM z7_Hb5rc%sAc!T#nrsGLawGUcukUgwfyY{naA9`$p4q{vp4}bs~XcGLpZNVUY&M;Gd zKe+Wi(%)#C9A!8DZdyH%5b;*0!9BhStaK`Afz~M+P=B3L$nguF33N{;@jSf47v5R%OB2)3@4V zqa21lt_ou87iekxls?0z!o$H5yb!S)-ntn{MHO_M6zpr`&Yq7tRChv6Z3|32Nc73M+8=m1qw?cNcq=NC$;hy?kR_u& z=|mB_{CV)SePoc}tdqYP0r7+Xna_dWZr2_p! zg;(IRbG>AI1VCr=XbL5J;N;DFkhX3+V_8bCBZ z-v?F4o!$zdU<3!^aGY>{vNRd26h0TAletsW>ohN3_tV&GSY`&o2d_c_T#pe`FChtJ!%;dyW19C;>R62JQ##oAB2RI z?lDC zRwfr&&7Vqc|F0fgxR-F|V^hs zjfU-bfy`ZmW!E+Hid!Gc~3FI?pmt2qINvpsOH=;~RDr z9Ddyh01YYpeyPCC!AR6-L~eJ)bRON-^|-jWds?Nju?lm2wKxav{{H@rqfl{?O--PH zm!IuFM9WLD{PMF;8TiHQou{e2Tu%a@J^-L9(W(k0@EtNA=Dpq>-xiw0!lI(cfl-uj z#O~a;>>60TBDGv0I;`n{uUJ6tDPW-;FmiEZVb_0$$zI7$Lo?r=Jxmd^QO=((y?WA& zw?4$=jv3T)fv(kAA{|X`o1R@%j9B6|{tg^R>mFBBMBB7OaR>w>B+kb|8gFCq)0zL| z>twj;gzQ8#k?d%-0khb=E5407I!P;4&*NU=CP_)j#n;Pe`u)5Fx)&=Tk;bF`y7VBC zTVO@-Do#OW>@C@-`~u3!(>%ZFlao@GeM<4Vc2b3#4vX2UMXC-uj&UF{?dA^XAOaca zEjg3*p~C~Yw~T@iBB+T?L*3AX5yCY@;z7i2US63aM{ai8LIwibYWLFjcVpSq@4fG& zgq5Aan#ONhCL)KVgs9HjF_+x#Zo=S-Gu`pc!ox8OreX4#n*$uj?f)B$nW%=c-yqHm zZwWg1y>ioO)lAb)P&SrbrPLrSpBm`vufXQBZ2fjnO%KFxTEcPf=(%&DxYyH*$=s1o z?zcMju|ROGG~|GQPn;@lc&{%*=e&b*qRVdu(^N(GDT}nJHz6js>ob-WGxAvup*8T!?zwBIG zM?)H$DK(q{aqa z+qdzny{NRw3Plt}vWkXKT7M`t?l?=&h+>5c;#>q*+*ydqG>hmSb zmfghcpr#K;FoFKga)t7yfVkYfm_h-ZMW6(>gW^gu)0p3f$;UKUyBZ~ghtK!Fk-NeU zEWvY^E`ekPFB{U`-rIJ&14H)%9lZ^QGl9Fkk*SY?aNOhd#6L$QTQZu;KXu+@4IQbQkvGYPQ_1udY#eo?kAb3!0hzaDqg3ENs?r>UNKG@V zLrE1cRfoyev7O&Yz#5Zfx!CLbM3203Y2N&FPH+uG|@{z14 zx269vdmFA`A<#sK^-psUfpMYE@Vl_nAXI0ClcQrVJcr;G~bj4yj>K9bK=twA^I<3BOmscD_0oAi4@q zaccD~({^_|GlvXTtJBAHVV!N$Rq?UjYTz)q%=aWA;aRPGN1?&ZZZ9had0-|(77d3g zkWKwtBp9AX-WGN}Fb5H0K+58Vo?hbBVzl*&KGY3+RT@Eq{8{?HtfKfBr?{_SA0_1s=xc z@na7a7H(O(U|q`ayU?NB9ZG!3lC6PHR}W?FmUF*N>xeubl;hY~_w{tw2#x#6bLGP> zKTn!E5d*7XeSLkyqX$&1fJ)6=X9}p;@l3E-kZ?Fwi|M0%SM1V-(BE-Fsy{%Z;dCr<7mS%8o z@Pd%a&fX~P-sjh3*485G=EWrC>Bdu4T*zWPer12cLfEkDhAKBc(A3YD$~+SEekA!< zg!7<`fAp$q@6y*1zNv(fU^_olBkM~0Dxi6sw!|hF24WGoBk4*hoivmoy?uTAEiIFJ zYsLgYIf8!2s0i+*U-ulg-`}7XnUs&w$Ag-_NxFV!~i2Aq%#f1qo`T;P=cr~34_LE1!cnvU| zUp1$&+}Pj~F(o#UikMAJ@~#)_Cm!DO_q^nu_HBZ9j_U#U^Yt{{wJtI{*Ij*V3zGKC zk1#9A$yHZ>+?$E&2C&0Qo$8gq>lK?vFv{_Ti5i#;_9$U2fd|KWhW-Wy z--MlvERoaYH{GrfsuZR)zEZdM`}R+AgFy{ABOoq!)2cy73pjdQf?Qmoh`4%G!quav znsw>+)(h(%o>duGl5NvE_XvObty~q20roJP*zDvDTX!n`LkpSNGgwMlcAK~Xr7Tv~ z)WxH_#CqcJ;kUR&F!ZhXjmK&!A885IdYJZ{9h)~FIey|C%6`mMIm4IF9I49*nDWT?ZEr#wz?86I z4lYh%7Ke&%#f|TaAFE>k{BmVVb6V3-Sn`e&{|erBuK{yIpF}t45YyKKWDaJ8aS(}9 z#3&lZIJ>g!2czqlqOpxj+4k=Sxq6M7rvRmj4aKhb)j#2NI~hEVL>$1{xu=0z2PHVu zNp+$g~Yc*ks2*B5)rVn3t*?2+4y^;CLU87u6P_h@ftbO!i2BwF{1J zqLzVwo{9)&5ROeoji48A;`b0Rr(+?^ejXl6V=SWBy^nm*5H(0`LkzB8+Qf zn%eC)_gNg2B>$K_;T zYRYJC-V99u?duzzWud`Bxh_nHZ$c1E^P3sWIG&NgT$<}tPv{r#i#!k16gGNCf2}m8 ztf0nY2Zwz1F7>edS7|d;<8>0M3CfZgvo&nuP@HXx85sU~26SPPc&K|Z(Z4}!(Bi#G zKq-cjnVGpX>R?5t%d|8YuPxr^?xo*YrBsg|oE;}SPlg($F2(raHfzSGk!@ua6|3+t z4j9qh=2p>ez=FkQ#jn5fknHud^AOu#YuF#UW&H7+`jj**&bOu`g!|yPsacmm1>IuW z*(x*!Mo$_#GCS0!N!*W$$^$&h8c(3C=gvKkWpYjEoCu#9Mn+T&RrFzTWAN%nL zw@I*2pq3K+ZJi#^H0s!g(q@<#nHuoDe{dwbzI=U8>aeSFS=V_kv+$;fQ+<5f+5)JS zmj^H1u@Bx}>8&f3sd_f>f*A4O8V8X_c*~~f43zQujd`xBK0-jt^k+y(_Uph5Cpj-< zXxo^A9pi>vQ$}zD@{G$&|J!zg&ARlctcnO`8E@gdc@mx*jVaTUJuVQiYT9W#aYxVj zl%G#33A>Tr=lAS+?gBL|W_x=UrRtB4!?Jq4gNZ{e7xSC@RUQ8G$df<8JEn8o<`CSy z;#%7t1T^B?e0|`z#X`6u{7}M9qau~)BU&=3F#<2Z31eLb_exp~mTlj+3n3*lQfap< z2H=B3_F4m32U2L0;(4|_>`;^0WAl4Myl&g_HQ`h|dyE$5q8wiww~>wQ18sUr#7dHy5e>0qDcvxPrTaP;piDwN9Pb z*7bSG^49YjAAB4}Hk|Sf+J7W?EN1Kd`}b*6H;ZVrwU|krV8g`tfQdII+JKdr_WGDaE;D+Y-3}f$GkSV?N28w^&blzFe zb^sUAJ@aJ8QhE4Qod0xeg#JH6Y%5N{`tNG zn0BCXh`x>?EwTCQ-VnZk?9^c8Zi?(!WSHk_J^9-#UZ-pP(jcLxxnxlVCqn-DQh-ZZt5d1^|CV_iz@^OLEF%135Fm(hoZ=M(; zF(vXl@ap_%J7l?Zd4VIk(zxpN-+7+fA@aqnjh`!e?{3+R>vCO~mlKSOoF7vM=A7N% z*($y>Rwl5v*2wzkKt02JSvl@8v)jpy3dXHfHW%xjQ)~KKL>!dVwwYxu)9xD@iqFhQ zkJPQdr@(;%4S-Kn$9YWLW-TP`<)8upujD}l@t8V`skNf%=YGvH3 zZlJxQgf2uzC|~oBhdbb&9GmXY)Hn-8I{YQ}zW1k1UnEHF)7KAo4!p4lU%z&lf+Hht``8zwMB$>E25L_+bY(ty#exrMJ>%Y}V7IZSyKEA$h*?urA zX?Vx5sNtR46(1Q@gUX}+OS8X}ub?04&p&lMa@!d7$aakNPg&{aYRr#> za9K}E#eeNwI!*+Lkfx2d3ACsXZa;k4e+{$<2f)r$iLCA2pJBJ8k75bGT^9HWugT%K-MFbg2|@=yy1xE@}hI0Xe9w!jZ2OLEO8%aiKC|3<8%#cmKdZk4hEi zb;glvG;}VX7~{oq#tFAMK3J9~F4OV3l6HPuSt9BChwYZEV~+TIjD^eDzzwR-KKKY_ za|eEKS@=wSn8~P!{e@Ox^DZ6GqUk^3ifG&m!1klt#>Glzm8t;mZ)|IOX>r`nE*({c ztSEtrtcSa`$=8QL@5pO8o=v&zEbFk$Tmk%L7KQK&^Q*yMDBVi){jhO74XqQ$s`%!( zuZnzeu@82$?iFb(%)R_aWx7sBhH0yy*L)bOMt39Tq4d$M$X2w}H;IUC@A1QjXDu?B z+BNL##K|l*+YE!J&k4FRM4n`48a1<7U_B3m46ZEZg`%0`kDN~j$&}L;v3xmist>;VgFYD7 zHB*U)X^O#`|Brv^w}}f1YnJZn+^yBsn{#W!nmxzYZaK0DgGhT=OkUt@Z{C_fBrDINr*d*C2vbX4hOfQ_EzXW z7lN2Y`>Vs|65fJJjf@$j7SgUMmn7J`hhwJ9J$vxE_UOWmfZvwFr7fbw*DF^WU`N$A zespQHu&*;t%5KVFPtuViI8BsK@;$g%W1UEMuTu)TFml@I{Zpy54riEgka|a-B{a~& z%IY9ml^FIA$TXqy^W8Z^<2npyFIGZD)v0c1;6RoyTn*OiXjVsSP72}dK=Z$r*c5pk zwy=0r$K>WVuuyk3tBa*hgYE%CJ@}r1mB4TWBsNIpTce9W@-0GdW;iRERfdt>>fEU@WAJ>IC9thq zcfObL8fm-Gslu!9bb=hZ;AdFH21iGx4#*C;j09esc}vZifhrfgF8;ngqBJkrY)Y}X z^w5v;gCEDaNAbaW3rNQYV^5G;jqNWDZ#!O+*gewygMqkHa zu0ZT!t-S$O*D)!4e04Ri7t{q(sH!_2+qKOxmtk206-T`Q#SdmLGvbs%!W+1^XkXM0R!U+1F*)k#UeuK=7ZNV{tlo%=$?KbUmqC_SC9Ofyz|I;*FxK6o;=6pxI}w)9-!N(nCXgh33}xt={33= z`ga_qGiQdvYfAE*?3dS^|?K3G89)0h%M!>n7>?BnD6_iqBJMh_#K3BR8C=-yv` z58Q29s(R8bQf;IL$K7o=vWrkY2#XJa#%Dh4ZCC#Cm0CZ_C&w$Bm^ic*_PHL}Y$3U- zq%x01hwWyi_sjg>hYqQ`zmcu@)7R%KHCHK)P5kn;=|{YzvKQt8cJvnH;%$yuhvB$` z_PGfWGE5r7>RbJf;4L0(4#ER^mY8@FR{YW15e<@TR?mWsMI3Cv?jh`0;y=fB*R6xo zxfQ;N|MLm?{tIL{YwX|jg3bM{J41Yc+IrEhHFHlb8{`P87cc2@nR&u)Exo@!bN@z( zg*$(>jsvE`@X6Wlw8dBpmd#4&{H0;`4=z#VlNJ;)Mb)0$LM&xMRE#rPof zA1?;PkaF_P*qzx7-N{gnqV1GY?$IlEe{H9w%x^00ckFd{N80rEQm0!EOI|Mcd#Hv| zfssI!ow)zz!VSAFt|SOzwvFk(T98aABQ}M;e3h8E54=_TfnV1N(+X;p%QiLvQtM_8 zBBqU$!_yfW8fOiA1UIxq)%)Ksfd5(BZ^IeJpu%z3;`a{p#M$f_9WYZ-+feR5HFNFD zT7SS-y*xf-iW2UOT^B5NZ(gEYv9KTs@Njj>b=zU_dKt9UTkkmf{yhz+S;oPCvyw4g zRO)A5pJ$vJOmJC}uoomds9>8>gyb1lSI$)T&uy{+mcwZnd%xHYc@58iUvJoLvH^)v zZ@V04-eoZ-aL@rih~{i-MjPvga!>NFnVG2zg-G7HVHrPmo*{5>LzK<7>Cbz^b!B*W z+}(fp>a8r>o~E}q7ZrnaMM6n} zgS~+5L6q?S$*2^T;7yvP@1{T%Ty_F{AL2wQFyY znDDdIY%&NJie>AZAqv1^9~zK1vU<3@hTV(s>kd}H)s)0isQN$xQZ^f$$xRYm2r>wM z1l{6<0ST!KRO~01_rqieSxo=xy~1}8-$VFYNCY=)*38E|ErWZnKcG}2BYqUV_s|!k z?M8LIk&K(sf}qwp8P?AT4nk=7%opI{MZKlNTwS?ZX86~9d8@AYB(J~l05Mck2pPGu zak;DVSVO(#+m=Q@Bsew(&B-++!lPFh|WdQcO)v$*aC= zg#%ovOl=YG1|6?PLI*L%ehs*)=Jrv^LB<8?ILUnX^V z@w1bWYzbwI*U&;mWn!);q`xXO&;cSwNLkMeio=&@)>e|I22o0emng&l06s#A&}ufO z#GFD>2m*M3qON{$JJReV-d+Uba0aYE$SXn5v4j*$FKijFL1DNb{A1Bsi^<|%+)MBXAn^PFd=`T;;_QGb zlmtZ+g(W!D24%Bx9fcsb^JwYXo{nw*vVbuz4n8L$2^5$Ia<;zZcE9hN``UWwn&#^v zqoVsKde*I{do*H&8S&8VVc!6WeTLsT-L5aRx28iSZA=%&Kqzsz0R=RUz3%Hl6yzO< ze77-!*hsi%WNd(g@kdqe>}CtH8INDper-lOtUvwiJ0wbnkTP|rcpkFbDA#O%oV;5* z{UTp($=^CoR`iucvm9F8Qe`O&-vcsF5alZJzb^&>6k@?>eaR7713TgpeeB6?glw9? zEi|B&iVy)J>$+GGz63LRcT$&*&f0|;yj{3&RVczkmNRyH!Y}7+==1BHC$1X)d}Og} z9qg}tVd~4diFs~F{6Xxr@0mA(1~i-UR?fU$rMoCZ&H_J%e?LYA5Fr>uO;U+UZfvj< zLm&G=Be>=;0BX%yxq9_YEbvea+wwY#ii(I<9C;>07U~PJ;GTIizvE|J6jD55r7@ez zy&3ke5L+MD8dCQDz(cmrXF`JbErf-6b`P?=iMzTerFrXxp??LgYzqAd(gxociFIH) zPse0-xd4CmMu!f{4TC(YhF7qlg5{b@Kv({W;63g@c1WxZiT{A8?$(7_Fw-8vgnkAj z1;F~Og9&4YxBa?STKVZYBhrnM_T5vA)m9m*bN7~Hb*>C+m>NcDrkZxhb6pABok%&D z`-F^0u@Xm_nfw&Lx1bS{NMu-wR@?C&0Im`}>7)?9wb3ngkTp4wnDw43YEBgE%FQn+ zK6$BTYFNpLE2(GmvZLHS*REZon=TXNT*AR&oOf!ul!QddES%VqjP>I9r-V1Jb0OVy zdRbJ|pDsy~V!`L%kx)|p;X?sB6%2GM%pu%<2Q?)w8{X_8yu)4?9qD01nT*Z)<>wTx zr5tWUe|+G*+gVI+mN&Rug9HBVX1CnZxEE5mRUNlqcKN zl*z%yB4!qAu{>>h^IW3C266ib;?zH<>%CZ$YF57#lU1VaN!rCf3uO^l?=Wv>Wx}0w z-%XD`CHt!NpXy)sS*BxgKoIrD5uN>qX`hlOdzzDZ4C-?>{l%V{_JXxp4+#)4AyOp8 z+}&n)a1kmPs<^RsV&no>qffEwBG0Wkq#fOefDICTG9~;}Gjoc_ek@h#rWkykIsZRO zj=wuv7PB+0A=5L1_aj$KxJu1s72Y!v>Cg6;9fw3-4||3?0a7=$dMZvXufuLe-QX3C zz{53~otGHB&zy5DshETTja>nHbDr@XSJy`Hvkn+%rl+69u!W@!-Z2N@@;ur6+)t~3TlM%3O&ikLAy z+<%6h%c-fW>n^%{WTKzGSPyek67x)$fzO)+MQ0wG!5fUKXh#$diUn<48*1IJJ7W!; z-zpQm)0`1ugAI!NtJtQV&R*fdvLG=(h-fc_BQSJ>Od3$iJZ33MgN-1{LL4sx@+3DC z_j2P07r<}_A!h5vc<0|C%K&UWN^aZH2gJ&IX!&nOJdZeU_jF&6H%}M!IjDK(w@1dm zO0vD}5K~USZvOFl+^)3afFK#e^c8xG)`5B+a?-!1$_g&zx`PSG0SI4Qt8#Eh;uJD; zn4E2PD@1XcRl&=*u_cicAm4J=b^TU|^{e|UC|O$4uT=jfx$`XFvC1BmVAj{C|JC~y zq8Tg=U`5@;Rkt`wRr_@#nYNDfp4+7EHc+rkDEk_6hTmY`bg>>>bI{f2fwpy^b9QST zc4xd6?muh%-Sw0$C6J^42a{x%TVcSH2~Jm|kMduJsKcjvM}}1Y9SjQ9hzBHIYwAXx zXBK>d&H#u>wfF_dwV-QwuxFWXE{V0A0&Vla^G~h9R`sJq5)11B%pb;T=>4qb|+O-L;`wAfqHRue%hcW`?L zpKPd@o3(HtkDgHHX}ZBffSv~AwbyQy&ygbwczE>Bo@>5#+qu5dn>VCp^S{&Zu<1;K z*SFWaa8%eVK`vKOZy9#Ey#|p)xiiLBO36hyPNN#O~t`iEiNCgy24!+cDoRou;Kb}t%7no5AGwx zwfVXAY+ullw{RbK8wlKPxz~TSc3`=IzMbvZ!Mb}(Lx8w?eHFxnDYa!VxQpIf4vPnz zY)VqO5YgPETGrLoEDtudk7PR`{aXGk%jC>ZAA@T&ZX>ocZq2)9kdROCc7#;m5P~<# z%b8J@TTI}CD?nDLzL(2s0IjQx#m;AZP-*>ey)&~+3{((?m|wWNFTW!A>5q%?&M`Eq zc{NGI8ffIuFt+I0@uJz*@Cn6L(l^di27oW z&eVGy4aZ_yWo9U3!`<&thnI*FMDvVu>)t&IjkK)Uy=?6Z4GK4AI)WM|}0gW3#){2{$8mbDM#W2=|R04G9@) z{Tyo^p8a~gnJzw3Q#%sm?e*0Cu>?y>&r6$$^L5huBK}2`xXI$-%VTQNn+ab;*s2wZ zgvdv!s5t}!kK>dHS^rJBKE-$5xU zVlxCXhIVHDil6jF_sbmS4>v)F(u2&NZe_6%F@RfDK3?u4^#h5=xoed^DMT|w5**^13gf+D0d|I4-M&qo*bkIABM6Y>W{+ryp58=A7W z)lpdh3r)HImy7O;nipj*ZeYz>8-ehbEk;ckQOjWx5ZulRW&%r*3siNG>`R|wFS zw{3WfJN)7Ys49rq?_*{5>@8wYj5ySyL5l>R5v5HVs=gkK8BP1M?2~QJIg%gcKk??) zd}Y1|y-OFXNd?%h}Yq*u!T9AEQ*9%)!L~h z%<)qA1F6=k0AGja5eyD3QF)~N!=$fT4g0}Bpt|NYR-M0wCRWHLJ=}0*p4hB+Q?T} zD$vbfr~9d%k%F+e9)a_OYc(0bL#_Hhn?(BDyt8bT;I(#+*&I4Sy0SKZ|K<;0J2@Fi$+yJVM|(Xf$f%xGRj& zBkqTxhikPq&N+C;x>nDgw-vl~bJM+<+i5G|WQO^N)HENI8M3cOeGFb+8gEEeEIO&9 z{7;C^RMHMnv;5JcUfWWPUo&3*4{&B@%FWcC1H#ZTyAPPxlK|bkPCw@k@aG93u&WE} z!(VD95!kofV!<29JkU);uKcfPrEOkWxBNVgTzbc(8m7~%cKOP%nv}DM85L)};`5(2 z-(|;s{r?1T`EFW_Ee!C&wVH&-qJ+CVHE}i0Co29@FRmD3Umh&V;;YjEyJEn|o3guc z9$v;YyV3fv%wsrJf@o256@sX_^iXXkCijB1lupV_m`gZnS`rv{DC7V!|FVggJI{Fakzr$(!)2Q&Ib4B_90* zEw6vw)5Q9;^Srt?AuiFU45C*sn)_dWEX6urcf|#H*R!Fv+>la~ z3(20WoJp7C_s?&4GkS69<@IX^K>in|jT3?IBo1s**mB3&e0qcPV(82uVI%IC~xQ5j$+Sm1)`4 zT`s_4K5Jo}4WL8Rk6y}1V zv(ij007*O|3wN0yZ?wr{X|~mnFqDDNm&m4ExYRa(SnVmfRm!?traPchjHCOhqhjBG z>3jAlDsFJlAR(ZCG!1otGty(fxWSTL5*Krl56Ryi#0&8R8=Rtwz~b8#tPjpEnJRO! z`~HRr40l;T5=>N>bY92PCoX><-!)Cj#%sv8hu_)1hEEa=UxfqaV9$3cHQaF&>Av>& zEscH1%L|obJc)FURWCLH+{JWw=(lgg5P}8H>FNEce1$8Q*jqODk=BrFov+T~rAz%H zx`Fo?Mrp1`rB8n%k!DExWfwWc|0?~U@o%y7d>EID}%an$AwaYT5?F!jUm&`@EZs4;x~ z@8;zlK(sDNtA+2CYHhx(!D4{ihEcVN=MF+)_#;Z6+lb;KD5nV`T*CLiudwnIaUig_Te;4*_onjmNE;IWvV}vM=>GV&C9J%6@7K3S8fTvS zx(Jbb2KPCAi880b=$=zTf|+;`0@ec=A7DQd4BJ>;|N|JIW{%2shjTt6gH7OXvlY zAqNNE^Yim35;UW~Tq@7lhgD(~U|0U0n4>747Y{ zZIpdV$F~T_hpc~8xZ_Gk)VJPU`NKCfoe4q7>rriR#f zhP{_r6P{+gX_XNcUmCFl^0bC6ZLQztom90HFrL{f(kOcKL2>Ja15A`DZ15{9E2GD8 zpzT2=o@m$C#M?^tfqSbA1%lAqX7g4rxq@v)$AW8!>xt1GR?Kqgn4fgobVO!6n!lvV z9Ouc*ZPuMPaPO9~U8nD7Hy$)qkGIkTKY4Et%3C>TqB^r4XP##i z&(zRP!P05e}~tQkjL0V?BOcobd?YWwk{H@_J($0<|Q@cjIIUiO~av=x|GR2)0W z^|+XJrg|o`b}ohF?v_ttmcX=nH8;)~6No_g6t#CJRTI7@{X=yKn$6i3Hb#%I5LxJu zX)H<&4_##*l5?vkLF>+uCKFj@qYCxOA*$h_1?dhyAN>1FZ$b4V6DYi$>!=6rTA^?H zliv)KXWFzJdR4;6B=(U2H3&-1pW#ViPKQLkalD6m2N~79M6)huX(>!68M2?A=GG@U zL+TyhsV=$!nbu@9L+C~HpH=7PJv%yZ2K()OC1&&E=YFteQT}+>#9ECLX$;zvETusp~t3*U;Q_Z3ncP_cV z;SL6fL_7|IalhUgw50hZyNgAA@RSuTSMth{d+0v zz)PdW+c=;5SCWC^5e}+ImIRL{J zV^LyRj5ix+?+9NN_f@{TkyP{@-;30waCY8r*VUos*fK;l*w$i1d0$p`KO+A5M)Awf z{@oh~wC0?=H=~yROJ7WCCeN(AuVX{F&F?AN8N|Z=9oQJyA<$(~mirsIFOMEHp**-F zy}Kp?=DWBGV2r*h5AQr66E$E`rKkZUWY{?YQVVBGA;^|j{V&zB%Jg%$rEi9pRDU)e zHc$60>tcvBdzEZ;gFd~3Ev);p8QP@5GaP2a`OW0wdvJ^L=Iz`4of(h@t=h6v5V)2+ zL>P5DgA-xQw42xWGpQ;f;^X4tAOlf{FAk9>&kFRo{8nzHY;HmG{^h^T`^aqb{^#9+ z=$qM+3-_b2KzB&&SLi>qQR8`M(JB$+3w@SoIMS&l&nEQE+g9 z_5$o+o})@izT2$3e*cD=ycpwP9zsndKYot@ICVq=UF~h?o|Cv+wc+=`X==U0HRd9{ z%hbd(sI~rlPM$O$$}wmOZ&>rFuow9ru^m(3_|j1)km9a3^;|x3#A60^Vt5E+eZU!~ z2Orf=mnLk9;TOeqn#WU!+)Y-PQsdcE;8MW?jTU)3TX2d8WNIBwIS*c`*NZuyDpj%) zvRX89W`dp-j^JY2xyVX{hzyzo?TtjK*~+dyLR*^NEn5<)62)^|o`)mCeJgCklyORu z;`nwuT?!BW5v&G#dx-Cv@A84J+VxwuOxwQNw2|_YoQQF42nIWVkJW~T3c)|OVTe$t zl&Dug$ZAWhq39=8lnJ$9QfQ@L-fyRUP!v|DVc({zF&>DyYAKp9gQ*^N*Q9iw>{&Qy zVKJ}|11mGwVE4?}V3QTw-`ly+%6L%o3cQi%k2|zuk~-8abv%0PJIA!cGQ;*m_V@X3 zaJqTS9g@`-`W(44(C+T$4EH{rWAU2<^7H++R87RoZFb*Mt)o{o_sH4;Ii|!<3-;UB zx*EE;jMOvoy=F+1dVOJN)Nzkp`URP`ppUhWB`$n?pIzSe`sVmyD5uA0@+tYAY ztGA0qIS+(!7-rq_ih^UIM&}aBTnZ&afs(j%P0P;$(Rt&A#bGPly%{|#YFb}?>(_7K zl`p*Yks8_B@$CFBVZOluYJss@e$!*~3yCZg$~A);Vaf>H{qiC9NXz_oTw%X_rZhF9$J^sW#1r8&j13ivov3|&hdt2ORKXN-4q|q7KIJw>L_#r>ZAlXoznvVPe#pIl7A8XK z?Y796#Y1$D&+5+97?eb2#nr#hFmfn+JZ2&96*CU=rvo3vBTZwHt3py8Ratun1T1PR z)oEJHmD{#U4tcyVwLS68Y)qFzd6p_QSb3@$3Ty9|!S?)+S*-%OZlbzMqW`@Jx4Gw& z6ndBY;?W5h#7zg9;p0QS70~BAKG41z6N)lB>ftX5x>Rv2l2fS|$V=+L-Nh(w z)0d(X7^zlhn8T)trl}xWQaPFkiUo5!Z*_ze*Jja!FT90%=0wYF@eyjv*KQj<5@3=$ zJ=f+b<;U?z-IFWRSa)!;j~9NrsBS*a`!>lf-Ki$_YfroHPV3Rq4xyDsj|9iVgQsk* z+Fv{x{{D+W?Y8JoY|ACuOj5ED=XPYc7QEQ>ktWY(So8Xz@Ke!#D=V81b8c2VgWATfOwj*< zOUB*yFiLnC;w*`XmIwa1ubHJ|8IvYA>!1}<8&4DvuVeD4Bm|~1DBPDI;dxCn{;DlYp-k_-{Nv3<^z3R>2ki4S zjj6XQoLA!Q538LT#UNVpr}Rb`ar;P*T_k~IeQ)NiP%$Ns!*#t*`j=XrE1wUko>_v| zTUy%bh~}d2)4>&n*$p*3wYm=+dNeXXjFT3aG!x+YNM&T-lU}h=2ug}(payqONRNhV zbRq{&F{OJtrh=K-63gQiN@)g_Qz^H2{p9Zns|yci+G;C_3SV`U2(W$HCZN9O_C1ri z*Q9>@X4lqha&K^(+8!8@GWF|YK>jlvDNYjCKP*ilmsr_Q_ft(*E{yqY@Y@9&In z){?NGZB!X6q0Xk()c?2$afd3xS{X}u!WgZAJ}26GT9*b6U{|~dFh~X!1lUR)uega*mx4(E2irFg{7YME!WyZgK z)Wf_M?)pjMe~P(X??;y~iq)NLuk@%rg{B(^q5fL6d{{r|Bbki3>&pO@mH=^pdKVR5 z9r*7TPsABzaCmYgvFj zv4J{LAk+kid%C9hhRR(u;6mPehrVim{|LuZ4w;d+D{OK&`3;2c4Z|XcM4^dP>6+5O zrHUPDh*ph>9SWI`ETQ5f)b(1I_eX@)(d4k`?smp!#aCE&qep%uYOE$J3k706-sx%6 zK`{9Q;gG9lI^Lj+Ug*nMo;}_VbL5K-LrKCp5Azy&XbkM&-sk@NR*msxl{>d=$m~Q? zuQ1C=OX)i6#}gY{M{BI*D7Or1r!L#1sOZQ}B%6Osze=4_;{70%84~oGQ*cAS+BN~f zsP9djoBk|Y8m3RZshqlT(!9vAO{yVkWc2=t`Mie%@bbt5IP;2dNiV!&pyk;8Rx)2FC|bQiXDQBl8Y|r4?RG$ypa4+%dfpH245PSuNtqR$Hu~g zL5Aanx3vJ0-Qhc`pPCz80cMTYpnr^{?Q!#a5z(+#Eh2v@JSqn8`#f{!GNWbO6tjb! zV}nhPxmS3|FtXoM8!C(h-zHM{m>B1$`Z`ajyNr-od9^I>27E~g1Au+JUp~Y98 ze`?7I-(4V*`jBtl)PR#Eu*;7^F$#w=y#Sz46G#i**m$NQ6KN4bxg%U)%&`e&_a2~| zySdOJ!6fL*TPCD(DLodJiGA-yK91-`d4NE;o8A7`bE6(e;dt2Xeq6`@OEtz`uJXB? zGgKoGGs*iFV;iR7I;#_EV^g#QXTz45>9!Y7%siZi>(eT%od;ud3vMh}mO56CFsL(6 z4GXZ&b>hZ_Y(MRfGCv@chLhvbo~xD%qoeE*zgyfsWqIrchs^UN?T1lq_~UI*6+D#S z*rEu^pNOTES_TxR=VKGJ{7b4G0qu!Yt*=}+_nNMS?D+1Tqb=Ock=~|XG+f3!R4sl` zb=+%Tlt;Iga$dDbFc@p_vyRdK%wT(R9))tU-@2o6tB%tk&FFDyBB=6x2wpUB3V*F- z0bf;B2aXea2UTF59bPjY)wNursTBtl=Lu31^s*YG)a9j|Bg%LvmwCtudDyD={p;Q{vZN zWd7#b9CerJdj_aN%6>&UBAxW(8Qqhbiz!nw)_?k&1Ft(ZkA^MxNIle^v&rd4n1scf zFA4dJ%A$K1g?ZH5u1EFs291};yvn$8YGKSAl-g`!=({&a*_a?aE2n0RT*VkkNG{*g z`^Kmne3x=Cnw; zxPDeAIqdJBkXDbgR(XiC<-B9fC(KafQD6(#T!=@|nG=jicZE3x+tgfw1o0*gBgNx; z2P?e>@s46P?6JFCI94VK$nAu2es#18a*V|L@>h%C*J2XqbLzOn=H|)se;$>KK6d^c zxa*QKx7pYYE#*#`V|!AJi|jhX%?p22wbySJzf_X+wI|BA?-Or-bcV1(s-XYTY0cD( zU5M1QUl>!uh-V%%l2&V$Wk{-S-0+$?w=rgVL=Gm-2;^bpgGE4sXlfbNR3d;nlDobc zN3YMk<>H+BldXX;N$gPq(PH~}E>_%XDOUr(I;5E@!Nj6Vn2W2)Pf>8Ep)L#L`pw{H zIh&N`G4^Bs*l27@)T(%SB7_*Lq)M6ogg&7O67~2iPvKQn0RB*PQg&R><-8@I!SaBU zJ=S6~l#=z`_JG{&^j?}#QSFO-zkuduqJ>umC0)jkP*1_qUn%kM=V-X$x``KEF$NR zA`OGbm_#=1f^*e+#5E)`+1cdzZB}e*e;E@0XA&)@L^l-f{0%~yXgWKMDvR0B<#?e{ z+(VpByOfQx!RHW&$AKR^;DlD75Gj306}B%RNX z8JB)S>8dnk#5z$YehS4HHjoMi0X{`Tb`IG5thDg2a2>zURMcQNaGOYO1Wed$5fZtnHly!W5* z_IkK(TQmyHJHT8nwyY0lkGCyvIW0mk7m7(78W3;Ej>z<%0h)RMNcu=OC6?QFmxXC! zJQ@uG=|!4JYlGXS0Eg@wa7P?Fn zxfo;xJ;0LRfG^ly?_hdmCM&b-*NdfZRb_+S3>3@wE zla|$uz!tU>d-`N+#&vM_Prx$vyZ;}4f5Zjht(#+Lm{>XlW8U6mcF%^1Rxw~EYKD{N z^8mQ4B!4by;tMI>D08qDvYGC%+h0`cjBG~;Eh};-5^JT8Ywy9lq`znv=k5n{Oe6aYb$&vp`D2K_j%Di}=>pdyS6?^s= z)|MU$DfDpVprd;fqb#&Kg-{YUVb6QQsbwp?7S@r%RLintv-?sH)UI0uGg|zJS$i{y z6D1#9FlV4*gXEQqkjwJa{-p7tfE0Mzm=0)<^nH%|0U2%x7_* zHk0bP-lleYv(xE^=&lOcZ0nd-?CIU7F((rdZ9B}e`wH2*=~XY7={-l?FSVmm!;P|6 zRXC@Pbb+K2NXz<;Zm}7-QQgle;pd3j^M=o+9U^JyA9-grFN$}EY-Gsw0kkY+l4spC zlH`g~r(oWSJu7iXd6F`r_NOfFpgFK3kArmLeR`9J0KLtzIV>s%W5i}06W)Mvi}0l< zO&+es1?NrZ3#7o!M^DOziD)_g-BL_Fno(x?peZoitECx_n~?y!Bp$jM)xQ_uQp2op z7LpLv_flqZD}fFhMheA}w2#X=j@k~2QAdwu!=S$}jAOER{O5L*j+^2$S_9#$ZXaY- zF7Zw9Wu9$r|5MVS;{11UKe$|iN8r?|gB20%p#pbUYvQdZy6#PeIo%xS_6mMwX&oeL zbRc`Yz@uY3gXKvb=lxeYTrOjy+}ABRD~e5DxsEJw^j3$^351~ueg&*X4ve-?U8=Lh z=+6u26j`sf_*$SHQkyV?EUFJrIv=lRB~CLR=no1*4|z7d{wN(&byEJAHTkYsNE?ZCN(Z^|ZkQ)w=q*UzJ8B;} zx$$@-w2|(BU#C4u(Gxcqf-u?Q)%E zl1r-y7eN<+@V!_>`QZb(64Y@|aty*x5cVf^Yzkq3A3wub6=2Kh-#8q0!gWaecj7w| zZu3oWdjyCU`M`Qsl4>7<8WE_gRs#t$BiABgG&Yj2j{@8<>%Gwz?3rJf^^o6&JWu*> z<1#%ZDtuHJ$05YJXGl>CA2>F6#JJ&HDa74|{U_s%{Zxcsouqv}B?^5S%;t8ZU+}?y z_7afDhdkg;?q_PPIJ3O4Pj*zrYi|UI;7%}juqN2yvvdv=8eaVUCta&zjv>?-ig8IY z4RHAVN**c{X$u&f%cJgit*vnc19EQ^K?0aBvtyX+g}aQ9e)RC|`cN(v0 zksi#;nB)2OYO>p+cJP38(fL<_l?3AcRh`hVyA~e4Pf0CvTcC71M#bKw!+2r}*9;3B zjOWus2iB}zdk9l+{($vDI$HV-i>H6d%S5L)|A7y@XY<0z@je}Vy;xnUv}S~9_16`0 zh0c4&4}DoEI&7ATU7}iNDrWUv{*^r~Z$pjwNmtY<+*z>b@^w(`-v0iJ9x%4IcYtu3uE(x`?sZhS}c;d%i$L(#5XTe`GXm;h~&q zF@Hk8&;!E!ZCiqJ!Uv5FIW_`b?Ate@jCufCh1Sly)qkuD`UYyhH02$%Ka~H_r47Al z(1$;%ozok|!~~f&tmL1Rpy46AeVgv|*q@6zAE_Ui$X-U}UrgCU0wX?}_2w0ZoRD+%OpLUP$}IVupS83SBx;{RrgtYQNGu1Z`vib{*+- z`*0WhtmCtVy<4oG5+8oedT`&PZg?04pp(0rbt)RsZED%_{Cs?o>A@fIsceV}*DxS!a{7Y`|4U~41aKJD zu!b->M~S>*0NDDVT)eky5KxPC11DrJDe=69b7FAcHQ{K#q~$U>_&HL^zPbnTxJInD zbrx9zfst5&M}zlBj16^VeHm9Mg7{`79j^Q}mW!(^KKoB;I+}%wv5GNLX!QX5%TjKw zCiTfwzs$5%R;MVcNkD4r$&re8EQ{w52EiHpBUo@~mX!GBl95OVGMJ#v%WPs*!x3yz zuGnUM75@1}D1Vg=MN_a<<1w1-ia(8`9^n)oINo6E?u;^OM@LoMM)I4Z+Jzo+dvxrJ zz;HnIkkhb`-<5>@G4=Hrzx&e`FANaX4K4NQOUDQxo4S!j$VKR+^D$-Tr^*mg!DH1B z#C86*`2A=m^~vDDar6&}^jD!e(~If6Wx7`vD82z1dC=5OVPiLu`_-lzlOY|FfYl@} zAR~h}u>tv^pGj&EPrs0LUcS)g(h0(@7TW!Xx7>Jp`*HK;n^37QiHH)~ZUM zsR$@Kg+(L~OvP6ucn^-L%)*65HdVJ7H}VH3;8yYI{{f*i{*5l?z4li~I$C5!rXUz% zVgX#xsTr(rN-e^Y~?5mbljxk&*7}{5+DA>9(gYaY{oU{(1$QEj9N73gc6yf^J{_~m?8 zG}@|!?DNZv1{zX%`1wYL^#enOe|DzneUs38XnOTH-?p!7Mz5kW7c;fIUll*rArWd; zAD18ybjSATa2ZV>*xB7>g6W*KhCDie-}He9CtPVsfef}qi_(j+TkTKE4`|LUg(ucC zk=mi~(0Xm43zj;#5W|4fs7n87L<6JJJntF=C2jy*3Xzk>g67FiZrluQ?;c>EeP|A( z$;6grGNUA52pwNKsuMlxp%9iDrno5KgOGRliS(Bw4vNn^YA(=wrSjtI?BxFDM zUiXRl%;)#|{(gV|{^-13Gq2%{^FHtA{XEZo-Pd*9_fv7wwl~4vQ-*LAr5e0v%54`A zYNL(UBSZ_bn>T0YQB{LgD;-=@;b_-Vof>a_c{cVGPVwS7)Dk1%Md=IxflqyL>Yx_r zxDE6_Id`Ml3vJ7F=QEr7-d-u2-~K?6lz2kYluvdmlK<=_a|mgnxTzE^BnX%pwV(AY z5HAllj(G&!TDdNrtBDo&9xT@hI5(nul95VD&tPss5Kczqc3E)B1|DTUT6>t&&a45l zv@;jOgRj(U-pF!4=Q@yQA0;v5?*5^JSfW4KniG^}?3Q4RS6dhd*~xwdb(?LwA&si)(4`Ki>kj*y_{usX|vz231gC2jhCzI60!bt!W>+1tA zmxRTqZHSrRd;P(M+Kf-ZDW0D)Bfs*6nk~YjqSS@2wD-e4c7`@L@xc9MM5RmL`<@j+ zAsnteaY}S*T@szqLt3dJo{^Xhv zGqBG32j0F7i&{U|U!Iol@aHabqCI5zlXQPCt2?KD@L+RUQC82^uNj)R58Z^aO7pA7 zGt`Vflm|TuaD$Ly1{x@UL@%DF=3`Dsji1= z$wR;NKrdghWd$v>aoz)IETI|m zPi{V8TeCW$tLg3m(fWA`3k%po8VdS)nO(pUpwPow*RZk>KB<{PS{3@_1UY7cilVG{ zKc^Hqm!hTB&X!XmHzK`w@1(fy99f@xmN$a`@ZFCre^-@rxz@IPqz`KhN}hed6A0Jc zGQTvj8R=0G2kA}4tBfnR4?iwv_rL+6Z7x}l5^&p850G&h*iKV)_B4`Gnv#HNs?a~K z?QDdiFMXHzqt_%<4sX-xKC>4gB@z;w*xjRrI4-y1{oKyZP8nP3UvO5sYNLk6G}ag1 zy!OV2iopn-`X}W=ZT&?P1D5$WtA{Bjq?qj78LX0nL62=u44gPEyHI6=C{CiG$m+%z6?n!)2y`F#Q8(9z5b;o#Ct%}qt2 z4%V{Z7=4zE=O(LrzY{Loh}IvZb))TSSHzj>SZO|3CIdv>o+|n>R-0#iclVye?7cVs zoNH=s0br_c{;tPAt(%l1}*wzB)bJTpR=>KJ1tiNwAq2!JNO1<1I9Ufpwg5Ewp z$cQvRBHYG&3a-;km!Tw)5=NxY_YJ!vNTAJ!n~kVAKTJ=HgaEk`q^{3YdTLx-71oww z>HHpgD}JGpqO7lefa(%r+YI02cHOztUO%hezb#AYVDF5$s{Y%~QrzZ5Q*k$oDzR&D zd@u_ZHNZl50W9c}1SfV+W_>=wZ2ZGTuj7eFB7+u~$N3JxuK7Tc_f7Vn0c;~WDH0_F z^1!!fJf;a%PzCSm%e~2k;$282#5r-t?Rt;djW`d7_X>Lv4}ChGIZL%aSsa)Lh5Zby z_{>m5-UY_>r>1U)(jNyjiciKy`*UABXpC=osx`~3xg!{^wWNo)yk=MKQ5m#<-e0=L zV9%#&OxpZXauJy=P2!PYtq^ZeB}S!M*dlZCyuKd-$R13V z&#=gx>^(K}^{FYhF>1642DN|zoF_nmr*+4eDxh*lpcN7u&LhzRgxGTQL1XtKvb4SayF|r(_c9!M=?}DiBs1v2w3g2a zD`MVg|7ic=(ewoKs_$vfULI4ou+_cbtdi614XbKhq^l|t9*36Yt&+LhZa;4E zBD9~DJ?XUae7=IKVPj%*CF|JJeScf0+gBdR61gQ!3j>`O#EF$aW`iDYdu(db<%zvn zx^yXlO@oIW#bMiliA)`)8K{mmc5rYY_P~ryYY8DNq5l=sV{%S}4X$UEzqhX3gzWq| ze&O4Qq1M^Gv_7jZbbS?MbTu?#TC|9k-6gQ_Sn>WeyhSV_r3NZEL0AWeAyU_19Xnuq zZ~L5l(Q26Aq{ai;>rW0YV$Xdmot>`1X~qBKlIw>pt-+ejz7oZ+j^v+=l-8B$lTi9&BWIJSty>NYDG&UiwoVfJy=?dA>~S;d zb8f6${xFK)zEVo+Jm^WiP5X?7N~DL~(;Llm!Ly-%MVVe{3uox)o&JIJgu>&+O)-4? zt?D}bl2;vV`}&-C`VkQwtwo8F$M^I(=niECOKxc_HO;FGydxKJ8c$0Dk6t}buh8(J zT%sqZ9Qs+J=lslsChKDBzz$nfr_90sl&~SHD72Vc9GGqVrJ~ccPyRt;@_w&pHFff7 z3FcB2?Wy?Dt{8vAi{vZW7TXp@gjILv+{L$MujF`m6bEAQA2TYf&@cVPD91A9qYL-s zrnF6y?A(llhyAM^!#d34Ji{J4>oaEw;AAvHi!3C zbiUNDck%49*U76)RN>S_d9WL~wk_dPJYu)9egDq1;<L8z74YZs2ISnn z=*gj1<>exXxrTX>_ zQtX?KgMHF!H;cwuHdcOaEZj?E0Wwvj=6ViOsT{Auung5213T~IX{WS}U7gds{U(+Ad} z{ZZ{Yl#-LpW)n>6?I2VuGcL+7%%f*<4vQH@FtMM+Q}%^dWgj_`yS)fh`rLeyJSRDL7FzsUJTV}xccuhBQ)Zr?gel%v1&Te*x zE=)fD#KfoHu6cp|@_mgPx6%!ovOk0m!7pLjd4_HYW3r58qRYORk`!73*0>7^UYkUb=<}JNz6eD1} zpct`DJr6i-K6nLxa^Z}bBt8=facs8~E6oxUSso{#2;^2U6c?bGDmT@I1w)?E-lrl= zzBugu8VC%ey9q3s^xp`rI2!s25ws*wkqk@Z=Y%OD0tF77SAfs~fI;W|{@*j7GL8IP zU;m9xbvv3rmxa7bFcGy3ygtWVWMENF6!gLnp=r*~A%|b=*!2+DARVInT4Sxo?ty1_ zF0stc?a6Oxh|R4Px--xEWx4Pqi4&Sd%xmPJ)-{v%z{1>~SwCnOUyrY`5}gOdC~Du= z(Pbg7?G|Ig*IMo+5*M0C8sS+B<{0i+p`*PO0-ZPnA)~=hF_8hjILB0p^kG@u;A%+c z`zJE!5+Hkv<443?(3nRcIV+x29=l8&?F;5LjDI?dAM@Tdz|;}5j@f{NNexg;Gf}2U1$&t=Gu~S^OvT-qT(0xcGSR2ku{jUbTKc~} z2lYOWBw;v^mqKnZkyAkH*7fwY$T3Oed_jPOk-UbPEvm+8P5DrY2zK&%t0TtR@u2@? z=AA~~zJcxw1R9-i%vkli*o{*f`11DoDGk?!WlvQ{b$V~n=Ez-LbFbjc@a6Y~YC{gB zdYTRl;@|UTsP-O`HGHsQitdm7Na2T4HxoT8z#5b!UlZ~m-ymy0P&u(bq#t5$;piGc zjMbQP3{C-19){}p7a4lNY5S4GO+c6*C*`CNILr*LH1wD(AfqHHXYWcQB*9P$tQ**` z%^-qS^_orq1P&=W$s{=qo^+`HW1uiiDQfN(8|!&HckznSRDHP7&%SpU^W@&`Wpd_e z=#dZ=95(PN2Bc6VmVi*D@$nKxE@UBb0U|#&W#yA&x)*coJ$UmRY8(n}@7rRHJ2b~e z7c36kboosjMvqxUc^gT`(D^JgXX7`otUgRj)87;DbN#Y9)elb|JZ4MYGnUvg)Wxb< z#-F6{Q*`!>^I2Kt(U;uX{GT0Cc=(~eB{2{wYm|)|k-ng!OAcvV%ps>6j4RS6O+;1_ zUAILT!$_~qc7N?;l2)s&x+nH({Y|yzTR&Ic@-pOZ`use64!^v(eJBM5GvXIHKnf=R z;=N!wx?lTzuqav!r6t9hxU*q?>2S@vFBL{aZ18*7!!Bo~k)G4b8MaJ^VFh{8R^7*z+5i;)lwI71C_nya7ThrP#3=eJ|INn)6gYgA%FFH}- zQ3z|(gAxv9K=i>#(1QZ)Q5$wPen%@=819tm+sA_NXh&F5q#_U2J!uux7zbcx+TFJ; znOnIelLd81%JeZDWCza1|D}TOwY#r(t2*>O8WcEWvJ60#D{^rH@U=HA$5Lbu`*Y5U zq6!EZ{Tf=qG~eT6rMH`sjRja@kM;OsM=Iijv$T-VM>27c^m-y!p*rF7 zqmU9_>y?~q&b@7&;D$f?+2^tMxa#-LU?n{pH+@f)BD=`oO|A)b&PZ23p-Iq0cmE7vo zS>;DG_81n}ne^7>E{KM84Ce~jQDa`t^Rn{=~H>I6p<1`D0 zCTW1+Hg~^?YO>6}cVUqrU6iv2U2+F%H@v@fIxcC^c2m%IJXqMP?|6P}mj60B43oMe zcoH+iwo(aeKg_`<+8Gnsy`*}>mxo&IEiO?7?^06YR!)kUC^2wn`c*m8&suj6u2DN( zfo8&|C$@IHw?uL(kG>3LF_(qGgjVg{W14-(L~O#Wk z9eS{`HL^1>AZ{NzHdvScdNq|*a?g3%ksqUXZXM=kS((d*4;>Yl%mshzU2PpY*85DK zn?uPXRjV_@MT^XOgRVJL7)h$1w~|_ztkk_rg5iIByxv^9J!7gK4EtYSsrp0rY_hD5 z9|#|6?ls7E(7w|mSEVVwJV1Pw8oN{FjoS94Q%YU8P1**vIblO!O}@U?SmJ6zLihC& z&hJ{D6P7ZVTB;gI9>b=0o}74-F$Z4W>lxBANL*ntkkw;aDzF;~{!%j&fpqnvhMa2= z1!`(HGb`E@N2{w&zUd+zLifbDBL@nHVxxy^lTIG+khg^Md1NnVysHzE;+(%+X}`kr zekm7e%{wdaQj*bI_x`-RUHgl;Y8B0K0*@2Ntu1@Lg+)~F$aH4BcgLnMuSad^WvVJX za);n&-Bjya6IZY@j2?WfQMMT1&!~IypD(*PcmlI{QJry$?6dhQ$R!cvnE>Af&b<4p?SxdbJZt zA`g0%1y$JGgu98F;+dfgmJ09CP0)n=LfoYz`^DyGGnw(6c#G(|=eG{DU=r3zUipK? z3IvqS$GNftT8q-X}*E~`7!xqV1cq!2Nlu)o79CI&w;J*<07a_P$AA71(ps@ zHDAST)ZR4>K4|h1^uk^*iLh{jyb9H6_NMY3^@x)9jTe5sRpxELpEjaQxks@7kbXw; z64imvB~$gZmB~>x1UDzSpUHUQP$U&i;YR!U5IKXWlw%mq@P_0<7(3y}ZjTu5ix3iW zc(U-EI?@1hY-?505r!YhObB1qR#-S_xE)|qDBQ99hR$=Oja#Pz=+MhMZV@xtM&Dx0 zqf%9mwTi-tctQ{Dkra__K*2DTC5#~FM}id$*j=ez#HFeAKMyoRJ3KOk>F{%4g@Df| za;o0cVOUH>D5xR*0rVL`K(_cMV2JCl1wn>+c>EF@4&%8oL#TjF!)F+JJB4u9Xj$z_-iEG=b2~ zF%)5bkD`i}6JS)$`noD7oE^FKThgdd4{k0WejQ}nS?8`&RHTTqsu~5@-FpAp=e0i> zXCl6$sA|ZaK2Py(LlY_yN&gG3oTSV{b!#ol4aV9ksnKoGF^E}kalcks?QM&uI_P!m z&s(9_+2XM|A#>7|tw&I|vUh)V_?#|(6H+Z;2hZS_6P2xtnb&~C=IA?ACG*d?U8E0- z9-6exMrbE@=Ya!H*``dAw7|7S1qQOAAQ+LD1;6A_B^nMl(2>mr7SlZ_`SGsYIB&Ak z;ro6R9^FGXZf9n0k2N1g#hzT)`o%9-nuhT?G5im9v{9kZfSTSFp; zHLjWkUl;iIrbc_AAd*gMD}<#&6b1M!GzD5fZsFdySN1ia0yGe3rW}bsGJ26EV>Z9G z{=T`~4=aT#`0L}!GP+)t$)fe_##Y<3sf^vLq=hhkKhSl@292afK?~WpiOdhqe}|L} z!|pZqwc1d7U~h}*@Lbx1iHE_HoWK0WiT&t=C5OF27{)3`birDffn#-V+#Xp33w{~T z{E}#uS(u|`kmgm?-Pabz;=~2*^E0%=hJr_G@q`6WNiu+WLUkZ46zLsBGK*KOvJYkb z3R;_aO+q1fI#Y2_JOXtC%(zT75V05)j5M}_Rqv7VXNTzd7iz8r%nO6AaVa+QV%WANlTo_pzp>kvf@y~ zZLTpJVMQMKwU5s$Le5~066?l}-r=^%%vjShhs48DT#?;k^R)CrF!8w%G&zQK5F`z` zgC8x`xGXp952i*@iRtl z$niY0ASpOw+T3mNb|7$8UG3<)C8lf-Rura#+-*8FjykzI&#+F&2ZW+XcuP5ksxTna z8Vf|-W(Mo~GwVE^zT{&6dTX6nYFp*_rI?}`B3xX?x{=E~*@$qgSKYI5bw|e(y3CrD z*!^-y*{9SpBoH*k&Pp|SD;gkC9_NG4<2Lso;&54g7?waJ_6x}S87Cw1;+SA7%ECCi z!X;2veGd!INUjaWSY5+W4E1&qR=kWv_uR`Vwp}kKBsX_H6uTScOm!@RiY*@>xI;F9 zZ|O@#>0u{NG`ClS4}+3Fn2~iuJhh?4Nb60XW1!1?Bj^Ya2*^jLN~&g6Tc1m;b{zi* z-n>GrMqC}tmXTZspvhld!kIN3dOtVaL1h#X0)K1kPj&T zy(NSIe?d@0d8@v$gN6sRPJbi&Yz1(0Jm@Cpp{}568y>IOP;7DNK`GJ5W;j@i3J7F} zOtt29eXKejAM0LtVaITIdj)d{N=|UaNK|GX?qp`hXqKNy`}z5smdH{_FBUcv<6})A zwEIy-g0W{;1<~N-KQZrWt{{*zN8U_*_q8=kiOvD>YLKr;+@?62-wtQkh4gpVt%(95 zGe1scFbsDrk|Oy_c1Tidp6$kdQ}sL`tV=JQaYVgoSO+nWy1F7G)8Or00a6i{=$SkB zQfOLhK}w3j1}EdAQ{pVBD2@``nq!Zr(S1@~Ac<~Nol1&~VwxL(2ig0vDBabe^_ru_ zJo>brnyNqDR0*k&v=^-l+A0!S!7$8%NLJPCVzk$RYH;Xf6NaGv+v9_eDVC_MeVJfz z8CWe5jB6pzHzLclmHqw5mMu;jFu!HIZi2LeI=3vLwY#1@oDia)U?_|R#&IvIzkVFE zK=j(!IWd19PF#p3dUZ%Nh6-#*m=-QZVA|)-MVjvz-$)_{!Hv6$BY*cqcdR#Beyy`A zTRJzb`D%)14!+lUxyNiFAviU6T4#cB>3z38_hCibP0#Ks>3B4O5WF0(F$-|62uAOE zN`lRCE7^WRdgGSt!9qzh+`FE^W;SUn*eikkS)434h}0v0{4j1ccfw}d2c@b5d4y|A z$nbop<{m*hh;w&r*jP>G@U1B8YM`V-2WL?7@1F?=g^IQgh+j-``$MN} zcxJyD9X5wvNY%NUWpw=m>z}(X7 zAtCri?Ao~#ZF#_t#ataqgMdrc1JY(w%O{QAHULD-iT?T*{`twSFW=H|J;&ZCvvmwk ze(7_rq_e%rP%Ku(^8(H@&)d2 zR0pm@cnEStr!+p%zGT1z?1V?K5E1$MC8g2LJajVilU%5&=A71(Z4tE4ZvK|Vgc=)@sRdk)UWm0GMYnr*BUVtzHe=hTxOX{Qy5 zkw6e!S8`Q;F>0Mm(bEKoR16IVYT~l7AgMAupG_uA-lB%{o9DQ1@XR1~* ztVpuF0eQxG!D`6e<=+Qwgt`#O{N8%|pmCLuZ~*7gvhO{E?4(JAN_7P!DNu^_QCE76YfGeo}h$ z>>8+OW0zVdB!MIUpQE7{X9|-NT|0k3eVTwedIjPBU-|sU$zwLh+-X*@`608lZasYkb3s?7 zub-V1IiC3~gjL`4=t=Ra?NvF4iqil6w=3vxmA=diNwKYH*qD6sFaH1X?#9&?Vb95h zB6!_;Hw(`@Cgy|P^Q8@weuUf;?|MdzTh!6PsWs3OnG!vB4B2M{FP0K6 zc&55-;|2?E%7pu7gK?|={bkqU%Zjk-UA7l-&Xg@XlJvvq-yO324&$s{{=3CG`+60N zfj?t;|H{Ra?$b?L;qTNB)^X+)7d71fFl(*RKUYoC{`$V^5*E#We|A|8 z^|le&8+P#zYG@^Rd7IE<*{*dZ-%fzKKs_1{~z}$L-%QghZ1BPH9Q&?y^qjBx*fBl_~*JD_aeaZ(W`A2 z!Kf{*?veOmBtG@p^yfVl8BLa$k3W2UUo1Suwu*l(*{ecS?4PWWd4-)_a~G!hp&~`B z@R1MQ+(D~fb96*AnFXU)TN21DC?DH8F#SAwcsZLNIN+h^X?AqV=pQo9*zn88O7vsf z{9mpX^F6LM&2SusVyNXo^Kws|LYsZNRRct$OC{~_n*;R|F7q# zxfDBiVQT$x!Sg$s_utR&Rvhjmz`DK%qd6sd&yzz-NAF~_?hnkb;(BzC)|GOYH6Q-< z1a)xD$N!IOTHu=J{;$_WzWdYk(Q97&4^4J?H#5^w2PxU@1DSSM=6gk%(Z}Sy1Pe#J z0`pAB&5dg(E8|xhm3yt~)abYMmR`zC-pFe0$Zv1&W#?xI@5*_}u^D=5klXAht1~)F z7@c5(D>{LtQTr~?KR!Oo5|p=b>jpHqD&78j-6emR5*<+L=rsDVkM0%u`J~v0jya-t zxVAqz_Q)1a@#uSu^DqB-?#vQR+NAz@IfwuIJ><~;ytCxn56rhQK$E9$^WfVUU|0Ay z55A271&43*;M*8{n+G%k-{!%$F%V3HZ+qgmwIG-X-(uspJ@MO~`2WqG`1kM(FYlJ+ UrY_S==sWGu*sFf;r$eXy2Uu%?eEGyKF{+yuj|=?H&vA>4l^BwAc*4X z6@^<61pl}{>EHqI*Pjs6Fti7Pt}0yAbd8%GbbA@^6u+>sFcf+1_PCqr!ONVfmku1` zJ+wz8>1}9^bue2bHH&WQ@vqrY6M`}-`q^s3T)w#;^V5F4L0p&Q(`cIL_4?Wrj8FX` z?0fa#q01b!(HYH}bu|cADP`RtY54?$m2CHFLRRyVm!%is$$L+|N@|)kFpgixpSK>) zfzkXrYMHqqvYlUi$PU2+-99)j?v?-bBLrP}4pHy^a_oOiczk=akviO%?w?pAyuKbrPe}TfkTq*x+CjOPy|7I4uq3|zP{>zoy!SF9v z{>zoWVBue`l-~u&|9|pI3-Y0!Y~>rwB1y&O+qb@{v==D`)^Qv_Rs;9>SZx6cB1{+6OtFH>xi?0_vM${B=y zNh@0o+@HT3Sv|%|PC8ls4#}81CY)5kTjQl-t&bRber~8nAHjcm^T+32#7|AeSKG#2 zJCkJbDtt}b?A&GY23)#I$OnV0bAxDcF-77u?;Z~Lzd`a+r(p}vqE7Po5xb_|82o72 z3w3@vk?M1{Ej?vhrP-qvmrdGcNasQpDtqO@c*QJraJks_qN~DYH;FfJ{>)6Ht7+Mz zFD49|-59sew0;b`gh>?ZwfiR;x3pCPWN*ix8_XN<;J7dNHdw$ve7x!?=}e!JOVB|G zYWH)@d>c?{soXRhLlZrJokrNDZXEydXR%#Yxx}#D_DzeJ;Nkh9s3no@+uq`UXO*Wg=+epYknBJSjFOV#o99#U?A2ug zHeQyBEYjW2mn46kdy;f+%2I_>D0zlTh}8kAPmYMH%roQfbQo~C!*RPe#avzTnGwmBkk^`G%w8hoP+LUW&7PHdm~ znHJg$K|f5vqzbz<<0pI0^dsB_2Fkf@49oaS*rgJ72HLj|etzwpp27kV!dey<`y#jv z0Wjg{-9b4xAmI^FhknXY$5 zm;0U@Oti2JlG1t??18pz+X>aVX!!j{1Y9@TFJh}7(3(7on!bT!reX_YX6S0D*z&hG zguQz(pB^NG+?Dn}ZWZgPthcrgTisYm=R&Nc4KPAck>pY8>bjo#`uuyN^o=?S3T*T# zK8!yKxx1>8$M$f5$zopoa0C^aXXK=~Jg*-;MVOM=Fd2VR;YzsTwG*q87GypU1TikZ zou$JWNXXg%jOz3{!#Qr#%aUkRBgPaHyR-un{v>Dqf^W;lN}%%n8(}mumF5+QF?=At zJ~;z}?spm6*??g;NE`6UC52WtQO@}q;~Sc{>CROzE%X}&h70MkRfZ*ga$y0_1qW*a zX|6<<^Kye0^fj2#iQ<2BZhcN4$NLZGgcHpN(=7xe?G3k~3fe0V)>Tf}>r<`kqrUnR zeZ|+)H&pz?>RUmyx(|Qw^xuxwT6P*Zt~QCk=JoYC8&gfX!_h<0rDj$Gg#O!hMQ?<6 zqGi#Nbk~3jNDuUDaqC+*7`x;;w_f-)mU&HOx#G)nB!u=s@Zp0d0h?qMvT7s_-*{VF zAu+2hdR}{8hWZ>>*H?AQ4!_nF5+KDjtCo|Z;(&paX}$HiS>Ow?a?l+L#{-&rdT<~u<4Ae*@1xCSQ1$D6&t^y zE=3;=7ea>xHp81G90?G}pg@E&PC9Z2fn1kJW2khpDHViq-R{fCp6K~-anXjj<1?c} zE3vy%Wg8C%fJM}h2caF`BU;>%m*tSYK|xO0qzoo?ec$e8fz16$XKH8h2HC02y)LW1 zuRteK1G5T#_G_fwyZkd~Ylw6_5`$6I#~Jgdq0HzD#t4&#!$Z;YR0);=NW%h7HjjIH zHFeu(a**$p2drZ7TGUf#z-0_SX&5~x=K%ArxR5@5|8)4oub_s0k}&m87=U1c7B}?t zPTv5aGp}DQ4E~&qxwZ@H^4?@VU;zqpCx^wyRTAmyJe*OEMEkA$GPmzPb*ik?c9#?Z zKb=G3S-@)8p%72FHh^C54B)=0|Se zxMN~Q!@z{rti;xl6F?k+qdnmu{PLz%UXw|#cc<%5d@Yvj+&Tw#N$Apy@f^W-jq=yh zYmq3WuS&Jy(tvQu>6!~RrgTT1-B@VtFA%lStKgkxW_H-wc{!KiFe!S#;J84)l&%)^ zdEbUvh1@_pb)rE5ulM5S_1);}IR$e{-#cc(3*z(0^`ObYa*@uhplSd46UmKj`{4d}GSwAJMy@uubatQkkqzL%C)e*S?D5XAm3~Sr(yaPT^ zAN?KpIvNM@hhakeM$8$1VLEi^7z{q;%-<@_rA55#L+1PWI=2#NxiNY4 za;!*Cx4*#0V6QxgRP91Ps^C1;Xletg+olyp?;TtQs=$<9aF*U-)aPRG^gj}p}XC)!ur+3O`8Ly?xJX@<=bx7Dlz*VSVaoIh}mmM5-6m^mb>Gh*;Ob&CiCCEzn z;bs%2y!E!QuZthu;U6mI-dU-3VbVy^w|~nK^1(()tS;iRxwGjwEA^N5X@5*Qm!9G+ zVCfq

k3#SJF3VRaESnf}HGz*T1MYyD@K1zoX+`c_4m74Wu0JdfHB>{slj+Yfkz1 ziMu2X(U1_85d8lIel|%<^{DUtyn)FOh?KEfZ!oLk=j*MnYd7E$J$F)AE@{3Jl!B+P-$9$z*=|>6y3ek zHTPGVFcJ!HX?gOS>OA#vcA~=O1E1dVfaGhb_elR}Uevn)-wdW*IaS3755Z!hZKg+* zEk^cCE*mU;u<7Zq3ylp1D!mc~cQ_b}n9hKs)aa%dwQ3|v4@SGHoKK#MvRIHzO z#P6aO94bkyS-Bwlvif`W#jchY8lkeQeW13(dpM|RXsX>;g47V}opx(uQOcQ`L1rzl z8eEVYgBR?7gl?@S1_cGZ&CLy4Utf=VwHGqCe~`xpD<$D{+l3oA50I-NbvGS1XIi9o zcUIi(h8{MksAeV)DVyLn9$og`k9o9wA|W_I#-mYgt5dF_!fD1BzxX{G(MB$Z|Ik}# zt~NW2l(PXRvM}s}1fs#}@oxmXn1&JQX9rkmy?>_Sw-a#am}Y>SXCFiR#p;d0g|H@e zgfw9TL0rHV=XnWma`N)=VMadqb`)Eob!t4_ZX`%cTuVa}l@;II42YLyQ)Miq@y(vods9x46;egvjd)%9w03Q_H=k=BOqlkT z8#>p(==f6goVBeK234`zXJxdqHQEr2YP$j@DLxCp$EtG~cX-?fGv!_2lRu-hMlE|IT%pz=P;hS)|-|I$e_?nb)%?}Y?Mm6S$R{fg{LM)l6o$cHn15b0c z)~5KQky=-D<&e|*hBCX?dDR5zwFq#X3x6oTSd zF&nr*I4Ail)x-m}_hVIiS85d<-zz^-#0)m>GFr-cHlU)S;#|!+lg1EjFCmD`r}UR# z_$#qTJW%$u#CGN{{K(uLjCBx19S{&ORPBM}9p6|(A=uJxO@%CMVVj6-(ynK<@(kmf zq@hXb1DXJ-^D;wcP|SZ$5ll54HV1=>VfM2dM_6rZYG^JLzL(rnPY^jsIpP`$g;&kj z@w^R{k!HxU*^C`3ayjRBG-N>~_Qd5%=g*GFsrDDJhSOS*dcAOVd+#KD0WeNOW4F?+ zok*zA^ zFFUdHd>ifuE1aaZRsa;Yxf=1)n@o3QW+08KTFH@zgpA{4JGxp1H{gI_Ct}%+R?PRxL#|%1;;q0{b2)6{*rlAC@QItco8;Sz zRP>e_f!7pH@?{pc(SN63E)vvW%pzg`#{nufmZmV)jflz`uZ_k$#MaE~v-dtu$@L=< zh@&UYa>RJ?pM*98VTn8gj7%y6*MCanwd`L`Ub_f#54?H+)SIG^n_~e1lVFo<<`Gwr z$v1hbrtbsj%zyZ;;B8)Bcw=K@C!)p`Ym8-ws{8<4Gz1~b1RXX@K{Edu+p>m55N)b= zXzW6YD*WnF#oM+13u;<>2MzP1fO8x?C46XTJz;BLy?3^kVHk3Bi3n=QXu8>j#TdFsm^%FUIyE zuG3(1R8UP5(^^eHDOLR_iAZhokDvU%jIv{sKwcKoTJ*5~dPIZ3*MH zst6>QwG$$ySAua2hOYM>4wMOJWn}?DVZy$lBaI*NEngt>DY5*`O%>`fEOSr;N!p!< za(^Xh^2#GzK5zDId{UPEnYA!8Gox1}KzG=VxP?muG`{G|9zcX9-@9vRHEIJK4<}h2 zzf!n?a$p}tZW3*`w}4L}@C8^kfx7YDT8}5x0Hk7d8R!_@5-1%whBk09P*8w3hE4TK z&j9dR^&Az6Ak_=GYG)Td4^q8cIr>6+{@@J5Z?QYsYf=i9rnddD%*JeCM~+@89)@GN z^^Wk-&)kWgUn*fq=lwGxQNhg2?44n?cC^Mg_~*ihT5`bM}+Fz-&{8N`1Fvl$Leg^Y(dNDH}k|$35W4|lW>`yzKA_Z zvqQ3u+lpjL_rEBTFhG~A`e2sBJ%4avzoERvPOHSwMMg%_(BwNzw7r%?c#|I2nMgR# z#LTScb_RN>ond@({)8T_5sSD;(6dYFF5}kUm`Vi1}KSV1`=Qr`&M7*+7HdD~d+&cG1M9u5ea8!|F{r0R*u;!9S$J#hn< zy~-8x+r?<=Hl+)`*Ad@oV+-qSkH(xz?4lCRZ+liehPtf|3s zY|+9Jf-{}JT%m~IgfQ-sxz-&*ul)w6@JWMky5#B9{B*J}le2ScGrkgIawMuL%%o{I zS{|*!(PAO)?vxvnXCQi#(En`0titx8V1t2`SmQsOHpm>f^MC+lOG1fkRN65l}m5n^uo8Zny=$0{Zi}C=q4)e{ zR**65{MzI((mV?xd9SjSj%F-Y51XBSSt{}p@Y-EzJXP&p&vou}Q*TZ6xj}a6ZfZoe zsUmDD?$kY?A|TYj!+&?P^WFzL&jrRZ2nJiP{IwqKl4L%xoeOeLllhleJ50lbd4(-+ z?Bf3GJpr&eqZHxcZo2zZeq9eaV*~zodBu@ zsTm7yQT62Wn|D|SOS!~^)*d``wKrt>hT-~3x(A2ZUU^^;$Nee~WwO%72RGbU*qlvc z#b!3BH4!2*ezKB3e|z2B^8zPl1&*013b}Ajc)q%{adlWI)SN+%4TavaI-elf(R_q- zM<4NP@P>^Q0bpHo&dIoHW8g#dyxMuu23BDCdCiFXQx%c9S|5*$$5^8`$Fd3UZt^si zr{sk>C>ycX<$2m}{%m2ljo&T`*T#}y#A_7l~ekLIVITr6X=G%EqM1o zFFTU!YOaZ!>>pj4h}tR$v4Y^kr%(|dNA`>+e?6;-)o3s%(&q1M{F1cn@>B3 z3MYCAP;gIU$}1287$(xiBM)KYu02a|a!3HK8bpxqKyRh#?ah(3D3J8D%Q`NIpKq(4 z&7x1Vz4Nos;)1$Sqax|@+HbI%mDD}(=tH?3v0GbVp)C>=r)CG)&rJvgPlT}m87{wJ zHx)vq{6?o^bSZQRq0=b(>r&E&pRLf;tT!l5F>(G9a08bX@VfGzgQxdepM?dC4f0aA zc<3;HPO)2J*9cMK4f6s>J`Crtk;9(TO)XI`_eLB@*VMh-%_@eyMom49JAUFztt;V? z6XK-CVmoV*77(sF|+#nL#RShID zbpoh@8U#BTL^m)gsD3iRh z<~z6rUq3PkMj5%T50B!%dztBP_kzV)@0Euj`~T+XC)4?qj#{G!s6pW9dCp@H+u`d) zy6FD`cN3w9!Fs@8yG%0J+6e|CTfPFaQWdt!4>z{{6v-uB4E==JZRFkmvisYGk22Z0 zElVLxgHegm#5x{P@kl!w(mOvV-@^ex=G`0q@wCHbpthpd{j*7xkbm2Qic|w#TkHTE z(2*so4SyvVbuDeYw`jzuxoq2c_ypGldCMluRpx6zc~lVlhWr(2bd- z^xTmnKC7a!L7U(fj4I7BU{PMR5&E^v976Dm4;8$q_GsklP))C1Dt4$51H_QS$<_i2DSpmYruuz|Ss)3;lm}PaJWc4+Fpy&e{|PJozLO_v&z> zjNK3Us-FuTo#(mcCFns5t7H0eUf4K7bSzq1{k zM!BrCkt9*MIl78p{`0uqNb2x~{m(OknzPDG`^fb?Ydl&OjEOC=&1Ilc298f~8OZ0x z0jJC`@^saZnKs6kQv}c^(RwFeaNYnZF<}NA7=6#NL}jONSpnJM3q*f2{cRiJr7wKx zxr+I?i@*ijX&|5k4Fmv!7Pj*j;)5iqZ!yYWgE}(qrfp9M~UHI=UVegakwI;RF1_y^!PGeOcL~QW{nmR2%Ex z?IBWe#9VB;B39R1hqs||*b}*fVFhrAIo?E5vYr@@l|19;nA7G+Y<c(B`C@`a+AXFH+YtO5|Q{e$CwvVr=)-c}#(eGLlo1r^JE;R=do z6ZDCB2z$ew*Uq^JU;Oy!%#bLc8y0QK*{CVPqsx~EN*r%{63bz_sbyB@p-UO>3opTM zPS&tuzb+6`c3!#%2C_*GSrXlVI)~cr7No#*cusGn-2FBqdK9Y!T#y`kyVRr-&bAK) zmaB1C`q&p0Z!131tQEQJl?NsI|6P0;QOR_hct@WoDlXc1Zi#(|DwB#~HQARRBP)a1 z01^6D7DggjI}zD(3%5v5PB<;*5^#UGwkorQ|nZpgQh~H|yfA-%2QBuR2k8?VlN6bv~jiONOG5?{t zYf+0%>ULw=IoW~HC10t8;5p{$9a#8v2UDORvF*!O?Nrf%AQP6>Wfup{NlukGP|5Zw z{GJ?$pf_+|u?10%K>Ts3m4Y;BtbXvoSwTg|xUDQ^x2?r(_L(&neSOD!8F|RKHLq5L ze~0Y~>@8Z{B>)SU?tJRw(K%Mq=e=&}%e);MKDg2p_P4H#+HdDal7)pQtpSwQn0-c# znr^+>oi`ZKIPM{YXXEhWKw=ETwhE$j0XTi{`4eOu{{WB{XKgaHl!^ALA%ICM+U8jc zJ~AH&I`qFwLL={HddzR?OHZxSCoZ^;PxUTs_U$~l57xEv#)5O*TyRFxxI70E<%Pfq ztTx!72roBt(9iMd%UhR0mIl>G0a>GsdY9b=+kQ5jqQJOP;nci}F555V($qvR7(Pd0 z9-k^rP3N!|Xz!wi31!@T0E6~s#ZH*R&4f93H}P0u`yZdso;|={ryrjAR%qTDCsEii z5iYxK0nEp$Za1jt;(ssX@WL%j@(DxEU&xcMqr3%ViCcL{hA%3iJ4yuhu`TukgEb7; zd&uuNNtgM}iUpa~UK3k0ddON6RLF&G*Hg>NlyRWvfK>+ACW67I@@8Rgb?ni%O1YuY z!p4XuO!S%@|L}HmU6Kl{CyUg#n@c>)oo|5h1Q1uBd*-lHz^B`m+46Vd&RJetmLe7- zJX{s(3xmDsxWia@eo=ms0O=kVeJeDZTrzqZrBIA<^7LtvP1uf8*g1GuagELWQO*%q<)O2_Z@6Hz@-KN%?6H9vG)(mLf>;wx7z zuxour-rPWr?Zz`0V9^thkT#^N#2PMr>&-XOI|>0K4im_o@X3J*GV2072sb2^J;1;J zyBMeUf{OH>T?%mrz{sBXPL2g7xUSAfzAZ1U;W}~B@sNe>;=j@|DE<>7G2Ek=;8#r% z{YG$^HfQb$b|GNsvLI0M=avxE6x^HiIuLxw14g*1^^a~OH~S4fELO1v18xJwup{JX9JIwWz$cSm;=!C9S;2;)uApH!1BmMdoqIs`zm7wf{;(+E;9O4hw&%wMJy@Wfj%aAy|2~7?I&c% zs)5$p7+vqpf0Mhr%i&bwc?4{@xPj{W%Zpn;@jS2y>3@|QqMShLE+|rjag9f-Xftuj z3b8h~6Kl6%9{lv-?+y$fjx8Yi$h2|GcevXrNg!)_NJ`0Y;{|;pdSRGR?-k+Q&Xeh2 zCTmOnpCu0;v6%vwA(qJQL0!+9afacb@kYO$NFqJ{!gWh`TnOBh*|NUe?1-EIeNjI^ zQ)ZyG6mVeV^|aLQ98Vc?a|lMM^{@wpE+Kc4MtNQ`ACOOcfWtUjgFluXot~4k{5cu6GYLXfz zV(F!snkeT5hdChl;DGzLeZ=1;-wcqzSOQLbp{@?NGCsu&{nBC52a1n*xgUrD8JdiP?IrO|daQ6UgPCtjEiVv@xG6ZkXst6U7X_ zZC38CIV@ORS^sBy^;KpZLt-FLQCwu++8TN%4ZA{uhyAcZFV|>PE>-4X#{05Zw#p^ z=O>R5S&X)pHn=u7wpG9<7+w~Y;jT!w1mQD+^BppsTP-V1#ywBWuw8r}aHx8;1F?HT z0#5hk;LQ2Xdg1O{!}t&o@K4vsab~q_Ec19ikyOxaw+UHW(o5F3jRwKGg|=08&@kBz zHCSu24%JR);pe*ovAGW9|5s;0Uqse?HKt(3#s<6gdHr%eR<34ut4xD+llNa;ed9a& z7^GxZ(7$@R;qJd}S4h6{-1xehBH$Gg!LtSU(XQ+eS}Ke%j#qxQ1bW&HeBz?m6O3Y3?P{tplDS!P5rPl-N*HG(u zAoT*sc@oCpooX0bPS8;A&M^mcxHVmAH~NXNGkc^4`t~>f&8;8hV%+2EAn7v2mO`AR z6_B-+cH{5a`Y8nuzn0iEpwVcfHlS;+F72I?iN2AJS|f}c3%q(d!t`46l3sA}c-+!_bt1>< z$5n;mG^9iQ@`nTRoSdANbX7k@s)kdz(o1b@G^!8Yz54M~mE(`|A@so}bu={UzCAX0 zIv!2gNLjhcF=mTk`}o(OIJ$c<9S+RiN4>{Kf%8KMEa(16*V}%y0}HemN^Hvj?xEW^O`oxDi>-f`-dG`61h zikg~oo?-PP{NlYUX}3UB9B7FWQm%BKJL`#GWXj72Bq(?pFd22coKfme0S5B1A3t=$K9vWq896E z)gTBoMFoNR+Xu0E%nDZ#2^%*vHOnwzQtj0qE-W(cMSV+h%k7t4M+3PZegC+>3fssm z77jvT;rXjq2iV!!6%-Y}=T^=?QTU0<4=b7Fv{2F2Wdgl#jPDF8>E#G`t^-F;K-Gpu z*%E;PpCn@3-A7^{%XEnU(Vp&J-0?JnDz3JV?=z*U5(rTB+2{E;*PdyvZ+;A0c++;( z=^x`JgOal^-yA%~${PCgDH)K+KgPyR^6(s_58l6zoU%UGpt8AZ$YY^e2kGrqJZ{_b zjuA}WJ{K34;D2Zp;^?(-z)h;&3XLk1C)2C16>8yy#>u4iH1L$tRuJ+rSfGdg< z@+2ieOOG;}Tk1!12?+`OVjWd{jDNse*|O3*WHpoh6yAr$W2e=A{4g2FyQvTf?p7|p{&#@ zr)dq{r%r+XyKX^;V>BpSZH_UpJD zg!e$99uhzV?H-kP_i;pipPvu&XLEnMyxzm*gi4e%N_Xx^RxER0u`C`(f{3u2hEdwbdHS$2*A~YW+qpr{BSN` zz&Z=nGi8T*<@MT&hs}>DS_-i3TdZcTd{l?p?REX4*LFWkQUAbFk?8DwV3ipd$l2Kw zzs`X5dR1dsZhwmGqC9AB0Zn&;plTx29is=TMqk8-$sl+LSFc_zZtlz0&J#g{a(8C8 zC$Z%2hrOT;lCjzY*I11k(whs93J72^zZA^FKi7GjO(augMXIy#>;oK4YNQ2g99Sf# z%96U%AI~NI93%?P>4kp`nXY~j^xN9K6?q7yij0nqUNd42Z4^=73`!0-&ZpJoIuCG| z^YrNh&|-%&d$(&s>;Xy^opnheAu98>xXhKf(reeQeKbOBJ)_}Ly8GeDei(=5oa@ih z&~%4{$Fd~i=7PvmVtX}h3j$m>y4?5!)O?;L)`9)<;m5V(lHu;jUni0qLTG2AF8m!Q z9i{iaZk_}{Jv9S1ghlac|CtA%Eei7CQVtvW`0Pk=%ynuq(D;+I><)VT-d`BG&@|Q( zwGT2jHU=p4s1gNeqhyBWN4QCfU*EuHl)nCx53$bQ<+xG#YvBO_amjTC;U7ti5w)75 zd{H;~AJo)zK%V#1i!1Hr4ijHz@OanCFM|L`9jCtThZe!gbh+1*Sod>YxKOs-H`GKN zS_Vz49OB{((Bf<%O45{qle0jT^B{?|YOJV}t2MMbq&gTg3eGotWk)9kq?U}U$ z6ik}qpvz#eIH8ae(1%{h!#&VZX0fAya47Hi2Lu2MGq*mmZXJV3i06pX+_DbtdD!US zkHL&h#*aPlj4z zNlVqf14n(3NIB^4L|c4uf*SQx5elD;)j8j94|7+lBG*6%3r7$qbhqoRI;9?XbDNu2 zPT^Cvxi{@SjL3Kf9x@e<+l#nw0GS#rHH8S^}oHe zLYK}beO908Fo3(SYE)HJ6jfEj494e%k%%cPkMmH86`Jz#8k*bhio+RdSi6p}Zh2W}37tQI z#S<`i?6gzU0f1XsPqlCUK|-?$zhk1K2x8vfL(=5qfm)?cgM+Mv<|sfZWTpiO!oh() z2#^KbttNsw&qN_+-S-qU_-I*G@7Z_YWsR)er~-uskxNi8w-s&&4{l?d=Ns+p%~|IOYR6dp%dU^b^3#DN0re(r(9K ziQ&T>>esy{(_8MqT|*>z@EcUnosP&A<_$609**)V#)(%w#g&&6rD!M6(!ydd|xf&DSm(%m& z{w|rB#UQau8LIJ5uBAP>mC0W%Zu*IO6AUs99dTNP7tL>;uX9sJM<=IP(rH?=f_WIc zp5=@61Az*+?kj%)y+_}}ll>Vc*7;ka@wPeV-LiPX_F^n*j> z)Hx!1c%Si&-p-UaSJDz5PW^4eXeQ?GdH>?8WpTS@aT;1cw}@xS6Le00LZR|jBn9+J z_`SS9kBKe{UE}3JMn?A15I6gcHcHUoQmM`0^XTY1-(OS7;vsm!1_lP+8#f$=Rqp-5 za^0Eq)YO+XHbYfzp#`N6Iu8Jl`RGT%eAZ$7#vi9o_gJuTCa(k3+>0cv^HsPk7(P(3 zu;5AXGLe1$;=s}<4pd?)>j~Zh6rDIW#oVF0#bE1yVtisd6L8v5YeKso%S+SO&aGb^4l`2ukOqLG*PBWN6*6R~x4bex)5US8Hk zxy*ph;pg%3p_TI$*+7eoG-9hk5JA+;%)x*bH9ZUfW(+xk1Ov0VwuE2qRQoJQgONd+q-H)64EMbcgqQdU}q`%mhDq^2Bli z`T5Hi3Y6>yKiI0iAf)brg-lZkQczg^G5&pjUeXm;{DHbbDd^e)1bzZZ7&K4xm`ktd z2zj@-NHF5^g`Q=3`W6^!kOhA`n4-Eb;v#wBMJnHt6G}NuF`G9mjyNQJM%9}Wqi>Hd zAyquLIHHAVU*U#$95yb&84BCSsj4ST1WNEp%Qqv_4etO8bm`ZL)4r5_m)Nuc$L}6t zfU%!sWSB>D`KTpGKPW8+p`yDk$;X$i<#6?nW7|?;rYGlu>td3MNvM*^)Qqgxx~7M< zI^B!J#PIg^n~=Pwre+QkWPA9?k-7r2ma`^}M_Xe=j{u&@UWrraI(TSr)n2X4!S;UYnMIhld?;ly8gDodS;8d0CdExAPvjG%-)D#a6NACgCo zCloUYEwhJwIUVq@ZOfz9wuZKjNzx|hG?>x7cQp(4fdf9M28X6O)T*W`7u zMjeo+q6+_tcCW6{a%gC1h%6tfbjee}fNjSrzywXUx(FPD8+?wN?YAZHygl z7_*cE6l9Mq1^-y5Cby-TySlM}6zb$T0)YqBgRZ*ffg^_wWj@N$Hgww`7#L_a?*w}B zKZf7?ntByrquG4u3E{n$f^*ym1pd~v<8u%RYu11{3Po{)7cLV!^IWsfU zY<>k0sZiD8rSd+1cJHzQnm&+eG=hRi%RozOYyCNtw1&+l%qK9xmNT%khnEg}SL)9p z2utkXiQH9!Q80ai+8dzp`(sm6Mr$=l2VPnkYGrEbl-rw?V*!iTf-h=L9z2E@ ze-PT)Ws|{l&vaEvIgeCw$`^&AvRwe5^tYD<5^* zY@(G<`1=I@iG8uJp4;~ldBtcCZ3l{8=lp{ZHEkBZc)G5!)LrjZGE?`}%l&*AFXCO9 zB(6@}70xe@4hYa!%hi0d;X8(8FOQTArkLFY0l>}D51~IC=LgD{i$C0zzjW!z;CPAo zzL6XXNf3z_oTgu@VERgJjm9O##Y_9XAfV>+ri1Ht-(vLzmEli)-drXJ)JcBt-n}uV zFv4Jfb0_@e89+=CT&{lkt$TBDx^>@Q3F@tKb0|L`pLQ!y*rf3#Gt#0X*&YWXocEpA z`cy{CpcSC3@;>knhnXQM$H|+yCCLY_j5N}q00Q$m~Y z=|w2@)`Msd;=ZC5* z^;x0ig<c?=axxV5tCdkXv6ATd(D&8y# zDJdyw>1=%B3V&IN1~oJL;>ayzJCKj|#R&<=7mUR%+Btx|kk?ub$49;&2~BJnUX zIy%t0zvSepQ~LpK_^WD{9QtJO4$sp%I%@o5Vj`*>w~%6L%ge*VgI2iHq3T8-oHh^# z@jk3QAARF^k5<=aCVHl&o3QbEB(_M`x?Hzd*Wg}`Qpy=^y>Ey-kj%v*kUy7}T0~8> zy7=|thlNr)bnfNw1dYv4IZFC(df#3)AMe5B603)hR>UpyrSu@#+#qjc>wSl3#Xzxr z#2)X~N|i(!ojP@D%rZDQnD5=~>~1k)^cjABeuqu`7yZ&(YtNFlSTRW*j3=)&6V^nu z+fnyv9v{2BMt*!NT3D~%zWDU@HA(1fbPIYq%9!N;&$O&t9RCyt7cZpF_BZIrBTOpVcsyD)F{(l z-&~ME%In@b>ON(%trmu(|d%#g&|b>8U}b z^SAT!;LA>n?yN|aVqklcQ?k^8j%&V$lbOxTwpHpgDX#)Q<)_+#+2=3p9=9yC23 zV%0lsJ>3zl)yXNm*dK|#lukV>OejU*Nod@4lo}wevQs||3a=2KDu#_d_l*Z<&2PSUsO$bX zki*!U*xKm!mtIL;50Qez>`U2*M<8ysgrb?v()p_NTbY*9s2m9a`XgcNayFf1fZ1O? zAkZq(AP8&bp(16K#KM06Y8R+ThyQ}x&p%e@2U`xvCLiE^e@Cw<(1TiFJ?zQXmb~db zqIZR3Z@zS*SUVGS^LawR$0CIv8HSfG>T)i}1i8o;`9HpQQRl*YZcgcelWY<`tpOyw#1kiASQWu-Zn0gkrNAp8$qIVQ&ZEl zvkVCQm*qqGCgfkgezkmg^6c67%T6j2Z$AOA1`EDgVL;~%_one)xNt&PSonC4Ww9>! znl1HfIj^KxWPrXhugm4^J-C#?_g4=FWZ{W3F~<~-{L~QQT3Vp}ROWj0j`pbfYwzRq z4r`cnR>jjai@HrZty6USGC2l56(hLM8q-nhYz>AVF1|lou8+0r79ATdqS%ZrxmZem zpG$mAT96&j8bw9;5WfdFZuh@bP+WF>n0GDF>gPEcVw1?<92d@Ya%PCRT+gNF`i&b3 z_uhE91ORJ~*UQU_*2rmXV}PE4=3gBk|fB0AlB0iAJgSe#fxT^8qiiymm?pigr)-FoXuE#)ZPN0qpjYB)w*Zn!xW&AIgR zs;R!TUn?@4Yw7EuNzoF~%TkwUBgtz5X9B%XJ~m^2edE1n`H4RnjL1#xV<*nVet9k8 zc5F0noMWC)3Y^EjvYwYXP$q2czW%5?nLRFs-NQTLv>fec?h>vwyjW_&AXUUgbN`pc;*z|3jh1H)AfD+x zLp8K8+*>oI`6FDGqU=mooLU~*WPN!G?=+|j)pn z_&8_)cr-4R?8hIcMwT1LsQUY&Vc_5j5U^k6KfrzvU=h@!J zcM9)+Z)FsFNiF(^?7c4?OW&i~tC}9kQ(H=_0lX5NC(s}kwu;->l$kLzp|%+JH`PdM z<)8OwmS30H3zT@jKha5F^TgY_f>ZL3W3p_9JiO{$XQU`LgyL$07>50GYfBn!I*gT^ zM<1ASCn#;Qw{S%AQFoMxCsz!Gy%oGX!boixOGN`5TSlLd(N0jP9nOe(>3jT%jRpAyvHHYBsyfeo`&2zu<6mlxm-_3@AyM!AoP)n|du# zuk|#G{?eDSA;0LZO_Kws%Qn)2YlPL46Ldyr)bXmX>BbiW)pCn zQrM$y)&~EFtnUEFdj0<=dt~obQHY3SZ=NI>8Ksb2$;{rHj6zNc*<@#xnLR?Xh3vg$ zWbgm`qjS!;^ZP$n=c=o7>3N>}bC37?weFB_2c7|66F=Fy06u$rUn!b6ND&}!zn^2t z=i83ke*UomqI&Oc8C$tBe%6G*(gA-?elJ5M#iCP;l*kqE#8Ld_N`3AV_#lL37 zS5dEtFaV^$-9*qRd7P{YYV&Sd3Ms|@O7w9E-72=l8s(aHR+mTDx7yEK4j6pD=Yw24Mmy` zx8vB5Btzvn7gFJV?(>&CsDG(l6=rtX3SxfwI3-)1gtS-tnm^9IqT7gR+t;nziRyF0 zm;Wqt!tJ3Gd2cy#M2rR%*iwGcwQJWvXJARlBt|3dy6yKjb#c8P@Tg8eBP#Z0W1N<9 zN)RX>&FhOH=rzQk&GZN2O*W`9DW}v9f^ITvmmbakLRQ9%Q1E0T5L1;hC>lU~BHOQB?!X1U zQ9@wWUor@j!H)JYWDcP?{qV>W@3525(&G8cc)xi=K|x75z`K6d=lnQ$&vDRVMeOl` z5G^>MLuoYOo-xFhe5q@s=Pxs(o|A-po9!MM9f>v3E3<=)k}Kx2EHe2vQpA3rIW4kO z*xBoT#05MPsP3%&%D}c{BleNIX{tuhD%rV1v`b_~+OKKb=ltQPjimG8=WDLE7URjL z7zofMe*GqO%Y*d_)hFM-G?h~~?e^b+_{868*J9qO-!7Z~;9eEciy+Y)K=c23sg58u zP8O6Wsd<8y!}Dt+!3ZaU=pvwnsgWfX*MJH-1|VR7It&BsB9=zV1+@xI(9w2*)MWTf zMOqfGhaw=1IwqH`Lcxo`&YH;Ug$g@`d21wk-2M!VM;&P_ow> z^ur9b#+?(ZmDQ8*Uma&Do))na8n5p;pO&%4#%gW(8Ot@Ir}%k^xF)|o!58xy$Z(W0 z1q!vqL;V=zbjNC_rw_Mjv=&YOQ$W;DdK=UO*J*2t5v&a@~ZYZR!XOc zb`K6%u3qh!SnBI5wVpylb9Q#VU+$3eqK70rMgILYy9zUr&mqo4YGpBPQ;IHJ?T1_Z z%DH;@vO$C1c#J7P)%7)Q$)uy{#Vit>l@lvC5$bzbx$;Aw`+fW8P$NlqpD9Vt;IxO> zES+qnavQj0m&GvZ#uv`v!>D{0&g5Ara!`f>bK6FHwVZUIN-woT$%Tu^<5Nvg(4V!3 zISX(Li`f7_H+=b0J2qB5d^Fn@gMo%DMe8ZK^yxj|jZ`%>Fac>wk9TRgY}WTYFYhWS zdzM(J{=1DSg`ugZTe?HDVqIq-` z=U#erZ4~JXa&Ck11X1g|BSQ2^Fy#0>dCXI*Q|ztsS?kIkD-!6qpK~w{V+x-SkMy)( zhT<^o^XSfpUZXLB?%eV3jWhpej}QeaPYU8YYSR-u@cm`b(bhIL>enXfZzqgdH!-52 z`POee1Rq`UgOw+X3ujh zX|DdNG;_{pJR&qW-14`2((~6Vzp~4hPmcSAcJX%--@JMDOX*Oud6r6-39oUFWvc`Q zv5}HPwV6KZ1?{^ELgRBJI*_y1*5fl=NGr~oSw-_RGU1fSnHCp^rY^SN{y4}NSELXmdjP$wj-IUbl1%=TE zf}SLDwW6a625s5J+(~|X;5w6RINrzzeXCCL*muF4D%x?V73Iat$Nsy1vI5R}o$YL! za<>Ah1f#>xK`gW=0Sh|N#UXTVYm8vW-UJ%-bQmW`tDX~6Q@$z^dkvRpKP>cSQ^&h+ zKbW4KHH7vmH&hnoz#PHZ>G(@*c>R$2j?@0&^|bTir1VrTzr@ev^*WUZY7(e%tR3Wg z?3O-ZE4`I<{4q~Zdu@2aX}H8f(q;>r?c#^Amm+6RyZ3Iqj8E!-U1W;~$jtcG%sZH4 zUSziUNacR>Lb64ILIS-#9mDRd(tjK9ED2<;fhb87MqW)#4Pm*(4%h0@ypV{KoRU!) zX=!w5zjZTuO(P%0in|KHx%?dGoEr&X$~F%|J=NJM?iUzhVM^CP0dEcQWtumcnMI)` zuEkijL>)}1n`a5qZwdXX4?vdD`*_j$al24H_A4}Oa>Vs<;RXV|dh8l09p{D$=7%q7 zcuJNxwwYg(iHr03aGUMU8|NIkn>R+yF*mKc>1&$f9Ov&hMYdFPM2{SLZ?kG`5F9}MZT+X4WX%@ zRHLkW;S|03H&XJG0^@77gMUuzyKi5e7HjZK6j^c7&3;^=;tRIzK@OS#Js#M#FGQ5z zH6wyG^hVdClX51B{Xj&~CC9g$jFexuva!v(2iUk-d@za zHBOWo6ajVc486eh)ci;|uvy}w8m&u+>sdxQ#ZQ^Kzg1+5`o^fheB ztd66_EWUUtCuTp6Syf)gsPgj`1y|?vqr{7n1YlJVoT9qE;2)`LUzTxSQ|z3OTNlE_Sf3+Q2Irlm@{ye^KmqC+hr5B z=w9Hp?;tf-wjK#z3W-yW!-*3)hm0J4FesWVH||R_`)l4I&p4C;q3I1M5>cvl`dR>h zv6S9mE3CH7>V1bXc0~$$kk@}yhtM4}fz(Uc`Yt&WC@U9*rKL&^o+J+)efq$(;Ha*w zcBYuig%0bfCPPA-H)~;FUAM%;i3^`B1WSKDjgG3A!|lFp2U^#=#q7jz&rp)2_j)w>v;Lk zN=ilK{EB&S06cfv#jNAxAyX6dZ%cV(sjz#q*e3}UlH6*HGkcLaYwYt&4@AnNxj&rI zqu&vkcji#!)*l<#79l+v6bPdLTRxk6!AUZh<{D81YDJbYPp{XWhb6iv&pf3}NbV6Y z2gyfRG&QnPnjy2Ap{2$C*|jW6RcP}B3jKxG*3Lc$Y1hSTWo`8%VihDbBSfP&7S;%H zZ(3Wv!+_GN_v&$YPUoY|o_l7YZYSv92QDis{P8hR#*)BkGAFxytrw(mto%#|IOp9y zx*|GrJrROiO~pbNqK)LS&_OY6sGLqCZy_{GgXW>EP-}D$npC52_e|s?wJJr@*ACPz z0|AZWq&31oFO=yJX$M;3+Gc%Vq$cxJHy*>$gsjPnAG^0uAu;FWdGs60@5N+&;!bE7 z;L47R`co;|>;bw&cz~f+PPW5agLF<#*C)A$uB6>b|kC=wkzfV2CDE(iN%j zVV;;E$NW)>@gB}>q;XyTIc2>TBN*;x6X4qekBJM=g|4Zjxtu=eOiAIO7yWNLeFVfK zKo22+LhAppJ@MDc{HV(wEVS3;X+2%Ob0L^&&hHansz$Km=aQzL0xpBw<&nSL7&e>N zH)r?vc-3cG9dbY8oo zoN-JbNw|6x!E1j}3bJr_JReN!Fi*7Tx|HsB!)9~8<;VYdbjQCRoy?1>6rSCnu=C+x zbNU{%vMxV3=HOn|nR{=%-QUkLlG{FzNUJSAx=P=zlw6x7_fWO`-nBN=Pu(kBwt`tJ3W z1;DHCo+@1*p15Z!yK!Iq;~8e1JzeZ^{T{m%o6(yhn9_zt?Z%x3L+L6k3%mE&E`37U zm;CoC)EUOb?m?pw@&32U!_F6>md1@WBIo&U0Md&A^s^I=pudLY5NQ_)ChUIWD~!1I z4)_Yc_|69>8^Jmgejuem_*rt-r}teCz2s@(?$B+(Clgbv6$~4>< z$*AX>1UF+}wH#N>*tqqT5HMMe0%Gy{M#E5g`&7;@X4F7UugO!;F>$u|2k5cGJhEV7 z3s;yRr^AZy#0|doS0X3(GaY$mX12dtMtG(({qNDI^gigfhC{ub07$ogU(-^j>s;hp z->f7Yd&h21n1AK!*~xGmEHO=o@mq^q$3&(pZS@D=<}uhYSng=GhHZuzrRv9em2t4n zoTlhYFCC|?dR_HX`uXpB?5&DE1Bs4z6u?w5zt_yUW;K|0Dz^Ta(DwY6-eiNuzi$kG z2(3rVLRqhYoAHq#KhA6U>{Ez3+}n1_uvLqD)l!9t)=_8?wDZ}~OULlYX)30VE#0uO z%BZ=Ao`F7ek@3Xcx}~JOFu6aLqrP z)5zv$^E_dor4AMO?+Tjwy@Fz+E`%W%E}C?{RwO7t=*Qv+EmU(~|23eJujZYHvt5%P zcqeAj{xP4fr~~$k_J=kw5UYxE;x>5?y<}!E5<1zNDVPL8$T87%y-8vJ^$}STfi{aV z_Dx{32L*>!gZQy`?<%8BZv0GF^&i9VeLVkk3BLigeDcYg6ODmG$D>Uq^Sxbb8hbjJ zhY3S0GHY92Ot|)%gBqSyiMZgQsf(_V!C^~zj>@}?a+sub+V!vDWG5rbv>4mI^~iGV zZ1q{Ds#^BeQv8(ACS$ZhYvh#7L@4VzzTbARoXc0Ypii%PG6aEbi0}CCMO+upl%&JcP26+FefQBVF z{X@LJn9CT*kzIF=Uc(DPCPJ~d4;mc(!|rF2+LirTuVQ%3H)o(wy~)3bWyij5eCPwN z9_LAk$5iZ}8V;0lBQhOr$^?9w>S}0LWk@dGTgpus3~4*3902H$+O>nIPGllQ{KtfjH_MvanaLak}taX*uq=JVLdt~pi!jhok)U8^wJPH9`8ivCBHxa?bd(rl-MvtrZ9c&0+%SPvILn| z@;QB}u>%3siw`#RBBdlhge>{L9gP?0ePU{llwZYZk41!NyUr$?c#E)6UcwqcAT`(% zW16x~x564D@1W*K%!AuOz56-0#T`jvMicN~>n_1ZAb+o+f8%6@rt4yBnoH$?k7ih0Lv^u|z383~#wi2fLVd(HojoGvn+AB*>hl1XRw{N_l6@AIQ4vy;cxsY;Ig)NqeFvi z>&Eu}ml3X2s=&Lo@7`0p+b#Uy1o%iS8$<_q&iDj9?&>Rc`S-={OY^f6A>*@*p!7wl z_SpxDQAGuse&svQ;2VF4o8N7o$JJW9ed*J#FjzPKebG@OTTrVNV@N-fOjJqD^}HbIe=I9{=5fvqVp;H6qFpBcabDlHW{` zk9qJ{baRDWw{VgvJ2=shO3lGT0`>r)kw4F|3#7gm6`~E__`Z2xKQ;X-MTxx>&@REY z-RFbN11}|K@h^!`{0vYj(6aqGtsHxJWcz>KQTz8hk^@2_8^4c9;@9#5MOt3%grymF zJX4|1&x7!@+Y9)_(cjbd8J|9gDxBl#zFj&*%a0Na#pFK?VQ6*CN^JGnXxO#nIm-;5@H> zUy^kbMrX1v*IrrSuDgV#&0&d^=F1?<|FWV2EO#)T2+)QnxX@n0dH_eyb7+KngrZ}} zpjYB)nSQphCKsf;1pBVW7!cq{H#a`J^5AL67vqLLe-&vx&=BhX`Q+`9)=wu9xRSu2 zpv<-CygaMasfx-utCx*BQvWblRwyb0>Q$8e3te@;<%XU+djYjjC-|TYdxQXc`W)s=MB9HA zX@1UYwIb7F%Nyos=YxcL(TgpnBenci7nXkAVoUvVtICRjCpLX1DJcmFsxN8+72yNM zogNj*URJ8`5yGf#Dw!d>60O&EZk*eBZuPfeOxVar_a$91+hra35!w{%+WGJ|l6&{t#M~D`W2$NVjnpvrDB>e43 z>kRb;aORA@z+$-Lk=69WaVH{H)saR$G1@@tD{sqBWe?X7HchlH6Ee<=^&o)IKm9t1eGw3ek zLCQ2>k307ZY+)}mj=LzSr95XS;Ov>8r9qb_Y3ZFmD`Kn{g!8_;+m&f0eqM0p?nTBC zpErE27lM#~sFh)Cb`3ditzUF2P+p)${2Hv~zJy(3^cHRWIA>yngG zou{-VEF#V{;z&rJn<^|oql#g8ZT=OUVgRrrA64VHgF8l-Nf-AQM1Cfo^U8nRIsHTi zc4w*=OZ1jyWz^wEP%%x0QddDWuf7r;mM+SSVR`+4@)4^nb1%AX@z3u|_=gPAf2`Q{ z(}FRJQMzWFP14)bm^1qk@RF0mZ+n&TAI1F9Jqi!U#fJoy6SJIlk6?vRjw6OPZ?rZX z{Mmy7@+67Bi2b{V&fTE>3b3Duz(rEwi1Xow^B+304keItXi>D*6$rUS5PLP*M>6tDE1hu@lJ|G~SIO zw4b}L&zx0O^?Fq5btpzoAC1Cyc10CCwSQ+9{2_VYAIb^tXX}$UbSj(*>Ygx)I(#TZ zzmw9X55QySOF0cLs4r7aRdK*rY@LT}wO zYn2oKrFNXV*~a(B6GMf>HT0r`71IMyvO(_ljjVg|LgwN;k^*ptP1`~67h2`U8W(o zG<^=gbLL0A{67!t1YlTbbR|wF%5zP9)C_-eAY+1f06->jk=bOm3RplVdW$m4T4eP{ zw>ka%2fGTyMMF+>KxfomolWR80iT0F$m^|Dq&(V}kA^e3jvk=0a8ccgtO@%yLdvBl5yMGi56+@9dibqL)=?p8Exi zFQJQ*%qGF`yGfHmo%yoI87uUx9BKw0G=g_T=}S=9$GTmjY0TRgl;J3Z1}=s#Dl<;QdAhTi1uB zJK6l}^i_zyQ~0v#gLoTSiTN(l9&N#rOkK?UixXtJA~tk#1oXavi`S4g<8}a`{t2Cr z0U-o|`D{TAlY}%d+&;NNW6)&Hk3s0lODE?`hs;{{bH0^(kOF{$`MRp%7Gk{q_eF<& z+T%w+iEwj=x8p(1S5O?^tnwVY71XlGFdk53E#B4A^et^)F^5Qfo8imb?}Uia*Yz6x zRx|vY0Pw)M<*SjK|1|cy68cG6PLldu3OgSyt8Y7e2;ANDy{jNf$hKdM)i~U1N6qv5 zD=UC;`QO*~XQyDx2OHa+hF7p@qqO!S388r&q7t9lWPyMq1aWfwZ0{vwI#iH2q{heV z+(Bw=GJuBC&|CPv*J*}7K}&+(QS%JfN57|(zUj48m6@O?|Z`^_)p_;K4u{TEqqJ01zXiZ{if~#q`ffYI1foL!N()kny-0c z7DK2AMuqLs2`0()NpC=x#e9>Tiz?$&o~(8hYy^)_xngA!OhCeG>e+BX?sIx@u&c5d zn{6cA((?&fRk|TPNXd5T&$Hju>9p96FzvIT(IRFrDq=k@>9FSVh_pR(q@r`5=ib?6 zZ(L%>n8g!r4Ws2;*}x92XXZT2HX^U3VXLCf^1PBieAXkJD~SV78W0!QlX2KCnKBsT zI}Y!42Xn-nz-CqK_6zePcY>YTpZ#s}^B`o&XPK5Wy>!>lBxo>2mOl4{U1KwqHy_zkq2T(l zHAWqKjD6;h^C$Uv;OSe%pVuEZS_PMAVmBEyhoWy=ZL~fqs;dyYL5aNo9AOEdh1~Qe zzwdf!0MY?6a!a@F>#xGl4mw@o!9?e%CV`GX3JQdGK3BYM`jg+iZU63M+ij2Ic=RCq z^G92^eMt}$o5 zP{d~ZmHQh!%r|Ksegj*({G&Cz7tcA)6GF$)QtJE(tEcSV=p|!aXbJoV@ zI~l~?)KSCZgpHDVB@b}b|4`f(#phoWZJ((n?|*9>A+Oi_@Of`_w%rqIZC~;1op@mAURfZJOFejS@IxaZr^je;H06hr_y{u25~Mc> zz7J$ViQ(-iubzD~<|GC}DHK%nDCQm|3bA2PeH!q-6|{H`rpimFN0et`ii)(FW+nf4 zXXd8UeJo-TlsZ6&>NtC|8}@&U1g)Xy^(H?m)%%0#oMOgmF^i6APYk+OSmZgoM6Oel z_Ub)OVFF4$alP43#e}apB0^9k@&Yc9V!i=ZB=C{E&LiV3KEXIl;aFKrCy~_EN8r4C z^^frmmpuiG(a@yZL=%_XJG63yODxXj#tkpz6GETpHd?~T^z#4oiK=$@xtUFc2ru1e zu5!VKX@$U~NCjgMq=5~napAl;S#V)?sfTHa?`yK&hktWQA8c+atsFvT$G@*>r&DAQ zCJN23O_}Tv9;}5Rq0(8dfJgI?IZ|X@N%AxGW2Qt|DHKlU8ogT?0v<6ZV=MedhV_5D_Y9>|9?EBB_7uNmSOo-*1LkzyJ3V2Af7u zAnwC+QCMSZLy(@q8>!(EorC;ks~6-Sffj$=r%zOX}r}JQ^yOAn!@u0e~1&4 z@-u-d3~NCXs6anQc|LZHQGqavZUZ#tv84cT1k`oepObl=uu$_JWiN|Jh*#E$vxkLW zgJk)SS36R)B+GI0d}b6G3a|{@ye3cF{1pK63`Q-Y?;W8CoCvA?UE(W9{ffwYh06ELXtpl32P#h6K`@H< z=#(x7X02)5fJx2vCBAScr_74nt}+e zKVE3aYUDR%TzwY`{VS)tWw%*@`-1uXR@U;I%vTC)mODg9NB3d%!e$tMfm?H%rYK0%ft`D~q@q zVV5fpdF}etP=!C$ALW3#gnlgA4=H6|{Ta;^XlV!}sVd71IbBFDaVvn2#v?bOTPPfQ zm*ZZs_A^m;ety+V-94!`uxaO9Qmf<&RFU;{& z9ts6t%Zm`c7L`$jYfkk-H2#E4S33M|AJzLylO2w%QgLyUe#U>y87dB@czN@U z`hz;<>8-vQr`Unbh>^Fke_;9I0iSGmJ$4Lq?wT#X^$yJV3+WzprWh)5+q8NORYI zw1njsMk)O``oc-VRU~QCug%@`m&8M!ZGj=WC#}hWC6gVe%-)THK8Ok#@XZxE=c0tZ zdFcl96R(=51;XxvlZj%42_y!H(5u^wG3rgmEa0W$=REM@*4smTVe^w&QS*KV(T{xoE2k{GsJ2!Mo`;(8N zLinxf2<~yL^?EVUFwsJ9+-}}z*3_=QUUqxjyBejD5EX(=@&2JSpj8#VF)|A?PY(2@ zz2M{!b2|g=8J4}WX^zAWS+C!D`Ob;ln}{37T%=D+PshvRMSSg6k8A8JNCNra%N(f% zljVThmae{hQlRxZ-~Q}1Zibw7I^TNV0#hj!KWBCr%R3p3r6ASj$V+TABO@()cPsD4 z=++AW7kwO`se?RyK;k|L!aX>S>A#tNk|ZP;B6{X8^^8MV-ua*~l7XrOr7h=vZvBm$ ze4sfvO;-DNdZIKKPv_@FkkerhkBuWHy>9E>@*UIbC5p`BMWF=<*_VS_1~EiT1EZPgcI9+*@Maos%8@1+VEE`l*PnUm`=M`_4R_d$kMV^Gk~Q< z{g#drT&)NW8C6R>gh)(5uEG+#YjOE}FcPJuQN|YUbOwSG?CoEQ+|Ic-1wnK7D_!^z zh3dSW8##Kf6_S4d_ecdppcC`;>)(5=7q3f7N`j%OR0R9)rCCOU9ISLgP(vN7k79mU zZgt$NS(TTl${DmB8@odGZQtHEFJ?Gx-$>Y*reuRBHzRw@L>{G49msyU^?5Nn4zRq4 zcunJ82;*%`bb!G@MC}K35OgFwiwX?Xk#rS_vy42`(JB-4eZy%kPzeuFOTL(XEy{pI zw3&YU_Ko0Ze@nL7;|Pf!83yaW{Hat-pioj0 zO7#U>kbxak$7|*YkEE(qj8uxp2U$G*C-Bp4`Z^)i?V>&yb>Lw9;GjS#!ZiXwKrk;} z8+w;!WwS%%Rqlvp_XVqSI!!w7vdtYW(?Dn>?apm542}t70io@A^i5eT1eVYZK%kID zh}jiPLiERn8!BK{C(z<@Bu(3&fxFlqZJhgiR8`L+OZD6jPC}T{)&mjov}IwRYPDNdDj;Yy@_uvEzq^N8 zE)E-jj?SzNrz@NfD0{aYHWPla0%B{CMSX){^5p*W6iGK+gk-e?9*vz*#I7dBswxQX z_N(nx4K$wx3Gm*=T=~C`UA3|SS^L-@`hRF9-f`C47dtvM&>7zNq-2YS#$++VaBgQ2 z(=qdV8t+igHC~9+gQQP^UI@doOa9_BIc$em7637PB6Yur9(_iE@{n1(ZYTq!U5Mb| z0wDPcid*3=l7vTTtv6whYZ-?4L`V;y4DFhJq`w+03^4-VX-NUEu8sHDe|kl$5Eo2$ zw)PavF%ZjxF*+J?a)9;E;c*v&IH&F6vaO-Jy8sCHSuRoSW1ZJ>8tkCi5$uV(Hx{9McMKT9u z@*r8FP*uTv4vEs>K-~77V5%*Ia5c!^Slit6lS%SYPM3vPA~JGv#D|RpvMwxuSR09` z)4--j`Fw{|5Uk$^w@pM9DVx3x%EP^j}8jz;N$d$$kkjo`E?CAOhNz{0-W8^`Aarg*+z&hi=0)l2HdjY(a{U=yzZR^!&O&T*WY7t2dEsxQid3i zj*pK8!bIKouOm+z34_ecJS-uAL)-@Rk!rLcH3nNbE&+k8f&xCbPAOVSmq}z zqid5NUrJ{b($g@W~FhpcJ@kt|3W7+fHU-0SQmIO>D}!8#7g zh*Hy76a>F_MiMnRc&$doAc1cjLT=zT0bz(82<6nw{V{_Z3Ylq$c=^JG3pBzu#&N@R z2bt;db&z+0Xv~Kl$J{|pu3-c${rqt!0XT%+4~PgaEh;1ksygcr#aTO5+I~=K^E6Gt zd%eR@TQ5osD0E;36;LmLfFelr`JecTE*2rP;g`k6$*Dpfk33K6Xy~6HZ(+PkN7v!? ztU-Jmo#{~jcG0^NRF@BEPmS5)j9`CMWmyAjk1XrdfoJ9lJ{YjTSiiJL1K;YqJVfJ7 zM(TOgLa^rDso836$i{;U5t;Dt@DTsq`0TyP*WyU^vJCJ(CM4B@#gx&iVjY`|jI8s+ z0|aHS>F6MapXPrH@j-Ag=65F#Fc3kiPx6fyR5YRvSCkVZESfgAjRazN!JBxIjcp2c zNomNe(_swCkaLmvg^%cB5}xP?1y}DJt1WDFsgepwxUeId&cad9P;Ty8aDwmB0)XZTmd`7ZYBtMc&1KCub^xJNTZG2?=={c8|bR5o?g zvJf~XwI$+QkT)Nj;hmb~olZXtfelrPf-wpVEQ_FA#D%ct;a=WA4t|3=Om>Ri;k|e8 zr8BUf6Vm$dJ!u!3Zo`2UkXN})2jLxlU_Jif?g48fIV&I1=s^5s*7rd=LBjoxj?POY z;ra6A%dfu8?82z?K51uwz^O=Gm(0dh8oknI7vQqn=Xuq~bRf{r-?*u-XIex@&ZZ1I zP)(TRF)o;&!Ap_#_SM@su;h6wB)p*F+s-|##`m1h1BUKap7QQf`E$FRSssz^aP_V0 zE^Q9wV?+iAn~_6k?1xUuITp6d=mVM^GTLvnKi$GapD3sVrFR(b`bG*61w*)&U0-vB zzZL+kX2*0y(dhA+8VLr?VM*>4&it`id!6BE-RQpJaAss+M#02-mPVvfyx2f5DKZ$O zaDO$nfYs>B8mS=xiHuA*1E#>gJ3myCC);GJTg)R1>Az!7$cZ4gQvZK^B2 zyZ*H|JkXq3{{6h*j1sQQOy$U2v77Jk^v29e)2_?ZP^qrTs@`6^cS%bZNYz(W%`0?w zLN{2MO*38&8cwI{$b=8^JM9NRa2gHhqYj+$ZPdImsw2zueyz#$llI&J(O}_5K)C$^ zCZSfppl!?zQr1rcy}XMQ5uP+iDFR~Qy0-dkEhAuB+s*g!Z+aeLvby74B&(Ia92CgF zDJgjlwg`d#+ZV}p!JY0%56=%*X6lH+39)QnzfM6*3&f_324tCvcNQ4k%;xv^_kVQk zX=zfZ#bqbLh*qP|BbCynVOH_Q&>98V*~!>5;B0FEXIkvGqfbqZ)FH&&(g>K-5HSdi zzu`xOTi~5<26t56CUPP1ZM`vb{ECIaBC}r03>GAxbh<+nP$Q?9n}m2T>HbOBjTUXMOLTeQ1ro z`2{QgzD|!{$#KKw*owE4e-$mgt9e{7|E!;|aGsBh?CI9Y;9KW~i+~sw)irtoaX32_ zCfNw7w&sy#V&dWx3k!HqFoUJC9yS)pA2;cKkM|BP00pyR3dG!;T|}WlkUR2)j&{b7 z1O8gpVB9ar(t_0{xwe>{CvsW!C!Erd+BgYjGkFCC891`k)Yah(463LQgXE%=#6&b$ zcC4?z_FBV;()lB67Q&Yu_UU~zI4B`hBoK0BCLvBo`5`Q;Ksq)s-xz{X8KtPGxUdD` z9JlonBt4nnZ!poK+8$Sc@2)oa1k5wOz z7HE2MLvLtY_HV%vXDU2CSx72cg(L}%%I&w`)}6<4oid!sWBPa=peo!K#YTfwyvlr7 z{Gezn1C$-SL@;B)KXg^YBk7LQ+Y!buO5C!6o?an*qe5qHP}~6h0hrso0Ype9cccvO zPwdK(CdItIz(W!z*Di%Bf5%9v9u@A#BIy>$86bdm=%R$uP`0+_1$SQd@Y$;z9Qbg( zdp)Gk^P2zQfz$=j%SlE^Y}`4wHFT7RMWTpIs@ep^q84j?g6K?4EG*!VwrB~lmm#_U z5rVT4>ZO^RkM2MaGVc^+D$)o5E)V%ds|wfuao zB2f!@vSBbSrjQ&`IBt*wMeX5=JGR2rYB*31-5IEN4mDgx#GB6{P)Av0OWIx@B`9Q8 z>V;lKt1p2&#Mp`%xJA$~zbY$}ojC_#G3Rl~o`yVzEgg{+S00{+3M6yG@{ohuZ$3E= zon8bs2CcKD#5p)(Xk%-${O^DtCTQ~1_1h4w^8M1v_z2o7PGMo%uV26J?#(5jqd^2% zlTn!XbBM>IQG41})p*8BH!na&b-leZ^gG-VfW)dp9;f~OAd1p?triCf>|C&|)D44- z6#ebx0cFKUG4J1Byz<~9X7;@t8D*lAI6v5ox#2!f@ECK6iHYgFOM!F{Cm84TVcU+f z>o_p9{BB^lZ#YfaP7rhc*xE%7^BqF|9YW^fA+{4rWUvS2gNbpl!7du2xR8iLr{#hs zq;^BXr8-TWr!V)4BQ^x!)gvURxgG-*ae}7m_rD~8q21gPz1M2IMkl<}OJxMCq^b{} zTr&Yy)-U6l86Y&+em;s#1CJCpt%&e4J7^sd~afB z&X|uR^?QJQv;|u#i!V#$cn9jvY}+<_$f-t>10glB!;=NHwOLbeCzLRx?sWC?q7DDB zn}O89M#vR>$mowOai0EVXGQM0+1ckv6tgajTDPSw4i=UH81m7)R;vzj6^#tsKe_GM zpb1K(L9$l4&{@?lE}`yNYGv9;q;<{>N%ME-`*w(3iV~oa<_JT4+!k`QCF=?gShU%dYvT;1&J%m;J|kg+h2YMUPys#!AWngFZt z&VlJ=S{zR8NV$Wk1a09Lq3R>;*wJ0e>&^=f3Q)WECiN`vSPlz;u{cGq+M}1L8Xh8C z0M~>5^@Dn*h7;sGLte3-kh?{)_T8d`F}NtA!2Q61Ej9BUdoWxkfqx7UsL(k;g+mWN zMh;zZZm4P_Ov5f%zo2&Mf_5JnBtr=L=tUA7`=Pr1I5Z5QB@j;n=LC{+6w`kfIagrG z!QEI6^WCWg%CSNdi}ENz+%x+xPb9O;x#JEjcy+B9y{QLFo;Ng(ME|R}*C>xmhBvST ztO6uhom8_@9GW$NTmka)s%)T-!7>EJ;g8U1S0y1W!x+Q@nC`bO5MDBk+6*y^q=0=2 z*nCVSQDV9KF-(w?bkd(Y8GAi;;E=N2>Vyc}qJU8i9B>vTw3vnFQuzjQP*i6e~;^2VE&#*v$rX@mIQKP72)aBc0`P?iA@qT`Jd3o7J z8uM_3K0Xb876zHy?_i1J1FJW0e#}J`!-&7F8ZEO;e>iJb1gD2=&b@lT>vo21iFM(6 z6RnPc)Z5ez4GkK*t%G`s|G!c+gXvYvNGHTMbGnc6{iIou+z}T$v=E(Kmv>-7MC93~ zA(hPVxWx^=!%%R^sm}5PpgdwSyg`)zE!SQUAPnGNfU`^8X=P=BGCFE=kiMEwOa8rD zdCmfOPzeDggK?8K$c#WUJZ^247CS>5PH=bFFv%eM23F%+(|j02Rh{rZMU9gIn1`w#)>+&pYAx#axmD{ z*(@3y5N;2}?oC6(;e zw!JOq;v!P0)x^N{0I4Pt!!agS=n!gg830KF)_W?lF)2e z7^;eQ!(q2ZWT~}M)&0InmfAyZr;yz1{i5@g$;;-T4;q>YEG{kSbhRo zcRbOGy%N}^85y|nxyfOTO(z;h#PArL(RH4ooZkvPdZ(~yrS$H4Ex;Qe`aaw*sJr#l z{FB9yfaXmQ%QDmBfdHvgNV6$F%k$*;lwD>H(8tin=!c|PWCH*IBXy^uq9Re__|xrM zkZzrSn)(lM#_N#LI|&_zK;EUuZ(X0Bs6bF$wkD)n>wVj#gdkdB1X)DjWD~eI#*6-J z01h!z17}`^4?L`hK8^?lnh?3Dwppzl=TGP)Xi%PH^`d2HaKHv_S|rhx1ES4&n^nG< z6+y1gp_kM9nKLdnr8%oz*HZl9P6IIxKN-Ve2?}O|?@uAQqRzat*7$q<9Ua`)s>Gk9aVpbD)XI`uSKO}o zyFTSh8LlS>UDL@y>0uH)5x|xx;;V>`b~*N)xK~dYp^AJ7GV0S_z*Hr>cM{^7OrSO` zYRZMNy>!+K9UYy9-;@HP+~zimGOc6a%y@s#!L7Zm?F-EOi3Zf&PjmF?&}lRmBqt}6 zFfc4H(%dV0+SB;Eu|^IK3`e*g27=aCPd@b7Eq?zUaIHdd!+fYXN9(K?yqj-801n!D zh;ANykj)(V4T;J?`VItVfTzL(hrCYdGxYHAaO9Sud^o_wel@co|7#8I8JdJz^rnM@ z0Fo^C{rh*iJa@3DclRTgG{Bd!U^;*Dcbcso?B*-Q{N=~iTxY{p#DjGzYiqv-1!i0TycvGod6F*0;pp4F zA;*^(6Cj8gbXL24u&eE{_z7#TRbhTf^2_XIl@G_n{#>jWHhFreM*o!NN(ZL5CzTIw zT(DgxZT1=OTmXh72UPLB8R*XdrYwc4o|R)Wlh~qU!hN z#^jLkEz((cx3@1c>8kr@Tw>!BNN0!=v|>W85Lk(>y)ub1 zM0fMh@xG@S`r~@SsCjL6ld=(zk0d`CAzX|O>r>Yqmy3DlabK0Y0%zzgGjq1AoZ3&z zE_&ukdQF9O5Mz(Xy}>(kp!{cn?hm>aWxW`>^b4}j-^5R=Mt^pI zbYSC0kIF=ler*5%-qv2ytZBIFbP*SU52Ya5h4fB#@1tC+5nT~3t~Se6{#%( z$a6h}n+u9sWX~o*c!$Kvp)K^FMZf4Wy>z*byyoJ49+ly)Ppf9z>RtiCTDz=Jgr@#n zA$*+sLCLtlb-|@3-v_+Thu5@?5I|1hu*T>s&bz&4xZg9^Q6KW^e+>>b%@yHpZ9SJs z%2+E)LIG?cvAK8#1R>9G#<|fGvr0$1DkAO*a=$D7?3jvA;zbjg*2s#=; z4oAFte`=!{V9ECq&WSm7USJFUeotE3JDUX#sqhd0G9EG}DL`!LZ>ag~8{3YhWRZ!! zDUZ`T1DvfaUVdwC&i@t*3l@-M9A*|4bTohkT~Z+`T)*Hxa_gN`rpDXR+YlHA5iL13 z@E9VPq{$!|G25zhYH~6kR>ZLT&PeJ_R`L-A5=^9pyBBlPa_6(`ujvhvLC4%eW3X&( z9=g+?-d~jjhIkjH3lNQPVQ%q(v5t@rG$HJYa4z|Prsq;_=sXYAC))i<8PFMkg8s}k zZYEjiXh3FN`@>7p60W{@DQ6VY^w`)K2}W^HG%C+jPnY4aUtZrpp^-qo9o&7ao%5i| zt<1JgL;a!XU&u`*98VDLHc6pquN(trP&ofE;H7v(L~>3}P7C%Bgf=o88XC&&ZV`qJ z-}dwxI#pFwG%r{+6TqTo*$hMSOpDIyaM`E62Vfe}($ZRJqM@YphpTD&oFpJ;8z6@3 zkR}Q>WIYTY{_C%pqn9rpU(^ zcWD;2*Ap%?2dKB`KeNYX&Qb?C#_y7+Wf&@FKt&)Z*(rs$Qwc9~_$;{2E?(}F;M%<9^+Q@a9(p?-+AS}389g;z3j-o(A3i9fzDM;Iqdx;zfc)*-oEy)To5WCTnNAZdm&Lk!5r-=h&H%{t6!$0JNx4y zgq3ISC8wmorFvFxbRkaD049S#$j|;fy=XJnWw^N$ZWY=rDk&*>I9riPI#ZzJ~;&HBR|UV0f=;PAUFBw%$7s%RYP?zgrrT6p4%y5~7TfRYH_X z$ySt+Rc2Hu)*y)GEo+pFk{?!3igoIydbQIuEnb@L#Q^ra<=mF~3txP$M3`7t zD`2n4#G|(--(=*V`9h9jPRbd*9lGJ01yGJvYt|gHw}1Vm{&`6_TCwk6QzC00V>g1> z&f^na5oKTYlI!D-Z4jB_hl1wOKP;Aa5mdL)XdOcbdQ^{*fnnR8J)Z@}oE;qlv+4#W z(jN~6Y3N=*GhcN=5Tw=3clwRA=inc%IxP+(E(>-8Y=G-C4?1e}VE@7(Hu))>Im3cw zG#-Fp4kgtSm^emE+}(r1UO*hn33^(9Y$xN}2$2;ASo2sd^y}{7?eI9&u&BhYz~%6|w0v|0@wG%l z&qXcK9y?&VnFX+~QXb6FgDhC-(~_#k=qK^svF-V|b6+nEfwdEvCi55OEVG(9mMvXc zE^4UFzlj)Hb@yBaq&8Bpj5aVU!)`#GKwI5r4|eHLVJC*rFJ0H)MrU%J8OS;V4ZU4! zxYj9Yw|8}qr9Z)VXv{h~$e<#ZT-g4L9vFCbDI3ipazb!| zN8wg@D155-V>RqEpS03_iPsR!eDmgk?!py?j0SX1(Mi!NvCTaRci+5`K;ZcB4P3r)frie!F zgGm3o($dCDKXn{RF?F`5?{YSC#l%qPH==WS;=r3TF{M|KCqdy2DzC0*_A%I^j(rI! z##L;j(uaVDZ!VW!o(|EiY3SGS6)RSByC(5Aq*R{Uy%mr5M=9)EXb-_Ml5R7;hW5|; zDPL7rl2CXiA>Ho?H{VQbc@X<)BMFN7_?~9xi{lAoUCpf1(s|R}wY_RN=I888gvR0p zIBYh^ESJ2qkoB`6TF^Onc=rb1u##BW(zA??by?MBcHtwxqZ?@XZc}^v|}N$mWA9~NPez@ zv%sDlDZ)&=NRqPup((jAJH~?@c-arjsIcDTFktJ1y5T83e9zQO zO`UJcQ=lBFIAM~XIkfyl^x4<8hawuNSFJjTpw-UG&;f-AdD+$d!MDEm^?3t6XUCPc znQo}reLPH>^~P4!X-O;u!A1Y$>21cJH`PH+V)7~)8aul{74T?>Ng)jR3DBAnpfz3a zci*^S1FzK6bU1{ehGTv#V!D(<@*C>8^xoC9SV|Nc6yyP(<4MURF!_%HE@T1e`_&qVO(m-AJ%oqT-h z_$#?ek(bT8b5hKF7e5ZlEK?jiS!^A9w9i`n!=Gl-z8#?d>W$o*30f)o@_l`b8c5or=b$%#Aj# zF;HcvbYJc212lbO%44kyny#8OhDNGaDv=SZdRT?MLlOY^l=`s?&IN^q4FNbNFS~$v z*OTAi1r0zj)9{j+CaOK`&iUUMB>6F)3gU=}jXn?|QV6Tmv=~=epz`tor@1!ps8L_~ zcIHZpOSj|u1nd{2wSP@d4D9vGO<%J651D23Gy_N{JQX>xH*a1l?I@NtN=r*eGrfBC zDqgDeIF_(H1lO#cZsviKK$iX;wtP&S-oh@(vU&gJs^Zsj9-i$cx6jXyH=BtraV1-t zB^(l)g*JR^M6yJiol&hP*-zMQuNZxtR*w@eY~MFveU<(D?3!eN&lUY+_@Uq#2ML@Q zjw>7F>F|$OD>SiBC;0_@c-N4HRZ7C-nd>aTGuKgvl+XtG5m_%lRRG0CjfpRI=n2(B zo3Yo2JoLZ|m6CoT87B5rN({-FnVI?658b(ao7W{YFiUUQ)f;iX%`H1A?R|84$KL!&qOUgcc zD8jWon>vZz+Sp2VHg&J)T4eam*r@oooTDLx-390%h-@gULLsEP;QBJh{@531QumU7 zlExwtnf}D%{5b)buuhSOe7U0*y>J$en^2umN}gLZF1^Stu&5I*e^lt*$c_ zedec&b_3{DjIKT!21>01HT~ac@sT)*qBJo;`ofOv6FR?ek1_`m-%O2d!Hu|k{1)HW!b zykmB;&Zw>N(J~O|)`n-uQ-+U|0#p7@;?6$!x-leg@=w4J;hfr&pJ zddmUT(cqm*1@mWbKnmuWlmWS*B-VcO@bcPBX_IrfZ)8>5;e(4iWr2)dE)xgflIc1p zPI(3a;qZ7`!neLw5@jG?pcKIScbmWJeCarz&SDbUk!XW`$?}g`Av@d#SzTQ=)O@Ou z$M7KqUCuUB6(B*R{7&-UK#^>G%{AE~Ro2s!fBNmA{2S*oTP}Bs zfG}rLCqo@tyoZOa9=tq0(TI{T{-X9As=CmPSTg1HeG`@v%0e({_5IT}&xG?rk9I@< z2Eky!;Q3_0#Nch!hlbY*wv}sID6>H*Igs~$TUC- z!Q$Ur&-M2T!p@QnvE*D!(_*!e3o8cNiI4G}O}lQqJr`rowzx;jZ87+w!5K2ElJOzF zTr__-4QEsrJKwL=f9tnvsN_K?x9s*`JipFhD@V^lr3^04=;$a>U5Ih)^)Di-VT69Z zIZaR%xd<^Y5t72e9X^!0 z^16A;IMFE~`x-#-u~60G;wf*}y|B!!>XXE(8(VMRpi$-5OlB--x$=_7?D6B*PaZzB z+xX?fbIT3X>NQ_E)Kx_$mwJibhefu_TT4L97v<WOCJK9Dg6BF`CN)*b>uc4#~w~b7GZMQ7M_Bm6iocDe*bJe#O&{Y*F{rudewlXW( zd}jy?YkODM@*O*NXzDEF9=WF&_N}pT`_`?``eE^RdGR_=zmahGDQTS&sfdpO(CuFI zUM6m1rJ+drd*hY_*5 z0we*DSRip7ZcA!hxL|DDi54QDwgEdpYSo0_zI~f6t&BfJ9y099Yr{X{=MTc673&j5 zpz9a@T$>zBd~%mLhhGnhRxg!nQk2h+WIXrT@_EC4`7A%H{boUl`hVO`{jcAPKVRP1 zIP*y02WO}7r3MjAP0biqK^~q0h(echlZ&G=gkb0h?7t0oF+@%Jh>K-qWigYP)zvCw zwFN1sP=I}Uq0IiHDQhD*6k=GimMM;<&S>x%(_-G;+EpEHUr= zaP`k_9>JY8YT)t7OK3grcrluuw*G$J9DD43#e>M3Bf#_=AI_%}iwCK3IE!x*PQ6;? z$dT2M6`o0_C?Z6BN;OgfI9Slq!nSGCCXzi7Q~g6i?vf*znW@=RLkl^PCs!n71dkO=6Q3#QFwAg`TPQJ@Zhb=>yM&+8Vm#m&t6ZBSV}1X#uzt` z5G77%ys&R<0T<}Na2}F zlaS^CPOMt&*cN~K>Q{=ULYm3vr8LYU1@LG-iJE<)7u9%Dc0SGxq|mG0k0rUyQG3#| zA3k`H0)@#PP~EFyjb^xf+_&cZlle zFI-R;l{WeGEN%w70~mt`5MZ#6k&2QtQKwVb->-tz&S+6?5MdN{Y}%A=lM1IKKeMw9 z*<7bL(3AiD4b%6{OmlKr>^4RFh=zL0mGsiHEg5ULR%BIecz}3=S3f1|wK5ILOyp0a z*yFc|Cv)yCwWDf2EkTVX|Nkpscu3pd4}^f_KHU(XxoGFJR{r#2$D( zlhMaE2d@3H06Nn@2fUEzPw>Bu$#g#_oGkBe7R&Tz{0cQ<2KclUdh zE9kFMYq*L|Hc#gNJ;2MO$r&Xtp%WJ=B33doGRl$yJUj={#ZjJtPQ&yB6u#Kk5)%`% z{_!Bl;i<0s$`lH=qi=^=@@AdeCg_Viq5Ks%n|%|tk;+f8sFl;%Z#Z04SKSh^sW)>~ zIl<=qL;B`W;+fJfd$UZ1chhg$yUxrnKgW&c_842e(5^p6ua@ig@88%5aEG4&MO1uz zd|GDrUCkjOfu#DmweOjDjX!Z0r*z|93bRW(pq||Z5cMMoQG3CF8O_l4e!fTV+%UgC0L(3 zY3ZnG{>ww5*hlqpv(tJ;HlqV`A)D$G&rF*c(y_mC<%&l0nKNh7%Kxs+ zwsSw@qY9D(3~?ZT`jPyKN5asO9~zv({_ORvth;vq`F3Crto4^YyWW^-y`9nqTYZ!I zL{@mzOHc|>_>;bZfIdi|!MpTKO?Q^~vHJm1ygL3_VR&>jVAq|!(DdP4uQN9{NBKcv z6x0pGhmT1~5Ov+s#CS(yN+z~_+2Dchpdf?k&zs4qbJfafa7vJUURd6uHRxCvKEYG& zGM;fj`NWCDY#039hB<}xecnr!QDOJ2S~DQp9S#uk;N@=9U$c{wle0|aP4*?-_frp_ zJTU+f#@q{q6?LmWUAt1u>jl0xHhy@la350`>!BQY2h_$Lz;_v|r=dvp5!qtDwK5L-2Gtwx zRDC?u%li52y{kH%k{gAor)bq$19eWR-@c=)wbzvN4bGZ~a;(q2+$;2ZANo zC~YW_i4y**i%W{>7w(6TAD6TCS(19gp~Z=4FCDS-w#!#mC`D+`+xqK+Dba2YVp-moBp&kFaQw~4PMO%wM zvJ5InCfVntMzAnC%)hMtYn)d$CFwX!0XSTUuYa@tDVoR@w*?oAzN3f%a*B#xCHwy? z<`zGn28A=+ey9b$&08^lv(jaH++X5E5RzI)#lF_!8!M>4&KgHO7ac2nME6!3-b?mF zOO|p(rd!M}yB3^V`u6$LHw`0E+jZ_eaMBnUTl|Z3{v-bJDdk_jYy^CbGP3Uh7KNcZ zjA3;f|4xVHc-#KhY3f{ajkAd?6@W@F*DTHabA*R(_cm*mj}^nVew4eG4T|x|DH6M zm2gtKn7{s#A<21IL&I2ZyzlmN`@Px~$`yjeHQSA?rr$;~*PB&4QCOODYkl<&q_Aeu zT9`{JU_q46z=pm%ckix+CP)5XModag-GKV&9YoMK>)E8Qik&%ocBJj?vi9^N2Y?1a zKc>_ff`;tQ>ct9x1b#~9irsWf+ctVEwVci<^xx)!>pnA4$GTjOEk+HAEscFLr(sV} zTxvt@!s2oE@|ve-V-xuB?ru*{58*n7v!f0G;TQ2OEiP_@R{l>Jzj&Vrz%L~9bg#OY zSSGFX&zema%KP<}-r?mPcK*2H*wmm%s?rBDwJ*79jG5`*W9(<^zL^-dcJ{me$w*P5 zD7QP1lT&M+qFte1jCGXVK@t=? z{~G?|$A*vezJAzS&(e^1YQ6P#2EnIy6;8>&6Rx!%A3ogaJ6G%bLeEEbI^8j$Qq&uRhEw>HWzdrK)Lm zC1ubvf0f6fIi*1l=9lx(y;R3FB721G-{P+bU7Q&9f7kBf;Zgkg2R)=p$jsb~Ii!2h zlSnw{jg5CGT?$Y*cWx_|+K5)RPyT0EJxYvfYqh>ScG`BqaCbwkZH?Ld=NVeM^-Mm^ z8AE+hdFci&B18LC1|27J>0#0rb$=1=K&^Q-c$W^h(peoHonsGo%LF%Y`r*X-bb@C* z!+_bV#g`&CL}(G>r7a)V4oqKu7uRz3oPqY-iCzX?hTst8f@>}c))~o)#`|YIKi=|w zDKNziHjF6?zZlb^RXofG3Y24&!6Cd|IRUB z^g8B5UzZB4b>xka5M_geo)--C9413_{QKQjFo@4SYxr1Bl_zt*)|au{uw&X=F|_ut z|4k=n{p)xl#0m=w!vpyec#~<LtmeN}j?tY;O z>ZLyvbMIU$GYKgxt8rq>f3`C@IYmRl)zngqxBRHt<;uXoz&M=?&wmR4c{2Rlwenr1 zz{nWIN}1R3YxM_c)+S7%hCUJX;sy18#kt%<{B-UfZ?Ex?_~;et6F+ZUe@c_~SntfK z>kgH=B@P;iN&yO{`nO-ZUx;HB5)P4}$i8&-cs0JQS+*;&({ug*y12;E-ep@K@iJ&O zg^NZ|P2PBu{$-NlKtqf56R1WJp1>RJ4~q-g9e9?0B_J5{MCTyNkF-uGp!9!s-_+G zWm&DEp^@H+e*_sy_dnn2=`B1mh9^rzCyKwF+P3PlU7eY0Q&H)6dL|z|6$_=1AGCwF z4kTI6R<|%5vRS-QNd8(`HeBUgdEW<31CMe&R}K@%5jc{RUCT;~2}SG&lQI4GKq|7H z&RVvf&a|k!csaX+#hu@-73q(YmJZ7n+T}1^S#1;)RDEk^q5nz-mI^#;7)iUMaLU!FhQeg05wCn!8lF0S`~zCnz|5oP7l`MH@rVEEh9 zjj^Z^67bDIH(VFE`<$GeImE;?J41jl{;!XO0)2yj%Rt+Yn-eZ?B0Stf)yITy-`+E( z$+E8L_ye(T_Z!wdj7A(C4x{AHJoxYSMs3QVaC78F|L>O0-9dQ$dZt}D zzpKhyn53I;#j?6Rv{~(t6tdypUAkKVg`d^Jyo;8ZM#fowrga!|eIzWZ*Oh6}EKbkJ zNc}&XR2~y2g7JVm(JMG)ojc+a2hX2ZnNw2JGU6if?B23ce_hV`WhVLeVt4O(brMma zYR&b(cdKl3(1QmbUTe>SSU#1cD~0FAV#U7<4(-b7|2g}$#1E@4H1B7k7dyj^aG$31 z$8NiJ&^9~F-Qwy^dZrQ`AlBTv^LWK4al^+ABR5{I_GR_BqTpLg~I)m zy87hH5krGG)wWQ3SIwFhM(#Bpi_qA+oG-oi^wb5c#U~!yZCPhtI&D^(#G>h0e%rVz z1KaH4X24xkU6tnWN2o(>t1^-K?AgH*k;OY@SC2Z_3atjTFtUz=m@RGtXS!bZ!R69# z-l94sq7S_sK?BD<0)6etXQQS7H$n>{jOeFbExs{D-qv? zJhz}{oPQsCH=aMZqhYL+)2N}Qj?M>_Cr^+6|0MfqEV`59q}Efo62iuIb1_&fBxf$) z9;w`xF3fmRTWhDa_#ir$aMK4eW~D=1Au>G)%m3@5=C^7@2D`g2E4ji94zh7&R;Y(s-;_$?TOTXr+Q*>A{SNk+0BI3}F-%+2UUE%V-#p}NY zAT4r_Sdjlt>(mC*7F&A$!Twm*1(#McRrSDuv>}X^EIC$L`A!a7e2Xl+rbt<9vYZ$T>S_Kl^ja@JUrSBHIPX zV4G$@K)_S+y2P^*=``2CzIolg9U%0$awp}ZWiv~d-K6Iul{fMVZn<_VtHSOos2_<< zYkw-UczVi}Zd*;PdP0U}@lwM>^i|2-Xk2vyQq#iU{yYB9);1 z85il5#osZztwY)9Z`kybKgHpk<<;8sT=fb!c?JeYsh*|Wv-a9aPZpS8|D@_IQMRmJ zel5yC2gVq?1peegI)7#xQ43L%PZSUr0nvMFF{WiJ;@g^gg%Kpi|Me#1(e`flk+L%V zc<`pk$+ zF=GG=1oOf$$luqWuW&-^A zwvPRowhlG0aDsu!z!!wrzC zxkI(|vo&8ZXRoPoSDAl|UVdJKH6&A{zoV9m@?;hprH4&dVdd} z-4b$SjkU$Uo_A?InC4(#W9E9olu1{N$#2)bFHtnlWiPF)x_QVn!hZHwj9NhLJU01q zO6>Emfm6gV_O^fc&5Rcm(~=n*)?-QRpRM=SLzH{B{TlL zfr``s>!&cgy?(<6jz!vnXj?F#f<9VUSy>saw0X!zG{HPH{*F-p5xRN$*N`6o4iONs zCN9Fl!UQSbrJYvbMYla}eimc|lpxD}S@z$6F%+37Z@Ts5ayjxB*c#ePB#cIm+1`8U>v#>Vz-JYayo3v}xp$Z!AP3u4szo0myQNYo_hu|u7ZeyJZ|w-l9?d&lGryGWy6 zRb2UzeqoU9+IwlA^v8PPD(#Wf-c#QXE#+PNqiEqmvu9CZiSFRk(2TllbR7M^(o0bS zz*4FR1?tnKQqJQAU`%e-b5}rcnqaL~hU*}A`0#CNInF)6%Rmg=-Lh{TW|&OAJf{J6 z(3CR&9D6V~@6nf2JADooKR{>5?(rY3`Rr(Rgm!Sc=v!LSGBQ5c@mOPiwiU#nhA8`- z-4D~GIndP6GNKf19UWpl00r)Lar+-$XlV(%1{%jRw(ph8gce*s($YjQ<*^cuO0xR; z9C+rfevcZVR~z`Ae{HQdu4+g~NZZe!>u@l|_V1Uno@qVcU}xvjU-b=-@K*}YHgofV zxO#C7jr#mt?)eG3k*WiruNE4epqIFClIGg;=g+}f$^u0tp8$YT66@7}#@#l>=Gpt?Y7el^eQE(OOurf%t(kmNket&hJonu#7rc((qFUrC2!_IX{I zUPei^K~2+B(gD5}bblfh;{FxL!W3|cfq&nuUq?-CuQ@lY?hSiE0BP~G*v0yJD3)+i3Q&3jVLWfXRRrNrEt?yoXdU^vl z18C#?1eNX|KW1xsg0k_jtwAa#8v9QWL8Y119yQoF^C~$lO%9F1XUwyqAsF&b!QCk? zDd|8WB&XX7vSd|tn^P3oQDfn-?4I0(Ia@TJ2#@bs8@~exk{r?Q?eCw?s4rf)H2x|z zH9+F^dPGe!v`Y+O+S<;Mu}?hq0W}!Ix3aZ$$D9fTyyL~1Aexc)JTYI#BIQgEN~|Ye zsm278aU@Q#NjX0Q1%>g%;3$ZI0hh1D{64Ix>UWet*-6LF?)UYpCizADRQH&?>PiyI z%#JNN=Q_|cmG;NLIZwpS z)3tNJ8=*2hs!jB>c=h`tf?WKXyacL?^}1I;MmY|q*WU{b-IcRf>MXQ7nD-N@)JiuC zLS2w;Y;JxBOl{71wGv8}APL_}fUH}^#5RLpCv#EB0KR7t)V=)t9!N0H(Na@Wryu79 zLU*`1Ct{a^g2J&7F*;P}au6<0bS#7&(5Pi5jB*>of!O8m>oM&@WUN?;Tpsdi3I}2? z;kxqK(|X8m?QLya9SkE4%*^8KMWyZd9?WMo@0@#ESh$pEYcMK9w_(HRN4|G`H&Fi( zr8$Hc0Nh&+f)v3-^>s|l8Z^GXq)utda5?KBfY2ph~!jhNJ*nEUl1;%h@ggmRel z_b)GK=YLnZ0cT$eW2>*ZSN4&SfGzth$}nVj`5J+6wkHN}(){*@n#zd?AFSn9wCuma z)T)=YuBc)7*O5z9x6D|S#nNO(*P_Er%+7~50nvX3)N@t`xz0_W$EQ&9!c*g51PD)N&NTwFv$u zdw||yb$dIkQi^ZUY=LRsL&kGkmf~u|EXBM@_g9r#+{H`jjiR1U4fXYJfVCjLZlKfy zE~@dJwYIk}0X4iEL=v#3a|`oxn!pbrBDsTfn$^j~xn;{1m?Ml>#-C3;ax5Q*AslmT z%o+7_w%yhF0v0l&8!_X9hk{IqLicoE!uK!$lz%Bu`M?}KW)2EL#U(@bgkh!ktjeqK z*=~AxkVEbKdHjX18(-^Mxs~v5Jp3l3^Mh)~_LXx1Fm1iR?`5W&qmTZ0Z z$wGJmfps9*HW5@6j*-rVq-8vO_tU?Yu^GG&LomPA4TwY(U+;>M9%#xE#z>zBt@IQ{ z&t-xE&|&4JW=^8JKz1o-jXaV1`ZWQjhB0RH48hl?G?oF+{oT!bmf{Z+eW>en-;S#b zbH9|&d{wR;`}M07`h+fDnOan6(s(qtIouUL6052Y&44C+pfC=x)geUt6c4>xW3wxU zx8U2rO6m>FLm&TX5`l;tpCfMD z;N(wEj>rpfs^_dd>%Q(w&HxHWw@>A>U8#(_CD@crxuu0Qh1!FThc4eN_*eF)@6a&N zcpz|g+?8Ru0j|Q@KL|K_*+1fxI4R^Rex28AG0aDTwTI{e!=_Cfe0)1*7xlucJ5H zj{gOp8JU9zuQmB!evToKUYqPu(PhND%2CaDc69XX|n-pxC9|E1YZ z4PI)>q{9(StyxDy6BI2VWeS>{xpW_#uuyvJIgbTnsGrD)JLK-ZfGG-URDV5T#VA%A z?6IaWeLIXaW`Nc3kZ^89YCLCP;Er+7x22^kvEiQlPc)dH^IWdLAxE`h1P>0vTncd4 zAI)zVot&J+tA2|hwyN^EzhdEWR8CnGgTa96&clxYB7Ki0YtE70@>|x{)_B}PW%7Rl$T5H{hRl&5i$43* zF=Hz$;y8ScMZ$h9(Msb90huYM-L|PfE~@S;_fyS=R~uO>D$*Xi?H$|moW)nhMz{H! zZeeoNPqh-E4o~SNgj=Ry( zT!3smiCBn`k)WeVhwuCh4g3@apXli6IUVTFgHwmI%xzdQ=)Vu(BL4uai`#)eK}=k{ z11@?+P!6oZxJy>&Dl%jeBJILVbPrHG-fU_*leHaa1%~c;i(yKpEWc=GYX-N4Z&;F$wt*L2g zA4D(t^albf#+UG@e|`WDhAB(F{U9@mGdwh>D#XOZ+Aygkr>Xhygu1rV?9?8xqt|0% zcvvJI*Mo5qSB%v{`v)9?4%e1Q1Q9Juz!lL!MTKYLegA8eI6F>+6hI_6f=6uhm3)9l zd_14){BPsCY*O0By)RLxktmQaTJ;Wih3JoZL@{ZsfaY{7AI?|ph@onY?x28))QolydGeT+&@>85Ovk% z?As$~NkPSHPCS0-?|&UGUPv(81O;jFEbJB*c8`qQ{$p?u1lCGCJjjNmTE~RG=*xrz zyI_Tl=z!py!AQJZfEan#=$`$!bi09pE0QZSLwvF@h^==!1Q5b?UB2RywKwi17gJ7us%ryDd=OUiJpf= z{IcRCgE2WfjEtV(tvjP1=oVs_VGS6FBW644*AOck=!M_m5%wbPj{)Lx%EDKttl$^X z@o2&I0a`fZP?&{^ISy~d-+{N`?6Kao)YQUjOP1}%unQ~`S)gmFx-5N(s3pnZ8?@X| zb#OUJaa6M-VQJ>O=AKZO$+hWTvyM&D>-%?;5HaheXu9w_faWg`wXh=e6hTh#^mpso z25gp-s(dPS2P$ti6k>rny2oqLxI$6B3)W3p#?nOZ9@mmjM6Gx4-Zhps2GmbJ$z4_n z^|GN~G+Xu-69FX5n${7IO2{|3l8(qVoGxd*<~8oVv>+t7#fypVrQKL-_!XvAUXt*~ zTc8wVEO0)27^_$K`{=myKN#NYvN39$)Eb&~>+1SmheqXs?0Z{Td14U#`FY0yP3Jj%P7XVtzG?kw^cGb5e}(0tv`{XLXqV`D=U$j|WGBo%J!t1|-%`1SQA zqIGZU>f+R5<)9>|q!8CWl!=v4K?DT{>!Wfc;$5VQPnhwUooQVtL7)oD`b|rLdNbLe zblowG;sAgkPc*V$*zcTL>&usmK~N0W=~(s|s-5Pjw#001&LLjKH5UU8_%Z1_2V5z%K4I>p|d4L-8y#Z*^j*mzM-M4WX=<{T7PX__Og}h ziqWt>jr~0Y9j)U;t;XjF7${$ApeN1>2u60*V4-`f!b)K*MGZ4VVyH?ocJ#I8X;RJL z4-~w6CqJq!7X@G04RmMtcO^?@u5|6EqwsCKZ`S)jBQCk?>Qbtq1HLmJRrA!Zbyavi z#kI<%7p?Fc>YV)Dy8JK2#!(%L)A6Bt7N-y~3*u6>{JEjO6b*=`IAc>&Z~R0jqTo&M zO<`Kn6-W?!^ov)a%B4H7F#9UX$1eM%s_M;!+1>-B*dn*J?{)}Wn+V8EuKatmd)657 z-$_Pb$)t4u6o9%8)Hd>HRIs2?46@p@J7@$R2jZsTe-Xq1L(F%-R>Mk&Rn`)Jb}2jv@43ktB=13SA| zT#xs;W7OrSHZ7&6GV~6JH%%?ABf3f(K|i_84d{J+;~)rpPp`9+{ebJD$cLy1aWIGn zVF&Pl4V*63=qpI!Pqe9Jn{pvBmPKBLbr4sQyj%m~mB0T$r!M zRkajp+RU%v9T*PY?bA4MUDlo3taRhLOL9gl9*F*BI*J1Q{kJs++X9xG4bVwO`MhoS z?vwwhzPMh@kHLf)#t%&C;`69!zPIE`kOlzJnW?F+4)DW6X%}$}0^bV`=GI~b!p5@S zW;qclX>8pd+K;IQH3z63V^-Vzi6Z|>& z(3XeEMu?X+Hf|vu34l1Wt3QZx2a!U=w0il%bbUUj z|r5t`aQbY&{?cFdV-Chf3Raek&Ny+65$^8vY(+SDIXzV zCc``c{eoYvWAa1L%~Nk&dRSf__i(-Jt+k(@gtbCVM*24t)F6-UrKv;PL=^f*%-8#C zy6u&%zx<&U+P-t>GclO3%oUSH+jO$kUjSMPbD3l!W-~e&7Du$>;X^>O2n#DKSHf66 z9z2XMF+o!ob+{CQ3Tng-dEhm~-4DH~Vqo%xx+Fb6d^2RA6V>7%!Q|oF1WglHf~;Jv z0iIVnGeZL(clQ~6>y-x{npn$gfzi{IWb!-Wsl5G->g?pfh;KEvo*JI>W~HY)X(QUK zvkTwbR9KE8ZAcfKWK6(9vst7}AD9(9Bc4T^eS_hkYUS zC4@|X3Lm_rs&xVGO|*DxQEepndBb$mZ1#?~xBu?5gO{4K83=iCb;}3_V}@V3MTqN9 z4Yz-Vwk#wxG+nv}SAz_j6Z8+`J_FrrN=SK(0aLEl>euMhN#Z|t{5Y=fi)+^?A>wvx z5LW7^AEHGeFb>pkwqfzwU_xrFV=KV>YT1)xMT;hk${UcsY0rwgJ-Ak=ug9{RZk)YBg z17Vn<`7G$gtMbCuK>N&A4pDO3$G@LKvPe5zdN%JWQ>eIIArSFXXU_1S5_gJK<-I!p zyBA+FBx=D2)#zaiCZaCip+zIBe)8ls%u5ou8?~!i2Cyt3*o!IycGs!!y0I~g`jF&> z$IZEM>X!xz*Mk7HfRuA4jKN9;*p+5A^YlyTozT5vz{0Vk_gFu}=GY5F;|Wm~G?Y7@ zzKDq6Ab*$4VIT) z1xa%)_EseLeM>Xl2)29#382rYvsDi+GUtKO0{glbWk(#K(Jr2~iwb|u%?_)%7)Awm?YdoEOrJ1);-tjWC;qqJ9joDxM3-1nK zP(mCREFX`+9!y37>L_e!(G6e*b5w|yo+vs(B;QxbEcBz7)lPtNstYX0O0*YbLgUXc zg90$7HkgTE80{G_+>^WmCCsd_%Wl0oMuTwqY+?@)lfwg-g!%JA&3DjiVi1Tqzb7mbUNTSK*S1fZQW&7Ifs=85T6CEWUpI zy6Whqt89{v&uRz4b8}s4ZM(rqpu80^t62p{0>G@d!ot|KUte5}7HvuFJHXHwSL8dV zAK@DApP!AA4MUXfkW?QHIhFxN%@4LmTOkQ2=+?_hcn4bpL&s3TnSe29YUuOlr{n9~ zR-Oi00U*WzrBgtc|4|v4B`|mP0pOc<@taDj_^S&Qg{T#VTNmavQgMS9Gr_f_NU6Q! zG;)p3>$EGX_yuIXj)?s@@fiyinR9y0tnpe8W41%s76!A=xQC1NF3+E@Mw#!LbxEE8dgmBznu?h zMQ$MeSs=5xE}1O=cqXg{Fu21ndTCa#ev68Ys8)&n8En>J>^vai$pgTI6wiRB&Y7F@ zX@x=+y@B*n-5(xs#mmSkYwQyc641`n#}yL#`EyWRDVub z`bQE+M|VUykt&%y+z7L&HG4OaK^YBpfIfd^Mal&3sx^7@0T-Twho_9^$-+E6uzb4h zhZVC&!+m^cU}WF{N<&G#=pit)4jd(d0Ai5y6UNp^5&2WoYxDg(lqD3(5jh!E(Mf{s zBxJNyn^}M%L>{&HRN>|}4KoQYOW#3Que89Y;D~vR5d#AQ5k)AlyWAwsqA(J^Xi|6D z$jFG`IRJ|90&6XVk2dt+?k$$_)A@vk0LEcjyXwJ{CwIt%9NvaNYzO4!<=YXig3@jw zjzFqUgXSGL46t&qyLWF!M;oQvekd;|T|-A!?^9v&D_oqMZMgWsX}18Upb(4s(tF1% z4SU<*$w|bVGgSI&LjuWr5?oWNMvpFvISX7$t&)-z4<4E`=&fE)(>RW>cJ+cF<~*p6 zjdOY&I%RhSNxz#e?I;3u_!ePw0dV(SU_ToqbR|22^pkAts`p`efdoga86>xo%(Wv`9-q50TUpr1*E6A7fAG`Pq`Yg(N7H&QUa6il{V+TMQ{rw2jg8px$wh61_{NiQrX1 zffmYRVe+#r;iM5bK4X;x2&ZyZ1wK^c#mL=wW=;(@k%|$SE%7vCI{`NWEVWvoLgv>> zmD|y4hItR%!xbO`&3aqjIMAX@k3Y>FBb(h^6q>@H zp$S%sczs{s1LBJ_!l5)s0JQA6dwZx?ufC4Qv5G8}%nj8#5T+GYA2loHyPzWhcfd=9au z*5b}Z6XH=5S)bgnTU7KNKp4)xy2m9K&_b<(H<+&O)234~%oyF1!FwfR9waN$qzlai zY%h>?@*1)*ga9GxR&;yZTOWzx$#tBYsOL%=LkWO&6hn_H5lyb6%RtMX*pLNeLKd=_ z(41jIprZjv(!cQ#M?fMLP`5Q=$B5otIXkbV1vly{tS_1zaBTc$V)t=U$AK<+JM#-6 zp=g>Hz4U9iv?p1U>}N+p%@vi!`F8&il+yW&*<4z75nLI7{&JN!iSZV8?;y>A<*)8Z z=7{_m_>!kjr?OB013*!5BVHrvXh`|+ReaX3IZm&lL{Sf?Shh-I+)+{6bKa`Ak`+a} zs^yj*z&VSvC66AdN&G?|SAr3yWooQv9ot}vcId+MwAO^ngAEL*n{ixI_G4=cxbR&L zYpV}I9>9I<;WhNB<*ePY{QUgMxJO8y&l%Tl1RNWq0!M-Fyjd`I>n2V(z>X~+we*xm5NBm;Xl0^V=OW(Gj9kzIBzSB9j%el^MX zzRc7Z$KE+Vm1Pctq?@axeuZ?!2i2AU{Pe?OO4o5yMjr(rLLRqwW|4&8tO*DA!jZmjiH3x3c(?LGKkuJO(=tL4?| zpTxL&US1x;Ts%CR!c&gCfcXb7G1PwF7cd<~cBo*kRaKQ9xtc7N!1%5Wga3;%Bqaz3 zyYxD!sHp0`XGI#10snw&sLapJ%AcNpiw3NYP((P~<klHyb7 zxO}Uqx^ne#aT*jueA3LAre4nNoQ+N@zJIUDr>$9?>ubG$?gIwVu>&j<`!9r%wV{gh zD_)C-hli)uB*b5+cpPng6@!#^uJY8?dbsJbh^6UI58&Y<@HaH4kUhwvC;_}cEI#xh zqe@Os589p34#R@vdp$W=;w2L=_^I!kn!0+w+Qw$IO6g|yk6`@S6-D0uDMgn1lA5Fhr?yC-^-{0YA!&`1B6Pl`BbB4jh7z<}Q{WRyLaJTgEL{ zL~qi_?FkG%KiV$5N@~-c!qIHEpd-gIfWgdtp$7_EwmQE-H+TboiED(6xEouCwu5NW zBy#TKPmJmohhP+6BEQ0#Qzf_o2JzPb-ScBphedOCILZU&UaJ|sfIDE=iNS`kv;sot zqO%Z~NBku6#z9E=m4t|8_(Lx8CVhx zL*GTM7^Md&ajO%Jv9U1`508qMT$r){Id8~AP+zoFSq23kQ8v^ixTCBraRT=2h+=R> zbTvD)v71tBM_?r!Q7ei5gUq<~^z`Siq?*?>vcZMp*|n=yUeetf=2K9yX^e{Fsl1m% zMF#;z+1BG2^8QNq)@0~MOzrGfPruKm3L<-30~gp!reoAvSDTe${BHYTwe^4KZ`XDW z157n;f!YIkF`Jv8|5)b~5!K9!9T?c^MBI+7tgS!y?cc@EPy9+ryA8~jOop7OvQz|j zFf!z}pff5CH5M*=Y?s}tOot&h*M&I;Enyz|HN@!;v5&czwEaL(=mU@Dvq)dvOv@&T zD~S`!??hu@`{V1LtnK%Lv5^EOW!=8l;RKY_uwotgE2x-t6}N}vz5n>J7~zOBNf_W( zg23S^FpZz1j%@U?6%rEKjphwJNgq#WJJD}}bm2_;f=P1%1CENzm5>^Os`!wax2Q|@ zIZ~*J3MbgRMj!PU+L#zw^|UDSk;c}o;qBHFrYnsF^$^DWE?$od;N$+&p!i!8B?rVN zMzLqlb~39~)zxj<$Q_gaiH-tWjabI`BmN_M_U$X(Vwtne)CV4Q9Rx9kRO8tv{rbRc z6SQK7m`gAd;SJvRh^{9=)jnvuLH4j}_3F=Jz38zCI*4&aJOF}dph@uWvIB$kIo(|2 z{lMn?NPi=(@>E^;yQy_RLL^$82X^_`l1>iSgk#4Jg_FEBp)pzn#*$+72TJa}dK56;nLzayC zqyt6h())d3pa8e|q@x%GgjOw|q_KYpBu58CYp0{YcYHG$4Y)&QdU z`97#Rp0pMK1;aQH2V+I@l4QtWrN|Kx%N7;{_4_%#DN4tKhJ^d!=yuq^AnRy!A!IV} zR@$~Z$Q3}@!+UNAjz8S}){z=NLBo~5MPaK&-C?4tHnN6V?CPh=y7fcw8!+nLEp^sCpV_ZU8>lnH> z+YV7pODVd0Z_+p#sH)mQY9ZTUPPU-rtmon_XFUrRm5sHnu5=HdJEOCR%T{x!RO4#iO7a#vSZcgT#1FN-+?PD6L`0GNf0p}ji~ua_Ge`Z6#NzpYX9inDVB zK;eM;Js80gVL^5O!01B{AR_|^wwZguXFqOjo_mMZ)uV<9vAcEtC4Sto-Gfnt?LlyG z$u84{Lp5Vur9;c)O312V=Q!*0Y|meC7rfc35&!$hey8tw1MBnN*syji^qD`@o;dAR zYi)X-&El!l*8l3k`FruFJ~lQ!iCJ=lhK2b7vGcPM&x#f%;wN-U5ky4y{BCg6QelWTZ41p?&s&%Fai}9+0+CI zcbQ__oj_78Djn^pBu~ zBX;LLrB}h~6{_b5(_>8se8v28P5=vShmngDD~G{5O!i837@7NY?_v(0iM;aZ!mB4u zc6YN}>DcauXw&B@%rSL^w(Nj5y_5rD=>?VJK|btq7t=J^gZq+Y><+YT6n#bw$Il~uxp_l5@|f@uS@n5 zxdm1Puiz45!QPVfDled%Jjwf;At^C=$){wmtH)J&=&_isO0;sn(g@KJPup zC9UlZS2cXoHWfV}ElhpZo~8I!S0e^juFxOdC^8g1Zx*VMvC-dY%;CSmnDHto`we5w z@s^;2->Wp9RLd~y0A*vL7`}&?hUs)Up;v$13$ony z{XgynLG$I_*)i5LdC7K@z;7H)A`3(s?)+m{V3!g{hcCi^Hao4q#I0>{qO~s{-7g0> z_u=4%CMwMkOi^1=U$5~~Oz!{C^&a3@ z|9jlHc8N-9DGd}!DMcbFl$El}PNeKTvKvB55h;nt-eqs4qCqkXHyM#lX6Ezy+|)Ve z`Trl+^*h&fe&>|?{(e8>{eHb)gSQ1J1<+q*3Wgo?k|8nG2XW?HJ9f}uY!eWX9=c-X z%A1%S)D7YYCeYtSmN51-5SROw)6f9UB2WUeD8HQWEavww#N(Q*-3*e#!x#JC$X{&- zmY}x2K1f#ZvLW5=1FqX$7`lse4Kzt+19vN8>G~5WV9gnL`#q3m}s|Io6 zR#hivbQloOfg_VQzOQ(iqt~wu_qySYxy@AG?1=jLu!02D_4g(#Z8Xe8dpq9JD5q!S5b;8aywrdMw7v zYT++qZ^IJI4VnnC{%H*&FfP;?zE=+FhH0*La&#Pk=MY>C@XbJGUMKQ<6Q|sl^BAFB zgp56WgU?Gc*1qW7t~VZ`btJxvvZN-mE2(ToVHYF+&z|f1f=hkkqMeWH*MyC2;*dE5 zj|HJuD*q;0(~oc~;BWpY?*Q&|fs2q(D0W-As$1KdB$j5eZn_I0 zm7Tpo#)GdZWY*Tk>v5Ms(946ZrsO@7;iT2cq@}Q7*9wzw_EXb&E0`@6^m#n>SA_G3 zuz&2@TJMi35kBdJkzl(xOf|=q4b)BS z2jvL*9fM-Hmwr1YX@9awIr>#v8gKT}LQDh*NmL}?h@OtlFL!BYaHQTwnsIcedv)te zvrp(2dAYkU!vSCwpIuvoLEK=+S!qcB5cP2jiVLI7=m)?cV^?z$9U_l{-W4#MZ|x4A z(-R|4kH|3}s)*a!BJOsTG8OQ^-%H;!!n-AG0O3Qi5i#;_9$U2#O-cGCzKA~i#B!zR%z;2&sBRF z?oR+79thrky@moQ(Iwy;=PbkzZ~%~aRnsw~bSSK`Xnf`r8$C)h$-;`ai?x=e7uP)R zi@u_*+3UF8m2|a3WmnlY`b%stUw&<3?6yqaQlKTwO}qaUquSR7ek_1z%|7W~^Z>81 z4j$D_#Nr`Bd{a3`Q!S4=tq3v|;dknkh*WhQL8T4)P{adOw)ez=2giDr&L%paq=WQK z(X(YYJ*)^-3R4;%!P_T&hNfA;paz`rC?S96+7U-{IC|(qE-q0_Ts^Ab>d{}jm3CkI zl??$G6^B>k+O#i};>^62uc$h_?S)NzZtA8z2j%{ug`2l!F@0p>Gx7jRSt75dg-55q z^_-;SYuq9j`d0Mdv08{nTR^q`LSw;!UAsLjG|$T zb2!I-B({Me7TfqE^GQCCs~MHO_R`caquAxY_B*`cAl)6Q2obEE2db!bP=Yhas;GRZ zZZkMpwzLr1wol6Svbf1X19ihq&KGI1Y)9@rv6Dn;Jup z{1+kWPtI1ZSA!)Y0N*=xgZR2DC*M^(7+<`~EygVkC3~^U`p1!@I49JtU2t?0wG908 z6c1qr;n-r(40`cS&O3WesaVKn-#d3`<1wefQMy*s0lW<&!2_Y_R&C7@`0iJXySacj zc%FS{-deCR@qfi1~*RN0J*@2*4`C@ zoar!@hzH=UzLy(3u`M7sJcvl&xo*U9aN0|PFpTX_KU440b}C35c$rd7odiu?h`l9! zadm2<_C5^1p@&!QC40=!?sRK;ZoovZi?tZKqy*Z#4pj*KZ4pn~w z{TH+iOf2`?G9nfBT;K9nWKe2jlm1|zD1}1Vm2~nFRZsDH2bhkuF-7ZXJl{5VYxkC< zE&PF&?OUPd%CKPWd>01En-Bz7`_2t!94`oCF3qCQA6DsomCa9CVvBd|w<<%L)dh*z z!6DzgKi;wUS83DL;&l?L3CfZ=vo&nuFr016>FEA>2J~W*c&cwX(Z4}!(B{2!uUs5W zc6K&xjA%u+%j|J5UfaC2A7tKGD@Q>Oz6~ckTb43SLz-a#mo@#f=#Ebn6>IS@L=32I zb8D+_z=FkQ^{>D4klc;)^AOu#jN1Y{vVMEbl)oC|=V0s#VHN#8Gw%{8p;c0Su?CHS z!PBO$>@MY568EF1=!a)n=LM8iTRSvJ5H}IJn>~IJf=REoyyQ~ zAE5YmuVsG`rC(ziUiY%tHgV^W@{ND$klUsxZy>Mpjj*w%H?w|%nJ_G2!pzG6RS*t5 z2ZPTjNO+eup5Z^&5jv$2d}A?Jd?0|$xG`VpSSOj2w0U1lhS8K9#bV&cNjyTXqf9hV zOYQHm&P-(Z<2Z=YW{en_>T-Pclgg!(ZR}4UbCdtntH)vz-V&iO$ida|sKCN(MBm*$ zcwd#bmSDEh#lR~^hzHjsh&(*IcgAL+jMr&?@=KMV;7XaeM>3{ zyYYe02lj0DfEt!CzrKi4^+%Va*rkDyv0|*0x-e>tz$(qXDGML7>DiR1)v<~(ya3N0qlJYi$CoE;VP-C^o}Cf)sXqWZXb8RQ zQZ94}1kw>)s#JslRo`+kYfa3tG4tMUOLucuvGQ+#K6H+&St|$?S4l@*;T%`**A=VU z^;ApmJB)8q@D4gD6+98Q=i$SL)iXDXtE<;zCUuS(6Jrr0qxiZZWks`y*TQ>b&NNpV zKdu`T3^@1v$3fx39doyR>^<-$nlTM0v+{vDjGa!`(tLyB7~C`cARVLGkO$hTa5*A0 zLF9f)O5}m!MKBD2{~}$Tf^xtxrsQkOpB;Bn1$eVWLBY9Hnk@}?aw3b-2}CHFL&uq= z^I*gHw$tGbQ!y;^MGzM^*>-!xl;)=Xx4})d<8zF?Z$YLM%&T6anOHYup&6z{^mvl*rvvBop32UUla3#Lus-f8ll zdClJnKe`XooHcc4exFA>?;DZ06<$E_69t$A?!D2MC2}$t`jcVmIA-2#aYSND`sLIV&{=M@JL0vofQ#C=VpI zqd)`T6Vs)KiQBw|r2T2A0KhBpiy$6T7csS#HvYPlZWAQsr5j@`Cbf7DV-=8T0b*vB z6IS$_w(%vMLs_Ixvoc*_oV%gAyx^f_L~fg1`;5mzU6m z$Oz@z+q2;gxF;uOyVO)KLXi%C38Bya)w5R#Qu{0=;NWnfdHBZlD%gvRIM>jhhove|DT3m|Zp~+yz|mMH3yy2u zzS*xWmJQ2e78)mt1_LI_qD)!vx!c3OTF7Smn~s3QF!>)!55u2r$g47)RU6=E9$QEQJTmCApdy-HZ>|45#V92Z^P+zR3g&$UmCjAOcr!1)IL5wubF?)t!OHuTh>(M zVRc_vNw?~ZKW%Ph*=p*M9$Mb@*ken~W7~7ZD`ACZJp#$pmZkLeZ-4J=ql zR|J>{Fv$u?h|m^+*|-Q-MJB{i=O-$4r1sf--#HET1TR?_nNBP|sc=0Zi{-(?hefw# z7QGoefbFno$L56h=`|j|D%Vpe>ZySt=as#$MU`ngS;W5m@Jj`=R@(CN&)25MZOpZ) z%K-MFRH+nj=pr0ZS2cj;fE@Ix!ja=6g18TR<3gp!7z8efp8kP>cd8VfHyB1Us%n~@ zn_$Os#tFA8F<6W(A=@!jPUCIIr)1LikJ+u*usPzZ3=@m9t_M_|gYXf`WeqHKS^8XM zjKQFITcrB?*29{hMN@ymrO~**1KW>k8y7E-^HC9ae{)Ail=)dZyG&FSV!Q+>h{W7>da<_6#|yEufChf^8;LYbCopT`UntI;}bUz^yP@J*T{A>NN~ ztI(m2_xWbO6=xeXg&Fqjzq=U5sYGHwCUjO(a^517p;Oh)j-Sj@ zb4@UK`kJIAOyo&+#xZl71=jO0$Y9w`#~?>vUEOY^Q@9=wCj3c2xo$Y<(G`wiND1?G z1J{0h#93uFa$Wg;{eKvkN(bGwictCDL%m?(c(w1qy}p;)cj#1b_)rhwlhh}*_B;44 zn3;XWEQczu>QZ0y9P@7Y>L&fSqfqSTL@B*YkW6>jB9mUtqrA7R1u>A5* zS_Ix5F}0DShjp$QXnY^Y*A_Mut7z^H)ovcTd;twEImyBWN?$k7ZJAg?CD`%t#@IMt zi=dS*W4~BFqmz050^5$Aol-a3nYGV1DfEutQxIG{SIoo4`M5=b#1+VC0Ya}x+8fc8 zK8qxsHz2;_C}4>_>KtR3iT#YrN-TWiH(9+4r0RWvl75!8G4VdL=XsVcC| z>K!&omua2cm2vJMe`)r8S*n`h>C4Ig`eksF;CGrxi2dlKk9_T-pf|ynPSBK5Q zvm2Ef88Zkjt#+0FkYw)}j+rv+{K4neuLU;(PForljYD!A1E=dB*%jy*KGy&9ey}@1 z&~8Te*efY1oF?+J9DY~ptdptkb#g&h#?L!_ekPdFQhN}!Vhi49Wu_Sj;Oe2dYWU7nZB%EQQRUH;63A$UG3lbAPb&>Nt4C2bcv zRd^MiPdbe*_&HXw?wRo!5wT&H@xZHdZ>cpqQ1Qy$t3B7p}mMF*G{r}t?OESS@)9S^abVyjx7{RpWQY#l2sF;KS@$WiyjJGa07=AacXh1mH6Btc9Ph=d3dx?7k*5~n42_GD&fgX6OZdOTtUfa9>r#UU88nbR*lP^ymKD-H}8a<3yHvD=PqkE5P4CFKZs3hwV ztvp_b8QPL_ogf9yU)gQS{Jn6R;kgALd{gdI!#=a}z#bnS3%hi~G4J|V|{ z0~yY$CwE3Nd%pIhOMIlfk++v|p~A|M?Lid&54|pPPuQbv;MZ5y9+X(P^VexQU@8os ztb-7BxYZ^mfOPVPSRa!(hHx!l)zAWXqAsHbSwd`Dmu~E}l%A;sAB6gImku$cJ2>X- z&TK~Av*cr{4+_fnUn=uVu~V1lH0Jk}N$Km#nBDi$>6XKas3m_7)vy9!Bv551pS-zr z)8VUY2!fbvWBjicBooSroncWglao(?w`xE9>pEdtL9JqDWAjLG!`wl{u!Tl)HcM6Y z;^qGRo7!S1{tw^5|E#0u@*HDO;w)_O2Zs9-Y>xdIHc?dGROUZ3ckPQ=m*T6MO^zC) zgu7tZ3ya;G`ZQMN<|F|gt}gkGS=dLz>?lbHy8#4D65ok$PPi#q2(G36Ow;4{CoQ>_ zscqfA-z*~?9>3K=$IcvgTpFZAB6C#;~?(uDTDk$pu&rr(x{<5C$YRmF%hqzH<){i!C#bNDmS z4TBH|RfVo2gl0tCiI2V%*WzuoFAYAa;H2KlvF&epeREj}NLM73Bska`SU-{zc4CZ! zeg;lO;_&|=nHm{Q&T4(%=H5=Y4myuK;w8)Al*3Y9trGVKKC*V5ZAYhkE!0|c!@1*` zyXS}ku-JzNq)_Yk*SPG^4kbr!e56)yI2`&T~1V4gmaYBcL)Fq1c zQ=3o1WC&SI|LVQ>MG)UZ`1_s+ZWtLCW1g19D&!9+)xdxgh3^CO#b~=xU2h@dX0#xv zb!1-*(Sw5!7C!d{*w|5TX>P8qS|>dAYq7XxZ{n-Ff8haQs3s9IZnb5VoBXu9#gVh- zlO*ks{5UbdDNTCOMLhR%#I{2EEn;VEJZ&8@9F_I2Jb) z*CS^B*h2^+`oz49Miv8Re418>+u`TUPq>Qp8Cga1_8`@mo=Vy<2R(yN*7;Pk3 zVzM#UzZ?=O7<5kkP&Bnn!fq0mZ%m5rv<0{MNUZN!Ij@edjlwNsjtm`h-xK>M9 z#q->L&3En_*UHAoO9pulKe4TaD=UxbjCYU2o`sbjyigR8+Cvq#Gw4F$t3zF!JXx>; zA+H2I#|ly`McUH4LSc9k{A1pEi^-A!+)MBXAn?2hK8x-r;_QGblmtZ+g(W!Dx}WCb zI^Kia&Ze$qdp^FiatVDx0(?#mCDFh5fn^=QNj zGhn0I!xjRGeU865({36~yf4jL zPovfSC@+ZN`=ji0M7fIm@2f!og_tl}Um+!?Ye!t7WuD$f$fgn8LLapkAVh%3x~^7) zufUAnlhmbu=Iz3CUoSneHVok*tLXc@;FohTEcAN!xoekyJ~ltR0ruBEF!kNBbMwNG zL{aRt#_StG!)h&W*37+LxqB!?E&@M>e?LYA5FzNsOcxN9+{8#XhCcQq25`-x1Js(g zX5G4*Sm0q8w!P^tE-ofoapaj0S*Q=hg2xuk{f%F>P)M;I`53pe%$x4y>LVKy+Cx5l z771YfdLbl;)0~HgjcjM1Q8yz|* zH+15t8eYPJ3YKe%k9yyp3qIxvWQWAskoXUX>TX?`2Q%#vOz5jiQUI(kIvCM+dE0Mj zuP!^kVElNqfPLQ#eXV7d(n6sRIo)esG|h~mG*ikr<+b4hvwQSunEQl`3vMNjGIRMU zzOO+eB$3Fl6s@&m7XhvkJMAQqxLcCNi5MO2l7939038{#Fsk+(cp=SxE|@r}eFb-y zlsd>by6QA{j)ZkRhPg%8ZkY8N{o3M@KC(46keKyq7q=!K>CJ!pp+r`{Ze~o*faO*H zu9at4@4LFXQcaf$a(>joVUm4jmEh5%ALil2wp6Sa$KM~=-*hjfnoh5biTT|tKvFC? z{JWAql$DmgL#Kj)ZiOj?+eJ`Q;<91S9mP8wfYH$jSJJ27CeD=7A z>CLJp7gspo^UeCG)_9LJ*YKbtkovss-vRwgh0vnW^uFoFH-tTjf*qxxW;NA25bp^J z^fmAfypQUENOE5j6UZa8Xakx-xDW@QGZ`>C-|YM~(MYa|yEn5o^9`?jOA-Z)4di>L z{%;W)k7DC>(NNiFmnHS#n4SK_7TUGP#fOm`tT%M;}fBbMo`9*B^-Wa0i-hv4l z!dh<+{QY>@NC=7LJ+fCizK^nGCp{%KQ0sp>XKPQ}+MPscUi#2c?|$Lo-xG#Ij6R`R z0ASb2#8bbcZUd@(ViHLW?J~U2#7m3GQ!xrNw`w|ideq)XikLG!Jb7Uoi&IN)?>%(+ z$V5MXl>&2967x)$fuSw?dFLLQZXrfh)lw3oM}oGj53?T9nzIIe+b$e?(3BowgH6&W zYnW%A&0pa>Vjwa5MRdN0BQSJ>460DdJYg!%fQ=x^LL4u{;v_c{_i}To3t%`=h}i}( z-uZXP(g9nKIn8y(k63w+uIi!3^GNXa%=Eca_-xsrgR=MA&gjIKuWWBS#FbI6n}56> z535cb5F}%mxsp?k@-kNg$U%g+!o5j=wR@6;gb<1Ov zG*X($v~_$yd#8%W@Vk}Vxvt0=F2ua)Dg|6~(A5`#wk6U%zqKSi>0QJ9=Z(L6pE0Ke zZXf!=Akgda{?XH^9c~6+#4AS&#uNs|N0t5^3=*}72P9r=Dh6H`mXt$h0K}x0{|e+< z&^7oSTj`TeVl8Jt+Y|{cZ|AY3{2`KH7!aT~Uy(qP`0&FlpsvC$I_dC>zEP+t|FYaTf>+(L;1DN z#l84HX;>ADK*R@R^N=eI=QJF>)KmvjVq!ilO1!PUh5D>d^lb0!(?{vZQU!ImQsvDaQn%~hX((wtm*Dk1g&mFxyN;5}mDgLC z8bvjDXjSYa6d??oHxrG2s5QC4aWPo@6rTICu|xQ>N)ry5Ee+8NHnn{}5%-70ljzi% zj`w}E9+;4NqvJzn`1}ylK%5u(?DRvl;IP#qUz{4430MHe~i`8=t3W8rTJ7M z1fn@@G-b&d85>o{a4izqIjI?H=AGz$Z^kq%kZ_KaTGFWB;ci<$DH8K@109SR2Y<&{ za{Q=%$aWp*YiaJE9IP@{Hn#At85~elk{cvy=cbtRA?CO{*S|e?xsilDwG9gi%ipVLwyXc(YTG<&bc)oo&p^6ZT z(=b|BVe^B}IiS+|;pRTKOmr0yhWPe9-{9Md;AcOsCOXGe7YIE4vq@o9@s6Y1S|Flo z5zA`Wv@&hKf}n)KOyFL}rMdFTGo6G{5;xxU{LcX?b`*XyK+}Ho_5z843tkx$%~M1= z0+yg!cqbyEXd)I!h#ed#Z`D$AuN{JG;LhCr^YufJ9|%N)@n`1hy{;yixOU+=3fWj+ z5$f;{yads_;M^{BOrp6uXMQhR`#^(&lNsX|2o|C1{ne(95*)C@j7}}iX905tb{_#y z^)BQ)9z7%TE>W0hZ9XHu`l`(Q?sUS<$lBVWd;bvYjRQ?dS;|A(83QhUyWUC_A1NzK z1$p0n=K16(Q(AwN&6Hll@e>jMB1$~O@bJYkH5tf;FCuK!-X97Pk5N>12nHUvLpWsP zcX>*h-QXqSlWa$UuyQ4&N(j`L>yRZ(8Ww(&0QzOpc`s>UJejPR?BLD%9VEVkf`Y_m2xJV6?6<3bQWxDX zQ?CsBp&CUW#%+@^<^|}ugO%j+4@`%|Lc%_bI*iF zReeGE^2`gW7ah!2PgSv=h-)vHujGDA7k{4;7vb#;cb;r&$>nM&U;->OV;*lkShp?c7xJO*HOL#_yHow*A^9Kgxfq@YZ5^4!;4~<;sG=_I*1z z_kKjNJpXePl>9}+uAOjd90N1|t7<~L4ts?y%+bV9B;2aiNH^M?sGi00Z#m|}e$(2| zQ{?)o-s$A%Jnl1$v@n9UA6li!e{I9}h|6oEUO>{3c0L>orZ=^|5v1hQJ}%M znGB30Z1->9_?ODy(MIy+{wJ3<=6x~di3+Xb1fGLNqwX|og&}&xlQ8sftJT0c2k%(7 z+WGUgg1up3ruXK~>NRjO!~8>VmIKNRv6Mgeb))nrn^L8VWi{ph3DFrobVAfDe&)T1XAmW?=Aqx1Oe(W-iPn95pQoj5`%l2t7mcpZmi%B70qw{MTnX%_QUQV{^lL z#}ZJYfS&(XzF=>H=8KrHM~q^Qof?dQ(RuPF{OS~ye_Qg$K84HA4rz_VSQSffV=Tny zd*&68;1m+ND2}r7^x&JyL-!k8T)ln1etT$x<6NxHu4~J{(mLFNQ5)1ZCsssSU9M;3DlEsdqU8GV=fKBSaz?(yf_Dz}gKYw~n|k>95h2Rm|WkHR8S ziS&6aAcnJ($*6u^YUesFTJSOvk}Uat{yOF$cGz$$Q@5kw)H`;QC zHrH~L2g*R`OT^Ny=yxn0Q+`Hnl~27cvt7_BCQ$vNC>DOO;rWp z%<+j|tYFEmNQjf=K=St;;)QsQ8BS5fVDTLe)&XaiOqE%-`Sid9hV|2|rinNgvOZCa}BZH0MI72Y(hHT^q$}ZzCfR)5OBYKD}XEl)3c*>K(#k z0{hT$qFP0+H_Fo&si};_QJX!)5#b?Y1*K!7qwfQG4dLs5@68(#MC+2YTKHZm)xQ$_ z2LgM$H5+UPZpw#7+mQH|-P?~7-5&>6(wYYketmzedLh)ug`3YdtT5@B`6Vvvoge4NNp3C|(E`F{I$g z&L?<@u`L*JF!ePejEymhz?+&gIZ^DR%{pg}S}Z*>M2m53xZu4hha%#XKAw=$Ff-=z zuDJL-rNC)2oggBK$;ktrtADMe9S=T*br}AkJE_2%1l@rz^}8w10|wWtU`;>_;Zdi% z78D3$KJ1EvqqS*v<_HG*-LYAuzySpU;f4obwM%Ss3B6!CM0EHwCnskzK{JNR1m76m z-+FW{f)&k0EYM&>rp1lGj#GA}*>5T2gy<)#TwD+BbXzqOa+%Nrgql><+j2BTNKx3GDt`4fwQ0i zB?E^><)AqIBq@m-v($?u><2c3~cV+K3g9 zr#0>FX#c)QR>@+o;oM$1j-vN1C~gCAfQd1N4SrQsRqP}Vv}35mlkEmu*xSiI@N5^R zfgtp@$)a^Dtgx-9Sa2P2Jux`86|-C_=65_}HX=I_&EKo4Jm=|bF6-_axOYD?U#IS8 z4>mMaPxep)KiO}Oh+8_Sp*pjk+&1MxxsR~;ircKd9`2^+FVs~lz}ke=0CQh#q7_Ho zJ5ru8f8O;!S z5%p)S_M+!!CbDua$%O15NKVIMMH)OgRlM$}M9`mRJMqx_wLvl15qIyrlK+bc4HtoG z>kb8uQGI$sT^3bLpCliHH1+AKYj|8Ou`X*5@m9~Y@?zY%;^8KD3=oNU90udQ19iyt zdy76B)<=;xXEB9?M3no$dY@xd<4Ou@50x$^0nj@B?E*Ybwm17+mmE^!OeP2R_9_@E z7l6(9D|=|i)7j{=(H-9x+9Y-*t;xSOip%2mWvH^1GN1$fNX7pbF2pC(upLY&0bq_aB_ zak%%Rk4-ZQz1x=o%qoo`*+!Qr>cDMZzG|kRS{MZf=Ny54dKiW+hP=eG7;iSg-Vwek zo@;&hkW|!&??q}-I6I%T>+Mo@Y#S}mI-Ba%&DdS z(idN~l4n*n*tIF#re~)50%BqR4s3Mo5a=>3#`>MymuEzcX#Cud^VLPbd>2;%jM3M= z!8?DHjT-P(6|XKNWY{^61eea2LXa)5{U6n`;%uk~ZQq4_r$eB8-NE!O1XY;$!#u zN~(&8#Ds(d$Us!!i$mne^8!5<-!)rkcD12-ul(=keSE%o|6L>!dox#H=}8n8=njef z3iYS@kKv+=XqAZZg$`3J^4w}HHPln?O zo*t;lOE3;*Bh*Cla^)- zo^D%s6XWCe1IYJ?@0tO}mx?-p6nCwq-%LvC&K&AQ7XV{@z!~R99@o!)OxhjC$&2gs z4cmLBL(IRhWH%{?K+3J#Mdf=7bja*P(rI?eH)25m?7xXM4g^TIn zGRs3mWY8LDZ@^oSEAMundv{CG$`#RyF>GhW*|tY`?tyKXJWfec9N+GwO5wpjg4N(a zKk;4jSvA~Szj62OS=*O8x6u3~Ct^Yeg26=au{zLDA^7Ju3=taSk}tg@WVIF6Q1lZk z%A|TQDbzE~PTFaR^1|x$#rK(7j0fVbS@0&!VXBgzYBb%l{Yyv8&4*85U}XXu?EX0$ zY_ej92D+D88jh%0!5fMCxWl@pg-81YkHzwswvG#Rx*Zmw-8sye$C3AfW%&)39nUYw za&?F0JW7kFDD^CVq!j+`glyoY1&dGGi-(UjO5S7(4<1|Hq`R(!?V+w-+2^*&tVGM# zpZ9zb>TL^p(sV8OM$xQP1$4lgEdsbAYf#8Bua6Ny^t+;!Rch%cq^@)D@Kjv){GnpX6vDHK!?DCr5L2 zS>pz;VAE#Kb;d zN#~jx*RK5`!4F@!BvQgcrIq*YIrM48iUqZ@FD|c+8}c?%iERinVvmG(CJjyPx-DDc zo|T{;#_{w~lh5O@(I)Pi@m>e!AUd;s{;gX$xY8e0|Dl^*i9hl@EC)26G?!Ut+@$9) z9an(vIO&2O24}ArGsnvxH3kst5~9JLfQwUa;6~qfm%hpzp(u8Zn80;gB#HH-DGJ`m zG_W8I@Ej?rqe9Q%IHhl_#f5d;;*g-Se{Q1kq z$+y2-M=ZGYf?XDH2-DJh+EG}q)}Lk?qf%=lAMWx&@T6$PEoKMn(lM`8p@ZKC7cAJQ zkdiji>|$y8%6j(>t3EXEjnV8cj53&j^ z{ZFX6jA6jQsZ?RxmF1jGJq&>-z7`o5sa_abx4^w;H_C`AIjT_oLvk?pb#Hj!zxBMC&O10sA@;*v|*)WOE$Vt1BZg3n#wi(uw;MXA3ruHRB@=$AH$Knt+n+92wR32U#cS0HQ0GVUjx_Dkw&{07+6@r zeTR6r&_b@y_U`@rE+6r2Uvbjx-%j?ieN?vYm)$@}#*9PD#^D)Z$-G6uKgYa>82eTT7;FT+TZfeR=R{m!L z?8?lRx}31xF2N*Dp(yg_{m96e+Aq>0zuS919;90qwMbpdyl8g!Gydmo551WU$jM35 z@EVT8u@G{ppzf_fF=>U4Ga@|v7pzSy$fBq>$&mq@(l;E3a15%?3HXkVyj^#W11^>r z*i?h8ZjH6y4Leyya)ka;Su=Xjpo)V6x!BLfv-nrmwHmhm!fSpXP1#|JWSqj#eg=NaJYFUFlee(B|>Gl7RCaX~ z5R3;K3wqhAdgqfkaMC-Mbu$av@bA1geKdzASw2GQtnrshG(<osVgN9cK(?aHgkO=nHhjz`U{8Lmx4TW+3PCtC^Lh> zf9-VJs98>o5y9u>Kwbhsx(T>-_&vGybBqp*Rb@;R7&mW@0r!g&rjtOFD^O@&Hai(s zgjiTDjK6{@>0^j7xQdB&9X!Y==_)>@gvI^-o~2ZhF}nYlqIy@wIOTnn^-amzH)A%d zQ!vXL0XalqdRZ-wt{ANX=SX_d9s@uChpoF5|4dG*Y3%0ZRZ7bJEfqSsfm>7E=>GMe z)fg>CIo|&sqrm?3k=iR=&zleVPXpX|R;LMXRcqKCMx}R322B$Oh&{Z#)iK8QOjq*s z^t8VHSb=x2d;6Bt-6@Eni4#oNcTVZWZR2NL-$flAb1Un9E0#@d*|2R}UuwGRog3R| zyw))PNcvN2`!%OmwN7!$b`QJwta{F=jQyIY2Di(esE(`qApC7YcAxu^>8`hj`}(o$ zN<%n;Z{!?>YaDz$DyKTpap;L-!J0|JZo2NJjyp-WNI-2~(o%2(Kvfdxa-CSkU*T)R zF=P209?8G(Utb!UtC*Q3w|@!wvRc~4H!v`E^C3O{+-I03Ibmn7GK~s@z4F27l&`2p zaXT$TR!%LRri}h1cs*eqakEF@cn96uc9~y@7IXe zx)sch?SKNsLWF4&nvh`ej1K*v=_xryW#=;c(pcq$E?i%mCq>8BZrRf9=aupsFS|+K z_!{Sx{0=nf&uTWv%E{8$J<&8jSZ6gf(#5>pu=2OyL;0#^_jgPMPDwW(F6fI=K8R4> zNR9Fsiuy@+S?vmch@A;%g$aLsos>W2=) zOi3PR>$3`FTp2+X-t0Oqzcle^(u}@W3=b`{Ma94zHTtm@>9A30OB5LyX=a4AxVeRz zVm+PvD5qXtPk;8nIjujr&ZXdj%WnR@#hcBp@T#g5ycsHK-}SNdgUux-@+fGek}#f7 z&9aE-s!8Zh=EJX#!J3G{^mCQri?9ngbP%D|SI&nHt*yMbl^fH&!-6+ZA|p7BBSj}O z7uh)7@FF}EK`hbspqBSb*C70Dcs*`kpK}Hy?rnBI7Jv|^agclOUTF-HEfkNrxx14% zl~wimY-z^zHIXb6;29o0?9OW4-$;q+9r^XOD5m!s)0F~E9IrM84#DrAB%O!5R@>#G z63gVW?;%M5u41XDR^>xHHE>_UII_2X9(RPl%F#5L!b)?$oiWN07x(qnYkbKt;NspA z`{v=Hl*5-gnJ6QZ0ug!&g^L+?g{ca;y{ma8Fk2q^u59HZ@;pxLQQ_Jk^t*(00z;}G z9y)!Pd<_E=>ISye=Kk8kLYLbWbGu433|+~19xq?MWP&-*_k-j@6yJ93ZOZz z%~n}|&(rg(Lw{Ze*2zgoJx5S7e5kF>`1X^Sd?sk-)pbqbFRE+&O1l|8h@u%T^~M?g znP&j%z#q7~e5-c_j+v;{TTuF0A{o9AhshoAS5P8;h%qMQW+bPbHLiTvVBei^))10* zDI9;6st&;z*S?9|rqzqzc7D-PIx~Z(!9+xo(O}_)+q3;j9oAabN_u*0Pp^EMbMnmv zGP!9sxqNiFXM4kpbEM3szc1D}Wa^{0mA~tUuB$_w%IATC(3Fy{ibz9W$WTSil9h-5}rmHq|k`=f^KR$5cgClP_Bsnog>-Ik`Krv;+xp0V$ zG?By~vL)Fcs75UywDUbYxIn65@7TLJ=>ch*@OaEi(&2h%HAb-w$ZSAENwN7gim?WN zo{ZPKFi3L0b@tldAXR5fv3G@*kn!>1a#1`;1#+37d^b0Ey876FD>fn_n+}`{ydFB1*LBb3)g6Em+7rj zZW{je+^oQN^?Q2Bbv8XpwcA}Pudj^pUcEdsD=@)9g<4ZHu+OYjQdks zX(9kj2B5UQ;_{Ld9N$=yjzl1KHyZFx45d z94OP@oN_pNuwboXf(4Od!HZB03;~`pzx!$YE%_vO?!b*b#^+EXfa7*J!uX0IjDJ84 zQ@xaAwvk)23RzQkwoYU`2TVnbM}rwwg2?lgFayVv*46mwX;`H75rzC zw5d?%{NwsE&d*mqY65~xLb=%Bm#$^sx$91~^oL6?e-*73wzB_HkGMivocBR>k?a_< z*?w#C^#xqs7Kv@}^o0%=qguoz!V_U^d->%Ba*90RSxcg8M&OhrNPW5`3kz$M zSW-<2t+VqqWu86~e&#HBWdDUk(y+ugsH0+Q2yuxpdsk&@Y(3K~L+4N3*=F>xk7hb% zmyBS`a2zWJ<cN|`}{FD*=j5wUItRqJ>w=gn>qZuYwPGoAoH%zX1HEb!?XH9GC>(y}1 z%H!w?YD~`oou(Fj*A<1=880viDXUufw!ssP^6}XzOVUfE(%lytz2Mf(oPF%QH*=h3 zUc7Bj>s10X&&-S!JgqtYLy}W*!ShoUk9Uuxg=w9uUY(#@Dd6QDqWm<=D|KLe4=TQ6 z689cae*QGh%V{in`iTD^^`511Te5U%EaocqsL!lmWm5_o1PBQU(u^}2WjKy%wOsP@ zr$^P8!CWULTw=kDeZb~z)k>s=f(K?=Hy^W{qDKMk>^A3dZQ|EH)?j)6yLtSb`}cvF zeL@P;;WQKD={L1^$_~&`u5~<{>ya_zh(x^>kE}+#2|6sgax|6e85rbRUJ=K9P+WC} z(lLx3K~)~WuKAMWhU-_bEm^j#-uNj>#+1%15({{F(``zf^=)#dz=&M|+~t^~WOaiT z9Eb8cvfT__d|D+mCDk~f6)X{Ktq-m$(;>aPn9iIjZTSd@jntAtBUK8Km!t8qfYT>| z|NG?8YYh^$gTFS#f#I4ySzIvS$nH+eQU4wERjDdoMS&QncIE*Sap;EIX+_GHs03ifT$NJO1R zN{~HvAthE8u2!e-AD@UOX-JR~8RGNW_q-&ouk85vfy`ebpqRJ{mkyhH0@=!^Nb49m^VV^18C3pTRO_4GuVd+6P)eO5HfYD zS$YBK>|kO|O0*b!RJ~%K;q&KQiKii?FfXD)oK;bz@d)~U^6>Ji#6=W^KhRYs*ne2i z8&>BdIPtFj`Tdi?0GLf*vSACTNYoINfn_`{t|NJweCHyh{0Zclpq?d<;@}}*&F?FrQWQaNd;H{6S1Ve#5aF1^m8E!%t)*PP0})h99io9&=g%(U5;(i zaU3ovCrkZydM>cNlIOL5bw!>*YW}YpW%HBi8k_S3|J*purSW24$HT2#=mt(~;5Jn< zZLIE^Dtfv>aBkZ^55pRh1@5*UFeIuC4eM$pQkDW`Y4;I!MkYfS4!l}C$`F?(*dq<& zgLDBGse&lg8f`F&11V5ltggzr#|1*}P2O$Jl-U6Ch4!$r7Ojfm^p^7H+;jZ+aThWs zfXp`*G<}D+S6-o4HmHoer|C4JqydU9o$0QdcAxIKn#JIkZRJ6oe8zbxt{XggfC2@wFdt#p}4H_p1 zV$x1ddjD zj7_RBRzNNLlsQ2HI}yar3ZM>F_<%UV6(KMtm`5s3^kM2$G~6Z&|Sb$JdMC|RRH z@x$Ms*f@hZ`};qWMF_gcYMYUr=r-*GSqZUc9J^pm1Y>=$lbmJ_7NZs0+w*7rMQF{( zx+ZfO9do(tBTwl}=loRq{c12aJZY4qM7D%mSZ#Ht;(y7@+Z3X z;+?(u;Ax~VU>V@+8wLXWlgIC~5d?%&T<=s_J-}EL5^Zf_!4aqLF=h9r*WU>W@bL)+ zD%pfTwhn6ro3ylrL*xp(7aKo-6 z3Kt%9YnGz_4|YkT1izTH+WGUA0IwmdBxr1w-<{NgPdyFjimWj%_15-JN-_=oQulU= zH9!+g8 z5fv3(kCh7R;w6h0Ki*RH4&D)xfVwMC%lvj3kdcz|)!vkip$Py*RCmJH)VXbe7{8L{ zW(1;Ai5{=#K}lMJ<520YRWa?Ytq)zi+j@JSxg6{N`7{l*d{%)oI2Z%)0@X^@e^Q&3$+bWdK zYy2Eef9UIb7*P}Z)HBOFjROL(z)AJf4QZ5Igj70n0XHrO-0gd7Nfg;R)UfiX4?pJ8 zt4-mCB=@$IwPSy8Z^D(}Yo`Iig~n}q7#qY6e>ABoZ5TnAqpwQ$Axmu7A z<(H{`;)E;oFzd0<05G6*`Gn5}j9nhidz|MJjWW(8vO)QZy<3ULZG~aCk0Fl2ITz1|O%E&1&&`P*9oRSQAcP-ET~T>7D;L>8ZhJWWI}z;{ffc*Uta zP3(kfoc2A*XOL8bzB5Bgy{xH83t#I`NJ{Rs4uGRr#h4a3q0x3p8JTMQZi4!vnb^h7 z4%9;&cRSzqR)WpJt?s2^B7qGKB#)Q*(mDsDSsBtQC@egol&G$PCrL{ZK1q=ni+$&W!CnaEZ;=`Ru(VkVylz3G~lLfd1S!LL56D%(UhT#)` z@3QRtxJ+bp>UWV3zDYtKD^h`jg5D2}PfVyfIcsDcxdU=U##!rjWIYoyWQXWZFRu*j!)j^1bauDrdMp{0J{ntLdq|NlJE#> zT4`x;FRS-0EQB40o$g==n+CcYd-QFey_*NY#)0})Z!CBtouT0}Ka`=kblyAAa2jna( z!dh!cY}$TWOl-h@eGyg~DiZ}%ULR9u@Zx(lY3z`KP~Xt1f2yUwKMBp(ySH!gNl^1K ztI}M+S#(@W83B=Th^5=L!F2rgHPh(RjAWMy)QviP;+-Eh(-xD=lQ1bWv%lX)#vffVQK`<; z_D{WvKg*}+$>hiek~2JG1$-GY;e>*>vA?M6FA*^WN z9^aj zi!~w1PBcOY30Xt-U9zvwdz@;1|K|7pKfRydK1@w{p67n<`?}8SJdg7@juR}alg+9! z8TZ}Y0|B!ThFpkt^q~^xd%GrQdjhIKozVaHOyL$_!HUMIJMa{XwiZY}1w5vKWF+v| zAPStKKjuoE8?1hb!ONQHQYb>68{KZ@JRcz*BcY$+t67y-(&lZ8=V3i?#L?tf{BG9K=<9eUiqGO&);VX4m^8Mm$o27@`u!`=5X#)D_A*dj zotJyfmuaOTPlgyhKZqET-{K5qPjGI44s8Tz|TCwAT4Dz^bBD0mn zfx=vmXwbz}QKV7lPVvzjb7dgeBQ=Z;MqCBzdVH~G8cDH<0K{BiAC zU&DQ+wiT?Q8(5LybESr4!0)xl`T7>opcoPsOVmE0Fx1ko$VAR13To##@_Z{rjWP&z zEz)Oihe5RdGwpxgB8bIZrp(bfV zX79DjE*6#kQv|>bTj2_63kyOAAw4n#?@1U8Y>AefB^Wr637g&>QY z=BiS$(HW;xE54`o!Fl|2Iq`gPo0#)U)ijS=n?_cwdLy>Ue(02!$??Q}VFf>Nqq)mkpkrsmGCe4jHv;wfy8&g_37hyG0D`VjMJ7}n%;>((|2 z$Ed7`)5vJAz6WM?xDH$L?6x-zQ zM z!H3}9QvtoliG|ua2%VYZI3%{l3<(z?GEd$C6cVBmPJ}BWOK_@_rcWKRHz}G@s~}pp zEh<;ksV`3Iy!LMr^HsK;Z(U-nByV+L3zJaImh&|lG_eySa{NI(+LU#&>=Dv$$~k<@ z&CcG?$7?lkK~x`Pu%`-1rJl>v&zxPL)Ou%%7MGb=RmXaLM{2NmrX;9s z3r69TqUddWtI7yjw|rPd%`01I$3?+#c7b6C*!m(84^-ByU26bFhAl`3Gp~5maUuhI zM0byRCzCCzLI=dxaDKl_yXjakOrqOX+onC?Az*JR?2;0cz-yv?e9_XKcwq z8#{S4j(c3b;(ju!Up_eg`?lH2?rA z?76d1iM@IA=39Ti8kKp7{17AJ?};7tTa<^xA2&K?@6X;v7iIs0z&t+7=q;b2G{hE6;5CD&NTgHMhA zziE|y+nGCh{-A4Ws{Pf13%DH4Ay)mL*Zc>Q$7#A2{Dv0JoA;Os&iHH*@29@f_PT@} zBOfcFVT)KQ)SbbidVl+jHGyqd9+7DCyejtRIO{ESC6SV&UEmcE9^6|~dHW?yXHtfn zyuC1skjviwvqE*${_386)l#vwW_zozzN+onUmcZ&K9-xGpHOS0^IKsI!8tc7`^nPVWD9TS-!(y4UyN!%&DF#!5qLYn~^k-r(>b zMNzz7LL%uy`?2DhjYjq>oNc9MzTRhJzjaL`D{uYKAb)p!&$m*3)0E`;{Yv)-6LRc6 zf0No{6X|c!cs8`w=P2m{K)0#t8_RD}DmLv6d4ln} z)it}6j(i=?m*7ttv%7a~G_&sZu7D?l_MZlBdUVGLNp~lXnYvjtM(xLoVm;z?507dy z_GYc7^Ojt{-qOz7S@Og@ULn`N;9YS@W4kEp-HfcMQU(F3b(iz^n}Qv-wG<`Mse7m z4++^5-*n|SzrnS()!Yp>(kB|nr@Ly*x;wab6eJb}#ja(j$%&OU0lRtXil8m;LduT6D7BP;!AH#Qd19#RasF zwRjA1bGa9wU0D!BRYM2tZ6a0P%#4uKJj`*%hE||jwUH;SW@C-#M^6q)QUe!$5xvL# zT?gzv{H-;9`J}tTsJXz#KN}t0vR%1oaEBm;_ZZrln0z;OBez;Yn5(XTGJAS5-{<7< zdN5Pp-=4GMmaOX`T_MZ;DPALw^o%$vF9p_j2j?3$yo?cla4hO|-{y2w{*=jiEuSLv z_gz_x@p`V^{lxCfj6>ytfBl)KsMz=rbgcliOXOT%k9J9P)}+=n>~-kGCfWuERzOmM z0HB~$dA^z71*^;T)wx2xO}fctR1{tE0hHd~S*Zcs`3PW!swdWI7)sDWtuE-ZA4A;Y zy*x_@?^PVEv;qQeC3^19)MKs|#)}gF3+aCleCOJ!8FoQ7f{rU?b)nKJCqmHL>?k{y z-uCH*!SJ&55B9Nep^NQMzU^&2-ZcZ>k*5d4UP&HC_7*-z1f+R0+0r5ov>=Pyl0kdX zDHMJAba;R1;q#l?(_eP#B+0b$TZxMt&Q7%IG>j2!2Jbnk!F?WX^n2ln`vFKxTfs)Q z$PU{FW$U?q!y0_wbD#t$DmG|Bs#x+w)|syv`RR^^oXvLeAQ1Q72>%NF4_OPj!QEHk z3I{qpobIn}f-M60-sk=Tn+HHP!uGj5xzmgCE*Px~iJkY(&fw(yC|atmXE}j}qwm${ zwFbzE^!kq)Pp-=Fel`&DO7PKB``F&G54^RD=cfmHKX@|WB%b9$IMrt?cI^s zp8NiNF-DhDj}LqqP*Y?8*s7pDrj`IP-(cZ}6X+lSKq5!NK8Seg_7lUwaKVwkvvKli z?GsXCE?K(g5Fxc>W{mEb>W9MOZJ(no!qt76Zd}rc!gLVZZR>;4f6Z>YV-7my2vnoK zJ|UM%XW7Vqnrihf|3Fc)u#~dm1EbkGg@K2-!#EsJ(pe=4dx6B)2OMWnVx(coGio!@ z5V`wDG`W{8J0HV*#kL-SD#O?3U377{R;eM|31oVQq*8JBO2G0u+VYx!DRc^oFoa9t zpuP^;FyV_BlZsb2*<;MxJ}1SMu&1FPlh9yS=DT{TO)gz<~>=_zFPvKg70@Vb)1lwA{to44{7I z$K!kW(fHb)$`g)y90=Y6>I|WqedF{F^M=3RxEO*~830fPFt_w4e!a={`$-<^uTbgL z{dzRNV+Y;fT0m3G2fo&Bg*KxOR6EU$`bFZsb5@jI5fod$Dm{kN*}*AjUv8Ir^YWV5 zoJJ>BRpFkwy8_TB)iqF{mus9?PNlXn8Y80)W2}g)via@c z(U_$4s}rwTQITWv+pI)aX0qXhrrY<>iV8rl&1JM>u19H-r|2n^Jd*xSXZS zZm3uJcAyi_rx+)?@7?JybPzrJ;rU+vs)Kay;EnFsF$pXF_&~qlhMf5lOH>7Q{ViS} z`*QU)2=)`_uhD0X3Ts6bD5x_okc^w@&1B_T7BX z^QB+vhxY#M_7Uh`L!+9-_(ijV)UBV*b2lYIiEOMp0b;=?3}?X5Q+%gOvz(Gr+{hT3KlmR@w9pNs(lxlLVZ<71mYyW&`{an>Fgb$pm-l*wbQ?Sa zk|FeX{`v+ym|7dQ`SIg=+Ij`$98d1Rtq@0_4JEy^j|a$|^sgH>WVhK30ohbkthd1~ zaQeJI{^PJ?Qr+dnKW;?r`9*SbSX`SwRBA=)6v^A0YS#oc&X!xzQ5MEuYOJPi5}}vQ zCKLqvBXX#t_a@^#isQ=cn@(1Fce9F{9*D^1=OWIz*=eok&$V>AS9KF|8N$*>`i(2k zHrZf~aUWVx66>)^L42Twu~`3!hgq9vk;DWZoRYu6EV1jyz`bXhVsKf5p^cFu8~yP!*< zGBAy?R{ZI0FRZ;Wo?~)vTaet9@Rm}Q*?;dof2_H*KDfj-fA=QI{11u_f-`5isJd4u zgy&l~ezDil0np+HF_b3@qw1bXUkG|gU<+nN$)qO{qz~}Q*JC| z)MtDxt!fu<|7^9Xv0KM{0V+FNo8CG7I`P`UABA`F&1WP4Gs-SU`MJ}LNzZ!e&9NIQfbR;F& zCdqtudbJs|L+0|!Wics{@=h%Lkm;(h4^&%Ge%@1f$q0*zj6Z#-q=J@v%3wv4_B4{zVV1rnt@ zfAlT}EB8sWmS}9~P{G}8CY8LqlD;VEZ`ruEHnz@NQ<#xVF!Fu5_2WOt z{Et_L#3$!On_ERZhElG5x4KnSu5XIlV>V~?mYbIL%45^wMNE&|s~H!6YP;;n`X0A` zywWFFo5R5s7x#o$D=DLGtVYrAFlcIhMTPepjX52%pNSa?u3*XF%bO6D^{21OI5>q@ z;kDar3Vu_lu@Crgr98n=w>o)Giv6$-|HqG=g|nFZcrsFB-GMV_h}&NZ{z04i=RLT* z@1%(JeQi@PT(LY9*s!>{h(esOR+w6FLAg;cqb<|lq!XSmF_P82WtQX6_fEt=SDj(P z;gJ1Mb4iqi%S3hjYhK+HIsETH#WsffR~~iQd!kD;eeF968WrUyxs3mOWEx)P`l{>v zwXUPFpZvUkspWgNy_-*SBN{fN7X$z6`o3sBMjUxYNnO zJ@bq5lXq<{3m5W&wOJT0=;IkwheVmMtw0n5?I_efBDj~pKei-PWq;gfD{o{*LCDys zX#plDk#*dlRY2jHQ&UsZF%L{H3MsC!l?zwhPiQ1*AM5 ziM2c4X=;Ce4X#IlvPhtl@15>&c7Wrk20WMxZFPV^ghzuy|K6W9+TF*)`Ok-=9haia zOnp`i5dkT-Syyg!+x@@CN&i_UE2&|liI@b*b;j7EBJkQ@a*Z+ z=b%Ydl%F+r=Ohm>a!MuF$Qhzx^O!vi7yodE)~aqEUfxr zoIoM47gvK9wrc=t$attk;6!-S3)l}v7WH<<;%HV$f0)VW!d-C$r@M17rx#0 z)4N|<#L2KN3^RNh`>ki@3vpJNx?}Gv4?xjm0RonTYXATSS}SWK22naKOdN-DWhWo6 z@;W?}0@kE>!rfi}hd|-`8%xgQaA2I&s=lUr2(4)u`=W!}Q(k?!SAp7`tN{RN0_mF% zYDYp6aNR_OnXYjdeN=Fsn`T#55_EB|*a`}?)=IKu-0hfllg zo7{N`c*odgKRd-m&TCl%Fs(nY8wWb;Fza~q85iuAPOsVP!>(~Sz@Qf-r<5O!)$i~2 zRR-eR7te5gM}B|uYWJ)?S+Pf$b90Geg(uu=+6;~*D2rm@m?L5d`mQi*04(DUzqym| z2+rAISk(S6?3xKV6xEFP@^hy$|BiK0Zz1l?%i%`Ow~ghd~M z{@8Hbcj@Ez>tdMEr_8T1lc!VrdCP&rwybDxz%fxDIw9yRZ?c>@@Zte>AJ%@k;38!q zl=TAicK^H@zjxfh|H?W&FFf$umqNNx_t|Ca&Y@fJc-7^=kNtI}Fq9Z$MIMVe2rS1c zcdFa|H+98y{{hz|Z~p0xF0Ee?J%zcT(3AIkF3bDA`{VmbEe83#xNg-JD|~&_nCFYo zH2S25CD&_;_F}hH9^MYv^fy*2{ArNmA9BTUO>8;v&o+pQA0uiiAR@{XweXG0czO&x$!%q7o8#Fz49lQ-;X zfa!@^e7$KJ=$GUt0F-xlH+!J!g`wlEk-SW>f_D(QVcPh7HS`K$g&v9)8gigy`LIa5gt7vc-cF+;;ivw?>VD9GF-i zhiGlW>2H~|LLp)1*3FxT(VCAzT;ubQzB(39zP57IzNc1v*3@7A=gy|>L0GNj>`{== z^0mHPc`$pkk7s5yZbi@sSWley{$$s1Z$IZ}-30SSu3U)L_orfHQF%I>zH*$24)s`A zR-i!9(SfzOD5)BC$Tt=X{r{aCSNzYXFn)jHHeMg%xW4|G;#TAqrb#b9%+ikoe$iPq zoXX2JbD-^P9%%c)C<(a|X)5V;6ZC3+1K9o%<+Q2)BL^3u?(uG@9a8GXHQlbI92bL_ z6C8z^N&s?9* z4y?Br1w2=TZ5j&ns#194i9dLE**37G(Ln`t|H>fc?%lh)pITx3H!O@>Tdd-iI=7%`~E8*{( zasszOA*0H#BHrvNp*sLgn+LBpVN3|IeR0y+f=WQFg%s@fob2pE@SWJAe)1KeksYat#r8j`$;v` zgbMeRg2tV(#>lEvH$v|?NsU4UyaC8HF>Rs5K-(w?R0(2kLn(3-fyF&FpJ2)#bYxqk z?e5@`BGR72@tKHP$IaW@sBSebNJpfh8|85a*U#5-r*SetS^e68 zKl{`M+n|#zZwJ)!XRE$}>bV8n>Jp>K6x4+6NN`9#TajoPh7oAa+GoMjH-rruo$g?B z6G($Z%-Y<%7Vf4N*^@oaPtP^=ifqYl0hQ9@QO-GL-vu1s?}O7mx(g*t*jekEYpfta*z>WRiQ{-l<12u3^S+-(WU>~ zRQ&Gu*D43LhOkeso}$*oDI+5SS|hew%2*{9My$4@%KnEbE@B4yOBJCGw3W4`&hL-mB_6l010MLs#|2wKeQ4>?kfu2q{aXh+&Cp^qj znk3M!ji?9l4g0IHMhd}@w*HNVpQ3Hr0+C-fGqUQY0ckG;aO|>h>@pb=a2B6nZQZ)n z_}E#n1&7mFOB^3le;?1z;(*l8-+LbAUdt!8^9$|?9yBpWV%BvI2=Q?t4rUJw? zT&Nw;;#}!5Wf=Oo2B3S<9+ky=@!-!GgX9bj2N{m$#?GhT)7JA#(^>2<@`!46$YVl) zhj+{Aze*a34?=OmHGn4Hg5a(KXjf&+&qul(){H=WOX8*m?xWdlWA&7A6=EItgCKR# zmCm@5$m6LW#z3A?@RQVpSLmCIwj?Fo<{sSCqw$CkH#5 zz(%q4HB<;ka`MpXx3hD{H2n@R0-o>?Jm5-WWsuA%5(^ULOfWhqEjYH+aT9@f1n*yQ zMHO2>Z0Dw*KA!Aq76&P!^ z{?`@cT*DQx;|g?N9(D3F;1Q4V+RhA%&Y$mFEDN# zw0swq1|aD1TRk^BHUH;}VDxd;D8B*YQh+ZaqGXsq7Qpd$jrKo3_WdW`ingxT+$dYH zZI*9U!l#7a|M}O+-`ys+$b!;%U)15ew z>kV>H?muFm0jO@TwoX{@2Ii+^3bq&1=qt>}S2!KDa97c03-jh<%~OBcTIj)@!EWL@ zpj~gJ-n@2M<ni)n9*qe9!5xFe6JT1fHLM zIoLhMb6Q#FW#P8*!IQH~92L8?+pA=L`U!@~xlT*vFQY1Y40?8M|I1_GrtdJXH2#kg zoA0JZ|9OM>6?AV_qLnbu%<>-tl>hwe1!?+bGTQfVyJj5elTZJU?Q7(_^yf;Dkx76p zl`2!RBrfjzQ5o!G{a+7pK!(-{9^wg0UWBjzygUBTbraD)odYW%*>HJSuTsa+&i`75 z9r$)>>1sw5azB<~!bRVUQ~tFMU(7`2G?&|2P2zjCXPaa5!&d5_k2)cY@4+h+A@{$p zfDXEfKYqH3fJq;ie_qX8(4dz;KUSpppWD#x^Y7c>@EMQs(u?@83Qb>+3l?!7Rq}sm z%l`8&c2AgJzanmkAN939HSND|#4TLH9**n#H~hE}|9uH(=@JC6hJR#24f&S&v;VbH z(;~3QBvn!Cb{-%9W`S-E~Yjl+`>eYY! za`=dt^RK^Qw$nlRuV0hZ*}wj#>ev7Kz45&N^)nat;O_kEZ)zQJGye5AX|uokr~S`g zIxNK#`Jex#KmGp;`q%yV|99yBWeqh@)k41$h$CEo|CQFc840lJW>E6L(^bVZ51`XAAiPc*R;ZqXCUZFJtlBfxLg>ic zA3ij&+PI^PJnKjzLxxO5I8~&Epz4ozWUTkFtz_b(Kwg52@s$dr;&nZJD z4&p~|sWf0%!_o-jYTEi=H)tdzm8TpMafq28O?SwGE}4993UXeuG`t&toET*H z@6Y|N$5J$~21Q^5Nv+SvMFO`$`)LdEHp%H;ye`t3M_M}7+}ML%1`p;X<}ihkOAC~H zvH*XFv(63d=zhd}=!LEuIIRkr0Gpk-Vwj__0jz!6zjSSAa)*sbrW<;QR|faoSxSVct z2Ch1fh|54Xivhg8zg>3(UGdb1N5-b%o4NvR2t%(GelbUO@4kjN4MZ{SxqK$$(*%1q zL9@k>B%z8m1XEV=z%OG;AW0MP7zy?UfF;xB@)l!tksqYhHfBAyu&{89LD4?wCsa?I zc!U)airR2eqI-_1{fHOoTm6!zuNr<#4Rj$@e0z|cV+a%~i%RbR+@Z|0%%Fj@2Dr(W z=Z%v2v<15D;9KFVcqDWsw)a7+7z%z6+8fuKsB{OM5E~@_@Cm@H`}5fy>gkaIYJF)? z4#zPUc9|UtsCfGQS!4Tw7D7^P|Ja5UfN%?VLfR{!`RmsH;_!0DtXahilq4U+0!0S; zh)vtbn}?)Ay0Gj3V>mnDPo}m4r$zw$3R_47iS|4OQK_A)#?$RbjnxWlQw>PP*2Vf;)h!6LiX~K+>Pw)eIPF@utSZOSTR0dM%zSdxW!)({J zP#1`-TFdOn0=1yAUazv>6OuAzNI^ggzYA$?AgU$u>Y&%zb45Vk9$oQL-#G%^`~~yb zWhONe_G3LaaOHt~saps7`%AEQ1MnnTkF!QRU}=}u4`@M$tOc?d`I9geK^&si2rQ2( zxd0rfqMHSuJzX%VHL!^k4$NR2PSX+p_W}|_BW!3?t-w?dtPK?VYIvO3B!(5QLMbMJ zyjT`Kjv8GN+cvgxpsE~zUL+8oL$1W9Mjyt_$c`QXNwG2Ciq!Go)Eq%04DgKQm%pzI zK9B})0pk8+5n{jRikegr<=vH(8_)rS5{U+kN;2>Uo&rSmb#djcACaXyo?#Y#0~&19 z@a~?NFbj7%1VFJYuMt}WAFx*t`d!!H0vC!)g{cJJCIThse2X-{9&?3G&Ufd<%<6kz z_z26hZ2g$g)Oh^rus&J!%#r`osSD4z1Og6YT`AC~an;m(Tkgrp1RA{qp z)5EiU0JbGIb20nlzc?=KE7QB9V`dM23kZshz~&$&ML^=#Ox6>IhhZV$F*g80xX7K) zeTfu}>9ko{{4B{=Ah?0-o2B1Wn~{u#J~5etE;<(k?Uj4jTqA;T+(~=177Ze z9sh8`)6?@jzEIogjhZh5RJ(ie;Jp02u{CaHM-xKp-g>kHb~ll&_Y?m~QyYI)q z{e}k>y-@$ertRBHUc^vj@j!qq&_8@b6e?EH@qWEi<^$XCLtC!s!oc6e z)@mJo1##|t$opuw5{|b_gbk~V-`@bQHzB)m)oBY@Ls`=D_L66mK&_RZ=rx0J-Rdn{ zUdm590|MhV^hR3m+_)L~>OO?fBGz5n-ZkwDnJwtviR?6|9x(=e91g0FLKu3A9z&4y z)OG9Z6s)egI1aPBF*9IsquPyohnQ@);@% zecd>GDcaBYs|#vmn@0w5P{g5kc-lI_ z-z;KlWlBrH4#dKYly5(_anWpE$+G;L46~k>!$If-h@~J}C)Z8^EzeM z(*$>*T+J)~TI~23+95Xs30RQ`_h$3fa?(+VL&}qm9!RL7wcF93c%vxCTtpwo5M~rO zk+Tsn!*GDR8GI&t%SFx^`8SmdNpPjBtIsmLn_9$ZyL)(ep!25Q)Sr@)GARlcna5~Y zp-&9+pJ@4ZUWnN94VDSwG)1d920<~1@)9H&Vv$<7y;&Snv}vYpPK;FZA%-~%15epy zQkRFEMu`avahsxPcw8|3Zg+D?R>Kixz0OiHOqQzYKU{N?1>Ey~7pIkL-eW45n)!#F$xg-WbQ_em$gYFDipuv@}I z^|2p?P*t!u7D}ehc{5BNp}hjm=R5zL3Zno)%4N#uF-+sHOP6Z3n3C=3``fDPG&MCF zk4eKM1vkDIX!N^|>6^;|tLMf@r8DW(IiuF%5S^mSW_55%nwsQr!~N^|vXr?+uXaCX zu&>0dL5zvN1M3D4gA{l@RP4NY5keewFb;|(x|3DvULsmr?dD6f{F<_kNkf(1!uR~j z;}>AA!eHfXQ>W@PRXIAwG&aVGKt2R9p&aS|;iK)d#Z*v2qEa`iwvKQ0YFH`VlLo)r zdwI4A`q_E6vG{I${rYvc{ZkMH^6*U>HyxnPoUbd>6m3<=E#Qc}iIT#`icEZ;#`=1_ z;Jq@#EJgnvX4g>cPk}6Pp*Z&jQzhFo2M!*Dh3t`pSc*xbf3nps$~o3jKZ8Tc@gzx3 zOVQ_0?=Z*e_dskyLfBMqr@%NQJ;qAmaXj2G4t9hW#p_s0Y@f1K_v|+880!WNLnoq+ z-zbtpQVHDq@_Eae5Uq*pK zm@?LgZ75iJ=M!#htlknP;_n6dva`~O6rGcN72-N-qGau5w3l;>9w1#R(!z~ly;rVW z;o|0Qe!JHpVMuoYRDA0hizzgZ5CC{yt~ChP8akHlQx+sVAaxre%y8TxiSt_ogp`JM z7cH@U`3p1Hw88!A#L)8(rxO` zjTT}`8#grb;avIcVd*$Bp7={sWUlM+I8twph!$;I(0w%5U72$ScsS-+lqzaJV7`sJ2(3dpYM|y)Ea!L>wsK#?{H?Z?|3G_xpAo3#s=~PE82Z zmgDs+SnEqNHrnVSkszu0N-k!H2HIh2NmiY^2i;?uhcWb669>}3UmOQqDc6KFF`~FV z@8Q<{=#gKP;bYG9x?Q|S#y1$E9jGe|Q3S~yrp#w^Xg?$;M+D{5mRHdo1`xfuMw&HT zux0kV3G~=ok*mx(@C)N$xsXY`iIwJVI819Elw(}CI5fC3X9ucQG|%87S>SuDSTyzP z>+^1(*iI%O$Yyn(S%Uf;1fuiKb-zMo2ab4TyeW!Q7_bQT$HHo)7|L9`x9n@=h%A6* z3@xQeuQ2CSM%OA#WJBz9pxeh zxJ}oa$f6pub7~L>-FC>z<<4QBxaApi%4fp7)gi^O7G z;4h4-h18j84xQxDg~y-S)My(2WhxaX2r-r?1bUIf$xu@^HScTcdKct9$eq1$Bs=ig zoML;l##hqjh>~Q_pMIC>W*|0iKxzQuruJL5G(D~ots3wbkhxqPX~nSXwT**@reTjB ztt90PU7qg|c6-pFOQ~B1H$d`SAOk2=aA*_lDM*&#_!8Q@3d)0HLNMQRU5Jr9($dnX z5%$5$d>#K3rj)!Gk-sZm?*eqmRSsQ8AC^)ZhC!>L`URpvG(eEKqo1-dD{t~LpL4)C zu*py>%b*Gn-T396@3hIl56R^k0|-L3AKyIE(;&PJ=P8ohy=Z&Fvm_qi2Apmjpxfom zg?lM1OLMsfo4L9`v^fVwxPFBgj>1CF(1`x#D|N-IPWlmh==vHD{P`H}W8lzS#z_Ri z6ev6)|3I2{>tz5djS5m_Q;Nd7hzc2Xi^+iap?6d<}N?%q9K%7 zZvl$7KPnLUg8;J}>MrT(d)^=gC8&?*bzft(A(Qf+vf$xU$PfrzTC+hyLJQSbVD`;g z6V5p+W-|_g1j^8LSShOtU!e_SVTbHc{K|+$Xj~^ME399)ooK4dei_}u$owWf_BEYr zP-GT(QVvFtedMj-=WoZu#y&&7WUjoVcj0AuurQw@b3b`%N&IRjLC_tYQV%n=6VQP> zZT#RZqPOpHC6bFksjPzZ&1rzfpMfZYRYZLj0y$HpH`F>`gFWup41k*Ugpt z0QV76*bOLGq@O$DFeXF z`UGDyXkTtXPS#91OM!uM-kdMqn>0f(Bw!Y{IxaQ2OV)ZK$hK5fyDwuiDBR190LzR5 zi{(;!zas4Yep;^Y_N#gQj@ymnqZ^RQxxxW&1L zpQbR69zhjDhQ}nv;)bv)b9dZgcKmtr?goLQ@(iblw+AYx1jLcXw7vOI#>_?HqxA8( zw5$BXEg21aFKh?7R0WtP#-%W6T*%E@0~axpX`AAzo{%x`AcmLihNvbsQBm^-8}`pu z=`=PbrxQMf0sQ7T1Ce#8wur&k9qW7@jvrM`$JfhoNB{V^L+MS{3&=DnS-@GpAFiYR zlN)2cbRwI>+4YD~Hkjr11VkUV#7zK4fDC!q?qZm4M>j6IGgQsP)beP>p1*gJXE@HN zIAoQu@KxQZaNibP_BbKx`vDE&rw)vxa6n&z`g6&S3nwNzKT2I)iNFRe@@66;YkUQu zv-*zYDXc-6ofw=KiVEs_7Zmx0nB;j-+ZuU-zF~C8wLJ`T-m*wxdnj%sfF3431X@-& z<*E$FjgOD3#TcqBSODp`R(w5*>9|frZPRO}O!t3+XcY;f_Yna7?U-GuWZt zknyyd+K+nE(v9B@yp__bXgv@qAB9v8o$o9MvvC}BD7}Xjs1+vHl8TG7=}%VdjNs`l^BR?AKH6= zu|Ir_PzeAz-`5tUYrvlgXjN9kDkKIJ=VuSdv~d(vB-4m?kI+u?+BDe3$YgLWS@LXq z&E+DjZig*I3kQ&TUm6FR#Pe_zBnx2$uoAJV9eH~mA)7$o;%scNjKE~bHT!*8z=?wE zKsi35aDX|Cb#GkixB`eoVv~ykRNN#ycs&YC%V#YYSJl9db|R>!r|k9qcsLDWLH*J{$|ht z0ox1Z(#F1t8z0Z%IH;toyUg6L_cv=rW0kX5 zMoR(7iz1>Cgp4y&4IF7ougDe;^F#ttZJ&~>II^a)g7UbbfzzdSeqf zVc71WfK2GM&j5b_WDr1}g@EfCKvoJ6XQOFWgiuBUo#^%6+fCJBl9zpldGQ(bO=NuJ zt8`Y=P7vW~a6~_LcyW6*5H2*B9k>t}WqG{;8Ejyc!Cgcad7}8$u}c$C*_0d;HCkW) z;n?&XqL==RAWDW~TLO9C2&LC+7l1xZ?v;jK&GjJwEGF=t14PvJSz zG?L;cvNOFO41!>YT^xbZr1DL6&ROJ;!x~&jS!GgL6G_=OwKecvs0tzeHS$qv`aLAG z>8I$gs31-I0}Cn;nOJ(h+;V;xKLTTVNj)kqJ9cIiCSQjU^@`DG!;+ClAi&90LXt%c zfFI-Y!%$dKQjBmK*b>C>kx<47nW!8``Vqcqa5P{i}3Mg(e` zHWc55xT+4HSC?VDLQaop#Vs7!4t)vkM?&2M4QfN&xs*_0giTq2!WK@8L?U-`c2+?Q z!db9(+)~sK>-RSAu4g!Fh|*3ZGctMws$bszxH14K9{jhS(#z4=BgdX$Srd{%+z3Pz zX~)8wnxbI^-Pq)j*qc_ahZv664wfr8$) zqaY37F;_733tkdn=LKYIHD_rANw8D%OJrzT%^WN0-vu90^WE97i zFmO5`pN=Od&JIcxTmEt z>j^@E%CTd|9#%TvzO9Z`R|4c=?Al}Wd=OjYM#An61D&F_D!DF=j}97PqY^zBcik}Z zM(08-_lyZ0p&@OUchR6FYVyiwFZuP?3$mGY)iWD+1<|}@=pBmbjc0BOQw@cy^K`i! zR@6GUagoXzZO(5s(~yM6mZrzvL_$lk4v(68m}IzwygwB6Be^)BIKhr2M_@&Nsc^a+ ztTGC8#8`x-WpI-vyt|$m0H;Xo$y^F~7Qgo$1tAYuP2nJDTHzgE)SQI3_S$^%+Q>ks zk<~&KN{uUo7ginDzN%{uoR6IA&+LzVh`I?8A&?9bao7u$a-2mnQv_i~%!xPbWY3Q% zL#tqsbKr-X->*fUJ#3#vZlK7FJ;GAp$QyzdBd*0Akn&{P78?wK3Vd+5kb7)_vKNoZkHLP7yw%CnVEy_7jwdlX zQw|`>M^IFIrHknNAl877&-vi}onCa)&@l}`)J4SgL;IhsfAD2_PEa-jAg%r-S3N}RB%1za zs^qhyP(Ru$6s>ey2q-Y0`o)$NI~Eelo&pAnKU=_zuZ&8C$cF``Q$p@l5xQ_Vid>;r z0A5gO>crqsGBU7|ACLxx-r}8A-bbkWKAUANU$Xgx%*0&YwFabMtE8zE;1!eIKj5+& zW6q^cMexV`Y|k1`#H8t5?LW2dV&S0g5QJdUigq;|{G9u0SQ8qkj4rlJY(_H_-HnYs z(_(P`ADKOVxAf_5189AI!?N?3I%io(OH0csk32hRF;L|{jAM}?_1DB&@U>16PP8O8Os{^enIApL?#UN^AZ%PgxceFT^agvgY3hX zAE~68m2fYDqu_$LCu&qm3yUBG`kppG4djop>G*4HvV^KixVS6v#f+|2a3YfGUgPT_ zOrrsna8OA}*z)l~aFyYP@~r0SX!v_$??9NtYK%=c8;&{$DMG0K{g<=U7U67}w|d_> zfPv&clyh00tjY5Hc4;9i+uHB*qP8a`X2tK{CXO!|7@AXOPDLzY;>_hr3oYeoNk8j+ z(CEpBT#&|bkemo&_L8QP30T)UEdxm4z7E!D{Q2`oBrs112Z|o2CY6`d4G@>eR z!TdzR6jX8kV`(n+!_Nfab2KK#(I%qhNnZ(FwW7}b;to3js%b4^95Gl40Z=`4yTH&x zp}Za~%^Q~~%798DM0hk(r43f)*J=i>VH3k*;Yg*488pHi_;F^q(ERm^fa^ukPRAEM zKqoJLx_K|he#=9^4iScFmJEGn)5Qi{3)y2AF1M~aX<6fkI*?9xtQ`>KDc7Ajz9|{# z>o&ZC#$>$Ji=liEY3+5VK_~HucYmXz-E}eLQ0!zUu1KrsSi=y zL8Oh|bBgiHJh8?87$&tH{s1)KP>KuU^-`2U`wTEHKD#f=#F&7GtN8$1RtpJ56jx54 zI~Rn3lRS<+=)rnTlo>w+#B}<-->#&$Sr<_#=%H1S2_*a$8KCpPtPpj{8a*WQnW$A= zC=2RKUbAKm53s1@c?%bw9?_dSefnlBQ$tCBbeRNOjKALgN5(0$wu^o5R^KUeYX|p5 z%(Mth0VoGWC~X;RZU&s235Q(0KQRMwVnQHS6-&P!VMYw#{=v)7@$52j{<>g+E~fEz zJ?M=sh3|zJ@i|uS+*uyfj3mx-AJ(*jJ7ttEz=xo=8D1Xi$=au`t{!!#6KP2%svQ>;9ZM%a6}M;! z3)WvQ$Q`RONL~Two9J9>>0HL zuU1hc+4C~SkRP5#uThbIC+yviw__Gh8e6aQ7?Yv6|%V$82a~!Yv%&4?M@Q z+A>i)-NNc!$MU3k-`g>`kITFt(OZ z+aSp}$U>q<>qTazU&4Xb;n$DHZE@h!$7L!QqqrEYM;|j(bVVO`nZeH2-o z3(m~Nl*;CL0p_{2Lb@7*khWi8DSNe67)6Rw7o)CT0ydmnS?i8p?ztWX&n!Lghs0KR zcfemO9_O#mM2ga371XnZkM~Tg2mUUK(_?#5Du0JD)E|vk-($k`ob1?>=~Ii27t{se zR9Zr1heD(oYJn(hB0aP!Gtc^8nf!Q9pgQ zRd?cKJ+l#0iMnkCC@t#3O!Pki7t9#6!(E%0G*S}54D$3O1t)| zy&deXm!Qg)m5QSg$GjK<^c1%bqp_7H0EG96+(v)tbP`?b%{z9$@2%{U9Z&M?vh91( z-d^9>*m&2+@#I2VsY71qPPjmR!vh&To+0M_Jq0EaWWOk93+$`v(LNN#@n%q@mjaQ0 z)cNu)dH}03F>B?7ysvl(nc8A=*_T-exq=;f8E5J~koj8g_<}JMxUOi*=4>bxTxk&o zsoEa^dU1Y4FHVeLncuM@t{xU>FrnOX@bXnk_isU5=9VRO?!(G@M1;Vr3Oc{TqXZJ?s-rjqN;)ah;O=gP z_si*9%OyTtYIN7Qg|jf%Q_R?_2kqdB%Y0XmVe8eV{T^hWf8G~HkhgFz+=lcG=uw=_ zUsg{Pseuz!Sy@>$TC4}%;zc&Db_r;QS4^Kdb8F|g$}vn9&V2ip2i$_VL|>pjOOQ8+ z(g>+~OhVlP{TG)W9$F?MtP3(%_oEgM_z{CH;k3)?*M_EXG0>tH2-N3dkoFAlfbt@W za%FdXd({D{648nE_qW-1O)BoSZF$Lg>Bs6v>3% z(HO4!i;_~33*I7%ofn9}xb|(l06>mhIe9XYU=MN_IzRFFgS#?wbcCjRQs6SSorTjg z6Y1eCOlrt%K@M;j^uN`Zmp7f0a|@chw}31008iaaFn%(E)nup#DQaO-9tL36!@o%c z-DCy3IY5KXUk2u=z7?hTr^$VUk?h`A-#h*F*JiLzOg0{Ukrq_%2wmk86q91(Dau|D zR}}a-+3KLS)vBx6p%tWMl916fC{GS7j#weB1qufI(K8vyuQkuVDTUtn76n#MR8BpJ z4~uCIP!II%OR1G(hSS`;cMQ{!60#I#bhQ?YWK&uV5*BA&WcPJ?;UPQHpp??kO>Dm1|+|svpE?%W`T7S0%YoDWf)Ap%#d0wMU(qws|^)~6q!_bM?uwSy6arH z%!NJeqY{<{eVk@p&o|t!TfldgptT^}uf74~G7*1T%sH5)sQ3?cSf^ zCYd1*cs8*kKEZ*3i)nlk9r5+3-ScZo6}`4))11mY?i%`6GA!Ltb9VE%Xo417EsaW( zg&)Ns6Y0&HKhUIr@T>Md8rycEjaH9hB#$L;|1Fz86T`%AVNqAOk>S%Nd>4iB>Y!Ie z4s26yVYQa^4dD!OK{~{P6lXhm9qNI(nhBif)})I33V4taE$6Wn-wuIN7I9Q+)v7m_ zS_3_9p%&nJn1re%)%FSIi`d9=;QNa;$$X%~Ec?!}=DAMELrgg{FzEL0gQoiZ~gNqD-En)_+$8%xMeK zGqnib5ppNMTo8USF5&lHqPZb>x+*JJy9TRN+DePm;*BOR-VbmzpFPhG@R%s5EdhGC zq34DJ5+xp*9H$^_j6h6e>-B(S`}LX#o1>h;=tQljq+~3(yf40#oHA5>(N0LYaBtS%I(va*Vfj)r(q8>3?3kv z+q#l_^XJ|x~J=P_fd2SDRe z0$WSO0ArbWltyms9z?aKbB`Y^#38gHZsDo9Uz&H&Oa+_b7RSs*ZbQrHY7tTsbvVO) zM9@HeNDjO98SR5OTq^Y|0aJ*rkUrjpfmGYZ6E<|7R%bhbqTRU)uWR7J>J;n3%A3D` z&DU?=wvdt4dtZstAigGq(#6QF%quP)VmpzYwGez|3d7FY*0`UUo+5g;P#1c5rsCwB z+_*)fJ8}N-NL{}4&@UL_C-7Zw5YjO{80~`@xoeiaJqxz$^X8qD#LOZwZXrC8nzgBW z+)g814t+OsJtpvTkQ#j-RQjPrnK?Il zI_l^x!e`13O<+FAEpVef+U?$f&*xE=bOMy49yq*)Y5NOm@o$~U(BkBC9s_mO1vk7b z9_ND#pif*8hLcnQKFGxDjdNm<7E#dd8`PHdsS0Pl;(Si#gG)?C+-JZ~dcgKHo_iz1 zq5!=Qn2rlIo|9aFXw?(be;~>08j7rjZ?ZIa=eqdms3uf5lL;}X#z%L3LOd2BtO{Eo z?Cq&EI3amj5g2|!!j$FvmffPyvv^EI+LlduXlmR&G9JR zH#NJFKp#6bfe29EcXjKm(uqxLOfmmw`$Vrl%dKof21?mmNHku^a~s7XSiEbVFvno{ z3+26{>(;FcRt%bU!gZXJ*|f+xkN>_65qyePuo{a%E%f&91|e2|;&8!zP6jZPW<$w5 zLi0v9??y-VRqM=JSXL~-A1x{_%CJ4^yuXW+nKEUH^TwufI4Fo3 z=QKUr;{i7IQqz?F2MQWmmGx~bCA36cL)|mZAX91bZh}`;r)v?NfI1-{1H0GDN2( zqpx81n++(r-c^4Cyq=3j|^`SKRcR8{Rz zD=vl;iMQiz1tlfxWAj#Gv8_-6lUdvB@OZpsYfmu6*_7V-qc@y;eks3#fD0x^tS+N71h{r8Jh>Qry=WEsCj-j+oOIf=MkZL zkmWPckUmR8ct*@FVPRlLKUeTI=m4(%cBa#NFAVD(nZG|IJ1RW{%}iPf|DC#; zNYv4jIU%5H?Uo5_n#DLAqC$NM9DiH-D4<4U1GDip^8&d;Cc?tZP5zWrW9E(i#HQ02 zBbG6+#uG%E5`AX|U&{FZ5Op2UShxTCu^N=Eq!N-@8HorP4L3mDw^PW!IBPC7FfHjP$$i_x#WK|IT^O`JMMIp6C0$@6Wid>vMhFu${K{wKR|m zuj`mV`QiBA%MbP}L5au7B7>Z#95~6L9C4g?0f}fD|6ub3boJ9{j1+g8lYP!G6ttRu z3c8vIDyHbmLxB@Jlcj;6W|o7{j4iZ;EaxE7AH-Qb>+XrDOGwG!Ki^hjmZ)vS3#`ln z_8k&;5jZ>3iZ?`*1kQN`K`MUxs3<@xh!q~Vbb-|#LNM5IK<>I3_6`NXYJUV@a5)IE zB%trAC|ULhNBO*8{9tg%A`-Hl1R^5t%AdgT9%D}*^m5Pi-4!)JwSd94wwpzpO~#?% zJ!V(l-GgB{;Mc5<<^XTsKd2z&24$qoBF0I2mp6Be?Ks~c`u5fFqB(ZT%U zVp3)F1>&26WHSm(_uX?T@P8y7k)^LNnwNE-0}@PD2a$DOAxq!4)a_gh`T6;b4>zrQ z<%E;M*m>Ubj4X5-F<*_9Uq)8$-BIeCReJk2_Z{O*cjg^T5tZCeje8;vL^ArWV)y;B zxcstmu{-)#`n%@09+Q95yjvPQ#(paA-RtEva5E6`N*6DeY;TO!yDjm+130YkC-3Csz`Knv zUyBKmm87wcA3yF50KZ%c2VYH%?+ZU)VJ2l2ygFQF*mKRis>MluXF)RNSV80-S* z$Km*K6WeOkBCV(y@izBsr~d=xb_d-t7)L#Ap)QgQ;dP z8*xUac5s=0-q8Sc@4`^db!URy-1>sVJq(x)OFFcHpv-?Lw0W-j7a&I`_Gnj}{vOu$ zozh^0=C1(JRB0Teh^>GXqvWrnYi|S1#$-em*kjBn2L*mkozN5TZSj?rl>?6}EBBUH zR>tS&=Zn3L1I*oq(Baeks3m>xerP`EK3Dm7d~H!V^_2qfF#?LQtf?-=u1}xZQSlN! zZ~D(~`-_9GzXR_oMdjpm>XbmX?_i^chXQzC3fE-s45W zqN9@&OGG(S<&!W3s~&9fCOTHQpe;ce|#0~KkG(|u@M@yYe z&X1a&JEy#M)1DY8G^GAajrWvm;^X8X@Lv|uPmXcgeBi(VqKa(}#DmX+h{Ssf&CT6? z=0h9JkUZ$Fj~|^?o4UGgDl02Dba$u1A-}vYhTdL3|8tJ9m|XYuq@?x!0RenL8Mw^Z zhz=t?_xA)X{Ks-|qnMu<9P6!4#akjv#sbDKyM1|q0zu@{0;O|kWKA&{Y z;i%qgv50)_0-XAC#x1?u*~lhs_=)6e&G#As3&;kR3SVGp75~ZH)+r{+lyKlWp@`oB z6yX5c+WXIn6TM|;xgK5?N4cF+W-gKV(&#f6Pc%Q}K%zvVD{m8ERoyV3lBZ9dkayZE z-@@klBjSRi%^`oDEnBvXeF?_oYsqWZBGY7kij|dB7t{ecW~8JGxFXAAia1dgAc;c5 z30z-7kUwYjM!uiGF9PhXK?93vW|mb}4tCX~JV8eL09Bw#(#6C?9ugn05o#Tc>*%M+ zQ95ZSPbR>>_TV9;kG|Er9k*HaT(V?6O3rnEjvz5Rq9sdNK+bam+@<~N2flHJ* zhh~pUxx2e}A^n``d(+ThOLiy?O&yX*?5P$aiuDga%#E*JzdpFYirbx_a!51s`gOLA zSgx+Fve59EA@la_ZO6*JwpkRR^^-q&KV+WgwrL}_suo%r-F#hF_YlSSRrxPO%))nJ z5qCRojk+bYgqB8pgWKfgKlBIayx%!Q_h2ZoDq!^=XaJ&>*bW?MQofS$y$uY0S5oXl zs7u*KJM!7~Vs`TDj~ENKP~Z#ihwDIAr((He&7JCX&tU{+`P=H*xvtFK;^>2xR#r#A z$$x|bf>G+2OaNv39X!NGh%mQ);n=v|adh{8ERGcEHPeS*8NxT?hubn^`MRYFbldtp z%4wG`YZc2k;^rSgbsN2|(6pf6noa*3ACVe)&n&?Ysu|V3#6p#%`JI@-m>NZdqK%FY z6d66Fw(?-tdfrs%+JFA$Gu@75)A$)(z^`Xm(^KQcrzv}am;TUSi9cXq;D{)YBzyyX z@jzEc-cby{_rGTR^~Dd;|A4>;Z^WPTQ`Tb#x7j#|xfDT(XcKN`rtW7!do7~8ws-Vd zzP-Kj1=KPF8zU8`DTj?sBoenvOUHl^Iq!N&!hL>*{3gHj00?M`fCgztFJfEYw}{_Z z1P~Xrp|FW81W@ROG&Se*UKp0$D!o2%i}g^1^1V`!H^YHhvcH#aGV^Yk~Q=iW!Dk@JPoJPAqE zyAEO0rz=U)WNc&ZLc`7E);xoa#k18%o8>QGyvR@)Fmrd{AF|Gcus$ABs9)akd`Fa+ z{2K+`-AJcO@X{Vhlk7`v_8^dz$&}7USI}@png_}&DhBj=&rN)#o0^=A+a3l`aa4KJ z4UF8~(NO8xen^~kb?B$MFJErKNi%G5Z&Nx2pJST-JK4>>H!bTSOG_}(_m;qMRaEpW z^!{UC_S|QDfp0R}sR+MPZ(m=9fFe|5mV@%xD_ewmzN9#^t{_>H{wvfA%s-cEdblW$ zBT>>dS8D`K>QR2SW?gKagxYew<43QRE3a76^e3}T3l0Mjb+mb+?7j>=WzN~Rw#SdZ zJhRppFw}+kDga`KY~vQ-CwDwyJkwb0BhbR>;Fa#CqLh>iw{1z0q!9F-gs zBXCrs8wb7IE)C1i-I~m-03#gx%D@*@Ju0C7)9{>MvkcJRrlNcI9BodBiHXIn?_y9B z{4PqF9s8U*YFn_5hiBU;*WgIs$jDvqtkV$HTwYer(if*Yh5uXLm#XM3f(v+KTErXC zXR-AGxL)_O8(AbeR12>ZM$~G zL&Kk*i0IS42dz}o<02FxlKyTBdZ!PNTHzRrlp+@eVB`^7He{_GY;HF7P_uByT4GTt%=~$sc%S>yqb%ZIsKwG7& zPE}(!elGHBvG==Q*oVq9qr8ZsaPXSh$V#2Z2M|umv|~2zJzLZ^h;fnE?|04O95aTT zg)_tC(oZ~ZnZUrnoS>B~EG+8PW(W&9R5x@cJr7UXw7?zG4&Cdmfe?UW+1EOW;lt@V z-i;e2M`xbFJ9Nlk**@waD$Yp$$jg_RXscG|Da&#)Ge{O z`g`dfKsl+Tzyt15Bp?mg|3JhP7FNXxTl8-S5&aY0Zov1*$Vhv_E((iW)_D1Tv=`)SgoZrFIx{qBA$#TojT0lLB@ViPf>n!?GxmjeboP=p49C94ccS!k!V*QZXVv+9l@qfggnsR! z&7}Pot^40^tOKGc`lbpQJaFlc%-llGy$5XXZ=Q7NezIduw$+f*sk#D#PvIX@F-2>* zXM6bJ(d(^5BsJzJ=}T{mgII3=-ovb4|5KdZo@2dNVi7|McUb|zI1?cF4@C^sGjKv= zGZvpely!Wgvs}42KhNX$9eR5wH*~E^gFbdVcz8hH>K<1?!znpmB5{ZNHKUrVtLr*0 zu9}(jA9|GjazlA2LXISDHHvFOZ|)fBiQ3ij`NOkz>4k-o7)!c55Q18OWB2^^@PC4I ziF$QVt2z9A7kNPDHlrGj8TjU1^2jh_PlWBYr08PA<{tFSw;57OOG@mZwWBSK<1A&{ zux*DN)k2gnO6CJPiz7E2u_xyU<{*3j0E3n~x&{xDizX|Zs~L_6Tmt0d0gB@XC{iPD zY~KgQsCfKE^3v*1jak=E$Sb-dV0(*D*JrV9(y)!N#u~ldHgpH-b~t%riA;k?&x6RA;7&MKmeY4ma|B$O} z?GD_^e(NV*q7+UJh%3KF9Q>RoW>K7GXjB25CtkQ2`bV$2n^+dTq5e>Tc?pOF*X6nX zMy`Qx-vo85m{el!{z52AT2dGcGTw^y6mh~skWZbqp~Z}BO3x?fQ>eWwk6CCxy)7ga zGrhH+p&j_yWL#iAP>~cHpQbWlbW`^7sKN(BiY3~mfxmzdN+4Z1z$xijQUe~;@!#i2 zO&K}536!jE5VoyI1gQ21;;Kh*n<+ts{|LR1mrdo{119>E{>{G-kxroyNtpvLaRiu% z@YTepqVD!R|90p8MDHM}Ds%sK!j5A%3RgZR)o5|~22*6X`p26##P6eP?dXW#duZnG z3q0K6Qumc>`Gj?gs;Zq;1EzH*0|jBO{lVW@U>|XPv1#e>sOcX>N5sp_%XHh1hm;1V zISFuI&U)h{j_Q9k&W?+C9K*HtQ5&BPq*2NslUF}|;B?yp1m52wwgEeJ@Hi?&_rP|9 z@dX*B?nP2g_^Gj;<00l3Pt`3TF6dRP@#iuxwt2p@DY^m?c_jK5RQqwlUXwc|&(PaK zNGdlD=Z6yf%L7k((3-vCA>!!`ZI$s3zcQHDZn*HGwH^I*@!<{j*{u81EI4F)`0U36 zWH}aVtDvpu`K|LlaHo;@wbh|jHA>PVLG-q0lFDy=yfLCZgcjpXbyX)=IJTU($8`GS z@E7xk04xtRIe@CM{N3{`=-7v>GhXYE4ASFhGNP!?JN*%#QUm|C-MD%4hyzWucV*|M zO`DSM-MiQ9eZ)(sBc*+{V>?K(vt97_;0SG5_ z1bT6M&~cY@ecXptecDtvC<;>M(4a$5@lN9ccFnvO+SckH~!6uAa9$zpOmzMSx!w16G?;&;| zR4UOu04SG2U5VfbA0EjgMX1AmM9kn#m;4*3%i>L;IO|2&(F=_G$KcQ6^(wg^Dd1la z>yUwA6u>mGvhQ zT*@4R?$#q|0ARjb7ZWF-?K{zfgOX|FN!m2{8hU%n!JClz#s*noBqTOZY;^>vV2?Ib zUS*?_iF!op8qUGvhMS%89P29ffg`=^_OQXAz}ys1h{<3V;Ox6rl}~gysvkKta=v-< zru|sUhYvSU1WBIUZmUetSztV_)@WBU@OZX$Eg>7W9J~+UUugg2J|LRY=uN!d|D9}- zA_K7f;a-a{g_`~Voum@cA5I@etSTS<^zq|Rt!l{fIikkqJ^thBTp2GnH+5`m3_Ha2 zLA-4h$_5PFilU%yjnQj>oaM9SR4Se~k0PHHa1I{x=Vdd^8;0|-a2uhOXqxH8#nDP1#4{KIYI7m~QE6!|6j71vu}hc> zE*rhJQQ;bPjB8M-SZbd*eU2PA%>C6Lv>1`MvPStV4%ekI>9W;F*no`Xy1YK&;Lr-f zUkn9mZi5egaT~(~M?AR-U+^6}x8kyw7Bi_<|2%*lhu^V^B1t%+CLQJE18r3Clp%{xrYnF1H4#dlbi zJ$RusJ3EUhRc&BeNn&?>FInc4Ja~W|s>Y^b+|=o@PXJQ>?KtFIJ~8HsflH=eiRd=%#EvRW0etp_q9Dr~j z0(d(%$3Lm+0pw-H{g+WEv=jjT-Em0{uh5D?dK8DG)(dVdinS+=2V>H6cxyWih2(VXx>Gx~5< z+mg|tL+dahb+OO`%zXo9(mMSFLLgMckno z7|C-eFV~48ct#@73e_GZiO-{km1b{1E=`oom7P<=oudQ@3vEKK={f=rZ9SiYw4}7CNvc z{iuy+LEo;2k^49SK1$5S67PsI1R@huSiXNzp_!q@3+MQ8kBmf$hIO>JQ^!?ac7lrH zlS}6|Qu+Dmab#fz+GygX*JGR63ZPUAju35C8A@j)Wa@>Zzu~o7&Y)i)K6F?Gvu(xi zS&wymd=m4Mre+1^mI^7T6$mY!T^|=4`|@B*bF<-K?q5^}96nL9VThBbXwZ170&8b) ztIRm|;l7R3p~Lfi(H0Tzn(sO~%pO@@a_+ptapdUH2==yr6Z|>AD%&KJqx|MJn8G!0 z8{uj!&!9WB!36*P299cbXQ5k>kt|0JALb5N4tt_oH}+ToUGd`8-{6-U12><~zK3QG z5Lo_HFYXBuFlDy{g7I2mK*ODtFw2XI&57MI{@VfjA^N|4Q>T(uz@@lFGBs~-|A%q^ zwF`UvXcxgexo8_eFH0M?GLonoRY!j?j6#uCm9fi-6}|p{Z#zu^V-4ZFS9hAZr{?D8 zllex(N%!s#nN#A@tY&-HW2j`C#kdlXIgz9)-u3JElTQAaC*+G4_E(6n>9tP=d`<58 zQ~*jtZon~z4*Sc#584qb&e6UT^2H|u;}~(#^}3d~Ltg$yrKr1j_und7Ww=gUYyg7% z>-P`oIR4v_=cSUFa`c$SmR>(mgB0pEy#&x?In#~5zn(8hSGW=uHc+t~pM=eqM~Zjd zf#fi}Flh*)MZO;aGL&R_)IO&nekC-ddWZAeSz(@E{$Qo7+Vg)K#AemxB}&=!mYwha zhEUXVCf4%!0;rVT)iuNhqxHeJdLf6h<7Zk<+dV8P$p!#)zR&~vHeOag;B7)eDj#uS z`@KCM(ek8+>hqw*LpS1edLvn=xgA`i5Mk=$PDaHr*H#9FSGzm!n&x#xD`jkSLL+To zNJgcF{H7c=lmYFaw8{bx{6)?dKCnEn0c$D2C1`Ibxh+y zi?eWZV4RW2086+;74b3N zHZ$cq`ub!ClW9@RB#ftC1})n=n`Q_`Xmr=MwZ*#f%CKLtWIH`j_v+OJq7SVe6vU^$ zv69oj$h!Kd=Vow*L?ZU5M|(TuhWXGh%DP9du}mkzm<5i6!AAmGeHX2nYIWbxdYRiLI*Zg(K2pV+`tNh zy3dNCG5jByNAZv?XK-~Q-LB7?%JiRGJ*N>)l#zo&Z2n!3U6YD5HJwhJ@KPzVF1A#} z1Z=E;5G5wQ?DKeT!}rL3BD>$L!Lt}qatmA*x#DtPo{ zg7YlSFbB!CH9*-`nM9%OQ$a{tzE%%6&O)Is7!ndvTmiB*p=y0t8c<{%Kp82bk0v|H zy`8+yp1m<6d?~!4u~Bzw4*ij%e}KyF-HGr;V*0!%;P1lYeogyA(8{OYdm~+gO7&v9 zdW1KOKPNXPElnTP4@u$GXVz{|T@#T9fcw;aHVh^AG}7u{bRQ^wnAg;p@YGk3Z3h%K zNtLhFLNECF`Sn*Ee#6VP)M|ActW#s=R1uVNCJ-q8W{_nVk$3j-kwXh+c!Srk+XqMw zW&w5#W$}E?v1T)u;K8t^4*m;`!JVuU-v0VKWLTK_{4kwyBnJ4aE_>VFs_Kyjb?0uf zxLZh@VZau&yEz09)icO~_9d?`!=4A5f|I7N(L+6ZXE%s5^ zu2u7ROXB29BlZE*l0JZ)b3%&m-P^GnBrOI`3{art<5}dh81fv3C*z-N>P*dD=OpN1Kj)al`Gz~r%#@c zXCBTQTMWAABqt5B5`CCj#JKh5jR4?TVL)2y?e0yzlsCDYT*s6goy* zMtRY5=5_`9pM@FMi#PTos$^cW(frLiPN;840oWD!q|e;AaYGKu^05Viv`mXEp+FeM zKNs@%!WGVB!1IlJJ7$=@ZIX+vt1BAX)K0fS2Vhy#bqnNU+!JeWo8>BBfr-oj< zc(K_ykqJIU`3-H{1ac@FAwk_Km&weIb@6B^Tf{AZ{Yw6m!VqX*lQ6%d2JzaCxjXCY zHa{8ux0;o8pcpUg7{}JOnXfMy#wrjTc9&Z_M3&%uzWKmVP>`m8p|j_1-6S_t(`hE*s7Ib2VO3(rz7r9zX**xpX4YP}B!UI{W7svix z_feH{@KSPN#{K(JNTcKx)gX^Jx^}V*Gc|X09Vy*|_a`{ixYtbg&@-|&Db>JE*sB6B` z{Y%XU;|;`vB_&Ko8`)3h%@V@RN#kzI2zeJhJ!W68T<)4>_1^-66VFegY0C#1!YAhr zH9^#-Xn*xo*6_DZDgr{N?O1`UAINo{{;uK~=as&@G+I!rTUb>!qjLY*QUlxCa1O|2 z8V}+i#tZE?+f(%$Vk_OVE$ZQrc(mejIi@}rA9H;<4drwzBx)pMlw8-b9|1EchRNM0 z^QoWYcjU&iYVxb?Hb-diwOYAy<(Nro=EU0{=XBq?>jds`2*SA&Y!rmUS5f-G0ovJtYE8I#v(f4~7-w^A_2SqXkPq1`f{OulJfP$#$g_FIf z&SxKJU`i+F5N;OXZT;@p)-;Vq>NE`%))ylF(Y`r{)6O)Olmbz4R zbNaGTy{=3&e^(d%NEZGhAZ{9%!BVBeD0|+D(YPoJ)r;j}`$%13AIP5T0stb>B|=_q<@sOc`u{{6Q!bv?J{-(3*H#;6g>1I}4N z;t&L-JhWao;N?mq`#?b+$hR z=;AJ7ibN~CVVcZXWICSMPF|D;22jfO%duZhKsPMVQyL3p5h9ie{yi; zYz+9J*3IY#$=79cbY&wDgdAzzy++Xi<;1?UqbMh!I=oUwxB3#^Q!0QD-PxFXig8ow z9zw@y>2V^@S?;z39yen~3*YzbwiV7f4E+vUz5hJ@*9XCoZxVUMqt799XU??7@d|Rr4Ta8k#naO-a#1 zkKI{pwU0}3oM;o?jUOO`ju`)L= zuMTwcnV1=|7~J#~M};Wl%pg}Q=RYhfQfi>K#lpe@ehiy^gS-`kSL;%U4|d~p{jH3Q zovtkpG%|xIB!MtSzcooqZVHaqS^9N!h#}i_b}1|<#YJMQ+X#=nEYL+nh#YC%ZT3^W zqSKR;8uwEuTD;dD)ajf(D^Cj7Ryn(wk5H@mWSq4`S}Cgeom_${6)9%-W4Eq2^k|Ks z12%2m+*ng{k&Kv`s>J?aYUIfq$7lAs^1>jBpAvNL9CQIXt#S~O>`9oaw@bsIuU z=9Kz`j3IqP!#tROv;!g&-q^lVQ1Co~p6;6EvjPu@$j4=UdhT#O(0GI_Kbh3VM0hjkCYIb00uZkD|HaE}`5fd;oY4~Gf8_`jdN(v5@ zE}ul6Jb6NJI{?kZ-Q-AL-}$MSzCu*t4xpi|{-I74(zaJN%257R?CR*K1;CD5ikB`! z*pKn2DF{JJyzQvgR(>l!bvm>XRFdP)H zbK8gG_AGM&sMhX)HJ1hZ>155yELKtaUL35mI|0J<0^d30lzdcXd@9#qy^y|r0mQ~e z6!RSRQIJa;j9jG;nlOJfyeld4Dz#5;1ez_OJHeP!Y22}^H!KL4gVr_bKC@$I7nFk* z%*WWvZoaDf3b`LVa^m-{@gUC}f_Dz{eG(FH+ycJEY5=2yvAN!-O4Jd7S6(#~J{^J? zMFV@|KVcCOzMjZut%9wQ^rge04OJf)yp=p?xE#&^X5m(YX)!JQJ>;-8yak4c9xGU-NiveZAK{v7?CYv2gAz|5}ul><=!Qn2ol| zA^7bM*z`$-1^CmOq6(fB$4@H7)LGx~O4&Lgcof^~Z8!ESBlfhWqjAB!fU9EYq{7rEm)E0d&j%do1Vg-!) z%$2npPjqI9LmgNE`eVgw21>o7p^9F_X;Z*a_UbbRzxyP|nGS&OjNRHs{D|?!iL;df z8z;4lcg>3fS;ngjmxDoq>$Fiq3z`a_R^bpQ*IxdO@3qnAJ0`W-FU(yWC@#A-^T~m^W9<47itZiM zb~hS`^1%!~F3oey;JE6r z70cnG2YW;o5yoINUI!r5*Sj_#14df27@z}qEjG19*-skxo};ajp$&p<$AlK9@8V$M zfl9_9Bp{5(f#y#XGtrpxJzaUkyz}?j)$Yu-ej3jZ=r4@y*V5Xc685T3MaFDA@P~up zXsTkJp82_em{VY8Aa$LboozmI&g;yX+W-s7H5s`q9@=TWG}_JbtBszyrM*24GT#F5 z*8Kwmd5`WD{ws!8V9#+4j(lUWJ3w>Gd#_)+mWSe@iQU8l0Wk+PHcJMW%V3{{X%`M5 zSrw2rsP4smc`<#EYREd!`Ai}IaAcE`tBZ>+T73~48yhcQ-BWh})J;yJs=K91^ zjs^%t)#(c|C5S7KxC%h=Fy;c^VGY14>@pI6AKYj1osK`dr+nN3)62{}4K!NP zn;Sb0K(uX+>ss>gVeDRNjPYrY&Om?v)xmdPfBKXHjLE%o4|5^%1! zS(}|bC07Ri0JkujP(zs6$_8fQa?J=ya@SSrA!*O5MSXX_yVjeCjvtr_?kbV!o8FXl zYY>Ty*VDZ)I{>!P_?B_IK$xU{FhIx;BQu=5_)3e0!0}q{F&_HRJz#_Mi9@RK ze?kH>MuASQP~+WGfKo~-Q?`F>T)-wIVi?O1NrTo?E1|dEnQo1v4yO)+(GUTds9RON z`6ih!nTc_GU9n}yVFL%v1kb-T`1R?d-4TT5v%Kbl(AyXmC7fp-!MHwxRiYL#Ac+XG zNXBTQ3*hJKb%n_|vnuT04hirwV#30gKq(6Qip5+ke=?l;N0xTx18xg4eoluxhu1DX zH8FsD>ND>O=8g(+E*YN}r1eMa6{ctydd+d({VW-Ryn|Z6sNVVQb#C`NKnhWItzXM4 z9arp|?X-BK;A!!=>2+}=B2Jb5YJ|P+( z_}#%T_yjB1_=%ISebxY3BKz(O{=yctLbr`?t@M8cPztdB2tW{kM>i2594DOM#M};~ zg7{UN!9uP8ItUoNsPWhR>Qm)B{DNBy3{X#*%*;^RMKZA4+W7dWwzhV$eFDZ*fV931 z=g>5?Ck8YFXINTOPH_*d$egm zF1WPD&0%*CGp;bIQN#`*%Orl)K3jwT*UNv^7%`<&)t2DQ9(1qnA{Ho_b ztO=yxrSiUgPy5zEHGD0%W^om>!=%817CJo!nGJhhe@ zOjc|Nn(Wub;eB?gc;mngikMvQE9D2QlyR_&4f5l7qa#&#(oghbLsg;5%>g9hZ6);! zpAo)}x}AP7XIHy%W1)i!GLBRG7=+C%$9P0UMLR&i6Dgk86?%%0I=wCN)=^r(2wWpZ z$O?lI`3j&$z+kiZ#Q_>LnFjdWNBP`)%Gxqp=&Vq?c0LaYS-`Y+0l2504h(^{A>unj zzYBS{F2TQ$csaH*NvmADcI`s`Je)I}(Z>l<8H}fKsz>0rOu$7lI8-?RDlQMGQyX&G zFh)TL%yaYe#D3d~HC=Px#n1kQd<4v!33+2Akj?o(5yXwrFBHo}Vb%%|jvB=odTX}E z^&~1npT64F!xz6zz~R9JOfr)Jxf>|Ah!g2mE^bO_6rzZnI~O9-*f6;n+qXx7mDmp{ zY8J|;NZxJSq8crl5drj>IXPRyN}0rjAt?2p{Tjxo)-elGr=3{5Tc^%UP33@PC7S6S zH*f;I-ycIX{`@?|rgRUbbc0uQ8A2BUz&Nt$DAJoaDUlCR3X)jkOKYKyhfVC3qcaZt z^97^G{aukOCs3AV1F&uf-d7fw2hG+rlmi{eF2nGW#O{IZUI~=EXa%~X8(TVDD0S(; z#qnFo>H#c7I@!}fPR|9kZllFN{l4YRn{33_R(!5u;GJBGN)%4zpBww% zy?l8d(54X-TREKD^iCN};q8KDS0%c`mg7?teJvp4nEW*utOjhK;x@U3qYZ+Wwb0k& z#49Q(At}eLGNGgBATY*~PYxLBeUw^u3mQ*n5GC07Whc7Mt0KFea#in2QuZ%`LzLMayL)CT27AF#2J; zxt=!&GRHCx#yHvB{Rh2W3+dE;3oI3_iAaE@T?d|a`Dk}n*AGSRI90@=cAp)8F~k_Z zS-!E801(ii?}t+Bhu$)b&hp8`8VZIXKnVLMx2Um(^$byS_ys&OGBSv%A$FF3*MkDO z4T@ti0fA7U%9s21#pnZY{px}aUn{)!9I6#F5I@8O$g(j67z;U=;4(O22H7XHGZ|#j z!jAw?JYreut8x7L6`KzLm@7c27osv!1k!;Nk^xxqw(zN-;KMpYk=W+|X69S3iW?`;;XS#_K!)-w6_~m{uA38EIa|%aG zc>4U2dftG44AN%kxPUt3`2WQ)v0KZDKJvNl+w7~ZP7lIz3oK!h%z5_|SHIN$HEXp> zpU0=ttAI7#OXuk)UR7&Q#3W)UtH=e0rfJsH&FCs*iG9HBkS}S|x zZm48{Td?i0sz?CVGxLGOeh}+vkj_MS(CDV6`^7^bjQ+lo-Zl>%Di)V%kx-9zWgz7Q zE-$ehg#bOdp^dKp9f@vqF?Y_*PohBGMiyU|1#HFmT|TLTfa{6L%9>tSMHiKWTUOp& zNd`&LD8-8l1;bWTxIX#oFtAYU{1l;3%)SGR!94YMk5u&irbwlP>n0ip^-Gk0_Bti0 z<Yy@;0cR+v98Xi=P3xUkB{cdb#_3 zMR@F3wkSxd4vW8#M34%S_&GZZGo12U`t$Is3q~TT;fybq4j((#fnei;_S|v?$;27r zFOoB-=~t8xfat4>AO9<{H}v%MLvV&553+axzbO+INY}A?W1EL9MQG^D^N`}Xw^?)h zvVB!N$#$Cw!ZvqeN{vH^p2EK0)>Z%jNF2ub-W&w{y@+L^Tx&#EmVj+uXKqvJyTeZlEP6lK}5aP}hE&L&=^;&5IL$^qd&xtyy*DO9LI|APrJDQWRH zDrybx{(7kSjQbnZR^g1M+nWRJ`@yQqiHdH$a&(2lXdgjKdA`FI!yi+;E{k~+t&uaD;G>CFwLI8n1>b#@d#<96E@75F>A`LqXI8e zY$FgAF*JVo8MJvUDcXU~U#i5onTdK~UUlwlxPvIQ>TXLn1E-qF3^aQzd?FL@o*@I?5xg9s(!dqA)hB1VASq}?)cc^kXva$` z^HdVqwvA{7htNw2?O!3l@6Eq#@e7}VRK_nmfXEOc>^B2FMVgbu<8p6N-$@%gJ0aY} zNMQZ7YuALv3$6|&)GpQTT-bD|eZwS$G7p3B7;tv3^T^7wS_~RMN+MLz@4g$w({D%4 zAHr;AF1}hjn9s@T6Nj>?t5akhnXyCf62!ejKx}-z*RLggvr5Qv8q_qyA0OIJ!(5Wv z&(d#xavP>rqHt`Z&aBk0$7g4_BR^$A5&V$F0?ecLgs+zY8_F zID%K@@`K|wr_46!zd?FpH2Mw*QbV}jNhb{kyzHdtI0nc2=23h|6F39ww}l$RMu(}Z zyBk8QX06iuQ>uOwp#if$b-|+&zzc2-O>^FmoM78VDr~Y1(WHq0D6H0G{!(!!64jIz z_#a}BjYv~JZ%WZ--@MrXABwEEiV=-dzFu!b5dF2J#!kmq# zSmEnKY-h(7klT0?!hvcN(|qF~oI#B1vWxRkIvm~I4WJ8qJCooUjB1rE8eg~6zbTaa zl1K;^T}0#K;jm4kvnDQZWupK|Tfbh~N-_ISsM0-;oPec8+Iit?p2D~V#>nfH$%fDU zcz+7PY81+4vUdQDw}S6qG(N33Db%P{YGp`*X4pKP>4GV3HM9=EzkKE=9b?ft$&h)V z!QK3fa$9gBrxA9Xt)cgqY3V&oRnk0@g>`KC59^e@R9g;#}fgKvo;v zK~YaI?TgI^>2d{p7?}U|^o`&w3q!~@ zwm>Kvu(}*u>BSa2dddX-bOZ!dgy^_=NbQZI;7z-Q>Wsi^wc(UCzUY6|XNbxVAcK&W z{ZTwHxU3~q1_Oj3d*7-;DZ+6UaaluC6OxCkh0kC^ zKrSngy4Tp$Q|Xmio74(%80f10iKfu93BC~QY<$HZ?QQA=9GF7W!HVoP!SU0zak zVLEVVa|ZPoKru!(rsLNzY%D3(MizzZC&W z3*WmFiBruI^ z1RK@rLq=f$q4YE`P~rvqEz`ppXVy8p**!KO;2OYwzy&_TocMj6m>M0zc$NrCq~Zml zl~EM>eg`Me_cIDcviCe3Boi;>-}uAHm}zLPVWgV(^A9kJ6%l~_@qKfe$-CHjrA5W2*$OCtECKpbsVU^z<;) zGDu8=&kjo}5GW8-5vfAm>{fK(CFrQnfQync6<+wp%T#qq^&!T!0%L__RMEg)^iZ?7 zYkn1_=}W7BsE0_y@^VUMU9YGY-L$wK_uZ^X6F1Qs9^sPs4@gnr)c|phS*8jgh-*b2IUb1__r;`?N`}O8RM8+ z&aHr6z%gRQ3m=%Cs~i6Xy^GKF49ZqB6obfR#$(15H7d|fOH7m+A$Il^dm<4)EY@E2 z!H^TfnJb82$erIjS|}2>Vw=#|0wnXf|KUs$$%@-7r0X5hLz*+F{nu7b*7N2d+-T?K@KTM0hpV@&$jrR)ig?noJ{@#G8-dD&3QG;TK^Rt9Pv8wmy(r@ z!_cIjbeLU>{i67sF*C%tF7`J8e^koit(TNukF{gWs#Up+Dux=hf>JvPOmr|nNxb&tl{}4E@4MKF%?f|}dI`^JHmJe^^ zHM+{VZ3y3X8r^mq!ikgoX@<~Kb&JJY`VS1noE^#C2O@^3X$Jm+lkT{4n&+TmW$y=K zXD+1m3KqlrKg_dWcXGXzMO1H_m+D{l=9+MxGiV+5!j{R4rf?-A6R5Z|re0HM!0!^J zc%_e_V&YB^JBwA@M?8CzJ7gll#h`O6%;0`~2PrG3r6vKYtX53-F&S)~7Afr{HfdMe zAZs4veUU@h-;rBNXY`DN>@ll!;%W6o7d}|N7tcY_ssZ*;mTGTFUKj|$mmLQSOttbY zLMW8-Rqm+`{?%^*VCyCA+|j*sxle^n@YRg0eK$J$&*k1%DuWSbweUD$pHuUn4v-)R z9AMF95+p6Ik#V)rpy_2NRT%2VkE&pw=6{b9T&ovd#j#cP8d2hFd&5Qu zHK5olRMh?iZN$P?ZyFnDI24_x0BT593lAq7mxDhF7m&RY#zBHAauHb|@=BU*!VyZx zD$w$2-+GRYvUwCZY)%V9)K+jJz{p-%g#hZm5TF~U2?bUI21BM6Z~$c?lV*M`cKSDe ze(fG@7_1Fd?Y#E-4w#D774wQ1{N~6JSN>&PepRP6T1#l^Q*Tp(_|`XP>FTb}GPs@8 z`k^eZqLNPRvs+93*G8_P2<-MgnM%IDo12?M>T_ca{^f_5Xjxc_oSKnM)YC#!_oMg= zqzw4ERmkP1X(;q}!elFQ{TfQR9oCRIxVYRL4HBlLTu-A>u7=}`if9T`@;q@R3C=vW zpm_gvN_LtIyu*z0kZ9b{-$Y;m1(e zLfyhKJzwwO(XEu62MpT;$;qde4A$YB8|H;a-IuPRGzD4FQz8^DYX}Zm3d6(*J=sn> zD$}l~Pp%fINFVEI)`B8kot=eM~&m31*1aYIf?a>1CK$6Luc5qo}CiT zygF1wXwaBBuXTuw>t!yG_2C=hh}l3rYe56%ExF8Xnj`HHO5)sm!vfGxTU4jjT<6t9 zWbm3XJ12 zdQqt)ETW9lzI8=08AetxQ1Yhz1BR*^>EW3fBql<>j12=WJ(EX+Rb=9#Ad3tt z^(J{wF{R0oA0D`tC9IB~ZYTtEFcHR_QH+|c6LJnxcYgie*B9sHsX4E!rx*9wNyghX z6<};iW${N^6R&;Un58gmMbCSb-AG^4}AF zCoib*rPd3R#p*`QpSrqSSOow9Xd9W)ui7j`ZD2CCcSTj}HYLwJKH&@SM`odlfu7#S zI_KEAj;FA{t?-``vG`12#N&6FE@aDWLt|QTBF9ae?tTm{^i)&$76Wc#VgQg}bLQcQI6z#) zQ?P8rFj-pg3*)A8g4zKxesORP7$8~f7Q2<6V!sHGfkpqMcrh*ZZ5x`msdN9(+;aTL zvZr__p%cKEqs$xwv0_`NC{&XmaZth{(7<`6F~!zef3)Z!?-Z7U`v3a=eXE)9Kcd>k z5Qn_;Cwz!Fd@&C-t>jkgZ~c51XvlSFK*c`|4*p!d3l`sEx0+HdzYPrBC{)OOWh{}X z)W`#mPoj9s2~rK;it#l}``0{PMz_=o;z>AMFB!lE+PSCAfn?bsn%r`(Ph1yc1gX(G zo(t+msTbLI0)r_Z<=Z>FeNfu5suV>&HJexP zYHHAhrd`UovS-hp7&xHlv~d?9h-Ry964UNRKL{Le@UH96sTka>;Y~JvffnKsFyDLe zJ~9}tAX?QTuHnQNLM8VGWSwM+luX6S0Kk0k;?laFQE939nGc7bo%2Tp7pu!=!z_?Q zsMhOeKf=O;Y;|kkSgimjk96TLV6|Ey7use|r3heHErkLkVRB-k)&D-uR=I~<)5{p@ zvsc2b>nt?FJ`2Q2m1hGX&^Cx^YQ#jt;NyoG%hl+_d_NN%ZVY5&hhR@C`dWztG zd_TN_qP?}ECBGI!?V2t;1C$oGII&IjOAn?HJHRrQhtM!NV+y4Q3Xs!iEXPN}KjUcK+{gIHDi>LL?${DW@q zN;?FqW5Qb=PykyqFt`A4W*S?RS-S6Ej{UpO2LIyFem7Vs>TQVa-*O986m;MCs*m*p9j4G5bc2djvu{HWeJ2n{}DfoXWC$5A~>S_ z&LxP8^P*y%L>?eTmb+4~QN#HJIBf6L~^laagXE< zibZu`yDme}fxFGjpJKQM!erZWqF zx#^P#COhA+5pUrIL$az|QS4B6KOp;oyH1#mhbMvb8|ABBHd67EmX~~Q3H~7V#_pvE z#?>?bYwyhCdQ9K9pJf)?*vU?c?E8`m@hMs)GE&LXW=&E_B}-#Tipoxcva4gl=;d$ zrQdT~UxJxzLBifgQoo=e-`W3zVWMa`BV~>&9o`B*0IBNpuAz;4T=>!g_xA6UBbV<_mfLaBbPSa|`6_WMu?~npw?u8dP($A?v-p&WM`My%c^v z_NxY}f5_*Dw}!7q+Es0QtpF1|b*?4nK8qfL{}w%mJ50#wOJ&cCh<>D9~QYK3z64?q4`UKQOapjr|n z>3aJ`BffZ=NZ&y3vE_su<~*<8+b2#fPKYiFD&L(r@d|+TQZeK^xgG!EQ-`vaE~!)q zHDE2Yc00YX5NL8?-`HjT%f@!Dy)o$owy1|1)_K0l*dtyOAX z-hie>pRC|{SOMvLmtz26`jJPC-b|%`PYf|Ew{>usC+2CTQgn}BDs{S$E&wqR*S^gX zcx{Z82exqov5MW9>r_|nu5NY``m3w&k&3sfCW?%(^m{#7P=vfi$u7O$!YcWLS8iE1 zWzF>i2!Jxq^jeA5@O?Ag8-^9PrX7{SU#Gub60U87gFW9OX#sT4OWfDmI7v7kA8uPa zs;=V9%?j1yIN_hi`hA6DpKL50%7IbD6 z$-t9pWFhaZM>%EG?9uO+ivbR};rb1ib}>_T6_#UN0=^$*8X|uXGxPvBl^m zGRpjAaD79Env(cajy|Wycj#3d^O4q!Wwi}GIP!^A{uH8FoOXhYv#Bjr7UDM{azoK{ zTZ5EzTIx(;!pE1Q`41alZC>{v;kiI>$ujS`p0NB&$Sp<&XV*U;p!M~Rxprc8&?0{i zr_&R3=UbK{GRS{8jS5NB?qIgAomZ4ygK`r7@oy8G=+@h1ce;~Q`APqWx{N5+-?eM{ zgon_)`c$K4C!wqMPnxQIizGOG_|@G4Fx4w5f`Gk`di71T@W9vc#?C;v4%OdgnG3kc zS#`jdKi-Uv-YB^*2E5M6WQlh@Nz2Pyy~**mV^idcl%puFH8nK;G>AokKdJu9nB~3^ zbr*z4FsPbIywVjH?-y{s$gO{QOVA+kChjgS9&)K9sRM=$yEbS384a`34NEp#+1YJE zq=8Q%etQDh@M>;{R4+++%{gjn^b$33`mhNmZg941^7bGaNFP>>NJMg6gdMHml~!qp zB-50XmF4u+s5`SWm=)|Q_^{p|Zy5m{Ur0()&fm-15q@DZqJGDDz5)1SibVJ}b zateyG>b>Q(dB_<>E%^MZQ*!@f(`M7frf#A;5c*X>I+4-{3f4e$1%1SI;s!YL8`shD z@?p;|Gmgvn{mY}%QlVL8AK4*nm?_-m%#(-A-u`UjaZtG=t530Z;GLl}UhwL;Hx3i- zq)7tJnV5cO{b`}?yj^6CSrUDBLImZQkvb7T_tm=gT@KhumJfZl%9SR2zuIR6UH!ih z;!d!O5VToDG_w+Rrj2ikm+ft3neR4jHe9p5i4R5-b`cbJ9pbP)Ti2;^@84{qRB zp%Ts7sd<^b!3&p0zL|AKgtE~x<`x!D;05bbMK%}NEEE-+=9yU9A>?^w5XmVjloJm7 zL~mzi#V?F@&9-eNR>wXRXCO%TRtc*w#L22tX zMbWky@!0KsCaKbnG^1~~>eJhL_wE5U*B(e0kJM-@!!rF<+oTvl!rVyPu^GQOF?IeO zRHbu@9il4PV=EpiCnJSde}AD&kG<;`yM;g~ck&}acio&EDI&5=u3Ob7$sR_(Sc)tea(Iic`#Qa7?q7M;&%btt^{edZ3 zHufx=|#;puU@YltcNDl+^w;Q)0uXr?V(^Z>mGz|=EN%~y^u z@)wqGf4M4-RTx}~{7oDR&VLH4)yiq2|7u1Gm=4k<AV%slCsZ6ONwlwX zYjYCGYUCaWwUkA(jv&n`kx#i!VrB$%1z8$681LVF!yEXPX?mCy8XUi zb+HJ*^C3qu3WFz~w^&b`#MFw>j_=E^Xz!Ga+iSIR=LQP03F&B|*0u41fj|q7RL3u= z^5|yK0a`mJ@7ESyOkW*0pCd8q=DI#JXdd8jBgO&m*H}U^RzGMakFZK>0hrS_v3TZp z(62$P-;DBucil8h@P<5Wor7^< zgn(Ti6v1Z_2Tm>U43eiyXrM~kU<*_UUdsFYA7HsF46xsUAO7gX94FI9MF+^<`uDpu zw5c&Cc;g>OoQ-?*=y66#jab+yG%{9?-||v!XC8S3OLN0=PL<4?!OftWX709#gPqUD ztyQ;`)V{y^N$J(qF^x$c&W{nd#`pOQsW@JL>@dlFhFm-aqp~r+ZCgEnAaK@JS%Se^ z;=|z!qsIXbZ>K9?*j+#CpjSiZWCUm34Y{gH$3NcA#P=MJ`r+iYttxV`4IFf2W}{B_|y5aYp~BWJwoMb9XZ|Hri`tV`EAs z{>C5{#%|7@`3je-7C6+0nN}mNFlEWhT22(b(b$EJa0k2TF-2$#&J&3zemo0wEYS4{ znaD6z>%ZDkU0c7<%E-(#=QZ%$e!*?X9PMYdY0@UB?a!2L(EUsshwNjla*3CQABX5y|f>4;Q(F70ZL=e#X#u%d37_Z)fr zucu#nH>n)BSAV+%>9@~QuX$Y(0q&d~<}TIL?5i9f;V1kvfx92|-$pY)ShZ4CLd^#- zEnFrEu0w3+6L5^#xg{yj#oEy^BWccr(4W_(FW-&#nq*z7mHCuWZo01$IaqCrV(DI+ zR@696P{3u63KIT`&r#MKaBC$UK8<|hP1?g$($^J3h^^tIH*=DXx*p8daQ0f>?FPd) zg!-f~%|__N5+vy3+tN!+{}*UBBm1d z5IPZ@K1n3IH||fUSCLIEm7Dn3s>gNFvDUXECzxc|??EWcocqMD$G^{@WAM?VKM6B% z^K}^g#C!GF(^snACxx+5H(?r<375_3#GAnVp+e;oyIxK0$nPmPdD>K4SiXt5)^P|E*E}-u~kN0A1JF#i%zd+^|stXseJG{6Z?L&T@+@RIl`2Ctl{tqC@j$ z*97eicSU2}w6xDwO6>?zL$5RgY>?NgFDidU)*w#8fSAL3G->HsV{SgiE@S2H91m{k z^K}leE(WQ11V#Ycd!=2`k?(#d^m3i=tynnv|-U`WW_|HvOBYd)JN*5LIzt}z`8yQ%Udbgr5QW5FV)SLpsVBTanGN-| zppKs+7>l44Id=hbvi4RqF{rFEr~l2k%cvA~8qGZ6?rw&_#(4paJ1_H__hL!O#QP~N z4!Y>-V96K!=9pyq&S=gvE}*Z|W#dho(lCy>FH`}Wjq(Rz!NeHHM|50_Y*w8od|*qj zMy`#QdE9qC)y~A3GiT=i-~n4b8>TqxoC+1^8tRN)a;jadC|YMD4$WG=5Q(2Y8p~E@ zSN`xaW0mI8r5gZw%>nazJ2_z%Z;TK8>-V-3r(kHaf%s!g0Xx%SFRqo&XH96e9x`>q zfvo&?IOD2}3e;8hzbq@D0*aj5ZE%QkMc-z&;((fQ6@Z}Fig!->Xl`aUC})Tub@j2P z&)lT$IrSZ&gy5+~FVF7-cMNj0Q(@x=Ps9%~G=EOGEBlrW@n`beL^Mk)9R3u#b>A*i zunh~49V_bLXSFuW77A=?TtR`e_GL5UjvwB954T;PdLA!2nm#^xmu6>A&(|3Zw=!|n z7s|80Luo-t{;Ii!&Jf-fIBi9`9-@b<2s5OU1s zc?whHM@NhM8nBW6;L{7JJuG7GFR-9k+YW&o!ETKJj`V8yveC@!0RmV?>OSv2IKVC1 zPW=F|^)TRZ-%5*l0JV8|Nbknh{I_!rj0`HETKyKOmMywPRYFgI>3XMzGrudp!~x;l zH-Ga9dfGWCY zCo$@oQ(VAIo{$+4*Lop&dIwTt0@~WAY;X}dU*`vegkh`i*lY<*#ZCR&=BCh$H_o8}az>`&4DN{5ka>@UpbJH9P`9aDp@R^0P06CRk&-tavd z*+bN6S`>HH`Q)7dajwp``cpEXUq4y-)hZS$gLGXW}T0UiVCwBLcO~h{%kg`fWP+)6S{_* za++taQ_kyqdAlwWrzirBjhtB<5k77Z#$8_r6!q!TN36t{$G7H=dO#SaC_Bu0yY(10 z@AM=f5!CMm@=fV6BA1P+r2+IV0PW*_&1D0BJCy?#c2|J;NCPFy20Y(!X>id;O~g~h zx2;B394bg+qJ;vK@00VNlHFsY4HW$|5aSro6X ze_24&D9QDc?e7ooad5anreS^SQk^x3RMz{$l@o}TW%GRLCYZgy?Tb?F`hKwjZh88P zx4`ALo&1DR!KeNY+S@xE7CjwZfBtzSCjjlXV@cCUi@mnDVR|oG0$g2PWnh0XeF$ah zR!&&mPAe;a7y(Z#rX$-ir`F-+8>gU97* zS$zWX)Oj}YUpWf}i1MUWv=VXS+mdh2Mkp$To1!H9T*&DtI*r&5v&4i77Z;cfRf0l5 z&-tGh>Q0$A?;-(4l_Y28XUEDqpn_~R_SLvjPPB1z=bi@}N^OW|1%si(Jb~iNlSosa z14(Y*8L?I9?Fbgw!^q0WkToH%#>ifUgh578F@er3!(F>>l-n`r218PA5=>monu3#6 zO@7|e+A3P6Y>g38%ZL@Xv5{rP15-65VrA$zIql^YP}fGeA>cx_%a>`RLO%M8D(GQR z(Ve?@gz|@a^dbczY}>Mv7p0wI@NP699~N6E#7$*S5AtIriq zgf}e#4|?_7lt=$-k1qZKhq-D7EkZ(85b9q6;}q%&lU0OpFYz*3GQwF1wM~~cEgE5k3XL~)SMDY^f&2*DzIkbyi|N-nA&jQ4==eLAC$SVO zz%k^}ndu2NsL-E*EmVGe$H=X05^3R5BdL!}nnt{6VOZ27C}0;CuJBu*AX)h$r<2YM zqdSE}`-)wX`|;yK0xqnq;^)VaA=}`QPVG7Cke0NhKwWn$NjdG^5$T+BQW?n~9nJw5UDf2IZBN zlXU8OAPON>(&eA;x;9YQZ7}pGQ0MY`57gw(;r0BtI9B&Xazyy?Cw1icl19yhxfAUp zHYaW(2hWJ}F(QBoJ*2|ix&1yD@)YXvJ=%Fp5v3OLa?h&zqICfe0ij;^_VI!FyC9kp zTen72ehTHlgVfY)z#-dAvmhXnMeMa)?@L#s7T-=tsD5`m*aJ?NK}G%g_6;lyfdQG> zn#^7sJl*u?{7ph`E!ugb5TOb&6AK&$?pV?)vrcFa*o|u~?to|rsn5ZRgCy~y-r8ck zazvd=sZT|@?TetP9KkftOn*B21)11eUfy&&11d4}wSJjxSya>HDUbMUED8|SOHUFr z=J5Flq{kN(^XLG(RgQ7&G-9IaR|7+47?gYKB`9C; z_0?uCj1!bk4lQtal9oy&rr|PrX*fTJ3k=#`4n9G7C($D)I99 z^GkV*p$+tfL9zBAgRkl=#?p_=ayee)fm_UlhFkRGv9I+u! zOakQ1RLq}s{)^i%#k0ag+Q;b$OsZfzeoVVMo9PQa=O-cQMihHm~hdgtW8rf(TUP4YE=>;HcqAPTc{`Pv3wRIM7_WaKEiypHoUeO?>RAI zG5Ve?o8vv3^>Ic<5W8?$>uDFbpe3lEFLw-Gk8_w9s!(U}E_MruGMYxwylzvvTwUFt zKC#5RvEe$HQws1~efMOG?Ua%sfC##)R;}`%A1Z|2K!8g5>cHoLFZXLRFKKQ5s<;Xi zp<5{L9hwTEVoxylb$Zhx6v3JxJI&gP8}D@{Yxhtu>Bgq*K_dsJ@Msx0dq2vP6&!-~ zd30fSacaobBXJB_wEkoiO)FwY(em$o)k5Guv@~1$*DmRJpxH~gTeSRXE^M&3&*UR$ zN?blEW6yA^;>+2|M&logDUTCBdQC_KB}$innM7jh>?lTPT~|r!z=*5sz%p;UZw!dt z`Fc^(a`i56rz@d)QpUJTnLQp1l$h%X^=RdmD zoet0izxldmUX552?L1-KxXK~s*9lI$j)n^hMk~{@Z7u#ZO?nlL6d>|VN+PMq{TOU7lHN6Azi%s1=HqF~h(@Xr~ z+-LbWA9DV&et*IF0&`~v2_o{^n!$qpXqZmd{x0odYxja{30!V zx73d7SK5b5!=+4Yv7|pGldLWC)-c|(!yLaFJEPv9^nM3?Xo~nEU$G|@F9=q8Vq&7C z{k^a_x))_Sl)m_^A(olzn#zz!%eK^-XqYkkVAqsS#(`6lqA>4T`ToN!RC$qe*6H49 zDkeGwTF$}9X{N@M^SkV6>$!@w-2bc!IZ|00^BIzzVpoQrR@55SQWPp+P(_J5aE#0D zFDvBxA-CE1jze*+&`w`kc44~ePQ}NBPSF{JsmaWjvtPpiAgJ;QOEcthPEEP-la8$G zxLF+s^_|k;I-)Q8%qWI(2V_Ler6V>;b0Xq?gUCybEkhM|yWt-Za(BpUs__W+fJpoE z1|>__)61SclR=a}KBvbeK)k@7eZ!-)F3vorSWaFP%~SOf7G)TVpAl6Fif>;GQ%^y{ z$mo5Wpu+ALJZZJ8)L^xDofih!xwi^bSL4JUVum3N0NDoF znx0M}^eQBw={oe!iM-}td3V(`XNqZ0gClRtN?l2ZQ?4udX}}wS$AHg92p!|TNTfO2 za8tQ7W0SV;oP%gu3qdU7kIogd$CA6mBmzW?YiW}t*i`4aGZVq;K_kum0w=!CwunY{ zvzkH71BMRGfIsuD_^^k#?tIF#+xQ3LI_MZ75+1pE&pEnwccW<$o_%>hetCG#t|rG` zjR

t*yW2g{>Gpd&6C+*)$X};VHS}lw`cHG)})R>o#7%&naIU4SkPAH`5*vSSPowgHn$g*`ZgL z1ICLx`h6VLL1!(O=izex(xoA-v?bjhesM)Q9}fI%N*!Same{;67E%ZdM2ab!X1+Ba zIp8W3w_C0=BODzzSPi1Mkz)1iJ82WZO3wBN{V!<*3mY*}{7@ zluwGH87wp8Zfp??t`CQ4wqQV@pWk^2w35sUt?=Ft&+qASKyn{pao~(7K>Z~#_Whf< z$&dB*rT`C5>O#Wi(}ui>p2(iX)QrV9%(^LJ3!Fe>*TEhhINn9BTfU1!?at1z6E+Jf zE@u_%7MoI- zEJ;9A2K;fN%Zd1rVumL~t(yDIxnqa|)hhO{?jC%H=Gkj+3fXt`sKrO5bB>2ZYb;zS zWrzbIwc5abj)dQY{q6G=>8UDaY-n+`$xpzA-Qf*Kq0VjA7Smi-Qy2ekwT~3i*{gpp z6QF+wbGTjcTjzz%UHeFRO39=68$6I9tWOq~Oc_B&nc|L{Sl1KQs4K%YoFYV%wZSt&}gi;A8l-ni-w z_4IOxK2eL7?WGFcH7!-1ek(D0 zW!$)9RD8##snHg6(Sa{dled2>z(tt@iWj6K@8W`h{sdXyF_)#`tGwXQdiNF{iV)&p zVxHj5Xh%JWSh6oI;BAD9Kk}$SVr_Ws#x7WFM>n|^w6*K)d-deXrEN){AO*N zBuM{A3%HCI`8=OWDM3X+4;mh7avZm!a{HdbHTcAk7!wi{A zZ45=Om{v3E8trWj-P_Y1r1ZYmrMNK`X;4#(gzT%lkJE<=z-6 zGg3wd5C-fh`7$jEjcx*8oZDLUQax$kpz1v#>+D=yV04aE z?k|?Ct3GeQMxepiE4VBn#FKV(h~U1S@1xfYi*sA)fwQ62gm9B@*GMCLpoeJS*<`No>fA_u1?0Z~}Zp8w-2hCeKMhh+t_b5&rXH zko>phM8&i1#lSzQg2lLcxrhyj=1Za59`Md=sGCr$ecJol?AOaCSuWzqi zqC^)DfLza)n>W?*7TC3bfY^8HqEX4PojgIf!Gk3Dl-3<{ep7PpYFr1I7fyE??_8$C z50uD0vbAV`g;Lw*5uvV%4bzO0N^)BV)s$VXyN%Q5LNN)wF3!8AXTz@5BlK<+Pb;d? z)umZ|A-6lP;!#nnL5*$H$fAnpMHVA06!H}t=3R-5YD>9uZJl&cMR$d$D5B2_>Z?eH zsyjs%^BUq4b|*?C$2xe*UMePp{^` z#=`=$tIWE%{2h8>#h) zd6O9K_t)8Jjos|yA#ZyOS2|CpzO}$R#D9b6*K3Ea8jpbdGHtO9c~3C#;dOq-5XmJ1 zZIRDps?IZ3n-M2wYb{!ME?G!YHj5(t$x~^#o#hz!1X9~&k)hk>X?}C=ecwJpcXSrTeEGN`tlfW)2A>*-MD+6~t+&ZG*0R&s9!qnrcPM$gm8;u_e$O*NW zwTw&%Qzllzelw!$5PVM<@7s?~nZl9*g*X5}pB69(_W|pHj5l-e=R}(<;hv^*#ID@B zb-d8AkP0jjooy`Yw#kprcNEQ>@C3MFUncv#>tr>9^IA-P5(uJTgijabjCCxUb22Do z$C_<(9@hoTx5`R>EBBLb!4$_mdvqY6XBCIju=DEaLvRg(kZ8Et!nXs)zVG$5w)3y8 z_rh}y4SgyCy7lW-zf_$vb(&N7WQ*bC?qojV1jJoIXXnnTxC2|sU8@jaHSDlIg5gtS z87so>54GTS0;q5Vt0o-3#7H1G1cqs-kWPhiEM?OrYibnw2|uG5pnD^Q1`)6)J~V++ zMVQ8j{*u5+i!G|U=@$(&4-P8b^l?nQ3uYMZ^yF!Aj!fH=vRonz*o1y_GdZJ8+2j5z z_RTT*NJGic3KqNbwM$#wreS&(D%$r&CkMx)+VLnLL?IUylaQL5n;|chLFckr-?soG zLPE$ui6E8qf_^8?Rdw?&8o17|MeaHFhq3(Txx+{E$ z&CO|uv6NDGZ%WjBTrII*k@hGdYUbg(xee|bPOZ`nRtpuaR&HJN^wOKs)SQZC#=bqt zsW16I|;`P9kx{Q_ERxynO0ZU(mfvlwM27=+kGYD@`Fa5%bMj-Y3*nf^G)f57FN9r~TBm-5GewnQdB_ zvQ_xFL3V9@9@2w!!j%`%?3u!C8p%+&pQF@M6VH{W^|&;3)yuo*tk-Maf7xhlYnvne|uI4s2^I)+zG`DQX!{XuF&3k{b#65Q5xa0C?56{D_2D1E=tPE2iL>l(YQ zpckBeG+iivILZCOG!RJYLW%z+SzfCvSfl+Kway2}APs6O%xu*-RPZ)k2AnCZ*aXbZ zsklNSIaD(0w__L~09MOEnE4Seyl{BowcYB_`w6cVj5VxJDEi=MWYv`%$~JZ7%L=E+ zcItPQ4F@;1?Sw9mI6tDbYWT?9G{&jRi=8SWGbNK&RqDBMUHD*F`^}AGF~fNC>eWIH z*?vQYXyW)^ zNrM<_paSUgBra2UIg*?Q$W;x2R5~G)!XupOdt>Ne@XTd7)w<1>&sMzyJIN1)6cEf8(Ab}I%}+xKC_ZH7JT_dDx@c_JKz5?&xAq(ZPEl7cp8@}nnK9; zZZy?jSq=#+k7Wi*l}Ep}^Y#hLds&SRQVXMH6G!a%{$uFo2Sl1Ywb_zteJ0Y1Q_I^% z%ZLL&FpX*_hd-IsZ!chrxOV4<{H#__2dU2Af5uc3F-?dg>P>4qAfzx*&5&uH5=!wY zTJjkK6@J%248Q=$Qt#JaO6tJdg&jwJ{}~4^FtDw=z&0<9JO|;&)2v6&cWm?wU%-3e zh(klu7!{odtSR{;oB}ibJ2!{vg5wzp!HDy!ddSfb)p&2W{C@qgKr1ABS}M=Q9nX z0RN$FKl9T2sLHtW!yVf>h5H}F3`}b3FnYNE{!93lXdROO(9VhGCEsTYLr$*UZ9j*M z8lkNui+_9mM_H+k-~Y_{LG+vnmhgHeB(9vR+F**kNgvwLyb9H#E30{TCa}@>KXo?) zpTDY_8eS{yiyLIUu*tXknSV0or+?nW7&PJ1CO_m^+1j2NBYliFDd28RAB+Df|HT4K>Mr$?4|I?av7oHT5p4}pdpxzz(R%9F`usJaU z^@qG>z#91p6ErU#;FoH-IJ=xLQThJYOC8t=wJL_utmO2lyVe&UKfag`!`Wr@j9)0j z=Iwg(^DUahUd|I$AElR!cx=uB>%T^EEx7-K zkM?soiwGdwE<(lO&I|wRdS;+bRA_niThFc$b(ELcd<50sqJXfjX^$Vfev5ubx<86L z!BH(LNkFvVZrxd#`~Q3z8PIiS1()j3Yr=!{Q5)k;Le0tQ!tI>397Yu` zA}3;GqdRxG9xV@Nmrn~?cwm43bD&Tf-36Gr8%b{6HDN2t8P#u?(jJ|A4?m;6JVR!u z#=SS^J$m@i4>eylu}RKNT-{9npBDc8vxrVI#-uAE6>vcJk!*`g!?K@#8R|#rjZbFE zp{%kf(#MPEyK1yKGSFZarq7S?b&zWRXOLEXh%h4@%s2)PzvI!)?~86tAjXL@IgIc2 zQTx1rWeP>Sl?8Yj#_7?VhyN!hcNhqrFgfWmnhibG0>_o_FVfFN3C8c-n! zM?7&Z8D5^ICO%qNol=`s^2qC%_wZXq?c2BN1pFY{sf6WRZn*AIVovE>aiUYYgpk~N z&?>#BjjL82guB-FSMS<^oORTwQT23K>XPLP6v45Gsfp+k28aS?^vDIkivtD; z_f1^sM{!z$qm8z-v=nigC0&8mFFql``srAD>qV8u&@qu44w!pr8o%)$8_%!cBldrk z7P>HhZ+y1?U{-CUhw7r8{-qcF9KHB zv_.log, gotten from - # file_writer_config. So it can differ from the real name of the scene. - # would only appear if scene name was provided when manim - # was called. + # _.log, gotten from config. So it + # can differ from the real name of the scene. would only + # appear if scene name was provided when manim was called. scene_name_suffix = "".join(config["scene_names"]) scene_file_name = os.path.basename(config["input_file"]).split(".")[0] log_file_name = ( diff --git a/manim/grpc/impl/frame_server_impl.py b/manim/grpc/impl/frame_server_impl.py index d87f2cd956..5960e7430d 100644 --- a/manim/grpc/impl/frame_server_impl.py +++ b/manim/grpc/impl/frame_server_impl.py @@ -97,7 +97,7 @@ def GetFrameAtTime(self, request, context): selected_scene.static_image, ) serialized_mobject_list, duration = selected_scene.add_frame( - selected_scene.get_frame() + selected_scene.renderer.get_frame() ) resp = list_to_frame_response( selected_scene, duration, serialized_mobject_list diff --git a/manim/mobject/coordinate_systems.py b/manim/mobject/coordinate_systems.py index 3cb876fad6..c77f0ed7a9 100644 --- a/manim/mobject/coordinate_systems.py +++ b/manim/mobject/coordinate_systems.py @@ -41,10 +41,10 @@ def __init__(self, dim=2): self.y_max = config["frame_y_radius"] def coords_to_point(self, *coords): - raise Exception("Not implemented") + raise NotImplementedError() def point_to_coords(self, point): - raise Exception("Not implemented") + raise NotImplementedError() def c2p(self, *coords): """Abbreviation for coords_to_point""" @@ -55,7 +55,7 @@ def p2c(self, point): return self.point_to_coords(point) def get_axes(self): - raise Exception("Not implemented") + raise NotImplementedError() def get_axis(self, index): return self.get_axes()[index] diff --git a/manim/mobject/mobject.py b/manim/mobject/mobject.py index 66fdead7c5..5a34582183 100644 --- a/manim/mobject/mobject.py +++ b/manim/mobject/mobject.py @@ -8,10 +8,10 @@ import copy import itertools as it import operator as op -import os import random import sys +from pathlib import Path from colour import Color import numpy as np @@ -199,7 +199,7 @@ def show(self, camera=None): def save_image(self, name=None): self.get_image().save( - os.path.join(config["video_dir"], (name or str(self)) + ".png") + Path(config["video_dir"]).joinpath((name or str(self)) + ".png") ) def copy(self): @@ -670,7 +670,7 @@ def set_colors_by_radial_gradient( def set_submobject_colors_by_gradient(self, *colors): if len(colors) == 0: - raise Exception("Need at least one color") + raise ValueError("Need at least one color") elif len(colors) == 1: return self.set_color(*colors) @@ -1182,6 +1182,6 @@ class Group(Mobject): def __init__(self, *mobjects, **kwargs): if not all([isinstance(m, Mobject) for m in mobjects]): - raise Exception("All submobjects must be of type Mobject") + raise TypeError("All submobjects must be of type Mobject") Mobject.__init__(self, **kwargs) self.add(*mobjects) diff --git a/manim/mobject/svg/drawings.py b/manim/mobject/svg/drawings.py index a25fdd4ec1..31084394db 100644 --- a/manim/mobject/svg/drawings.py +++ b/manim/mobject/svg/drawings.py @@ -1001,7 +1001,7 @@ def __init__(self, suit_name, **kwargs): "clubs": self.black, } if suit_name not in suits_to_colors: - raise Exception("Invalid suit name") + raise ValueError("Invalid suit name") SVGMobject.__init__(self, file_name=suit_name, **kwargs) color = suits_to_colors[suit_name] diff --git a/manim/mobject/svg/svg_mobject.py b/manim/mobject/svg/svg_mobject.py index 0d2cbdf54b..9fe65d26d2 100644 --- a/manim/mobject/svg/svg_mobject.py +++ b/manim/mobject/svg/svg_mobject.py @@ -396,7 +396,7 @@ def handle_command(self, command, coord_string): # TODO, this is a suboptimal approximation new_points = np.append([new_points[0]], new_points, axis=0) elif command == "A": # elliptical Arc - raise Exception("Not implemented") + raise NotImplementedError() elif command == "Z": # closepath return diff --git a/manim/mobject/svg/tex_mobject.py b/manim/mobject/svg/tex_mobject.py index 8f6230214f..f661d0457f 100644 --- a/manim/mobject/svg/tex_mobject.py +++ b/manim/mobject/svg/tex_mobject.py @@ -27,6 +27,7 @@ from ...utils.strings import split_string_list_to_isolate_substrings from ...utils.tex_file_writing import tex_to_svg_file from ...utils.color import BLACK +from ...utils.tex import TexTemplate TEX_MOB_SCALE_FACTOR = 0.05 @@ -38,29 +39,39 @@ class TexSymbol(VMobjectFromSVGPathstring): class SingleStringMathTex(SVGMobject): + """Elementary building block for rendering text with LaTeX. + + Tests + ----- + Check that creating a :class:`~.SingleStringMathTex` object works:: + + >>> SingleStringMathTex('Test') + SingleStringMathTex('Test') + """ + CONFIG = { "stroke_width": 0, "fill_opacity": 1.0, - "background_stroke_width": 1, + "background_stroke_width": 0, "background_stroke_color": BLACK, "should_center": True, "height": None, "organize_left_to_right": False, - "alignment": "", - "type": "tex", - "template": None, + "tex_environment": "align*", + "tex_template": None, } def __init__(self, tex_string, **kwargs): digest_config(self, kwargs) - if self.template is None: - self.template = kwargs.get("tex_template", config["tex_template"]) + if self.tex_template is None: + self.tex_template = kwargs.get("tex_template", config["tex_template"]) + assert isinstance(tex_string, str) self.tex_string = tex_string file_name = tex_to_svg_file( self.get_modified_expression(tex_string), - self.type, - tex_template=self.template, + environment=self.tex_environment, + tex_template=self.tex_template, ) SVGMobject.__init__(self, file_name=file_name, **kwargs) if self.height is None: @@ -68,8 +79,11 @@ def __init__(self, tex_string, **kwargs): if self.organize_left_to_right: self.organize_submobjects_left_to_right() + def __repr__(self): + return f"{type(self).__name__}({repr(self.tex_string)})" + def get_modified_expression(self, tex_string): - result = self.alignment + " " + tex_string + result = tex_string result = result.strip() result = self.modify_special_strings(result) return result @@ -152,25 +166,32 @@ def organize_submobjects_left_to_right(self): class MathTex(SingleStringMathTex): - """ - A class for displaying mathematical formulas with Latex syntax. - + """A string compiled with LaTeX in math mode. Examples -------- - .. manim:: Formula1 + .. manim:: Formula :save_last_frame: - class Formula1(Scene): + class Formula(Scene): def construct(self): t = MathTex(r"\int_a^b f'(x) dx = f(b)- f(a)") self.add(t) + + Tests + ----- + Check that creating a :class:`~.MathTex` works:: + + >>> MathTex('a^2 + b^2 = c^2') + MathTex('a^2 + b^2 = c^2') + """ CONFIG = { "arg_separator": " ", "substrings_to_isolate": [], "tex_to_color_map": {}, + "tex_environment": "align*", } def __init__(self, *tex_strings, **kwargs): @@ -264,7 +285,7 @@ def set_color_by_tex_to_color_map(self, texs_to_color_map, **kwargs): def index_of_part(self, part): split_self = self.split() if part not in split_self: - raise Exception("Trying to get index of part not in MathTex") + raise ValueError("Trying to get index of part not in MathTex") return split_self.index(part) def index_of_part_by_tex(self, tex, **kwargs): @@ -276,10 +297,21 @@ def sort_alphabetically(self): class Tex(MathTex): + r"""A string compiled with LaTeX in normal mode. + + Tests + ----- + + Check whether writing a LaTeX string works:: + + >>> Tex('The horse does not eat cucumber salad.') + Tex('The horse does not eat cucumber salad.') + + """ + CONFIG = { - "alignment": "\\centering", "arg_separator": "", - "type": "text", + "tex_environment": "center", } @@ -288,7 +320,7 @@ class BulletedList(Tex): "buff": MED_LARGE_BUFF, "dot_scale_factor": 2, # Have to include because of handle_multiple_args implementation - "alignment": "", + "tex_environment": None, } def __init__(self, *items, **kwargs): @@ -307,7 +339,7 @@ def fade_all_but(self, index_or_string, opacity=0.5): elif isinstance(arg, int): part = self.submobjects[arg] else: - raise Exception("Expected int or string, got {0}".format(arg)) + raise TypeError("Expected int or string, got {0}".format(arg)) for other_part in self.submobjects: if other_part is part: other_part.set_fill(opacity=1) diff --git a/manim/mobject/svg/text_mobject.py b/manim/mobject/svg/text_mobject.py index 60a3d1034d..204834ed11 100644 --- a/manim/mobject/svg/text_mobject.py +++ b/manim/mobject/svg/text_mobject.py @@ -1,6 +1,6 @@ """Mobjects used for displaying (non-LaTeX) text.""" -__all__ = ["Text", "Paragraph", "PangoText", "CairoText"] +__all__ = ["Text", "Paragraph", "CairoText"] import copy @@ -83,8 +83,13 @@ class CairoText(SVGMobject): `weird `_. Consider using :meth:`remove_invisible_chars` to resolve this issue. + Tests + ----- + Check whether writing text works:: + >>> Text('The horse does not eat cucumber salad.') + Text('The horse does not eat cucumber salad.') """ @@ -158,6 +163,9 @@ def __init__(self, text, **config): if self.height is None and self.width is None: self.scale(TEXT_MOB_SCALE_FACTOR) + def __repr__(self): + return f"Text({repr(self.original_text)})" + def gen_chars(self): chars = VGroup() submobjects_char_index = 0 @@ -299,9 +307,13 @@ def text2svg(self): line_spacing = self.line_spacing * 10 if self.font == "": - if NOT_SETTING_FONT_MSG != "": - print(NOT_SETTING_FONT_MSG) + if NOT_SETTING_FONT_MSG: + logger.warning(NOT_SETTING_FONT_MSG) + dir_name = config["text_dir"] + if not os.path.exists(dir_name): + os.makedirs(dir_name) + hash_name = self.text2hash() file_name = os.path.join(dir_name, hash_name) + ".svg" if os.path.exists(file_name): @@ -333,71 +345,6 @@ def text2svg(self): return file_name -# Following class is just a Little implementation of upcomming feautures. Ignore it for now. -class TextWithBackground(CairoText): - CONFIG = { - "background_color": BLACK, - } - - def __init__(self, text, **config): - Text.__init__(self, text, **config) - # self.text_backgrounds = self.gen_text_backgrounds(text) - - def gen_text_backgrounds(self, text): - text_with_visible_chars = text.replace(" ", "").replace("\t", "") - text_list = text_with_visible_chars.split("\n") - text_backgrounds = VGroup() - start_i = 0 - for line_no in range(text_list.__len__()): - rect_counts = len(text_list[line_no]) - text_backgrounds.add(*self[start_i:rect_counts]) - start_i += 2 * rect_counts - text_backgrounds.set_color(self.background_color) - - return text_backgrounds - - def text2svg1(self): - # anti-aliasing - size = self.size * 10 - line_spacing = self.line_spacing * 10 - - if self.font == "": - if NOT_SETTING_FONT_MSG != "": - logger.warning(NOT_SETTING_FONT_MSG) - dir_name = consts.TEXT_DIR - hash_name = self.text2hash() - file_name = os.path.join(dir_name, hash_name) + ".svg" - # if os.path.exists(file_name): - # return file_name - - surface = cairo.SVGSurface(file_name, 600, 400) - context = cairo.Context(surface) - context.set_font_size(size) - context.move_to(START_X, START_Y) - - settings = self.text2settings() - offset_x = 0 - last_line_num = 0 - for setting in settings: - font = setting.font - slant = self.str2slant(setting.slant) - weight = self.str2weight(setting.weight) - text = self.text[setting.start : setting.end].replace("\n", " ") - context.select_font_face(font, slant, weight) - if setting.line_num != last_line_num: - offset_x = 0 - last_line_num = setting.line_num - tempx = START_X + offset_x - tempy = START_Y + line_spacing * setting.line_num - char_offset_x = 0 - char_height = tempy - size / 2 - (line_spacing - size) - context.move_to(tempx, tempy) - context.show_text(text) - offset_x += context.text_extents(text)[4] - surface.finish() - return file_name - - class Paragraph(VGroup): r"""Display a paragraph of text. @@ -586,10 +533,10 @@ def change_alignment_for_a_line(self, alignment, line_no): ) -class PangoText(SVGMobject): +class Text(SVGMobject): r"""Display (non-LaTeX) text rendered using `Pango `_. - PangoText objects behave like a :class:`.VGroup`-like iterable of all characters + Text objects behave like a :class:`.VGroup`-like iterable of all characters in the given text. In particular, slicing is possible. Parameters @@ -599,27 +546,74 @@ class PangoText(SVGMobject): Returns ------- - :class:`PangoText` + :class:`Text` The mobject like :class:`.VGroup`. Examples --------- + + .. manim:: Example1Text + :save_last_frame: + + class Example1Text(Scene): + def construct(self): + text = Text('Hello world').scale(3) + self.add(text) + + .. manim:: TextColorExample + :save_last_frame: + + class TextColorExample(Scene): + def construct(self): + text1 = Text('Hello world', color=BLUE).scale(3) + text2 = Text('Hello world', gradient=(BLUE, GREEN)).scale(3).next_to(text1, DOWN) + self.add(text1, text2) + + .. manim:: TextItalicAndBoldExample + :save_last_frame: + + class TextItalicAndBoldExample(Scene): + def construct(self): + text0 = Text('Hello world', slant=ITALIC) + text1 = Text('Hello world', t2s={'world':ITALIC}) + text2 = Text('Hello world', weight=BOLD) + text3 = Text('Hello world', t2w={'world':BOLD}) + self.add(text0,text1, text2,text3) + for i,mobj in enumerate(self.mobjects): + mobj.shift(DOWN*(i-1)) + + + .. manim:: TextMoreCustomization + :save_last_frame: + + class TextMoreCustomization(Scene): + def construct(self): + text1 = Text( + 'Google', + t2c={'[:1]': '#3174f0', '[1:2]': '#e53125', + '[2:3]': '#fbb003', '[3:4]': '#3174f0', + '[4:5]': '#269a43', '[5:]': '#e53125'}, size=1.2).scale(3) + self.add(text1) + + As :class:`Text` uses Pango to render text, rendering non-English + characters is easily possible: + .. manim:: MultipleFonts :save_last_frame: class MultipleFonts(Scene): def construct(self): - morning = PangoText("வணக்கம்", font="sans-serif") - chin = PangoText( + morning = Text("வணக்கம்", font="sans-serif") + chin = Text( "見 角 言 谷 辛 辰 辵 邑 酉 釆 里!", t2c={"見 角 言": BLUE} ) # works same as ``Text``. - mess = PangoText("Multi-Language", style=BOLD) - russ = PangoText("Здравствуйте मस नम म ", font="sans-serif") - hin = PangoText("नमस्ते", font="sans-serif") - arb = PangoText( + mess = Text("Multi-Language", style=BOLD) + russ = Text("Здравствуйте मस नम म ", font="sans-serif") + hin = Text("नमस्ते", font="sans-serif") + arb = Text( "صباح الخير \n تشرفت بمقابلتك", font="sans-serif" ) # don't mix RTL and LTR languages nothing shows up then ;-) - japanese = PangoText("臂猿「黛比」帶著孩子", font="sans-serif") + japanese = Text("臂猿「黛比」帶著孩子", font="sans-serif") self.add(morning,chin,mess,russ,hin,arb,japanese) for i,mobj in enumerate(self.mobjects): mobj.shift(DOWN*(i-3)) @@ -630,10 +624,18 @@ def construct(self): class PangoRender(Scene): def construct(self): - morning = PangoText("வணக்கம்", font="sans-serif") + morning = Text("வணக்கம்", font="sans-serif") self.play(Write(morning)) self.wait(2) + Tests + ----- + + Check that the creation of :class:`~.Text` works:: + + >>> Text('The horse does not eat cucumber salad.') + Text('The horse does not eat cucumber salad.') + .. WARNING:: Using a :class:`.Transform` on text with leading whitespace can look @@ -667,6 +669,10 @@ def construct(self): } def __init__(self, text: str, **config): # pylint: disable=redefined-outer-name + logger.info( + "Text now uses Pango for rendering. " + "In case of problems, the old implementation is available as CairoText." + ) self.full2short(config) digest_config(self, config) self.original_text = text @@ -711,6 +717,9 @@ def __init__(self, text: str, **config): # pylint: disable=redefined-outer-name if self.height is None and self.width is None: self.scale(TEXT_MOB_SCALE_FACTOR) + def __repr__(self): + return f"Text({repr(self.original_text)})" + def remove_last_M(self, file_name: str): # pylint: disable=invalid-name """Internally used. Use to format the rendered SVG files.""" with open(file_name, "r") as fpr: @@ -816,7 +825,7 @@ def text2hash(self): """ settings = ( "PANGO" + self.font + self.slant + self.weight - ) # to differentiate Text and PangoText + ) # to differentiate Text and CairoText settings += str(self.t2f) + str(self.t2s) + str(self.t2w) settings += str(self.line_spacing) + str(self.size) id_str = self.text + settings @@ -914,70 +923,3 @@ def text2svg(self): offset_x += layout.get_extents()[0].x surface.finish() return file_name - - -class Text(CairoText): - """Display (non-LaTeX) text. - - Text objects behave like a :class:`.VGroup`-like iterable of all characters - in the given text. In particular, slicing is possible. - - Examples - -------- - .. manim:: Example1Text - :save_last_frame: - - class Example1Text(Scene): - def construct(self): - text = Text('Hello world').scale(3) - self.add(text) - - .. manim:: TextColorExample - :save_last_frame: - - class TextColorExample(Scene): - def construct(self): - text1 = Text('Hello world', color=BLUE).scale(3) - text2 = Text('Hello world', gradient=(BLUE, GREEN)).scale(3).next_to(text1, DOWN) - self.add(text1, text2) - - .. manim:: TextItalicAndBoldExample - :save_last_frame: - - class TextItalicAndBoldExample(Scene): - def construct(self): - text0 = Text('Hello world', slant=ITALIC) - text1 = Text('Hello world', t2s={'world':ITALIC}) - text2 = Text('Hello world', weight=BOLD) - text3 = Text('Hello world', t2w={'world':BOLD}) - self.add(text0,text1, text2,text3) - for i,mobj in enumerate(self.mobjects): - mobj.shift(DOWN*(i-1)) - - - .. manim:: TextMoreCustomization - :save_last_frame: - - class TextMoreCustomization(Scene): - def construct(self): - text1 = Text( - 'Google', - t2c={'[:1]': '#3174f0', '[1:2]': '#e53125', - '[2:3]': '#fbb003', '[3:4]': '#3174f0', - '[4:5]': '#269a43', '[5:]': '#e53125'}, size=1.2).scale(3) - self.add(text1) - - .. WARNING:: - - Using a :class:`.Transform` on text with leading whitespace can look - `weird `_. Consider using - :meth:`remove_invisible_chars` to resolve this issue. - - """ - - def __init__(self, text, **config): - logger.warning( - "Using Text uses Cairo Toy API to Render Text." - "Using PangoText is recommended and soon Text would point to PangoText" - ) - CairoText.__init__(self, text, **config) diff --git a/manim/mobject/three_d_shading_utils.py b/manim/mobject/three_d_shading_utils.py deleted file mode 100644 index 25dc41f32e..0000000000 --- a/manim/mobject/three_d_shading_utils.py +++ /dev/null @@ -1,54 +0,0 @@ -"""Utility functions for shading of three-dimensional mobjects.""" - -import numpy as np - -from ..constants import ORIGIN -from ..utils.space_ops import get_unit_normal - - -def get_3d_vmob_gradient_start_and_end_points(vmob): - return ( - get_3d_vmob_start_corner(vmob), - get_3d_vmob_end_corner(vmob), - ) - - -def get_3d_vmob_start_corner_index(vmob): - return 0 - - -def get_3d_vmob_end_corner_index(vmob): - return ((len(vmob.points) - 1) // 6) * 3 - - -def get_3d_vmob_start_corner(vmob): - if vmob.get_num_points() == 0: - return np.array(ORIGIN) - return vmob.points[get_3d_vmob_start_corner_index(vmob)] - - -def get_3d_vmob_end_corner(vmob): - if vmob.get_num_points() == 0: - return np.array(ORIGIN) - return vmob.points[get_3d_vmob_end_corner_index(vmob)] - - -def get_3d_vmob_unit_normal(vmob, point_index): - n_points = vmob.get_num_points() - if vmob.get_num_points() == 0: - return np.array(ORIGIN) - i = point_index - im1 = i - 1 if i > 0 else (n_points - 2) - ip1 = i + 1 if i < (n_points - 1) else 1 - return get_unit_normal( - vmob.points[ip1] - vmob.points[i], - vmob.points[im1] - vmob.points[i], - ) - - -def get_3d_vmob_start_corner_unit_normal(vmob): - return get_3d_vmob_unit_normal(vmob, get_3d_vmob_start_corner_index(vmob)) - - -def get_3d_vmob_end_corner_unit_normal(vmob): - return get_3d_vmob_unit_normal(vmob, get_3d_vmob_end_corner_index(vmob)) diff --git a/manim/mobject/types/image_mobject.py b/manim/mobject/types/image_mobject.py index a4e11136de..1158872c55 100644 --- a/manim/mobject/types/image_mobject.py +++ b/manim/mobject/types/image_mobject.py @@ -27,7 +27,7 @@ class AbstractImageMobject(Mobject): } def get_pixel_array(self): - raise Exception("Not implemented") + raise NotImplementedError() def set_color(self): # Likely to be implemented in subclasses, but no obgligation @@ -49,6 +49,22 @@ def reset_points(self): class ImageMobject(AbstractImageMobject): + """Displays an Image from a numpy array or a file. + + Example + ------- + .. manim:: ImageFromArray + :save_last_frame: + + class ImageFromArray(Scene): + def construct(self): + image = ImageMobject(np.uint8([[0, 100, 30, 200], + [255, 0, 5, 33]])) + image.set_height(7) + self.add(image) + + """ + CONFIG = { "invert": False, "image_mode": "RGBA", diff --git a/manim/mobject/types/point_cloud_mobject.py b/manim/mobject/types/point_cloud_mobject.py index 6c5be357cb..f092de7188 100644 --- a/manim/mobject/types/point_cloud_mobject.py +++ b/manim/mobject/types/point_cloud_mobject.py @@ -39,7 +39,7 @@ def add_points(self, points, rgbas=None, color=None, alpha=1): color = Color(color) if color else self.color rgbas = np.repeat([color_to_rgba(color, alpha)], num_new_points, axis=0) elif len(rgbas) != len(points): - raise Exception("points and rgbas must have same shape") + raise ValueError("points and rgbas must have same shape") self.rgbas = np.append(self.rgbas, rgbas, axis=0) return self @@ -214,7 +214,7 @@ def __init__(self, **kwargs): class PGroup(PMobject): def __init__(self, *pmobs, **kwargs): if not all([isinstance(m, PMobject) for m in pmobs]): - raise Exception("All submobjects must be of type PMobject") + raise ValueError("All submobjects must be of type PMobject") super().__init__(**kwargs) self.add(*pmobs) diff --git a/manim/mobject/types/vectorized_mobject.py b/manim/mobject/types/vectorized_mobject.py index 1d2dc81f67..8f7546cfe7 100644 --- a/manim/mobject/types/vectorized_mobject.py +++ b/manim/mobject/types/vectorized_mobject.py @@ -471,7 +471,7 @@ def add_smooth_curve_to(self, *points): handle2, new_anchor = points else: name = sys._getframe(0).f_code.co_name - raise Exception("Only call {} with 1 or 2 points".format(name)) + raise ValueError("Only call {} with 1 or 2 points".format(name)) if self.has_new_path_started(): self.add_line_to(new_anchor) diff --git a/manim/renderer/__init__.py b/manim/renderer/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/manim/renderer/cairo_renderer.py b/manim/renderer/cairo_renderer.py new file mode 100644 index 0000000000..fdecae324d --- /dev/null +++ b/manim/renderer/cairo_renderer.py @@ -0,0 +1,218 @@ +import numpy as np +from .. import config +from ..utils.iterables import list_update +from ..utils.exceptions import EndSceneEarlyException +from ..constants import DEFAULT_WAIT_TIME +from ..scene.scene_file_writer import SceneFileWriter +from ..utils.caching import handle_caching_play, handle_caching_wait +from ..camera.camera import Camera + + +def pass_scene_reference(func): + def wrapper(self, scene, *args, **kwargs): + func(self, scene, *args, **kwargs) + + return wrapper + + +def handle_play_like_call(func): + """ + This method is used internally to wrap the + passed function, into a function that + actually writes to the video stream. + Simultaneously, it also adds to the number + of animations played. + + Parameters + ---------- + func : function + The play() like function that has to be + written to the video file stream. + + Returns + ------- + function + The play() like function that can now write + to the video file stream. + """ + + def wrapper(self, scene, *args, **kwargs): + allow_write = not config["skip_animations"] + self.file_writer.begin_animation(allow_write) + func(self, scene, *args, **kwargs) + self.file_writer.end_animation(allow_write) + self.num_plays += 1 + + return wrapper + + +class CairoRenderer: + """A renderer using Cairo. + + num_plays : Number of play() functions in the scene. + time: time elapsed since initialisation of scene. + """ + + def __init__(self, camera_class=None, **kwargs): + # All of the following are set to EITHER the value passed via kwargs, + # OR the value stored in the global config dict at the time of + # _instance construction_. Before, they were in the CONFIG dict, which + # is a class attribute and is defined at the time of _class + # definition_. This did not allow for creating two Cameras with + # different configurations in the same session. + self.file_writer = None + self.video_quality_config = {} + for attr in [ + "pixel_height", + "pixel_width", + "frame_height", + "frame_width", + "frame_rate", + ]: + self.video_quality_config[attr] = kwargs.get(attr, config[attr]) + camera_cls = camera_class if camera_class is not None else Camera + self.camera = camera_cls(self.video_quality_config) + self.original_skipping_status = config["skip_animations"] + self.animations_hashes = [] + self.num_plays = 0 + self.time = 0 + self.static_mobject_data = None + + def init(self, scene): + self.file_writer = SceneFileWriter( + self, + self.video_quality_config, + scene.__class__.__name__, + ) + + @pass_scene_reference + @handle_caching_play + @handle_play_like_call + def play(self, scene, *args, **kwargs): + scene.play_internal(*args, **kwargs) + + @pass_scene_reference + @handle_caching_wait + @handle_play_like_call + def wait(self, scene, duration=DEFAULT_WAIT_TIME, stop_condition=None): + scene.wait_internal(duration=duration, stop_condition=stop_condition) + + def update_frame( # TODO Description in Docstring + self, + scene, + mobjects=None, + include_submobjects=True, + ignore_skipping=True, + **kwargs, + ): + """Update the frame. + + Parameters + ---------- + mobjects: list, optional + list of mobjects + + background: np.ndarray, optional + Pixel Array for Background. + + include_submobjects: bool, optional + + ignore_skipping : bool, optional + + **kwargs + + """ + if config["skip_animations"] and not ignore_skipping: + return + if mobjects is None: + mobjects = list_update( + scene.mobjects, + scene.foreground_mobjects, + ) + if self.static_mobject_data is not None: + self.camera.set_frame_to_background(self.static_mobject_data) + else: + self.camera.reset() + + kwargs["include_submobjects"] = include_submobjects + self.camera.capture_mobjects(mobjects, **kwargs) + + def get_frame(self): + """ + Gets the current frame as NumPy array. + + Returns + ------- + np.array + NumPy array of pixel values of each pixel in screen. + The shape of the array is height x width x 3 + """ + return np.array(self.camera.pixel_array) + + def save_static_mobject_data(self, scene, static_mobjects): + self.update_frame(scene, static_mobjects) + self.static_mobject_data = self.get_frame() + + def add_frame(self, frame, num_frames=1): + """ + Adds a frame to the video_file_stream + + Parameters + ---------- + frame : numpy.ndarray + The frame to add, as a pixel array. + num_frames: int + The number of times to add frame. + """ + dt = 1 / self.camera.frame_rate + self.time += num_frames * dt + if config["skip_animations"]: + return + for _ in range(num_frames): + self.file_writer.write_frame(frame) + + def show_frame(self): + """ + Opens the current frame in the Default Image Viewer + of your system. + """ + self.update_frame(ignore_skipping=True) + self.camera.get_image().show() + + def update_skipping_status(self): + """ + This method is used internally to check if the current + animation needs to be skipped or not. It also checks if + the number of animations that were played correspond to + the number of animations that need to be played, and + raises an EndSceneEarlyException if they don't correspond. + """ + if config["from_animation_number"]: + if self.num_plays < config["from_animation_number"]: + config["skip_animations"] = True + if config["upto_animation_number"]: + if self.num_plays > config["upto_animation_number"]: + config["skip_animations"] = True + raise EndSceneEarlyException() + + def revert_to_original_skipping_status(self): + """ + Forces the scene to go back to its original skipping status, + by setting skip_animations to whatever it reads + from original_skipping_status. + + Returns + ------- + Scene + The Scene, with the original skipping status. + """ + if hasattr(self, "original_skipping_status"): + config["skip_animations"] = self.original_skipping_status + return self + + def finish(self, scene): + config["skip_animations"] = False + self.file_writer.finish() + if config["save_last_frame"]: + self.update_frame(scene, ignore_skipping=False) + self.file_writer.save_final_image(self.camera.get_image()) diff --git a/manim/scene/graph_scene.py b/manim/scene/graph_scene.py index 97313e08f5..2e5c3a629f 100644 --- a/manim/scene/graph_scene.py +++ b/manim/scene/graph_scene.py @@ -520,7 +520,7 @@ def get_riemann_rectangles( elif input_sample_type == "center": sample_input = x + 0.5 * dx else: - raise Exception("Invalid input sample type") + raise ValueError("Invalid input sample type") graph_point = self.input_to_graph_point(sample_input, graph) if bounded_graph == None: y_point = 0 @@ -1027,7 +1027,7 @@ def animate_secant_slope_group_change( NOTE: At least one of target_dx and target_x should be not None. """ if target_dx is None and target_x is None: - raise Exception("At least one of target_x and target_dx must not be None") + raise ValueError("At least one of target_x and target_dx must not be None") if added_anims is None: added_anims = [] diff --git a/manim/scene/js_scene.py b/manim/scene/js_scene.py index dafa33155b..45bb466815 100644 --- a/manim/scene/js_scene.py +++ b/manim/scene/js_scene.py @@ -109,7 +109,6 @@ def progress_through_animations(self): logger.error(e) self.animation_finished.wait() - @scene.handle_play_like_call def wait(self, duration=DEFAULT_WAIT_TIME, stop_condition=None): self.update_mobjects(dt=0) # Any problems with this? self.animations = [] diff --git a/manim/scene/moving_camera_scene.py b/manim/scene/moving_camera_scene.py index 31dc76a091..231df40c82 100644 --- a/manim/scene/moving_camera_scene.py +++ b/manim/scene/moving_camera_scene.py @@ -11,6 +11,7 @@ from ..camera.moving_camera import MovingCamera from ..scene.scene import Scene from ..utils.iterables import list_update +from ..utils.family import extract_mobject_family_members class MovingCameraScene(Scene): @@ -31,8 +32,8 @@ def setup(self): to set up the scene for proper use. """ Scene.setup(self) - assert isinstance(self.camera, MovingCamera) - self.camera_frame = self.camera.frame + assert isinstance(self.renderer.camera, MovingCamera) + self.camera_frame = self.renderer.camera.frame # Hmm, this currently relies on the fact that MovingCamera # willd default to a full-sized frame. Is that okay? return self @@ -48,10 +49,8 @@ def get_moving_mobjects(self, *animations): The Animations whose mobjects will be checked. """ moving_mobjects = Scene.get_moving_mobjects(self, *animations) - all_moving_mobjects = self.camera.extract_mobject_family_members( - moving_mobjects - ) - movement_indicators = self.camera.get_mobjects_indicating_movement() + all_moving_mobjects = extract_mobject_family_members(moving_mobjects) + movement_indicators = self.renderer.camera.get_mobjects_indicating_movement() for movement_indicator in movement_indicators: if movement_indicator in all_moving_mobjects: # When one of these is moving, the camera should diff --git a/manim/scene/scene.py b/manim/scene/scene.py index 779cbd43d4..3595c7ddaa 100644 --- a/manim/scene/scene.py +++ b/manim/scene/scene.py @@ -1,7 +1,7 @@ """Basic canvas for animations.""" -__all__ = ["Scene", "EndSceneEarlyException"] +__all__ = ["Scene"] import inspect @@ -23,39 +23,9 @@ from ..scene.scene_file_writer import SceneFileWriter from ..utils.iterables import list_update from ..utils.hashing import get_hash_from_play_call, get_hash_from_wait_call - - -def handle_play_like_call(func): - """ - This method is used internally to wrap the - passed function, into a function that - actually writes to the video stream. - Simultaneously, it also adds to the number - of animations played. - - Parameters - ---------- - func : function - The play() like function that has to be - written to the video file stream. - - Returns - ------- - function - The play() like function that can now write - to the video file stream. - """ - - def wrapper(self, *args, **kwargs): - allow_write = not config["skip_animations"] - if not config.use_js_renderer: - self.file_writer.begin_animation(allow_write) - func(self, *args, **kwargs) - if not config.use_js_renderer: - self.file_writer.end_animation(allow_write) - self.num_plays += 1 - - return wrapper +from ..utils.family import extract_mobject_family_members +from ..renderer.cairo_renderer import CairoRenderer +from ..utils.exceptions import EndSceneEarlyException class Scene(Container): @@ -82,8 +52,6 @@ def construct(self): file_writer : The object that writes the animations in the scene to a video file. mobjects : The list of mobjects present in the scene. foreground_mobjects : List of mobjects explicitly in the foreground. - num_plays : Number of play() functions in the scene. - time: time elapsed since initialisation of scene. random_seed: The seed with which all random operations are done. """ @@ -95,18 +63,17 @@ def construct(self): "random_seed": 0, } - def __init__(self, **kwargs): + def __init__(self, renderer=None, **kwargs): Container.__init__(self, **kwargs) - self.camera = self.camera_class() - if not config.use_js_renderer: - self.file_writer = SceneFileWriter(self) - self.animations_hashes = [] + if renderer is None: + self.renderer = CairoRenderer(camera_class=self.camera_class) + else: + self.renderer = renderer + self.renderer.init(self) self.mobjects = [] # TODO, remove need for foreground mobjects self.foreground_mobjects = [] - self.num_plays = 0 - self.time = 0 if self.random_seed is not None: random.seed(self.random_seed) np.random.seed(self.random_seed) @@ -122,13 +89,13 @@ def render(self): self.construct() except EndSceneEarlyException: pass - self.tear_down() # We have to reset these settings in case of multiple renders. config["skip_animations"] = self.original_skipping_status - - self.file_writer.finish() - self.print_end_message() + self.renderer.finish(self) + logger.info( + f"Rendered {str(self)}\nPlayed {self.renderer.num_plays} animations" + ) def setup(self): """ @@ -156,15 +123,6 @@ def construct(self): def __str__(self): return self.__class__.__name__ - def print_end_message(self): - """ - Used internally to print the number of - animations played after the scene ends, - as well as the name of the scene rendered - (useful when using the `-a` option). - """ - logger.info(f"Rendered {str(self)}\nPlayed {self.num_plays} animations") - def set_variables_as_attrs(self, *objects, **newly_named_objects): """ This method is slightly hacky, making it a little easier @@ -196,63 +154,6 @@ def get_attrs(self, *keys): """ return [getattr(self, key) for key in keys] - def get_frame(self): - """ - Gets the current frame as NumPy array. - - Returns - ------- - np.array - NumPy array of pixel values of each pixel in screen. - The shape of the array is height x width x 3 - """ - return np.array(self.camera.pixel_array) - - def update_frame( # TODO Description in Docstring - self, - mobjects=None, - background=None, - include_submobjects=True, - ignore_skipping=True, - **kwargs, - ): - """Update the frame. - - Parameters - ---------- - mobjects: list, optional - list of mobjects - - background: np.ndarray, optional - Pixel Array for Background. - - include_submobjects: bool, optional - - ignore_skipping : bool, optional - - **kwargs - - """ - if config["skip_animations"] and not ignore_skipping: - return - if mobjects is None: - mobjects = list_update( - self.mobjects, - self.foreground_mobjects, - ) - if background is not None: - self.camera.set_frame_to_background(background) - else: - self.camera.reset() - - kwargs["include_submobjects"] = include_submobjects - self.camera.capture_mobjects(mobjects, **kwargs) - - def freeze_background(self): - self.update_frame() - self.camera = Camera(self.get_frame()) - self.clear() - ### def update_mobjects(self, dt): @@ -282,18 +183,6 @@ def should_update_mobjects(self): ### - def increment_time(self, d_time): - """ - Increments the time elapsed after intialisation of scene by - passed "d_time". - - Parameters - ---------- - d_time : int or float - Time in seconds to increment by. - """ - self.time += d_time - ### def get_top_level_mobjects(self): @@ -328,7 +217,9 @@ def get_mobject_family_members(self): list List of mobject family members. """ - return self.camera.extract_mobject_family_members(self.mobjects) + return extract_mobject_family_members( + self.mobjects, use_z_index=self.renderer.camera.use_z_index + ) def add(self, *mobjects): """ @@ -417,7 +308,9 @@ def restructure_mobjects( The Scene mobject with restructured Mobjects. """ if extract_families: - to_remove = self.camera.extract_mobject_family_members(to_remove) + to_remove = extract_mobject_family_members( + to_remove, use_z_index=self.renderer.camera.use_z_index + ) _list = getattr(self, mobject_list_name) new_list = self.get_restructured_mobject_list(_list, to_remove) setattr(self, mobject_list_name, new_list) @@ -640,6 +533,23 @@ def get_moving_mobjects(self, *animations): return mobjects[i:] return [] + def get_moving_and_static_mobjects(self, animations): + all_mobjects = list_update(self.mobjects, self.foreground_mobjects) + all_mobject_families = extract_mobject_family_members( + all_mobjects, + use_z_index=self.renderer.camera.use_z_index, + only_those_with_points=True, + ) + moving_mobjects = self.get_moving_mobjects(*animations) + all_moving_mobject_families = extract_mobject_family_members( + moving_mobjects, + use_z_index=self.renderer.camera.use_z_index, + ) + static_mobjects = filter( + lambda m: m not in all_moving_mobject_families, all_mobject_families + ) + return all_moving_mobject_families, static_mobjects + def get_time_progression( self, run_time, n_iterations=None, override_skip_animations=False ): @@ -672,7 +582,7 @@ def get_time_progression( if config["skip_animations"] and not override_skip_animations: times = [run_time] else: - step = 1 / self.camera.frame_rate + step = 1 / self.renderer.camera.frame_rate times = np.arange(0, run_time, step) time_progression = ProgressDisplay( times, @@ -721,11 +631,12 @@ def get_animation_time_progression(self, animations): ProgressDisplay The CommandLine Progress Bar. """ - time_progression = self.get_time_progression(self.run_time) + run_time = self.get_run_time(animations) + time_progression = self.get_time_progression(run_time) time_progression.set_description( "".join( [ - "Animation {}: ".format(self.num_plays), + "Animation {}: ".format(self.renderer.num_plays), str(animations[0]), (", etc." if len(animations) > 1 else ""), ] @@ -795,14 +706,14 @@ def compile_method(state): elif state["curr_method"] is not None: state["method_args"].append(arg) elif isinstance(arg, Mobject): - raise Exception( + raise ValueError( """ I think you may have invoked a method you meant to pass in as a Scene.play argument - """ + """ ) else: - raise Exception("Invalid play arguments") + raise ValueError("Invalid play arguments") compile_method(state) for animation in animations: @@ -812,181 +723,13 @@ def compile_method(state): return animations - def update_skipping_status(self): - """ - This method is used internally to check if the current - animation needs to be skipped or not. It also checks if - the number of animations that were played correspond to - the number of animations that need to be played, and - raises an EndSceneEarlyException if they don't correspond. - """ - if config["from_animation_number"]: - if self.num_plays < config["from_animation_number"]: - config["skip_animations"] = True - if config["upto_animation_number"]: - if self.num_plays > config["upto_animation_number"]: - config["skip_animations"] = True - raise EndSceneEarlyException() - - def handle_caching_play(func): - """ - Decorator that returns a wrapped version of func that will compute the hash of the play invocation. - - The returned function will act according to the computed hash: either skip the animation because it's already cached, or let the invoked function play normally. - - Parameters - ---------- - func : Callable[[...], None] - The play like function that has to be written to the video file stream. Take the same parameters as `scene.play`. - """ - - def wrapper(self, *args, **kwargs): - self.revert_to_original_skipping_status() - self.update_skipping_status() - animations = self.compile_play_args_to_animation_list(*args, **kwargs) - self.add_mobjects_from_animations(animations) - if config["skip_animations"]: - logger.debug(f"Skipping animation {self.num_plays}") - func(self, *args, **kwargs) - # If the animation is skipped, we mark its hash as None. - # When sceneFileWriter will start combining partial movie files, it won't take into account None hashes. - self.animations_hashes.append(None) - self.file_writer.add_partial_movie_file(None) - return - if not config["disable_caching"]: - mobjects_on_scene = self.get_mobjects() - hash_play = get_hash_from_play_call( - self, self.camera, animations, mobjects_on_scene - ) - if self.file_writer.is_already_cached(hash_play): - logger.info( - f"Animation {self.num_plays} : Using cached data (hash : %(hash_play)s)", - {"hash_play": hash_play}, - ) - config["skip_animations"] = True - else: - hash_play = "uncached_{:05}".format(self.num_plays) - self.animations_hashes.append(hash_play) - self.file_writer.add_partial_movie_file(hash_play) - logger.debug( - "List of the first few animation hashes of the scene: %(h)s", - {"h": str(self.animations_hashes[:5])}, - ) - func(self, *args, **kwargs) - - return wrapper - - def handle_caching_wait(func): - """ - Decorator that returns a wrapped version of func that will compute the hash of the wait invocation. - - The returned function will act according to the computed hash: either skip the animation because it's already cached, or let the invoked function play normally. - - Parameters - ---------- - func : Callable[[...], None] - The wait like function that has to be written to the video file stream. Take the same parameters as `scene.wait`. - """ - - def wrapper(self, duration=DEFAULT_WAIT_TIME, stop_condition=None): - self.revert_to_original_skipping_status() - self.update_skipping_status() - if config["skip_animations"]: - logger.debug(f"Skipping wait {self.num_plays}") - func(self, duration, stop_condition) - # If the animation is skipped, we mark its hash as None. - # When sceneFileWriter will start combining partial movie files, it won't take into account None hashes. - self.animations_hashes.append(None) - self.file_writer.add_partial_movie_file(None) - return - if not config["disable_caching"]: - hash_wait = get_hash_from_wait_call( - self, self.camera, duration, stop_condition, self.get_mobjects() - ) - if self.file_writer.is_already_cached(hash_wait): - logger.info( - f"Wait {self.num_plays} : Using cached data (hash : {hash_wait})" - ) - config["skip_animations"] = True - else: - hash_wait = "uncached_{:05}".format(self.num_plays) - self.animations_hashes.append(hash_wait) - self.file_writer.add_partial_movie_file(hash_wait) - logger.debug( - "Animations hashes list of the scene : (concatened to 5) %(h)s", - {"h": str(self.animations_hashes[:5])}, - ) - func(self, duration, stop_condition) - - return wrapper - - def begin_animations(self, animations): - """ - This method begins the list of animations that is passed, - and adds any mobjects involved (if not already present) - to the scene again. - - Parameters - ---------- - animations : list - List of involved animations. - - """ - for animation in animations: - # Begin animation - animation.begin() - - def progress_through_animations(self): - """ - This method progresses through each animation - in the list passed and and updates the frames as required. - """ - for t in self.get_animation_time_progression(self.animations): - self.update_animation_to_time(t) - self.update_frame(self.moving_mobjects, self.static_image) - self.add_frame(self.get_frame()) - - def update_animation_to_time(self, t): - """ - Updates the current animation to the specified time. - - Parameters - ---------- - t : int - Offset from the start of the animation to which to update the current - animation. - """ - dt = t - self.last_t - self.last_t = t - for animation in self.animations: - animation.update_mobjects(dt) - alpha = t / animation.run_time - animation.interpolate(alpha) - self.update_mobjects(dt) - - def finish_animations(self, animations): - """ - This function cleans up after the end - of each animation in the passed list. + def play(self, *args, **kwargs): + self.renderer.play(self, *args, **kwargs) - Parameters - ---------- - animations : list - list of animations to finish. - """ - for animation in animations: - animation.finish() - animation.clean_up_from_scene(self) - self.mobjects_from_last_animation = [anim.mobject for anim in animations] - if config["skip_animations"]: - # TODO, run this call in for each animation? - self.update_mobjects(self.get_run_time(animations)) - else: - self.update_mobjects(0) + def wait(self, duration=DEFAULT_WAIT_TIME, stop_condition=None): + self.renderer.wait(self, duration=duration, stop_condition=stop_condition) - @handle_caching_play - @handle_play_like_call - def play(self, *args, **kwargs): + def play_internal(self, *args, **kwargs): """ This method is used to prep the animations for rendering, apply the arguments and parameters required to them, @@ -994,63 +737,68 @@ def play(self, *args, **kwargs): Parameters ---------- - *args : Animation or mobject with mobject method and params - **kwargs : named parameters affecting what was passed in *args e.g run_time, lag_ratio etc. + args + Animation or mobject with mobject method and params + kwargs + named parameters affecting what was passed in ``args`` e.g. ``run_time``, ``lag_ratio`` etc. """ if len(args) == 0: warnings.warn("Called Scene.play with no animations") return - self.animations = self.compile_play_args_to_animation_list(*args, **kwargs) - self.begin_animations(self.animations) + + animations = self.compile_play_args_to_animation_list(*args, **kwargs) + for animation in animations: + animation.begin() # Paint all non-moving objects onto the screen, so they don't # have to be rendered every frame - self.moving_mobjects = self.get_moving_mobjects(*self.animations) - self.update_frame(excluded_mobjects=self.moving_mobjects) - self.static_image = self.get_frame() - self.last_t = 0 - self.run_time = self.get_run_time(self.animations) - - self.progress_through_animations() - - self.finish_animations(self.animations) - - def clean_up_animations(self, *animations): - """ - This method cleans up and removes from the - scene all the animations that were passed - - Parameters - ---------- - *animations : Animation - Animation to clean up. - - Returns - ------- - Scene - The scene with the animations - cleaned up. + moving_mobjects, static_mobjects = self.get_moving_and_static_mobjects( + animations + ) + self.renderer.save_static_mobject_data(self, static_mobjects) + + last_t = 0 + for t in self.get_animation_time_progression(animations): + dt = t - last_t + last_t = t + for animation in animations: + animation.update_mobjects(dt) + alpha = t / animation.run_time + animation.interpolate(alpha) + self.update_mobjects(dt) + self.renderer.update_frame(self, moving_mobjects) + self.renderer.add_frame(self.renderer.get_frame()) - """ for animation in animations: + animation.finish() animation.clean_up_from_scene(self) - return self - - def get_mobjects_from_last_animation(self): - """ - This method returns the mobjects from the previous - played animation, if any exist, and returns an empty - list if not. - Returns - -------- - list - The list of mobjects from the previous animation. + def wait_internal(self, duration=DEFAULT_WAIT_TIME, stop_condition=None): + self.update_mobjects(dt=0) # Any problems with this? + self.duration = duration + self.stop_condition = stop_condition + last_t = 0 - """ - if hasattr(self, "mobjects_from_last_animation"): - return self.mobjects_from_last_animation - return [] + if self.should_update_mobjects(): + time_progression = self.get_wait_time_progression(duration, stop_condition) + # TODO, be smart about setting a static image + # the same way Scene.play does + for t in time_progression: + dt = t - last_t + last_t = t + self.update_mobjects(dt) + self.renderer.update_frame(self) + self.renderer.add_frame(self.renderer.get_frame()) + if stop_condition is not None and stop_condition(): + time_progression.close() + break + else: + self.renderer.update_frame(self) + dt = 1 / self.renderer.camera.frame_rate + self.renderer.add_frame( + self.renderer.get_frame(), num_frames=int(duration / dt) + ) + return self def get_wait_time_progression(self, duration, stop_condition): """ @@ -1082,55 +830,11 @@ def get_wait_time_progression(self, duration, stop_condition): ) else: time_progression = self.get_time_progression(duration) - time_progression.set_description("Waiting {}".format(self.num_plays)) + time_progression.set_description( + "Waiting {}".format(self.renderer.num_plays) + ) return time_progression - @handle_caching_wait - @handle_play_like_call - def wait(self, duration=DEFAULT_WAIT_TIME, stop_condition=None): - """ - This method is used to wait, and do nothing to the scene, for some - duration. - Updaters stop updating, nothing happens. - - Parameters - ---------- - duration : float or int, optional - The duration of wait time. - stop_condition : - A function that determines whether to stop waiting or not. - - Returns - ------- - Scene - The scene, after waiting. - """ - self.update_mobjects(dt=0) # Any problems with this? - self.animations = [] - self.duration = duration - self.stop_condition = stop_condition - self.last_t = 0 - - if self.should_update_mobjects(): - time_progression = self.get_wait_time_progression(duration, stop_condition) - # TODO, be smart about setting a static image - # the same way Scene.play does - for t in time_progression: - self.update_animation_to_time(t) - self.update_frame() - self.add_frame(self.get_frame()) - if stop_condition is not None and stop_condition(): - time_progression.close() - break - elif self.skip_animations: - # Do nothing - return self - else: - self.update_frame() - dt = 1 / self.camera.frame_rate - self.add_frame(self.get_frame(), num_frames=int(duration / dt)) - return self - def wait_until(self, stop_condition, max_time=60): """ Like a wrapper for wait(). @@ -1147,55 +851,6 @@ def wait_until(self, stop_condition, max_time=60): """ self.wait(max_time, stop_condition=stop_condition) - def force_skipping(self): - """ - This forces the skipping of animations, - by setting original_skipping_status to - whatever skip_animations was, and setting - skip_animations to True. - - Returns - ------- - Scene - The Scene, with skipping turned on. - """ - self.original_skipping_status = config["skip_animations"] - config["skip_animations"] = True - return self - - def revert_to_original_skipping_status(self): - """ - Forces the scene to go back to its original skipping status, - by setting skip_animations to whatever it reads - from original_skipping_status. - - Returns - ------- - Scene - The Scene, with the original skipping status. - """ - if hasattr(self, "original_skipping_status"): - config["skip_animations"] = self.original_skipping_status - return self - - def add_frame(self, frame, num_frames=1): - """ - Adds a frame to the video_file_stream - - Parameters - ---------- - frame : numpy.ndarray - The frame to add, as a pixel array. - num_frames: int - The number of times to add frame. - """ - dt = 1 / self.camera.frame_rate - self.increment_time(num_frames * dt) - if config["skip_animations"]: - return - for _ in range(num_frames): - self.file_writer.write_frame(frame) - def add_sound(self, sound_file, time_offset=0, gain=None, **kwargs): """ This method is used to add a sound to the animation. @@ -1215,16 +870,4 @@ def add_sound(self, sound_file, time_offset=0, gain=None, **kwargs): if config["skip_animations"]: return time = self.time + time_offset - self.file_writer.add_sound(sound_file, time, gain, **kwargs) - - def show_frame(self): - """ - Opens the current frame in the Default Image Viewer - of your system. - """ - self.update_frame(ignore_skipping=True) - self.camera.get_image().show() - - -class EndSceneEarlyException(Exception): - pass + self.renderer.file_writer.add_sound(sound_file, time, gain, **kwargs) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index b3dadbf758..b73753f806 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -42,24 +42,25 @@ class SceneFileWriter(object): """ - def __init__(self, scene, **kwargs): + def __init__(self, renderer, video_quality_config, scene_name, **kwargs): digest_config(self, kwargs) - self.scene = scene + self.renderer = renderer + self.video_quality_config = video_quality_config self.stream_lock = False - self.init_output_directories() + self.init_output_directories(scene_name) self.init_audio() self.frame_count = 0 self.partial_movie_files = [] # Output directories and files - def init_output_directories(self): + def init_output_directories(self, scene_name): """ This method initialises the directories to which video files will be written to and read from (within MEDIA_DIR). If they don't already exist, they will be created. """ module_directory = self.get_default_module_directory() - scene_name = self.get_default_scene_name() + default_name = self.get_default_scene_name(scene_name) if config["save_last_frame"] or config["save_pngs"]: if config["media_dir"] != "": if not config["custom_folders"]: @@ -72,7 +73,7 @@ def init_output_directories(self): else: image_dir = guarantee_existence(config["images_dir"]) self.image_file_path = os.path.join( - image_dir, add_extension_if_not_present(scene_name, ".png") + image_dir, add_extension_if_not_present(default_name, ".png") ) if config["write_to_movie"]: @@ -91,18 +92,19 @@ def init_output_directories(self): self.movie_file_path = os.path.join( movie_dir, add_extension_if_not_present( - scene_name, config["movie_file_extension"] + default_name, config["movie_file_extension"] ), ) self.gif_file_path = os.path.join( - movie_dir, add_extension_if_not_present(scene_name, GIF_FILE_EXTENSION) + movie_dir, + add_extension_if_not_present(default_name, GIF_FILE_EXTENSION), ) if not config["custom_folders"]: self.partial_movie_directory = guarantee_existence( os.path.join( movie_dir, "partial_movie_files", - scene_name, + default_name, ) ) else: @@ -111,7 +113,7 @@ def init_output_directories(self): config["media_dir"], "temp_files", "partial_movie_files", - scene_name, + default_name, ) ) @@ -154,7 +156,7 @@ def get_default_module_directory(self): root, _ = os.path.splitext(filename) return root - def get_default_scene_name(self): + def get_default_scene_name(self, scene_name): """ This method returns the default scene name which is the value of "output_file", if it exists and @@ -167,7 +169,7 @@ def get_default_scene_name(self): The default scene name. """ fn = config["output_file"] - return fn if fn else self.scene.__class__.__name__ + return fn if fn else scene_name def get_resolution_directory(self): """Get the name of the resolution directory directly containing @@ -194,8 +196,8 @@ def get_resolution_directory(self): :class:`str` The name of the directory. """ - pixel_height = self.scene.camera.pixel_height - frame_rate = self.scene.camera.frame_rate + pixel_height = self.video_quality_config["pixel_height"] + frame_rate = self.video_quality_config["frame_rate"] return "{}p{}".format(pixel_height, frame_rate) # Directory getters @@ -262,7 +264,7 @@ def add_audio_segment(self, new_segment, time=None, gain_to_background=None): if time is None: time = curr_end if time < 0: - raise Exception("Adding sound at timestamp < 0") + raise ValueError("Adding sound at timestamp < 0") new_end = time + new_segment.duration_seconds diff = new_end - curr_end @@ -373,7 +375,7 @@ def idle_stream(self): self.add_frame(*[frame] * n_frames) b = datetime.datetime.now() time_diff = (b - a).total_seconds() - frame_duration = 1 / self.scene.camera.frame_rate + frame_duration = 1 / self.video_quality_config["frame_rate"] if time_diff < frame_duration: sleep(frame_duration - time_diff) @@ -393,9 +395,6 @@ def finish(self): self.flush_cache_directory() else: self.clean_cache() - if config["save_last_frame"]: - self.scene.update_frame(ignore_skipping=False) - self.save_final_image(self.scene.camera.get_image()) def open_movie_pipe(self): """ @@ -403,7 +402,7 @@ def open_movie_pipe(self): FFMPEG and begin writing to FFMPEG's input buffer. """ - file_path = self.partial_movie_files[self.scene.num_plays] + file_path = self.partial_movie_files[self.renderer.num_plays] # TODO #486 Why does ffmpeg need temp files ? temp_file_path = ( @@ -412,9 +411,9 @@ def open_movie_pipe(self): self.partial_movie_file_path = file_path self.temp_partial_movie_file_path = temp_file_path - fps = self.scene.camera.frame_rate - height = self.scene.camera.pixel_height - width = self.scene.camera.pixel_width + fps = self.video_quality_config["frame_rate"] + height = self.video_quality_config["pixel_height"] + width = self.video_quality_config["pixel_width"] command = [ FFMPEG_BIN, @@ -465,7 +464,7 @@ def close_movie_pipe(self): self.partial_movie_file_path, ) logger.info( - f"Animation {self.scene.num_plays} : Partial movie file written in %(path)s", + f"Animation {self.renderer.num_plays} : Partial movie file written in %(path)s", {"path": {self.partial_movie_file_path}}, ) diff --git a/manim/scene/three_d_scene.py b/manim/scene/three_d_scene.py index 26dbf5ed20..5065899f5d 100644 --- a/manim/scene/three_d_scene.py +++ b/manim/scene/three_d_scene.py @@ -53,13 +53,13 @@ def set_camera_orientation(self, phi=None, theta=None, distance=None, gamma=None The rotation of the camera about the vector from the ORIGIN to the Camera. """ if phi is not None: - self.camera.set_phi(phi) + self.renderer.camera.set_phi(phi) if theta is not None: - self.camera.set_theta(theta) + self.renderer.camera.set_theta(theta) if distance is not None: - self.camera.set_distance(distance) + self.renderer.camera.set_distance(distance) if gamma is not None: - self.camera.set_gamma(gamma) + self.renderer.camera.set_gamma(gamma) def begin_ambient_camera_rotation(self, rate=0.02): """ @@ -74,17 +74,17 @@ def begin_ambient_camera_rotation(self, rate=0.02): """ # TODO, use a ValueTracker for rate, so that it # can begin and end smoothly - self.camera.theta_tracker.add_updater( + self.renderer.camera.theta_tracker.add_updater( lambda m, dt: m.increment_value(rate * dt) ) - self.add(self.camera.theta_tracker) + self.add(self.renderer.camera.theta_tracker) def stop_ambient_camera_rotation(self): """ This method stops all ambient camera rotation. """ - self.camera.theta_tracker.clear_updaters() - self.remove(self.camera.theta_tracker) + self.renderer.camera.theta_tracker.clear_updaters() + self.remove(self.renderer.camera.theta_tracker) def begin_3dillusion_camera_rotation( self, rate=1, origin_theta=-60 * DEGREES, origin_phi=75 * DEGREES @@ -96,8 +96,8 @@ def uptate_theta(m, dt): val_for_left_right = 0.2 * np.sin(val_tracker_theta.get_value()) return m.set_value(origin_theta + val_for_left_right) - self.camera.theta_tracker.add_updater(uptate_theta) - self.add(self.camera.theta_tracker) + self.renderer.camera.theta_tracker.add_updater(uptate_theta) + self.add(self.renderer.camera.theta_tracker) val_tracker_phi = ValueTracker(0) @@ -106,17 +106,17 @@ def update_phi(m, dt): val_for_up_down = 0.1 * np.cos(val_tracker_phi.get_value()) return m.set_value(origin_phi + val_for_up_down) - self.camera.phi_tracker.add_updater(update_phi) - self.add(self.camera.phi_tracker) + self.renderer.camera.phi_tracker.add_updater(update_phi) + self.add(self.renderer.camera.phi_tracker) def stop_3dillusion_camera_rotation(self): """ This method stops all illusion camera rotations. """ - self.camera.theta_tracker.clear_updaters() - self.remove(self.camera.theta_tracker) - self.camera.phi_tracker.clear_updaters() - self.remove(self.camera.phi_tracker) + self.renderer.camera.theta_tracker.clear_updaters() + self.remove(self.renderer.camera.theta_tracker) + self.renderer.camera.phi_tracker.clear_updaters() + self.remove(self.renderer.camera.phi_tracker) def move_camera( self, @@ -155,16 +155,18 @@ def move_camera( """ anims = [] value_tracker_pairs = [ - (phi, self.camera.phi_tracker), - (theta, self.camera.theta_tracker), - (distance, self.camera.distance_tracker), - (gamma, self.camera.gamma_tracker), + (phi, self.renderer.camera.phi_tracker), + (theta, self.renderer.camera.theta_tracker), + (distance, self.renderer.camera.distance_tracker), + (gamma, self.renderer.camera.gamma_tracker), ] for value, tracker in value_tracker_pairs: if value is not None: anims.append(ApplyMethod(tracker.set_value, value, **kwargs)) if frame_center is not None: - anims.append(ApplyMethod(self.camera.frame_center.move_to, frame_center)) + anims.append( + ApplyMethod(self.renderer.camera.frame_center.move_to, frame_center) + ) self.play(*anims + added_anims) @@ -179,7 +181,7 @@ def get_moving_mobjects(self, *animations): The animations whose mobjects will be checked. """ moving_mobjects = Scene.get_moving_mobjects(self, *animations) - camera_mobjects = self.camera.get_value_trackers() + camera_mobjects = self.renderer.camera.get_value_trackers() if any([cm in moving_mobjects for cm in camera_mobjects]): return self.mobjects return moving_mobjects @@ -203,7 +205,7 @@ def add_fixed_orientation_mobjects(self, *mobjects, **kwargs): center_func : function """ self.add(*mobjects) - self.camera.add_fixed_orientation_mobjects(*mobjects, **kwargs) + self.renderer.camera.add_fixed_orientation_mobjects(*mobjects, **kwargs) def add_fixed_in_frame_mobjects(self, *mobjects): """ @@ -218,7 +220,7 @@ def add_fixed_in_frame_mobjects(self, *mobjects): The Mobjects whose orientation must be fixed. """ self.add(*mobjects) - self.camera.add_fixed_in_frame_mobjects(*mobjects) + self.renderer.camera.add_fixed_in_frame_mobjects(*mobjects) def remove_fixed_orientation_mobjects(self, *mobjects): """ @@ -232,7 +234,7 @@ def remove_fixed_orientation_mobjects(self, *mobjects): *mobjects : Mobjects The Mobjects whose orientation must be unfixed. """ - self.camera.remove_fixed_orientation_mobjects(*mobjects) + self.renderer.camera.remove_fixed_orientation_mobjects(*mobjects) def remove_fixed_in_frame_mobjects(self, *mobjects): """ @@ -245,7 +247,7 @@ def remove_fixed_in_frame_mobjects(self, *mobjects): *mobjects : Mobjects The Mobjects whose position and orientation must be unfixed. """ - self.camera.remove_fixed_in_frame_mobjects(*mobjects) + self.renderer.camera.remove_fixed_in_frame_mobjects(*mobjects) ## def set_to_default_angled_camera_orientation(self, **kwargs): @@ -305,7 +307,7 @@ class SpecialThreeDScene(ThreeDScene): def __init__(self, **kwargs): digest_config(self, kwargs) - if self.camera_config["pixel_width"] == config["pixel_width"]: + if self.renderer.camera_config["pixel_width"] == config["pixel_width"]: config = {} else: config = self.low_quality_config diff --git a/manim/scene/vector_space_scene.py b/manim/scene/vector_space_scene.py index 5d0f187201..4640624596 100644 --- a/manim/scene/vector_space_scene.py +++ b/manim/scene/vector_space_scene.py @@ -109,7 +109,10 @@ def lock_in_faded_grid(self, dimness=0.7, axes_dimness=0.5): axes.set_color(WHITE) axes.fade(axes_dimness) self.add(axes) - self.freeze_background() + + self.renderer.update_frame() + self.renderer.camera = Camera(self.renderer.get_frame()) + self.clear() def get_vector(self, numerical_vector, **kwargs): """ @@ -398,13 +401,14 @@ def coords_to_vector(self, vector, coords_start=2 * RIGHT + 2 * UP, clean_up=Tru ) ) self.play(ShowCreation(x_line)) - self.play( + animations = [ ApplyFunction( lambda y: self.position_y_coordinate(y, y_line, vector), y_coord ), FadeOut(array.get_brackets()), - ) - y_coord, brackets = self.get_mobjects_from_last_animation() + ] + self.play(*animations) + y_coord, _ = [anim.mobject for anim in animations] self.play(ShowCreation(y_line)) self.play(ShowCreation(arrow)) self.wait() @@ -868,7 +872,7 @@ def get_transposed_matrix_transformation(self, transposed_matrix): new_matrix[:2, :2] = transposed_matrix transposed_matrix = new_matrix elif transposed_matrix.shape != (3, 3): - raise Exception("Matrix has bad dimensions") + raise ValueError("Matrix has bad dimensions") return lambda point: np.dot(point, transposed_matrix) def get_piece_movement(self, pieces): diff --git a/manim/scene/zoomed_scene.py b/manim/scene/zoomed_scene.py index acbf1997fd..e88bfa5042 100644 --- a/manim/scene/zoomed_scene.py +++ b/manim/scene/zoomed_scene.py @@ -47,7 +47,7 @@ def setup(self): """ MovingCameraScene.setup(self) # Initialize camera and display - zoomed_camera = MovingCamera(**self.zoomed_camera_config) + zoomed_camera = MovingCamera({}, **self.zoomed_camera_config) zoomed_display = ImageMobjectFromCamera( zoomed_camera, **self.zoomed_camera_image_mobject_config ) @@ -81,7 +81,7 @@ def activate_zooming(self, animate=False): of the zoomed camera. """ self.zoom_activated = True - self.camera.add_image_mobject_from_camera(self.zoomed_display) + self.renderer.camera.add_image_mobject_from_camera(self.zoomed_display) if animate: self.play(self.get_zoom_in_animation()) self.play(self.get_zoomed_display_pop_out_animation()) diff --git a/manim/utils/caching.py b/manim/utils/caching.py new file mode 100644 index 0000000000..e14fa5ece4 --- /dev/null +++ b/manim/utils/caching.py @@ -0,0 +1,102 @@ +from .. import config, logger +from ..utils.hashing import get_hash_from_play_call, get_hash_from_wait_call +from ..constants import DEFAULT_WAIT_TIME + + +def handle_caching_play(func): + """Decorator that returns a wrapped version of func that will compute + the hash of the play invocation. + + The returned function will act according to the computed hash: either skip + the animation because it's already cached, or let the invoked function + play normally. + + Parameters + ---------- + func : Callable[[...], None] + The play like function that has to be written to the video file stream. + Take the same parameters as `scene.play`. + """ + + def wrapper(self, scene, *args, **kwargs): + self.revert_to_original_skipping_status() + self.update_skipping_status() + animations = scene.compile_play_args_to_animation_list(*args, **kwargs) + scene.add_mobjects_from_animations(animations) + if config["skip_animations"]: + logger.debug(f"Skipping animation {self.num_plays}") + func(self, scene, *args, **kwargs) + # If the animation is skipped, we mark its hash as None. + # When sceneFileWriter will start combining partial movie files, it won't take into account None hashes. + self.animations_hashes.append(None) + self.file_writer.add_partial_movie_file(None) + return + if not config["disable_caching"]: + mobjects_on_scene = scene.get_mobjects() + hash_play = get_hash_from_play_call( + self, self.camera, animations, mobjects_on_scene + ) + if self.file_writer.is_already_cached(hash_play): + logger.info( + f"Animation {self.num_plays} : Using cached data (hash : %(hash_play)s)", + {"hash_play": hash_play}, + ) + config["skip_animations"] = True + else: + hash_play = "uncached_{:05}".format(self.num_plays) + self.animations_hashes.append(hash_play) + self.file_writer.add_partial_movie_file(hash_play) + logger.debug( + "List of the first few animation hashes of the scene: %(h)s", + {"h": str(self.animations_hashes[:5])}, + ) + func(self, scene, *args, **kwargs) + + return wrapper + + +def handle_caching_wait(func): + """Decorator that returns a wrapped version of func that will compute the hash of + the wait invocation. + + The returned function will act according to the computed hash: either skip the + animation because it's already cached, or let the invoked function play normally. + + Parameters + ---------- + func : Callable[[...], None] + The wait like function that has to be written to the video file stream. + Take the same parameters as `scene.wait`. + """ + + def wrapper(self, scene, duration=DEFAULT_WAIT_TIME, stop_condition=None): + self.revert_to_original_skipping_status() + self.update_skipping_status() + if config["skip_animations"]: + logger.debug(f"Skipping wait {self.num_plays}") + func(self, scene, duration, stop_condition) + # If the animation is skipped, we mark its hash as None. + # When sceneFileWriter will start combining partial movie files, it won't take into account None hashes. + self.animations_hashes.append(None) + self.file_writer.add_partial_movie_file(None) + return + if not config["disable_caching"]: + hash_wait = get_hash_from_wait_call( + self, self.camera, duration, stop_condition, scene.get_mobjects() + ) + if self.file_writer.is_already_cached(hash_wait): + logger.info( + f"Wait {self.num_plays} : Using cached data (hash : {hash_wait})" + ) + config["skip_animations"] = True + else: + hash_wait = "uncached_{:05}".format(self.num_plays) + self.animations_hashes.append(hash_wait) + self.file_writer.add_partial_movie_file(hash_wait) + logger.debug( + "List of the first few animation hashes of the scene: %(h)s", + {"h": str(self.animations_hashes[:5])}, + ) + func(self, scene, duration, stop_condition) + + return wrapper diff --git a/manim/utils/color.py b/manim/utils/color.py index e7ca3ce3dd..e6506cc809 100644 --- a/manim/utils/color.py +++ b/manim/utils/color.py @@ -264,7 +264,7 @@ def color_to_rgb(color): elif isinstance(color, Color): return np.array(color.get_rgb()) else: - raise Exception("Invalid color type") + raise ValueError("Invalid color type") def color_to_rgba(color, alpha=1): diff --git a/manim/utils/exceptions.py b/manim/utils/exceptions.py new file mode 100644 index 0000000000..0326f46df6 --- /dev/null +++ b/manim/utils/exceptions.py @@ -0,0 +1,2 @@ +class EndSceneEarlyException(Exception): + pass diff --git a/manim/utils/family.py b/manim/utils/family.py new file mode 100644 index 0000000000..428f2c816d --- /dev/null +++ b/manim/utils/family.py @@ -0,0 +1,33 @@ +import itertools as it + +from ..mobject.mobject import Mobject +from ..utils.iterables import remove_list_redundancies + + +def extract_mobject_family_members( + mobjects, use_z_index=False, only_those_with_points=False +): + """Returns a list of the types of mobjects and their family members present. + A "family" in this context refers to a mobject, its submobjects, and their + submobjects, recursively. + + Parameters + ---------- + mobjects : Mobject + The Mobjects currently in the Scene + only_those_with_points : bool, optional + Whether or not to only do this for + those mobjects that have points. By default False + + Returns + ------- + list + list of the mobjects and family members. + """ + if only_those_with_points: + method = Mobject.family_members_with_points + else: + method = Mobject.get_family + if use_z_index: + mobjects = sorted(mobjects, key=lambda m: m.z_index) + return remove_list_redundancies(list(it.chain(*[method(m) for m in mobjects]))) diff --git a/manim/utils/module_ops.py b/manim/utils/module_ops.py index a5b2f6f465..455e3ee454 100644 --- a/manim/utils/module_ops.py +++ b/manim/utils/module_ops.py @@ -4,6 +4,7 @@ import os import sys import types +import re def get_module(file_name): @@ -28,7 +29,7 @@ def get_module(file_name): else: if os.path.exists(file_name): if file_name[-3:] != ".py": - raise Exception(f"{file_name} is not a valid Manim python script.") + raise ValueError(f"{file_name} is not a valid Manim python script.") module_name = file_name[:-3].replace(os.sep, ".").split(".")[-1] spec = importlib.util.spec_from_file_location(module_name, file_name) module = importlib.util.module_from_spec(spec) diff --git a/manim/utils/rate_functions.py b/manim/utils/rate_functions.py index dfd1a0c4d0..d5e270c774 100644 --- a/manim/utils/rate_functions.py +++ b/manim/utils/rate_functions.py @@ -1,4 +1,50 @@ -"""A selection of rate functions, i.e., *speed curves* for animations.""" +"""A selection of rate functions, i.e., *speed curves* for animations. +Please find a standard list at https://easings.net/. Here is a picture for the non-standard ones + +.. image:: /_static/non_standard_rate_funcs.png + :alt: Non-standard rate functions + + +There are primarily 3 kinds of standard easing functions: + +#. Ease In - The animation has a smooth start. +#. Ease Out - The animation has a smooth end. +#. Ease In Out - The animation has a smooth start as well as smooth end. + +.. note:: The standard functions are not exported, so to use them you do something like this: + rate_func=rate_functions.ease_in_sine + On the other hand, the non-standard functions, which are used more commonly, are exported and can be used directly. + +.. manim:: RateFunctions1Example + + class RateFunctions1Example(Scene): + def construct(self): + line1 = Line(3*LEFT, 3*RIGHT).shift(UP).set_color(RED) + line2 = Line(3*LEFT, 3*RIGHT).set_color(GREEN) + line3 = Line(3*LEFT, 3*RIGHT).shift(DOWN).set_color(BLUE) + + dot1 = Dot().move_to(line1.get_left()) + dot2 = Dot().move_to(line2.get_left()) + dot3 = Dot().move_to(line3.get_left()) + + label1 = Tex("Ease In").next_to(line1, RIGHT) + label2 = Tex("Ease out").next_to(line2, RIGHT) + label3 = Tex("Ease In Out").next_to(line3, RIGHT) + + self.play( + FadeIn(VGroup(line1, line2, line3), + FadeIn(VGroup(dot1, dot2, dot3))), + Write(VGroup(label1, label2, label3)), + ) + self.play( + MoveAlongPath(dot1, line1, rate_func=rate_functions.ease_in_sine), + MoveAlongPath(dot2, line2, rate_func=rate_functions.ease_out_sine), + MoveAlongPath(dot3, line3, rate_func=rate_functions.ease_in_out_sine), + run_time=7 + ) + self.wait() +""" + __all__ = [ "linear", @@ -18,6 +64,8 @@ ] +from math import sqrt + import numpy as np from ..utils.bezier import bezier @@ -115,3 +163,180 @@ def exponential_decay(t, half_life=0.1): # The half-life should be rather small to minimize # the cut-off error at the end return 1 - np.exp(-t / half_life) + + +def ease_in_sine(t): + return 1 - np.cos((t * np.pi) / 2) + + +def ease_out_sine(t): + return np.sin((t * np.pi) / 2) + + +def ease_in_out_sine(t): + return -(np.cos(np.pi * t) - 1) / 2 + + +def ease_in_quad(t): + return t * t + + +def ease_out_quad(t): + return 1 - (1 - t) * (1 - t) + + +def ease_in_out_quad(t): + return 2 * t * t if t < 0.5 else 1 - pow(-2 * t + 2, 2) / 2 + + +def ease_in_cubic(t): + return t * t * t + + +def ease_out_cubic(t): + return 1 - pow(1 - t, 3) + + +def ease_in_out_cubic(t): + return 4 * t * t * t if t < 0.5 else 1 - pow(-2 * t + 2, 3) / 2 + + +def ease_in_quart(t): + return t * t * t * t + + +def ease_out_quart(t): + return 1 - pow(1 - t, 4) + + +def ease_in_out_quart(t): + return 8 * t * t * t * t if t < 0.5 else 1 - pow(-2 * t + 2, 4) / 2 + + +def ease_in_quint(t): + return t * t * t * t * t + + +def ease_out_quint(t): + return 1 - pow(1 - t, 5) + + +def ease_in_out_quint(t): + return 16 * t * t * t * t * t if t < 0.5 else 1 - pow(-2 * t + 2, 5) / 2 + + +def ease_in_expo(t): + return 0 if t == 0 else pow(2, 10 * t - 10) + + +def ease_out_expo(t): + return 1 if t == 1 else 1 - pow(2, -10 * t) + + +def ease_in_out_expo(t): + if t == 0: + return 0 + elif t == 1: + return 1 + elif t < 0.5: + return pow(2, 20 * t - 10) / 2 + else: + return 2 - pow(2, -20 * t + 10) / 2 + + +def ease_in_circ(t): + return 1 - sqrt(1 - pow(t, 2)) + + +def ease_out_circ(t): + return sqrt(1 - pow(t - 1, 2)) + + +def ease_in_out_circ(t): + return ( + (1 - sqrt(1 - pow(2 * t, 2))) / 2 + if t < 0.5 + else (sqrt(1 - pow(-2 * t + 2, 2)) + 1) / 2 + ) + + +def ease_in_back(t): + c1 = 1.70158 + c3 = c1 + 1 + return c3 * t * t * t - c1 * t * t + + +def ease_out_back(t): + c1 = 1.70158 + c3 = c1 + 1 + return 1 + c3 * pow(t - 1, 3) + c1 * pow(t - 1, 2) + + +def ease_in_out_back(t): + c1 = 1.70158 + c2 = c1 * 1.525 + return ( + (pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2 + if t < 0.5 + else (pow(2 * t - 2, 2) * ((c2 + 1) * (t * 2 - 2) + c2) + 2) / 2 + ) + + +def ease_in_elastic(t): + c4 = (2 * np.pi) / 3 + if t == 0: + return 0 + elif t == 1: + return 1 + else: + return -pow(2, 10 * t - 10) * np.sin((t * 10 - 10.75) * c4) + + +def ease_out_elastic(t): + c4 = (2 * np.pi) / 3 + if t == 0: + return 0 + elif t == 1: + return 1 + else: + return pow(2, -10 * t) * np.sin((t * 10 - 0.75) * c4) + 1 + + +def ease_in_out_elastic(t): + c5 = (2 * np.pi) / 4.5 + if t == 0: + return 0 + elif t == 1: + return 1 + elif t < 0.5: + return -(pow(2, 20 * t - 10) * np.sin((20 * t - 11.125) * c5)) / 2 + else: + return (pow(2, -20 * t + 10) * np.sin((20 * t - 11.125) * c5)) / 2 + 1 + + +def ease_in_bounce(t): + return 1 - ease_out_bounce(1 - t) + + +def ease_out_bounce(t): + n1 = 7.5625 + d1 = 2.75 + + if t < 1 / d1: + return n1 * t * t + elif t < 2 / d1: + return n1 * (t - 1.5 / d1) * t + 0.75 + elif t < 2.5 / d1: + return n1 * (t - 2.25 / d1) * t + 0.9375 + else: + return n1 * (t - 2.625 / d1) * t + 0.984375 + + +def ease_in_out_bounce(t): + c1 = 1.70158 + c2 = c1 * 1.525 + return ( + (pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2 + if t < 0.5 + else (pow(2 * t - 2, 2) * ((c2 + 1) * (t * 2 - 2) + c2) + 2) / 2 + ) diff --git a/manim/utils/space_ops.py b/manim/utils/space_ops.py index e3e6f17a68..97b6017057 100644 --- a/manim/utils/space_ops.py +++ b/manim/utils/space_ops.py @@ -92,7 +92,7 @@ def rotate_vector(vector, angle, axis=OUT): product = reduce(quaternion_mult, [quat, np.append(0, vector), quat_inv]) return product[1:] else: - raise Exception("vector must be of dimension 2 or 3") + raise ValueError("vector must be of dimension 2 or 3") def thick_diagonal(dim, thickness=2): @@ -238,7 +238,7 @@ def det(a, b): div = det(x_diff, y_diff) if div == 0: - raise Exception("Lines do not intersect") + raise ValueError("Lines do not intersect") d = (det(*line1), det(*line2)) x = det(d, x_diff) / div y = det(d, y_diff) / div diff --git a/manim/utils/tex.py b/manim/utils/tex.py index 14d596b32f..ec87f91f2d 100644 --- a/manim/utils/tex.py +++ b/manim/utils/tex.py @@ -1,298 +1,285 @@ -"""Utilities for processing custom LaTeX templates.""" +"""Utilities for processing LaTeX templates.""" -__all__ = ["TexTemplateFromFile", "TexTemplate"] +__all__ = [ + "TexTemplate", + "TexTemplateFromFile", +] import os -from ..utils.config_ops import digest_config - - -class TexTemplateFromFile: +import re + + +class TexTemplate: + """TeX templates are used for creating Tex() and MathTex() objects. + + Parameters + ---------- + tex_compiler : Optional[:class:`str`], optional + The TeX compiler to be used, e.g. ``latex``, ``pdflatex`` or ``lualatex`` + output_format : Optional[:class:`str`], optional + The output format resulting from compilation, e.g. ``.dvi`` or ``.pdf`` + documentclass : Optional[:class:`str`], optional + The command defining the documentclass, e.g. ``\\documentclass[preview]{standalone}`` + preamble : Optional[:class:`str`], optional + The document's preample, i.e. the part between ``\\documentclass`` and ``\\begin{document}`` + placeholder_text : Optional[:class:`str`], optional + Text in the document that will be replaced by the expression to be rendered + post_doc_commands : Optional[:class:`str`], optional + Text (definitions, commands) to be inserted at right after ``\\begin{document}``, e.g. ``\\boldmath`` + + Attributes + ---------- + tex_compiler : :class:`str` + The TeX compiler to be used, e.g. ``latex``, ``pdflatex`` or ``lualatex`` + output_format : :class:`str` + The output format resulting from compilation, e.g. ``.dvi`` or ``.pdf`` + documentclass : :class:`str` + The command defining the documentclass, e.g. ``\\documentclass[preview]{standalone}`` + preamble : :class:`str` + The document's preample, i.e. the part between ``\\documentclass`` and ``\\begin{document}`` + placeholder_text : :class:`str` + Text in the document that will be replaced by the expression to be rendered + post_doc_commands : :class:`str` + Text (definitions, commands) to be inserted at right after ``\\begin{document}``, e.g. ``\\boldmath`` """ - Class representing a TeX template file - """ # TODO: attributes, dataclasses stuff - - CONFIG = { - "use_ctex": False, - "filename": "tex_template.tex", - "text_to_replace": "YourTextHere", - "tex_compiler": { - "command": "latex", - "output_format": ".dvi", - }, - } - body = "" - def __init__(self, **kwargs): - digest_config(self, kwargs) - self.rebuild_cache() + default_documentclass = r"\documentclass[preview]{standalone}" + default_preamble = r""" +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{dsfont} +\usepackage{setspace} +\usepackage{tipa} +\usepackage{relsize} +\usepackage{textcomp} +\usepackage{mathrsfs} +\usepackage{calligra} +\usepackage{wasysym} +\usepackage{ragged2e} +\usepackage{physics} +\usepackage{xcolor} +\usepackage{microtype} +\DisableLigatures{encoding = *, family = * } +\linespread{1} +""" + default_placeholder_text = "YourTextHere" + default_tex_compiler = "latex" + default_output_format = ".dvi" + default_post_doc_commands = "" + + def __init__( + self, + tex_compiler=None, + output_format=None, + documentclass=None, + preamble=None, + placeholder_text=None, + post_doc_commands=None, + **kwargs + ): + self.tex_compiler = ( + tex_compiler + if tex_compiler is not None + else TexTemplate.default_tex_compiler + ) + self.output_format = ( + output_format + if output_format is not None + else TexTemplate.default_output_format + ) + self.documentclass = ( + documentclass + if documentclass is not None + else TexTemplate.default_documentclass + ) + self.preamble = ( + preamble if preamble is not None else TexTemplate.default_preamble + ) + self.placeholder_text = ( + placeholder_text + if placeholder_text is not None + else TexTemplate.default_placeholder_text + ) + self.post_doc_commands = ( + post_doc_commands + if post_doc_commands is not None + else TexTemplate.default_post_doc_commands + ) + self._rebuild() + + def _rebuild(self): + """Rebuilds the entire TeX template text from ``\\documentclass`` to ``\\end{document}`` according to all settings and choices.""" + self.body = ( + self.documentclass + + "\n" + + self.preamble + + "\n" + + r"\begin{document}" + + "\n" + + self.post_doc_commands + + "\n" + + self.placeholder_text + + "\n" + + "\n" + + r"\end{document}" + + "\n" + ) + + def add_to_preamble(self, txt, prepend=False): + """Adds stuff to the TeX template's preamble (e.g. definitions, packages). Text can be inserted at the beginning or at the end of the preamble. - def rebuild_cache(self): - """For faster access, the LaTeX template's code is cached. - If the base file is modified, the cache needs to be rebuilt. + Parameters + ---------- + txt : :class:`string` + String containing the text to be added, e.g. ``\\usepackage{hyperref}`` + prepend : Optional[:class:`bool`], optional + Whether the text should be added at the beginning of the preample, i.e. right after ``\\documentclass``. Default is to add it at the end of the preample, i.e. right before ``\\begin{document}`` """ - with open(self.filename, "r") as infile: - self.body = infile.read() + if prepend: + self.preamble = txt + "\n" + self.preamble + else: + self.preamble += "\n" + txt + self._rebuild() - def get_text_for_text_mode(self, expression): - """Inserting expression verbatim into TeX template. + def add_to_document(self, txt): + """Adds txt to the TeX template just after \\begin{document}, e.g. ``\\boldmath`` Parameters ---------- - expression : :class:`str` - String containing the expression to be typeset, e.g. ``"foo"`` - - Returns - ------- - :class:`str` - LaTeX code based on the template containing the given expression and ready for typesetting. + txt : :class:`str` + String containing the text to be added. """ - return self.body.replace(self.text_to_replace, expression) + self.post_doc_commands += "\n" + txt + "\n" + self._rebuild() - def get_text_for_env(self, environment, expression): - """Inserts an expression wrapped in a given environment into the TeX template. + def get_texcode_for_expression(self, expression): + """Inserts expression verbatim into TeX template. Parameters ---------- - environment : :class:`str` - The environment in which we should wrap the expression. expression : :class:`str` The string containing the expression to be typeset, e.g. ``$\\sqrt{2}$`` Returns ------- :class:`str` - LaTeX code based on template, containing the given expression and ready for typesetting + LaTeX code based on current template, containing the given ``expression`` and ready for typesetting """ - begin = r"\begin{" + environment + "}" - end = r"\end{" + environment + "}" - return self.body.replace( - self.text_to_replace, "{0}\n{1}\n{2}".format(begin, expression, end) - ) + return self.body.replace(self.placeholder_text, expression) - def get_text_for_tex_mode(self, expression): - """Inserts an expression within an ``align*`` environment into the TeX template. + def _texcode_for_environment(self, environment): + """Processes the tex_environment string to return the correct ``\\begin{environment}[extra]{extra}`` and + ``\\end{environment}`` strings Parameters ---------- - expression : :class:`str` - The string containing the (math) expression to be typeset, - e.g. ``$\\sqrt{2}$`` + environment : :class:`str` + The tex_environment as a string. Acceptable formats include: + ``{align*}``, ``align*``, ``{tabular}[t]{cccl}``, ``tabular}{cccl``, ``\\begin{tabular}[t]{cccl}``. Returns ------- - :class:`str` - LaTeX code based on template, containing the given expression and ready for typesetting + Tuple[:class:`str`, :class:`str`] + A pair of strings representing the opening and closing of the tex environment, e.g. + ``\\begin{tabular}{cccl}`` and ``\\end{tabular}`` """ - return self.get_text_for_env("align*", expression) + # If the environment starts with \begin, remove it + if environment[0:6] == r"\begin": + environment = environment[6:] -class TexTemplate(TexTemplateFromFile): - """ - Class for dynamically managing a TeX template - """ # TODO: Add attributes (when dataclasses are implemented) - - CONFIG = { - "documentclass": ["standalone", ["preview"]], - "common_packages": [ - ["babel", ["english"]], - "amsmath", - "amssymb", - "dsfont", - "setspace", - "tipa", - "relsize", - "textcomp", - "mathrsfs", - "calligra", - "wasysym", - "ragged2e", - "physics", - "xcolor", - "microtype", - ], - "tex_packages": [["inputenc", ["utf8"]], ["fontenc", ["T1"]]], - "ctex_packages": [["ctex", ["UTF8"]]], - "common_preamble_text": r"\linespread{1}" "\n", - "tex_preamble_text": r"\DisableLigatures{encoding = *, family = *}" "\n", - "ctex_preamble_text": "", - "document_prefix": "", - "document_suffix": "", - } + # If environment begins with { strip it + if environment[0] == r"{": + environment = environment[1:] - def __init__(self, **kwargs): - digest_config(self, kwargs) - self.rebuild_cache() - - def rebuild_cache(self): - """For faster access, the LaTeX template's code is cached. - If the base file is modified, the cache needs to be rebuilt.""" - tpl = self.generate_tex_command( - "documentclass", - required_params=[self.documentclass[0]], - optional_params=self.documentclass[1], - ) - for pkg in self.common_packages: - tpl += self.generate_usepackage(pkg) - - if self.use_ctex: - for pkg in self.ctex_packages: - tpl += self.generate_usepackage(pkg) - else: - for pkg in self.tex_packages: - tpl += self.generate_usepackage(pkg) - - tpl += self.common_preamble_text - if self.use_ctex: - tpl += self.ctex_preamble_text - else: - tpl += self.tex_preamble_text + # The \begin command takes everything and closes with a brace + begin = r"\begin{" + environment + if ( + begin[-1] != r"}" and begin[-1] != r"]" + ): # If it doesn't end on } or ], assume missing } + begin += r"}" - tpl += "\n" r"\begin{document}" "\n" - tpl += f"\n{self.text_to_replace}\n" - tpl += "\n" r"\end{document}" - - self.body = tpl - - def prepend_package(self, pkg): - """Adds a new package (or several new packages) - before all other packages. Sometimes, the order of - the ``\\usepackage`` directives is relevant. - - Parameters - ---------- - pkg : :class:`str` - The package name, e.g. ``"siunitx"`` - """ - self.common_packages.insert(0, pkg) - self.rebuild_cache() - - def append_package(self, pkg): - """Adds a new package (or several new packages) - after all other packages. Sometimes, the order of - the ``\\usepackage`` directives is relevant. - - Parameters - ---------- - pkg : :class:`str` - The package name, e.g. ``"siunitx"`` - """ - self.common_packages.append(pkg) - self.rebuild_cache() + # While the \end command terminates at the first closing brace + split_at_brace = re.split(r"}", environment, 1) + end = r"\end{" + split_at_brace[0] + r"}" - def append_to_preamble(self, text): - """Adds commands (e.g. macro definitions) at the end of the preamble. + return begin, end - Parameters - ---------- - text : :class:`str` - The text to be included, e.g. ``"\\newcommand{\\R}{\\mathbb{Q}}"``. - """ - if self.use_ctex: - self.ctex_preamble_text += text - else: - self.tex_preamble_text += text - self.rebuild_cache() - pass - - def clear_preamble(self): - """Removes custom definitions from the LaTeX preamble. - This does not affect the imported packages or documentclass.""" - self.common_preamble_text = "" - self.ctex_preamble_text = "" - self.tex_preamble_text = "" - self.rebuild_cache() - pass - - def generate_tex_command(self, command, *, required_params, optional_params=[]): - """ - Function for creating LaTeX command strings with or without options. - Internally used to generate ``\\usepackage`` commands. + def get_texcode_for_expression_in_env(self, expression, environment): + """Inserts expression into TeX template wrapped in \begin{environemnt} and \end{environment} Parameters ---------- - command : :class:`str` - The command, e.g. ``"usepackage"``. - required_params : Iterable[:class:`str`] - The required parameters of this command, each wrapped in ``{}``. - optional_params : Iterable[:class:`str`] - The optional parameters of this command, each separated by a comma inside one ``[]``. - - Examples - -------- - :: - - generate_tex_command("usepackage", required_params=["packagename"], optional_params=["option1", "option2"]) + expression : :class:`str` + The string containing the expression to be typeset, e.g. ``$\\sqrt{2}$`` + environment : :class:`str` + The string containing the environment in which the expression should be typeset, e.g. ``align*`` Returns ------- :class:`str` - The generated command. + LaTeX code based on template, containing the given expression inside its environment, ready for typesetting """ - optional_params = list(optional_params) # so we can measure its length - return r"\{0}{1}{2}".format( - command, - f"[{','.join(optional_params)}]" if optional_params else "", - "".join("{" + param + "}" for param in required_params), + begin, end = self._texcode_for_environment(environment) + return self.body.replace( + self.placeholder_text, "{0}\n{1}\n{2}".format(begin, expression, end) ) - def generate_usepackage(self, pkg): - if isinstance(pkg, list): - return self.generate_tex_command( - "usepackage", required_params=[pkg[0]], optional_params=pkg[1] - ) - else: - return self.generate_tex_command("usepackage", required_params=[pkg]) - - def get_text_for_text_mode(self, expression): - """Inserts an expression verbatim into the TeX template. - Parameters - ---------- - expression : :class:`str` - The expression to be typeset, e.g. ``"foo"``. - - Returns - ------- - :class:`str` - LaTeX code based on the template, containing the given expression and ready for typesetting - """ - return self.body.replace(self.text_to_replace, expression) - - def get_text_for_env(self, environment, expression): - """Inserts an expression wrapped in a given environment into the TeX template. +class TexTemplateFromFile(TexTemplate): + """A TexTemplate object created from a template file (default: tex_template.tex) + + Parameters + ---------- + tex_compiler : Optional[:class:`str`], optional + The TeX compiler to be used, e.g. ``latex``, ``pdflatex`` or ``lualatex`` + output_format : Optional[:class:`str`], optional + The output format resulting from compilation, e.g. ``.dvi`` or ``.pdf`` + documentclass : Optional[:class:`str`], optional + The command defining the documentclass, e.g. ``\\documentclass[preview]{standalone}`` + preamble : Optional[:class:`str`], optional + The document's preample, i.e. the part between ``\\documentclass`` and ``\\begin{document}`` + placeholder_text : Optional[:class:`str`], optional + Text in the document that will be replaced by the expression to be rendered + post_doc_commands : Optional[:class:`str`], optional + Text (definitions, commands) to be inserted at right after ``\\begin{document}``, e.g. ``\\boldmath`` + kwargs : :class:`str` + The kwargs specified can only be strings. + + Other Parameters + ---------------- + tex_filename : Optional[:class:`str`], optional + Path to a valid TeX template file + + Attributes + ---------- + template_file : :class:`str` + Path to a valid TeX template file + body : :class:`str` + Content of the TeX template file + tex_compiler : :class:`str` + The TeX compiler to be used, e.g. ``latex``, ``pdflatex`` or ``lualatex`` + output_format : :class:`str` + The output format resulting from compilation, e.g. ``.dvi`` or ``.pdf`` + """ - Parameters - ---------- - environment : :class:`str` - The environment in which we should wrap the expression. - expression : :class:`str` - The string containing the expression to be typeset, e.g. ``"$\\sqrt{2}$"`` + def __init__(self, **kwargs): + self.template_file = kwargs.pop("filename", "tex_template.tex") + super().__init__(**kwargs) - Returns - ------- - :class:`str` - LaTeX code based on template, containing the given expression and ready for typesetting - """ - begin = r"\begin{" + environment + "}" - end = r"\end{" + environment + "}" - return self.body.replace( - self.text_to_replace, "{0}\n{1}\n{2}".format(begin, expression, end) - ) + def _rebuild(self): + with open(self.template_file, "r") as infile: + self.body = infile.read() - def get_text_for_tex_mode(self, expression): - """Inserts an expression within an ``align*`` environment into - the TeX template. + def file_not_mutable(self): + raise Exception("Cannot modify TexTemplate when using a template file.") - Parameters - ---------- - expression : :class:`str` - The string containing the (math) expression to be typeset, - e.g. ``"$\\sqrt{2}$"`` + def add_to_preamble(self, txt, prepend=False): + self.file_not_mutable() - Returns - ------- - :class:`str` - LaTeX code based on template, containing the given expression and ready for typesetting - """ - return self.get_text_for_env("align*", expression) + def add_to_document(self, txt): + self.file_not_mutable() diff --git a/manim/utils/tex_file_writing.py b/manim/utils/tex_file_writing.py index 924e761d64..71b080c95c 100644 --- a/manim/utils/tex_file_writing.py +++ b/manim/utils/tex_file_writing.py @@ -21,23 +21,62 @@ def tex_hash(expression): return hasher.hexdigest()[:16] -def tex_to_svg_file(expression, source_type, tex_template=None): +def tex_to_svg_file(expression, environment=None, tex_template=None): + """Takes a tex expression and returns the svg version of the compiled tex + + Parameters + ---------- + expression : :class:`str` + String containing the TeX expression to be rendered, e.g. ``\\sqrt{2}`` or ``foo`` + environment : Optional[:class:`str`], optional + The string containing the environment in which the expression should be typeset, e.g. ``align*`` + tex_template : Optional[:class:`~.TexTemplate`], optional + Template class used to typesetting. If not set, use default template set via `config["tex_template"]` + + Returns + ------- + :class:`str` + Path to generated SVG file. + """ if tex_template is None: tex_template = config["tex_template"] - tex_file = generate_tex_file(expression, tex_template, source_type) - dvi_file = tex_to_dvi(tex_file, tex_template.use_ctex, tex_template.tex_compiler) - return dvi_to_svg( - dvi_file, use_ctex=tex_template.use_ctex, tex_compiler=tex_template.tex_compiler + tex_file = generate_tex_file(expression, environment, tex_template) + dvi_file = compile_tex( + tex_file, tex_template.tex_compiler, tex_template.output_format ) + return convert_to_svg(dvi_file, tex_template.output_format) + + +def generate_tex_file(expression, environment=None, tex_template=None): + """Takes a tex expression (and an optional tex environment), + and returns a fully formed tex file ready for compilation. + + Parameters + ---------- + expression : :class:`str` + String containing the TeX expression to be rendered, e.g. ``\\sqrt{2}`` or ``foo`` + environment : Optional[:class:`str`], optional + The string containing the environment in which the expression should be typeset, e.g. ``align*`` + tex_template : Optional[:class:`~.TexTemplate`], optional + Template class used to typesetting. If not set, use default template set via `config["tex_template"]` + + Returns + ------- + :class:`str` + Path to generated TeX file + """ + if tex_template is None: + tex_template = config["tex_template"] + if environment is not None: + output = tex_template.get_texcode_for_expression_in_env(expression, environment) + else: + output = tex_template.get_texcode_for_expression(expression) + tex_dir = config["tex_dir"] + if not os.path.exists(tex_dir): + os.makedirs(tex_dir) -def generate_tex_file(expression, tex_template, source_type): - if source_type == "text": - output = tex_template.get_text_for_text_mode(expression) - elif source_type == "tex": - output = tex_template.get_text_for_tex_mode(expression) - - result = os.path.join(config["tex_dir"], tex_hash(output)) + ".tex" + result = os.path.join(tex_dir, tex_hash(output)) + ".tex" if not os.path.exists(result): logger.info('Writing "%s" to %s' % ("".join(expression), result)) with open(result, "w", encoding="utf-8") as outfile: @@ -45,22 +84,40 @@ def generate_tex_file(expression, tex_template, source_type): return result -def tex_compilation_command(compiler, tex_file, tex_dir): - if compiler["command"] in {"latex", "pdflatex", "luatex", "lualatex"}: +def tex_compilation_command(tex_compiler, output_format, tex_file, tex_dir): + """Prepares the tex compilation command with all necessary cli flags + + Parameters + ---------- + tex_compiler : :class:`str` + String containing the compiler to be used, e.g. ``pdflatex`` or ``lualatex`` + output_format : :class:`str` + String containing the output format generated by the compiler, e.g. ``.dvi`` or ``.pdf`` + tex_file : :class:`str` + File name of TeX file to be typeset. + tex_dir : :class:`str` + Path to the directory where compiler output will be stored. + + Returns + ------- + :class:`str` + Compilation command according to given parameters + """ + if tex_compiler in {"latex", "pdflatex", "luatex", "lualatex"}: commands = [ - compiler["command"], + tex_compiler, "-interaction=batchmode", - f'-output-format="{compiler["output_format"][1:]}"', + f'-output-format="{output_format[1:]}"', "-halt-on-error", f'-output-directory="{tex_dir}"', f'"{tex_file}"', ">", os.devnull, ] - elif compiler["command"] == "xelatex": - if compiler["output_format"] == ".xdv": + elif tex_compiler == "xelatex": + if output_format == ".xdv": outflag = "-no-pdf" - elif compiler["output_format"] == ".pdf": + elif output_format == ".pdf": outflag = "" else: raise ValueError("xelatex output is either pdf or xdv") @@ -75,53 +132,70 @@ def tex_compilation_command(compiler, tex_file, tex_dir): os.devnull, ] else: - raise ValueError(f"Tex compiler {compiler['command']} unknown.") + raise ValueError(f"Tex compiler {tex_compiler} unknown.") return " ".join(commands) -def tex_to_dvi(tex_file, use_ctex=False, tex_compiler=None): - if tex_compiler is None: - tex_compiler = ( - {"command": "xelatex", "output_format": ".xdv"} - if use_ctex - else {"command": "latex", "output_format": ".dvi"} - ) - result = tex_file.replace(".tex", tex_compiler["output_format"]) +def compile_tex(tex_file, tex_compiler, output_format): + """Compiles a tex_file into a .dvi or a .xdv or a .pdf + + Parameters + ---------- + tex_file : :class:`str` + File name of TeX file to be typeset. + tex_compiler : :class:`str` + String containing the compiler to be used, e.g. ``pdflatex`` or ``lualatex`` + output_format : :class:`str` + String containing the output format generated by the compiler, e.g. ``.dvi`` or ``.pdf`` + + Returns + ------- + :class:`str` + Path to generated output file in desired format (DVI, XDV or PDF). + """ + result = tex_file.replace(".tex", output_format) result = Path(result).as_posix() tex_file = Path(tex_file).as_posix() tex_dir = Path(config["tex_dir"]).as_posix() if not os.path.exists(result): - command = tex_compilation_command(tex_compiler, tex_file, tex_dir) + command = tex_compilation_command( + tex_compiler, output_format, tex_file, tex_dir + ) exit_code = os.system(command) if exit_code != 0: log_file = tex_file.replace(".tex", ".log") raise ValueError( - f"{tex_compiler['command']} error converting to" - f" {tex_compiler['output_format'][1:]}. See log output above or" + f"{tex_compiler} error converting to" + f" {output_format[1:]}. See log output above or" f" the log file: {log_file}" ) return result -def dvi_to_svg( - dvi_file, use_ctex=False, tex_compiler=None, regen_if_exists=False, page=1 -): - """ - Converts a dvi, xdv, or pdf file into an svg using dvisvgm. +def convert_to_svg(dvi_file, extension, page=1): + """Converts a .dvi, .xdv, or .pdf file into an svg using dvisvgm. + + Parameters + ---------- + dvi_file : :class:`str` + File name of the input file to be converted. + extension : :class:`str` + String containing the file extension and thus indicating the file type, e.g. ``.dvi`` or ``.pdf`` + page : Optional[:class:`int`], optional + Page to be converted if input file is multi-page. + + Returns + ------- + :class:`str` + Path to generated SVG file. """ - if tex_compiler is None: - tex_compiler = ( - {"command": "xelatex", "output_format": ".xdv"} - if use_ctex - else {"command": "latex", "output_format": ".dvi"} - ) - result = dvi_file.replace(tex_compiler["output_format"], ".svg") + result = dvi_file.replace(extension, ".svg") result = Path(result).as_posix() dvi_file = Path(dvi_file).as_posix() if not os.path.exists(result): commands = [ "dvisvgm", - "--pdf" if tex_compiler["output_format"] == ".pdf" else "", + "--pdf" if extension == ".pdf" else "", "-p " + str(page), '"{}"'.format(dvi_file), "-n", @@ -131,4 +205,14 @@ def dvi_to_svg( os.devnull, ] os.system(" ".join(commands)) + + # if the file does not exist now, this means conversion failed + if not os.path.exists(result): + raise ValueError( + f"Your installation does not support converting {extension} files to SVG." + f" Consider updating dvisvgm to at least version 2.4." + f" If this does not solve the problem, please refer to our troubleshooting guide at:" + f" https://manimce.readthedocs.io/en/latest/installation/troubleshooting.html" + ) + return result diff --git a/manim/utils/tex_templates.py b/manim/utils/tex_templates.py new file mode 100644 index 0000000000..a824ebff1f --- /dev/null +++ b/manim/utils/tex_templates.py @@ -0,0 +1,1024 @@ +# -*- coding: utf-8 -*- +"""A library of LaTeX templates.""" +__all__ = [ + "TexTemplateLibrary", + "TexFontTemplates", +] + +from .tex import * + + +# This file makes TexTemplateLibrary and TexFontTemplates available for use in manim Tex and MathTex objects. + + +def _new_ams_template(): + """ Returns a simple Tex Template with only basic AMS packages """ + preamble = r""" +\usepackage[english]{babel} +\usepackage{amsmath} +\usepackage{amssymb} +""" + return TexTemplate(preamble=preamble) + + +# TexTemplateLibrary +# +class TexTemplateLibrary(object): + """ + A collection of basic TeX template objects + + Examples + -------- + Normal usage as a value for the keyword argument tex_template of Tex() and MathTex() mobjects:: + + ``Tex("My TeX code", tex_template=TexTemplateLibrary.ctex)`` + + """ + + default = TexTemplate() + """An instance of the default TeX template in manim""" + + threeb1b = TexTemplate() + """ An instance of the default TeX template used by 3b1b """ + + ctex = TexTemplate( + tex_compiler="xelatex", + output_format=".xdv", + preamble=TexTemplate.default_preamble.replace( + r"\DisableLigatures{encoding = *, family = * }", r"\usepackage[UTF8]{ctex}" + ), + ) + """An instance of the TeX template used by 3b1b when using the use_ctex flag""" + + simple = _new_ams_template() + """An instance of a simple TeX template with only basic AMS packages loaded""" + + +# TexFontTemplates +# +# TexFontTemplates takes a font_id and returns the appropriate TexTemplate() +# Usage: +# my_tex_template = TexFontTemplates.font_id +# +# Note: not all of these will work out-of-the-box. +# They may require specific fonts to be installed on the local system. +# For example TexFontTemplates.comic_sans will only work if the Microsoft font 'Comic Sans' +# is installed on the local system. +# +# More information on these templates, along with example output can be found at +# http://jf.burnol.free.fr/showcase.html" +# +# +# Choices for font_id are: +# +# american_typewriter : "American Typewriter" +# antykwa : "Antykwa Półtawskiego (TX Fonts for Greek and math symbols)" +# apple_chancery : "Apple Chancery" +# auriocus_kalligraphicus : "Auriocus Kalligraphicus (Symbol Greek)" +# baskervald_adf_fourier : "Baskervald ADF with Fourier" +# baskerville_it : "Baskerville (Italic)" +# biolinum : "Biolinum" +# brushscriptx : "BrushScriptX-Italic (PX math and Greek)" +# chalkboard_se : "Chalkboard SE" +# chalkduster : "Chalkduster" +# comfortaa : "Comfortaa" +# comic_sans : "Comic Sans MS" +# droid_sans : "Droid Sans" +# droid_sans_it : "Droid Sans (Italic)" +# droid_serif : "Droid Serif" +# droid_serif_px_it : "Droid Serif (PX math symbols) (Italic)" +# ecf_augie : "ECF Augie (Euler Greek)" +# ecf_jd : "ECF JD (with TX fonts)" +# ecf_skeetch : "ECF Skeetch (CM Greek)" +# ecf_tall_paul : "ECF Tall Paul (with Symbol font)" +# ecf_webster : "ECF Webster (with TX fonts)" +# electrum_adf : "Electrum ADF (CM Greek)" +# epigrafica : Epigrafica +# fourier_utopia : "Fourier Utopia (Fourier upright Greek)" +# french_cursive : "French Cursive (Euler Greek)" +# gfs_bodoni : "GFS Bodoni" +# gfs_didot : "GFS Didot (Italic)" +# gfs_neoHellenic : "GFS NeoHellenic" +# gnu_freesans_tx : "GNU FreeSerif (and TX fonts symbols)" +# gnu_freeserif_freesans : "GNU FreeSerif and FreeSans" +# helvetica_fourier_it : "Helvetica with Fourier (Italic)" +# latin_modern_tw_it : "Latin Modern Typewriter Proportional (CM Greek) (Italic)" +# latin_modern_tw : "Latin Modern Typewriter Proportional" +# libertine : "Libertine" +# libris_adf_fourier : "Libris ADF with Fourier" +# minion_pro_myriad_pro : "Minion Pro and Myriad Pro (and TX fonts symbols)" +# minion_pro_tx : "Minion Pro (and TX fonts symbols)" +# new_century_schoolbook : "New Century Schoolbook (Symbol Greek)" +# new_century_schoolbook_px : "New Century Schoolbook (Symbol Greek, PX math symbols)" +# noteworthy_light : "Noteworthy Light" +# palatino : "Palatino (Symbol Greek)" +# papyrus : "Papyrus" +# romande_adf_fourier_it : "Romande ADF with Fourier (Italic)" +# slitex : "SliTeX (Euler Greek)" +# times_fourier_it : "Times with Fourier (Italic)" +# urw_avant_garde : "URW Avant Garde (Symbol Greek)" +# urw_zapf_chancery : "URW Zapf Chancery (CM Greek)" +# venturis_adf_fourier_it : "Venturis ADF with Fourier (Italic)" +# verdana_it : "Verdana (Italic)" +# vollkorn_fourier_it : "Vollkorn with Fourier (Italic)" +# vollkorn : "Vollkorn (TX fonts for Greek and math symbols)" +# zapf_chancery : "Zapf Chancery" +# ----------------------------------------------------------------------------------------- +# +# +# +# +# +# +# +# +# +# + +# Latin Modern Typewriter Proportional +lmtp = _new_ams_template() +lmtp.description = "Latin Modern Typewriter Proportional" +lmtp.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[variablett]{lmodern} +\renewcommand{\rmdefault}{\ttdefault} +\usepackage[LGRgreek]{mathastext} +\MTgreekfont{lmtt} % no lgr lmvtt, so use lgr lmtt +\Mathastext +\let\varepsilon\epsilon % only \varsigma in LGR +""" +) + + +# Fourier Utopia (Fourier upright Greek) +fufug = _new_ams_template() +fufug.description = "Fourier Utopia (Fourier upright Greek)" +fufug.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[upright]{fourier} +\usepackage{mathastext} +""" +) + + +# Droid Serif +droidserif = _new_ams_template() +droidserif.description = "Droid Serif" +droidserif.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[default]{droidserif} +\usepackage[LGRgreek]{mathastext} +\let\varepsilon\epsilon +""" +) + + +# Droid Sans +droidsans = _new_ams_template() +droidsans.description = "Droid Sans" +droidsans.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[default]{droidsans} +\usepackage[LGRgreek]{mathastext} +\let\varepsilon\epsilon +""" +) + + +# New Century Schoolbook (Symbol Greek) +ncssg = _new_ams_template() +ncssg.description = "New Century Schoolbook (Symbol Greek)" +ncssg.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{newcent} +\usepackage[symbolgreek]{mathastext} +\linespread{1.1} +""" +) + + +# French Cursive (Euler Greek) +fceg = _new_ams_template() +fceg.description = "French Cursive (Euler Greek)" +fceg.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[default]{frcursive} +\usepackage[eulergreek,noplusnominus,noequal,nohbar,% +nolessnomore,noasterisk]{mathastext} +""" +) + + +# Auriocus Kalligraphicus (Symbol Greek) +aksg = _new_ams_template() +aksg.description = "Auriocus Kalligraphicus (Symbol Greek)" +aksg.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{aurical} +\renewcommand{\rmdefault}{AuriocusKalligraphicus} +\usepackage[symbolgreek]{mathastext} +""" +) + + +# Palatino (Symbol Greek) +palatinosg = _new_ams_template() +palatinosg.description = "Palatino (Symbol Greek)" +palatinosg.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{palatino} +\usepackage[symbolmax,defaultmathsizes]{mathastext} +""" +) + + +# Comfortaa +comfortaa = _new_ams_template() +comfortaa.description = "Comfortaa" +comfortaa.add_to_preamble( + r""" +\usepackage[default]{comfortaa} +\usepackage[LGRgreek,defaultmathsizes,noasterisk]{mathastext} +\let\varphi\phi +\linespread{1.06} +""" +) + + +# ECF Augie (Euler Greek) +ecfaugieeg = _new_ams_template() +ecfaugieeg.description = "ECF Augie (Euler Greek)" +ecfaugieeg.add_to_preamble( + r""" +\renewcommand\familydefault{fau} % emerald package +\usepackage[defaultmathsizes,eulergreek]{mathastext} +""" +) + + +# Electrum ADF (CM Greek) +electrumadfcm = _new_ams_template() +electrumadfcm.description = "Electrum ADF (CM Greek)" +electrumadfcm.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[LGRgreek,basic,defaultmathsizes]{mathastext} +\usepackage[lf]{electrum} +\Mathastext +\let\varphi\phi +""" +) + + +# American Typewriter +americantypewriter = _new_ams_template() +americantypewriter.description = "American Typewriter" +americantypewriter.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{American Typewriter} +\usepackage[defaultmathsizes]{mathastext} +""" +) +americantypewriter.tex_compiler = "xelatex" +americantypewriter.output_format = ".xdv" + +# Minion Pro and Myriad Pro (and TX fonts symbols) +mpmptx = _new_ams_template() +mpmptx.description = "Minion Pro and Myriad Pro (and TX fonts symbols)" +mpmptx.add_to_preamble( + r""" +\usepackage{txfonts} +\usepackage[upright]{txgreeks} +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Minion Pro} +\setsansfont[Mapping=tex-text,Scale=MatchUppercase]{Myriad Pro} +\renewcommand\familydefault\sfdefault +\usepackage[defaultmathsizes]{mathastext} +\renewcommand\familydefault\rmdefault +""" +) +mpmptx.tex_compiler = "xelatex" +mpmptx.output_format = ".xdv" + + +# New Century Schoolbook (Symbol Greek, PX math symbols) +ncssgpxm = _new_ams_template() +ncssgpxm.description = "New Century Schoolbook (Symbol Greek, PX math symbols)" +ncssgpxm.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{pxfonts} +\usepackage{newcent} +\usepackage[symbolgreek,defaultmathsizes]{mathastext} +\linespread{1.06} +""" +) + + +# Vollkorn (TX fonts for Greek and math symbols) +vollkorntx = _new_ams_template() +vollkorntx.description = "Vollkorn (TX fonts for Greek and math symbols)" +vollkorntx.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{txfonts} +\usepackage[upright]{txgreeks} +\usepackage{vollkorn} +\usepackage[defaultmathsizes]{mathastext} +""" +) + + +# Libertine +libertine = _new_ams_template() +libertine.description = "Libertine" +libertine.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{libertine} +\usepackage[greek=n]{libgreek} +\usepackage[noasterisk,defaultmathsizes]{mathastext} +""" +) + + +# SliTeX (Euler Greek) +slitexeg = _new_ams_template() +slitexeg.description = "SliTeX (Euler Greek)" +slitexeg.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{tpslifonts} +\usepackage[eulergreek,defaultmathsizes]{mathastext} +\MTEulerScale{1.06} +\linespread{1.2} +""" +) + + +# ECF Webster (with TX fonts) +ecfwebstertx = _new_ams_template() +ecfwebstertx.description = "ECF Webster (with TX fonts)" +ecfwebstertx.add_to_preamble( + r""" +\usepackage{txfonts} +\usepackage[upright]{txgreeks} +\renewcommand\familydefault{fwb} % emerald package +\usepackage{mathastext} +\renewcommand{\int}{\intop\limits} +\linespread{1.5} +""" +) +ecfwebstertx.add_to_document( + r""" +\mathversion{bold} +""" +) + + +# Romande ADF with Fourier (Italic) +italicromandeadff = _new_ams_template() +italicromandeadff.description = "Romande ADF with Fourier (Italic)" +italicromandeadff.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{fourier} +\usepackage{romande} +\usepackage[italic,defaultmathsizes,noasterisk]{mathastext} +\renewcommand{\itshape}{\swashstyle} +""" +) + + +# Apple Chancery +applechancery = _new_ams_template() +applechancery.description = "Apple Chancery" +applechancery.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Apple Chancery} +\usepackage[defaultmathsizes]{mathastext} +""" +) +applechancery.tex_compiler = "xelatex" +applechancery.output_format = ".xdv" + + +# Zapf Chancery +zapfchancery = _new_ams_template() +zapfchancery.description = "Zapf Chancery" +zapfchancery.add_to_preamble( + r""" +\DeclareFontFamily{T1}{pzc}{} +\DeclareFontShape{T1}{pzc}{mb}{it}{<->s*[1.2] pzcmi8t}{} +\DeclareFontShape{T1}{pzc}{m}{it}{<->ssub * pzc/mb/it}{} +\usepackage{chancery} % = \renewcommand{\rmdefault}{pzc} +\renewcommand\shapedefault\itdefault +\renewcommand\bfdefault\mddefault +\usepackage[defaultmathsizes]{mathastext} +\linespread{1.05} +""" +) + + +# Verdana (Italic) +italicverdana = _new_ams_template() +italicverdana.description = "Verdana (Italic)" +italicverdana.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Verdana} +\usepackage[defaultmathsizes,italic]{mathastext} +""" +) +italicverdana.tex_compiler = "xelatex" +italicverdana.output_format = ".xdv" + + +# URW Zapf Chancery (CM Greek) +urwzccmg = _new_ams_template() +urwzccmg.description = "URW Zapf Chancery (CM Greek)" +urwzccmg.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\DeclareFontFamily{T1}{pzc}{} +\DeclareFontShape{T1}{pzc}{mb}{it}{<->s*[1.2] pzcmi8t}{} +\DeclareFontShape{T1}{pzc}{m}{it}{<->ssub * pzc/mb/it}{} +\DeclareFontShape{T1}{pzc}{mb}{sl}{<->ssub * pzc/mb/it}{} +\DeclareFontShape{T1}{pzc}{m}{sl}{<->ssub * pzc/mb/sl}{} +\DeclareFontShape{T1}{pzc}{m}{n}{<->ssub * pzc/mb/it}{} +\usepackage{chancery} +\usepackage{mathastext} +\linespread{1.05}""" +) +urwzccmg.add_to_document( + r""" +\boldmath +""" +) + + +# Comic Sans MS +comicsansms = _new_ams_template() +comicsansms.description = "Comic Sans MS" +comicsansms.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Comic Sans MS} +\usepackage[defaultmathsizes]{mathastext} +""" +) +comicsansms.tex_compiler = "xelatex" +comicsansms.output_format = ".xdv" + + +# GFS Didot (Italic) +italicgfsdidot = _new_ams_template() +italicgfsdidot.description = "GFS Didot (Italic)" +italicgfsdidot.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\renewcommand\rmdefault{udidot} +\usepackage[LGRgreek,defaultmathsizes,italic]{mathastext} +\let\varphi\phi +""" +) + + +# Chalkduster +chalkduster = _new_ams_template() +chalkduster.description = "Chalkduster" +chalkduster.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Chalkduster} +\usepackage[defaultmathsizes]{mathastext} +""" +) +chalkduster.tex_compiler = "lualatex" +chalkduster.output_format = ".pdf" + + +# Minion Pro (and TX fonts symbols) +mptx = _new_ams_template() +mptx.description = "Minion Pro (and TX fonts symbols)" +mptx.add_to_preamble( + r""" +\usepackage{txfonts} +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Minion Pro} +\usepackage[defaultmathsizes]{mathastext} +""" +) +mptx.tex_compiler = "xelatex" +mptx.output_format = ".xdv" + + +# GNU FreeSerif and FreeSans +gnufsfs = _new_ams_template() +gnufsfs.description = "GNU FreeSerif and FreeSans" +gnufsfs.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[ExternalLocation, + Mapping=tex-text, + BoldFont=FreeSerifBold, + ItalicFont=FreeSerifItalic, + BoldItalicFont=FreeSerifBoldItalic]{FreeSerif} +\setsansfont[ExternalLocation, + Mapping=tex-text, + BoldFont=FreeSansBold, + ItalicFont=FreeSansOblique, + BoldItalicFont=FreeSansBoldOblique, + Scale=MatchLowercase]{FreeSans} +\renewcommand{\familydefault}{lmss} +\usepackage[LGRgreek,defaultmathsizes,noasterisk]{mathastext} +\renewcommand{\familydefault}{\sfdefault} +\Mathastext +\let\varphi\phi % no `var' phi in LGR encoding +\renewcommand{\familydefault}{\rmdefault} +""" +) +gnufsfs.tex_compiler = "xelatex" +gnufsfs.output_format = ".pdf" + +# GFS NeoHellenic +gfsneohellenic = _new_ams_template() +gfsneohellenic.description = "GFS NeoHellenic" +gfsneohellenic.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\renewcommand{\rmdefault}{neohellenic} +\usepackage[LGRgreek]{mathastext} +\let\varphi\phi +\linespread{1.06} +""" +) + + +# ECF Tall Paul (with Symbol font) +ecftallpaul = _new_ams_template() +ecftallpaul.description = "ECF Tall Paul (with Symbol font)" +ecftallpaul.add_to_preamble( + r""" +\DeclareFontFamily{T1}{ftp}{} +\DeclareFontShape{T1}{ftp}{m}{n}{ + <->s*[1.4] ftpmw8t +}{} % increase size by factor 1.4 +\renewcommand\familydefault{ftp} % emerald package +\usepackage[symbol]{mathastext} +\let\infty\inftypsy +""" +) + + +# Droid Sans (Italic) +italicdroidsans = _new_ams_template() +italicdroidsans.description = "Droid Sans (Italic)" +italicdroidsans.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[default]{droidsans} +\usepackage[LGRgreek,defaultmathsizes,italic]{mathastext} +\let\varphi\phi +""" +) + + +# Baskerville (Italic) +italicbaskerville = _new_ams_template() +italicbaskerville.description = "Baskerville (Italic)" +italicbaskerville.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Baskerville} +\usepackage[defaultmathsizes,italic]{mathastext} +""" +) +italicbaskerville.tex_compiler = "xelatex" +italicbaskerville.output_format = ".xdv" + + +# ECF JD (with TX fonts) +ecfjdtx = _new_ams_template() +ecfjdtx.description = "ECF JD (with TX fonts)" +ecfjdtx.add_to_preamble( + r""" +\usepackage{txfonts} +\usepackage[upright]{txgreeks} +\renewcommand\familydefault{fjd} % emerald package +\usepackage{mathastext} +""" +) +ecfjdtx.add_to_document( + r"""\mathversion{bold} +""" +) + + +# Antykwa Półtawskiego (TX Fonts for Greek and math symbols) +aptxgm = _new_ams_template() +aptxgm.description = "Antykwa Półtawskiego (TX Fonts for Greek and math symbols)" +aptxgm.add_to_preamble( + r""" +\usepackage[OT4,OT1]{fontenc} +\usepackage{txfonts} +\usepackage[upright]{txgreeks} +\usepackage{antpolt} +\usepackage[defaultmathsizes,nolessnomore]{mathastext} +""" +) + + +# Papyrus +papyrus = _new_ams_template() +papyrus.description = "Papyrus" +papyrus.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Papyrus} +\usepackage[defaultmathsizes]{mathastext} +""" +) +papyrus.tex_compiler = "xelatex" +papyrus.output_format = ".xdv" + + +# GNU FreeSerif (and TX fonts symbols) +gnufstx = _new_ams_template() +gnufstx.description = "GNU FreeSerif (and TX fonts symbols)" +gnufstx.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\usepackage{txfonts} %\let\mathbb=\varmathbb +\setmainfont[ExternalLocation, + Mapping=tex-text, + BoldFont=FreeSerifBold, + ItalicFont=FreeSerifItalic, + BoldItalicFont=FreeSerifBoldItalic]{FreeSerif} +\usepackage[defaultmathsizes]{mathastext} +""" +) +gnufstx.tex_compiler = "xelatex" +gnufstx.output_format = ".pdf" + + +# ECF Skeetch (CM Greek) +ecfscmg = _new_ams_template() +ecfscmg.description = "ECF Skeetch (CM Greek)" +ecfscmg.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[T1]{fontenc} +\DeclareFontFamily{T1}{fsk}{} +\DeclareFontShape{T1}{fsk}{m}{n}{<->s*[1.315] fskmw8t}{} +\renewcommand\rmdefault{fsk} +\usepackage[noendash,defaultmathsizes,nohbar,defaultimath]{mathastext} +""" +) + + +# Latin Modern Typewriter Proportional (CM Greek) (Italic) +italiclmtpcm = _new_ams_template() +italiclmtpcm.description = "Latin Modern Typewriter Proportional (CM Greek) (Italic)" +italiclmtpcm.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[variablett,nomath]{lmodern} +\renewcommand{\familydefault}{\ttdefault} +\usepackage[frenchmath]{mathastext} +\linespread{1.08} +""" +) + + +# Baskervald ADF with Fourier +baskervaldadff = _new_ams_template() +baskervaldadff.description = "Baskervald ADF with Fourier" +baskervaldadff.add_to_preamble( + r""" +\usepackage[upright]{fourier} +\usepackage{baskervald} +\usepackage[defaultmathsizes,noasterisk]{mathastext} +""" +) + + +# Droid Serif (PX math symbols) (Italic) +italicdroidserifpx = _new_ams_template() +italicdroidserifpx.description = "Droid Serif (PX math symbols) (Italic)" +italicdroidserifpx.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{pxfonts} +\usepackage[default]{droidserif} +\usepackage[LGRgreek,defaultmathsizes,italic,basic]{mathastext} +\let\varphi\phi +""" +) + + +# Biolinum +biolinum = _new_ams_template() +biolinum.description = "Biolinum" +biolinum.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{libertine} +\renewcommand{\familydefault}{\sfdefault} +\usepackage[greek=n,biolinum]{libgreek} +\usepackage[noasterisk,defaultmathsizes]{mathastext} +""" +) + + +# Vollkorn with Fourier (Italic) +italicvollkornf = _new_ams_template() +italicvollkornf.description = "Vollkorn with Fourier (Italic)" +italicvollkornf.add_to_preamble( + r""" +\usepackage{fourier} +\usepackage{vollkorn} +\usepackage[italic,nohbar]{mathastext} +""" +) + + +# Chalkboard SE +chalkboardse = _new_ams_template() +chalkboardse.description = "Chalkboard SE" +chalkboardse.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Chalkboard SE} +\usepackage[defaultmathsizes]{mathastext} +""" +) +chalkboardse.tex_compiler = "xelatex" +chalkboardse.output_format = ".xdv" + + +# Noteworthy Light +noteworthylight = _new_ams_template() +noteworthylight.description = "Noteworthy Light" +noteworthylight.add_to_preamble( + r""" +\usepackage[no-math]{fontspec} +\setmainfont[Mapping=tex-text]{Noteworthy Light} +\usepackage[defaultmathsizes]{mathastext} +""" +) + + +# Epigrafica +epigrafica = _new_ams_template() +epigrafica.description = "Epigrafica" +epigrafica.add_to_preamble( + r""" +\usepackage[LGR,OT1]{fontenc} +\usepackage{epigrafica} +\usepackage[basic,LGRgreek,defaultmathsizes]{mathastext} +\let\varphi\phi +\linespread{1.2} +""" +) + + +# Libris ADF with Fourier +librisadff = _new_ams_template() +librisadff.description = "Libris ADF with Fourier" +librisadff.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[upright]{fourier} +\usepackage{libris} +\renewcommand{\familydefault}{\sfdefault} +\usepackage[noasterisk]{mathastext} +""" +) + + +# Venturis ADF with Fourier (Italic) +italicvanturisadff = _new_ams_template() +italicvanturisadff.description = "Venturis ADF with Fourier (Italic)" +italicvanturisadff.add_to_preamble( + r""" +\usepackage{fourier} +\usepackage[lf]{venturis} +\usepackage[italic,defaultmathsizes,noasterisk]{mathastext} +""" +) + + +# GFS Bodoni +gfsbodoni = _new_ams_template() +gfsbodoni.description = "GFS Bodoni" +gfsbodoni.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\renewcommand{\rmdefault}{bodoni} +\usepackage[LGRgreek]{mathastext} +\let\varphi\phi +\linespread{1.06} +""" +) + + +# BrushScriptX-Italic (PX math and Greek) +brushscriptxpx = _new_ams_template() +brushscriptxpx.description = "BrushScriptX-Italic (PX math and Greek)" +brushscriptxpx.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{pxfonts} +%\usepackage{pbsi} +\renewcommand{\rmdefault}{pbsi} +\renewcommand{\mddefault}{xl} +\renewcommand{\bfdefault}{xl} +\usepackage[defaultmathsizes,noasterisk]{mathastext} +""" +) +brushscriptxpx.add_to_document( + r"""\boldmath +""" +) +brushscriptxpx.tex_compiler = "xelatex" +brushscriptxpx.output_format = ".xdv" + + +# URW Avant Garde (Symbol Greek) +urwagsg = _new_ams_template() +urwagsg.description = "URW Avant Garde (Symbol Greek)" +urwagsg.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage{avant} +\renewcommand{\familydefault}{\sfdefault} +\usepackage[symbolgreek,defaultmathsizes]{mathastext} +""" +) + + +# Times with Fourier (Italic) +italictimesf = _new_ams_template() +italictimesf.description = "Times with Fourier (Italic)" +italictimesf.add_to_preamble( + r""" +\usepackage{fourier} +\renewcommand{\rmdefault}{ptm} +\usepackage[italic,defaultmathsizes,noasterisk]{mathastext} +""" +) + + +# Helvetica with Fourier (Italic) +italichelveticaf = _new_ams_template() +italichelveticaf.description = "Helvetica with Fourier (Italic)" +italichelveticaf.add_to_preamble( + r""" +\usepackage[T1]{fontenc} +\usepackage[scaled]{helvet} +\usepackage{fourier} +\renewcommand{\rmdefault}{phv} +\usepackage[italic,defaultmathsizes,noasterisk]{mathastext} +""" +) + + +class TexFontTemplates(object): + """ + A collection of TeX templates for the fonts described at http://jf.burnol.free.fr/showcase.html + + These templates are specifically designed to allow you to typeset formulae and mathematics using + different fonts. They are based on the mathastext LaTeX package. + + Examples + --------- + Normal usage as a value for the keyword argument tex_template of Tex() and MathTex() mobjects:: + + ``Tex("My TeX code", tex_template=TexFontTemplates.comic_sans)`` + + Notes + ------ + Many of these templates require that specific fonts + are installed on your local machine. + For example, choosing the template TexFontTemplates.comic_sans will + not compile if the Comic Sans Microsoft font is not installed. + + To experiment, try to render the TexFontTemplateLibrary example scene: + ``manim path/to/manim/example_scenes/advanced_tex_fonts.py TexFontTemplateLibrary -p -ql`` + """ + + american_typewriter = americantypewriter + """American Typewriter""" + antykwa = aptxgm + """Antykwa Półtawskiego (TX Fonts for Greek and math symbols)""" + apple_chancery = applechancery + """Apple Chancery""" + auriocus_kalligraphicus = aksg + """Auriocus Kalligraphicus (Symbol Greek)""" + baskervald_adf_fourier = baskervaldadff + """Baskervald ADF with Fourier""" + baskerville_it = italicbaskerville + """Baskerville (Italic)""" + biolinum = biolinum + """Biolinum""" + brushscriptx = brushscriptxpx + """BrushScriptX-Italic (PX math and Greek)""" + chalkboard_se = chalkboardse + """Chalkboard SE""" + chalkduster = chalkduster + """Chalkduster""" + comfortaa = comfortaa + """Comfortaa""" + comic_sans = comicsansms + """Comic Sans MS""" + droid_sans = droidsans + """Droid Sans""" + droid_sans_it = italicdroidsans + """Droid Sans (Italic)""" + droid_serif = droidserif + """Droid Serif""" + droid_serif_px_it = italicdroidserifpx + """Droid Serif (PX math symbols) (Italic)""" + ecf_augie = ecfaugieeg + """ECF Augie (Euler Greek)""" + ecf_jd = ecfjdtx + """ECF JD (with TX fonts)""" + ecf_skeetch = ecfscmg + """ECF Skeetch (CM Greek)""" + ecf_tall_paul = ecftallpaul + """ECF Tall Paul (with Symbol font)""" + ecf_webster = ecfwebstertx + """ECF Webster (with TX fonts)""" + electrum_adf = electrumadfcm + """Electrum ADF (CM Greek)""" + epigrafica = epigrafica + """ Epigrafica """ + fourier_utopia = fufug + """Fourier Utopia (Fourier upright Greek)""" + french_cursive = fceg + """French Cursive (Euler Greek)""" + gfs_bodoni = gfsbodoni + """GFS Bodoni""" + gfs_didot = italicgfsdidot + """GFS Didot (Italic)""" + gfs_neoHellenic = gfsneohellenic + """GFS NeoHellenic""" + gnu_freesans_tx = gnufstx + """GNU FreeSerif (and TX fonts symbols)""" + gnu_freeserif_freesans = gnufsfs + """GNU FreeSerif and FreeSans""" + helvetica_fourier_it = italichelveticaf + """Helvetica with Fourier (Italic)""" + latin_modern_tw_it = italiclmtpcm + """Latin Modern Typewriter Proportional (CM Greek) (Italic)""" + latin_modern_tw = lmtp + """Latin Modern Typewriter Proportional""" + libertine = libertine + """Libertine""" + libris_adf_fourier = librisadff + """Libris ADF with Fourier""" + minion_pro_myriad_pro = mpmptx + """Minion Pro and Myriad Pro (and TX fonts symbols)""" + minion_pro_tx = mptx + """Minion Pro (and TX fonts symbols)""" + new_century_schoolbook = ncssg + """New Century Schoolbook (Symbol Greek)""" + new_century_schoolbook_px = ncssgpxm + """New Century Schoolbook (Symbol Greek, PX math symbols)""" + noteworthy_light = noteworthylight + """Noteworthy Light""" + palatino = palatinosg + """Palatino (Symbol Greek)""" + papyrus = papyrus + """Papyrus""" + romande_adf_fourier_it = italicromandeadff + """Romande ADF with Fourier (Italic)""" + slitex = slitexeg + """SliTeX (Euler Greek)""" + times_fourier_it = italictimesf + """Times with Fourier (Italic)""" + urw_avant_garde = urwagsg + """URW Avant Garde (Symbol Greek)""" + urw_zapf_chancery = urwzccmg + """URW Zapf Chancery (CM Greek)""" + venturis_adf_fourier_it = italicvanturisadff + """Venturis ADF with Fourier (Italic)""" + verdana_it = italicverdana + """Verdana (Italic)""" + vollkorn_fourier_it = italicvollkornf + """Vollkorn with Fourier (Italic)""" + vollkorn = vollkorntx + """Vollkorn (TX fonts for Greek and math symbols)""" + zapf_chancery = zapfchancery + """Zapf Chancery""" diff --git a/poetry.lock b/poetry.lock index bfa0fcc0f6..8bb25ecdac 100644 --- a/poetry.lock +++ b/poetry.lock @@ -137,7 +137,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "colorama" -version = "0.4.3" +version = "0.4.4" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -183,7 +183,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "grpcio" -version = "1.32.0" +version = "1.33.1" description = "HTTP/2-based RPC framework" category = "main" optional = false @@ -193,18 +193,18 @@ python-versions = "*" six = ">=1.5.2" [package.extras] -protobuf = ["grpcio-tools (>=1.32.0)"] +protobuf = ["grpcio-tools (>=1.33.1)"] [[package]] name = "grpcio-tools" -version = "1.32.0" +version = "1.33.1" description = "Protobuf code generator for gRPC" category = "main" optional = false python-versions = "*" [package.dependencies] -grpcio = ">=1.32.0" +grpcio = ">=1.33.1" protobuf = ">=3.5.0.post1,<4.0dev" [[package]] @@ -251,7 +251,7 @@ testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] [[package]] name = "iniconfig" -version = "1.0.1" +version = "1.1.1" description = "iniconfig: brain-dead simple config-ini parsing" category = "dev" optional = false @@ -259,7 +259,7 @@ python-versions = "*" [[package]] name = "isort" -version = "5.5.4" +version = "5.6.4" description = "A Python utility / library to sort Python imports." category = "dev" optional = false @@ -378,11 +378,11 @@ python-versions = "*" [[package]] name = "pillow" -version = "7.2.0" +version = "8.0.1" description = "Python Imaging Library (Fork)" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [[package]] name = "pluggy" @@ -526,7 +526,7 @@ sphinx = ">=1.3.1" [[package]] name = "regex" -version = "2020.9.27" +version = "2020.10.23" description = "Alternative regular expression module, to replace re." category = "dev" optional = false @@ -552,7 +552,7 @@ socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] [[package]] name = "rich" -version = "8.0.0" +version = "6.2.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" category = "main" optional = false @@ -570,7 +570,7 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] [[package]] name = "scipy" -version = "1.5.2" +version = "1.5.3" description = "SciPy: Scientific Library for Python" category = "main" optional = false @@ -707,7 +707,7 @@ python-versions = "*" [[package]] name = "tqdm" -version = "4.50.1" +version = "4.50.2" description = "Fast, Extensible Progress Meter" category = "main" optional = false @@ -734,7 +734,7 @@ python-versions = "*" [[package]] name = "urllib3" -version = "1.25.10" +version = "1.25.11" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "dev" optional = false @@ -742,7 +742,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] brotli = ["brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] [[package]] @@ -769,7 +769,7 @@ python-versions = "*" [[package]] name = "zipp" -version = "3.3.0" +version = "3.3.2" description = "Backport of pathlib-compatible object wrapper for zip files" category = "dev" optional = false @@ -782,7 +782,7 @@ testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pyt [metadata] lock-version = "1.1" python-versions = "^3.6" -content-hash = "19fad3a14d174f8365b3941c9d1fc44037855d5eaabff297313d65bbea223c38" +content-hash = "b0cb1de3aec59c3c45c9d59efcd249f9c003e455e3bb13eb8eed47f673bce0cb" [metadata.files] alabaster = [ @@ -866,8 +866,8 @@ click = [ {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, ] colorama = [ - {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, - {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] colour = [ {file = "colour-0.1.5-py2.py3-none-any.whl", hash = "sha256:33f6db9d564fadc16e59921a56999b79571160ce09916303d35346dddc17978c"}, @@ -886,86 +886,96 @@ docutils = [ {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"}, ] grpcio = [ - {file = "grpcio-1.32.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3afb058b6929eba07dba9ae6c5b555aa1d88cb140187d78cc510bd72d0329f28"}, - {file = "grpcio-1.32.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:a8004b34f600a8a51785e46859cd88f3386ef67cccd1cfc7598e3d317608c643"}, - {file = "grpcio-1.32.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:e6786f6f7be0937614577edcab886ddce91b7c1ea972a07ef9972e9f9ecbbb78"}, - {file = "grpcio-1.32.0-cp27-cp27m-win32.whl", hash = "sha256:e467af6bb8f5843f5a441e124b43474715cfb3981264e7cd227343e826dcc3ce"}, - {file = "grpcio-1.32.0-cp27-cp27m-win_amd64.whl", hash = "sha256:1376a60f9bfce781b39973f100b5f67e657b5be479f2fd8a7d2a408fc61c085c"}, - {file = "grpcio-1.32.0-cp27-cp27mu-linux_armv7l.whl", hash = "sha256:ce617e1c4a39131f8527964ac9e700eb199484937d7a0b3e52655a3ba50d5fb9"}, - {file = "grpcio-1.32.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:99bac0e2c820bf446662365df65841f0c2a55b0e2c419db86eaf5d162ddae73e"}, - {file = "grpcio-1.32.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6d869a3e8e62562b48214de95e9231c97c53caa7172802236cd5d60140d7cddd"}, - {file = "grpcio-1.32.0-cp35-cp35m-linux_armv7l.whl", hash = "sha256:182c64ade34c341398bf71ec0975613970feb175090760ab4f51d1e9a5424f05"}, - {file = "grpcio-1.32.0-cp35-cp35m-macosx_10_7_intel.whl", hash = "sha256:9c0d8f2346c842088b8cbe3e14985b36e5191a34bf79279ba321a4bf69bd88b7"}, - {file = "grpcio-1.32.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:4775bc35af9cd3b5033700388deac2e1d611fa45f4a8dcb93667d94cb25f0444"}, - {file = "grpcio-1.32.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:be98e3198ec765d0a1e27f69d760f69374ded8a33b953dcfe790127731f7e690"}, - {file = "grpcio-1.32.0-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:378fe80ec5d9353548eb2a8a43ea03747a80f2e387c4f177f2b3ff6c7d898753"}, - {file = "grpcio-1.32.0-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:f7d508691301027033215d3662dab7e178f54d5cca2329f26a71ae175d94b83f"}, - {file = "grpcio-1.32.0-cp35-cp35m-win32.whl", hash = "sha256:25959a651420dd4a6fd7d3e8dee53f4f5fd8c56336a64963428e78b276389a59"}, - {file = "grpcio-1.32.0-cp35-cp35m-win_amd64.whl", hash = "sha256:ac7028d363d2395f3d755166d0161556a3f99500a5b44890421ccfaaf2aaeb08"}, - {file = "grpcio-1.32.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:c31e8a219650ddae1cd02f5a169e1bffe66a429a8255d3ab29e9363c73003b62"}, - {file = "grpcio-1.32.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e28e4c0d4231beda5dee94808e3a224d85cbaba3cfad05f2192e6f4ec5318053"}, - {file = "grpcio-1.32.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f03dfefa9075dd1c6c5cc27b1285c521434643b09338d8b29e1d6a27b386aa82"}, - {file = "grpcio-1.32.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:c4966d746dccb639ef93f13560acbe9630681c07f2b320b7ec03fe2c8f0a1f15"}, - {file = "grpcio-1.32.0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:ec10d5f680b8e95a06f1367d73c5ddcc0ed04a3f38d6e4c9346988fb0cea2ffa"}, - {file = "grpcio-1.32.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:28677f057e2ef11501860a7bc15de12091d40b95dd0fddab3c37ff1542e6b216"}, - {file = "grpcio-1.32.0-cp36-cp36m-win32.whl", hash = "sha256:0f3f09269ffd3fded430cd89ba2397eabbf7e47be93983b25c187cdfebb302a7"}, - {file = "grpcio-1.32.0-cp36-cp36m-win_amd64.whl", hash = "sha256:4396b1d0f388ae875eaf6dc05cdcb612c950fd9355bc34d38b90aaa0665a0d4b"}, - {file = "grpcio-1.32.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1ada89326a364a299527c7962e5c362dbae58c67b283fe8383c4d952b26565d5"}, - {file = "grpcio-1.32.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:1d384a61f96a1fc6d5d3e0b62b0a859abc8d4c3f6d16daba51ebf253a3e7df5d"}, - {file = "grpcio-1.32.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:e811ce5c387256609d56559d944a974cc6934a8eea8c76e7c86ec388dc06192d"}, - {file = "grpcio-1.32.0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:07b430fa68e5eecd78e2ad529ab80f6a234b55fc1b675fe47335ccbf64c6c6c8"}, - {file = "grpcio-1.32.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:0e3edd8cdb71809d2455b9dbff66b4dd3d36c321e64bfa047da5afdfb0db332b"}, - {file = "grpcio-1.32.0-cp37-cp37m-win32.whl", hash = "sha256:6f7947dad606c509d067e5b91a92b250aa0530162ab99e4737090f6b17eb12c4"}, - {file = "grpcio-1.32.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7cda998b7b551503beefc38db9be18c878cfb1596e1418647687575cdefa9273"}, - {file = "grpcio-1.32.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c58825a3d8634cd634d8f869afddd4d5742bdb59d594aea4cea17b8f39269a55"}, - {file = "grpcio-1.32.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:ef9bd7fdfc0a063b4ed0efcab7906df5cae9bbcf79d05c583daa2eba56752b00"}, - {file = "grpcio-1.32.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:1ce6f5ff4f4a548c502d5237a071fa617115df58ea4b7bd41dac77c1ab126e9c"}, - {file = "grpcio-1.32.0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:f12900be4c3fd2145ba94ab0d80b7c3d71c9e6414cfee2f31b1c20188b5c281f"}, - {file = "grpcio-1.32.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:f53f2dfc8ff9a58a993e414a016c8b21af333955ae83960454ad91798d467c7b"}, - {file = "grpcio-1.32.0-cp38-cp38-win32.whl", hash = "sha256:5bddf9d53c8df70061916c3bfd2f468ccf26c348bb0fb6211531d895ed5e4c72"}, - {file = "grpcio-1.32.0-cp38-cp38-win_amd64.whl", hash = "sha256:14c0f017bfebbc18139551111ac58ecbde11f4bc375b73a53af38927d60308b6"}, - {file = "grpcio-1.32.0.tar.gz", hash = "sha256:01d3046fe980be25796d368f8fc5ff34b7cf5e1444f3789a017a7fe794465639"}, + {file = "grpcio-1.33.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1205bbe8bb41705dec20dc77c51205d05805d785ddae64dbbbbcc8063b7f1550"}, + {file = "grpcio-1.33.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:04712ec521907b814445f915a834e090352173ede45c6063dfafa64a1e1eb86f"}, + {file = "grpcio-1.33.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:b20f555557c12f4c7c32f298b8b8202da49902ce008e4c0bdb0a83f8de2355c9"}, + {file = "grpcio-1.33.1-cp27-cp27m-win32.whl", hash = "sha256:1664a3dbd34ab91172149526fb8ba18f626edb72448397280ec6f4d30dc34be4"}, + {file = "grpcio-1.33.1-cp27-cp27m-win_amd64.whl", hash = "sha256:ffc6e264399ac5e48684f33213b086ce7a2163928a41518eca99e1d88c2069b0"}, + {file = "grpcio-1.33.1-cp27-cp27mu-linux_armv7l.whl", hash = "sha256:d9ac1cf1633ccc561d7d97ee0af3fbe262a6573c08a8f88cfea58caef1c73505"}, + {file = "grpcio-1.33.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ccf967e1e3d1f62cd63feeecca567511dd321b5b65abfb6c880264295a0e2df7"}, + {file = "grpcio-1.33.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d3d6f614b5e9c58afc45fbe0383bab206392f2901ebb7fe0027d4abadad7e4e6"}, + {file = "grpcio-1.33.1-cp35-cp35m-linux_armv7l.whl", hash = "sha256:6ffe23e3f845ae7058b32f58b252bc367865d44a8c42838e16b5fe5727b174d4"}, + {file = "grpcio-1.33.1-cp35-cp35m-macosx_10_7_intel.whl", hash = "sha256:e2555101f42dda5ca43ccef4a397ba9596a5f7c40dcfed6a81984374c6d60411"}, + {file = "grpcio-1.33.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:f34df047f72ec675b61316e9d56904d069f5f9c4172bfee48e3f40d5c8e07df1"}, + {file = "grpcio-1.33.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b380f590f28a51f31eaa1c6991b93f5af39158956a0e6bb7ab6fdd3e830055b6"}, + {file = "grpcio-1.33.1-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:60765d070dadfce363c74175ff96dbdf5b15f8bcf999bedafc972b938899fd7a"}, + {file = "grpcio-1.33.1-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:07ed96a6c320505456be2e95edcdcec3e484beff9edaa46bdb6f9e5b88eebc2b"}, + {file = "grpcio-1.33.1-cp35-cp35m-win32.whl", hash = "sha256:c7ffff3d6c935bf400d329ad33e2326e4917885f1faa3e985eb6bcf43bea88bc"}, + {file = "grpcio-1.33.1-cp35-cp35m-win_amd64.whl", hash = "sha256:8872620c946733dbc6336243c98440ef4d1b2956578b682c2f67543aef98e815"}, + {file = "grpcio-1.33.1-cp36-cp36m-linux_armv7l.whl", hash = "sha256:57fb11dcf7d801ccae146f92a07f70545e8f0042354b856ccb9085f39c15564f"}, + {file = "grpcio-1.33.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:62d2dbc5ab27fe7a33b30ab0395c1c65bf1033cca17e645279420094c99327a1"}, + {file = "grpcio-1.33.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:c9dd598f8b96e86f99628fbd615cbab97328557a77f06ad8cd720bc8a2125a8b"}, + {file = "grpcio-1.33.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:774678e29321fc76bbe01d25e8778fbe96fd2d9fbe774c24a122891b34f53918"}, + {file = "grpcio-1.33.1-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:254a42e13d945c880a8d35a63c646227e691b7c085e433a505fbbaea362bfe1e"}, + {file = "grpcio-1.33.1-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:f8816e38fbddd31216683a283b48294d7eabd4bf1e26f8cc0cb7bed896f44f30"}, + {file = "grpcio-1.33.1-cp36-cp36m-win32.whl", hash = "sha256:21c235f7f8f3a1fb6db387ffc9ceef38bd4b3f5185b4b6b43065a57fd1fcda20"}, + {file = "grpcio-1.33.1-cp36-cp36m-win_amd64.whl", hash = "sha256:fb7e9029ec99568519f9a13a9da4e5a83020197ffbfb23a28fe4e58a2c3ae11c"}, + {file = "grpcio-1.33.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d41e2d75f836a0e0e637a7c383d668602063ec655de8bf4b3167b3d1fddabf41"}, + {file = "grpcio-1.33.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:0222ceec7e8dbddd18c6b027214fb3d55b78a823337f95730d4e157b733c5766"}, + {file = "grpcio-1.33.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:143028a0421ac0af976a08fbc36de09e14cbdd74d4dc319f914e3511b737c659"}, + {file = "grpcio-1.33.1-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:e699ddfd287230b8efa6aca3932f7303e587025bdd4122ccbca9134857cca8a2"}, + {file = "grpcio-1.33.1-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:b9e672396fef071ecd4b0ffca59c05d668ddce19a44ef6c253f7d88bbe2ed246"}, + {file = "grpcio-1.33.1-cp37-cp37m-win32.whl", hash = "sha256:6a45081ece2279678f104e40a3683772fc1a917aac5c4352bd0769bd390470e5"}, + {file = "grpcio-1.33.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ec7ded77c8644a791fa09ad4d20b258b4b5aff1e4cc62e15e6c4b3a4e19eb898"}, + {file = "grpcio-1.33.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a48518e831573c7592064fb67aab61b33c279c944da2632e5922badb422ce175"}, + {file = "grpcio-1.33.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:ef89d99d5fbdd453e52b4193d5cf74f773fafd682dfd87b4fa297dbf20feff50"}, + {file = "grpcio-1.33.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ccefa3fc8a1fbed1beac7de64e6b28fa16c4fd224fad90213f9293dcb3ff1c0e"}, + {file = "grpcio-1.33.1-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:a498effc32dd57dfde8d75b266d6656ab2bc0b20188ef3422f060244442c4b39"}, + {file = "grpcio-1.33.1-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:e88210253bda4c92c22d74d122f43e53e204211b22dc5567367f40ce0197e378"}, + {file = "grpcio-1.33.1-cp38-cp38-win32.whl", hash = "sha256:21077fc89374b3c25377010ca7ddde6287007a6f0a1c515887f43d5ad84dc431"}, + {file = "grpcio-1.33.1-cp38-cp38-win_amd64.whl", hash = "sha256:47ccf4b6b3ae4fd192500a78af7f191f1c88ee7493744a75657b970b4b17e678"}, + {file = "grpcio-1.33.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:976f30637bb89b3ca714a3a762c825ef7c4bb38c6b43d7425c02e620ba47ef82"}, + {file = "grpcio-1.33.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7e0029ec181c4d3ca76217f8c8b686b96a583d74b893ac86b514f6c37a74889b"}, + {file = "grpcio-1.33.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:5c232df1cea26f53b763d1fc2d28ddef209de2a7fb20efc8d6a19ea47ac61dbb"}, + {file = "grpcio-1.33.1-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:66c1850ddd8e032655d947d18b56826c942c002e5e9a50b659389cbbb9d557df"}, + {file = "grpcio-1.33.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:f2c63017125fbffd70f674fc9988290578c836af7e6bb44f7284ff196af207c9"}, + {file = "grpcio-1.33.1.tar.gz", hash = "sha256:f19782ec5104599382a0f73f2dfea465d0e65f6818bb3c49ca672b97034c64c3"}, ] grpcio-tools = [ - {file = "grpcio-tools-1.32.0.tar.gz", hash = "sha256:28547272c51e1d2d343685b9f531e85bb90ad7bd93e726ba646b5627173cbc47"}, - {file = "grpcio_tools-1.32.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b6165dc7d424c3c58a54e9e47eacc7cc1513cd09c7c71ff5323e74ead5bb863f"}, - {file = "grpcio_tools-1.32.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:a7432b84d6f2f6260d5461eb2a8904db8cf24b663e0a1236375098c8e15c289c"}, - {file = "grpcio_tools-1.32.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4f61edfb0c07689a2835f15f4a25a781f058866cb4fea0bea391ae6deb74325f"}, - {file = "grpcio_tools-1.32.0-cp27-cp27m-win32.whl", hash = "sha256:a3524be59d4e6f8b089f7eaa128bc83e2375aac973f1bf0b568cd1c04c4df56e"}, - {file = "grpcio_tools-1.32.0-cp27-cp27m-win_amd64.whl", hash = "sha256:b31e7e909ba9efd8a08eb45665bf2f8326726da288d9e33555473e6b20596dbd"}, - {file = "grpcio_tools-1.32.0-cp27-cp27mu-linux_armv7l.whl", hash = "sha256:4e04d6a7c48adbdca64e9b67cc75e8294b3b37b1284dd2819183e38a4207aa39"}, - {file = "grpcio_tools-1.32.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:37acc75ec1dc836772496ef77170fab585e2517abdf1330c29e682eb50a6ce86"}, - {file = "grpcio_tools-1.32.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7d5be0d06bf830efbf1867db7b01720e54a136454410270e896441ec56baba00"}, - {file = "grpcio_tools-1.32.0-cp35-cp35m-linux_armv7l.whl", hash = "sha256:6e26e8d0ef73c04dc1118513c06ff56bce36672c8e28410ae4f938c22002ba00"}, - {file = "grpcio_tools-1.32.0-cp35-cp35m-macosx_10_9_intel.whl", hash = "sha256:3971dee0cf57dc3813f6f40724161341ec3b31137b026ae8d4db30c83afeb2a1"}, - {file = "grpcio_tools-1.32.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:83414dd919b692d92876db787b6fda709c226243c9bdb71b5025297a127f3be4"}, - {file = "grpcio_tools-1.32.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:9b5beb49002bb1f1c0641b55ddc2d1d92c7844fb42348e874146bf7667b6ca20"}, - {file = "grpcio_tools-1.32.0-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:7a18d6375efe075cc274fdfe004bee4530319a2dbb044eb7eb157c313fe88c97"}, - {file = "grpcio_tools-1.32.0-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:8147085f0a044ddc27c870feb8e82a25685f3fdf09184dba0f63fed720f12e93"}, - {file = "grpcio_tools-1.32.0-cp35-cp35m-win32.whl", hash = "sha256:e2a37e716ef6b5e81c44648648aae258b67b9ef19e0a472ec4080f5e384be386"}, - {file = "grpcio_tools-1.32.0-cp35-cp35m-win_amd64.whl", hash = "sha256:130c248d0d94473f3eb80d86bdae35a39eb20ab98fde6d227e7f7e053ccbba88"}, - {file = "grpcio_tools-1.32.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:11228fb5343c197e1f4376a966f6845ea270c794ec925260b8a27f6df5d90d04"}, - {file = "grpcio_tools-1.32.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:246caf8cdea97ff3710a810c55c9400e3aa7af1a5464a667d62184e38a58a031"}, - {file = "grpcio_tools-1.32.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:6aa6dd1d7e746c41803a209565d23e6027b0a5dd9b59596da37f99257cc58e65"}, - {file = "grpcio_tools-1.32.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:541a6b992aa417a6305c965bb6896aa1a1ca37d00a82d5438074b18db6a37aad"}, - {file = "grpcio_tools-1.32.0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:e83146ef8f17e3a35fe77a438794f0a4a50ea11085194bfea1b419c1b342f7b1"}, - {file = "grpcio_tools-1.32.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:71c451240e66245125e504abee5acc7ab30da099d5c17596d43ecc66e6034e20"}, - {file = "grpcio_tools-1.32.0-cp36-cp36m-win32.whl", hash = "sha256:6155ed6fed3c9a41fd03156c31adb5012c2399992c929987d3fa8ff1cd3c7cd8"}, - {file = "grpcio_tools-1.32.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a137b6079c96f11f0854a4793910f76aa4a62283947311b6e5131369fa226b48"}, - {file = "grpcio_tools-1.32.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f5f381943081792d82fe34c5a649d98a6b91741c6d62cbca8914943b8d1a4e8b"}, - {file = "grpcio_tools-1.32.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:adeae62f3bd1c6839e3822620f7650d30adb7398170e3a0b45a0059f9fe631c8"}, - {file = "grpcio_tools-1.32.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:bcc62cb4a3c9a39fb9e349124018e7d7edf0f627592561410e28b590767b831f"}, - {file = "grpcio_tools-1.32.0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:d11f432ed6fde059b33c514b64fcbf4527f56e03ff94f52f95121547c6945825"}, - {file = "grpcio_tools-1.32.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:708077380f458ef831e7da67f574abfb2fc6b6a24225c5976d92809b8930254c"}, - {file = "grpcio_tools-1.32.0-cp37-cp37m-win32.whl", hash = "sha256:de8ca90742bd41a19c1067fba6ffa13befd3ddb505d67eb297d6a418a5937a25"}, - {file = "grpcio_tools-1.32.0-cp37-cp37m-win_amd64.whl", hash = "sha256:632bba5853e955072392aac42fbca16daf65adfc0ec094fa840afbb83c78bee8"}, - {file = "grpcio_tools-1.32.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2da2a4b2209156d0f88f91bd5d4650a9ed830acb6f685881a26d67d3f671361"}, - {file = "grpcio_tools-1.32.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d3d01ebc1526cc9cdc5e29d2196bae43d56d8ec545dd30fead8b8b3e0b126808"}, - {file = "grpcio_tools-1.32.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:fd059d37d9537fa1a89b1139f8cbed7530a5f81c8577560d3f7710fcec95efde"}, - {file = "grpcio_tools-1.32.0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:524f0460a49a3248d1cb462d0904e783a75bb3cecdcaea520c3688c8bccd9f2f"}, - {file = "grpcio_tools-1.32.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:6327f2c6acca4eac1d5a8e1ee92282682b83069d53199ff8ce18906e912086ed"}, - {file = "grpcio_tools-1.32.0-cp38-cp38-win32.whl", hash = "sha256:07c1da5f1dbd4db664d416f68db6a92d5c88b4073ec6be41fcc7aa4d632f60a9"}, - {file = "grpcio_tools-1.32.0-cp38-cp38-win_amd64.whl", hash = "sha256:9b92f998ed1d01925160e47e9546c742aa0de49009f8fa3bb79420252d8a888d"}, + {file = "grpcio-tools-1.33.1.tar.gz", hash = "sha256:fc56027931694be7a2ea45719ef7fed911e2d1dc24ba69d98a418daa78b35467"}, + {file = "grpcio_tools-1.33.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b417f2b4041f4805d40d57413654f0302db2cdda1ac6a5745bd0811a8589899"}, + {file = "grpcio_tools-1.33.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c484ef6c1416edea005dc9b9857c5d5f3ab94f6a54291cc6521d7316a3a4327e"}, + {file = "grpcio_tools-1.33.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:b63131d5a84a7d11d85a426025328ce518575f78997d0285c9e8f1507337bb4a"}, + {file = "grpcio_tools-1.33.1-cp27-cp27m-win32.whl", hash = "sha256:7211f8b31a14974e75657ea5c968ced90d5952505f6cc7af2324477e0c2247c2"}, + {file = "grpcio_tools-1.33.1-cp27-cp27m-win_amd64.whl", hash = "sha256:18d985a388b8c1598177dbc36865a040e9c77f2d47b450afa2e92f3e63bca3b0"}, + {file = "grpcio_tools-1.33.1-cp27-cp27mu-linux_armv7l.whl", hash = "sha256:c1ad897aa0e3894d2d2e96e7d8a15c9d1b5ac38742a618e0dd38771d89f89ee5"}, + {file = "grpcio_tools-1.33.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2b207e4f013ec1d3afb827de0f319068c916642d41fb66afa92d9144511be836"}, + {file = "grpcio_tools-1.33.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:e66e44bad421cc7fa63025a9df2f75366f18bfbfe3c6666af7ac324782e23b14"}, + {file = "grpcio_tools-1.33.1-cp35-cp35m-linux_armv7l.whl", hash = "sha256:474994879abb84de7e13596337321343bfc0e3cc8109c052610a0ad36bb4b877"}, + {file = "grpcio_tools-1.33.1-cp35-cp35m-macosx_10_9_intel.whl", hash = "sha256:ffb083da3433056db909b5c2bbf901c438e1655643a758c4f12ff29358b47ea4"}, + {file = "grpcio_tools-1.33.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:f0a3f0e1c707f328a2eaa64a53675b03ca4f8a8772f6732ee6d81ce2e492d223"}, + {file = "grpcio_tools-1.33.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:9b304efa47b6d6cdf73a849270fd189a49100e456733cb7f6d6ab33ae3dbecac"}, + {file = "grpcio_tools-1.33.1-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:96f52b9e9451ecc922e3fa2e740483ad305e74892c26f15cb450e8e6753439fe"}, + {file = "grpcio_tools-1.33.1-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:ab37d582689f5d4c10e7fe70cd495fc591556292af71ee15c6f6321ba058e0b9"}, + {file = "grpcio_tools-1.33.1-cp35-cp35m-win32.whl", hash = "sha256:5621f8629a330eddaa239775171228b5cc71781501460ed75709d91e6af2cd77"}, + {file = "grpcio_tools-1.33.1-cp35-cp35m-win_amd64.whl", hash = "sha256:bbd143d5011dd1c16b158d951dc95b1799c8f86083ada05e2bbe0cec167edd20"}, + {file = "grpcio_tools-1.33.1-cp36-cp36m-linux_armv7l.whl", hash = "sha256:c4da9df7b67541869a01f582d1f37251ebb791622d9e141c4c1a67d66ea57a31"}, + {file = "grpcio_tools-1.33.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1c6a611e9ae6ad5d6aa895888c5dc19d970b77fc59f7596ec1d014e328597ce3"}, + {file = "grpcio_tools-1.33.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:db3d50b58465c705c3fce5bc9a309ae98e671effb2097eb8318fe9158b65117f"}, + {file = "grpcio_tools-1.33.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:5377a03a7690de5202b243ad9f8e2c4e9ca43f0a6b3226c0fd9754877a558ce9"}, + {file = "grpcio_tools-1.33.1-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:6dfa887a5e699ea27960013aeae08a9344a28ff95b62a7e43d8d1e7644962601"}, + {file = "grpcio_tools-1.33.1-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:5fc46d3b5edd33e78d3d8b549eaa9c0fd6737ff18ad8ac3441f843a97e7676a0"}, + {file = "grpcio_tools-1.33.1-cp36-cp36m-win32.whl", hash = "sha256:1e8110ea510da931160b76d647d54351664e80c027d35cca2bc44ce48ac4eef7"}, + {file = "grpcio_tools-1.33.1-cp36-cp36m-win_amd64.whl", hash = "sha256:41eb667bb65adc9d4ff28c83d63aee87a0f52568a5fce021767925137874a9c1"}, + {file = "grpcio_tools-1.33.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b86a31260b3cfc151d99ba33393984b65e0d1880e946ffb480577860dfe52621"}, + {file = "grpcio_tools-1.33.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:05e4375bde8a092d45d1675fead6e4a7a4c3d96da973187fe4860a75d5b78ff7"}, + {file = "grpcio_tools-1.33.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:cbad3696066d6e9d818af561dd4da211b3cc652193ba5c95d256c6f6c93e1369"}, + {file = "grpcio_tools-1.33.1-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:e569847271bdd1a7fdf72e2fdac794ab299d9eec90ceff430dce42cbc14fde24"}, + {file = "grpcio_tools-1.33.1-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:e8d908ff4ddec31a78052513b673aa5a236d7a3c0492feac43db8051d20ecb80"}, + {file = "grpcio_tools-1.33.1-cp37-cp37m-win32.whl", hash = "sha256:ba392f73a6da3f7c51f9abae18755ad001ca8ca125736363ccf96636a51a42b8"}, + {file = "grpcio_tools-1.33.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ad544798cd5d5b259a2619c2a94abe81bcf44ca8fd373190de36ad1c9170ea34"}, + {file = "grpcio_tools-1.33.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c770ca893e2d4794c841fa92877f765a33fb5fe17c8a61c6472b3d30b99eafc"}, + {file = "grpcio_tools-1.33.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:8addf3ff710d85a0976b5176b4b612e75ac06a42789d114ee9549540a5ddd29a"}, + {file = "grpcio_tools-1.33.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:27641f00db36b3f009d21dfb28e405163421a6aa89d30e199f02c6bd58b2616d"}, + {file = "grpcio_tools-1.33.1-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:94e369783afcaa382825632066239139256ec0f860cfb4cc5f329702a7e9c701"}, + {file = "grpcio_tools-1.33.1-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:1518d42e010953f6b80972d4fc669d529ecdcedf482c7dfbaf876dc6e5eff035"}, + {file = "grpcio_tools-1.33.1-cp38-cp38-win32.whl", hash = "sha256:6c1d86b547fd9383fe248541d35ae15ddc299e276a0d1312829a3530301b97a5"}, + {file = "grpcio_tools-1.33.1-cp38-cp38-win_amd64.whl", hash = "sha256:d47820eec86fc40492efa7a85a0869430bbad708be0e0fc0065adb4ebaec8733"}, + {file = "grpcio_tools-1.33.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5f8fb405b3f9bb320c69b88ee2ce7cbc006827bf85c479c8075a0b617b8aaf2a"}, + {file = "grpcio_tools-1.33.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4c22ab4db29e31c36ef5bd6ae988bd25fa4b858e440d98763132b7be1c35a4e9"}, + {file = "grpcio_tools-1.33.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:9ac16eac70d9a75241aa3b0c512d38f54a3018c6d08e6de60d4d162a6be63fbc"}, + {file = "grpcio_tools-1.33.1-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:76bc561d02f0d74b0a6487841c43b344ecf599b9f34621ebe6e89b52999f3028"}, + {file = "grpcio_tools-1.33.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:35f5da1180fdb633a866d2fc12ceebef1e17c3b055621bf94a74404af4c1824c"}, ] guzzle-sphinx-theme = [ {file = "guzzle_sphinx_theme-0.7.11.tar.gz", hash = "sha256:9b8c1639c343c02c3f3db7df660ddf6f533b5454ee92a5f7b02edaa573fed3e6"}, @@ -983,12 +993,12 @@ importlib-metadata = [ {file = "importlib_metadata-2.0.0.tar.gz", hash = "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da"}, ] iniconfig = [ - {file = "iniconfig-1.0.1-py3-none-any.whl", hash = "sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437"}, - {file = "iniconfig-1.0.1.tar.gz", hash = "sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69"}, + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] isort = [ - {file = "isort-5.5.4-py3-none-any.whl", hash = "sha256:36f0c6659b9000597e92618d05b72d4181104cf59472b1c6a039e3783f930c95"}, - {file = "isort-5.5.4.tar.gz", hash = "sha256:ba040c24d20aa302f78f4747df549573ae1eaf8e1084269199154da9c483f07f"}, + {file = "isort-5.6.4-py3-none-any.whl", hash = "sha256:dcab1d98b469a12a1a624ead220584391648790275560e1a43e54c5dceae65e7"}, + {file = "isort-5.6.4.tar.gz", hash = "sha256:dcaeec1b5f0eca77faea2a35ab790b4f3680ff75590bfcb7145986905aab2f58"}, ] jinja2 = [ {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, @@ -1106,34 +1116,34 @@ pathtools = [ {file = "pathtools-0.1.2.tar.gz", hash = "sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0"}, ] pillow = [ - {file = "Pillow-7.2.0-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:1ca594126d3c4def54babee699c055a913efb01e106c309fa6b04405d474d5ae"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c92302a33138409e8f1ad16731568c55c9053eee71bb05b6b744067e1b62380f"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:8dad18b69f710bf3a001d2bf3afab7c432785d94fcf819c16b5207b1cfd17d38"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:431b15cffbf949e89df2f7b48528be18b78bfa5177cb3036284a5508159492b5"}, - {file = "Pillow-7.2.0-cp35-cp35m-win32.whl", hash = "sha256:09d7f9e64289cb40c2c8d7ad674b2ed6105f55dc3b09aa8e4918e20a0311e7ad"}, - {file = "Pillow-7.2.0-cp35-cp35m-win_amd64.whl", hash = "sha256:0295442429645fa16d05bd567ef5cff178482439c9aad0411d3f0ce9b88b3a6f"}, - {file = "Pillow-7.2.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:ec29604081f10f16a7aea809ad42e27764188fc258b02259a03a8ff7ded3808d"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:612cfda94e9c8346f239bf1a4b082fdd5c8143cf82d685ba2dba76e7adeeb233"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0a80dd307a5d8440b0a08bd7b81617e04d870e40a3e46a32d9c246e54705e86f"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:06aba4169e78c439d528fdeb34762c3b61a70813527a2c57f0540541e9f433a8"}, - {file = "Pillow-7.2.0-cp36-cp36m-win32.whl", hash = "sha256:f7e30c27477dffc3e85c2463b3e649f751789e0f6c8456099eea7ddd53be4a8a"}, - {file = "Pillow-7.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:ffe538682dc19cc542ae7c3e504fdf54ca7f86fb8a135e59dd6bc8627eae6cce"}, - {file = "Pillow-7.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:94cf49723928eb6070a892cb39d6c156f7b5a2db4e8971cb958f7b6b104fb4c4"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6edb5446f44d901e8683ffb25ebdfc26988ee813da3bf91e12252b57ac163727"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:52125833b070791fcb5710fabc640fc1df07d087fc0c0f02d3661f76c23c5b8b"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:9ad7f865eebde135d526bb3163d0b23ffff365cf87e767c649550964ad72785d"}, - {file = "Pillow-7.2.0-cp37-cp37m-win32.whl", hash = "sha256:c79f9c5fb846285f943aafeafda3358992d64f0ef58566e23484132ecd8d7d63"}, - {file = "Pillow-7.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d350f0f2c2421e65fbc62690f26b59b0bcda1b614beb318c81e38647e0f673a1"}, - {file = "Pillow-7.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:6d7741e65835716ceea0fd13a7d0192961212fd59e741a46bbed7a473c634ed6"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:edf31f1150778abd4322444c393ab9c7bd2af271dd4dafb4208fb613b1f3cdc9"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8"}, - {file = "Pillow-7.2.0-cp38-cp38-win32.whl", hash = "sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f"}, - {file = "Pillow-7.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6"}, - {file = "Pillow-7.2.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:9c87ef410a58dd54b92424ffd7e28fd2ec65d2f7fc02b76f5e9b2067e355ebf6"}, - {file = "Pillow-7.2.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:e901964262a56d9ea3c2693df68bc9860b8bdda2b04768821e4c44ae797de117"}, - {file = "Pillow-7.2.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d"}, - {file = "Pillow-7.2.0.tar.gz", hash = "sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626"}, + {file = "Pillow-8.0.1-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:b63d4ff734263ae4ce6593798bcfee6dbfb00523c82753a3a03cbc05555a9cc3"}, + {file = "Pillow-8.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5f9403af9c790cc18411ea398a6950ee2def2a830ad0cfe6dc9122e6d528b302"}, + {file = "Pillow-8.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:6b4a8fd632b4ebee28282a9fef4c341835a1aa8671e2770b6f89adc8e8c2703c"}, + {file = "Pillow-8.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:cc3ea6b23954da84dbee8025c616040d9aa5eaf34ea6895a0a762ee9d3e12e11"}, + {file = "Pillow-8.0.1-cp36-cp36m-win32.whl", hash = "sha256:d8a96747df78cda35980905bf26e72960cba6d355ace4780d4bdde3b217cdf1e"}, + {file = "Pillow-8.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7ba0ba61252ab23052e642abdb17fd08fdcfdbbf3b74c969a30c58ac1ade7cd3"}, + {file = "Pillow-8.0.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:795e91a60f291e75de2e20e6bdd67770f793c8605b553cb6e4387ce0cb302e09"}, + {file = "Pillow-8.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0a2e8d03787ec7ad71dc18aec9367c946ef8ef50e1e78c71f743bc3a770f9fae"}, + {file = "Pillow-8.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:006de60d7580d81f4a1a7e9f0173dc90a932e3905cc4d47ea909bc946302311a"}, + {file = "Pillow-8.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:bd7bf289e05470b1bc74889d1466d9ad4a56d201f24397557b6f65c24a6844b8"}, + {file = "Pillow-8.0.1-cp37-cp37m-win32.whl", hash = "sha256:95edb1ed513e68bddc2aee3de66ceaf743590bf16c023fb9977adc4be15bd3f0"}, + {file = "Pillow-8.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:e38d58d9138ef972fceb7aeec4be02e3f01d383723965bfcef14d174c8ccd039"}, + {file = "Pillow-8.0.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:d3d07c86d4efa1facdf32aa878bd508c0dc4f87c48125cc16b937baa4e5b5e11"}, + {file = "Pillow-8.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:fbd922f702582cb0d71ef94442bfca57624352622d75e3be7a1e7e9360b07e72"}, + {file = "Pillow-8.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:92c882b70a40c79de9f5294dc99390671e07fc0b0113d472cbea3fde15db1792"}, + {file = "Pillow-8.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7c9401e68730d6c4245b8e361d3d13e1035cbc94db86b49dc7da8bec235d0015"}, + {file = "Pillow-8.0.1-cp38-cp38-win32.whl", hash = "sha256:6c1aca8231625115104a06e4389fcd9ec88f0c9befbabd80dc206c35561be271"}, + {file = "Pillow-8.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:cc9ec588c6ef3a1325fa032ec14d97b7309db493782ea8c304666fb10c3bd9a7"}, + {file = "Pillow-8.0.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:eb472586374dc66b31e36e14720747595c2b265ae962987261f044e5cce644b5"}, + {file = "Pillow-8.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:0eeeae397e5a79dc088d8297a4c2c6f901f8fb30db47795113a4a605d0f1e5ce"}, + {file = "Pillow-8.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:81f812d8f5e8a09b246515fac141e9d10113229bc33ea073fec11403b016bcf3"}, + {file = "Pillow-8.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:895d54c0ddc78a478c80f9c438579ac15f3e27bf442c2a9aa74d41d0e4d12544"}, + {file = "Pillow-8.0.1-cp39-cp39-win32.whl", hash = "sha256:2fb113757a369a6cdb189f8df3226e995acfed0a8919a72416626af1a0a71140"}, + {file = "Pillow-8.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:59e903ca800c8cfd1ebe482349ec7c35687b95e98cefae213e271c8c7fffa021"}, + {file = "Pillow-8.0.1-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:5abd653a23c35d980b332bc0431d39663b1709d64142e3652890df4c9b6970f6"}, + {file = "Pillow-8.0.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:4b0ef2470c4979e345e4e0cc1bbac65fda11d0d7b789dbac035e4c6ce3f98adb"}, + {file = "Pillow-8.0.1-pp37-pypy37_pp73-win32.whl", hash = "sha256:8de332053707c80963b589b22f8e0229f1be1f3ca862a932c1bcd48dafb18dd8"}, + {file = "Pillow-8.0.1.tar.gz", hash = "sha256:11c5c6e9b02c9dac08af04f093eb5a2f84857df70a7d4a6a6ad461aca803fb9e"}, ] pluggy = [ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, @@ -1208,59 +1218,62 @@ recommonmark = [ {file = "recommonmark-0.6.0.tar.gz", hash = "sha256:29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb"}, ] regex = [ - {file = "regex-2020.9.27-cp27-cp27m-win32.whl", hash = "sha256:d23a18037313714fb3bb5a94434d3151ee4300bae631894b1ac08111abeaa4a3"}, - {file = "regex-2020.9.27-cp27-cp27m-win_amd64.whl", hash = "sha256:84e9407db1b2eb368b7ecc283121b5e592c9aaedbe8c78b1a2f1102eb2e21d19"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5f18875ac23d9aa2f060838e8b79093e8bb2313dbaaa9f54c6d8e52a5df097be"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ae91972f8ac958039920ef6e8769277c084971a142ce2b660691793ae44aae6b"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:9a02d0ae31d35e1ec12a4ea4d4cca990800f66a917d0fb997b20fbc13f5321fc"}, - {file = "regex-2020.9.27-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:ebbe29186a3d9b0c591e71b7393f1ae08c83cb2d8e517d2a822b8f7ec99dfd8b"}, - {file = "regex-2020.9.27-cp36-cp36m-win32.whl", hash = "sha256:4707f3695b34335afdfb09be3802c87fa0bc27030471dbc082f815f23688bc63"}, - {file = "regex-2020.9.27-cp36-cp36m-win_amd64.whl", hash = "sha256:9bc13e0d20b97ffb07821aa3e113f9998e84994fe4d159ffa3d3a9d1b805043b"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f1b3afc574a3db3b25c89161059d857bd4909a1269b0b3cb3c904677c8c4a3f7"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5533a959a1748a5c042a6da71fe9267a908e21eded7a4f373efd23a2cbdb0ecc"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:1fe0a41437bbd06063aa184c34804efa886bcc128222e9916310c92cd54c3b4c"}, - {file = "regex-2020.9.27-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:c570f6fa14b9c4c8a4924aaad354652366577b4f98213cf76305067144f7b100"}, - {file = "regex-2020.9.27-cp37-cp37m-win32.whl", hash = "sha256:eda4771e0ace7f67f58bc5b560e27fb20f32a148cbc993b0c3835970935c2707"}, - {file = "regex-2020.9.27-cp37-cp37m-win_amd64.whl", hash = "sha256:60b0e9e6dc45683e569ec37c55ac20c582973841927a85f2d8a7d20ee80216ab"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux1_i686.whl", hash = "sha256:088afc8c63e7bd187a3c70a94b9e50ab3f17e1d3f52a32750b5b77dbe99ef5ef"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eaf548d117b6737df379fdd53bdde4f08870e66d7ea653e230477f071f861121"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:41bb65f54bba392643557e617316d0d899ed5b4946dccee1cb6696152b29844b"}, - {file = "regex-2020.9.27-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:8d69cef61fa50c8133382e61fd97439de1ae623fe943578e477e76a9d9471637"}, - {file = "regex-2020.9.27-cp38-cp38-win32.whl", hash = "sha256:f2388013e68e750eaa16ccbea62d4130180c26abb1d8e5d584b9baf69672b30f"}, - {file = "regex-2020.9.27-cp38-cp38-win_amd64.whl", hash = "sha256:4318d56bccfe7d43e5addb272406ade7a2274da4b70eb15922a071c58ab0108c"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux1_i686.whl", hash = "sha256:84cada8effefe9a9f53f9b0d2ba9b7b6f5edf8d2155f9fdbe34616e06ececf81"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:816064fc915796ea1f26966163f6845de5af78923dfcecf6551e095f00983650"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:5d892a4f1c999834eaa3c32bc9e8b976c5825116cde553928c4c8e7e48ebda67"}, - {file = "regex-2020.9.27-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:c9443124c67b1515e4fe0bb0aa18df640965e1030f468a2a5dc2589b26d130ad"}, - {file = "regex-2020.9.27-cp39-cp39-win32.whl", hash = "sha256:49f23ebd5ac073765ecbcf046edc10d63dcab2f4ae2bce160982cb30df0c0302"}, - {file = "regex-2020.9.27-cp39-cp39-win_amd64.whl", hash = "sha256:3d20024a70b97b4f9546696cbf2fd30bae5f42229fbddf8661261b1eaff0deb7"}, - {file = "regex-2020.9.27.tar.gz", hash = "sha256:a6f32aea4260dfe0e55dc9733ea162ea38f0ea86aa7d0f77b15beac5bf7b369d"}, + {file = "regex-2020.10.23-cp27-cp27m-win32.whl", hash = "sha256:781906e45ef1d10a0ed9ec8ab83a09b5e0d742de70e627b20d61ccb1b1d3964d"}, + {file = "regex-2020.10.23-cp27-cp27m-win_amd64.whl", hash = "sha256:8cd0d587aaac74194ad3e68029124c06245acaeddaae14cb45844e5c9bebeea4"}, + {file = "regex-2020.10.23-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:af360e62a9790e0a96bc9ac845d87bfa0e4ee0ee68547ae8b5a9c1030517dbef"}, + {file = "regex-2020.10.23-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e21340c07090ddc8c16deebfd82eb9c9e1ec5e62f57bb86194a2595fd7b46e0"}, + {file = "regex-2020.10.23-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:e5f6aa56dda92472e9d6f7b1e6331f4e2d51a67caafff4d4c5121cadac03941e"}, + {file = "regex-2020.10.23-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:c30d8766a055c22e39dd7e1a4f98f6266169f2de05db737efe509c2fb9c8a3c8"}, + {file = "regex-2020.10.23-cp36-cp36m-win32.whl", hash = "sha256:1a065e7a6a1b4aa851a0efa1a2579eabc765246b8b3a5fd74000aaa3134b8b4e"}, + {file = "regex-2020.10.23-cp36-cp36m-win_amd64.whl", hash = "sha256:c95d514093b80e5309bdca5dd99e51bcf82c44043b57c34594d9d7556bd04d05"}, + {file = "regex-2020.10.23-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f4b1c65ee86bfbf7d0c3dfd90592a9e3d6e9ecd36c367c884094c050d4c35d04"}, + {file = "regex-2020.10.23-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d62205f00f461fe8b24ade07499454a3b7adf3def1225e258b994e2215fd15c5"}, + {file = "regex-2020.10.23-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:b706c70070eea03411b1761fff3a2675da28d042a1ab7d0863b3efe1faa125c9"}, + {file = "regex-2020.10.23-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d43cf21df524283daa80ecad551c306b7f52881c8d0fe4e3e76a96b626b6d8d8"}, + {file = "regex-2020.10.23-cp37-cp37m-win32.whl", hash = "sha256:570e916a44a361d4e85f355aacd90e9113319c78ce3c2d098d2ddf9631b34505"}, + {file = "regex-2020.10.23-cp37-cp37m-win_amd64.whl", hash = "sha256:1c447b0d108cddc69036b1b3910fac159f2b51fdeec7f13872e059b7bc932be1"}, + {file = "regex-2020.10.23-cp38-cp38-manylinux1_i686.whl", hash = "sha256:8469377a437dbc31e480993399fd1fd15fe26f382dc04c51c9cb73e42965cc06"}, + {file = "regex-2020.10.23-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:59d5c6302d22c16d59611a9fd53556554010db1d47e9df5df37be05007bebe75"}, + {file = "regex-2020.10.23-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:a973d5a7a324e2a5230ad7c43f5e1383cac51ef4903bf274936a5634b724b531"}, + {file = "regex-2020.10.23-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:97a023f97cddf00831ba04886d1596ef10f59b93df7f855856f037190936e868"}, + {file = "regex-2020.10.23-cp38-cp38-win32.whl", hash = "sha256:e289a857dca3b35d3615c3a6a438622e20d1bf0abcb82c57d866c8d0be3f44c4"}, + {file = "regex-2020.10.23-cp38-cp38-win_amd64.whl", hash = "sha256:0cb23ed0e327c18fb7eac61ebbb3180ebafed5b9b86ca2e15438201e5903b5dd"}, + {file = "regex-2020.10.23-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c53dc8ee3bb7b7e28ee9feb996a0c999137be6c1d3b02cb6b3c4cba4f9e5ed09"}, + {file = "regex-2020.10.23-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6a46eba253cedcbe8a6469f881f014f0a98819d99d341461630885139850e281"}, + {file = "regex-2020.10.23-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:240509721a663836b611fa13ca1843079fc52d0b91ef3f92d9bba8da12e768a0"}, + {file = "regex-2020.10.23-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f567df0601e9c7434958143aebea47a9c4b45434ea0ae0286a4ec19e9877169"}, + {file = "regex-2020.10.23-cp39-cp39-win32.whl", hash = "sha256:bfd7a9fddd11d116a58b62ee6c502fd24cfe22a4792261f258f886aa41c2a899"}, + {file = "regex-2020.10.23-cp39-cp39-win_amd64.whl", hash = "sha256:1a511470db3aa97432ac8c1bf014fcc6c9fbfd0f4b1313024d342549cf86bcd6"}, + {file = "regex-2020.10.23.tar.gz", hash = "sha256:2278453c6a76280b38855a263198961938108ea2333ee145c5168c36b8e2b376"}, ] requests = [ {file = "requests-2.24.0-py2.py3-none-any.whl", hash = "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"}, {file = "requests-2.24.0.tar.gz", hash = "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b"}, ] rich = [ - {file = "rich-8.0.0-py3-none-any.whl", hash = "sha256:3c5e4bb1e48c647bc75bc4ae7c125d399bec5b6ed2a319f0d447361635f02a9a"}, - {file = "rich-8.0.0.tar.gz", hash = "sha256:1b5023d2241e6552a24ddfe830a853fc8e53da4e6a6ed6c7105bb262593edf97"}, + {file = "rich-6.2.0-py3-none-any.whl", hash = "sha256:fa55d5d6ba9a0df1f1c95518891b57b13f1d45548a9a198a87b093fceee513ec"}, + {file = "rich-6.2.0.tar.gz", hash = "sha256:f99c877277906e1ff83b135c564920590ba31188f424dcdb5d1cae652a519b4b"}, ] scipy = [ - {file = "scipy-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cca9fce15109a36a0a9f9cfc64f870f1c140cb235ddf27fe0328e6afb44dfed0"}, - {file = "scipy-1.5.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1c7564a4810c1cd77fcdee7fa726d7d39d4e2695ad252d7c86c3ea9d85b7fb8f"}, - {file = "scipy-1.5.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:07e52b316b40a4f001667d1ad4eb5f2318738de34597bd91537851365b6c61f1"}, - {file = "scipy-1.5.2-cp36-cp36m-win32.whl", hash = "sha256:d56b10d8ed72ec1be76bf10508446df60954f08a41c2d40778bc29a3a9ad9bce"}, - {file = "scipy-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:8e28e74b97fc8d6aa0454989db3b5d36fc27e69cef39a7ee5eaf8174ca1123cb"}, - {file = "scipy-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6e86c873fe1335d88b7a4bfa09d021f27a9e753758fd75f3f92d714aa4093768"}, - {file = "scipy-1.5.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a0afbb967fd2c98efad5f4c24439a640d39463282040a88e8e928db647d8ac3d"}, - {file = "scipy-1.5.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:eecf40fa87eeda53e8e11d265ff2254729d04000cd40bae648e76ff268885d66"}, - {file = "scipy-1.5.2-cp37-cp37m-win32.whl", hash = "sha256:315aa2165aca31375f4e26c230188db192ed901761390be908c9b21d8b07df62"}, - {file = "scipy-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:ec5fe57e46828d034775b00cd625c4a7b5c7d2e354c3b258d820c6c72212a6ec"}, - {file = "scipy-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fc98f3eac993b9bfdd392e675dfe19850cc8c7246a8fd2b42443e506344be7d9"}, - {file = "scipy-1.5.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:a785409c0fa51764766840185a34f96a0a93527a0ff0230484d33a8ed085c8f8"}, - {file = "scipy-1.5.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0a0e9a4e58a4734c2eba917f834b25b7e3b6dc333901ce7784fd31aefbd37b2f"}, - {file = "scipy-1.5.2-cp38-cp38-win32.whl", hash = "sha256:dac09281a0eacd59974e24525a3bc90fa39b4e95177e638a31b14db60d3fa806"}, - {file = "scipy-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:92eb04041d371fea828858e4fff182453c25ae3eaa8782d9b6c32b25857d23bc"}, - {file = "scipy-1.5.2.tar.gz", hash = "sha256:066c513d90eb3fd7567a9e150828d39111ebd88d3e924cdfc9f8ce19ab6f90c9"}, + {file = "scipy-1.5.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f574558f1b774864516f3c3fe072ebc90a29186f49b720f60ed339294b7f32ac"}, + {file = "scipy-1.5.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:e527c9221b6494bcd06a17f9f16874406b32121385f9ab353b8a9545be458f0b"}, + {file = "scipy-1.5.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b9751b39c52a3fa59312bd2e1f40144ee26b51404db5d2f0d5259c511ff6f614"}, + {file = "scipy-1.5.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d5e3cc60868f396b78fc881d2c76460febccfe90f6d2f082b9952265c79a8788"}, + {file = "scipy-1.5.3-cp36-cp36m-win32.whl", hash = "sha256:1fee28b6641ecbff6e80fe7788e50f50c5576157d278fa40f36c851940eb0aff"}, + {file = "scipy-1.5.3-cp36-cp36m-win_amd64.whl", hash = "sha256:ffcbd331f1ffa82e22f1d408e93c37463c9a83088243158635baec61983aaacf"}, + {file = "scipy-1.5.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:07b083128beae040f1129bd8a82b01804f5e716a7fd2962c1053fa683433e4ab"}, + {file = "scipy-1.5.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e2602f79c85924e4486f684aa9bbab74afff90606100db88d0785a0088be7edb"}, + {file = "scipy-1.5.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:aebb69bcdec209d874fc4b0c7ac36f509d50418a431c1422465fa34c2c0143ea"}, + {file = "scipy-1.5.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:bc0e63daf43bf052aefbbd6c5424bc03f629d115ece828e87303a0bcc04a37e4"}, + {file = "scipy-1.5.3-cp37-cp37m-win32.whl", hash = "sha256:8cc5c39ed287a8b52a5509cd6680af078a40b0e010e2657eca01ffbfec929468"}, + {file = "scipy-1.5.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0edd67e8a00903aaf7a29c968555a2e27c5a69fea9d1dcfffda80614281a884f"}, + {file = "scipy-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:66ec29348444ed6e8a14c9adc2de65e74a8fc526dc2c770741725464488ede1f"}, + {file = "scipy-1.5.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:12fdcbfa56cac926a0a9364a30cbf4ad03c2c7b59f75b14234656a5e4fd52bf3"}, + {file = "scipy-1.5.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a1a13858b10d41beb0413c4378462b43eafef88a1948d286cb357eadc0aec024"}, + {file = "scipy-1.5.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:5163200ab14fd2b83aba8f0c4ddcc1fa982a43192867264ab0f4c8065fd10d17"}, + {file = "scipy-1.5.3-cp38-cp38-win32.whl", hash = "sha256:33e6a7439f43f37d4c1135bc95bcd490ffeac6ef4b374892c7005ce2c729cf4a"}, + {file = "scipy-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:a3db1fe7c6cb29ca02b14c9141151ebafd11e06ffb6da8ecd330eee5c8283a8a"}, + {file = "scipy-1.5.3.tar.gz", hash = "sha256:ddae76784574cc4c172f3d5edd7308be16078dd3b977e8746860c76c195fa707"}, ] six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, @@ -1303,8 +1316,8 @@ toml = [ {file = "toml-0.10.1.tar.gz", hash = "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f"}, ] tqdm = [ - {file = "tqdm-4.50.1-py2.py3-none-any.whl", hash = "sha256:5313148c57fcca7df562187903cf9cfa30fe1df2fe0641ea6ddb8ef9e841a137"}, - {file = "tqdm-4.50.1.tar.gz", hash = "sha256:b04bbbc52a7f1e3665eaa310f34c6ebbdf058bd3f6251fd64c6ab831817121ea"}, + {file = "tqdm-4.50.2-py2.py3-none-any.whl", hash = "sha256:43ca183da3367578ebf2f1c2e3111d51ea161ed1dc4e6345b86e27c2a93beff7"}, + {file = "tqdm-4.50.2.tar.gz", hash = "sha256:69dfa6714dee976e2425a9aab84b622675b7b1742873041e3db8a8e86132a4af"}, ] typed-ast = [ {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3"}, @@ -1335,8 +1348,8 @@ typing-extensions = [ {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"}, ] urllib3 = [ - {file = "urllib3-1.25.10-py2.py3-none-any.whl", hash = "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"}, - {file = "urllib3-1.25.10.tar.gz", hash = "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a"}, + {file = "urllib3-1.25.11-py2.py3-none-any.whl", hash = "sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e"}, + {file = "urllib3-1.25.11.tar.gz", hash = "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2"}, ] watchdog = [ {file = "watchdog-0.10.3.tar.gz", hash = "sha256:4214e1379d128b0588021880ccaf40317ee156d4603ac388b9adcf29165e0c04"}, @@ -1345,6 +1358,6 @@ wrapt = [ {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"}, ] zipp = [ - {file = "zipp-3.3.0-py3-none-any.whl", hash = "sha256:eed8ec0b8d1416b2ca33516a37a08892442f3954dee131e92cfd92d8fe3e7066"}, - {file = "zipp-3.3.0.tar.gz", hash = "sha256:64ad89efee774d1897a58607895d80789c59778ea02185dd846ac38394a8642b"}, + {file = "zipp-3.3.2-py3-none-any.whl", hash = "sha256:50a4ef266c31c9409627b46012e206382eb8d23f46fbd358065a8335cfbf7d8f"}, + {file = "zipp-3.3.2.tar.gz", hash = "sha256:adf8f2ed8f614ced567d849cae9d183cef6cfd27c77a5cae7a28029be0c2b7a7"}, ] diff --git a/pyproject.toml b/pyproject.toml index e59af4adee..3ebb117827 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "manimce" -version = "0.2.0" +version = "0.1.0" description = "Animation engine for explanatory math videos." authors = ["The Manim Community Developers","3b1b "] license="MIT" @@ -33,7 +33,7 @@ scipy = "*" tqdm = "*" pydub = "*" pygments = "*" -rich = ">=4.2.1" +rich = "^6.0" pycairo = "^1.20" grpcio = "*" grpcio-tools = "*" @@ -60,7 +60,7 @@ markers = "slow: Mark the test as slow. Can be skipped with --skip_slow" [tool.poetry.plugins] [tool.poetry.plugins."console_scripts"] "manim" = "manim.__main__:main" -"manimcm" = "manim.__main__:main" +"manimce" = "manim.__main__:main" [build-system] requires = ["poetry>=0.12"] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 5a587531b4..0000000000 --- a/requirements.txt +++ /dev/null @@ -1,19 +0,0 @@ -colour -numpy -Pillow -scipy -tqdm -pycairo -pydub -pygments -pyreadline; sys_platform == 'win32' -rich>=4.2.1 -grpcio -grpcio-tools -watchdog - -# for development only: -# pytest -# black -# guzzle-sphinx-theme -# recommonmark>=0.5.0 diff --git a/tests/control_data/graphical_units_data/creation/DrawBorderThenFillTest.npy b/tests/control_data/graphical_units_data/creation/DrawBorderThenFillTest.npy deleted file mode 100644 index ccfc7f8aa196777d2a9860c47a1972a0df8c0d1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI#v1%k_7=_`nwVOMbZWL0i5Mi-NGuSEHY+)tAjabO8Bx<8xg%_ONxde+7g!c)g zNQysvlZONEzu&+8?#&OM9sWH0b$<8o^wZ<{o74I4KfXHOoX$Ugc>MkG{{4?19^XA& zfB)_MuTKx3e*g5#{cjJSe*WV2^{boH>#uKbPPbp)oc=le_pi?nhr_dPp8*35Fu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# 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 zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz K7+~Q4Vc;V&OShT; diff --git a/tests/control_data/graphical_units_data/creation/FadeInFromDownTest.npy b/tests/control_data/graphical_units_data/creation/FadeInFromDownTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/FadeInFromLargeTest.npy b/tests/control_data/graphical_units_data/creation/FadeInFromLargeTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/FadeInFromTest.npy b/tests/control_data/graphical_units_data/creation/FadeInFromTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/FadeInTest.npy b/tests/control_data/graphical_units_data/creation/FadeInTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{ios1Lx=G_cu2;zE9vY zIA;Bnw)`wz#sC8hFu(u<3@~si2ClEK?|q%dCveRAR9w4Lhcmzc0}L?000Rs>r2)I@ zG&a@oO1nz8JY~1|S-dg800Rs#z`!XPc)Y8QzYlnMdFea!85}cx__C{X+bMOMTX|=I z0R|XgfPtqp@OW1p4hO#{cGmKD%=F>Qu4-lbls(~RvBLlZ3^2d|0}OoFfL-jvzqwqd)fo$q@8ct4*EFu(u<3@}hJU{|#*+g0s+D?Q{6 zP8nc;0R|XgVBLUS)i!Kbwewx?AMfXr0R|XgfB^<72JEV~WxJ}KZ>5La!6^d_Fu(u< z46GZltJ;R`s&>BX{p0<7GQa=>3^2ez#eiMawrp3m^R4udJ2+*40R|XgfPr-bc2(Q3 zUDeKay??x)PX-uZfB^;=s2H%T+LrCAcD|J!atEgjFu(u<3^1^6z^-Z=wyWCtuJ@1k z^T_}M3^2d|0~G^yRok*%)y}ulL+;>|0R|XgfB^>94cJv}!**3W-}V0Sem)ssfB^;= zV4z~au4-GhtJ?WiddMA|GQa=>3^2gJx&gbYZP>1A=eyoN-p?lk3^2d|0}NCQ*i~)I zc2zsyN)Ne%QwA7dfB^;=ST|r-wGG=;2>Xd@{fQ0}L?0K*fMv)wXO`wezj?kUKbKfB^;=V1R*j19ny0uwB*8cfEhS zpHBuDV1NMz7^oPqtJ;?Bs&>AW9&!h#3^2d|0}L>*ZosZ;8@8+3`L6em_w&gB0}L?0 z00R{Rc2(Q5UDeLF(nIdxlmP}9V1NMz)(zNIZNqj|JKy#G@qRuTV1NMz7+|1cz^-ar zwyWCtR(i-CoHD=w0}L?0z`6mus%_Y=YUjJ&Kie-%1a; zgHr|=V1NMz7+5!8SG5h>RqcG&`^WqFWPkw%7+`>biUGT-ZP~7B=UeF^cW}x80}L?0 z00Zj=?5eh5yQ-bbbpv))+pt~L&Ud|kyq`}77+`<_ z1{kOqu&dgZ?W%UZl^${jrwlN_00Rs#ux`MvY8$qz+WD^ckN5M*00Rs#zyJdk19ny0 zvR&2Ax6(uI;FJLd7+`<_2G$MORc*s|RXgAH{_%c38DM|`1{h$VV!*CyTehp(`Br+! z9h@@200Rs#z`(izyQ*#2u4?DI-ap>YCj$&HzyJdbR1DZvZOe95JKstVxr0*%7+`<_ z1{hd3U{|#b+g0s+*Zar&`DB0r1{h#~frYUf+&A$M@f00Rs#zyJg52JEV~ zVY{lG?|T1uKc5URzyJdbFi(8f8DM|`1{h#q-GE)yHf&e5^Ih*B z@8^>N1{h#~0R}1t?5eh9yQ-aUrH9jvzqwqd)fo$q@8 zct4*EFu(u<3@}hJU{|#*+g0s+D?Q{6P8nc;0R|XgVBLUS)i!Kbwewx?AMfXr0R|Xg zfB^<72JEV~WxJ}KZ>5La!6^d_Fu(u<46GZltJ;R`s&>BX{p0<7GQa=>3^2ez#eiMa zwrp3m^R4udJ2+*40R|XgfPr-bc2(Q3UDeKay??x)PX-uZfB^;=s2H%T+LrCAcD|J! zatEgjFu(u<3^1^6z^-Z=wyWCtuJ@1k^T_}M3^2d|0~G^yRok*%)y}ulL+;>|0R|Xg zfB^>94cJv}!**3W-}V0Sem)ssfB^;=V4z~au4-GhtJ?WiddMA|GQa=>3^2gJx&gbY zZP>1A=eyoN-p?lk3^2d|0}NCQ*i~)Ic2zsyN)Ne%QwA7dfB^;=ST|r-wGG=;2>Xd@{fQ0}L?0K*fMv)wXO`wezj? zkUKbKfB^;=V1R*j19ny0uwB*8cfEhSpHBuDV1NMz7^oPqtJ;?Bs&>AW9&!h#3^2d| z0}L>*ZosZ;8@8+3`L6em_w&gB0}L?000R{Rc2(Q5UDeLF(nIdxlmP}9V1NMz)(zNI zZNqj|JKy#G@qRuTV1NMz7+|1cz^-arwyWCtR(i-CoHD=w0}L?0z`6mus%_Y=YUjJ& zKie-%1a;gHr|=V1NMz7+5!8SG5h>RqcG&`^WqFWPkw% z7+`>biUGT-ZP~7B=UeF^cW}x80}L?000Zj=?5eh5yQ-bbbpv))+pt~L&Ud|kyq`}77+`<_1{kOqu&dgZ?W%UZl^${jrwlN_00Rs#ux`Mv zY8$qz+WD^ckN5M*00Rs#zyJdk19ny0vR&2Ax6(uI;FJLd7+`<_2G$MORc*s|RXgAH z{_%c38DM|`1{h$VV&L(vy1BWzzr4Kk9r_H8nLd0Sv#z*xhYn_d0R|XgfB^;=cuoc$ z@2ZFYfBUof3D{M-=Q(wcxA4dS0}L?000Sihc2#pj{nu4?mF_Bams@ydfB^;=V1R+= zWZ?Y#{Qmg6V!r#I!7=OSWY1f4Ap;CBzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/FadeOutAndShiftTest.npy b/tests/control_data/graphical_units_data/creation/FadeOutAndShiftTest.npy deleted file mode 100644 index de3abcab7b3f7654ed8a1c2a7fc25490196e153c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeIwF%AJy6a~<)wTj<;k|{_=GO++1(I`|hF(V2=X3$_27R*?JLU&$ri+9VL^IELt z%XKf@!aY@WyKT}mrpI-hvY2+K=F*hM&8eyCZ$B#!ZQb?lzC736Kgf$w7K=%q#eA5> zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/GrowFromEdgeTest.npy b/tests/control_data/graphical_units_data/creation/GrowFromEdgeTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/GrowFromPointTest.npy b/tests/control_data/graphical_units_data/creation/GrowFromPointTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/ShowCreationTest.npy b/tests/control_data/graphical_units_data/creation/ShowCreationTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/ShrinkToCenterTest.npy b/tests/control_data/graphical_units_data/creation/ShrinkToCenterTest.npy deleted file mode 100644 index de3abcab7b3f7654ed8a1c2a7fc25490196e153c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeIwF%AJy6a~<)wTj<;k|{_=GO++1(I`|hF(V2=X3$_27R*?JLU&$ri+9VL^IELt z%XKf@!aY@WyKT}mrpI-hvY2+K=F*hM&8eyCZ$B#!ZQb?lzC736Kgf$w7K=%q#eA5> zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/creation/UncreateTest.npy b/tests/control_data/graphical_units_data/creation/UncreateTest.npy deleted file mode 100644 index de3abcab7b3f7654ed8a1c2a7fc25490196e153c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeIwF%AJy6a~<)wTj<;k|{_=GO++1(I`|hF(V2=X3$_27R*?JLU&$ri+9VL^IELt z%XKf@!aY@WyKT}mrpI-hvY2+K=F*hM&8eyCZ$B#!ZQb?lzC736Kgf$w7K=%q#eA5> zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

QsRIqdL^I`)PtXL3h)DXdXZE!7!8oNefi5hFvsAw$l z4`Xbx#D*;xu^SZ&f?bRqZ0GvSy=OA-yZgTPW0$bIUw$Xqoq1=@l%4Z?H}mA2dFHB7 zWA@nVz{R?q(rxm9apNZ*K4HLr_8)M@$(s!r)PKMcCrtS731g2x?1Ty9#>eszWB+U7 z_`jD=JZkKT3tpD()~#Fe;~Fr)00Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(upY-gx7U^C_fLPC2FK z9L_oCoO0dTYp-3iP8)Vh&ph)?aeY4e=%Y4Wo4$Sfme)5dxTgL$GQa=>3^2d|0}L>* z;0DB13x3TylQVHu*KWVgWXZX(!~g>fFu(u<47A;VxT@{ft~0n3S9R_7>kNjR149fj zzyJdbFu*|j4T!7Se+@g*p}4ARw_iuvacp)NV1NMz7+`>bg=e6(xT<^i?rF%7A!(m| z_DQ?!vP)Xf=dOD9?wxknVTUwk%$PKCh#l3Kb3Xz%oksLkxo19w6yfnOV@0Zw}1Tc$BU{{r%p|guVd!SnR(MRZ{ECg(n%*3 z+x>rWRqX%#^Up7G{*^oUd*=J^zfY&1etHoz=jCA`AK$d|eOI-KHerAP1{h#~0R}p+ zfofcJ-+lMxTkIk>`uXRd%g-?r@xg!r16sZJKJdT;)BO4K%ldKO{_eZ)rf5oY!3{Uuux4G<>(Qe} z5qso)Ty)VzE$T$Q+itt9s1k8fwGS%xIeYf(ym@gwKmPdRG-uA7a#_qg|NQf5<&{@% zvF{vL-F4Sp>6KSrso5qz9CXk@#Wv02sufpUF+KhC)8)2to#Gt6{PN3kS>$QYMO@W+ zzo%8Z=Cu<83^2d|0}L?G`3zL!s<^+7`|i=BN2ev1Trw@T*kWn@_1902Jn~4s^-d9c z)wg5xLq*IK<=bz+E$;c3SYnByUc?$PcI~6T^MFVB{rBICF>%#>v^B2UZ@>Lg?xXtp z>#x%R2OLnuL$U8T{=WO}ThsS;$RUT6=N@C?ayjwD6U*iKyrK`RT3&wnt zb=O^2uJ6^WSDH0zR=N3AS6!82jAGt*#HJ5F{BXJcvBw^(iOHf~j;nHPJAL}}bixTI z6n$I~E9G%~&El%-ufM)L#{Ku-pJL2kK8In$hNTZa_@G=LGvcbw_x;T6WvXo$V1NMz z7+`>b&TXI?S4E6az5mZ`7ti+OI3fChs{Jxi=cSikD(=sJ{q@(h*=C!S_wIT7n8rJO z^LV%yUU;FVPFv!tIHylO`J^~*#2$kN4XW8^KK6R+t(SiI;fJE$S6_Wq#v>6k=KiFI z9(t(7w)wi`xF*InuC&rhHT7cLUoN}ux@);E`nGau6syEDY}Ijw5hLbvj%kjoVn5NR z6@PDaeV%U=S4BLW$74numgC&KT};sQ7;Pd@o%&AzK~RpbxJ+tg1R#Z_mVaYlLGLx&D+ zxP7&rxT<5mgY|9dvvy#B0R|XgfB^=&o`Gsywe{9pH@yEo_uO;K`}B3!UAL?k&o|`~ zxdWRSh(4WMjy?9+vTj@As%pFw`7)XvH~Oq{x#^~x%DQpBxkUcLypNtedzSG|#Em&; z#1&UuQPzpNuf6tKv3WcLmA8$4vs|vc^2%~~USB_b?z!iR>e1I%?USm;RgwRqe!Kj+ zQCyXmfA`&Y#dywKzkXUhUvX8}`~KFqr_b7u0R|XgfB^;==okalxT;Z3ifEh2`;bdD z&%+Hj+>jTi7hila#j`?qK8uE;)xpoWt(B@17T@BaS$ttl#MT za-UgjRLy6fK941gZ8q6tld^t}t0L!pYun{zjpC~OEL&WsT({9Qa(+Y+S9Q(raHDp$TzfLW z00Rs#zyJe_&Om$Psu%;8%UNfgl}L$@^(Gjqz|%>f?-R z%#`0F{NaZm7Ilw0>ZoGhYpk(GnRhU94#shEe)7nbSUqm_eO3n_d~nUWYP~#v*=3g% z$BJK(+aoW}aaF{Fd0A`IMsZcnZy)Ph+pfAS*A-VSy6;`}`kQy%8DM|`1{h#~fv#_$ zy>V4_99y$-gw3q9C9b;TjyuYDq)(qdO=E}UmtVeo$5r)Ns5qy{!IAUkMU1u1I_s4C ztv*Ng)?05C%VXSQ`rqg5%2Zo2zyJdbFu(u;k>eO`j;fEJ>BZqs{ zV&tHR67PH(HEL8bAL9ZeS9!Hw#A*4RTJg@P>bm;*cy=pt21cpxmuhcZmGd{oyMR|& zWtE2KF=WV);`s4PT(xMwd-WcCcKsP(fB^;=V1R+HYoNVxRpf8T{T-3lp+}D%4e#M| z{)f1SuReR!mbfZ%XXN-La#2KXibf9O{ZzSZv&}Xw>g5Z&p}+(b-%~C zJx#SC0}L?000Rs#&@l$u8&^fU-G2M+<-K{t2d%xcDRSmT-$|6nU02O1-j=v3jvM_! zxy0YmT5J{XHT#eAh-cjL7|5t6uIiZYU^Zdu z`ZK@)0}L?000Ujuz`}^DdiCm+a;}HCKY#u8*VA#w9hXLq9GN0_Lp;-zW2(51uf8iP z?6ftmirjp&XU~p97A0~t#JI$rcG@Y89XqzjQIXe0UsT_|eOts9+3wqKzn!ZV{a`tV zMP47%YM%J0yuk(=G~C~fH{Mw8FWwUzeMYFA@6Zn2;C##M2? zF~%=qswmNS7VmA2ezzDm8PADDTSVT#`Sa%&b;MO&_j_D*YF;}szyJdbFu(uxGMHDbm-8O z^QhM!KVrLxvvRIPan+*#{?)g;&)R?i1{h#~0R|Z8ng&LU7*WI&5m)r=*|TA+Fl^Yc zvRvF>+SK`qs9qE{ndWe4Kdhsk$!D$1`2I&gjvj zTdkAp=4osb@l`x?HEY(a^v*l)q{tB;{dvu<_qcK6iepWlJh|y{A{Ts|Q{=bL$E=^m z7{*v1&!NTpg5P}e&7!|5_qUyW_SwZg!b1JFK6lOUwRY2P3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< n3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000RvCdmH#4mF7xG diff --git a/tests/control_data/graphical_units_data/geometry/AnnularSectorTest.npy b/tests/control_data/graphical_units_data/geometry/AnnularSectorTest.npy deleted file mode 100644 index a15aa12443801e968b570c94ff6dd81b0da3afff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*eQ1^S0taxni8c3)fgsB19|am)6?ezzk8r`^=%o^#Ig@)<~Hn?BF) z0d;V57?dfUj=dF6=sg+O8ThuV`+5h}?UQ@%of2?`(-%oZt@%J@P zu6iW*^(7tueCm;3zy8$fj(*w=ZZoICk;l>+Uni^XE($w(ZhRJ`-oHlJ*@XH!7 zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< 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 zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ 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 zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 l00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFpysZ{~thN(2D>7 diff --git a/tests/control_data/graphical_units_data/geometry/ArcBetweenPointsTest.npy b/tests/control_data/graphical_units_data/geometry/ArcBetweenPointsTest.npy deleted file mode 100644 index cc3ae521784b827c4f1ba9ff95f095145eab51bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*O>B*O9>DRwUQwE~DnZg#kznL3N=!K6$>x1K%@!crS&ef{O3MTa!%YCxjoO#tnT?V={b6Ke*e$r`+LrL z&cEmX@%MlDAwTc$dH)!;Jlb`Cl5F*RNa^z22~V zP0OkuUvK&I@^!0z{CoW5?`u;v-~V=Us%G+UQZ@goN&ZukmzNj(ngIh0Fu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# 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 z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ a0R|XgfB^;=V1NMz7+`<_1{lah1OEZI=^O+A diff --git a/tests/control_data/graphical_units_data/geometry/CircleTest.npy b/tests/control_data/graphical_units_data/geometry/CircleTest.npy deleted file mode 100644 index 78f0f70f986b0b310a5ead83173b5edba74a0c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*X>eWTc?WPLTefA(vgH*UFOrRSz?K);@`7V*4BoLNnH|dnl5`qKO1dN^?WZ6Cep6+HY-|5b`BSCjk<&wFyfC)07N*X5OCXn0qZ2<4w}N=iVPP z8VM~|_dfsMdG$Vi&w0|x=eQ&>M(fam9AN;eT}vxFFB|Eui8)k zzp-bWaYpi{1`II300Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< 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 diff --git a/tests/control_data/graphical_units_data/geometry/CoordinatesTest.npy b/tests/control_data/graphical_units_data/geometry/CoordinatesTest.npy deleted file mode 100644 index b4632579e755b73fe62651a1a003933706ef65ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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�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 J##zY4{{x9Bw5$LC diff --git a/tests/control_data/graphical_units_data/geometry/CurvedArrowTest.npy b/tests/control_data/graphical_units_data/geometry/CurvedArrowTest.npy deleted file mode 100644 index 4ce7413722309c3ac214eb737a979f8885dfe3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*TZoPQ9tZH5*ZB}>6eWyu*qfp4u|RJ*#G`LdRRsIuz#$nTVGeTdg+?Fn%d;?zg4YVSNq%J z>;75wuiD@4|7qN>f2k<{^{?Y9%E$e=qI^Sn`dinMl9KQx0|ppifB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg 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 zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz m7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0S3;-z<&WvV7?mw diff --git a/tests/control_data/graphical_units_data/geometry/DotTest.npy b/tests/control_data/graphical_units_data/geometry/DotTest.npy deleted file mode 100644 index 5151b856c222ecb0beff4bf3c1056ad9e2bbb28f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI)%}N4M6ae69+cT)lZVFr!7)TEgC=_j4vPe-XRu0SQNBZ}%pCn1{BL)mGzyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}BJCQYjw{2Ki(%$;adI_kOWh z%opcvSz&+y1{h#~0R|XgfB^>L2I}>CKAX+*pCioGYBjl45|15MV#5Ff3^2d|0}L?0 z00W^;wJfJv0}L?0 z00Rs#zyJdg1L0k&Rbw<7iC-jsa`t%6E;eGr00Rs#zyJdbFt95IFu(u<3^2d|0}O1JfzV5RS#A|_Dt*?sYc1V-){6lK7+`<_1{h#~fz25R zb*s?#FT8IR`c#Df{;5-KZav%!V$T2r3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb VFu(u<3^2d|0}L?000aNkz!yD%Pn-Y% diff --git a/tests/control_data/graphical_units_data/geometry/DoubleArrowTest.npy b/tests/control_data/graphical_units_data/geometry/DoubleArrowTest.npy deleted file mode 100644 index 68ddf559138a0f5a12c53ad6ce4a55304bd7c69f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*!DQn4(6>_j7LXn*I;4RWi51u60hzDsUQ7`IK^m%g4L*=q|!8uqd z?RGcW&de7GrJ>n$GT(pTM+&`ucfL4#|E%~?{H!ikn~&@2OeJQw+j@EV z;c9)cY9D{Q{IXfyJiht7{JOgN{>AL{)ucRqJ)4xXmy_~$+5PssD2m42d%yq#3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#(APj+*G=DR zjQ#u+)-d*a==Gf?3^2d|0}L?000RtkH!z>io9%Yn?DzZVyQ*EoZntX|i$(NnVY$0y z@0s_E0R|XgfB^;=VBpvWLQge+Z>e-uSdYFkQ^%euug4q%3^2d|0}L>bkAd4g6*?rf zt_thYSNYg>j@fGl7+`<_1{h#~fkPX(tEWPLq}o+sefr9b9eT!GpD_j)V1NMz7+@e> z1NZe*=#JF8Dy&mqrEA?eW^Wl_fB^;=V1NMzhBolfo(jE@OIL;U>MJuh^vt;)Qw%V` z00Rs#z(6_%y7pA)jNG~^tXp5DW8XPuFBxEf0R|XgfB^>j8hC6^g}%tOtHS#Al^N_i zgPzY20}L?000Rs#5U+v0Jr%m5?W*Z?8uh(hL*JXeigy;AWA=^#1{h#~0R|XgpsRtQ zdMb3t5KR)UHP+W5*PyS=WY?MW^UN^700Rs#zyJgB8PHY#*PE`2&#|+|o-x1x0}L?0 z00Rs>1p`C%Rof)~4zOu_PGzp2!d&|uIAnkU1{h#~0S3k~(6_JJu8Mu{`g~rcr^ay` zyE(rdW`F?(7+`<_1{gSmf&2O@^{&!W=IRi0 z<(gbEzyJdbFu(uTvzS|6|{%8GS`84+1_3?4} z+;5*xn#EZe7Hw08=Cll-A^keevTSn8fB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ 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 z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= JVBmin_ydmD+0+04 diff --git a/tests/control_data/graphical_units_data/geometry/PolygonTest.npy b/tests/control_data/graphical_units_data/geometry/PolygonTest.npy deleted file mode 100644 index a7bb8e92c71cc1707fb50a70c6cbab1673a22e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2ezD+c}t8~UN) diff --git a/tests/control_data/graphical_units_data/geometry/RectangleTest.npy b/tests/control_data/graphical_units_data/geometry/RectangleTest.npy deleted file mode 100644 index 650779206a42d0215cc2ed1135ce196c2bceec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI)L2F(`6b9hy)^&E>glwXag+hhKb#PM@H!fUBu_-RZN~&(uU*QkF_Co?$*txmG z+{rmJPa%k=U%r|5Jm)X?R|LWDx?{44!_jfaX50R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= 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 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| Y0}L?000Rs#zyJdbFu(u<3><6VUtn9Q=>Px# diff --git a/tests/control_data/graphical_units_data/geometry/RoundedRectangleTest.npy b/tests/control_data/graphical_units_data/geometry/RoundedRectangleTest.npy deleted file mode 100644 index 4c73433bf8eb98e751d830dd3d9ee826178eeb78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*-)~g)n+I?Vk|4jL{76J9mU00?i@S(I)l2G)St=%*fHxcU3t7p^Pj?|%fkbY= z7$Dii6mM;bU;s6O-dJvwfXJVKCBZ~)r~$p9(0NoMj@6PSUXna`Z_ItfIfou2bN zulJefVTSU5YySP;US0ptg#VfFzl;8{VaHqB7roHF=)M2`*F~M}i#BfA{_gfSHvh+# z?f=*ifBoe*{%gmEKYo43f4;GG!yo^@c*UxJ>1<#1+=|Zj6;F4z?{2UEm@;9)gy4r7 zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb 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

bdKk!=b0W@ewOXmsXvkJN3I-Tp zfB^;=V1NMz7${~SBKzc?IWjU*Y=8QJdh`SC!96g*00Rs#zyJdbL>kDQaU#xt@!~~l zZ*P~a^b-s)zyJdbFu(u<3@}i{Kt%2-G4u54(?#|dnTgHT$uPhG0}L?000Rs#P!9to zGET&dCr_TpRk{fV7+`<_1{h#~0R|W-Vjv>(l$tp-G*o1VI)Zw11n$8-Fu(u<3^2d| z0}MnND3x&{=FHB{%2oOa1{h#~0R|XgfB^;=$ZjAa@06Okyu6(D@86$&hf$f>Tzw1! z3^2d|0}L?000Z?fP%7g@%{h1OoLr@!V1NMz7+`<_1{h#~fvg6i@=mF_j~_qIxbdKf5~Z=z=1zkgq@(oHbH00Rs#zyJdbFu*`I z15sJ0+tlJ-7!37+`<_1{h#~fhYqd^G)Qefq?0}L?0 z00Rs#zyJeT3`Ay~lC!T~y_#izQF+*0T?_*ZFu(u<3^2d|1NAXbGTTJXdhpbECwR8PRZG?U%$?>KOI4RIs$j$E*M~d0R|XgfB^=g43x|^(X$R7 zJSbb~Cm3LW0R|XgfB^;=V4!jX(OIYD{AROR`TnBvu(`Sz1{h#~0R|XgfB^>TW1wWN ziJmn!HYQi;CKzCV0R|XgfB^;=V4!jX(OIYD{2MoJRK7nQL47&`ci}D=V1NMz7+`<_ z2BHj<%r()o?%usCSLr4gV1NMz7+`<_1{h$Vas$y>r{w%+&z@DjzoQ$UA3KKLiY= zft(NW`UC>D)a8AjZ+Q9tyng%Y&AUh4kM8H>a(?|`F?rcfetmyFnf8;9SBr0pi!bl5 z7MJtQ?`IdEujhBazy5Ubb$<8rlateD)Bg0u$+SOtI_-b=`+pvHT{rm3fB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ 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 z0}L?000Rs#z(8pR>gqZaGgKiD=0}L?000Rs#zyJdbFtE*lTxBkp3k)#8 z00Rs#zyJdbFi^UIaq~wet@%;&(rd1UYRCWs3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< J47AO_{|6AlkU{_e diff --git a/tests/control_data/graphical_units_data/indication/ApplyWaveTest.npy b/tests/control_data/graphical_units_data/indication/ApplyWaveTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/indication/CircleIndicateTest.npy b/tests/control_data/graphical_units_data/indication/CircleIndicateTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/indication/FlashTest.npy b/tests/control_data/graphical_units_data/indication/FlashTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/indication/FocusOnTest.npy b/tests/control_data/graphical_units_data/indication/FocusOnTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/indication/IndicateTest.npy b/tests/control_data/graphical_units_data/indication/IndicateTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/indication/ShowCreationThenDestructionTest.npy b/tests/control_data/graphical_units_data/indication/ShowCreationThenDestructionTest.npy deleted file mode 100644 index de3abcab7b3f7654ed8a1c2a7fc25490196e153c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeIwF%AJy6a~<)wTj<;k|{_=GO++1(I`|hF(V2=X3$_27R*?JLU&$ri+9VL^IELt z%XKf@!aY@WyKT}mrpI-hvY2+K=F*hM&8eyCZ$B#!ZQb?lzC736Kgf$w7K=%q#eA5> zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/indication/WiggleOutThenInTest.npy b/tests/control_data/graphical_units_data/indication/WiggleOutThenInTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/movements/HomotopyTest.npy b/tests/control_data/graphical_units_data/movements/HomotopyTest.npy deleted file mode 100644 index 60af6c7b6b332b1c0119e4fdd16d30376443c02e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u50c)ZzcLZwpCt#m5}7+`<_1{h#~0R|XgAjd#_ z_V3sXheP@0^j}+VSoV!7+`<_1{h%AbOx5o<*`~7X0w@IrB^Y)00Rs#zyJdb zFu(uvbrVO7hFeuPFW5b-LHX00Rs#zyJdbFu=fR4a8mQ zaqr*Z#7@<0HgzhUiU9@~V1NMz7+`<_1{ipPfw)UO?){riry>5IDn9#HE|+EZgzWVG z)AoM(%9jBK7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz K7+~OkG4K~MF;AQT diff --git a/tests/control_data/graphical_units_data/movements/MoveToTest.npy b/tests/control_data/graphical_units_data/movements/MoveToTest.npy deleted file mode 100644 index 4f22b1523e9d0f3a80ec1d4e7ae3a3affb46954b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4-V6o%orW@wjgT|$>AWKde6buK~)1{VjRAjL);#7e3z>aXwz$7ZNxa1k-^ z+}{-l+Ae+1cPF>XMa(Z@h`rVtWpRZp1 z_|2QE*OxcH|M{yQ-d?`@{kPx0`swoBuRnb9^y9OWr=LDKJ9+Za*~uR#|NiUv=;-L$ zx6gn91{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ 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 zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< J4E#S0{0BLyOUwWO diff --git a/tests/control_data/graphical_units_data/movements/RotateTest.npy b/tests/control_data/graphical_units_data/movements/RotateTest.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/movements/ShiftTest.npy b/tests/control_data/graphical_units_data/movements/ShiftTest.npy deleted file mode 100644 index 67bb448cb98dc9390acfb88c81fb1c96a48a12d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZ3LW|lLYAwLK}m(;(xtd5QgCpRU?UDmM(Fxq9>OA3b^c$@%Hi&z_v0KKc0k^sm$V|9p6Ia&qI3 z&wv327+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= 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 zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ S0R|XgfB^;=V1R-DW8fba^X>Wo diff --git a/tests/control_data/graphical_units_data/sample_scenes/BasicScene.npy b/tests/control_data/graphical_units_data/sample_scenes/BasicScene.npy deleted file mode 100644 index 2d2fb7cc2a2f9d6a639fea542ccdd6e3403d2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZy5$>$ELS0eLWSazCAcXr4o*^R#GzP8)kXaje&E z69}bU@_+AnIP^gN`R2Q?zy1EBvp>%MJiNYr_v78+%ZtNbzkhzXx;Xsw_U^a4SHJx5 z_U`rV@!!9C_2%8}`+tA;^Q&KP-~auS7cW1%x_J4;i>r$lpI%-3eewUlK0Z4;yZ7xg zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# NzyJdbFmM_M{smH-?(hHr diff --git a/tests/control_data/graphical_units_data/sample_scenes/BasicTex.npy b/tests/control_data/graphical_units_data/sample_scenes/BasicTex.npy deleted file mode 100644 index 188dd5e2d42c208ad4a327b70bde3d0ce9022cd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*2e2Jg83%AcMWl!zh$3Qi#883)5(ywSis(p)jFf;F0t5oa5Ceo7Q3OY&2r_n2 zu#SbQ;s_#EP&!I;L>;k>V!=w)BmbQ_&wcyueI+FD8klcr7Ga>}GFH<~hO@uabrm6uy?x#C9~Fu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 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 zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# wzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#FcA#=7tax+^8f$< diff --git a/tests/control_data/graphical_units_data/sample_scenes/GeometryScene.npy b/tests/control_data/graphical_units_data/sample_scenes/GeometryScene.npy deleted file mode 100644 index 1f0353683a32789987d7dc756117a9d10d0279e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb 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 zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ U0R|XgfB^;=V1NMz{=b3$3+go>-T(jq diff --git a/tests/control_data/graphical_units_data/threed/AmbientCameraMoveTest.npy b/tests/control_data/graphical_units_data/threed/AmbientCameraMoveTest.npy deleted file mode 100644 index 001d7c56fad655649bfa3c916c75d497f5da3436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*iJM$ioi}i7APHjFk^*PHgOP9K@=1aW!Ry&ba&DX2pkyP$}Wo$LW+O-NW0aOQ6~?>SX{)3>T_bysz|Q`KD`pXWZex;jZ$ z?)}`z_x#TJoiDuWz3;sIniuW$!M*JJdT&4R+yy6o_yey!@s$fsTy*R0@4vnK zmYZ(9y{|vLe^K}F9sTkBI|jRN>yKZbbjCTSy>h`hXP)uO1!tW6$_0P3p!xs3c(1+o z3J%wR0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz 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 z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= pV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~f%Y}<{{j2gw%z~$ diff --git a/tests/control_data/graphical_units_data/threed/AxesTest.npy b/tests/control_data/graphical_units_data/threed/AxesTest.npy deleted file mode 100644 index 0cb1f4e3e8dd1d4dc62943483213c1c1e149a008..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 diff --git a/tests/control_data/graphical_units_data/threed/CameraMoveTest.npy b/tests/control_data/graphical_units_data/threed/CameraMoveTest.npy deleted file mode 100644 index 515e608e07d15c171bd39cd0574a26f798d6ad69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= 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 zUR8X)wjc1*;cHe!wvwwhuMK;L`@;YO3^2d|0}L?G)WEl1_|5F-mG4Yz{8|3{j&=NL z{=1EK{6+q|EylNA__o&{_dX5`Fu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 f00Rs#zyJdbFu(u<3^2d|0}L?000Run%)tKxWf!qu diff --git a/tests/control_data/graphical_units_data/threed/SphereTest.npy b/tests/control_data/graphical_units_data/threed/SphereTest.npy deleted file mode 100644 index afb6a1d9840c7fe7f8d611d98a75a808900374f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# LzyJfENCW>5*CA0_ diff --git a/tests/control_data/graphical_units_data/transform/ApplyComplexFunctionTest.npy b/tests/control_data/graphical_units_data/transform/ApplyComplexFunctionTest.npy deleted file mode 100644 index ebd79596087b8007122bb31221e30b906d943ff8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ h0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPs<*{vTvD_5A<< diff --git a/tests/control_data/graphical_units_data/transform/ApplyMatrixTest.npy b/tests/control_data/graphical_units_data/transform/ApplyMatrixTest.npy deleted file mode 100644 index e3f12518a84573e28fee3d2c153fba1264379f9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&v1(ff9K~UE%~J?1Qo%zDF2n+RkVQ1Lbm>qu6qC4gC{3~3E@_{lPbzFJT5fYa zW$h4i&h;lyz+Uo~_36M5``_<=`1boBznJ|s`>=d>d;j)sxt=fo{`2eQ*?jr)`@28x zZhrge{oT9U@%wLXe!ai_`2G7|ZhpW0`1R`i^;c)}*Wa9<&CkC)oBuQa|BqL**=+Fi zGhl!L1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg 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 zbQ<>i{jgXpCi~p&cEjOtczV6#>mFZ! zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

eWTc?WPLTefA(vgH*UFOrRSz?K);@`7V*4BoLNnH|dnl5`qKO1dN^?WZ6Cep6+HY-|5b`BSCjk<&wFyfC)07N*X5OCXn0qZ2<4w}N=iVPP z8VM~|_dfsMdG$Vi&w0|x=eQ&>M(fam9AN;eT}vxFFB|Eui8)k zzp-bWaYpi{1`II300Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< 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 diff --git a/tests/control_data/graphical_units_data/transform/CounterclockwiseTransformTest.npy b/tests/control_data/graphical_units_data/transform/CounterclockwiseTransformTest.npy deleted file mode 100644 index 78f0f70f986b0b310a5ead83173b5edba74a0c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*X>eWTc?WPLTefA(vgH*UFOrRSz?K);@`7V*4BoLNnH|dnl5`qKO1dN^?WZ6Cep6+HY-|5b`BSCjk<&wFyfC)07N*X5OCXn0qZ2<4w}N=iVPP z8VM~|_dfsMdG$Vi&w0|x=eQ&>M(fam9AN;eT}vxFFB|Eui8)k zzp-bWaYpi{1`II300Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< 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 diff --git a/tests/control_data/graphical_units_data/transform/CyclicReplaceTest.npy b/tests/control_data/graphical_units_data/transform/CyclicReplaceTest.npy deleted file mode 100644 index 0cab724b1ba0b898af1abc604f532f533d830834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb oFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0z!(_#|4bY0<^TWy diff --git a/tests/control_data/graphical_units_data/transform/FadeToColortTest.npy b/tests/control_data/graphical_units_data/transform/FadeToColortTest.npy deleted file mode 100644 index f303647c02f0012f059c2a7ebd17ce637acc4836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI&F>4)k7{%eZv|uUHK`Na>mndXVs8AeS3T}!^2PbK5#6hg2>Y{!MziuJ+DuoUX zbqP7YJiQ@xzm!&tCoc!v_yPK0SW;>4Veb2Opgt|9SlX|9SW5 z=;*@7cfbGx3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 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 z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| f0}L?000Rs#zyJdbFu(u<3^2d|0}L>5y$t*foYo*Y diff --git a/tests/control_data/graphical_units_data/transform/MoveToTargetTest.npy b/tests/control_data/graphical_units_data/transform/MoveToTargetTest.npy deleted file mode 100644 index e16b35b0a58dcf13927d93edf85eb87d2dfc028f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 diff --git a/tests/control_data/graphical_units_data/transform/RestoreTest.npy b/tests/control_data/graphical_units_data/transform/RestoreTest.npy deleted file mode 100644 index 78f0f70f986b0b310a5ead83173b5edba74a0c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*X>eWTc?WPLTefA(vgH*UFOrRSz?K);@`7V*4BoLNnH|dnl5`qKO1dN^?WZ6Cep6+HY-|5b`BSCjk<&wFyfC)07N*X5OCXn0qZ2<4w}N=iVPP z8VM~|_dfsMdG$Vi&w0|x=eQ&>M(fam9AN;eT}vxFFB|Eui8)k zzp-bWaYpi{1`II300Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< 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 diff --git a/tests/control_data/graphical_units_data/transform/ScaleInPlaceTest.npy b/tests/control_data/graphical_units_data/transform/ScaleInPlaceTest.npy deleted file mode 100644 index 50da222f5c2ee475e59e6e7c668a703dfb3e6fd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*u}Z^G6b9h9-lxbGg$&w6C_aFj;^H73q}YgqSV`1HeF`5qHbWr}rM1b_`&|g7 zAt&J;z8m;SAV1f)S2uS@$w%^;Evn|B&MwmI>-{Xt)9i6szt!`X`(?eTy8V~)=cZci zZ=U9_)$0FoIX%tO>3Nx_4?r~e-zNs`v42MjR400Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Tn|gb>=IDE8XA+9B6g%Ps>9Fu(u<3^2d| z0}LF3fwC;yeMeV&2t6f zFu(u<3^2d|19BAu?gI=kzyJdbFu(u<3@|X%K>s~J&#QPE>PbCA3^2d|0}L?000S`^ zkgK?l(Y-ly&j14qFu(u<3@|XJ0lA8&F+DjKPYf`?00Rs#zyJd=8j!2FkI}t3bI$++ z3^2d|0}L=QrUAK%r!hS_7f%c@zyJdbFu(u7Kv<0}L?000Rs#zyJfA z49Hb%Y_efL8w@bO00Rs#zyJdb>}DW@&=y6p*VfhQ^KO0CCw*do0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= pV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R}c3_yxgR(98e; diff --git a/tests/control_data/graphical_units_data/transform/ShrinkToCenterTest.npy b/tests/control_data/graphical_units_data/transform/ShrinkToCenterTest.npy deleted file mode 100644 index de3abcab7b3f7654ed8a1c2a7fc25490196e153c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeIwF%AJy6a~<)wTj<;k|{_=GO++1(I`|hF(V2=X3$_27R*?JLU&$ri+9VL^IELt z%XKf@!aY@WyKT}mrpI-hvY2+K=F*hM&8eyCZ$B#!ZQb?lzC736Kgf$w7K=%q#eA5> zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

eWTc?WPLTefA(vgH*UFOrRSz?K);@`7V*4BoLNnH|dnl5`qKO1dN^?WZ6Cep6+HY-|5b`BSCjk<&wFyfC)07N*X5OCXn0qZ2<4w}N=iVPP z8VM~|_dfsMdG$Vi&w0|x=eQ&>M(fam9AN;eT}vxFFB|Eui8)k zzp-bWaYpi{1`II300Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< 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 diff --git a/tests/control_data/graphical_units_data/transform/TransformTest.npy b/tests/control_data/graphical_units_data/transform/TransformTest.npy deleted file mode 100644 index 78f0f70f986b0b310a5ead83173b5edba74a0c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*X>eWTc?WPLTefA(vgH*UFOrRSz?K);@`7V*4BoLNnH|dnl5`qKO1dN^?WZ6Cep6+HY-|5b`BSCjk<&wFyfC)07N*X5OCXn0qZ2<4w}N=iVPP z8VM~|_dfsMdG$Vi&w0|x=eQ&>M(fam9AN;eT}vxFFB|Eui8)k zzp-bWaYpi{1`II300Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< 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 diff --git a/tests/control_data/graphical_units_data/updaters/UpdaterTest.npy b/tests/control_data/graphical_units_data/updaters/UpdaterTest.npy deleted file mode 100644 index b0b48565c5a6eaa834405dc4b3e3f4ae87474ddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| Q0}L?000Rs#aQqGY7l^XOA^-pY diff --git a/tests/control_data/graphical_units_data/updaters/ValueTrackerTest.npy b/tests/control_data/graphical_units_data/updaters/ValueTrackerTest.npy deleted file mode 100644 index de3abcab7b3f7654ed8a1c2a7fc25490196e153c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeIwF%AJy6a~<)wTj<;k|{_=GO++1(I`|hF(V2=X3$_27R*?JLU&$ri+9VL^IELt z%XKf@!aY@WyKT}mrpI-hvY2+K=F*hM&8eyCZ$B#!ZQb?lzC736Kgf$w7K=%q#eA5> zXZ-#8A%wTsfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPw!Q_y8A4 Bcx3

+RUF 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 z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V4!#n F{6Dk?w2%M* diff --git a/tests/control_data/graphical_units_data/writing/DarwinTextMobjectTest.npy b/tests/control_data/graphical_units_data/writing/DarwinTextMobjectTest.npy deleted file mode 100644 index f9215108c180883d932b7cb4190d4852684984b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*2dq>@+W=r}pma1A6a-NL74=v7QL%$ylvn~-v7uu9gCbU}pcoNBMWa}VE%t^Q zu@MVVqgbM`_ZB;`5fKqR|MyOEZg%(XE|+`PFCfn(m)$)xXXfmj$IW@2IdiVuYu`Qh zIdHjVr!_mP$5A6jA9-?*zFm8qed-oHdUfq_^ob{*a`Nzzhn;xxQ6pmez~TQldc=RW zk3M$zNhALAxo7Wf{-;;hZT`1+udcl}>ecm}u8W^qHfz=_^QR9OV1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ 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 z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xox`F=( Dbd0zl diff --git a/tests/control_data/graphical_units_data/writing/DarwinTextTest.npy b/tests/control_data/graphical_units_data/writing/DarwinTextTest.npy deleted file mode 100644 index b8104af031baeec986f964e0ddd7ce05073557d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 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 zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R}dg Gf&T!k;RXf( diff --git a/tests/control_data/graphical_units_data/writing/LinuxTexMobjectTest.npy b/tests/control_data/graphical_units_data/writing/LinuxTexMobjectTest.npy deleted file mode 100644 index 804bc213532940fb2bdd05eaea09399c18f679e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*3A9yJ-2iarSwuzw2S5}NObi)Bg%(1I1iE6hReXVpkOPJwu@b~gC?G{t21PSL z35ca4B!fdJ2D!{8uu?0;3@`;5L}l8a`?TKe-8Ue-$D4m=t@GZ!=iGaS|Nfox_Wzx8 z_P($0fIe4VRleM<<$loWnrm;ldUUHU&05_y_WV|Do3$D~YV?@VLvQ-OQKPT9HctQQ z&>L>K_Vektj2L?JwV%H~`-0Bx+BWOl;exi!E@<7h*@R}tKGY~zu3RvR0Rs#$zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb 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 zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ O0R|XgfB^EK_`C5AAt+p_YcXwCoyL5cX8mxRDi@`N+!5d|XnmPz0hO1Q}9f z*&k79P()eu(*6jds30n}7nMb3+KcR^)w=$MyM}$v+54Ql*RGHK8QAW9)~uO5d*(C3 zmo@X7#UuVPeB_w6ZT{J2Ztn>bXN;fT`|l0C|26Axz56xvo^<2%nbXHj9ed;S2@|7z z*tjV(CT?$^F?rmyiQE6~GjQ;Lehq^M4eZx2uy4PHc?~;0b!^k7P4co27+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg 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 zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| o0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb{1pcN4L5wUdjJ3c diff --git a/tests/control_data/graphical_units_data/writing/WindowsTexMobjectTest.npy b/tests/control_data/graphical_units_data/writing/WindowsTexMobjectTest.npy deleted file mode 100644 index 83cde8237d10489377ee539bb5b509d79add3472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*3A9yJ-2iarSwu#GFhE2RR0tVFgF-ODKv(!cTg4ZsD5+=&l7)zw-~v*_0Z=p( zl!Qn{OaX^b40CBCXsH!q2AHBEpfc^xeOmAOF7G~uHxIwF)_w2ZbIv`(fB(*T=l}LO zd*3!VYtT98SFUt*r5_)A;YC+nF!tD9t&g2JzRR(lS|2;=im~Iyju`WQSB$;zqB#DH z5tm(c(dXl@x@5$a7k&QuxRZN!?$o+xx05@yKDk4u*4MT^^r23rN|l0_7%;#90}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 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 zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V4!#n F{6Dk?w2%M* diff --git a/tests/control_data/graphical_units_data/writing/WindowsTextMobjectTest.npy b/tests/control_data/graphical_units_data/writing/WindowsTextMobjectTest.npy deleted file mode 100644 index f9215108c180883d932b7cb4190d4852684984b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*2dq>@+W=r}pma1A6a-NL74=v7QL%$ylvn~-v7uu9gCbU}pcoNBMWa}VE%t^Q zu@MVVqgbM`_ZB;`5fKqR|MyOEZg%(XE|+`PFCfn(m)$)xXXfmj$IW@2IdiVuYu`Qh zIdHjVr!_mP$5A6jA9-?*zFm8qed-oHdUfq_^ob{*a`Nzzhn;xxQ6pmez~TQldc=RW zk3M$zNhALAxo7Wf{-;;hZT`1+udcl}>ecm}u8W^qHfz=_^QR9OV1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ 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 z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xox`F=( Dbd0zl diff --git a/tests/control_data/graphical_units_data/writing/WindowsTextTest.npy b/tests/control_data/graphical_units_data/writing/WindowsTextTest.npy deleted file mode 100644 index b3e2559e2329168e8ab3347a83b329e78742aaac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639808 zcmeI*d+Z%k9suxq6m5wrQX=H%*;a~fbSWtzno7}X&}s!$t4m_F=ys89GrQ~|L%9zq^Wkaq@&I7oIgK z_79)-aqx6iRVxH`FH=pLk10O8}iq|1KS1<7}z$W?bk0oyLIc9d|U$t7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ 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 z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ S0R|XgfB^;=V1R)xH}D_Z)dvLt diff --git a/tests/control_data/logs_data/BasicSceneLoggingTest.txt b/tests/control_data/logs_data/BasicSceneLoggingTest.txt index c4131e12ab..c30063bd12 100644 --- a/tests/control_data/logs_data/BasicSceneLoggingTest.txt +++ b/tests/control_data/logs_data/BasicSceneLoggingTest.txt @@ -2,7 +2,7 @@ {"levelname": "DEBUG", "module": "hashing", "message": "Hashing ..."} {"levelname": "DEBUG", "module": "hashing", "message": "Hashing done in <> s."} {"levelname": "DEBUG", "module": "hashing", "message": "Hash generated : <>"} -{"levelname": "DEBUG", "module": "scene", "message": "List of the first few animation hashes of the scene: <>"} +{"levelname": "DEBUG", "module": "caching", "message": "List of the first few animation hashes of the scene: <>"} {"levelname": "INFO", "module": "scene_file_writer", "message": "Animation 0 : Partial movie file written in <>"} {"levelname": "DEBUG", "module": "scene_file_writer", "message": "Partial movie files to combine (1 files): <>"} {"levelname": "INFO", "module": "scene_file_writer", "message": "\nFile ready at <>\n"} diff --git a/tests/helpers/graphical_units.py b/tests/helpers/graphical_units.py index 42b5e8e4d4..773518748f 100644 --- a/tests/helpers/graphical_units.py +++ b/tests/helpers/graphical_units.py @@ -15,10 +15,10 @@ def set_test_scene(scene_object, module_name): Parameters ---------- scene_object : :class:`~.Scene` - The scene with wich we want to set up a new test. + The scene with which we want to set up a new test. module_name : :class:`str` - The name of the module in which the functionnality tested is contained. For example, 'Write' is contained in the module 'creation'. This will be used in the folder architecture - of '/tests_data'. + The name of the module in which the functionality tested is contained. For example, ``Write`` is contained in the module ``creation``. This will be used in the folder architecture + of ``/tests_data``. Examples -------- @@ -39,15 +39,19 @@ def set_test_scene(scene_object, module_name): config["text_dir"] = os.path.join(tmpdir, "text") config["tex_dir"] = os.path.join(tmpdir, "tex") scene = scene_object() - data = scene.get_frame() + scene.render() + data = scene.renderer.get_frame() + assert not np.all( + data == np.array([0, 0, 0, 255]) + ), f"Control data generated for {str(scene)} only contains empty pixels." + assert data.shape == (480, 854, 4) tests_directory = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) path_control_data = os.path.join( tests_directory, "control_data", "graphical_units_data" ) - print(path_control_data) path = os.path.join(path_control_data, module_name) if not os.path.isdir(path): os.makedirs(path) - np.save(os.path.join(path, str(scene)), data) + np.savez_compressed(os.path.join(path, str(scene)), frame_data=data) logger.info(f"Test data for {str(scene)} saved in {path}\n") diff --git a/tests/test_camera.py b/tests/test_camera.py deleted file mode 100644 index dd8f00f5bb..0000000000 --- a/tests/test_camera.py +++ /dev/null @@ -1,16 +0,0 @@ -import pytest -from manim import Camera, tempconfig, config - - -def test_camera(): - """Test that Camera instances initialize to the correct config.""" - # by default, use the config - assert Camera().frame_width == config["frame_width"] - # init args override config - assert Camera(frame_width=10).frame_width == 10 - - # if config changes, reflect those changes - with tempconfig({"frame_width": 100}): - assert Camera().frame_width == 100 - # ..init args still override new config - assert Camera(frame_width=10).frame_width == 10 diff --git a/tests/test_copy.py b/tests/test_copy.py index 2210dda1e2..4edd5e00a3 100644 --- a/tests/test_copy.py +++ b/tests/test_copy.py @@ -1,4 +1,4 @@ -import os +from pathlib import Path from manim import Mobject, BraceLabel, config @@ -20,11 +20,11 @@ def test_bracelabel_copy(tmp_path): # For this test to work, we need to tweak some folders temporarily original_text_dir = config["text_dir"] original_tex_dir = config["tex_dir"] - mediadir = os.path.join(tmp_path, "deepcopy") - config["text_dir"] = os.path.join(mediadir, "Text") - config["tex_dir"] = os.path.join(mediadir, "Tex") + mediadir = Path(tmp_path) / "deepcopy" + config["text_dir"] = str(mediadir.joinpath("Text")) + config["tex_dir"] = str(mediadir.joinpath("Tex")) for el in ["text_dir", "tex_dir"]: - os.makedirs(config[el]) + Path(config[el]).mkdir(parents=True) # Before the refactoring of Mobject.copy(), the class BraceLabel was the # only one to have a non-trivial definition of copy. Here we test that it diff --git a/tests/test_pango.py b/tests/test_pango.py index c1ff76b36c..9d0f5e96c3 100644 --- a/tests/test_pango.py +++ b/tests/test_pango.py @@ -1,4 +1,4 @@ -"""Tests :class:`PangoText` by comparing SVG files created. +"""Tests :class:`Text` by comparing SVG files created. """ import os import re @@ -6,7 +6,7 @@ import cairocffi import pangocairocffi import pangocffi -from manim import START_X, START_Y, PangoText, SVGMobject +from manim import START_X, START_Y, Text, SVGMobject RTL_TEXT: str = """صباح الخير مرحبا جميعا""" @@ -27,9 +27,9 @@ def remove_last_M(file_path: str) -> None: # pylint: disable=invalid-name def compare_SVGObject_with_PangoText( # pylint: disable=invalid-name - text: PangoText, svg_path: str + text: Text, svg_path: str ) -> bool: - """Checks for the path_string formed by PangoText and Formed SVG file. + """Checks for the path_string formed by Text and Formed SVG file. Uses SVGMobject as it parses the SVG and returns the path_string """ remove_last_M(svg_path) # to prevent issue displaying @@ -53,7 +53,7 @@ def test_general_text_svgobject() -> None: """ text = "hello" size = 1 - temp_pango_text = PangoText(text, size=size) + temp_pango_text = Text(text, size=size) surface = cairocffi.SVGSurface(filename, WIDTH, HEIGTH) context = cairocffi.Context(surface) context.move_to(START_X, START_Y) @@ -73,7 +73,7 @@ def test_rtl_text_to_svgobject() -> None: called using ``SVGMobject``""" size = 1 text = RTL_TEXT.replace("\n", "") - temp_pango_text = PangoText(text, size=1) + temp_pango_text = Text(text, size=1) surface = cairocffi.SVGSurface(filename, WIDTH, HEIGTH) context = cairocffi.Context(surface) context.move_to(START_X, START_Y) @@ -93,7 +93,7 @@ def test_font_face() -> None: size = 1 text = RTL_TEXT.replace("\n", "") font_face = "sans" - temp_pango_text = PangoText(text, size=1, font=font_face) + temp_pango_text = Text(text, size=1, font=font_face) surface = cairocffi.SVGSurface(filename, WIDTH, HEIGTH) context = cairocffi.Context(surface) context.move_to(START_X, START_Y) @@ -111,7 +111,7 @@ def test_font_face() -> None: def test_whether_svg_file_created() -> None: """Checks Whether SVG file is created in desired location""" - temp_pango_text = PangoText("hello", size=1) + temp_pango_text = Text("hello", size=1) theo_path = os.path.abspath( os.path.join(folder, temp_pango_text.text2hash() + ".svg") ) @@ -123,7 +123,7 @@ def test_tabs_replace() -> None: """Checks whether are there in end svg image. Pango should handle tabs and line breaks.""" size = 1 - temp_pango_text = PangoText("hello\thi\nf") + temp_pango_text = Text("hello\thi\nf") assert temp_pango_text.text == "hellohif" surface = cairocffi.SVGSurface(filename, WIDTH, HEIGTH) context = cairocffi.Context(surface) diff --git a/tests/test_scene_rendering/conftest.py b/tests/test_scene_rendering/conftest.py index 0555550633..a322ba1b6f 100644 --- a/tests/test_scene_rendering/conftest.py +++ b/tests/test_scene_rendering/conftest.py @@ -1,12 +1,12 @@ import pytest -import os +from pathlib import Path @pytest.fixture def manim_cfg_file(): - return os.path.join(os.path.dirname(__file__), "manim.cfg") + return str(Path(__file__).parent / "manim.cfg") @pytest.fixture def simple_scenes_path(): - return os.path.join(os.path.dirname(__file__), "simple_scenes.py") + return str(Path(__file__).parent / "simple_scenes.py") diff --git a/tests/utils/GraphicalUnitTester.py b/tests/utils/GraphicalUnitTester.py index 8eeec5c735..9c7682c525 100644 --- a/tests/utils/GraphicalUnitTester.py +++ b/tests/utils/GraphicalUnitTester.py @@ -1,11 +1,6 @@ -import numpy as np import os -import sys -import inspect import logging -import pytest -import warnings -from platform import system +import numpy as np from manim import config @@ -71,7 +66,6 @@ def __init__( ]: os.makedirs(dir_temp) - # By invoking this, the scene is rendered. self.scene = scene_object() self.scene.render() @@ -84,9 +78,9 @@ def _load_data(self): The pre-rendered frame. """ frame_data_path = os.path.join( - os.path.join(self.path_control_data, "{}.npy".format(str(self.scene))) + os.path.join(self.path_control_data, "{}.npz".format(str(self.scene))) ) - return np.load(frame_data_path) + return np.load(frame_data_path)["frame_data"] def _show_diff_helper(self, frame_data, expected_frame_data): """Will visually display with matplotlib differences between frame generared and the one expected.""" @@ -124,7 +118,7 @@ def _show_diff_helper(self, frame_data, expected_frame_data): def test(self, show_diff=False): """Compare pre-rendered frame to the frame rendered during the test.""" - frame_data = self.scene.get_frame() + frame_data = self.scene.renderer.get_frame() expected_frame_data = self._load_data() assert frame_data.shape == expected_frame_data.shape, ( From b15f5fdd2cb22a981cc6133bbf1d61a88356034a Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 18:30:21 -0400 Subject: [PATCH 20/37] fix docs --- docs/source/manim_directive.py | 20 ++++++++++---------- docs/source/reference.rst | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/source/manim_directive.py b/docs/source/manim_directive.py index ffd8e90f47..5c6f5012f4 100644 --- a/docs/source/manim_directive.py +++ b/docs/source/manim_directive.py @@ -207,18 +207,18 @@ def run(self): video_dir = os.path.join(media_dir, "videos") output_file = f"{clsname}-{classnamedict[clsname]}" - file_writer_config_code = [ + config_code = [ f'config["frame_rate"] = {frame_rate}', f'config["pixel_height"] = {pixel_height}', f'config["pixel_width"] = {pixel_width}', - f'file_writer_config["media_dir"] = r"{media_dir}"', - f'file_writer_config["images_dir"] = r"{images_dir}"', - f'file_writer_config["tex_dir"] = r"{tex_dir}"', - f'file_writer_config["text_dir"] = r"{text_dir}"', - f'file_writer_config["video_dir"] = r"{video_dir}"', - f'file_writer_config["save_last_frame"] = {save_last_frame}', - f'file_writer_config["save_as_gif"] = {save_as_gif}', - f'file_writer_config["output_file"] = r"{output_file}"', + f'config["media_dir"] = r"{media_dir}"', + f'config["images_dir"] = r"{images_dir}"', + f'config["tex_dir"] = r"{tex_dir}"', + f'config["text_dir"] = r"{text_dir}"', + f'config["video_dir"] = r"{video_dir}"', + f'config["save_last_frame"] = {save_last_frame}', + f'config["save_as_gif"] = {save_as_gif}', + f'config["output_file"] = r"{output_file}"', ] user_code = self.content @@ -229,7 +229,7 @@ def run(self): code = [ "from manim import *", - *file_writer_config_code, + *config_code, *user_code, f"{clsname}().render()", ] diff --git a/docs/source/reference.rst b/docs/source/reference.rst index 6dd7cfe9c5..89f822c4b3 100644 --- a/docs/source/reference.rst +++ b/docs/source/reference.rst @@ -128,6 +128,6 @@ Other modules .. autosummary:: :toctree: reference - _config + config constants container From acccf3ef8b1c897847feca05cfd99761c3178fc7 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 19:10:34 -0400 Subject: [PATCH 21/37] revert a change that caused disable_caching to break --- manim/scene/scene_file_writer.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index b73753f806..8aa01aa8c0 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -545,11 +545,8 @@ def combine_movie_files(self): if not self.includes_sound: commands.insert(-1, "-an") - try: - subprocess.check_call(commands) - except subprocess.CalledProcessError as exc: - logger.error(f"FFMPEG returned with code {exc.returncode}") - raise exc + combine_process = subprocess.Popen(commands) + combine_process.wait() if self.includes_sound: sound_file_path = movie_file_path.replace( From 865d396c459a277be792ee7524de8d02613fdac6 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 21:35:21 -0400 Subject: [PATCH 22/37] blackstreet bois --- tests/test_scene_rendering/conftest.py | 1 + tests/test_scene_rendering/test_cli_flags.py | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tests/test_scene_rendering/conftest.py b/tests/test_scene_rendering/conftest.py index a322ba1b6f..b5b6f1d052 100644 --- a/tests/test_scene_rendering/conftest.py +++ b/tests/test_scene_rendering/conftest.py @@ -2,6 +2,7 @@ from pathlib import Path + @pytest.fixture def manim_cfg_file(): return str(Path(__file__).parent / "manim.cfg") diff --git a/tests/test_scene_rendering/test_cli_flags.py b/tests/test_scene_rendering/test_cli_flags.py index 5693e7c964..934445f133 100644 --- a/tests/test_scene_rendering/test_cli_flags.py +++ b/tests/test_scene_rendering/test_cli_flags.py @@ -80,13 +80,13 @@ def test_s_flag_no_animations(tmp_path, manim_cfg_file, simple_scenes_path): out, err, exit_code = capture(command) assert exit_code == 0, err - print(list((tmp_path / 'images' / 'simple_scenes').iterdir())) + print(list((tmp_path / "images" / "simple_scenes").iterdir())) - is_empty = not any((tmp_path / 'videos').iterdir()) - assert is_empty, 'running manim with -s flag rendered a video' + is_empty = not any((tmp_path / "videos").iterdir()) + assert is_empty, "running manim with -s flag rendered a video" - is_empty = not any((tmp_path / 'images' / 'simple_scenes').iterdir()) - assert not is_empty, 'running manim with -s flag did not render an image' + is_empty = not any((tmp_path / "images" / "simple_scenes").iterdir()) + assert not is_empty, "running manim with -s flag did not render an image" def test_s_flag(tmp_path, manim_cfg_file, simple_scenes_path): @@ -105,8 +105,8 @@ def test_s_flag(tmp_path, manim_cfg_file, simple_scenes_path): out, err, exit_code = capture(command) assert exit_code == 0, err - is_empty = not any((tmp_path / 'videos').iterdir()) - assert is_empty, 'running manim with -s flag rendered a video' + is_empty = not any((tmp_path / "videos").iterdir()) + assert is_empty, "running manim with -s flag rendered a video" - is_empty = not any((tmp_path / 'images' / 'simple_scenes').iterdir()) - assert not is_empty, 'running manim with -s flag did not render an image' + is_empty = not any((tmp_path / "images" / "simple_scenes").iterdir()) + assert not is_empty, "running manim with -s flag did not render an image" From 54d429518fcce90599d7f9e9518e99a10e5bbc33 Mon Sep 17 00:00:00 2001 From: leotrs Date: Mon, 26 Oct 2020 22:44:26 -0400 Subject: [PATCH 23/37] remove unnecessary video_quality_config --- manim/scene/scene_file_writer.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index 8aa01aa8c0..a33202e9f1 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -196,8 +196,8 @@ def get_resolution_directory(self): :class:`str` The name of the directory. """ - pixel_height = self.video_quality_config["pixel_height"] - frame_rate = self.video_quality_config["frame_rate"] + pixel_height = config["pixel_height"] + frame_rate = config["frame_rate"] return "{}p{}".format(pixel_height, frame_rate) # Directory getters @@ -375,7 +375,7 @@ def idle_stream(self): self.add_frame(*[frame] * n_frames) b = datetime.datetime.now() time_diff = (b - a).total_seconds() - frame_duration = 1 / self.video_quality_config["frame_rate"] + frame_duration = 1 / config["frame_rate"] if time_diff < frame_duration: sleep(frame_duration - time_diff) @@ -411,9 +411,9 @@ def open_movie_pipe(self): self.partial_movie_file_path = file_path self.temp_partial_movie_file_path = temp_file_path - fps = self.video_quality_config["frame_rate"] - height = self.video_quality_config["pixel_height"] - width = self.video_quality_config["pixel_width"] + fps = config["frame_rate"] + height = config["pixel_height"] + width = config["pixel_width"] command = [ FFMPEG_BIN, From e1f3a1c9c91f8f48702122308631320fea104157 Mon Sep 17 00:00:00 2001 From: leotrs Date: Tue, 27 Oct 2020 22:07:55 -0400 Subject: [PATCH 24/37] add deepcopy method - this should fix the tests on py3.6 --- manim/config/utils.py | 67 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index d383c85937..a8d60734ad 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -176,6 +176,69 @@ def __delitem__(self, key): def __delattr__(self, key): raise AttributeError("'ManimConfig' object does not support item deletion") + # copy functions + def copy(self): + return copy.deepcopy(self) + + def __copy__(self): + return copy.deepcopy(self) + + def __deepcopy__(self, memo): + c = ManimConfig(self._parser) + + for opt in [ + "background_color", + "background_opacity", + "custom_folders", + "disable_caching", + "ffmpeg_loglevel", + "flush_cache", + "frame_height", + "frame_rate", + "frame_width", + "from_animation_number", + "js_renderer_path", + "leave_progress_bars", + "log_to_file", + "max_files_cached", + "movie_file_extension", + "pixel_height", + "pixel_width", + "png_mode", + "preview", + "progress_bar", + "save_as_gif", + "save_last_frame", + "save_pngs", + "scene_names", + "show_in_file_browser", + "skip_animations", + "sound", + "tex_template_file", + "upto_animation_number", + "use_js_renderer", + "verbosity", + "write_all", + "write_to_movie" + ]: + setattr(c, opt, getattr(self, opt)) + + # setattr() on the following options actually returns something + # different to their stored value, so we need to get the actual value + for opt in [ + "media_dir", + "input_file", + "images_dir", + "log_dir", + "tex_dir", + "text_dir", + "video_dir", + ]: + c._d[opt] = self._d[opt] + + return c + + # helper type-checking methods def _set_from_list(self, key, val, values): if val in values: @@ -378,10 +441,6 @@ def digest_dict(self, _dict): def digest_file(self, filename, cascade=True): return self - # regular methods - def copy(self): - return copy.deepcopy(self) - # config options are properties preview = property( lambda self: self._d["preview"], From 7a15349725a4261a6326ef1dce5cf8406bda721a Mon Sep 17 00:00:00 2001 From: leotrs Date: Tue, 27 Oct 2020 22:20:00 -0400 Subject: [PATCH 25/37] I'll be black --- manim/config/utils.py | 81 +++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index a8d60734ad..73e0c3956c 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -187,58 +187,57 @@ def __deepcopy__(self, memo): c = ManimConfig(self._parser) for opt in [ - "background_color", - "background_opacity", - "custom_folders", - "disable_caching", - "ffmpeg_loglevel", - "flush_cache", - "frame_height", - "frame_rate", - "frame_width", - "from_animation_number", - "js_renderer_path", - "leave_progress_bars", - "log_to_file", - "max_files_cached", - "movie_file_extension", - "pixel_height", - "pixel_width", - "png_mode", - "preview", - "progress_bar", - "save_as_gif", - "save_last_frame", - "save_pngs", - "scene_names", - "show_in_file_browser", - "skip_animations", - "sound", - "tex_template_file", - "upto_animation_number", - "use_js_renderer", - "verbosity", - "write_all", - "write_to_movie" + "background_color", + "background_opacity", + "custom_folders", + "disable_caching", + "ffmpeg_loglevel", + "flush_cache", + "frame_height", + "frame_rate", + "frame_width", + "from_animation_number", + "js_renderer_path", + "leave_progress_bars", + "log_to_file", + "max_files_cached", + "movie_file_extension", + "pixel_height", + "pixel_width", + "png_mode", + "preview", + "progress_bar", + "save_as_gif", + "save_last_frame", + "save_pngs", + "scene_names", + "show_in_file_browser", + "skip_animations", + "sound", + "tex_template_file", + "upto_animation_number", + "use_js_renderer", + "verbosity", + "write_all", + "write_to_movie", ]: setattr(c, opt, getattr(self, opt)) # setattr() on the following options actually returns something # different to their stored value, so we need to get the actual value for opt in [ - "media_dir", - "input_file", - "images_dir", - "log_dir", - "tex_dir", - "text_dir", - "video_dir", + "media_dir", + "input_file", + "images_dir", + "log_dir", + "tex_dir", + "text_dir", + "video_dir", ]: c._d[opt] = self._d[opt] return c - # helper type-checking methods def _set_from_list(self, key, val, values): if val in values: From 11a020d024e6c2f63400bf1e2c5ae40eaf55fbd0 Mon Sep 17 00:00:00 2001 From: leotrs Date: Tue, 27 Oct 2020 22:53:02 -0400 Subject: [PATCH 26/37] Fix -t flag and add a test to it. Also add test for -c flag. --- manim/camera/camera.py | 2 +- manim/scene/scene_file_writer.py | 18 +++------------- tests/test_config.py | 36 +++++++++++++++++++++++++++++++- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/manim/camera/camera.py b/manim/camera/camera.py index f9811705ac..84bbdc50e3 100644 --- a/manim/camera/camera.py +++ b/manim/camera/camera.py @@ -53,7 +53,6 @@ class Camera(object): # Note: frame height and width will be resized to match # the pixel aspect ratio "frame_center": ORIGIN, - "background_opacity": 1, # Points in vectorized mobjects with norm greater # than this value will be rescaled. "image_mode": "RGBA", @@ -91,6 +90,7 @@ def __init__(self, video_quality_config, background=None, **kwargs): "frame_width", "frame_rate", "background_color", + "background_opacity", ]: setattr(self, attr, kwargs.get(attr, config[attr])) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index a33202e9f1..b177dd2c9c 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -432,22 +432,10 @@ def open_movie_pipe(self): "-loglevel", config["ffmpeg_loglevel"].lower(), ] - # TODO, the test for a transparent background should not be based on - # the file extension. - if config["movie_file_extension"] == ".mov": - # This is if the background of the exported - # video should be transparent. - command += [ - "-vcodec", - "qtrle", - ] + if config["transparent"]: + command += ["-vcodec", "qtrle"] else: - command += [ - "-vcodec", - "libx264", - "-pix_fmt", - "yuv420p", - ] + command += ["-vcodec", "libx264", "-pix_fmt", "yuv420p"] command += [temp_file_path] self.writing_process = subprocess.Popen(command, stdin=subprocess.PIPE) diff --git a/tests/test_config.py b/tests/test_config.py index bb906578dd..a7c8437a34 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,6 +1,6 @@ import pytest import numpy as np -from manim import config, tempconfig +from manim import config, tempconfig, Scene, Square, WHITE def test_tempconfig(): @@ -24,3 +24,37 @@ def test_tempconfig(): assert np.allclose(config[k], v) else: assert config[k] == v + + +class MyScene(Scene): + def construct(self): + self.add(Square()) + self.wait(1) + + +def test_transparent(): + """Test the 'transparent' config option.""" + orig_verbosity = config["verbosity"] + config["verbosity"] = "ERROR" + + scene = MyScene() + scene.render() + frame = scene.renderer.get_frame() + assert np.allclose(frame[0, 0], [0, 0, 0, 255]) + + with tempconfig({"transparent": True}): + scene = MyScene() + scene.render() + frame = scene.renderer.get_frame() + assert np.allclose(frame[0, 0], [0, 0, 0, 0]) + + config["verbosity"] = orig_verbosity + + +def test_background_color(): + """Test the 'background_color' config option.""" + with tempconfig({"background_color": WHITE, "verbosity": "ERROR"}): + scene = MyScene() + scene.render() + frame = scene.renderer.get_frame() + assert np.allclose(frame[0, 0], [255, 255, 255, 255]) From 6d08e4d4c4f718b7f27e0f9fee9f7ba4eee21353 Mon Sep 17 00:00:00 2001 From: leotrs Date: Tue, 27 Oct 2020 23:13:43 -0400 Subject: [PATCH 27/37] remove unnecessary _QUAL and move its contents to constants.QUALITIES --- manim/config/main_utils.py | 2 +- manim/config/utils.py | 31 +++++----------- manim/constants.py | 37 ++++++++++++++++--- ...est_cli_flags.py => test_quality_flags.py} | 12 +++--- 4 files changed, 48 insertions(+), 34 deletions(-) rename tests/{test_cli_flags.py => test_quality_flags.py} (74%) diff --git a/manim/config/main_utils.py b/manim/config/main_utils.py index faa5ecc9a7..6f2f0bc6ff 100644 --- a/manim/config/main_utils.py +++ b/manim/config/main_utils.py @@ -306,7 +306,7 @@ def _parse_args_no_subcmd(args): parser.add_argument( "-q", "--quality", - choices=constants.QUALITIES.values(), + choices=[constants.QUALITIES[q]["flag"] for q in constants.QUALITIES], default=constants.DEFAULT_QUALITY_SHORT, help="Render at specific quality, short form of the --*_quality flags", ) diff --git a/manim/config/utils.py b/manim/config/utils.py index 73e0c3956c..b345490d57 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -74,7 +74,7 @@ def determine_quality(args): # Skip so we prioritize anything that overwrites the default quality. pass elif getattr(args, quality, None) or ( - hasattr(args, "quality") and args.quality == constants.QUALITIES[quality] + hasattr(args, "quality") and args.quality == constants.QUALITIES[quality]["flag"] ): return quality @@ -88,15 +88,6 @@ def determine_quality(args): return constants.DEFAULT_QUALITY -_QUAL = { - "low_quality": {"pixel_height": 480, "pixel_width": 854, "frame_rate": 15}, - "medium_quality": {"pixel_height": 720, "pixel_width": 1280, "frame_rate": 30}, - "high_quality": {"pixel_height": 1080, "pixel_width": 1920, "frame_rate": 60}, - "production_quality": {"pixel_height": 1440, "pixel_width": 2560, "frame_rate": 60}, - "4k_quality": {"pixel_height": 2160, "pixel_width": 3840, "frame_rate": 60}, -} - - class ManimConfig(MutableMapping): _OPTS = { @@ -689,23 +680,21 @@ def verbosity(self, val): @property def quality(self): """Video quality.""" - q = { - "pixel_width": self.pixel_width, - "pixel_height": self.pixel_height, - "frame_rate": self.frame_rate, - } - for qual in _QUAL: - if q == _QUAL[qual]: + keys = ["pixel_width", "pixel_height", "frame_rate"] + q = {k: self[k] for k in keys} + for qual in constants.QUALITIES: + if all([q[k] == constants.QUALITIES[qual][k] for k in keys]): return qual else: return None @quality.setter def quality(self, qual): - if qual not in _QUAL: - raise KeyError(f"quality must be one of {list(_QUAL.keys())}") - self.frame_size = _QUAL[qual]["pixel_width"], _QUAL[qual]["pixel_height"] - self.frame_rate = _QUAL[qual]["frame_rate"] + if qual not in constants.QUALITIES: + raise KeyError(f"quality must be one of {list(constants.QUALITIES.keys())}") + q = constants.QUALITIES[qual] + self.frame_size = q["pixel_width"], q["pixel_height"] + self.frame_rate = q["frame_rate"] @property def transparent(self): diff --git a/manim/constants.py b/manim/constants.py index 2d1a9b34c8..ec78076db5 100644 --- a/manim/constants.py +++ b/manim/constants.py @@ -141,12 +141,37 @@ class MyText(Text): # Video qualities QUALITIES = { - "fourk_quality": "k", - "production_quality": "p", - "high_quality": "h", - "medium_quality": "m", - "low_quality": "l", + "fourk_quality": { + "flag": "k", + "pixel_height": 2160, + "pixel_width": 3840, + "frame_rate": 60, + }, + "production_quality": { + "flag": "p", + "pixel_height": 1440, + "pixel_width": 2560, + "frame_rate": 60, + }, + "high_quality": { + "flag": "h", + "pixel_height": 1080, + "pixel_width": 1920, + "frame_rate": 60, + }, + "medium_quality": { + "flag": "m", + "pixel_height": 720, + "pixel_width": 1280, + "frame_rate": 30, + }, + "low_quality": { + "flag": "l", + "pixel_height": 480, + "pixel_width": 854, + "frame_rate": 15, + }, } DEFAULT_QUALITY = "high_quality" -DEFAULT_QUALITY_SHORT = QUALITIES[DEFAULT_QUALITY] +DEFAULT_QUALITY_SHORT = QUALITIES[DEFAULT_QUALITY]["flag"] diff --git a/tests/test_cli_flags.py b/tests/test_quality_flags.py similarity index 74% rename from tests/test_cli_flags.py rename to tests/test_quality_flags.py index c77b94ac13..30ca6b430b 100644 --- a/tests/test_cli_flags.py +++ b/tests/test_quality_flags.py @@ -12,26 +12,26 @@ def test_quality_flags(): for quality in constants.QUALITIES.keys(): # Assert that quality is properly set when using -q* - arguments = f"manim -q{constants.QUALITIES[quality]} dummy_filename".split() + arguments = f'manim -q{constants.QUALITIES[quality]["flag"]} dummy_filename'.split() parsed = parse_args(arguments) - assert parsed.quality == constants.QUALITIES[quality] + assert parsed.quality == constants.QUALITIES[quality]["flag"] assert quality == determine_quality(parsed) # Assert that quality is properly set when using -q * - arguments = f"manim -q {constants.QUALITIES[quality]} dummy_filename".split() + arguments = f'manim -q {constants.QUALITIES[quality]["flag"]} dummy_filename'.split() parsed = parse_args(arguments) - assert parsed.quality == constants.QUALITIES[quality] + assert parsed.quality == constants.QUALITIES[quality]["flag"] assert quality == determine_quality(parsed) # Assert that quality is properly set when using --quality * arguments = ( - f"manim --quality {constants.QUALITIES[quality]} dummy_filename".split() + f'manim --quality {constants.QUALITIES[quality]["flag"]} dummy_filename'.split() ) parsed = parse_args(arguments) - assert parsed.quality == constants.QUALITIES[quality] + assert parsed.quality == constants.QUALITIES[quality]["flag"] assert quality == determine_quality(parsed) # Assert that quality is properly set when using -*_quality From 06e76138a3200cb78e5778846288510326422f4e Mon Sep 17 00:00:00 2001 From: leotrs Date: Tue, 27 Oct 2020 23:19:31 -0400 Subject: [PATCH 28/37] clean up --- manim/config/default.cfg | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/manim/config/default.cfg b/manim/config/default.cfg index 9e4a6bcb06..64ee4b21a6 100644 --- a/manim/config/default.cfg +++ b/manim/config/default.cfg @@ -109,45 +109,6 @@ disable_caching = False # --tex_template tex_template = -# These override the previous by using -t, --transparent -[transparent] -png_mode = RGBA -movie_file_extension = .mov -background_opacity = 0 - -# These override the previous by using -k, --four_k -[fourk_quality] -pixel_height = 2160 -pixel_width = 3840 -frame_rate = 60 - -# These override the previous by using -e, --high_quality -[high_quality] -pixel_height = 1440 -pixel_width = 2560 -frame_rate = 60 - -# These override the previous by using -m, --medium_quality -[medium_quality] -pixel_height = 720 -pixel_width = 1280 -frame_rate = 30 - -# These override the previous by using -l, --low_quality -[low_quality] -pixel_height = 480 -pixel_width = 854 -frame_rate = 15 - -# These override the previous by using --dry_run -# Note --dry_run overrides all of -w, -a, -s, -g, -i -[dry_run] -write_to_movie = False -write_all = False -save_last_frame = False -save_pngs = False -save_as_gif = False - # Streaming settings [streaming] live_stream_name = LiveStream From 4b544e1350c7d7ead975007b6b837cae0799383b Mon Sep 17 00:00:00 2001 From: leotrs Date: Tue, 27 Oct 2020 23:20:31 -0400 Subject: [PATCH 29/37] blacktrack --- manim/config/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index b345490d57..327fa659fb 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -74,7 +74,8 @@ def determine_quality(args): # Skip so we prioritize anything that overwrites the default quality. pass elif getattr(args, quality, None) or ( - hasattr(args, "quality") and args.quality == constants.QUALITIES[quality]["flag"] + hasattr(args, "quality") + and args.quality == constants.QUALITIES[quality]["flag"] ): return quality From 4b4647d7c8166ef6707e5836559dc0c58ebf5601 Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 28 Oct 2020 08:37:03 -0400 Subject: [PATCH 30/37] black --- tests/test_quality_flags.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/test_quality_flags.py b/tests/test_quality_flags.py index 30ca6b430b..72752538c4 100644 --- a/tests/test_quality_flags.py +++ b/tests/test_quality_flags.py @@ -11,27 +11,26 @@ def test_quality_flags(): assert determine_quality(parsed) == constants.DEFAULT_QUALITY for quality in constants.QUALITIES.keys(): + flag = constants.QUALITIES[quality]["flag"] # Assert that quality is properly set when using -q* - arguments = f'manim -q{constants.QUALITIES[quality]["flag"]} dummy_filename'.split() + arguments = f"manim -q{flag} dummy_filename".split() parsed = parse_args(arguments) - assert parsed.quality == constants.QUALITIES[quality]["flag"] + assert parsed.quality == flag assert quality == determine_quality(parsed) # Assert that quality is properly set when using -q * - arguments = f'manim -q {constants.QUALITIES[quality]["flag"]} dummy_filename'.split() + arguments = f"manim -q {flag} dummy_filename".split() parsed = parse_args(arguments) - assert parsed.quality == constants.QUALITIES[quality]["flag"] + assert parsed.quality == flag assert quality == determine_quality(parsed) # Assert that quality is properly set when using --quality * - arguments = ( - f'manim --quality {constants.QUALITIES[quality]["flag"]} dummy_filename'.split() - ) + arguments = f"manim --quality {flag} dummy_filename".split() parsed = parse_args(arguments) - assert parsed.quality == constants.QUALITIES[quality]["flag"] + assert parsed.quality == flag assert quality == determine_quality(parsed) # Assert that quality is properly set when using -*_quality From 73e9356ffcf14e6705c91e7c743a39d139d136c3 Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 28 Oct 2020 08:48:03 -0400 Subject: [PATCH 31/37] implement digest_file --- manim/config/utils.py | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index 327fa659fb..02bcc209bf 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -47,8 +47,23 @@ def config_file_paths(): return [library_wide, user_wide, folder_wide] -def make_config_parser(): - """Make a ConfigParser object and load the .cfg files.""" +def make_config_parser(custom_file=None): + """Make a ConfigParser object and load the .cfg files. + + Parameters + ---------- + custom_file : str + + Path to a custom config file. If used, the folder-wide file in the + relevant directory will be ignored, if it exists. If None, the + folder-wide file will be used, if it exists. + + Notes + ----- + The folder-wide file can be ignored by passing custom_file. However, the + user-wide and library-wide config files cannot be ignored. + + """ library_wide, user_wide, folder_wide = config_file_paths() # From the documentation: "An application which requires initial values to # be loaded from a file should load the required file or files using @@ -56,8 +71,10 @@ def make_config_parser(): # https://docs.python.org/3/library/configparser.html#configparser.ConfigParser.read parser = configparser.ConfigParser() with open(library_wide) as file: - parser.read_file(file) - parser.read([user_wide, folder_wide]) + parser.read_file(file) # necessary file + + other_files = [user_wide, custom_file if custom_file else folder_wide] + parser.read(other_files) # optional files return parser @@ -138,7 +155,6 @@ class ManimConfig(MutableMapping): def __init__(self, parser): self._d = {k: None for k in self._OPTS} - self._parser = parser self.digest_parser(parser) # behave like a dict @@ -269,6 +285,8 @@ def _set_pos_number(self, key, val, allow_inf): # builders def digest_parser(self, parser): + self._parser = parser + # boolean keys for key in [ "write_to_movie", @@ -340,6 +358,11 @@ def digest_parser(self, parser): return self def digest_args(self, args): + # if a config file has been passed, digest it first so that other CLI + # flags supersede it + if args.config_file: + self.digest_file(args.config_file) + self.input_file = args.file self.scene_names = args.scene_names if args.scene_names is not None else [] self.output_file = args.output_file @@ -429,8 +452,9 @@ def digest_args(self, args): def digest_dict(self, _dict): return self - def digest_file(self, filename, cascade=True): - return self + def digest_file(self, filename): + if filename: + self.digest_parser(make_config_parser(filename)) # config options are properties preview = property( From 45980e56fcae16a0e2979203b23dc32d297d1e6f Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 28 Oct 2020 14:18:22 -0400 Subject: [PATCH 32/37] added new test and fixed a couple of things with deepcopy --- manim/config/utils.py | 79 +++++++++--------------------- manim/scene/scene_file_writer.py | 3 ++ tests/test_config.py | 46 +++++++++++++++-- tests/test_container.py | 23 +++++---- tests/utils/GraphicalUnitTester.py | 9 ++-- 5 files changed, 82 insertions(+), 78 deletions(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index 02bcc209bf..fb8acefeb4 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -153,9 +153,11 @@ class ManimConfig(MutableMapping): "write_to_movie", } - def __init__(self, parser): + def __init__(self, parser=None): self._d = {k: None for k in self._OPTS} - self.digest_parser(parser) + self._parser = parser + if parser: + self.digest_parser(parser) # behave like a dict def __iter__(self): @@ -177,6 +179,21 @@ def __getitem__(self, key): def __setitem__(self, key, val): getattr(ManimConfig, key).fset(self, val) # fset is the property's setter + def update(self, obj): + if isinstance(obj, ManimConfig): + self._d.update(obj._d) + + elif isinstance(obj, dict): + # First update the underlying _d, then update other properties + _dict = {k: v for k, v in obj.items() if k in self._d} + for k, v in _dict.items(): + self[k] = v + + _dict = {k: v for k, v in obj.items() if k not in self._d} + for k, v in _dict.items(): + self[k] = v + + # don't allow to delete anything def __delitem__(self, key): raise AttributeError("'ManimConfig' object does not support item deletion") @@ -192,58 +209,8 @@ def __copy__(self): return copy.deepcopy(self) def __deepcopy__(self, memo): - c = ManimConfig(self._parser) - - for opt in [ - "background_color", - "background_opacity", - "custom_folders", - "disable_caching", - "ffmpeg_loglevel", - "flush_cache", - "frame_height", - "frame_rate", - "frame_width", - "from_animation_number", - "js_renderer_path", - "leave_progress_bars", - "log_to_file", - "max_files_cached", - "movie_file_extension", - "pixel_height", - "pixel_width", - "png_mode", - "preview", - "progress_bar", - "save_as_gif", - "save_last_frame", - "save_pngs", - "scene_names", - "show_in_file_browser", - "skip_animations", - "sound", - "tex_template_file", - "upto_animation_number", - "use_js_renderer", - "verbosity", - "write_all", - "write_to_movie", - ]: - setattr(c, opt, getattr(self, opt)) - - # setattr() on the following options actually returns something - # different to their stored value, so we need to get the actual value - for opt in [ - "media_dir", - "input_file", - "images_dir", - "log_dir", - "tex_dir", - "text_dir", - "video_dir", - ]: - c._d[opt] = self._d[opt] - + c = ManimConfig() + c._d = copy.deepcopy(self._d, memo) return c # helper type-checking methods @@ -450,11 +417,11 @@ def digest_args(self, args): return self def digest_dict(self, _dict): - return self + pass def digest_file(self, filename): if filename: - self.digest_parser(make_config_parser(filename)) + return self.digest_parser(make_config_parser(filename)) # config options are properties preview = property( diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index b177dd2c9c..874cd7fdde 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -59,6 +59,9 @@ def init_output_directories(self, scene_name): files will be written to and read from (within MEDIA_DIR). If they don't already exist, they will be created. """ + if config['dry_run']: + return + module_directory = self.get_default_module_directory() default_name = self.get_default_scene_name(scene_name) if config["save_last_frame"] or config["save_pngs"]: diff --git a/tests/test_config.py b/tests/test_config.py index a7c8437a34..c58f197dbd 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -37,12 +37,13 @@ def test_transparent(): orig_verbosity = config["verbosity"] config["verbosity"] = "ERROR" - scene = MyScene() - scene.render() - frame = scene.renderer.get_frame() + with tempconfig({'dry_run': True}): + scene = MyScene() + scene.render() + frame = scene.renderer.get_frame() assert np.allclose(frame[0, 0], [0, 0, 0, 255]) - with tempconfig({"transparent": True}): + with tempconfig({"transparent": True, 'dry_run': True}): scene = MyScene() scene.render() frame = scene.renderer.get_frame() @@ -53,8 +54,43 @@ def test_transparent(): def test_background_color(): """Test the 'background_color' config option.""" - with tempconfig({"background_color": WHITE, "verbosity": "ERROR"}): + with tempconfig({"background_color": WHITE, "verbosity": "ERROR", "dry_run": True}): scene = MyScene() scene.render() frame = scene.renderer.get_frame() assert np.allclose(frame[0, 0], [255, 255, 255, 255]) + + +def test_digest_file(): + """Test that a config file can be digested programatically.""" + assert config['media_dir'] == Path('media') + assert config['video_dir'] == Path('media/videos') + + with tempconfig({}): + temp_cfg = tempfile.NamedTemporaryFile() + with open(temp_cfg.name, 'w') as file: + file.write(""" + [CLI] + media_dir = this_is_my_favorite_path + video_dir = {media_dir}/videos + """ + ) + config.digest_file(temp_cfg.name) + assert config['media_dir'] == Path('this_is_my_favorite_path') + assert config['video_dir'] == Path('this_is_my_favorite_path/videos') + + assert config['media_dir'] == Path('media') + assert config['video_dir'] == Path('media/videos') + + +def test_temporary_dry_run(): + """Test that tempconfig correctly restores after setting dry_run.""" + assert config["write_to_movie"] + assert not config["save_last_frame"] + + with tempconfig({"dry_run": True}): + assert not config["write_to_movie"] + assert not config["save_last_frame"] + + assert config["write_to_movie"] + assert not config["save_last_frame"] diff --git a/tests/test_container.py b/tests/test_container.py index 5a26b3ba56..c49979981f 100644 --- a/tests/test_container.py +++ b/tests/test_container.py @@ -1,5 +1,5 @@ import pytest -from manim import Container, Mobject, Scene +from manim import Container, Mobject, Scene, tempconfig def test_ABC(): @@ -9,7 +9,9 @@ def test_ABC(): # The following should work without raising exceptions Mobject() - Scene() + + with tempconfig({'dry_run': True}): + Scene() def container_add(obj, get_submobjects): @@ -63,13 +65,10 @@ def test_mobject_remove(): container_remove(obj, lambda: obj.submobjects) -def test_scene_add(): - """Test Scene.add().""" - scene = Scene() - container_add(scene, lambda: scene.mobjects) - - -def test_scene_remove(): - """Test Scene.remove().""" - scene = Scene() - container_remove(scene, lambda: scene.mobjects) +def test_scene_add_remove(): + """Test Scene.add() and Scene.remove().""" + with tempconfig({'dry_run': True}): + scene = Scene() + container_add(scene, lambda: scene.mobjects) + scene = Scene() + container_remove(scene, lambda: scene.mobjects) diff --git a/tests/utils/GraphicalUnitTester.py b/tests/utils/GraphicalUnitTester.py index 9c7682c525..8b46bffb55 100644 --- a/tests/utils/GraphicalUnitTester.py +++ b/tests/utils/GraphicalUnitTester.py @@ -2,7 +2,7 @@ import logging import numpy as np -from manim import config +from manim import config, tempconfig class GraphicalUnitTester: @@ -54,8 +54,6 @@ def __init__( config["tex_dir"] = os.path.join(self.path_tests_medias_cache, "Tex") config["skip_animations"] = True - config["save_last_frame"] = True - config["write_to_movie"] = False config["disable_caching"] = True config["quality"] = "low_quality" @@ -66,8 +64,9 @@ def __init__( ]: os.makedirs(dir_temp) - self.scene = scene_object() - self.scene.render() + with tempconfig({"dry_run": True}): + self.scene = scene_object() + self.scene.render() def _load_data(self): """Load the np.array of the last frame of a pre-rendered scene. If not found, throw FileNotFoundError. From 58705ab514e5d7a60fb7b7fd3525aceaf77b0644 Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 28 Oct 2020 14:18:39 -0400 Subject: [PATCH 33/37] prefer Path to raw strings --- manim/config/utils.py | 29 ++++++++++++++++++----------- manim/scene/scene_file_writer.py | 12 +++++++----- manim/utils/file_ops.py | 8 +++----- manim/utils/module_ops.py | 5 +++-- tests/test_config.py | 4 +++- 5 files changed, 34 insertions(+), 24 deletions(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index fb8acefeb4..9d1111ab53 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -743,13 +743,13 @@ def use_js_renderer(self, val): js_renderer_path = property( lambda self: self._d["js_renderer_path"], - lambda self, val: self._d.__setitem__("js_renderer_path", Path(val)), + lambda self, val: self._d.__setitem__("js_renderer_path", val), doc="Path to JS renderer.", ) media_dir = property( - lambda self: self._d["media_dir"], - lambda self, val: self._d.__setitem__("media_dir", Path(val)), + lambda self: Path(self._d["media_dir"]), + lambda self, val: self._d.__setitem__("media_dir", val), doc="Main output directory, relative to execution directory.", ) @@ -766,35 +766,42 @@ def _get_dir(self, key): ] dirs.remove(key) dirs = {k: self._d[k] for k in dirs} - return self._d[key].format(**dirs) + path = self._d[key].format(**dirs) + return Path(path) if path else None + + def _set_dir(self, key, val): + if isinstance(val, Path): + self._d.__setitem__(key, str(val)) + else: + self._d.__setitem__(key, val) log_dir = property( lambda self: self._get_dir("log_dir"), - lambda self, val: self._d.__setitem__("log_dir", val), + lambda self, val: self._set_dir("log_dir", val), doc="Directory to place logs", ) video_dir = property( lambda self: self._get_dir("video_dir"), - lambda self, val: self._d.__setitem__("video_dir", val), + lambda self, val: self._set_dir("video_dir", val), doc="Directory to place videos", ) images_dir = property( lambda self: self._get_dir("images_dir"), - lambda self, val: self._d.__setitem__("images_dir", val), + lambda self, val: self._set_dir("images_dir", val), doc="Directory to place images", ) text_dir = property( lambda self: self._get_dir("text_dir"), - lambda self, val: self._d.__setitem__("text_dir", val), + lambda self, val: self._set_dir("text_dir", val), doc="Directory to place text", ) tex_dir = property( lambda self: self._get_dir("tex_dir"), - lambda self, val: self._d.__setitem__("tex_dir", val), + lambda self, val: self._set_dir("tex_dir", val), doc="Directory to place tex", ) @@ -806,13 +813,13 @@ def _get_dir(self, key): input_file = property( lambda self: self._get_dir("input_file"), - lambda self, val: self._d.__setitem__("input_file", val), + lambda self, val: self._set_dir("input_file", val), doc="Input file name.", ) output_file = property( lambda self: self._get_dir("output_file"), - lambda self, val: self._d.__setitem__("output_file", val), + lambda self, val: self._set_dir("output_file", val), doc="Output file name.", ) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index 874cd7fdde..2b4cd42bfe 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -12,6 +12,7 @@ from time import sleep import datetime from PIL import Image +from pathlib import Path from .. import config, logger, console from ..constants import FFMPEG_BIN, GIF_FILE_EXTENSION @@ -98,10 +99,11 @@ def init_output_directories(self, scene_name): default_name, config["movie_file_extension"] ), ) - self.gif_file_path = os.path.join( - movie_dir, - add_extension_if_not_present(default_name, GIF_FILE_EXTENSION), - ) + if config['save_as_gif']: + self.gif_file_path = os.path.join( + movie_dir, + add_extension_if_not_present(default_name, GIF_FILE_EXTENSION), + ) if not config["custom_folders"]: self.partial_movie_directory = guarantee_existence( os.path.join( @@ -172,7 +174,7 @@ def get_default_scene_name(self, scene_name): The default scene name. """ fn = config["output_file"] - return fn if fn else scene_name + return fn if fn else Path(scene_name) def get_resolution_directory(self): """Get the name of the resolution directory directly containing diff --git a/manim/utils/file_ops.py b/manim/utils/file_ops.py index 856c59941d..b79e6c316d 100644 --- a/manim/utils/file_ops.py +++ b/manim/utils/file_ops.py @@ -11,16 +11,14 @@ import os import platform -import numpy as np import time -import re import subprocess as sp +from pathlib import Path def add_extension_if_not_present(file_name, extension): - # This could conceivably be smarter about handling existing differing extensions - if file_name[-len(extension) :] != extension: - return file_name + extension + if file_name.suffix != extension: + return file_name.with_suffix(extension) else: return file_name diff --git a/manim/utils/module_ops.py b/manim/utils/module_ops.py index 455e3ee454..1ef96befb2 100644 --- a/manim/utils/module_ops.py +++ b/manim/utils/module_ops.py @@ -28,9 +28,10 @@ def get_module(file_name): sys.exit(2) else: if os.path.exists(file_name): - if file_name[-3:] != ".py": + ext = file_name.suffix + if ext != ".py": raise ValueError(f"{file_name} is not a valid Manim python script.") - module_name = file_name[:-3].replace(os.sep, ".").split(".")[-1] + module_name = ext.replace(os.sep, ".").split(".")[-1] spec = importlib.util.spec_from_file_location(module_name, file_name) module = importlib.util.module_from_spec(spec) sys.modules[module_name] = module diff --git a/tests/test_config.py b/tests/test_config.py index c58f197dbd..946055cee1 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,5 +1,7 @@ -import pytest +import tempfile +from pathlib import Path import numpy as np + from manim import config, tempconfig, Scene, Square, WHITE From 04d2da4384dedc0c7b160e7624a17a46677d4d79 Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 28 Oct 2020 14:22:54 -0400 Subject: [PATCH 34/37] fix a wrong merge --- manim/scene/scene.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manim/scene/scene.py b/manim/scene/scene.py index 51abb8a09c..1c31ca10d2 100644 --- a/manim/scene/scene.py +++ b/manim/scene/scene.py @@ -653,7 +653,7 @@ def get_time_progression( ProgressDisplay The CommandLine Progress Bar. """ - if file_writer_config["skip_animations"] and not override_skip_animations: + if config["skip_animations"] and not override_skip_animations: times = [run_time] else: step = 1 / self.renderer.camera.frame_rate @@ -661,9 +661,9 @@ def get_time_progression( time_progression = ProgressDisplay( times, total=n_iterations, - leave=file_writer_config["leave_progress_bars"], + leave=config["leave_progress_bars"], ascii=True if platform.system() == "Windows" else None, - disable=not file_writer_config["progress_bar"], + disable=not config["progress_bar"], ) return time_progression From c9a6a830f6acbd855c02c4c0635a34d5c8673d3b Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 28 Oct 2020 14:42:11 -0400 Subject: [PATCH 35/37] use Path --- manim/scene/scene_file_writer.py | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index 2b4cd42bfe..50d5ed6ea6 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -63,7 +63,10 @@ def init_output_directories(self, scene_name): if config['dry_run']: return - module_directory = self.get_default_module_directory() + if config["input_file"]: + module_directory = config["input_file"].stem + else: + module_directory = "" default_name = self.get_default_scene_name(scene_name) if config["save_last_frame"] or config["save_pngs"]: if config["media_dir"] != "": @@ -147,20 +150,6 @@ def add_partial_movie_file(self, hash_animation): ) self.partial_movie_files.append(new_partial_movie_file) - def get_default_module_directory(self): - """ - This method gets the name of the directory containing - the file that has the Scene that is being rendered. - - Returns - ------- - str - The name of the directory. - """ - filename = os.path.basename(config["input_file"]) - root, _ = os.path.splitext(filename) - return root - def get_default_scene_name(self, scene_name): """ This method returns the default scene name From 4e28d1f6ae536ed13f7e0344a09fb60011fbd946 Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 28 Oct 2020 14:42:46 -0400 Subject: [PATCH 36/37] black --- manim/config/utils.py | 3 +-- manim/scene/scene_file_writer.py | 4 ++-- tests/test_config.py | 21 +++++++++++---------- tests/test_container.py | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index 9d1111ab53..40bf9eaeb3 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -74,7 +74,7 @@ def make_config_parser(custom_file=None): parser.read_file(file) # necessary file other_files = [user_wide, custom_file if custom_file else folder_wide] - parser.read(other_files) # optional files + parser.read(other_files) # optional files return parser @@ -193,7 +193,6 @@ def update(self, obj): for k, v in _dict.items(): self[k] = v - # don't allow to delete anything def __delitem__(self, key): raise AttributeError("'ManimConfig' object does not support item deletion") diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py index 50d5ed6ea6..321ab05678 100644 --- a/manim/scene/scene_file_writer.py +++ b/manim/scene/scene_file_writer.py @@ -60,7 +60,7 @@ def init_output_directories(self, scene_name): files will be written to and read from (within MEDIA_DIR). If they don't already exist, they will be created. """ - if config['dry_run']: + if config["dry_run"]: return if config["input_file"]: @@ -102,7 +102,7 @@ def init_output_directories(self, scene_name): default_name, config["movie_file_extension"] ), ) - if config['save_as_gif']: + if config["save_as_gif"]: self.gif_file_path = os.path.join( movie_dir, add_extension_if_not_present(default_name, GIF_FILE_EXTENSION), diff --git a/tests/test_config.py b/tests/test_config.py index 946055cee1..fc598c6288 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -39,13 +39,13 @@ def test_transparent(): orig_verbosity = config["verbosity"] config["verbosity"] = "ERROR" - with tempconfig({'dry_run': True}): + with tempconfig({"dry_run": True}): scene = MyScene() scene.render() frame = scene.renderer.get_frame() assert np.allclose(frame[0, 0], [0, 0, 0, 255]) - with tempconfig({"transparent": True, 'dry_run': True}): + with tempconfig({"transparent": True, "dry_run": True}): scene = MyScene() scene.render() frame = scene.renderer.get_frame() @@ -65,24 +65,25 @@ def test_background_color(): def test_digest_file(): """Test that a config file can be digested programatically.""" - assert config['media_dir'] == Path('media') - assert config['video_dir'] == Path('media/videos') + assert config["media_dir"] == Path("media") + assert config["video_dir"] == Path("media/videos") with tempconfig({}): temp_cfg = tempfile.NamedTemporaryFile() - with open(temp_cfg.name, 'w') as file: - file.write(""" + with open(temp_cfg.name, "w") as file: + file.write( + """ [CLI] media_dir = this_is_my_favorite_path video_dir = {media_dir}/videos """ ) config.digest_file(temp_cfg.name) - assert config['media_dir'] == Path('this_is_my_favorite_path') - assert config['video_dir'] == Path('this_is_my_favorite_path/videos') + assert config["media_dir"] == Path("this_is_my_favorite_path") + assert config["video_dir"] == Path("this_is_my_favorite_path/videos") - assert config['media_dir'] == Path('media') - assert config['video_dir'] == Path('media/videos') + assert config["media_dir"] == Path("media") + assert config["video_dir"] == Path("media/videos") def test_temporary_dry_run(): diff --git a/tests/test_container.py b/tests/test_container.py index c49979981f..27aca4262d 100644 --- a/tests/test_container.py +++ b/tests/test_container.py @@ -10,7 +10,7 @@ def test_ABC(): # The following should work without raising exceptions Mobject() - with tempconfig({'dry_run': True}): + with tempconfig({"dry_run": True}): Scene() @@ -67,7 +67,7 @@ def test_mobject_remove(): def test_scene_add_remove(): """Test Scene.add() and Scene.remove().""" - with tempconfig({'dry_run': True}): + with tempconfig({"dry_run": True}): scene = Scene() container_add(scene, lambda: scene.mobjects) scene = Scene() From e89a96d6de9e5a54d7d6218a2f55ca2cfc8faa28 Mon Sep 17 00:00:00 2001 From: leotrs Date: Wed, 28 Oct 2020 15:12:10 -0400 Subject: [PATCH 37/37] fix test on windows --- manim/config/utils.py | 1 + tests/test_config.py | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/manim/config/utils.py b/manim/config/utils.py index 40bf9eaeb3..4f03815de9 100644 --- a/manim/config/utils.py +++ b/manim/config/utils.py @@ -75,6 +75,7 @@ def make_config_parser(custom_file=None): other_files = [user_wide, custom_file if custom_file else folder_wide] parser.read(other_files) # optional files + return parser diff --git a/tests/test_config.py b/tests/test_config.py index fc598c6288..adeda7f249 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -63,22 +63,23 @@ def test_background_color(): assert np.allclose(frame[0, 0], [255, 255, 255, 255]) -def test_digest_file(): +def test_digest_file(tmp_path): """Test that a config file can be digested programatically.""" assert config["media_dir"] == Path("media") assert config["video_dir"] == Path("media/videos") with tempconfig({}): - temp_cfg = tempfile.NamedTemporaryFile() - with open(temp_cfg.name, "w") as file: - file.write( - """ - [CLI] - media_dir = this_is_my_favorite_path - video_dir = {media_dir}/videos - """ - ) - config.digest_file(temp_cfg.name) + tmp_cfg = tempfile.NamedTemporaryFile("w", dir=tmp_path, delete=False) + tmp_cfg.write( + """ + [CLI] + media_dir = this_is_my_favorite_path + video_dir = {media_dir}/videos + """ + ) + tmp_cfg.close() + config.digest_file(tmp_cfg.name) + assert config["media_dir"] == Path("this_is_my_favorite_path") assert config["video_dir"] == Path("this_is_my_favorite_path/videos")