From afc3c94b04256e0d27bad599b1ad76356575c54f Mon Sep 17 00:00:00 2001 From: James Collins Date: Tue, 14 Feb 2023 15:01:06 +1000 Subject: [PATCH] drop axios/date-fns/fontawesome --- app/Http/Controllers/Api/UserController.php | 4 +- app/Services/AnimatedGifService.php | 698 ++++++++++++++++++ app/Services/ImageService.php | 9 - package-lock.json | 314 +------- package.json | 8 - public/img/background.jpg | Bin 0 -> 56542 bytes resources/css/app.scss | 135 +--- resources/css/utils.scss | 18 +- resources/js/{axios.js => axios.js.old} | 0 resources/js/bootstrap.js | 8 +- resources/js/components/SMButton.vue | 12 +- resources/js/components/SMCarousel.vue | 28 +- resources/js/components/SMCarouselSlide.vue | 11 +- resources/js/components/SMContainer.vue | 15 +- resources/js/components/SMDatePicker.vue | 2 +- resources/js/components/SMDialog.vue | 5 +- resources/js/components/SMFooter.vue | 24 +- resources/js/components/SMForm.vue | 36 + resources/js/components/SMFormFooter.vue | 29 +- resources/js/components/SMHeading.vue | 6 +- resources/js/components/SMInput.vue | 307 +++++--- resources/js/components/SMLoader.vue | 25 +- resources/js/components/SMLoadingIcon.vue | 66 ++ resources/js/components/SMMediaInput.vue | 360 +++++++++ resources/js/components/SMMessage.vue | 23 +- resources/js/components/SMNavbar.vue | 41 +- resources/js/components/SMPage.vue | 97 +++ resources/js/components/SMPageError.vue | 2 +- resources/js/components/SMPanel.vue | 21 +- resources/js/components/SMPanelList.vue | 6 +- resources/js/components/SMSelect.vue | 2 +- .../dialogs/SMDialogChangePassword.vue | 11 +- .../js/components/dialogs/SMDialogMedia.vue | 36 +- resources/js/components/errors/Forbidden.vue | 22 +- resources/js/components/errors/Internal.vue | 25 +- resources/js/components/errors/NotFound.vue | 22 +- resources/js/helpers/api.ts | 190 +++++ resources/js/helpers/common.js | 121 --- resources/js/helpers/datetime.ts | 221 ++++++ resources/js/helpers/form.ts | 137 ++++ resources/js/helpers/string.js | 5 + resources/js/helpers/utils.ts | 11 + resources/js/helpers/validate.ts | 440 +++++++++++ .../{validation.js => validation.old.js} | 0 resources/js/main.js | 6 +- resources/js/router/index.js | 8 +- resources/js/store/UserStore.ts | 20 +- resources/js/views/App.vue | 2 - resources/js/views/Contact.vue | 152 ++-- resources/js/views/EmailVerify.vue | 101 +-- resources/js/views/EventView.vue | 14 +- resources/js/views/ForgotPassword.vue | 110 +-- resources/js/views/ForgotUsername.vue | 104 +-- resources/js/views/Home.vue | 155 ++-- resources/js/views/Login.vue | 203 ++--- resources/js/views/Logout.vue | 31 +- resources/js/views/NewsList.vue | 18 +- resources/js/views/NewsView.vue | 46 +- resources/js/views/Register.vue | 265 +++---- resources/js/views/ResendEmailVerify.vue | 102 +-- resources/js/views/ResetPassword.vue | 136 +--- resources/js/views/Rules.vue | 8 +- resources/js/views/Terms.vue | 8 +- resources/js/views/Unsubscribe.vue | 109 +-- resources/js/views/WorkshopList.vue | 21 +- resources/js/views/WorkshopView.vue | 32 +- resources/js/views/dashboard/CreatePost.vue | 156 ++-- resources/js/views/dashboard/Dashboard.vue | 22 +- resources/js/views/dashboard/EventEdit.vue | 1 - resources/js/views/dashboard/EventList.vue | 7 +- resources/js/views/dashboard/MediaList.vue | 7 +- resources/js/views/dashboard/PostList.vue | 7 +- resources/js/views/dashboard/UserList.vue | 7 +- resources/views/app.blade.php | 2 + vite.config.js | 3 +- 75 files changed, 3416 insertions(+), 2000 deletions(-) create mode 100644 app/Services/AnimatedGifService.php delete mode 100644 app/Services/ImageService.php create mode 100644 public/img/background.jpg rename resources/js/{axios.js => axios.js.old} (100%) create mode 100644 resources/js/components/SMForm.vue create mode 100644 resources/js/components/SMLoadingIcon.vue create mode 100644 resources/js/components/SMMediaInput.vue create mode 100644 resources/js/components/SMPage.vue create mode 100644 resources/js/helpers/api.ts create mode 100644 resources/js/helpers/datetime.ts create mode 100644 resources/js/helpers/form.ts create mode 100644 resources/js/helpers/string.js create mode 100644 resources/js/helpers/utils.ts create mode 100644 resources/js/helpers/validate.ts rename resources/js/helpers/{validation.js => validation.old.js} (100%) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index e92130d..3e1382b 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -240,7 +240,7 @@ class UserController extends ApiController } return $this->respondError([ - 'code' => 'The code was not found or has expired' + 'code' => 'The code was not found or has expired.' ]); } @@ -278,7 +278,7 @@ class UserController extends ApiController }//end if return $this->respondWithErrors([ - 'code' => 'The code was not found or has expired' + 'code' => 'The code was not found or has expired.' ]); } diff --git a/app/Services/AnimatedGifService.php b/app/Services/AnimatedGifService.php new file mode 100644 index 0000000..e446e15 --- /dev/null +++ b/app/Services/AnimatedGifService.php @@ -0,0 +1,698 @@ + 0. + * @param integer $dataSize GIF blob size. + * @return boolean GIF file/blob is animated. + */ + public static function isAnimatedGif(string $filenameOrBlob, int $dataSize = 0) + { + $regex = '#\x00\x21\xF9\x04.{4}\x00(\x2C|\x21)#s'; + $count = 0; + + if ($dataSize > 0) { + if (($fh = @fopen($filenameOrBlob, 'rb')) === false) { + return false; + } + + $chunk = false; + while (feof($fh) === false && $count < 2) { + $chunk = ($chunk !== '' ? substr($chunk, -20) : "") . fread($fh, (1024 * 100)); //read 100kb at a time + $count += preg_match_all($regex, $chunk, $matches); + } + + fclose($fh); + } else { + $count = preg_match_all($regex, $filenameOrBlob, $matches); + } + + return $count > 1; + } + + /** + * Extract frames of a GIF + * + * @param string $filenameOrBlob GIF filename path + * @param integer $dataSize GIF blob size. + * @param boolean $originalFrames Get original frames (with transparent background) + * + * @return array + */ + public function extract(string $filenameOrBlob, int $dataSize = 0, $originalFrames = false) + { + if (self::isAnimatedGif($filenameOrBlob) === false) { + return []; + } + + $this->reset(); + $this->parseFramesInfo($filename); + $prevImg = null; + + for ($i = 0; $i < count($this->frameSources); $i++) { + $this->frames[$i] = []; + $this->frameDurations[$i] = $this->frames[$i]['duration'] = $this->frameSources[$i]['delay_time']; + + $img = imagecreatefromstring($this->fileHeader["gifheader"] . $this->frameSources[$i]["graphicsextension"] . $this->frameSources[$i]["imagedata"] . chr(0x3b)); + + if (!$originalFrames) { + if ($i > 0) { + $prevImg = $this->frames[($i - 1)]['image']; + } else { + $prevImg = $img; + } + + $sprite = imagecreate($this->gifMaxWidth, $this->gifMaxHeight); + imagesavealpha($sprite, true); + + $transparent = imagecolortransparent($prevImg); + + if ($transparent > -1 && imagecolorstotal($prevImg) > $transparent) { + $actualTrans = imagecolorsforindex($prevImg, $transparent); + imagecolortransparent($sprite, imagecolorallocate($sprite, $actualTrans['red'], $actualTrans['green'], $actualTrans['blue'])); + } + + if ((int) $this->frameSources[$i]['disposal_method'] == 1 && $i > 0) { + imagecopy($sprite, $prevImg, 0, 0, 0, 0, $this->gifMaxWidth, $this->gifMaxHeight); + } + + imagecopyresampled($sprite, $img, $this->frameSources[$i]["offset_left"], $this->frameSources[$i]["offset_top"], 0, 0, $this->gifMaxWidth, $this->gifMaxHeight, $this->gifMaxWidth, $this->gifMaxHeight); + $img = $sprite; + }//end if + + $this->frameImages[$i] = $this->frames[$i]['image'] = $img; + }//end for + + return $this->frames; + } +} + +class GifFrameExtractor +{ + // Properties + // =================================================================================== + + /** + * @var resource + */ + private $gif; + + /** + * @var array + */ + private $frames; + + /** + * @var array + */ + private $frameDurations; + + /** + * @var array + */ + private $frameImages; + + /** + * @var array + */ + private $framePositions; + + /** + * @var array + */ + private $frameDimensions; + + /** + * @var integer + * + * (old: $this->index) + */ + private $frameNumber; + + /** + * @var array + * + * (old: $this->imagedata) + */ + private $frameSources; + + /** + * @var array + * + * (old: $this->fileHeader) + */ + private $fileHeader; + + /** + * @var integer The reader pointer in the file source + * + * (old: $this->pointer) + */ + private $pointer; + + /** + * @var integer + */ + private $gifMaxWidth; + + /** + * @var integer + */ + private $gifMaxHeight; + + /** + * @var integer + */ + private $totalDuration; + + /** + * @var integer + */ + private $handle; + + /** + * @var array + * + * (old: globaldata) + */ + private $globaldata; + + /** + * @var array + * + * (old: orgvars) + */ + private $orgvars; + + // Methods + // =================================================================================== + + + /** + * Parse the frame informations contained in the GIF file + * + * @param string $filename GIF filename path + */ + private function parseFramesInfo($filename) + { + $this->openFile($filename); + $this->parseGifHeader(); + $this->parseGraphicsExtension(0); + $this->getApplicationData(); + $this->getApplicationData(); + $this->getFrameString(0); + $this->parseGraphicsExtension(1); + $this->getCommentData(); + $this->getApplicationData(); + $this->getFrameString(1); + + while (!$this->checkByte(0x3b) && !$this->checkEOF()) { + $this->getCommentData(1); + $this->parseGraphicsExtension(2); + $this->getFrameString(2); + $this->getApplicationData(); + } + } + + /** + * Parse the gif header (old: get_gif_header) + */ + private function parseGifHeader() + { + $this->pointerForward(10); + + if ($this->readBits(($mybyte = $this->readByteInt()), 0, 1) == 1) { + $this->pointerForward(2); + $this->pointerForward(pow(2, ($this->readBits($mybyte, 5, 3) + 1)) * 3); + } else { + $this->pointerForward(2); + } + + $this->fileHeader["gifheader"] = $this->dataPart(0, $this->pointer); + + // Decoding + $this->orgvars["gifheader"] = $this->fileHeader["gifheader"]; + $this->orgvars["background_color"] = $this->orgvars["gifheader"][11]; + } + + /** + * Parse the application data of the frames (old: get_application_data) + */ + private function getApplicationData() + { + $startdata = $this->readByte(2); + + if ($startdata == chr(0x21) . chr(0xff)) { + $start = ($this->pointer - 2); + $this->pointerForward($this->readByteInt()); + $this->readDataStream($this->readByteInt()); + $this->fileHeader["applicationdata"] = $this->dataPart($start, ($this->pointer - $start)); + } else { + $this->pointerRewind(2); + } + } + + /** + * Parse the comment data of the frames (old: get_comment_data) + */ + private function getCommentData() + { + $startdata = $this->readByte(2); + + if ($startdata == chr(0x21) . chr(0xfe)) { + $start = ($this->pointer - 2); + $this->readDataStream($this->readByteInt()); + $this->fileHeader["commentdata"] = $this->dataPart($start, ($this->pointer - $start)); + } else { + $this->pointerRewind(2); + } + } + + /** + * Parse the graphic extension of the frames (old: get_graphics_extension) + * + * @param integer $type + */ + private function parseGraphicsExtension($type) + { + $startdata = $this->readByte(2); + + if ($startdata == chr(0x21) . chr(0xf9)) { + $start = ($this->pointer - 2); + $this->pointerForward($this->readByteInt()); + $this->pointerForward(1); + + if ($type == 2) { + $this->frameSources[$this->frameNumber]["graphicsextension"] = $this->dataPart($start, ($this->pointer - $start)); + } elseif ($type == 1) { + $this->orgvars["hasgx_type_1"] = 1; + $this->globaldata["graphicsextension"] = $this->dataPart($start, ($this->pointer - $start)); + } elseif ($type == 0) { + $this->orgvars["hasgx_type_0"] = 1; + $this->globaldata["graphicsextension_0"] = $this->dataPart($start, ($this->pointer - $start)); + } + } else { + $this->pointerRewind(2); + }//end if + } + + /** + * Get the full frame string block (old: get_image_block) + * + * @param integer $type + */ + private function getFrameString($type) + { + if ($this->checkByte(0x2c)) { + $start = $this->pointer; + $this->pointerForward(9); + + if ($this->readBits(($mybyte = $this->readByteInt()), 0, 1) == 1) { + $this->pointerForward(pow(2, ($this->readBits($mybyte, 5, 3) + 1)) * 3); + } + + $this->pointerForward(1); + $this->readDataStream($this->readByteInt()); + $this->frameSources[$this->frameNumber]["imagedata"] = $this->dataPart($start, ($this->pointer - $start)); + + if ($type == 0) { + $this->orgvars["hasgx_type_0"] = 0; + + if (isset($this->globaldata["graphicsextension_0"])) { + $this->frameSources[$this->frameNumber]["graphicsextension"] = $this->globaldata["graphicsextension_0"]; + } else { + $this->frameSources[$this->frameNumber]["graphicsextension"] = null; + } + + unset($this->globaldata["graphicsextension_0"]); + } elseif ($type == 1) { + if (isset($this->orgvars["hasgx_type_1"]) && $this->orgvars["hasgx_type_1"] == 1) { + $this->orgvars["hasgx_type_1"] = 0; + $this->frameSources[$this->frameNumber]["graphicsextension"] = $this->globaldata["graphicsextension"]; + unset($this->globaldata["graphicsextension"]); + } else { + $this->orgvars["hasgx_type_0"] = 0; + $this->frameSources[$this->frameNumber]["graphicsextension"] = $this->globaldata["graphicsextension_0"]; + unset($this->globaldata["graphicsextension_0"]); + } + }//end if + + $this->parseFrameData(); + $this->frameNumber++; + }//end if + } + + /** + * Parse frame data string into an array (old: parse_image_data) + */ + private function parseFrameData() + { + $this->frameSources[$this->frameNumber]["disposal_method"] = $this->getImageDataBit("ext", 3, 3, 3); + $this->frameSources[$this->frameNumber]["user_input_flag"] = $this->getImageDataBit("ext", 3, 6, 1); + $this->frameSources[$this->frameNumber]["transparent_color_flag"] = $this->getImageDataBit("ext", 3, 7, 1); + $this->frameSources[$this->frameNumber]["delay_time"] = $this->dualByteVal($this->getImageDataByte("ext", 4, 2)); + $this->totalDuration += (int) $this->frameSources[$this->frameNumber]["delay_time"]; + $this->frameSources[$this->frameNumber]["transparent_color_index"] = ord($this->getImageDataByte("ext", 6, 1)); + $this->frameSources[$this->frameNumber]["offset_left"] = $this->dualByteVal($this->getImageDataByte("dat", 1, 2)); + $this->frameSources[$this->frameNumber]["offset_top"] = $this->dualByteVal($this->getImageDataByte("dat", 3, 2)); + $this->frameSources[$this->frameNumber]["width"] = $this->dualByteVal($this->getImageDataByte("dat", 5, 2)); + $this->frameSources[$this->frameNumber]["height"] = $this->dualByteVal($this->getImageDataByte("dat", 7, 2)); + $this->frameSources[$this->frameNumber]["local_color_table_flag"] = $this->getImageDataBit("dat", 9, 0, 1); + $this->frameSources[$this->frameNumber]["interlace_flag"] = $this->getImageDataBit("dat", 9, 1, 1); + $this->frameSources[$this->frameNumber]["sort_flag"] = $this->getImageDataBit("dat", 9, 2, 1); + $this->frameSources[$this->frameNumber]["color_table_size"] = (pow(2, ($this->getImageDataBit("dat", 9, 5, 3) + 1)) * 3); + $this->frameSources[$this->frameNumber]["color_table"] = substr($this->frameSources[$this->frameNumber]["imagedata"], 10, $this->frameSources[$this->frameNumber]["color_table_size"]); + $this->frameSources[$this->frameNumber]["lzw_code_size"] = ord($this->getImageDataByte("dat", 10, 1)); + + $this->framePositions[$this->frameNumber] = [ + 'x' => $this->frameSources[$this->frameNumber]["offset_left"], + 'y' => $this->frameSources[$this->frameNumber]["offset_top"], + ]; + + $this->frameDimensions[$this->frameNumber] = [ + 'width' => $this->frameSources[$this->frameNumber]["width"], + 'height' => $this->frameSources[$this->frameNumber]["height"], + ]; + + // Decoding + $this->orgvars[$this->frameNumber]["transparent_color_flag"] = $this->frameSources[$this->frameNumber]["transparent_color_flag"]; + $this->orgvars[$this->frameNumber]["transparent_color_index"] = $this->frameSources[$this->frameNumber]["transparent_color_index"]; + $this->orgvars[$this->frameNumber]["delay_time"] = $this->frameSources[$this->frameNumber]["delay_time"]; + $this->orgvars[$this->frameNumber]["disposal_method"] = $this->frameSources[$this->frameNumber]["disposal_method"]; + $this->orgvars[$this->frameNumber]["offset_left"] = $this->frameSources[$this->frameNumber]["offset_left"]; + $this->orgvars[$this->frameNumber]["offset_top"] = $this->frameSources[$this->frameNumber]["offset_top"]; + + // Updating the max width + if ($this->gifMaxWidth < $this->frameSources[$this->frameNumber]["width"]) { + $this->gifMaxWidth = $this->frameSources[$this->frameNumber]["width"]; + } + + // Updating the max height + if ($this->gifMaxHeight < $this->frameSources[$this->frameNumber]["height"]) { + $this->gifMaxHeight = $this->frameSources[$this->frameNumber]["height"]; + } + } + + /** + * Get the image data byte (old: get_imagedata_byte) + * + * @param string $type + * @param integer $start + * @param integer $length + * + * @return string + */ + private function getImageDataByte($type, $start, $length) + { + if ($type == "ext") { + return substr($this->frameSources[$this->frameNumber]["graphicsextension"], $start, $length); + } + + // "dat" + return substr($this->frameSources[$this->frameNumber]["imagedata"], $start, $length); + } + + /** + * Get the image data bit (old: get_imagedata_bit) + * + * @param string $type + * @param integer $byteIndex + * @param integer $bitStart + * @param integer $bitLength + * + * @return number + */ + private function getImageDataBit($type, $byteIndex, $bitStart, $bitLength) + { + if ($type == "ext") { + return $this->readBits(ord(substr($this->frameSources[$this->frameNumber]["graphicsextension"], $byteIndex, 1)), $bitStart, $bitLength); + } + + // "dat" + return $this->readBits(ord(substr($this->frameSources[$this->frameNumber]["imagedata"], $byteIndex, 1)), $bitStart, $bitLength); + } + + /** + * Return the value of 2 ASCII chars (old: dualbyteval) + * + * @param string $s + * + * @return integer + */ + private function dualByteVal($s) + { + $i = (ord($s[1]) * 256 + ord($s[0])); + + return $i; + } + + /** + * Read the data stream (old: read_data_stream) + * + * @param integer $firstLength + */ + private function readDataStream($firstLength) + { + $this->pointerForward($firstLength); + $length = $this->readByteInt(); + + if ($length != 0) { + while ($length != 0) { + $this->pointerForward($length); + $length = $this->readByteInt(); + } + } + } + + /** + * Open the gif file (old: loadfile) + * + * @param string $filename + */ + private function openFile($filename) + { + $this->handle = fopen($filename, "rb"); + $this->pointer = 0; + + $imageSize = getimagesize($filename); + $this->gifWidth = $imageSize[0]; + $this->gifHeight = $imageSize[1]; + } + + /** + * Close the read gif file (old: closefile) + */ + private function closeFile() + { + fclose($this->handle); + $this->handle = 0; + } + + /** + * Read the file from the beginning to $byteCount in binary (old: readbyte) + * + * @param integer $byteCount + * + * @return string + */ + private function readByte($byteCount) + { + $data = fread($this->handle, $byteCount); + $this->pointer += $byteCount; + + return $data; + } + + /** + * Read a byte and return ASCII value (old: readbyte_int) + * + * @return integer + */ + private function readByteInt() + { + $data = fread($this->handle, 1); + $this->pointer++; + + return ord($data); + } + + /** + * Convert a $byte to decimal (old: readbits) + * + * @param string $byte + * @param integer $start + * @param integer $length + * + * @return number + */ + private function readBits($byte, $start, $length) + { + $bin = str_pad(decbin($byte), 8, "0", STR_PAD_LEFT); + $data = substr($bin, $start, $length); + + return bindec($data); + } + + /** + * Rewind the file pointer reader (old: p_rewind) + * + * @param integer $length + */ + private function pointerRewind($length) + { + $this->pointer -= $length; + fseek($this->handle, $this->pointer); + } + + /** + * Forward the file pointer reader (old: p_forward) + * + * @param integer $length + */ + private function pointerForward($length) + { + $this->pointer += $length; + fseek($this->handle, $this->pointer); + } + + /** + * Get a section of the data from $start to $start + $length (old: datapart) + * + * @param integer $start + * @param integer $length + * + * @return string + */ + private function dataPart($start, $length) + { + fseek($this->handle, $start); + $data = fread($this->handle, $length); + fseek($this->handle, $this->pointer); + + return $data; + } + + /** + * Check if a character if a byte (old: checkbyte) + * + * @param integer $byte + * + * @return boolean + */ + private function checkByte($byte) + { + if (fgetc($this->handle) == chr($byte)) { + fseek($this->handle, $this->pointer); + return true; + } + + fseek($this->handle, $this->pointer); + + return false; + } + + /** + * Check the end of the file (old: checkEOF) + * + * @return boolean + */ + private function checkEOF() + { + if (fgetc($this->handle) === false) { + return true; + } + + fseek($this->handle, $this->pointer); + + return false; + } + + /** + * Reset and clear this current object + */ + private function reset() + { + $this->gif = null; + $this->totalDuration = $this->gifMaxHeight = $this->gifMaxWidth = $this->handle = $this->pointer = $this->frameNumber = 0; + $this->frameDimensions = $this->framePositions = $this->frameImages = $this->frameDurations = $this->globaldata = $this->orgvars = $this->frames = $this->fileHeader = $this->frameSources = []; + } + + // Getter / Setter + // =================================================================================== + + + /** + * Get the total of all added frame duration + * + * @return integer + */ + public function getTotalDuration() + { + return $this->totalDuration; + } + + /** + * Get the number of extracted frames + * + * @return integer + */ + public function getFrameNumber() + { + return $this->frameNumber; + } + + /** + * Get the extracted frames (images and durations) + * + * @return array + */ + public function getFrames() + { + return $this->frames; + } + + /** + * Get the extracted frame positions + * + * @return array + */ + public function getFramePositions() + { + return $this->framePositions; + } + + /** + * Get the extracted frame dimensions + * + * @return array + */ + public function getFrameDimensions() + { + return $this->frameDimensions; + } + + /** + * Get the extracted frame images + * + * @return array + */ + public function getFrameImages() + { + return $this->frameImages; + } + + /** + * Get the extracted frame durations + * + * @return array + */ + public function getFrameDurations() + { + return $this->frameDurations; + } +} diff --git a/app/Services/ImageService.php b/app/Services/ImageService.php deleted file mode 100644 index be65efd..0000000 --- a/app/Services/ImageService.php +++ /dev/null @@ -1,9 +0,0 @@ -=6.0.0" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.5.0.tgz", - "integrity": "sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@element-plus/icons-vue": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz", - "integrity": "sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==", - "peerDependencies": { - "vue": "^3.2.0" - } - }, "node_modules/@es-joy/jsdoccomment": { "version": "0.36.1", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz", @@ -439,85 +415,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@floating-ui/core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.1.1.tgz", - "integrity": "sha512-PL7g3dhA4dHgZfujkuD8Q+tfJJynEtnNQSPzmucCnxMvkxf4cLBJw/ZYqZUn4HCh33U3WHrAfv2R2tbi9UCSmw==" - }, - "node_modules/@floating-ui/dom": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.1.tgz", - "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==", - "dependencies": { - "@floating-ui/core": "^1.1.0" - } - }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz", - "integrity": "sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==", - "hasInstallScript": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz", - "integrity": "sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.2.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/free-brands-svg-icons": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.1.tgz", - "integrity": "sha512-L8l4MfdHPmZlJ72PvzdfwOwbwcCAL0vx48tJRnI6u1PJXh+j2f3yDoKyQgO3qjEsgD5Fr2tQV/cPP8F/k6aUig==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.2.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/free-regular-svg-icons": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.2.1.tgz", - "integrity": "sha512-wiqcNDNom75x+pe88FclpKz7aOSqS2lOivZeicMV5KRwOAeypxEYWAK/0v+7r+LrEY30+qzh8r2XDaEHvoLsMA==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.2.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz", - "integrity": "sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.2.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/vue-fontawesome": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz", - "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==", - "peerDependencies": { - "@fortawesome/fontawesome-svg-core": "~1 || ~6", - "vue": ">= 3.0.0 < 4" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -644,16 +541,6 @@ "node": ">= 8" } }, - "node_modules/@popperjs/core": { - "name": "@sxzz/popperjs-es", - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", - "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/@types/eslint": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz", @@ -685,19 +572,6 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, - "node_modules/@types/lodash": { - "version": "4.14.191", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", - "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" - }, - "node_modules/@types/lodash-es": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.6.tgz", - "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", - "dependencies": { - "@types/lodash": "*" - } - }, "node_modules/@types/node": { "version": "18.11.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", @@ -710,11 +584,6 @@ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.50.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", @@ -1037,39 +906,6 @@ "vue": ">=3.2.0" } }, - "node_modules/@vueuse/core": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.12.0.tgz", - "integrity": "sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==", - "dependencies": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.12.0", - "@vueuse/shared": "9.12.0", - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/metadata": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.12.0.tgz", - "integrity": "sha512-9oJ9MM9lFLlmvxXUqsR1wLt1uF7EVbP5iYaHJYqk+G2PbMjY6EXvZeTjbdO89HgoF5cI6z49o2zT/jD9SVoNpQ==", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.12.0.tgz", - "integrity": "sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==", - "dependencies": { - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -1331,28 +1167,6 @@ "node": ">=8" } }, - "node_modules/async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/axios": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.1.tgz", - "integrity": "sha512-78pWJsQTceInlyaeBQeYZ/QgZeWS8hGeKiIJiDKQe3hEyBb7sEMq0K4gjx+Va6WHTYO4zI/RRl8qGRzn0YMadA==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1538,18 +1352,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1622,11 +1424,6 @@ "date-fns": ">=2.0.0" } }, - "node_modules/dayjs": { - "version": "1.11.7", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", - "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1650,15 +1447,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1702,31 +1490,6 @@ "integrity": "sha512-47o4PPgxfU1KMNejz+Dgaodf7YTcg48uOfV1oM6cs3adrl2+7R+dHkt3Jpxqo0LRCbGJEzTKMUt0RdvByb/leg==", "peer": true }, - "node_modules/element-plus": { - "version": "2.2.29", - "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.2.29.tgz", - "integrity": "sha512-g4dcrURrKkR5uUX8n5RVnnqGnimoki9HfqS4yHHG6XwCHBkZGozdq4x+478BzeWUe31h++BO+7dakSx4VnM8RQ==", - "dependencies": { - "@ctrl/tinycolor": "^3.4.1", - "@element-plus/icons-vue": "^2.0.6", - "@floating-ui/dom": "^1.0.1", - "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", - "@types/lodash": "^4.14.182", - "@types/lodash-es": "^4.17.6", - "@vueuse/core": "^9.1.0", - "async-validator": "^4.2.5", - "dayjs": "^1.11.3", - "escape-html": "^1.0.3", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "lodash-unified": "^1.0.2", - "memoize-one": "^6.0.0", - "normalize-wheel-es": "^1.2.0" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -1799,11 +1562,6 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2195,40 +1953,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2638,22 +2362,8 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash-unified": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", - "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", - "peerDependencies": { - "@types/lodash-es": "*", - "lodash": "*", - "lodash-es": "*" - } + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -2681,11 +2391,6 @@ "sourcemap-codec": "^1.4.8" } }, - "node_modules/memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -2718,6 +2423,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -2726,6 +2432,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -2794,11 +2501,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-wheel-es": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", - "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" - }, "node_modules/normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", @@ -3034,12 +2736,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", diff --git a/package.json b/package.json index 19ba6f6..471be87 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.48.1", "@typescript-eslint/parser": "^5.48.1", - "axios": "^1.1.2", "eslint": "^8.31.0", "eslint-config-prettier": "^8.6.0", "eslint-plugin-jsdoc": "^39.6.4", @@ -22,16 +21,9 @@ "vite": "^4.0.0" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.2.1", - "@fortawesome/free-brands-svg-icons": "^6.2.1", - "@fortawesome/free-regular-svg-icons": "^6.2.1", - "@fortawesome/free-solid-svg-icons": "^6.2.1", - "@fortawesome/vue-fontawesome": "^3.0.2", "@vitejs/plugin-vue": "^4.0.0", "@vuepic/vue-datepicker": "^3.6.4", - "date-fns": "^2.29.3", "dotenv": "^16.0.3", - "element-plus": "^2.2.27", "normalize.css": "^8.0.1", "pinia": "^2.0.28", "pinia-plugin-persistedstate": "^3.0.1", diff --git a/public/img/background.jpg b/public/img/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e2439680c67fb7f53e946a4565f1a35eed77e1a5 GIT binary patch literal 56542 zcmeFZc_5VS|1W;eFi5h5P?kZKkYy|}S;kJrzL$O9mqC`updw@qsq8!1Q<0F8E!mgw z6rn6_ghDvit)8Ceob&yj^E-e4KKC^DT=#XqukH1Iz2DcW{fYe4fuZ3O>s8IS`)>>w>Hmyf_4gc(4%G};v+{hhWM{6dO8J|2#ctDcLumm^wC9IZ$2 zMr+#!!LL9K;nIHnib)BJK@dh1BaRitV8z7HVrQ@tVps_Y2s$2l`|mm+wj;Ct4kM8< zT>sQ3hVOS62SG^?L=N&L1({)zNdB%Hk}?_bD;|L)0S$vFf0d79PeK04lQ)IrPrPsn z>7TGv3iUA^SEzC3Q_Lc2Q1ahXbLi)#BQJG!`Pgb*AJLv)Pn zL)`6U9JmzZ(Xv62A2vvi>mYM12*c4LT<8N4e|I@9Gi^PzvNypI z)J#%XlnbOLI5=SqRMdW_1y6EZzbhFS7$_VlF6>Qk77>$?kr5Hah+r_Mfy8OQU@w2$ zpwnJ{+<)hw;^=1&TJG=a?S+POw6*gN@R#EPB_CADHUL!WziPW9u*-wS0|~gE2hyH_ z&Zh}}e-gm;fZO3<>u($AO>lSha&{(o2lyO-=V$NY=xOUGLI8+)d-?sz!^g$j-`mf{ z+viU<{}bkaULO?xcfkP1|62TS75z(4Tl@bk>goBXE`I*17XcXmRr~+W*v}}~$5F(< z(a$@8VDG4U(b3DFn+pvH%J;xcd2c*aoBZfCK;v`zuR0^MB`R^tUA!j&@m+t~?jIA8k-{8WO{VfSwva6$mk++JgCx96y5c>Bk7l4E)MuO|_=KwEPph6$l zAV-fsae;DN5~AW5E|Gt7{8cvI)zAO8X&E~D{tkJ#{to=xR(_ZEtA=W}_KyFq9njg| z#e?dI3X4jL13UcJh51vJU)A&SCV1LYPP?E#c7E&=%RH{O50 zGPecwlKiLo%HCd1t`3e~_KtYRi;i%rf9e3EqNxJdBQAANun6p5{)Hhx^&sjGzJCJ$ z68gIa{~v)q13SEbF3EqI@P7eXQbOX4l$ea@@4KYbpSB+$Eg>rN=N&Bf55EqOmcq#V zKVmESC;vaNA7G352fzOvTj_s*{|DS(H2yz=d+_oXp+$ac^nc>}{~YND6a)N(wl-D+ zn1eSV_&5FkZ4u}L*NC;XhdT~nUIcH40DG9dzvBJ8o%{oB366@+z#qzSDLOg10y6|I z2zKshF<~)LVF2(i*+3UZkOMq&`mdb{Y^48g!2epc|E}erZ-i6+>15^6|GEByz<&_< z4+8%|;6Dib2Z8_pA@I*M-O&ror~<(xeE$<}!R#wD$ zh~xy1IxASvbL^Mw@M$=&kGlm4(pS}=dES4b8#2i(^0(A~^GoRfruyLBPw*AB_aXR$l@TEj z)(iCafy1F7%s>E@0%5QM1u;1P3Kzm*yI`1^J=>(Q1*GeGhh&cq&4}dfm{G7z$ zn5;EPj$8=pZB=f`ksS{~Q1gAxXf3EaIR+ z2aN)Yd!WAL6yU8mSb#;4z!xdOCaA|5(-JrdG4ZvTOy$qDIUDZwPhxm7SF?g+>|%;#AnaySjK zyL4`ol;Z9kiX;M4AVK($0{f3G_#EaU`h$Ss{=uhx$Wgsy z-DuSS3aeI0hq0-HYz~xzFassFQR0q6q5u{E7R-1=1O%gTh)4$A0=N;CC?Ehm920pR zl*Eig003<$kP)Jg3(6(JaezjydLLR&R_|>{+>73gc)i}f^*qg5YdGUmfxt9QloT$^ zh74K5OF=?ug1oO+No#r%Wq@<8W-V6r`Lc8-sfy>4(_0+>w&_fypvOf4;j67PN76U@ zw~ijfvcbU@%RIE*4bi8@KS5Op0|#fi@%Za?vi z8PT$Md_z&SMO&kzD$LW6W8OV}+rF$KysO!Hcv1a~ADR-ViQ z3p3S~aMJ&}4;d(XzHF^4s91dc?w&%8{Or<}Q+#;t*_B*6BA`(lBnTlyL4Uylx2i58 z5-P0WkLnbOT|L#9)-5R5Pvj*F@|y zgJF?86z0Aaq+9eMPv27z-*WZDr%zZPa-BEVrhOEf=-T;x&{!f4QfZ?{ks<+Jh!m)h zp_>$ogFogBsAL@FU6q39va!j`M<3j~-I#7@u6d~oTDX0$&erzLuG3lF5|IDw6Y`SC zPlltVgorpIjsoNcKof-^-A^Pv+qYTr6c%ZsL#mjoMLrIMYw9x2?OqA%9X9Nv2*-uE z?B?Ro&_N@}AS5l01Xv@531kBYAUfhbzzgtR00HU2)CU^~&Fhqaw@_th8*+y(zDPBmZ3N1)?y?Ns#`5U?qmr#GeKoGCMPL&G@IpV^g*_GrzmT*-LhK(Xw zqfGUz0iFj-;g0H4yWFyaMD{ls6GSIqG|WnMpqhZLzp85^2!H^M1jGTr@B#+_DhKj} zSV;LHH5{M{xliPQG+Kv`NQRcHb({=kHZN-;zSl9Ru9!G^9ligqB@@x$cc z@4L81RV&!-j@d~_?&M2;9M0=cxOZ#5w2r^vGsQPK;F}RR24HpkCrLrCn}kD?LbS}R zSynOyT!}YACUbh6@@2h}Hs6SREchgUqwKaG$=iY8NObKL;65N^4eW=BI0g^`P8lfV z00L&vm7!19D5k&D32Ay6nNo>K+NWr4cLfWN>f znw-Qfo=Tzcj}!v-QNXkE1M|YY6K;NOFW=3ka9+=z`uzNf{KN+ZFE=wu;if}GePu`k zWJOTKkn*FI(1=$fW3Czn^YRZ%UiPVkZgziq0(vJ7yLDsyFp)#OA-Fguj>v*^IFy8@ z{KWzyKZF9#0$2f{00=;lqMSH%Jp5Qn3!FF!s5JzvgaURY@SVs2w23qZtydqZhFkAm z4Y$7bSL>1E`_Ore2oi+{L`UG@Q7W<~7eYg@e?mqk9m5??qKkm-50ptk3f*LYmCpv8 z0vozS#jubhH(G;pfM%i~=kgxah*Psut+4r!^!zs_nt9JxW!Lrn&m}fEtUY;wN5)d3 zJwWqG8T6F$XaSUHaDlQ&~ zBwk!5(D;G+ff4{efr_CvA{hjXftHF0@*;s8K;0Yw8605m0Ot;P@aqnAk0Y9zezLVv z7^$A+O1x{~7qHj1*^+Ld(#O6%{!z`?4?@KNf540Y4j5=2p;Q1y(SSh|2%I@|8m9)v z*$}A>L_rH881%ZKC1{Bj?rTj>GAwceSD+e$+-79$(|kuYa&Gnf^G0X0xzxUKp#PW2 z%X9#M`r=@#RXiD!T^!<|?73*nW{CG^BET>VNu$mfdCo& z2w%W*n_BHjUTkOnJZT*I`QaJsk2Ky(0nhQHmmYi9vM_;eMi0&sG#O^90Kw{d@&JYogCppJJJf}nMlp$q z+Jt@?^X-#K=boF4ezCd_IYl?GYg^gqZ|q`%i;i;V9dKbD=o-p}Rs6RNKwSU|NRJl> z;kXfIaM$I4NP@dim={O~k|aO@h!=dp1>6J5I0p=G=q0V* zzx}ADnoAXdi~;naf(N@cf{S z2=E2$SR}(~?iR7inOGn5l9^vUf9GZ9kc=sNi6Nejkt#N^T=44r)|G+0<1`$%|hdeVP+BXO?G!*%Qf34|j+0C2wDy50NctX--tX`F%WjaZR9U z&02Hb*m!>2eD-Ef%zIkacCxPm)gn>+Ut6loi!e`DEA8hl?nCwZ><{H0Z+t`0x^K~ zff*j~kOYkh(|4Rshfu+vD>s{UjUxU7OkTE3MqGXD&Zpv(68FS>4K$S?^=1vmyV%gFxs# z)?<3=JGN)RUj6Y+6Z&ZiYo9!U{&#JwZ_3`s_bIMsU5d-ty&dx<1Y0G5E8UU0ZYW{D zOMCI=BeWx$4HFH_oFoZ2_ygDgPMMGtvW64tB0)nWHrzI3Z7g8;#tZlZLxaHRV@SJU zfT?Z*q!DlcCUl7X|hqEANfVVc?5qR>w`0~W9g4csPbf`?O7}|0N zUeh4FTa9JHA|tZ;UGDRt7mgl@>bgmS5N zIHES;F5A5j={siYKCEWzcLfdD6Ue(lq%)J&eX2Z(Elj~CDinw8s*A=+;iynB4*`f2nZV~yAZo}oazR@G8^PfxVEDWm;2ru15%?9- zZrm?W6=A4>769Q%yH&dMe#Me@;kqHv!;}G}^JjlDvvZI1&v7Nv(10G&_|iV49hNMn zUR$uq&GqssEtkM83WgJi3y=fKgD8c3fPBCJU{0c#M>e9!(PT4}NylE;NPXpf$Nw3c zN8TdmQRz|ybU4gq1Yibk5_Fp|=9mK)iejR9*L$?NrB;|_m`NyGYWF>UiM1k=r`ueD zPM@$yK43x9r+`08hw~pm467JmT@KY8sv%yo&&4X|S#tRc7Glc<4cncHoElBN-JJ_4 zXYbmYdL3O3@vWBEuX<}VIpz?Uz=9oXip`dhdcUmyXu9c&%ru}XR4<>hW%vPvsz zZOjKq3)HP)eU_WR?G1?Y3EP;@k_NsMj$@M!FsHtYDR0gwdnOQ-cQZCRPCytC?g|z$ zs0@q+_#*7V(2x8hUHZ~bb34=2F~^amxO83apgmZ1Bm&2IRAXog#J_nDb3sXh2xdL5 zSSSfkN)|(xAHT6Ju7AfuPPuUkDEsnfuhZG_R-t!$G7?~w`E(BrZIHch#C8g7V#8i6 zRw-fi%bt>pm<5B8amset<@p!2027rKwO{zlQ;;N%z^)bZ3lE6#K4Z-M?Z1pz+*!MKdCHbK^gTGx-quHNU^)7@bRBOeZTz#E555`GkLoy%8Q z(a#Rl4CLu9W6;?We($CI(&*K0u(+R_O@2u9d|zK#WaisFyv5`#!NA7PPVdJfA9v1Y zkGF+gSd+^pS>Z_8ktH8f0RC9M7I<&eb|-Mthc-sfT5?N2A;g+@`z_GFZspHJ&3WL^<=9oN_tXozTlIft3kB^OWT^wj@M%q< z^x1MB%wQJwvP+$x?&v&S#k29! zDj2J=aIq7)nIC-CZsDSOPIK9Hd0jPXQ=Uo7R|3L1gRjP$hP+a*1oPJI8vx!Fw{n92@Y7-}r**$)&NFQRRx!ucgfy zC8kRGYt)tT1K0ow`rP@5p++=aH*^NgJI@GiGh{Qwd5D0xK(6cyO_O#5Z`BA@;f_3| zM{7UTues{M??rKk2;ArIZXI#T7G?9eaUzF@^~;FKPY3E7mHm%0&|dL%F(+Vi23E{@ z&?_;(b`03n@4rVS*dB5lSaI-S=Y1%7uh)28M5lG?`m2f&wV>**lMqa}gvfwelL(H*TaCr$et-;3|Iv$z?x&%R$68J6>R zF(p{y&riF2XUWm_sVZPkU>vm{@~Nt4PY_Ido9G$BWW z!;<6V(r3Q0&aS1;G~m9xqkAtgd3ahqkb}G8Gt=_iy#G3fF$Z@^;r6X95nasRn4q@_E60x|(0Af$;b7lq{OyU^cA$+8XwWZg8-2iQyY7 zCI1G2%6lSKfo6@9IXqU){bQ|{stMIrIqHpnF{Z0DES?$z7NV2$#!7MIyJ?cY+z53^ zQ^d%3T5R?^a>Hrd;-wfi8efvU&uD+S=cyu{j#%+9XSiJ^80L z;vX^^#LbVy|5f{;;Y9qI?!|T)%Xq2pGG!x6cG`)`w#L#`Ix^}WegWJk2VXoscZ0>{ z26gOw+@PxB$Z-V%*6x+gX4b@)xc)l>Q}T3^(qr2g0VzXAwOg3{=OoX;7YsHQ!6GFX z=H<2!2^%bSR3moHR@L$cv-3bOJMU9F7mX)LNi6C5IkjF0mLL)5xrlTqF*>NKMDggO zkh&lB#ga3-9CJ@sFmCvDdu#G_$KBwiR~K$HvpC(ok9|4O?W^czBms=hjvppa<-U;cB8=$jTT54J}<}Nu|?iGW<(5Qj| zkd`moPJtn%8Ocb2A7aiD)J1%H)qba#k6HJXH6c z`g~2rJKlG{c^Jxlk5IX8uC}bI z79$#Gr|*FC*8{!&!4RCEO!cTP1$Sb(*1NtJ?$4Kpx5Nv5x<9Naq)N2kTQkBs(sObc zCWB7jxTX{=i{SE9!74-7l^k5!i&4|3cRFT)X|%1lFL1YrL~L7yJ30BUymuJZNzlhG z3}n@XT_3mbdspI7Kky`Ao1H;y;)!pse5FyeMJ0zz0G2vwX<##2C;CCBPE-^d_Jnze zzd_Q{Fc0VGQj5yc$jfM5%_h~Q#WP+0>+NznT59xps6jdmRi7YQGmPBvjx3zOayx{p@W{GKl`!oREVHJi2C8 zJ&^GJvbt`b<;c&3>H+zx%jO}ixb5yO_Kd|Ga|NLg`Rg0?Yn|Zz`p>$J%Mlyj);f!} z$(QNZ9U!J2~B=@WA(~)trrvU z%sul<|K(uGrMHVquiv~nMR+-Vw|;U-Sw9m!i&xMS^jeCPB1|ZqkgTbcBrqq(Ls_pTFf|5~-&r_dua!i6vx>Hv) zmQ$lAqno6|+%6TwZIpevtWHy@dudHN%;jwKywCQ~;|%x?!p-vc6K1zqtt(GfaU?%m zGVYn(5}_$F7KGoVSyX6#XO+L1P?$rg9!k-{3r+MJ#3ffX+1H$!lGtV%esGrU(s54- zdx7tZz151&tS5bXT3V`CAJ+CQUP+}a_n_q65>lSp?ZjKG1+MRPmN4DnBSb9*0N$FN zDDx-5Qy%cP7V63alSmsDc)jUdVr0S93SGckOi-3VIB!6LOt=Y~mQd{Ot3q{4 zvg|=_XoEegI5Noywm%W~xjZS);?Clz(MNK%iHlhK5{;#sOO~9&MgGw`8L!!}*45)G%{=mcW&?Sz}bt~mZ+r(FaXF($o?Jp!6wK3@G`mSWaH$Si4gxzyXw3Td12UH zli~aBHR~VJUsc_Btg@2UwH(K$t7deYO^!t|wWQ!=r%o0x*1s3Mn6&74bJ@!V{9E*P zz@C`E-g&K)))$rch>cN7x%f>RwFmSb42~^`ciM|LAp)f-nyw3)pqwyhPCGZII507R z6#&*)u3R=~l(f7)n16k&Sc{P%+R~@HYVweTmi2{iXOHzBVkLz2S2sX zpt)uiSJ^Tj(9z3x`C07}a6qr~2H9Ar7HiH7{!*jA-mw=)ZdxAq$eYuQuq*6DZ1z5t zqCRxr2T#q_RPoM=My{fy;WpS)Gbzq~@1J1&yy6*9YNp<6icJ3PX9`lgr_5+0!Jb~8 z9x?`@)SD}qS}yc7UG`4N>WpO9&%(ftudR3=?&p0iQk_asGl_C8%W7IDY2zV1LkO&y zc9EkQ+S$>f^w6>d@=;WgFS*75PFJ!nQqq5WBDt*&)lT|di3pVxp8 zjU{=?kg00aLwP5OoB+uX9}~|eQO+YDKwYF1P#Y-)sVxrP!T__?t7L6p?^G(PG?%Hw zsNKKk7S{6-Bu~MFmQ}iY)*b9joZe1p>0bya4J%!+_A~wQKsQQwxv;(L4u7$3$_sbZ z>gj|>jSlO_NmG;hicqKJ`xqMgSaDx1@9=btACDciOHF>XV0CeJt*1jT(_HEt zuaf+O%bweI5lBvCP0?Ynu#7NMKckmm)606Xf3DrV=DoUyHO+?ltsHu+Jp07Bw=l&w zlP-+RpbOO|+X!s`u)?csR5-BFW+R9=4~|+%=z)Dq$^lAvjRdR=Qf5N)h*PtS z4vv*R1=Dp{`)IReYo6(mjwv<)p3-XG<|b_v+;<=UAyiT-w83uPbbQI0Z@RCe_q2&b z`>a-Dw)C`gtx-4YM{FkjHA85JNUn$a4pEmPMxjf&GuR?4#<9cgO>MK5dd)Qcn{?jA6EY~=XC_upek;o4<zRBz;L81%e%nKJ$~as8pC6z=<{X68a@{Ju_PK?Wemn#vGXX8 zJZ6@aUOHQLchjnrWV42M0q3?-h5QQD;^WgFgp@K^F&<$Bi#lT8Xuv|tJX$4{n# zE(AL}-H-ud2%3qsK@drB+=_@?CWtLpyGYL$!9y$P3v29PV;VA-@FYE2Y=@!f4TO3wDGkSj7b-5i0TF<5v-Zb)FB{exYBPEv;yq$FCbzJQ1sx4`Aj#TjiQv=>vq23VF&7UR;R0xj z_0e~50-RL&BsP)I3H~blDP}zvDCwBWsiccQcT)kd?v{pjbc{DQ_MvNcxa%@SPu<}! zYSCh;Ob;iVote8cXjVnH*zuuzvZ46Rk=1Cop1+!Xtk?oid)8!-&FeH7l@_|Gowp^8 zdm0Kgh*HlSH9$6EVhh_e8BE%b;%uK}quWj6$5wWyVYgsgD~GIIcXyt$SxG!s%7q;510(qSczNMyR~{I8K^BWq9t4@8Zpyz#?Zm9 zB9$ruGFPFTgaV=5YpPVBTcibhs~A!|MVlHeIHiLEvl(W}LA}Sg6H3?GNQj8%R1XcN zj=7z6@2nOp|LapfpNIX@(#V?WxM%lTVDkFL%3LP)Q%muWFJdU;Ymej?ttjvPyz*}Q z42_(o{TZf9_^K(3yLDhj&tBJV9xLszb)t5zu!%XSR6(GeMn`mZYVVRRd?Opn1%CP z&m`?^Nr4BfjKCo9oT>Z{Z4O;*qTDvZxKk0}paBI55o}$f5J|}E#OuUTWX;hqWY^rX zvDh*H7jn0KSDvph-tkTyj1S9VmK}Y5Cl%ZInE6%D0E(=g%v|+;Q8)Reb2;6tYd%v7 ziS9+s9qgew9P8>%bTji?nI~*)S|;eH$d#v{op2&|AsDbwT6+k1AZ?*;G^NI=6r5Vp z;Wm^6yz@v8+juVc5>=tdT3?}AP9`K zhP))tN-vJ?J-l#H+}dxgNp#V#y1x3S&}+6d4b)WQ?fB{fxA)s@V)5s{xQ6)O%^)wJ zvcOck7rFk3CnV~KeP~$n^kguYS>hJHa;h*k4mce|3Z)HW4Py;m-4zec3y>7bFPY43 zRN8@6Tc@NWohRsqQ)t%`D8W6kOA>p^`7C1xb~1Php+#B?F~9Y}3V(G0QtB$1pa z8MTeu&V6foDb8}DWA?2=B6)cyy|c>?j$)al(6n#j?nUT@^ES^I-E33A+AzNwQj~a$ z`WDr}m;5AU+bQ@^6WBlDH-S9RV5zti0y|g_P{xj{f@aN|)rNG=cx$b1oiU>VPWW}Z z9c;-e*rQ%tZ@+IW7{hp9FIP^!knI!i>2Buke%VXxE1GeWiSoK>+oFN4Rn(GeQuaNe zbnV5^5l9rFi8ziER5Y$(Ow$;k=Trxy0X&f%Y+gr#10`G?N6FfewhT}VE{KwapIXtl z2gjXs_>q7E#e^PMfMn>R1`2^>D9tgk(~*%5RJZhT=JB_Mfz&@W}?jaZ!3opZy1b5Xis+$}C`l$#R=M*sQD@jKhr#gsrLPQI!OY&Rcg{xz z=bewA>XI=jCr}yJCOKt^MnW#6E~qv|a83aJNa0w}nNTr_1N2(y0q}7iC=ZHMN2}9U zd3#^H7nF-mi0ZXE<*Zrt?7ENP$wBFk*i1U@z*WbDTe7d}g--@_Y$%+4wrsFfKNz>N zybrOK$m=93bv0i#|1>YcFmerHcRfH*@KausMw=DMGq+EQaf7> z^X{@%%zk-x{ZV4hP3`9nRX9~Ni^icxD34RjBoLkfkJ8R%q%F9Qs3EE0@_tw~k_`2~(mfw_Ty>gb zd>3FI3UA4iRV>`LNftP*NDlU0H{qQd5^(H;mIdX(kCM>1)~2M1FdBz^H#FWKm1LFb z2h;uJEsalcvwNlA{DP88I$tYPoa#zo%s)zH5~Cq*Qfz|1MKcj`QZGJ2iOU9S1Dq`_ zbOj|^kPX1wv9@-)_hj? zRj;r8l^;A$8#JE0 zT({fa{<7McZitnm3pnJMJL2y$JRRSpQt2@{3-$;M8qz<pr-2L_6%$`||cGd)A#_g$Q803+~d+-;M(BdeO%a)o}H>_6*yazhM z`d^MUs##m3?w84QA5;4j=>J5nuZsGI%|g1aYvEG)DOvVr(ct=S;73P}&V1p%QCT}P z#HJxIQAdtbJLusa=z(2uun%r5Gb1RcnYq}13UR^4)EMmC$?jExvns4>L6thzykM5q zQMx73rNX%eW`u#XVR;;PFDF9?J+$ai6$9cT8P_qKv8YT)ydRmHjK@C2e%LY^bJp(1 z+hW-wE8aeN-q*X#7}*VfX1n`_wzpe^?q!Kaw?yMh%YK?*9e z$X+2gb%Phz-ao?5u~!BKEPnJn#zY?K8^(6tl7ArHRQX=Vr%uzO=Xf72&8oWjrtoy! zZFuy3Y$cmo#%|Sf2n^hxg|cEgzHPetd7bik>D$?ns8BZbSvSh;$@#juPPcS#k*F5Q z^$m~UsW@}h7V5euK_7VA4P1LEUyPOleqh9dL zGW*7-hE;KbdDLT1*H1-H<1WNH)~t6N5!*2LE1)Nx-87c`a>5c2*BcNBAOH>xA< zBvP^fHvzWo2|bdNgKq``$D^&{bZUDnSQ<9M|>e zVoIK`e&YPl(_;O)tJ5Uy4ooi`^gY0Q$0P3q+z%=my=S~#_;OICC`r%;I#snNRLkyd zmP54!==4O*n%7Ill-D~If5l80J|uwHynoquTg3({rGwOPPuep{OVH*BBjSg*>Y`2s zEc;O6;p%6fvG2ANie)|f>7Cvl_TNjPO60k4jHP0htKPI-@%95DOsy#Msq++65CTsu zM%CJ);9Xrr5{WJ41ax>&sB6T(U5@OIZr)P6e0n^4>|456Ip)sM@tCpdE1rwVv8J*c z0$-Pzy4M3b8)}9OB46qR z@)g@nofc-^(U+54xLp}uhX!lbsxG%3{#V-fZpZu#FYz?1$*RLkI)%sVtdgcgIcb5HHP64~Aus2op5$+^L zDPt8}H>nsSl88cCYn2HOR_ywJ;!clW-Q0)72bLZ@o}76j-Ey-x`ICgF!U-!H6J{Cb z)bZCB_*H#Ed=sP|@?7yud4SZs$!&uYLU;%u2{0^8<(^Zo~zFReJIhLUWniL7kp{+w0o_@^s7X@>TJc>S^@NVY1w)mv6Zi zI?Y)p8+cNg9Q<$98$U`>+3xfRXnc6aV9mc%#wtEQROi!&vf(XDc~N`cM+?~^G>e1M z=Mo9BnVlb6by)2yNMDI$c?*g^FbF$5ZW;V=VyX6K25Nmr;g0YVtIXmTr$X`5If3}S zvo{y{)$_0$8s(4m6$LW_B)csL{RzgG&8<8(Ye$MFLi-2n?=_ri&J5KaZ?JywlRWn6 zM7yu()AsvM+h?O9^Seem99$oqxc$jm=XJ}|#b>IO{vYprbgnkxNUypP_f_W!^PX}A zN88H%pK;udKlm*9=CSv+YQSUE$CGT%?;{JCuf5Marc|gOG~LNOsMD-|Jp25Tj!?p_ z)q*+V%6qZtIjU)UA?{?tYN{^vM+d^n2+fUFVKJk0jjhJ{vS`W}^i4sV3yMFJyqU@e zPuA0cVfFaKTHnpVUjChZD2MA!AAfyXVs-Jx2XDd996q6fm8JO0-%lnFd(7+mnZE1S zq1#IQdChQp=B@7Otb#R#;(f@Xu|@f*araFD#2`3K#;MF{$XP~*S*?=LTPP5o+=s@) zwF+9aBDg=gRQu(dJA3IbJ|llPJmospLubK$&)2VEJaRH2zA#hOlX&9_RAj^O6;+dT ztR#hBRN(FiuJ`=1*k@Izw2v2-9Z<$vkBn?7LANG=v20dN=Lu$W3io~VA+^)0cfPN2 zjBHEbI43ooC@JNR-}SFvG_8xr#eLljBy=SC=~QA&kP?ct)G^!?Rf^`q8Swn(t)BXI zw%X8rXiy;$RVrlUtp0SDe!H8xFbHFLRA#hhnWd6eQ1IQ+EKHpTIKqXrA)*8+l5NZ~ zNhyfbGn$xtu|>k?R>U-VlhUylIl%ttQuS`glQY!(>oePvY?_8IwH-4!bSa+tDwoZ_ zew?TyEo%IrSJwP;Mgf~gz$YsXGQOq2PI9i#qxZ5a!waf@yqg=(pW_W? z_93QGv+MRl^H#kqXPA2)Z8$7&8^~TDNS<&utgVv2{IcTQ@C8fqj70fS!=ap2zKldU zOXJf5*3YvogwqH^^N(qS{t_rE?tLm-(vz{?9Zt6(ueoi}8Z+moty&^E(HHpa+vK2@ z?uWdLYU>5>Jev$VIiO-e51}DTip|-r*}ZJRTK4P3$Bgo?zbJlGd`Um3#lgA4fWKL* ztKBj?lQ``=I0tu37sNzK;Zrs)lt`OD~K4j)y)7q>b!&%UE} zbK8NM%%3Z4<#m2^&h0~&KX1HfEK7ft*yq{XkdBvKo*+Xj*rBD2g_Vkx+PW=$V{Uoh zc;N1zEd7RK<@KV})ZHMgecaMgb-v4Hk60pk1(j8+u9i1j8C#+17C%_jhQM+7T!>xh zZ~+>nSr}8LlNVH0(q)=78qlEKnoQ1{QEF6fAI!gg-mBvH_0X8A``+kry~wKEom`&_q((dI^exVWZF!wHvZ}8!^0Q-5?u!Xj* z@e9lNZhqF!4>fN$;y(EJXC^=Y;OpgZOU!P)lBHIos|bfhipCbIIz8F}N6J#h=T?)a zm=Z(xStLWURPt5$B)145sBl@GG`%kTg2ZR9n3VZV2EVVD3yVVajy{$?d3OP zkV&ewNk<;V+##NbJ!)`7RXl??>z$ItmF~g%itF44#b?r%B`U6V^0}riE%q&z_MPKn zdn~wUt8?(f{}Hr&QGnl9g*V_ZGm zv8f<0>)(?0)L&-W+S+nX&dr;RYAbMk-fF;G_IUE$3ewXja+C`bdArB`bZcH=Zgj0K zMAhrGpA9)amo+A$n;5YWSDG?hFca+jt~kUal)m?jQtQyW9U7sZ$J8|wBj$eyRun4< z=G}>_!m@6UCB-c!$f#Fa#gt54!TTjHko{y zzo7K@BXbX`ZVX#KYf;F58tC11F{jAr^9jN1OWS?eOd8(c0K+7oyvB$#qP)0xs6M5_ zvcdFNRM4BVV`r*P5jb?eeVhxe4pc9T1up*1dRN|r2ABI#pYC5K^tvxX@!R6+Yq(JRyX?j9RogVta$~sk|ULW-1Qs)Uog8*j`Q84!w~XU2*1nZ1ph1Yl(GxxchUv?^?L}vO~7RkFx=* z54{_O9@eLs3m@8RZk?_eTskkFYJR;jZm`ssn`+BHv+?`!%a>>b{hUimiiEEf5_&d98XoFtMG>UO7FfATD8EvZ zBc!V|Nv^YUKI?jQ&n}uq*m&ckT@Ek7n_YI}O&)6te4vPs{HpA7{m6$GEp-BE`_Q~^ zT+6Al@J<7ng>7y&_b*++^}9mG-X}h@TYy8tr?sx_L}w@r^Nq*yvAXE)hO&~)S2 z?!+y21%pvbwLMjJ%F3TN>r=ii4v&^lr#Q@xR$Qp~nHiepSwHTkrZwN0TCHijtocGv zJbW*a&ysvOc<#$SRJ$ODu?UGJ=+5^p$jO|+HZLnQ-d^iB;|r6Kzt>_|d!gyh=id1Z z%FnzzwX<^MPxQA$u52F7((MjqpZF~J>eSlH>GPQZJ1P3IUzEz8b3MsrJZkpjkjjVj z)A*Z45g+==J^UQY==;(|bYuiO`2~NNOAygsGA?A}4Yq2a)&T zKV7b1>|=a;w5rG=f7!vO>c-90lg@l4+IvrUZg?^A#ksF5r1E~akWdmObjjM!$}s+n zDYI^Bkh}lmlLTSm;Lz;8kZjAx^Y&RD-{pd4J3DtdiVV}=`zI#W2Q<|6434JEOeYvv zWVfmhKJ@hBGmm>+VG3qlLj^j5@BEX$j8`O#3eXidF)nwq3k9|L$1X6mZx}6ccC7HY z>3@|Dar93KBd0HkHxM{XQLbXZc<2mKe6*q=;E;Q2czB&i%J~m|b3Jb73wpO$Klwd= zG;7jI@J`LD3S6&${9xynZ|?@&BRSZwb5s@(y*G@_pFsIBsXi1(}fGMS!J>lzK!}u zg)8hFS?#S{LG459`%qncTA1}dv>iS%(`h>TKR7z?XsZ7|j!RZTl#wl)YhL@><=T61 z*?U}EAxcEqd+)uk71`O>C1hTrjC+ksWEN82-^cIphvOXQILFKD{Tk2bY1Yc!vn$(_*U(wGe;CIuey$3@$B`#?1@m9+I`F9oAv+j$_H^V zm<1Dt*W7YN1@V3U6=$a|!D#EeuW$Di8r0#>3hF|nL>;z=WJAVr5?$ZkH|+eO!_F)^ zc{y*OQ3~}q3zS0i70+UK;=LxWE1s1y@#-sKRB`iPx%IT0^nLz0?N6N7jX+ammlkdc zdNBCP{Q}&4L$_0GlG=R3a8=4m#IRUi&ps3PV-M+T8dervq4Snu(w^(uJ7#Z&W$|;0^5Ud`Ot6C8c*fe`@~rI>IJAeLX6oXb5$}r`N2!}^iEg2 zu@UOP@AVZwZ-%56O{d?vT+E5Ea7Lyr`gWfNO!Qhwo^1OHSyx<1e?8vqie2!|IY?YJ z3J&Pul}Rl&?g3yM_wEdJ2J z&Aw%C&8&zTTuGehHU9~CrFG)^gFoRvJnnvhzp1N}cd_BQLhhQpyID-|VTCR!dYvNc zYL*6%I!~}D1EMdp|A$|wNMT5att_?IBdsWO5_9m`Orq#KI;whVa<5hL{$Lo-tdo~n zSFdbR$GQ*RqN5^rf74_8aVZhvdP)R;W~KFI_xNzH-A4htUXTf@JbF z_K__wG|4m?UA9fN|Csxm683RH`>mNIm6a2f2#3msh8mAt%YlE}!fkd93vkKs3ppL# zLvs1cn6I0la!n*y$sWie^r*4$A(@@4o`|<+i!W!Z<)bv~Nr`{LUb@N-O2@ASM~|~Z{ zIlxWTcFZVbm?X@zJ9uAD=mOKk5Vjf@HBk;19cQHmNH3+?2Qy5 z`2Y<&(e0XTKn9r50aa2N_Z_^qO7wUrN)hE-EJ2Nat9?yl^Io*;6Ar-Es`MC-H(CjB z04*pTFbH<#37EB?-vr055|CKGqAKVfW6}rs_}=ZBhxYJZ8G( zJ;Xhx%)uSo$e_eBcfXe{3n$Jkp&x9?Z*s2bErsvy6hq@?gN3IQVod7?j*F%n&49mo zreK;4@Yh91mg{+hvFJ3pROk2Dafcmdp2J52+165#h>vt-bGUPP$Z1H&)_K-K) z&C7GzP#<|d={`XFM(y@tGa^A55!$JQBJ?60Y#M6ZLV}-j_mwt_D3*7o40-Yem`_l7 zZWzaghKp`6X!79jN9roEz`DQ%L2(zyV*Jj}Byt&fEb8R9nr74n##SKDAX`l3$rrM? zTi+lX_DMOLfDxYNbB+QWkS3|B=S4}4D`~Tj3?!+T_}epmQ@(kOu;}IfBy}p|Y$p{SoR5-{gf-X>sj3B`9(k1LC#hH zM7G~s@$dQ%Tok=LQRecsC97h<>?+1XA&ctltnnTrrdT(P=gy!sizteJEG`gmYYIUy z$vUR%m@k`I$S`>Czgp$9!R?i7+s0tnuBXL>Q5Xwzaw$TveZI(yxCmY5@YDROv}069 z_vS}dOq*&E)%k_l_&V*OJZy7Zxf5~rT= zL-X&~8kYp-$~Y(A|FC+W56SJ{h=KIYf7avve0j|PzZh9`a}hY+ZELD-GGnc+=E&#g z0!O3p*yu@|+2}<`?(` z_H<)Vm2|c`D4-&Er>(hS0~Og$O=U`m5FjZ{Yv%}$&aagi>~&mhV(Hth7N2$iUN7XA z#l~}Qp%oxV4mkGg-!Xe_(tL*+rCJ)v5V+Q|H5_iIh*NH~An+!w-;YY6^n04|ev`x) zjT1x_*MujS34FhAXFZNd-~Jg~|EaIQb7yBNQszA+;d2gBQ@nBG@kf3JhPU-p6!1>v z-bp6`)E|_4_&LgeL6%#|bSSm?uDx<*&13RHwq2EkxH}ORA|QX#dvBbc=5rDfm4SPp zzh)jOgH}U>?A&h?$()DWSH->at?STrnv1npMv~_W_GWQE|3K{jwPjx(;e-zrvffRv zoddIW4}~gL%&yCqq=Epj(*|F9f)kS?Kt?as$n)+3r@bBy#cQm(1@EzpH{<$NGz8bQPhx z2+cFl`uGFdyG{{c!trNgN|5JL`q3HwE~A-wjbd5B5KKC`8(gky<9stcvDWA_J@O_n z>}(-})_HK1;pAsBIZThnVy>TOFTMsrVRF{$rfNMM$?}Aj^KJ#DpMK+=ha|z#bP0qe z>~+u$_EGj$iszsd(q$$4`G?@{k$8#_X0S}5NQ`xKYWKvqg|v-@pka!>tmsM~*vs1h zny)=)=Fl_7uu#k?B=t)FoR52}BM)XU1ZiRiW=uB7OzJkuauy~@(OM}2X&X^A18R^D z$Kwe{HOdLC1M@nRme-U4?GIYww(|!8sT0;8btcuTgSl#p4*R?URucze=vFvN-53p+ zdr3)301xw>RI2}5dC4j$_mzqLi2Vq)-^&73km&>wP><)5k0`fQsX=nd;+{(e<99WK z_!A5W-}8;r6SX|;fqszA<2P$Qzd7Ct99%bAu$h!hzLuBnFRDg{2X^Jo;*vA1VK%_X zA{wx0=8;4&Nr~osq4rc#V z@T~Na+Sp3r!NCFYa{7>I`^ysjN0`UQ`Ty{Utt?VYSL_32%#;(0<;gL@n1TZpL0Sk) zLJ$l)X{Tkl$n^y$+4W5TUc-6KaGh?X*pV)?-P(;oJmW3s@vP<~eq?Cs-z=@B5uZ6O zKazOmx?+9m;V?Dc=yaHTvO67^7Q5uM3F8lz_}<1tQQ<#H(Fgejlk}Cl@(4Zo{-;Cl z(E=~~c(Z_#s!~EE_uVmNT2<&X0?s9ad|Fff<9)vwx-c;8f+WlWJ4si~aI8>XJ(B3K z*>e-jxa?3bd0AXWn>yX^<2jqn!A&`9PYZqHWd5v#oAj>oU1?Gc?YcT6d_HQ)jrUl6 zDFW&NL7?_DbGw(CkdVt%n|>Ec(xpLcEpjlow}hLJQLPM@XMkLDztf~l(7i;@qsx=c zyrp>?n4N=8#u9P)wnR^9ZSaO)n0Y*h`3Q*#Rho1pPOF33ef8cFwm*4GEP3e2sm8F~ z`_?ti`>j{0&arZ<$Pn8@ww?9A2{JCnuS)*I@7ruDo&pk*%V=kkMkip#?z#h} z0gxV8eqf0OJVwuH*xmzj??-H4don=T0O(!^fX?ssJyRJB)3D?9>^j4Bcd_8br^%2dvpNNX z7o#u!7Q!5P9M!U)?d=6i$vc-{avT5w&MNF^BrAg-%Rf9uB`#Pyp&2si! zK@V3LF3*az{hoEh%ILz1Mx(P&W=ma*YI3F_mf!9hXFmhV6lHoyqoGEYnD$nh1c+A5 z%$?iE6qFfYR6C~zN`F+$-CNzJs#-;66UE1wluifAXAZ?Na|Rr6bWQFX)z_NL_$LN_ zS2KF&Hz5I%q5;Q{PmGS_3`;TnJgJJD6w3%4La)xAvOeD<2CyCi1gR+z)B|v~cn`pHy6{63iy2UXe+cD8Hv= zi)W__)PE3J>J(9@WCX6O(tkwim3iwTHI8J2Sw*K)G;H16NX;;&F8hl4WNJpxCz@Ord<4&xThW!8 z?Mdj#Kgg`-w^s8dtG156UYWjYfYLO|G4s?Z|3dNiu>%|FWMq=fT0lw?G}I!Uoe=aY zl)$G_izH&|d1UOHsZW2*1Ex0rD)nQE^a}gsXiHio{hG2{W>DGGx1!8uZp~Vt299Hl zBRVeGA^3jB=uXB!euQiU-&;VVWe*?~QgjBO>?KFHuN^%h<=Rt0k$^HveZq(|Qe*19 zh$_l)AbK824cd?vJ$C5s_I9NgQbAn5Mps0?;Aeix3~Oqt+?2Qf>=G*4WV9`HWA=Jw zl@=Tr80(*0Ub?aNi&j`fZF%vZg6Yh~mjwS82rYZE0{_XRoUIP=83ilmlR+|CNp99J{Sd8p>jzQ5NzSfiO>(^&MdcCRz zlCl`wpD#3+PfDgsfePb!^~gHX6n0Wi?W}>wA&c-C;C#>Tbe9dv9+MC$ln^&Xe;R8K z_#kd9wx{JEo4vcBQA|i8-~Fcmt5c()uSWe9jmwR@VpLpu+bOb@uarX){ML$qDvT1E z!)w77SN*UqSB2Ciu5OvKy+e!Hui1Ek?9FkY`Y&WOm^2Qiy;Dki z4R&I8PO73(qL4S!eL(!6wk|G40F5(a`R;Z0BUgqiE1rwb{@BS_>j=gOKsN;#r*DlW zfWp^iKxY7)LQz4m28d!8BKVbP*kXV}DblGlmC}ghjWz((As7%yb_yrA~KPD5i1r7hmih7P%FQh9@dwP}i-BAH^1<=B^~GT7XB) zHOw5+tcefDg)>&N+S4#y8b0>}z-y*@D7gQLcT;?+;RQ2S`|J{Gyw(3X+&?JU?N zPZ%udeB8Nws>oOOvAj)!VVqo-ZC~)#3Lj?xqHYyMC=p8FnynwV`=tex8+={Z9CGIG zsg*t-k4ooqKlYxQ>a3X%)vQOU7>yh8V)?JN$l~_&v!6;Z*6Q8SgY+_{&TvE8Lm;26 zy#+w_d8g?-dn#csmH|KBGqwlMX;q+LQtJr3*f&m`^!3KAaS3QGQCBhyf(9cGeUOkW z5%dYO6FLGj$UIY23E;aBwPSR>o+~C|0@xEz9#F=YCFz%7_|P%PbZ}mrZ^v$}=fSauLNc6U z=&=j2nf{<}z5TkW8|!Tet-WdCx~V{wrn~(?f*u$Gdzej5`d;9~y`d8Zx@y{<9gWGQ zdzmKcBL}Qnrs1LWmhKhqxXk_n5fk%kLKA(mMM~(ySSqUx(yDQ>1$%lAbq;d0sC_|^ zqMaQ*ART(4HX~un!;u))mx|2j0-wzRGRoU$i*VEW&A=KRAf=SlXT*2H&mk0H1hlU) zK(~mW^Njm0TZ|I*T>_Q6?8Hj%nb}H=%4B8%CW;7Ev5pG8g;4-vxcwj|4%Laxo40>YrbS8lwY= z;@~N!6B4Nmp3y${*)7HDGlGWc1WpaOSLMw&&YV;Irq;}J6;;d6n!eEE4HDuF2t@Lw z;)~qkVxVmCrR=4i0kr-;OrC=j8FE2sct^N>Bz#!UZiJ z%GCTWmqjXl#gN#Va6B3I6moqzKBmXAJ1vp)|G+|Uu5+_^Sl^-?3<33~2`J@Oa}D5z z2!MW`9uO@8A(cysia-I&0x}@Z0ORx^TD@t$%>hUvI>Se8asKiUUh{R7YcTj4@*f^4$_mMRA6fT`J2a~${2kNTjaR!s z`VZ+7uN%#B=h#4*WsIU=;=P;4>dLv}SPz2dRCu@o6pQy;}9exxsPhRhH^^puget ziZO|Q^lBSy!?Tk*@EOT(HvoEv7mk~VIe#?}3r#1SyfpHzmsK%XbLXgCiIuQ?; zq>N~;>U?P7WI%`5rfVazWJDd0Ug@OC6Ov9CSQq>V|0~NCca*i)DsOnPE5Trasu_dr z9=VIJ%$a@u`xu_u04xvB_c=g2&dCf7b%%KpWWp?e=B09A*n`AyL3)MqvbCRYLuA$F z(Y8tP6VRY|KYYL?_{IeKRyk(#;%=eE_M5`dW?F**RjteuCzsx$-hQyCtxi+^fnr#a z$>}d7zAx5(r(%r~cX}y`2f?tUx&;+fGkv=dA8=47QoEh%IKE=(<|l z%9Udv=P+Bll~p?a$*Nu*mO~oM+Am8-AcNsPAt$~u=Y>DeX_6xHjGAoY@#3KIq2FAw z{mesaWjrh=>uUE**V^~@KY2Y0^Zq26ATiy3u7$MDABAx7{01F=&n891rV_W0r25I6 zF9z3jq~8Tu?ooIT?VFFnno2XKm*uWH=>knH4u<4Hx)yl_3Oje2z77i9m-cfQD;LzX zaPjne;+g#=u3NJ62T@$0A@BU-ibRL8XBo++G{a*2wak6e<`&jmYtt42$+PcX~GC%KQGZ8Mke*p|oeaO6*Yx(Sg9-|^h~S-g0@ zP7FCQN#y{sM}f*B!U$9&tnX0iYtm$xm=HSFb&*m+O;CQ6oRO&!rJ82i%I}~V+cA%S zf=b;3S`Zq@Hr*rH4zpe%?d3nOi_g1Z4b?1F0^x}-Lq|jO{O$LCT7xE-`tO5cK0|g) zE2I4T758SBG>}Ba4}yvar8?9Xf{)~ybV|N?7lc3@Z3``col{TWY%-6R=l(wGsG+)> zcXbiupBQ?+ag-8zscLBHcM9tPY_8h z)WJ@{F)EC1Vo%H6X{i4ssyF&eS(QH(Sr?c5vFZ121^Q_`|39p{;+TVi9;clAG#%Eqr*7IOhL#Wz+r*mHQ3VRG$6jYGHk*NA9_CU-|<4=d)~zG5c*Yc=&tyK*|Dyawy{ z)HwwoU1;Rrh0u1hY^Rsr?DTO8MGaT1Qa%)0N$kGzpOA8XPMvZVyXbnd$5lnTh99xi zR)U-s3>0eljw^NIv-8_R$YlQC_VMN34jX79c}Q?j!)o=Lr5&M0#;RS7*irht&i)k^Lw`MmFP%kpb&vrK#imt5?z3xhMXPx7g6k?)kOJv(9}BJ*l9zUQW&uQSL!i#6FZTR8Tv-zx6rZ~gEj8vAQi?nvcOIkDXyvhI{K^U-KO#gJ& zA}y`H)|CEHClfu_R7j7|%|SE0jNh{@Uh0hVhkP#jX3=+)TT_>6oqzBx`k+l0_&2rf zK0dAKO%0wgEaQh|ReVvkY^O4a=~I$ftn*iK$!LAp)twQb13WN5!=`}7opB`T<#x-# zKf@#gnkclVs7St$OjNkxeKBk<8Hm7RGXna6+ff!-F69bf7K6S8yhrQ;@1gJ6fB}Vw z`JFGb9O8o!;{aIviGX?|#->mb<7u6jTzb{v-^biHy@%m0uD_AZ(qx?Y%hH%OD#6>n zEYFhBF#7h>Qg^@vnYm>SAGI?#qesakOL*Jm&cQ6etyaZs{>!-{uHB5A0}|fUaPxn7 zYe~zta#z!RV~M}Y7n6|ba?HqIc|G(wVACXvF?5)pYv9|!tD-{A6>mL?#>ApuopL?k zQ26toR?A$}$HAvfuO3%gk}@YiV1+1^1x>r!gqMY!0bTSS29bXf$1z#jX5DL!bg_)7 z6X>Fzr5C81q?|6Nal|*Zg$sLIYqU`<>bn!h;Xgdsb4&FZ%U2W@rda2UuQE%Q2ou&c zVVVh@>}q_`NrBq2JcGe5i0$sR573YBbMlH^WEnL2c=8CNJ&(@Q^b{OZ;txVa2l#l(y}}Bx}lrB)pz7v1Jmo zft&%|ynbRtnlp_~rWQ+ydsS=X{Ro5)?#Fvv(XB2@ ze9$sB{{v8rJa}q())r9tksn`Gt}P(UsDJ-{A--#Dntdl5^5F`<6PU2}TU4Q}+kzGK zpB+hKuU5-PYz2TvV;4I%j^YIDFjk~wfSKHjR}vp!T>_yOA@lzQ&p2BO7=OI^T`ZMX z=-YZqWne#epAte(#M_~&9DyH?-*Lr1R_~D{NE{w=+S5UEme6L{zmEOO6e`Q4!(ni3 zH*@`x(Zh;|BBt2L_IsCy{-&cNi<;_I`Z0#hj_(5hP#KaZC+IFuJDA~lklv{{3N;f87X(CRQW>hOR^ zTswVo0Y@QBoa{J@kSB#1&j^N|B-vazwV`M`U%ZIpJN1!qwg!DO@(Gc3WC^QJg*BjD zv4NOGgvnC9%%{$Vw%N`?jSC5o#P^m;K2A82hpELogNp#3+jVJtuzA6fOql6(OScm> z;VY-(-r?Uipg-@|I(mW&E0WMZ4>3nPJPOPe_0zBsfJ@-yMA6*`s2PF09Fc|Y-P)vf z(O1jheL%E9IgU3__uO!t8o)h+*vQC!gG5|B4YtCy9wa2mJQF@S%fH;JmvOqv-?A#G z-*)}i0j2k=R(VEq_sJu!JI$3|1VH-JPawq_JXt7rrb(IDWg+3ucv=s9x=GQDBWA70 zun290Ccj7>rwM-+$wH$zsI$LxAKi+yoj7dp*J4%E+r#v@2IX0}2!zYqRnAvSPtjx6 zV{jUlk!gF(0=Y8nKUy!L2UA6{8mfz9HuslAZ;rmbt<<|akB%vlrT$s@_(A}+x&vNt z#;&1+2rZ+0Yv;_ET0A;>{5{hvnj~T9kBvDO5Vd^HCbKAQQH?Hj_OGxFQeTc^7tbPJ z@>{ElK(S(Au-0~LTV~jgWmY2rQ0h|=s+hQ;3_uMV4fw~wQE9;PyowSBusTzou@k?C zwve=PLTiBJhaW_)H11_YWOIN(Vc!2{XZ0VWagv+j z9**_VdB4H_xPw1L4LS2Sgh7}lDF;bb^hu>IEp~sHqIU&*{-vR>zuGs?F}*O{tchDl zF7y}ywM>@RmK|O-9m(bfn^n#I%y>8{*TYdIv0PM7qjw~?B>TBQP|d`8OC_gqYWL`Z zc?G+cWZ{IdK?lt6sBdQadv-})N$yO=V2$DDb^JyaJi78r*`BQ4v`$4vhLw+@dAU6A zvU+Mey!w;L_A#e=I@^fUel5)|%s&c*Dx|JCig zUo!>gVKp+_%PdtD6GMI^+fg$;7?l3W390;$ltx>T2aTIFM92b6NNXPv01X-AlbAVX zi9Lu%<$v-t=`3#u@plVJtrm?I5!T>TPW$DqoYsXs{$5f`2N+idyEdA>yG%=*wFRtl zG_0cSIu4Y2?u6j&QYrBEojH3Lfx2X;=+XmYP$*_Lm z#9nY}oEH%Q=i$JwG7(o7e0w}>c+$Uw8$@V<(DlB|lRC0}UPn$5|79Enwv4JaVQq`eSLz3> z!cx(`-bM%tdf7bhrO*B^FXTdyK}97U7qY95M|EDd3+)y|ejV7?+Js137v&oFRMIVs z)-Qf&*D1!r#`h=kCShZk%+cEX{D9gC@0)jNJHw!{b;FbVl)BYaiw~KcxdxhJ8<0G> z^F4OZlKDRDEgh%3Zh0-==&4b%6x=E>M|!$q*_N^P&VXTiM8t}L@iP4mWdfVH@v9RE z81E@?`hyt1t3+)44L}*kZ)5KglWb?to4af)oa&0742{ZB-}SdjJ~@-Occ>S$Q+y>r z&4rriS6E&r9?Z^b)CT90@DkyR&;T|#4*rKwsQ(>@EB=nvUm%+L7AozD7VUQop!XR6 zhx%T8&dL0oS;Sh&uHMwHgoMDn=Xn=VFTs^_~3{zRXz=(~naU zQQU8pJ=Utr_tf{KBNGm7-5z^LVSG8mqhsCjY73Nu4g7T2OqtuSwy@}#i>~c$u4MTj5 zLoMke9$(AqzH7Xd>Q;rbNfmPw7>V)RO0Dohy;3Z@lR*FiFRM;31HXw7nkO+^y%=xrp-ch$#?I( z`*$AMcZr>qVmr}`z>w7Ma=8j2{(#+tE1>z@NAkBUrY%XveyL_%yt`1L;WNJ34Dd2t zA0}*d*-EYL0`aSj0PwBz74YJ89?kt$W{&jd``m=7MR-C^`fG$A>JIHKao;tBN>yLz z+6>hNOp*qJ?>h|TvkBxt{hetv-Wst*52y^V_N=T#uthutPHB*6zOle6l_=2~ih3II z6->=F^fOR@_GI< zCT~%5Q6o^|EcAF*PnISr`l?57W(o4EPG-Z#YkkuC`n)Awia1}M$)WZUtz4J==tEU= zcI)W)5=L`XH_68ga0dHce@s^e`U;^l{tLHid#2II94~+q4G)*~R4si$ViXo1zn+AQ zMoU2H1k`7;?aIf$?RTYLQE)Afx64h|22V{b&BNt1!s3|@4_0uHAx%XN*mNIPe+zRx z);*$Y$^P-DRD*4aPX@fT4$fP0wDtQuG9Ri00#Fk%W&4x0NZwP`cs_sJaDMTY&zVEwe!LOV<*wSRW3QqpBh@ACTUv$ z%I7hb68&*=AassG&D(mq&&T*>osYZ1KT*P5#ZM3M;D9NH56B%nP?VR5*XqBaF z#-kC-eJQ%sxq0wllOwn#eU|~7R*-aZ_7O=@2<^;L5W2D2o8cWE%y5sVa8*tx0ANA% zPn&5nK=`#8ro~(gdm>Zbk>0dVbsLR~C~~&W573Jyro;Wx^4A|g)h0gjj}Km6{Ci!AW)6vwAU26)a6zHJ3#9I)ML-E!)r(Jii(id!PB7qtuB>K zR~CVmt-jve06Bf1$6O!|LK{sf3)2-&4|#^7tV!b)!c)k^^)-FFjeVz_dPjeZ@V$Dw zY5#0)8_3y3J*vM1_r%nKWN*c^$n^342~PY^UaXMD{A3Hcs$a6Hhtt&P^a8wVOc*R+TSMg@f4zJ>(lt7TA^$VSSepmwWB6^PrQ?%o&vYP97X8`=kW$YH(uc6Q^`=2 z6UmBk7d|01pfE!LuNyG_hsF{BgIX|=A&IjHy*AGyKj}iHSVAV68a~2m^#p@KdTl`b zx4c1UZ^#CCG5zs;$OqTV)HT#=wdi|eLKmO<@=k?*SU+g5p3DdcF9bAqLT+M+2R6a1 zrpQ>9UTgobVFUA;=>$p; zB>=dfq zSqeDef=zzig`6)%wkFW)ER~oKEy&*9=@43(-TYkHtnGzeSTF#vvlQI-k-OTuTJ`fX zn2-zEy2|(4WRj7V%MgJ^49zv~KEr!ov}Ata4orFvP(oGP;fYi>^BG%L!gkLdZ+u_v zSTRd-IxGsMD6n`sVHkeTWBdqrZCrr{8raAG)y}*Fo$J-aO^?k=iE-Yn69V# zYcG&IWG%rqYX14C?`8};qkUrq2Tj#l83Cy6RhF^|i#WLzg;(R>yC3_hzK5y5Ze zqc?8gvn17L2jCaLm>*(Kk@KvI@&(=t0&ohTl!m4NqJ7+)zrE9ev#g9pAah_2*^i1I zqN+QL8o~UR;*Cz(Pi3|vW9MNUnQ_O!Mg?D;&xq73f+^x&%w{X|J#JGle^`vAn}W7k zz25bq`|0-MruOoi7v)oQf0;!>4@N>;73o=enf$|=jLhpf>M4SOQ!W6-1UTU{P9-83 zMcQAGMvB%fQ?@jLNAlNYrjyn#;`2H2FLRH>J>C}E50@WmWXCRChbRok&YGr$$B%`! zNEx#_N}W`69f(sFd>`W>D;9Z+B2$`~()=HrehOp3x;dD+kFC zI$K*>3KtHM#RO-}4@rZG`SB(w81?czXsz*p0; z2cn*QNYJ{6YK4QXgh9{HzK<*>cQ+(+LF(M0$?k=}%yzMbjjlT8bz?_nh?)QQN>@5xcS&%iBx1=m$iPqEG=Wo;j!r@!jR0Fv~t`vQSxWH#QwY@;(O7R8bE8~IoWd$P{&0r z+R84%F4ccM2h_3*t)mvqOl!Tj7hmwaZcQ8oZ$t*-9zF+G3**tyM&?RJI7>$6e}9g% zF@@qv<(lFBOZoZGO|;LvUVv8Q_!Mfsy!_)o?%uWluj(?Xe_W?iQ&mN8|HF$76AKcb z|MGgvj_g}v;0MARonY5Jw3f2nNdKc%6M0g_k$#I`!Bf~v-_CFDCfoiH#CD}?G^(f_ z(44hl(ypcV3=k&^3sXXZ{5?p+KdwXFnE`84C>Q>Z*wMxluu@~H79gDiKd1W=x3e!g zCFvn%Cx1ah({0Us(!{cSnlGxq7?yZ4*KW;G7}l7033ibYZVMRYU4mMvW^SzXxbF~%C4B(d&1w2%Z zkK3JTELtxRQTfmLC!H)91sw&->BWi^ksgcUshH)f;xh4%gBa9l(CZ3R44cRoVu%H0 z!s7Qw5-d{!uP|$7D_{037JLa`p1}E@g<4bfLrf(Zv7KBNER$+;a~hpFh*nuR?^vQj z3;-$Gm*N*Jed75pAfSi4!U3I)=IMS2I6U)ruD7nn&$mvoXC`#x``eZc#VC3dQmT5s znB)w5^~WYJoI(Oy<(3eG_eOJK)|@iVbb_XtjS}dDh?FT(DFL~*GH^05}D2=1i zUM=iPAd;mIU44FYxG`pOE`D(E-P}S|e92%~pxDf|38SN>t}y-?wTi7>K@QG2h2uB)yGWcR=48$Mej0(Wjqpe@9%O&;}>yx(McB%1S=e1xysh0hkdj8XK z^168Y9!oDM#^5y3<-xbqmFdnSVJ;PY-)6EJ)UP`jZ=U7*j?PjmZ^FdCCf}Gd@Zo5< z{t1waeA!n#v1fQvs@MCpa4%8#1DP4bGbZ?MvEjPs9wE3gg14rbP$$|#F(IYitSB zD*UM4(U)c!27#+85L5JOJG~0IR$X=Xk5xak)GEzeZS-Xam1`SdfM}c6k^cf25yeR+_P_OcjvG zK`9viu^}-bn;(i`bMDFTD8Xsq18$|`zz0MscDX5bd0%bxEo%2ZSb7-6=G$EChl7;L zX-EqEn`+CA=2bnYWMCH(8)|^V3br}~IY2>XqG>#;a_1Sw%%vH+4dZ1eP7W8*kxOhD zD~SGAp-g;gSQoV7)zstkM!jigJ8wgeWI!%0J z#P#{1wram_;C3v7fa7HP{4EuF>;Kq2^hPq3y0bGa?qSgj&+Vtq8vtsd6%DJORxYQRlgC~ z!J3F0Xm@8?Hrnxi7s|0UGo=1KaN&sp%%}>w;TOOlcD;!Qjef~=zx$%5dFGs2{-W)V)Fxr!fM z>z&^FI>-7GaK!$NcA0MbF%8w?CA|u~>CLb7MxA?ama3vNvK}88J^SKzVeI-yvU{^S zxzr6E`&6#r$H7Vyi>z3WuDq7$%Vy_Hw7f<}D7QS}i!155jkF$2Z7)ZR!NdY$35oiy zmM?vh*Ep0>%;ndq#*C75sTdMSNM$&o9aAr`qx>_+WG8B)1wb4GMzD_cfxU&?0*f$2 z{=VlVjelJllZy-*eUAs_A_yO?4LI8m%&9h;?ZVWY_E}wczhHTwmiXt?;?3S%_xfUf zPMb%rs+g+=6Rvg@DNjDWYjfW!*x3)Lc@J0gtC1uHke@47bHSUB;z6HW-8C?8p$F}r z&U*LX8a2{*qgam#M;V}i8h4L)T)pR)7Ze)ET zT&Lm9bWM@^+c+!;%6q3ZZIBRAZZjd}-d?dUq@xPj`w(~pawSz2@bRoA& z?a8gt?COU83W>9ZEgL~`Ox$2Q7DpiQ8S=cmsA5V#q55uT9=XCN)_ zB2IJo+J`ilnim+eSnbMprr8H7Xp9`c2DFD1%q*puZ$gx66oLo zDGNz72h-~FiLkdrur!kl%_)Z-L?uzHhYULQf|?q`9W=PJ0!-s^hcz?0!Yl?e9sl7i z$6JGwEy|J7a#y|iA_t3>UwlAOGoDj$%eh9YAFdVix(%y8^mL|(u6Z_!^7HQQ*}cKd zxzSYryNBz#n*Q(~-oW|V4ep%v4X&%?Rn)P(lsHGr%>%6y&O^~xtlpEJB7;2>iZ$tRd-Lm zm)0Coh*475|(>eORFQi0Vu=7t3 zYDl_vcW2qq0;Sks1;JY*54OX~`xQ6fQa1+%` zM&d7N76t}(>#bQcB%tTQrO0>-PeRUK#@n?smq)v6&$IvEDyR#*b48miJQ}oMqJ@{uY2B|JV?E4LkNZR3f{bi721-|>To*r ztL~xi3KJQGJu5U%QE_7mOhriIdI*G=j3)hOuDEVUOs6sVGcwd?U7Ci%KFuDNuU zRWJWcLbfsg@R;RuCHfct+oMuPnZ8Hw8oypuX!u{u3n5)IDe`<^#1YUXXYr%mI5(-w zvbLnaj5ig*{@#K-vRj=|J)3%YSV4>5t7Y9*aVcM5%x(3@KVQuE&>)>dQO6(qpOAem z$%o~I$tv}p+w4+I6Ia-}9UC>iD1-!-0cCLz6>c!h<$`8uM+-VNe8uc1hXJ<|$<`Io zd|QU{k9$KpGw6=;5t8ynZ^&2mBuB0;ev1FG9`p-7ZPZ~7+;r+?`YWXf*;^4NIA5Ek zXg~vjT=rm2nBX8lo3+xG*lha|F8j?=zaQdTFtZ%h7u);ugIv&HzU{nru8rC;{tvS? z1ug~TOa{C((l!;3+-&c@r&7V+!WSn{Cr)T4ij!EgGfXOM{3VLA%v>m~5fIW1(e1&s z#c#hV2rby5$o7n_Ti+5UJGW;No7#d~UCAiusU!Dq*yw}=oVU{5!atIMLwCoa zoK380mwKApf$RQPdYV8PCn2hvz=#Si^!ezOCFXJU@k4!SXJWZvg^!zW-Ixp2A(NX$e?R26oei;cS0SM~<-FeJgpGKIIK=fwbv!FxndshSrnfmz}rN32Ma0?UTP z>TE`{Esu@tOTI}a@OW0YxOkTq>myr>F4<6*jD>Vyq&|u|68BWoQHw%|BKglh(6R&7 zOcP4qh{P*`k@wj6_Hv%3yMof*S0I5ezz?^-OzNCh5aqO%wgMwR?e|_0jnR+C0VLPE zH9|P+2x$5Mko{|$qc(q{kHp$WJH+NyLD-{2D)80H=okBm25qq5TadGoy>e@`*AsJ^ z&vpMR=_=rwT;KLPY7+rL7$x8&M=A{?9NjUxMM}C+K=BMP=UVDBUnXLM5e+ ziU^8v{C^MUWBm4x4Sq15=egs$@B6xDZjquj0!>DApQ|=G>!xcQnKsGpkj9o=b>Dnj zuCbOe((;T;OkW79@m~|rORO^XE)444$LNQ+)f7!c0CA7JV#D8bZBnG44>k&YJ>V+Y z4e16_?yjc-Hs_)i@1sKQ?TLK+n=*5mmP7g_hk<`^=Bf1Ek@nMFftLY^Bn=!D-jvf(qZEM`QOG z%=_>M43uj88vYo#y&fJIe|{Wx-_lz=g3+KVhGz%}jfvHvl6)pDh7s|vyj4Q!P;h#N z*AyALaTQky#4_zMYi5ZdbM}}CDGw$cB(fRSZ|nmk0G|eFY&4kDZ`3d9b%hoRH}ocP zULoprJ*qOeHu>OY#%VVuJvs1)Qtn~$^?*k==c0c84+?*jKf)Y1wRh8PkN=N`EqRD`ULJ*ifd3Z%0?a2!Bq~Qrq8N9AJBTd6B+kv4!{?salP0 zF8%Zeban-vE@5v}y$AyAx$>CAgu5(H45fvKkC^&)?j~(T~$!Bm*)f76FSj!-Rl=2JyfUw6U=sf|PL9pvVrI^~dll2#aw= zrVGAw8^JzZ40B_KTV2SZ_&uiC2lNVzTBnXd=B zt}#=mj9t4&)KiKl1vON=N}Oe9E%^i%Q&qV2Ml3c6Dbt4JRa*3v&XO9!6hAaobnR^g zj|dct*kNq+67RGwPE9+Vb@LSsab1zQ=#1%`^8paBg66p-t!O;#L<7`PtZ`<8g82jG zI1~3?P0S)ggTyNff;6`{sU|T1GliJ|X3bRS2;5r=XYPbyYAp4}9#xr-e+;{sK2LPG z$#-0oG5z)A4$V)T@XT1_r2{(<5rHRTJ{6}sFwREkftS{wA6`%UVTAp}x6{Hn-?bDd zEsi001rXWz2cKq;3Heipnv$#Ez>6ke+Y7KO8vbrA7CQbn*ghmmBRfx!K76C>8*$eW zlm*a~39AbkCw308%Ou+leH*8mR;9KQ60MTGT6GO=*ZEyomc?-C-?~5x@B2Q|V!3yV zFr+s0$3ysS)4vl4Kg4Y_ccg{JeR6#jhY9Ip>;avL*vz-{wZo$9nekjBdR_4YOO_&K z3oFwSaTqQ3eKo3Fn_M-1v;U?BZ&0sjMMvM3`&U>)xg=P$n}AztkDzJYH*sNS!Y4WM zA5-Vheu8oI$2r=vMLOk>nQX-Ecs>HcV}N@w>PJg!*nLf1_grP)^A4)(H(jKR{hK`F zFYO%CMh`6Vv*+#q(hupXi6a1NTq*Mx9lzdeaXc|6d&bP1O9n@JU6A1%^6jy)}eN8cI$=%Y)G zvynOY#_9BQIF~)XKMU5SQ zqmVET>Z6-HQN(3n@(S+}gR_H7nSESp!;nBpC*P{}&Q1PGn)Mvv_l^7?F0OYP|NGkW z{U3w#dkdm^pD*@Y(SyI!&hO3VIy~0fR1(TuJGpb|z_$Cb-p;9(|Amj%2(i7HvG3>I zXG+X+;6$drRy4gye;|QaK(h+P#lYQRuS@Sk<0uRkgS9oF_b%_0w5}{xK@jW>q!F{` z8OtcoD0Ca@atzY22&+B6L(8;5nNLlQr`|B5#T(%D9ZR=mq5=q+6Ul)s&blN%Bq^j= zvq3I zj;*n8W`t8qj%(@I)j8yrgPrH9R>^RUtV_G>l}d5`<5WUE`n`|X6Hc$NU_MXTg;dJ? zQD$>U%NS7u{kaebB1U?O{FF@VLhEBVz--)~R&5l96z6*T+$L{W_!i;8YF4RjU+-_R5c7L8}->nNSxIuI1n*_g@N z4e}L|8gnim&8P)Ul{&UOB4xCKjdL0P(#i=y7_)8Fc4c0EwnLA*`M@N~E5oTk)XTkX zcE(UX+wA^5e3Gk859_v)CJVG@CEp z-tqKu`!Hf__B%gsrR&8K3D6q&f@faY;{3XZ(aJf8?`79X1I7B8Vr!qQE9>?#xh zv(rVsrVPWHS{N|M$s~tpq)TnDcrfE?4g6h0^M*4r`ANFUVRfqygR&{grWen(quq-A zx24Bi^|@DPvyw{CQtHvgkFqpv>vDDS%f+@D_czZVduXFO^YLYI^J3$9w zvrgTzom0?onPI&yAXd?|H^J5O&BK5vGwBXj_qT5c1xKO#-ih7z2|do0oF>{K^PbPm zmZM~)2MsSFA8Cg1vY#M0Fn2>mL93teU6@2XcYkny=!@%$6gbLXv_-EAx@r z773l=mWgZzY;pq;G(%aE&SQs(11$}5Kwa$d%kB6_h5U4u{12*c^M7cMNIkqV_Soa2 zU1P=0@{?~h51Jz;ZW-wcJP=r4&N!V>h*bvL1c#X!-3n2!1Qc-=JA({6Fg*V(HJ+x# zcsz%W2py&{3t=%8=deuFmG*vD{TrDQRA#v zzhYEj5ui<~dvlt#8XaespDVv^@1>-n(_q*lAROP}<6oIApkw!sS3=^gV89?`&JT~h z@Qm!|x1?~nnm?s4nKvUtC2EnX7ou3HIDINp(2l?^N%ltna@j3*bN@KG@RzFz*9GjH z*({?M#lD+`-m7B$x~o^Ul%6M=FjBiv+nQx)t+^9^S+4@HCvx%z6PFA){s~TXO3jqn z5Uw7Vm^z_|15}7Sv6QA8)aBzWe85d(QfSJ_iS*_+cF4RT`9P28L3Q8j0oRZyE{O^9 zh(e{0bi#91*1mdCZ9KKtM4R@nrD}v5%JZ1qBKeAd)Eo2ZCb27BMt1G(W5dp!-7K-E zLWg>w`}G=CdAeq4RXJC#I`raSjOn#Ao-@y^rb6GURsx8AytcLR@EuUL>(&18(si&uRM@a`icf z_2nNUm5Yznk!r{4w%7g|sIUSpo)D(P0lID23sZW!LH^HUYJujcs@5ohj&o{P0|vSh z*OUN}8+_yjl8Z4&H6pS(TQwd?89^J|jx{-m90;iV0bWUHPIZ*#%q11Byj4ok5>^wd zHT$nbXKZHp;c18M{~*Eun6)*tiC9NozunssSbdx@CmP%}))Iv3DH)u@)-zK?{`i$nn7L(&Fwxw(+O3I1oG~?Yrk)tx4lI7B zmKdD0DYpIGNOMzOOm7EJq!10Y1Becv^*d}?D10%JCGDp?xT)^4L4MN?k!htr2?TFJ6Pvsu;77gWPg@Eh_~sD_uO8v4>P;}n0_=bUWc<`1=4 zV&i{%3vofn$E^7_6dj@x3d=-pP?;IiRF_<7#p{^xQ4>>HG$~F0(SUoB`H=ZQK0r~g z73ya|u};7unUQ4%k`^&+^E=V5OjJ)g(JnCb6KaZ4s07TKQSXYt^4iSsLlzC;u(Sqi za_b2nbzSAigZL-yCoT`W&3Q1__iMf?m$sXlY?QqwH5;~!f6`4_%B?c>aOIJHNVP442{->0Z%FS~s@hMyKCmAL zu%(W0YftvryaK5wdpyKkZ+8d8xaoX)i$xVVU3Qrf;r3IZ)~NzS5XLroehqb zy(=4Evn?7#kHZ7TK1^`k8c(8qamO81gT3xfR*gT5Vb)9ryG$b#-7S@k7fs|fvm%yo zVySSj46HX36J8G5Ae%*wu_3Z~HDcLukPI}c4yedr_*+0~Q#(`e#oZM5CPyic3e#uU z+O?g_#1RT+0+{*1(q5>lTr^|k!UPnVT3~6z-G( zP>ueNx!+@lEr8*MPsdLFc0yGg+ zg!krl*3}#L7=#F9bvN1F{0NAMu6?dOTtV7PN_^+g8t z)3vB9X&2<`6DGg&awI?MpWPfIMm;nY)%YQO>)w1-wd{HyTh~>~#P2t=#B}e4fS(aO zP;aOJ8?;gPZI~>n&$OW^Q&y;nFH!gBa+%Y+SI_)3uhe_!eItY&^#;3iN|2lz=^H|Z zB&0qpmlYhtCAQu-Qdm%D*jYQ7KP)gz>#|C%A8j3$T{998DXL>x%zpjhaLehy0r(;R?-mT>P~}T#eh1WS;xzNQjPs zWazSDlmE?+mWo_;5@A6DuRF`yTILeNniHn^b1qcQ*wiocK%DA?(bv_@Xt;K13I!FG z2?jdVp>h=8#I)L;{~B>;%j z8BDTv$s<486`R%##ivy~_#wSp^yJg|p#!Jh!(OB6lMpaz^A8_rBexeHds}vam0Pmt zq?`F|Et@J^&UbehdlB6PmoXnc2$#w7$aI}a(>4+tMSd!YT3+8#iX`adEfrmwTbxDiorsnvRTOlBh#|q*z~hlV zMy_Li+CWROz&7TS_viSj{K5dgjB^F8yk)Viq@{Dw_(bzdaxKgXx+|KXr79_{UG?vs zsl8@R(lqEOig&?+lKl~PQ64rSM+@KGXLG@2b zG?`v|olLu9krC|HVqlDhlSj`x_JgEmi2Sy zf->%p)@<8A5}+PdGy6J5>P@c!efUQSogwz<>a79;0#ThJLpAj^{w{$UIe7Buozh!m zAb_c_*Es0CsszQoli>F@y~zS45B>+GZk$^F1=!M08!Z0^T~tXb9{oaaaZ<-XkSL6*i2w$+ST1s0O=td#IUSN&DPjOF3&s1 zrApcko&BXfCi=WswhB%PUU4fhl75gB4R)6~y@h9tu&DOayPeNz;&$GS5ZROXwsw;W zoT7eQUCimuT2~(mNm)jUUlk2#ICO2nB@}$0P}utFCYH7HAerAVwCX z-A3#JEiY~6G_6|Xn2S5x+q0K%+gsJ-ZZ1k6`unl&rN=)MX%D{@CL^EzsBnAAgg@2A zn0bf^1Ngeor757b9tNm{AS_BhvSB8-j7=o`BUfJ5!dP>+R%L|;n_B74gn*&=ode>~ zvG|lo=)X=Q&X2fWhBY})tiSTkJ;;okDl)jS)!)p=%nw^Pg9Dx`%5~igj)YQ<31;ME zJ#vyF2xixRK`u!iK(P*(0^y1S*CRJz|4>B^cWL2VHKIeGfybH_mT z$x#e*#!1SxgAp(Nn$I4VhO{Cn4{FTK-9gS!HXI)HTq2bG^*c32m&=}Cq*M-ryN=`G zzE>v=E^$8rSx2P5%I+WH55>n0#oC{W)6SLPi?{hsik=_d0gnYp7mp*CA8Tcta(x9g z5w0U}m%ny1otSk;5Wp`O>m2}AE4G6QNLk8d{N)!Va?otWDEnP1yiXl4lgx6#YgU`2 zH*Ypc-=|HIyn={retuosp+=jHAPrg!4m!;?#M$_nOJR{ntAC7u@VP&qxnq-cSUp0|t zMvh8pp~xM<~DE_j?L#`Ws4L<~&{c{MZ+apHM5%y2@F@G_2( ztPEOw%!66jIqKU{@&BFiOca|bfYgxMRNwGPG05@vO882%Ti6=fThcgtY8en#_T55< zK>V|@QL#~Eb3!J~Hw-kNQ?eL`rt$GC{R}_y-X5Dle@u+Hv#=azoGg%!KHYR^Pc)d* zV*ki2qhZObnK_PfZKOjqjr2XI$?W{vk-D4fi!S5RUibE*muS%V-IU7Kz!!EBoFsoW zqf23v%loKQ<2amWBF*mKy0t5^#4l+UyZ$vsJ5D3s9tV@a%`})u4*yIF6}W8eMZ!39 z1T{ohyB2;)<_~Vt(&C$o)o6+Z6e*76_^1>*0@ERi14&K+6e}S!h~C=J%B8HO@~yX5 zdKRwBp-2Dk&A_ncp?OPJ2LZaOn_`9jZFz^dYytg%djd}ux!h(9#iYl*(rfuO;5RPB ztif=2JB6l~)ctn#>mGeWo~nlF_Hi{fpiP?!h;%z5CrXU-`Wu%0M0n0O$rTGRKGrQcTIaATe%Vd#+W0q%W{h8Lmb^m9v$V9nwWfQk7%hYd#oK3>dEb;W` zHrA;Ntecri-4j63F&}eioQ(L$<(=qoo!R4g;i90jHYv=jqglVe*QJu>(gR87^07z0 zjGv4|AL>|c6BV;%Jlg_;hvi(;3U&)!{M&*VI>*mn6Nc#7P|^5G?Hg%m7rY~a90IZ} zSO}&IQ)ij0-kQrtzG?3B9}!T95A1$H`g1#A=GEgIKfec6V{U?8GjC^tbC`VZX8Vs}W9Ex?AlsPDJn@i4?Ddf;)w#!euIPqh8HEXhSWwduQw*q8 z^Uk#+ZCt{G)rZ|1B54&;08VlPO653+${|W{G$Vlcy^M`^*-c z{mbthbEfRk=u%B9?J}*GPoVEz^MF6Q^`OeX3qE|>l zphHq7s2+w(&vltZ=q8@Jb|KlF;uM8qr&`eXLlh>45-dNA1ci`2|Nl$$3yK0c#4870 zrok+$Yt?fjPKiRS&_@7KRO81X2|OLacpUZrI^mq9)EoFXL1+ShjStM0SoFgf`8|zY zu%OLytb!(z02&Gtmde({-8MfZ3y2g30OKCQL3|DBFydqT8=YDToRym5&dzB|+9J)uWgdQibFj57Us^UvD$eMXUoYyF4r$0LO5f)(fVE_)KJ`@9Fb!=qSCOfpj#Er`&f8#L< zI8BM9c{wr<7vRD?R~r>yV=);XInh<*LN@m(#mfjm8RU4yzqITQXMdBuVhA;%&Hji; zMSXgr5>+SDO!?IQWq%)w=mYYQiiJSCES}jn=Ig1QnA0B`TJgs6?XKXEUjPKuoEK-A z1cko7%%pqGozY!G+7fap2<&f8q?b`GVo+Jd%4BHJbE;FV!nCQh$x>DNRr(0T-%d(Qf^|ja}%*04-mC=@w=;W9Q ztNdUt%Jk%{2sqoUD&URwq~i_w-#&6W{tNaY(-CewK!@y z1-iBDoM#H}dppm9vtHYxarata?Uw;u)XzNsyIhPUiXirFJj1;Nk|@KZy{R z##z`#ZiK(rt;8-Gy0Q~TNt!v@^P-@$=7MM)tTq`?HXenesQOI+H3@}^Ivxl&L4g05 zx}OFjYZe-3m`thVnL98u9heY0^BmgWH%@x(Ki=1u7-8MS&u?^Rn2VOD%KC@@*Im{l zd9OgfeP8{9#L)YPVLeB7vY^5}z4DwRob;{5NGVPY1v!eOAjjFzaXHMIa8(7N%2Ty9_r!*LtjdUKc*>7! z&N5Km?yI^|&9cxve#q2T5CVUL9@NOO z0OmvA0G5}A(gjTQq4C(rlxhl1PaYQ+f{2Ua_5Ibn>awu~W?|CWm|2wU>kMJsxV&q8gM8OAlg-#G5v~Fm`3Lk~fXpRad}_Sg zD7|oK)n&_Jpf^1+JZ$Z!=w8(5P=l!6{k_?vgn;pGX69t!=yvfB(>>q5{c`HW1njjv zoSXE%gm_m(AEJ0uNds@<#YV7D%`z4c+Yz>$S$pn8ZMQR7atD7Yh3J@;xK zt~{Tpc>;d78T%KeTAZ6IAQ80d$rIn@51ygPaV~6|6hP56NaxX5i z?}C>jW5Pz^@en!8ikgCq0t?YYOghHE^uESP5u>UHHdA~$y8J)sF2mvklU&25o3!DZEm(C6zSX9j>w9ASd-t_&7wR1C$PZ>a~#n9_RH#y zy|ru+O=$2>x$of*!!}wddN}qfI&QWeB+*&B?b~>)J>;ysDPt`gA@k-`dPKR!B8g@( zA;cv$-X?YYW&JD3r5*pHiQq)1Y2CL-xjwq4;ZFA9qC7vU)SXWv-^?CSDp6aZ*9_%^ zZpLcF+?dmd0aOQ22?7`&)PHKqRN6!!5D)HCkT0mT0e>L`K4|cB`D*b?aptQon+Nml zy#b%@CF-BQ`Vty1Ilc$C~vyEewhwej=_)54$i18u_X<>gb?`^s>FdarcQmSv&#fgl+~L(wry+4IU3z zaaCBUfla-}{Y)Enp&THCt;Yk^VHku5;WE@uOD~p?$LI2A8?G|dVgNU$yLfZZEID*B zSx^sw?*J!>f`f^7iJq@e6zQX&Z_G&1+{whOWP*lFqfhlXeF zy$3hSOjE!tge%O`Q35Rw?I4V?c#-$e-OgfOwyl#vX;XAJ`m!^4S9H`U^?q=Y93eUg z94iQyP^y$}o(wTJs!LYP(ozr=V{ltt+Zt{Y<yz3F zI;!G|Dma&xaN3ecZPfo^D$fl_gIs1$!%P+F8rf>f4I8sCQ{3Tq#6qUj)A`1T(eV#$ ziSg;CEXBR`6XIS$Ec`F^+coYIC!`acg_sU@K?*8k-p%xdu`EBcrjB1D`TAeqo23T3 zGi=ES`x#cLfTki8zfT4MDo-|4F0g!W$a#&yzy}gygXpP1*p0`6vxEo!9VY{v2M3#r zKT1w&wj6wqKMbUpmj}pu-Sh8(6o`4L%8c?gsp9gC}uEeHNhu8f!U6K zW-YZgB67r&*zn}W7sS>P(;tyUtppNJY_l+#U8cnllKC~^wekLqS-Kq9i;_2&0g*=} zuwdkO)p!|sf!+@ zMQ}Dt9iy^Ju?ic|VBz3b8SbuaYo_K2N!l?c24#|H%xfQO%Xdh>PXR0CdWI&LBZPxo zs0uA|I2D8o>s=!cTjS5GIGU3^D&H;?u%IsyE#fLyslRk*9ww|%2|s+ha0n+X_}<~j z2)9+(W9kBRrZ33t44>ziI{(qCQpH;sCf5vHB_AE0j}k=(xkOQHXHa>}PoQp9;BO}Q z8^5_Y?GQ=@T+n0}NdP@!MYWym1u_ys-yk%rG(3eX4@*oWYOh_UT2^~z%Q9BsIKS`a zt@z^Ynw-GEGRL&s@@?kn<|@`IagsDVx1`baphlsJ5jWk}c5tY0m$7^(*~r;Tv`I5? zV1Z-J*%E%Oe#x7~_9Uniqd$7Y+Swr?TxTR2&Rdf#e2`avXY5f?ju+`rv1q-v>x}D) zFXztByd3eM0AJS$>03cvF95qrP?vC0pr@v&Uz=T-{<7iaEtRpw(wt`D*Pi~bSJ(r; zjA^8z0Yc0DO#enY^a+w@Q2EdCfI?NIE#!jUi2@=72xt^|D3Jev#p8aCyJ+ShOQCJ$ zql&d=Ek!i(7|>Be7fBHnMCM4AVhZx(C!7_G?qqf-`Q^4-x$uI%`jbab?!|7 zY9LQytM;_C$Gc3*5KtZyg!-w-T4CB?w?QaI zfMbv$C?M!Ug9Al>DFudgq$1luKxC`JqHJZe9%f9difalmXpzU<~#rPe#9 z?Yp^!h5c)@08}d<`%RTX2O z7@HE3cV7DS;qWSG1k2@EiH{DFkZ&nmI+D3+&IW`8G#Kk6zuqZRJj&0@?Xj*gAA78G z7WB!%RABO_+;ZW_Ghbhg$3PQyL4=@3mntGDwBjcs1=lQSp-;f1O|r2kGuCQ-7+r`L zQcSS%>ZmVOaS+djVQbVX0 zBNHb@>qo7H-OUI=E0*IbQ2f-uEva6ZL1T(bc<`4|An;gnM-cA|w_C-#h zzouKIuFAK2%uT7gM<~oQ1#S-X+BHW6X?FZuef(f(M8J7ch>z3AMn_UGGE%Z*{?0;82i~nyU+yr@WIghVul3-FsJcxE z3lckh8++`>`8=EKXLkF_dye!Zv%P1*`}P~012nlBsjzt=PW4g}*7a)jN9ZFW5oTcR zqfe*t?<0XR^nD&<0a-aZwEbSH`?M39@BPY0%9;v#%!nTgr|5tJeXiK#@^{2h)57W2=8ddFeps5Y8mGIw8|JDlQjkZ{80I zxr)sLi3>aHxr$L?ae$tKYh<H-*0YD9eCmqys;tj#=9XpoXw6E+hoHr-(2XDQ5KYG9P8I)TCvnxfmtFD?e#N`J_j8BI zm1nI1RM!^&;^}pa%}~U4BMAH4gg1nECS5KxSXc!tD@q{!U7>VUUO|O9Qo@~=XPq_|1V%%C{5GigXNn3jD z3my~9H$ZL|1Xg?8>(;M?4lavLCvTy0a>8>Bl~H3v4E`w_Kg%Xn9DJhUS5wW>g#Ia zjDxn~;>SlFV{q=?@3*+-qlwb}T=@nsHvQpcFPg3GUbjni2mz61jdkv>${1}>3f|`7p75-fLe5p0qAyFP zQ2*DVz=k4%fSVQuQGn3a5q*&fU7!lM|IqYu*ns-#|39V{;=Mv0=E7-@N$3#aVUy;X z(5c|fhUd#2B|ea8BTq~`8(!p#X|Wnyj$V3amvlZNQshwcqp<8^W_BFOP!4Q)_M9!V zfu=-+kxr*+Wfx|IqtFuPc))QaZ4)yeFw>PQYRzi*PXDY=^vQF>>%?;2Eb4?a*C!b8 zQn9IY_0D?l&XBLXto`I-z^9^X5(`|PunU?h*QzI@e)PVcvikb7H`L8G`Fd!RjAm{+ zI=J6u{MjfYV5RHVgdhSM6f)RQ;4Nb%G(bko3%dX|fH&q~k^s-qqiBsjsU~Zc{`*DF z+mB`b^m?iJKwwO$cj(_~+nv$P^~DKCoGx8?|7o5^l8q1S z$Vb%7sZ$EG6g;0MspVv#n*38j@p?_|zZ0lOC%d0(MltL@mESt0;f)JYJ3x&+=9Ecf zt88|eLF0_z{|L4%-6P_=F%|dadvLo!PEC(NZ8HJ&lQ}Y|o57m;pF5`Sbt1RUJQZBd zQJZF)DG_pK5~!=(HFM+SnIT%DxlPu@1yA*B`vUlSaj*;MQdIs6A&H>YLko(ow?Hc} zuJ$QDq?e6hd9ZjWh)M`%h`0<7d`z-SH_PFqsiP#iJd#`mNx^Qz;}VyIFY4 zf2_;mt~Gm_pkIk;_Ec^?j$>uwH$a5B46nz=?T9T)fO zdgW)kgOT)hF?l7`x^=^*F}unYp<&OlW~uS*F}YgQ3s24Pmir8$ah@|#3FcL4!nBrY z=65?kxea#%m_#I}sfy~b(naH5^aN^A2i6^jntjLZ*2W>~pywq)3O(BU>f#ZrjBOSv zU4Y?%Y&^Bg=tbusXrqw3Fb7b%@r6JuVEiG#R*n5ZH30{e(;LHK#-*jCjBr}EtpGW< zgZKk>TB8Iby3tdoGlndWqKBMZ_eg>Nc5#M`C>HaaF;3}lt#e3(J?qm7{m@q+fvYK$ zICg(R%RO}UxpwIbdJ{4!%Aine;OE+pMk$KJ6+z4CLSH*Vnpdc}?x7Ue?ehz=p@;TD zQ<}ojCUmbostJh}wL5N!ESWNZG&}WcvZ?u7!9ZQbLOH)Wc-`#BppIzchYCW};&#_! z-m`A9BbTeXMXubew{?@)nBux@(Xl2w5Z7QJ&|I4OPlQs?b7V@Rk3mhw?O84_+tP_p z)X4+f8o$cv%PL|>y>JYX~4L+`KiHmqqu}nar5_y zt-e7xoA{yyn*n1yjtL|;zNXfj{)#q#d%Cl67i~FCV9YgC? zv-l^I3F899G>}88yVIO$*L@~Zrl8uGFpe_X{JNK5SnxkUUI5P&{}rNDK$9*Na1i9^ z3q%J7J%vDcNblY3VL<;d*=R8?K+-0e;9B?Wc32{!WB%KD1s&a+&YiR4 zsu)h^L^z{%jr;7BIg?X0sErE|BeQA;vI>6HZz^NYk80#2NUk_i+XCMFN#UL=k<6+R2-!Q^|uR^HaLnNaM6+BFPcUH z_B{{6LC|`D10g~%J~$4bBV@ViaGcNu7IHx(Nprcr#yd^i+2kd2e)Yr9o$V~T76C$O z?QikU?U0UxnMLU=WMf~!`mX@3>{jalZ9!H!+?_g$ENku|dB{S);d z>D4t4?J3J?Y2ExI30fOz&ILQ>D-SA7UbDcplX@)}R0h=h*%}T$#iPFb{Md1IW6Cm` zRQ)l3V~FVuX$43B@V(Lc2XSla&-NN-1bFgd^_Ef86+hna95Dnjsze7?RKwk@qnJy} zg6Gr*T%YeWkj9sJ6eGQ@0O+a-q3{qtf*+CtCHFO5Zma}oaRd@G5Q-ATgSO}oH@`m` zJ?p{pi;qjk>E*Y0qHjW&q|-?0_d;#|Nvos8Kxt};B13ttGWM_RPt(ITKD@_#WiNcj zxX~h@*c8U8yExQG_hx4^OUzZs=e#*f)pad$0Cr_J#DSZ%+v^Zz04h1+YRUYQY4uuVcf=+?x{x>l2#?e#3_rBQo8 z@%gAx&t%KQUj6kEpHaFjj}S@sIe=~czvkJG1futF?myd}k5V1(;JPLrrGy>TtoWtz z@N)0nYWS1x+Es;DD$4gPMGk1W72Jw@R*aQwaM7(#*`jj)%2n1FGv<;JDs=MxLJwK1 zbe0&z=>PB`>lR{Nb9Z(Y#e~;w8g~r)*Xe!m9V*XWsy4q^y=bPe-Q#MNL#fLJx{4_e zy1~d+f+GUk>}b(12mw%z6{$_Vb4=O3xX#~2{^sZ7A0LEy zxBB8M%)Sc}tVs1|)q+~3BXXyA?euh#s+7jrC!N%HCap<$rvJ%6jxy_yh!t_&cHUAU>~IXlRy z#s0H$GHt1B#=-6c>;e}+9=mQxk0nCM@o(26=^MV;zIS%>&Q#K)RVz}`abu+-Q&FUxg zF`j(V^MO*BM5FXW&{d!w=s6=nem`I9(H!z)YrI)TDEc%*@MD~m6zWOsEVaj19%-AJ z0G*W3WRt}Yn(il3f6V^}t-xQ*62CB(Yc;l8#mQ1-T% {{ label }} - + {{ label }} - + @@ -83,5 +83,11 @@ const classType = props.type == "submit" ? "primary" : props.type; display: block; width: 100%; } + + ion-icon { + height: 1.2rem; + width: 1.2rem; + vertical-align: middle; + } } diff --git a/resources/js/components/SMCarousel.vue b/resources/js/components/SMCarousel.vue index c92f270..05b4e1d 100644 --- a/resources/js/components/SMCarousel.vue +++ b/resources/js/components/SMCarousel.vue @@ -7,22 +7,20 @@ @@ -184,12 +182,20 @@ const disconnectMutationObserver = () => { opacity: 0.75; transition: opacity 0.2s ease-in-out; - svg { + .carousel-slide-indicator-item { + height: map-get($spacer, 1); + width: map-get($spacer, 1); + border: 1px solid white; + border-radius: 50%; cursor: pointer; font-size: 80%; - padding: 0 0.25rem; + margin: 0 calc(#{map-get($spacer, 1)} / 3); color: #fff; filter: drop-shadow(0px 0px 2px rgba(0, 0, 0, 1)); + + &.highlighted { + background-color: white; + } } } } diff --git a/resources/js/components/SMCarouselSlide.vue b/resources/js/components/SMCarouselSlide.vue index 95521d6..6433c64 100644 --- a/resources/js/components/SMCarouselSlide.vue +++ b/resources/js/components/SMCarouselSlide.vue @@ -3,7 +3,7 @@ class="carousel-slide" :style="{ backgroundImage: `url('${imageUrl}')` }">