From 9f6abc4b638060ecbc68a8e08373fe041db33c78 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Mon, 6 Feb 2023 00:16:27 -0300 Subject: [PATCH 01/59] :zap: :construction: unstable hot server --- client/index.js | 47 ++-- client/instanceProxyHandler.js | 6 +- client/worker.js | 3 + loaders/add-source-to-node.js | 1 - loaders/ignore-import.js | 1 - loaders/inject-hmr.js | 39 ---- loaders/register-static-from-server.js | 11 + loaders/string-replace.js | 2 - package.json | 40 ++-- scripts/index.js | 160 ++++---------- scripts/socket.js | 74 ------- server/dotenv.js | 6 +- server/index.js | 3 + server/manifest.js | 2 +- server/printError.js | 6 +- server/server.js | 36 ++- server/template.js | 10 +- server/worker.js | 8 +- tests/.env.test | 2 +- tests/package.json | 22 +- tests/src/Application.css | 2 +- tests/src/Application.njs | 2 +- tests/src/ContextWorker.njs | 1 - tests/src/FullStackLifecycle.njs | 2 +- tests/src/FullStackLifecycle.test.js | 2 + tests/webpack.config.js | 41 ++-- webpack.config.js | 292 +++++++++++++++---------- workers/dynamicInstall.js | 2 +- workers/staticInstall.js | 2 +- 29 files changed, 365 insertions(+), 460 deletions(-) delete mode 100644 loaders/inject-hmr.js delete mode 100644 scripts/socket.js diff --git a/client/index.js b/client/index.js index adcdf6a5..e4a1993d 100644 --- a/client/index.js +++ b/client/index.js @@ -2,6 +2,7 @@ import element from '../shared/element' import fragment from '../shared/fragment' import generateTree from '../shared/generateTree' import { loadPlugins, useClientPlugins } from '../shared/plugins' +import dangerouslySilenceHmr from '../shared/silenceHmr' import client from './client' import context, { generateContext } from './context' import environment from './environment' @@ -106,19 +107,26 @@ export default class Nullstack { } if (module.hot) { - Nullstack.serverHashes ??= {} - Nullstack.serverPings = 0 - Nullstack.clientPings = 0 - const socket = new WebSocket(`ws${router.base.slice(4)}/ws`) - socket.onmessage = async function (e) { - const data = JSON.parse(e.data) - if (data.type === 'NULLSTACK_SERVER_STARTED') { - Nullstack.serverPings++ - if (Nullstack.needsReload || !environment.hot) { + dangerouslySilenceHmr() + + const source = new window.EventSource('/nullstack/hmr') + const pingAndReload = async () => { + let serverBackOnline = false + try { + const response = await fetch('/nullstack/hmr') + serverBackOnline = response.ok + } catch (e) { + // setTimeout(pingAndReload, 100) + } finally { + if (serverBackOnline) { window.location.reload() + } else { + setTimeout(pingAndReload, 500) } } } + source.onerror = pingAndReload + Nullstack.updateInstancesPrototypes = function updateInstancesPrototypes(klass, hash, serverHash) { for (const key in context.instances) { const instance = context.instances[key] @@ -126,26 +134,11 @@ if (module.hot) { Object.setPrototypeOf(instance, klass.prototype) } } - if (Nullstack.serverHashes[hash]) { - if (Nullstack.serverHashes[hash] !== serverHash) { - if (Nullstack.clientPings < Nullstack.serverPings) { - window.location.reload() - } else { - Nullstack.needsReload = true - } - } - Nullstack.clientPings++ - } - Nullstack.serverHashes[hash] = serverHash + windowEvent('environment') client.update() } - Nullstack.hotReload = function hotReload(klass) { - if (client.skipHotReplacement) { - window.location.reload() - } else { - Nullstack.start(klass) - windowEvent('environment') - } + Nullstack.hotReload = function hotReload() { + window.location.reload() } module.hot.decline() } diff --git a/client/instanceProxyHandler.js b/client/instanceProxyHandler.js index f8f16647..fb8d9d2d 100644 --- a/client/instanceProxyHandler.js +++ b/client/instanceProxyHandler.js @@ -20,7 +20,11 @@ const instanceProxyHandler = { try { result = target[name].call(proxy, scopedContext) } catch (error) { - context.catch && context.catch(error) + if (context.catch) { + context.catch(error) + } else { + throw error + } return null } if (result instanceof Promise) { diff --git a/client/worker.js b/client/worker.js index 3a079dfd..c96008f6 100644 --- a/client/worker.js +++ b/client/worker.js @@ -38,6 +38,9 @@ async function register() { const request = `/service-worker.js` try { proxy.registration = await navigator.serviceWorker.register(request, { scope: '/' }) + if (environment.development) { + proxy.registration.unregister() + } } catch (error) { console.error(error) } diff --git a/loaders/add-source-to-node.js b/loaders/add-source-to-node.js index 435306c6..c708314f 100644 --- a/loaders/add-source-to-node.js +++ b/loaders/add-source-to-node.js @@ -2,7 +2,6 @@ const parse = require('@babel/parser').parse const traverse = require('@babel/traverse').default module.exports = function (source) { - this.cacheable && this.cacheable() const uniquePositions = new Set() const ast = parse(source, { sourceType: 'module', diff --git a/loaders/ignore-import.js b/loaders/ignore-import.js index a980b3a1..831994db 100644 --- a/loaders/ignore-import.js +++ b/loaders/ignore-import.js @@ -5,6 +5,5 @@ MIT Licensed https://npmjs.com/package/ignore-loader */ module.exports = function () { - this.cacheable && this.cacheable() return '' } diff --git a/loaders/inject-hmr.js b/loaders/inject-hmr.js deleted file mode 100644 index 24dd6ae2..00000000 --- a/loaders/inject-hmr.js +++ /dev/null @@ -1,39 +0,0 @@ -const parse = require('@babel/parser').parse -const traverse = require('@babel/traverse').default - -module.exports = function (source) { - const ast = parse(source, { - sourceType: 'module', - plugins: ['classProperties', 'jsx'], - }) - let klassName - let klassPath - traverse(ast, { - MemberExpression(path) { - if (path.node.property.name === 'start' && path.node.object && path.node.object.name === 'Nullstack') { - klassName = path.parent.arguments[0].name - } - }, - }) - if (!klassName) return source - traverse(ast, { - ImportDeclaration(path) { - if (path.node.specifiers[0].local.name === klassName) { - klassPath = path.node.source.extra.rawValue - } - }, - }) - - return `${source} - if (module.hot) { - if (Nullstack.needsClientReload) { - window.location.reload() - } - module.hot.accept() - Nullstack.needsClientReload = true - module.hot.accept('${klassPath}', () => { - Nullstack.hotReload(${klassName}) - }) - } - ` -} diff --git a/loaders/register-static-from-server.js b/loaders/register-static-from-server.js index 36b629e1..6c32cc55 100644 --- a/loaders/register-static-from-server.js +++ b/loaders/register-static-from-server.js @@ -37,5 +37,16 @@ module.exports = function (source) { output += `\nNullstack.registry["${legacyHash}"] = ${klassName};` output += `\n${klassName}.hash = "${hash}";` output += `\n${klassName}.bindStaticFunctions(${klassName});` + output += 'if (module.hot) {' + for (const methodName of methodNames) { + output += `\n${klassName}.${methodName}.hash = "${hash}.${methodName}";` + output += `\nNullstack.registry["${hash}.${methodName}"] = ${klassName}.${methodName};` + output += `\nNullstack.registry["${legacyHash}.${methodName}"] = ${klassName}.${methodName};` + } + output += `\nNullstack.registry["${hash}"] = ${klassName};` + output += `\nNullstack.registry["${legacyHash}"] = ${klassName};` + output += `\n${klassName}.hash = "${hash}";` + output += `\n${klassName}.bindStaticFunctions(${klassName});` + output += '}' return output } diff --git a/loaders/string-replace.js b/loaders/string-replace.js index 3ac18f6a..dc02dab9 100644 --- a/loaders/string-replace.js +++ b/loaders/string-replace.js @@ -4,8 +4,6 @@ MIT Licensed Original: https://npmjs.com/package/string-replace-loader */ module.exports = function (source, map) { - this.cacheable() - const optionsArray = this.getOptions().multiple let newSource = source diff --git a/package.json b/package.json index 9c45b534..c760b48e 100644 --- a/package.json +++ b/package.json @@ -16,34 +16,36 @@ }, "dependencies": { "@babel/core": "^7.18.13", - "@babel/parser": "7.17.12", + "@babel/parser": "7.20.15", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-export-default-from": "^7.18.10", "@babel/plugin-transform-react-jsx": "^7.18.10", "@babel/plugin-transform-typescript": "^7.18.12", "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", - "@babel/traverse": "7.17.12", - "@swc/core": "1.2.179", - "babel-loader": "^8.2.5", - "body-parser": "1.20.0", - "commander": "8.3.0", + "@babel/traverse": "7.20.13", + "@swc/core": "1.3.32", + "babel-loader": "9.1.2", + "body-parser": "1.20.1", + "commander": "10.0.0", "copy-webpack-plugin": "^11.0.0", - "css-loader": "6.7.1", - "dotenv": "8.6.0", + "css-loader": "6.7.3", + "dotenv": "16.0.3", "eslint-plugin-jest": "^27.1.6", - "eslint-plugin-nullstack": "^0.0.11", - "express": "4.18.1", - "fs-extra": "10.1.0", - "mini-css-extract-plugin": "2.6.0", + "eslint-plugin-nullstack": "0.0.12", + "express": "4.18.2", + "fs-extra": "11.1.0", + "mini-css-extract-plugin": "2.7.2", "node-fetch": "2.6.7", "nodemon-webpack-plugin": "^4.8.1", - "sass": "1.51.0", - "sass-loader": "8.0.2", - "swc-loader": "0.2.1", - "terser-webpack-plugin": "5.3.1", - "webpack": "5.72.1", - "webpack-dev-server": "4.9.0", - "ws": "7.5.7" + "sass": "1.58.0", + "sass-loader": "13.2.0", + "style-loader": "^3.3.1", + "swc-loader": "0.2.3", + "terser-webpack-plugin": "5.3.6", + "webpack": "5.75.0", + "webpack-dev-server": "4.11.1", + "webpack-hot-middleware": "^2.25.3", + "ws": "8.12.0" } } \ No newline at end of file diff --git a/scripts/index.js b/scripts/index.js index 23fae58b..8f33619b 100755 --- a/scripts/index.js +++ b/scripts/index.js @@ -1,14 +1,14 @@ #! /usr/bin/env node const { program } = require('commander') const dotenv = require('dotenv') -const { existsSync, readdir, unlink } = require('fs') -const fetch = require('node-fetch') +const { existsSync } = require('fs') const path = require('path') -const webpack = require('webpack') +const webpack = require(`webpack`) const { version } = require('../package.json') -const customConfig = path.resolve(process.cwd(), './webpack.config.js') -const config = existsSync(customConfig) ? require(customConfig) : require('../webpack.config') +const customConfig = path.resolve(process.cwd(), 'webpack.config.js') +const nullstackConfig = path.resolve(process.cwd(), 'node_modules', 'nullstack', 'webpack.config.js') +const config = existsSync(customConfig) ? require(customConfig) : require(nullstackConfig) function getConfig(options) { return config.map((env) => env(null, options)) @@ -21,142 +21,64 @@ function getCompiler(options) { function loadEnv(env) { let envPath = '.env' if (env) { - envPath += `.${process.env.NULLSTACK_ENVIRONMENT_NAME}` + envPath += `.${env}` } dotenv.config({ path: envPath }) } -function getFreePorts() { - return new Promise((resolve) => { - const app1 = require('express')() - const app2 = require('express')() - const server1 = app1.listen(0, () => { - const server2 = app2.listen(0, () => { - const ports = [server1.address().port, server2.address().port] - server1.close() - server2.close() - resolve(ports) - }) - }) - }) -} - -function getPort(port) { - return port || process.env.NULLSTACK_SERVER_PORT || process.env.PORT || 3000 -} - -function clearOutput(outputPath) { - if (!existsSync(outputPath)) return - readdir(outputPath, (err, files) => { - if (err) throw err - for (const file of files) { - if (file === '.cache') continue - unlink(path.join(outputPath, file), (errr) => { - if (errr) throw errr - }) - } - }) -} - -async function start({ input, port, env, mode = 'spa', cold, disk, loader = 'swc' }) { - const environment = 'development' - console.info(` πŸš€οΈ Starting your application in ${environment} mode...`) +async function start({ port, env, mode = 'spa', cold, disk, loader = 'swc' }) { loadEnv(env) - const WebpackDevServer = require('webpack-dev-server') - const { setLogLevel } = require('webpack/hot/log') - setLogLevel('none') + const environment = 'development' process.env.NULLSTACK_ENVIRONMENT_MODE = mode - process.env.NULLSTACK_SERVER_PORT = getPort(port) - const ports = await getFreePorts() - process.env.NULSTACK_SERVER_PORT_YOU_SHOULD_NOT_CARE_ABOUT = ports[0] - process.env.NULSTACK_SERVER_SOCKET_PORT_YOU_SHOULD_NOT_CARE_ABOUT = ports[1] process.env.NULLSTACK_ENVIRONMENT_HOT = (!cold).toString() process.env.NULLSTACK_ENVIRONMENT_DISK = (!!disk).toString() + process.env.__NULLSTACK_CLI_ENVIRONMENT = environment + if (env) { + process.env.NULLSTACK_ENVIRONMENT_NAME = env + } + if (port) { + process.env.NULLSTACK_SERVER_PORT = port + process.env.__NULLSTACK_CLI_LOADER = environment + } if (!process.env.NULLSTACK_PROJECT_DOMAIN) process.env.NULLSTACK_PROJECT_DOMAIN = 'localhost' if (!process.env.NULLSTACK_WORKER_PROTOCOL) process.env.NULLSTACK_WORKER_PROTOCOL = 'http' - const target = `${process.env.NULLSTACK_WORKER_PROTOCOL}://${process.env.NULLSTACK_PROJECT_DOMAIN}:${process.env.NULSTACK_SERVER_PORT_YOU_SHOULD_NOT_CARE_ABOUT}` - const writeToDisk = disk ? true : (p) => p.includes('server') - const devServerOptions = { - hot: 'only', - open: false, - host: process.env.NULLSTACK_PROJECT_DOMAIN, - devMiddleware: { - index: false, - stats: 'errors-only', - writeToDisk, - }, - client: { - overlay: { errors: true, warnings: false }, - logging: 'none', - progress: false, - reconnect: true, - webSocketURL: `${process.env.NULLSTACK_WORKER_PROTOCOL.replace('http', 'ws')}://${ - process.env.NULLSTACK_PROJECT_DOMAIN - }:${process.env.NULLSTACK_SERVER_PORT}/ws`, - }, - proxy: { - context: () => true, - target, - proxyTimeout: 10 * 60 * 1000, - timeout: 10 * 60 * 1000, - }, - setupMiddlewares: (middlewares, devServer) => { - if (!devServer) { - throw new Error('webpack-dev-server is not defined') + const settings = config[0](null, { environment, disk, loader }) + let loaded = false + const compiler = webpack(settings) + compiler.watch({ aggregateTimeout: 300, hot: true, followSymlinks: true }, (error, stats) => { + if (error) { + console.error(error.stack || error) + if (error.details) { + console.error(error.details) } - middlewares.unshift(async (req, res, next) => { - if (req.originalUrl.indexOf('.hot-update.') === -1) { - if (req.originalUrl.startsWith('/nullstack/')) { - console.info(` βš™οΈ [${req.method}] ${req.originalUrl}`) - } else { - console.info(` πŸ•ΈοΈ [${req.method}] ${req.originalUrl}`) - } - } - async function waitForServer() { - if (req.originalUrl.includes('.')) { - return next() - } - try { - await fetch(`${target}${req.originalUrl}`) - next() - } catch (error) { - if (error.message.includes('ECONNREFUSED')) { - setTimeout(waitForServer, 100) - } else { - throw error - } - } - } - waitForServer() - }) - return middlewares - }, - webSocketServer: require.resolve('./socket'), - port: process.env.NULLSTACK_SERVER_PORT, - } - const compiler = getCompiler({ environment, input, disk, loader }) - clearOutput(compiler.compilers[0].outputPath) - const server = new WebpackDevServer(devServerOptions, compiler) - const portChecker = require('express')().listen(process.env.NULLSTACK_SERVER_PORT, () => { - portChecker.close() - server.startCallback(() => { + } else if (stats.hasErrors()) { + console.info(stats.toString({ colors: true, warnings: false, logging: false, assets: false, modules: false })) + } else if (!loaded) { + loaded = true console.info( '\x1b[36m%s\x1b[0m', - ` βœ…οΈ Your application is ready at http://${process.env.NULLSTACK_PROJECT_DOMAIN}:${process.env.NULLSTACK_SERVER_PORT}\n`, + ` βœ…οΈ Your application is ready at http://${process.env.NULLSTACK_PROJECT_DOMAIN}:${ + process.env.NULLSTACK_SERVER_PORT || process.env.PORT || 3000 + }\n`, ) - }) + } }) } -function build({ input, output, cache, env, mode = 'ssr' }) { +function build({ output, cache, env, mode = 'ssr' }) { const environment = 'production' - const compiler = getCompiler({ environment, input, cache }) + const compiler = getCompiler({ environment, cache }) if (env) { process.env.NULLSTACK_ENVIRONMENT_NAME = env } console.info(` πŸš€οΈ Building your application in ${mode} mode...`) compiler.run((error, stats) => { - if (stats.hasErrors()) { + if (error) { + console.error(error.stack || error) + if (error.details) { + console.error(error.details) + } + } else if (stats.hasErrors()) { console.info(stats.toString({ colors: true })) process.exit(1) } @@ -171,7 +93,6 @@ program .description('Start application in development environment') .addOption(new program.Option('-m, --mode ', 'Build production bundles').choices(['ssr', 'spa'])) .option('-p, --port ', 'Port number to run the server') - .option('-i, --input ', 'Path to project that will be started') .option('-e, --env ', 'Name of the environment file that should be loaded') .option('-d, --disk', 'Write files to disk') .option('-c, --cold', 'Disable hot module replacement') @@ -184,7 +105,6 @@ program .alias('b') .description('Build application for production environment') .addOption(new program.Option('-m, --mode ', 'Build production bundles').choices(['ssr', 'spa', 'ssg'])) - .option('-i, --input ', 'Path to project that will be built') .option('-o, --output ', 'Path to build output folder') .option('-c, --cache', 'Cache build results in .production folder') .option('-e, --env ', 'Name of the environment file that should be loaded') diff --git a/scripts/socket.js b/scripts/socket.js deleted file mode 100644 index f07cd572..00000000 --- a/scripts/socket.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict' - -const BaseServer = require('webpack-dev-server/lib/servers/BaseServer') -const WebSocket = require('ws') - -class WebsocketServer extends BaseServer { - - constructor(server) { - super(server) - - const options = { - ...this.server.options.webSocketServer.options, - clientTracking: false, - port: process.env.NULSTACK_SERVER_SOCKET_PORT_YOU_SHOULD_NOT_CARE_ABOUT, - } - - this.implementation = new WebSocket.Server(options) - - this.server.server.on('upgrade', (req, sock, head) => { - if (!this.implementation.shouldHandle(req)) { - return - } - this.implementation.handleUpgrade(req, sock, head, (connection) => { - this.implementation.emit('connection', connection, req) - }) - }) - - this.implementation.on('error', (err) => { - this.server.logger.error(err.message) - }) - - const interval = setInterval(() => { - this.clients.forEach((client) => { - if (client.isAlive === false) { - client.terminate() - - return - } - - client.isAlive = false - client.ping(() => {}) - }) - }, 1000) - - this.implementation.on('connection', (client) => { - this.clients.push(client) - - client.isAlive = true - - client.on('message', (data) => { - if (data === '{"type":"NULLSTACK_SERVER_STARTED"}') { - this.clients.forEach((c) => { - c.send('{"type":"NULLSTACK_SERVER_STARTED"}') - }) - } - }) - - client.on('pong', () => { - client.isAlive = true - }) - - client.on('close', () => { - this.clients.splice(this.clients.indexOf(client), 1) - }) - }) - - this.implementation.on('close', () => { - clearInterval(interval) - }) - } - -} - -module.exports = WebsocketServer diff --git a/server/dotenv.js b/server/dotenv.js index 6de25639..06107406 100644 --- a/server/dotenv.js +++ b/server/dotenv.js @@ -6,4 +6,8 @@ if (process.env.NULLSTACK_ENVIRONMENT_NAME) { path += `.${process.env.NULLSTACK_ENVIRONMENT_NAME}` } -dotenv.config({ path }) +if (module.hot) { + dotenv.config({ path, override: true }) +} else { + dotenv.config({ path }) +} diff --git a/server/index.js b/server/index.js index 3506606b..1f588d39 100644 --- a/server/index.js +++ b/server/index.js @@ -58,6 +58,9 @@ class Nullstack { const subcontext = generateContext({ request, response, ...params }) return klass[propName].call(klass, subcontext) } + if (module.hot) { + _invoke.hash = klass[prop].hash + } klass[prop] = _invoke klass.prototype[prop] = _invoke } diff --git a/server/manifest.js b/server/manifest.js index b7703061..0e46f818 100644 --- a/server/manifest.js +++ b/server/manifest.js @@ -8,7 +8,7 @@ import project from './project' export default function generateManifest(server) { if (files['manifest.webmanifest']) return files['manifest.webmanifest'] - const file = path.join(__dirname, '../', 'public', 'manifest.webmanifest') + const file = path.join(process.cwd(), 'public', 'manifest.webmanifest') if (existsSync(file)) { return readFileSync(file, 'utf-8') } diff --git a/server/printError.js b/server/printError.js index c375cf76..34083a9d 100644 --- a/server/printError.js +++ b/server/printError.js @@ -1,7 +1,11 @@ import context from './context' export default function (error) { - context.catch && context.catch(error) + if (context.catch) { + context.catch(error) + } else { + throw error + } const lines = error.stack.split(`\n`) let initiator = lines.find((line) => line.indexOf('Proxy') > -1) if (initiator) { diff --git a/server/server.js b/server/server.js index 96766186..be71f61c 100644 --- a/server/server.js +++ b/server/server.js @@ -1,9 +1,7 @@ import bodyParser from 'body-parser' import express from 'express' -import { writeFileSync } from 'fs' import fetch from 'node-fetch' import path from 'path' -import WebSocket from 'ws' import deserialize from '../shared/deserialize' import extractParamValue from '../shared/extractParamValue' @@ -11,6 +9,7 @@ import prefix from '../shared/prefix' import context, { generateContext } from './context' import environment from './environment' import { generateFile } from './files' +import hmr from './hmr' import generateManifest from './manifest' import { prerender } from './prerender' import printError from './printError' @@ -24,13 +23,19 @@ if (!global.fetch) { global.fetch = fetch } +if (!global.location) { + global.location = { + href: '/', + } +} + const server = express() -server.port = - process.env.NULSTACK_SERVER_PORT_YOU_SHOULD_NOT_CARE_ABOUT || - process.env.NULLSTACK_SERVER_PORT || - process.env.PORT || - 3000 +if (module.hot) { + hmr(server) +} + +server.port = process.env.NULLSTACK_SERVER_PORT || process.env.PORT || 3000 let contextStarted = false let serverStarted = false @@ -53,7 +58,8 @@ for (const method of ['get', 'post', 'put', 'patch', 'delete', 'all']) { } try { const subcontext = generateContext({ request, response, ...params }) - const result = await args[1](subcontext) + const exposedFunction = module.hot ? registry[args[1].hash] : args[1] + const result = await exposedFunction(subcontext) reqres.clear() response.json(result) } catch (error) { @@ -155,7 +161,7 @@ server.start = function () { if (serverStarted) return serverStarted = true - server.use(express.static(path.join(__dirname, '..', 'public'))) + server.use(express.static(path.join(process.cwd(), 'public'))) server.use(bodyParser.text({ limit: server.maximumPayloadSize })) @@ -286,17 +292,7 @@ server.start = function () { } server.listen(server.port, async () => { - if (environment.development) { - if (process.env.NULLSTACK_ENVIRONMENT_DISK === 'true') { - const content = await server.prerender('/') - const target = `${process.cwd()}/.development/index.html` - writeFileSync(target, content) - } - const socket = new WebSocket(`ws://localhost:${process.env.NULLSTACK_SERVER_PORT}/ws`) - socket.onopen = async function () { - socket.send('{"type":"NULLSTACK_SERVER_STARTED"}') - } - } else { + if (environment.production) { console.info( '\x1b[36m%s\x1b[0m', ` βœ…οΈ Your application is ready at http://${process.env.NULLSTACK_PROJECT_DOMAIN}:${process.env.NULLSTACK_SERVER_PORT}\n`, diff --git a/server/template.js b/server/template.js index 22f6eb3b..c404b422 100644 --- a/server/template.js +++ b/server/template.js @@ -63,9 +63,13 @@ export default function ({ head, body, nextBody, context, instances }) { ${page.robots ? `` : ''} ${project.viewport ? `` : ''} - + ${ + environment.production + ? `` + : '' + } ${page.schema ? `` : ''} ${project.icons['180'] ? `` : ''} diff --git a/server/worker.js b/server/worker.js index c321fd51..662122ba 100644 --- a/server/worker.js +++ b/server/worker.js @@ -53,13 +53,13 @@ export function generateServiceWorker() { const sources = [] const context = { environment, project, settings, worker } let original = '' - const file = path.join(__dirname, '../', 'public', 'service-worker.js') + const file = path.join(process.cwd(), 'public', 'service-worker.js') if (existsSync(file)) { original = readFileSync(file, 'utf-8') } - const bundleFolder = path.join(__dirname, '../', environment.production ? '.production' : '.development') + const bundleFolder = path.join(process.cwd(), environment.production ? '.production' : '.development') const scripts = readdirSync(bundleFolder) - .filter((filename) => filename.includes('.client.')) + .filter((filename) => filename.includes('.client.') && !filename.endsWith('.map')) .map((filename) => `'/${filename}'`) sources.push(`self.context = ${JSON.stringify(context, replacer, 2)};`) sources.push(load) @@ -87,7 +87,7 @@ export function generateServiceWorker() { if (original) { sources.push(original) } - files['service-worker.js'] = sources.join(`\n\n`).replace(`"{{BUNDLE}}",`, scripts.join(', \n')) + files['service-worker.js'] = sources.join(`\n\n`).replace(`globalThis.__NULLSTACK_BUNDLE`, scripts.join(', \n')) return files['service-worker.js'] } diff --git a/tests/.env.test b/tests/.env.test index 76c1656d..8a2189e6 100644 --- a/tests/.env.test +++ b/tests/.env.test @@ -6,4 +6,4 @@ NULLSTACK_PROJECT_NAME='Nullstack Tests' NULLSTACK_PROJECT_SHORT_NAME='Nullstack' NULLSTACK_PROJECT_DOMAIN='localhost' NULLSTACK_WORKER_CDN='http://localhost:6969' -NULLSTACK_WORKER_API='http://127.0.0.1:6970' \ No newline at end of file +NULLSTACK_WORKER_API='http://127.0.0.1:6969' \ No newline at end of file diff --git a/tests/package.json b/tests/package.json index 219dc4df..0899ef72 100644 --- a/tests/package.json +++ b/tests/package.json @@ -6,23 +6,23 @@ "license": "ISC", "devDependencies": { "cors": "2.8.5", + "eslint-plugin-nullstack": "0.0.12", "glob": "^8.0.3", - "jest": "^28.1.0", - "jest-puppeteer": "^6.1.0", - "nullstack": "*", - "puppeteer": "^14.1.1", - "purgecss-webpack-plugin": "^4.1.3" + "jest": "29.4.1", + "jest-puppeteer": "7.0.0", + "puppeteer": "19.6.3", + "purgecss-webpack-plugin": " 5.0.0" }, "types": "../../types/index.d.ts", + "overrides": { + "webpack": "5.75.0" + }, "scripts": { - "start": "npx nullstack start --input=./tests --port=6969 --env=test --mode=spa", - "build": "npx nullstack build --input=./tests --env=test", + "start": "node ../scripts/index.js start --port=6969 --env=test --mode=spa --disk", + "build": "node --enable-source-maps ../scripts/index.js build --env=test", "clear": "rm -rf ../node_modules ../package-lock.json node_modules .development .production package-lock.json", - "setup": "cd .. && npm install && npm link && cd tests && npm install && npm link nullstack", + "setup": "cd .. && npm install && cd tests && npm install", "test": "npm run build && jest --runInBand", "script": "node src/scripts/run.js" - }, - "dependencies": { - "eslint-plugin-nullstack": "^0.0.3" } } \ No newline at end of file diff --git a/tests/src/Application.css b/tests/src/Application.css index 789a3ef9..52abc363 100644 --- a/tests/src/Application.css +++ b/tests/src/Application.css @@ -1,5 +1,5 @@ body { - background: url(favicon-96x96.png) no-repeat bottom right; + background: url(/favicon-96x96.png) no-repeat bottom right; } #application * { diff --git a/tests/src/Application.njs b/tests/src/Application.njs index 997742df..6c1a17e0 100644 --- a/tests/src/Application.njs +++ b/tests/src/Application.njs @@ -72,7 +72,7 @@ class Application extends Nullstack { render({ project, page, environment, refInstanceCount }) { return ( - +

{project.name}

{page.status !== 200 &&
}
diff --git a/tests/src/ContextWorker.njs b/tests/src/ContextWorker.njs index 4a327eca..47786555 100644 --- a/tests/src/ContextWorker.njs +++ b/tests/src/ContextWorker.njs @@ -11,7 +11,6 @@ class ContextWorker extends Nullstack { header = ''; static async start({ worker }) { - worker.enabled = true worker.preload = ['/context-worker'] } diff --git a/tests/src/FullStackLifecycle.njs b/tests/src/FullStackLifecycle.njs index 57300ae7..34ad2d5c 100644 --- a/tests/src/FullStackLifecycle.njs +++ b/tests/src/FullStackLifecycle.njs @@ -39,7 +39,7 @@ class FullStackLifecycle extends Nullstack { render() { return ( -
+
diff --git a/tests/src/FullStackLifecycle.test.js b/tests/src/FullStackLifecycle.test.js index cbdd24e0..abf123d9 100644 --- a/tests/src/FullStackLifecycle.test.js +++ b/tests/src/FullStackLifecycle.test.js @@ -62,7 +62,9 @@ describe('FullStackLifecycle ssr', () => { describe('FullStackLifecycle spa', () => { beforeAll(async () => { await page.goto('http://localhost:6969/') + await page.waitForSelector('[data-application-hydrated]') await page.click('a[href="/full-stack-lifecycle"]') + await page.waitForSelector('[data-hydrated]') }) test('prepare should run', async () => { diff --git a/tests/webpack.config.js b/tests/webpack.config.js index dcbc7a72..12fb95f5 100644 --- a/tests/webpack.config.js +++ b/tests/webpack.config.js @@ -1,22 +1,29 @@ -const [server, client] = require('nullstack/webpack.config') - const glob = require('glob') -const PurgecssPlugin = require('purgecss-webpack-plugin') +const path = require('path') +const { PurgeCSSPlugin } = require('purgecss-webpack-plugin') -function customClient(...args) { - const config = client(...args) - if (config.mode === 'production') { - config.plugins.push( - new PurgecssPlugin({ - paths: glob.sync(`src/**/*`, { nodir: true }), - content: ['./**/*.njs'], - safelist: ['script', 'body', 'html', 'style'], - defaultExtractor: (content) => content.match(/[^<>"'`\s]*[^<>"'`\s:]/g) || [], - }), - ) - } +const [server, client] = require('../webpack.config') - return config +function applyAliases(environments) { + return environments.map((environment) => (...args) => { + const config = environment(...args) + config.resolve.alias = { + _: [path.join(process.cwd(), '..', 'node_modules')], + nullstack: path.join(process.cwd(), '..'), + webpack: path.join(process.cwd(), '..', 'node_modules', 'webpack'), + } + if (config.mode === 'production' && config.target === 'web') { + config.plugins.push( + new PurgeCSSPlugin({ + paths: glob.sync(`src/**/*`, { nodir: true }), + content: ['./**/*.njs'], + safelist: ['script', 'body', 'html', 'style'], + defaultExtractor: (content) => content.match(/[^<>"'`\s]*[^<>"'`\s:]/g) || [], + }), + ) + } + return config + }) } -module.exports = [server, customClient] +module.exports = applyAliases([server, client]) diff --git a/webpack.config.js b/webpack.config.js index a6cd8aab..ca6e5b38 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -5,29 +5,30 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin') const NodemonPlugin = require('nodemon-webpack-plugin') const path = require('path') const TerserPlugin = require('terser-webpack-plugin') +const webpack = require(`webpack`) -const buildKey = crypto.randomBytes(20).toString('hex') +const { version } = require('./package.json') -const customConsole = new Proxy( - {}, - { - get() { - return () => {} - }, - }, -) +const buildKey = crypto.randomBytes(20).toString('hex') function getLoader(loader) { - const loaders = path.resolve('./node_modules/nullstack/loaders') - return path.join(loaders, loader) + const loaders = path.resolve(__dirname, 'loaders') + return path.posix.join(loaders, loader) +} + +const originalLog = console.log +global.console.log = function (...args) { + if (args[0].toString().startsWith('[nodemon-webpack-plugin]')) return + originalLog(...args) } function cacheFactory(args, folder, name) { if (args.cache || args.environment === 'development') { return { type: 'filesystem', - cacheDirectory: path.resolve(`./${folder}/.cache`), + cacheDirectory: path.posix.join(process.cwd(), folder, '.cache'), name, + version, } } return false @@ -35,28 +36,42 @@ function cacheFactory(args, folder, name) { function terserMinimizer(file, _sourceMap) { return require('@swc/core').minify(file, { + mangle: false, + compress: { + unused: false, + }, keepClassnames: true, keepFnames: true, sourceMap: true, }) } -const swcJs = { - test: /\.js$/, - use: { - loader: require.resolve('swc-loader'), - options: { - jsc: { - parser: { - syntax: 'ecmascript', - exportDefaultFrom: true, +function getTargets({ environment, target }) { + if (target === 'node') { + return { node: process.versions.node } + } + return environment === 'development' ? 'last 1 version' : 'defaults' +} + +function swcJs({ environment, target }) { + const targets = getTargets({ environment, target }) + return { + test: /\.js$/, + use: { + loader: require.resolve('swc-loader'), + options: { + jsc: { + parser: { + syntax: 'ecmascript', + exportDefaultFrom: true, + }, + }, + env: { + targets, }, - }, - env: { - targets: { node: '10' }, }, }, - }, + } } const babelJs = { @@ -73,22 +88,25 @@ const babelJs = { }, } -const swcTs = { - test: /\.ts$/, - use: { - loader: require.resolve('swc-loader'), - options: { - jsc: { - parser: { - syntax: 'typescript', - exportDefaultFrom: true, +function swcTs({ environment, target }) { + const targets = getTargets({ environment, target }) + return { + test: /\.ts$/, + use: { + loader: require.resolve('swc-loader'), + options: { + jsc: { + parser: { + syntax: 'typescript', + exportDefaultFrom: true, + }, + }, + env: { + targets, }, - }, - env: { - targets: { node: '10' }, }, }, - }, + } } const babelTs = { @@ -105,30 +123,33 @@ const babelTs = { }, } -const swcNullstackJavascript = { - test: /\.(njs|nts|jsx|tsx)$/, - use: { - loader: require.resolve('swc-loader'), - options: { - jsc: { - parser: { - syntax: 'ecmascript', - exportDefaultFrom: true, - jsx: true, - }, - transform: { - react: { - pragma: 'Nullstack.element', - pragmaFrag: 'Nullstack.fragment', - throwIfNamespace: true, +function swcNullstackJavascript({ environment, target }) { + const targets = getTargets({ environment, target }) + return { + test: /\.(njs|nts|jsx|tsx)$/, + use: { + loader: require.resolve('swc-loader'), + options: { + jsc: { + parser: { + syntax: 'ecmascript', + exportDefaultFrom: true, + jsx: true, + }, + transform: { + react: { + pragma: 'Nullstack.element', + pragmaFrag: 'Nullstack.fragment', + throwIfNamespace: true, + }, }, }, - }, - env: { - targets: { node: '10' }, + env: { + targets, + }, }, }, - }, + } } const babelNullstackJavascript = { @@ -156,30 +177,33 @@ const babelNullstackJavascript = { }, } -const swcNullstackTypescript = { - test: /\.(nts|tsx)$/, - use: { - loader: require.resolve('swc-loader'), - options: { - jsc: { - parser: { - syntax: 'typescript', - exportDefaultFrom: true, - tsx: true, - }, - transform: { - react: { - pragma: 'Nullstack.element', - pragmaFrag: 'Nullstack.fragment', - throwIfNamespace: true, +function swcNullstackTypescript({ environment, target }) { + const targets = getTargets({ environment, target }) + return { + test: /\.(nts|tsx)$/, + use: { + loader: require.resolve('swc-loader'), + options: { + jsc: { + parser: { + syntax: 'typescript', + exportDefaultFrom: true, + tsx: true, + }, + transform: { + react: { + pragma: 'Nullstack.element', + pragmaFrag: 'Nullstack.fragment', + throwIfNamespace: true, + }, }, }, - }, - env: { - targets: { node: '10' }, + env: { + targets, + }, }, }, - }, + } } const babelNullstackTypescript = { @@ -215,10 +239,9 @@ const babelNullstackTypescript = { } function server(env, argv) { - const dir = argv.input ? path.join(__dirname, argv.input) : process.cwd() - const entryExtension = existsSync(path.join(dir, 'server.ts')) ? 'ts' : 'js' + const entryExtension = existsSync(path.posix.join(process.cwd(), 'server.ts')) ? 'ts' : 'js' const icons = {} - const publicFiles = readdirSync(path.join(dir, 'public')) + const publicFiles = readdirSync(path.posix.join(process.cwd(), 'public')) const babel = argv.loader === 'babel' const iconFileRegex = /icon-(\d+)x\1\.[a-zA-Z]+/ for (const file of publicFiles) { @@ -233,10 +256,11 @@ function server(env, argv) { const minimize = !isDev const plugins = [] if (isDev) { + plugins.push(new webpack.HotModuleReplacementPlugin()) plugins.push( new NodemonPlugin({ ext: '*', - watch: ['.env', '.env.*', './.development/server.js'], + watch: ['.env', '.env.*', './server.js'], script: './.development/server.js', nodeArgs: ['--enable-source-maps'], quiet: true, @@ -244,16 +268,26 @@ function server(env, argv) { ) } return { - mode: argv.environment, - infrastructureLogging: { - console: customConsole, + experiments: { + lazyCompilation: { + imports: isDev, + entries: false, + }, }, - entry: `./server.${entryExtension}`, + mode: argv.environment, + infrastructureLogging: { level: 'error' }, + entry: isDev + ? ['webpack/hot/poll?100', path.posix.join(__dirname, 'shared', 'accept.js'), `./server.${entryExtension}`] + : `./server.${entryExtension}`, output: { - path: path.join(dir, folder), + path: path.posix.join(process.cwd(), folder), filename: 'server.js', chunkFilename: '[chunkhash].server.js', libraryTarget: 'umd', + hotUpdateChunkFilename: 'nullstack-server-update-[id]-[fullhash].js', + hotUpdateMainFilename: 'nullstack-server-update-[runtime]-[fullhash].json', + pathinfo: false, + clean: isDev, }, resolve: { extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], @@ -269,9 +303,14 @@ function server(env, argv) { ], }, devtool, - stats: 'errors-only', + stats: 'none', module: { rules: [ + { + test: /server\.(js|ts)$/, + exclude: /node_modules/, + loader: getLoader('inject-server-hmr.js'), + }, { test: /nullstack.js$/, loader: getLoader('string-replace.js'), @@ -308,9 +347,9 @@ function server(env, argv) { ], }, }, - babel ? babelJs : swcJs, - babel ? babelTs : swcTs, - babel ? babelNullstackJavascript : swcNullstackJavascript, + babel ? babelJs : swcJs({ environment: argv.environment, target: 'node' }), + babel ? babelTs : swcTs({ environment: argv.environment, target: 'node' }), + babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'node' }), { test: /\.(njs|nts|jsx|tsx)$/, loader: getLoader('register-static-from-server.js'), @@ -327,7 +366,7 @@ function server(env, argv) { test: /\.(njs|nts|jsx|tsx)$/, loader: getLoader('inject-nullstack.js'), }, - babel ? babelNullstackTypescript : swcNullstackTypescript, + babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'node' }), { test: /\.(njs|nts|jsx|tsx)$/, loader: getLoader('add-source-to-node.js'), @@ -349,25 +388,33 @@ function server(env, argv) { __filename: false, }, plugins, + externals: { + 'webpack/hot/poll': 'webpack/hot/poll?100', + }, cache: cacheFactory(argv, folder, 'server'), } } function client(env, argv) { const disk = !!argv.disk - const dir = argv.input ? path.join(__dirname, argv.input) : process.cwd() - const entryExtension = existsSync(path.join(dir, 'client.ts')) ? 'ts' : 'js' + const entryExtension = existsSync(path.posix.join(process.cwd(), 'client.ts')) ? 'ts' : 'js' const isDev = argv.environment === 'development' const folder = isDev ? '.development' : '.production' const devtool = isDev ? 'inline-cheap-module-source-map' : 'source-map' const minimize = !isDev const babel = argv.loader === 'babel' - const plugins = [ - new MiniCssExtractPlugin({ - filename: 'client.css', - chunkFilename: '[chunkhash].client.css', - }), - ] + const plugins = [] + if (!isDev) { + plugins.push( + new MiniCssExtractPlugin({ + filename: 'client.css', + chunkFilename: '[chunkhash].client.css', + }), + ) + } + if (isDev) { + plugins.push(new webpack.HotModuleReplacementPlugin()) + } if (disk) { plugins.push( new CopyPlugin({ @@ -376,16 +423,30 @@ function client(env, argv) { ) } return { - infrastructureLogging: { - console: customConsole, + experiments: { + lazyCompilation: { + imports: isDev, + entries: false, + }, }, mode: argv.environment, - entry: `./client.${entryExtension}`, + infrastructureLogging: { level: 'error' }, + entry: isDev + ? [ + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=20000', + path.posix.join(__dirname, 'shared', 'accept.js'), + `./client.${entryExtension}`, + ] + : `./client.${entryExtension}`, output: { publicPath: `/`, - path: path.join(dir, folder), + path: path.posix.join(process.cwd(), folder), filename: 'client.js', chunkFilename: '[chunkhash].client.js', + hotUpdateChunkFilename: 'nullstack-client-update-[id]-[fullhash].js', + hotUpdateMainFilename: 'nullstack-client-update-[runtime]-[fullhash].json', + pathinfo: false, + clean: isDev, }, resolve: { extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], @@ -399,12 +460,13 @@ function client(env, argv) { ], }, devtool, - stats: 'errors-only', + stats: 'none', module: { rules: [ { test: /client\.(js|ts)$/, - loader: getLoader('inject-hmr.js'), + exclude: /node_modules/, + loader: getLoader('inject-client-hmr.js'), }, { test: /nullstack.js$/, @@ -418,9 +480,9 @@ function client(env, argv) { ], }, }, - babel ? babelJs : swcJs, - babel ? babelTs : swcTs, - babel ? babelNullstackJavascript : swcNullstackJavascript, + babel ? babelJs : swcJs({ environment: argv.environment, target: 'web' }), + babel ? babelTs : swcTs({ environment: argv.environment, target: 'web' }), + babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'node' }), { test: /\.(njs|nts|jsx|tsx)$/, loader: getLoader('remove-import-from-client.js'), @@ -432,7 +494,7 @@ function client(env, argv) { { test: /\.s?[ac]ss$/, use: [ - MiniCssExtractPlugin.loader, + isDev ? { loader: require.resolve('style-loader') } : MiniCssExtractPlugin.loader, { loader: require.resolve('css-loader'), options: { url: false } }, { loader: require.resolve('sass-loader'), options: { sassOptions: { fibers: false } } }, ], @@ -445,7 +507,7 @@ function client(env, argv) { test: /\.(njs|nts|jsx|tsx)$/, loader: getLoader('inject-nullstack.js'), }, - babel ? babelNullstackTypescript : swcNullstackTypescript, + babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'node' }), { test: /\.(njs|nts|jsx|tsx)$/, loader: getLoader('add-source-to-node.js'), @@ -457,6 +519,14 @@ function client(env, argv) { ], }, target: 'web', + externals: { + 'webpack-hot-middleware/client': + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=20000', + }, + node: { + __dirname: false, + __filename: false, + }, plugins, cache: cacheFactory(argv, folder, 'client'), } diff --git a/workers/dynamicInstall.js b/workers/dynamicInstall.js index f9f088eb..7dcead3f 100644 --- a/workers/dynamicInstall.js +++ b/workers/dynamicInstall.js @@ -5,7 +5,7 @@ function install(event) { '/manifest.webmanifest', `/client.js?fingerprint=${self.context.environment.key}`, `/client.css?fingerprint=${self.context.environment.key}`, - '{{BUNDLE}}', + globalThis.__NULLSTACK_BUNDLE, ] event.waitUntil( (async function () { diff --git a/workers/staticInstall.js b/workers/staticInstall.js index 7c128077..f18c8774 100644 --- a/workers/staticInstall.js +++ b/workers/staticInstall.js @@ -5,7 +5,7 @@ function install(event) { '/manifest.webmanifest', `/client.js?fingerprint=${self.context.environment.key}`, `/client.css?fingerprint=${self.context.environment.key}`, - '{{BUNDLE}}', + globalThis.__NULLSTACK_BUNDLE, `/nullstack/${self.context.environment.key}/offline/index.html`, ].flat() event.waitUntil( From 24ef07d658c22699d6e8ad0955d2565cb6cad37a Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Mon, 6 Feb 2023 00:33:15 -0300 Subject: [PATCH 02/59] :construction: inject hmr --- loaders/inject-client-hmr.js | 35 ++++++++++++++++++++ loaders/inject-server-hmr.js | 35 ++++++++++++++++++++ server/hmr.js | 64 ++++++++++++++++++++++++++++++++++++ shared/accept.js | 3 ++ shared/silenceHmr.js | 13 ++++++++ 5 files changed, 150 insertions(+) create mode 100644 loaders/inject-client-hmr.js create mode 100644 loaders/inject-server-hmr.js create mode 100644 server/hmr.js create mode 100644 shared/accept.js create mode 100644 shared/silenceHmr.js diff --git a/loaders/inject-client-hmr.js b/loaders/inject-client-hmr.js new file mode 100644 index 00000000..e7b74ab4 --- /dev/null +++ b/loaders/inject-client-hmr.js @@ -0,0 +1,35 @@ +const parse = require('@babel/parser').parse +const traverse = require('@babel/traverse').default + +module.exports = function (source) { + const ast = parse(source, { + sourceType: 'module', + plugins: ['classProperties', 'jsx'], + }) + let klassName + let klassPath + traverse(ast, { + MemberExpression(path) { + if (path.node.property.name === 'start' && path.node.object && path.node.object.name === 'Nullstack') { + klassName = path.parent.arguments[0].name + } + }, + }) + if (!klassName) return source + traverse(ast, { + ImportDeclaration(path) { + if (path.node.specifiers[0].local.name === klassName) { + klassPath = path.node.source.extra.rawValue + } + }, + }) + + return `${source} + if (module.hot) { + module.hot.accept() + module.hot.accept('${klassPath}', () => { + Nullstack.hotReload(${klassName}) + }) + } + ` +} diff --git a/loaders/inject-server-hmr.js b/loaders/inject-server-hmr.js new file mode 100644 index 00000000..22bbd23e --- /dev/null +++ b/loaders/inject-server-hmr.js @@ -0,0 +1,35 @@ +const parse = require('@babel/parser').parse +const traverse = require('@babel/traverse').default + +module.exports = function (source) { + const ast = parse(source, { + sourceType: 'module', + plugins: ['classProperties', 'jsx'], + }) + let klassName + let klassPath + traverse(ast, { + MemberExpression(path) { + if (path.node.property.name === 'start' && path.node.object && path.node.object.name === 'Nullstack') { + klassName = path.parent.arguments[0].name + } + }, + }) + if (!klassName) return source + traverse(ast, { + ImportDeclaration(path) { + if (path.node.specifiers[0].local.name === klassName) { + klassPath = path.node.source.extra.rawValue + } + }, + }) + + return `${source} + if (module.hot) { + module.hot.accept() + module.hot.accept('${klassPath}', () => { + Nullstack.start(${klassName}) + }) + } + ` +} diff --git a/server/hmr.js b/server/hmr.js new file mode 100644 index 00000000..f19642d0 --- /dev/null +++ b/server/hmr.js @@ -0,0 +1,64 @@ +/* eslint-disable nullstack/no-undef */ +import { existsSync } from 'fs' +import path from 'path' + +import dangerouslySilenceHmr from '../shared/silenceHmr' + +export default function hmr(server) { + if (module.hot) { + dangerouslySilenceHmr() + + const customConfig = path.resolve(process.cwd(), 'webpack.config.js') + const webpackConfigs = existsSync(customConfig) + ? __non_webpack_require__(customConfig) + : __non_webpack_require__(path.join(__dirname, '..', 'node_modules', 'nullstack', 'webpack.config.js')) + + function resolve(pkg) { + if (process.cwd().endsWith('/nullstack/tests') || process.cwd().endsWith('\\nullstack\\tests')) { + return path.join(__dirname, '..', '..', 'node_modules', pkg) + } + return pkg + } + + const webpack = __non_webpack_require__(resolve(`webpack`)) + const webpackDevMiddleware = __non_webpack_require__(resolve(`webpack-dev-middleware`)) + const disk = process.env.NULLSTACK_ENVIRONMENT_DISK === 'true' + const webpackConfig = webpackConfigs[1](null, { + environment: process.env.__NULLSTACK_CLI_ENVIRONMENT, + input: process.env.__NULLSTACK_CLI_INPUT, + disk, + loader: process.env.__NULLSTACK_CLI_LOADER, + }) + const compiler = webpack(webpackConfig) + + const webpackDevMiddlewareOptions = { + publicPath: '/', + writeToDisk: disk, + } + + server.use(async (request, _response, next) => { + if ( + request.originalUrl.indexOf('/nullstack/hmr') === -1 && + request.originalUrl.indexOf('/nullstack-client-update') === -1 && + request.originalUrl.indexOf('/nullstack-server-update') === -1 && + (request.originalUrl.split('?')[0].indexOf('.json') > -1 || + request.originalUrl.split('?')[0].indexOf('.') === -1) + ) { + if (request.originalUrl.startsWith('/nullstack/')) { + console.info(` βš™οΈ [${request.method}] ${request.originalUrl}`) + } else { + console.info(` πŸ•ΈοΈ [${request.method}] ${request.originalUrl}`) + } + } + next() + }) + + const instance = webpackDevMiddleware(compiler, webpackDevMiddlewareOptions) + + server.use(instance) + + const webpackHotMiddleware = __non_webpack_require__(resolve(`webpack-hot-middleware`)) + const webpackHotMiddlewareOptions = { log: false, path: '/nullstack/hmr', noinfo: true, quiet: true } + server.use(webpackHotMiddleware(compiler, webpackHotMiddlewareOptions)) + } +} diff --git a/shared/accept.js b/shared/accept.js new file mode 100644 index 00000000..e4316a4e --- /dev/null +++ b/shared/accept.js @@ -0,0 +1,3 @@ +if (module.hot) { + module.hot.accept() +} diff --git a/shared/silenceHmr.js b/shared/silenceHmr.js new file mode 100644 index 00000000..bf9ed774 --- /dev/null +++ b/shared/silenceHmr.js @@ -0,0 +1,13 @@ +export default function dangerouslySilenceHmr() { + if (!module.hot) return false + // kids, don't do this at home without the supervision of an adult + // i'm shamefully doing this because i couldn't silence css notifications + // at least not without spending all my free time reading documentation + // (β•―Β°β–‘Β°οΌ‰β•―οΈ΅ ┻━┻ + const originalLog = console.log + global.console.log = function (...args) { + if (args[0].toString().startsWith('[nodemon-webpack-plugin]')) return + if (args[0].toString().startsWith('[HMR]')) return + originalLog(...args) + } +} From 583a33ab63ac4ac9c63025f210edee7380587242 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Thu, 9 Feb 2023 15:24:41 -0300 Subject: [PATCH 03/59] :construction: improving hmr --- client/index.js | 26 ++++++------- loaders/register-static-from-server.js | 1 + package.json | 2 +- scripts/index.js | 7 +--- server/environment.js | 4 -- server/printError.js | 2 - server/template.js | 10 ++--- shared/silenceHmr.js | 4 +- tests/package.json | 5 ++- webpack.config.js | 53 ++++++++++---------------- 10 files changed, 45 insertions(+), 69 deletions(-) diff --git a/client/index.js b/client/index.js index e4a1993d..9e5bbba7 100644 --- a/client/index.js +++ b/client/index.js @@ -109,25 +109,23 @@ export default class Nullstack { if (module.hot) { dangerouslySilenceHmr() - const source = new window.EventSource('/nullstack/hmr') - const pingAndReload = async () => { - let serverBackOnline = false - try { - const response = await fetch('/nullstack/hmr') - serverBackOnline = response.ok - } catch (e) { - // setTimeout(pingAndReload, 100) - } finally { - if (serverBackOnline) { + function pingAndReload() { + const source = new window.EventSource('/nullstack/hmr') + let shouldReconnect = false + source.onopen = () => { + if (shouldReconnect) { window.location.reload() - } else { - setTimeout(pingAndReload, 500) } } + source.onerror = () => { + shouldReconnect = true + setTimeout(pingAndReload, 500) + } } - source.onerror = pingAndReload - Nullstack.updateInstancesPrototypes = function updateInstancesPrototypes(klass, hash, serverHash) { + pingAndReload() + + Nullstack.updateInstancesPrototypes = function updateInstancesPrototypes(klass, hash) { for (const key in context.instances) { const instance = context.instances[key] if (instance.constructor.hash === hash) { diff --git a/loaders/register-static-from-server.js b/loaders/register-static-from-server.js index 6c32cc55..08eb5a10 100644 --- a/loaders/register-static-from-server.js +++ b/loaders/register-static-from-server.js @@ -48,5 +48,6 @@ module.exports = function (source) { output += `\n${klassName}.hash = "${hash}";` output += `\n${klassName}.bindStaticFunctions(${klassName});` output += '}' + output += '\nif (module.hot) { module.hot.accept(); }' return output } diff --git a/package.json b/package.json index c760b48e..2174d377 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "copy-webpack-plugin": "^11.0.0", "css-loader": "6.7.3", "dotenv": "16.0.3", - "eslint-plugin-jest": "^27.1.6", "eslint-plugin-nullstack": "0.0.12", "express": "4.18.2", "fs-extra": "11.1.0", @@ -46,6 +45,7 @@ "webpack": "5.75.0", "webpack-dev-server": "4.11.1", "webpack-hot-middleware": "^2.25.3", + "webpack-node-externals": "^3.0.0", "ws": "8.12.0" } } \ No newline at end of file diff --git a/scripts/index.js b/scripts/index.js index 8f33619b..17f0c555 100755 --- a/scripts/index.js +++ b/scripts/index.js @@ -26,11 +26,10 @@ function loadEnv(env) { dotenv.config({ path: envPath }) } -async function start({ port, env, mode = 'spa', cold, disk, loader = 'swc' }) { +async function start({ port, env, mode = 'spa', disk, loader = 'swc' }) { loadEnv(env) const environment = 'development' process.env.NULLSTACK_ENVIRONMENT_MODE = mode - process.env.NULLSTACK_ENVIRONMENT_HOT = (!cold).toString() process.env.NULLSTACK_ENVIRONMENT_DISK = (!!disk).toString() process.env.__NULLSTACK_CLI_ENVIRONMENT = environment if (env) { @@ -45,7 +44,7 @@ async function start({ port, env, mode = 'spa', cold, disk, loader = 'swc' }) { const settings = config[0](null, { environment, disk, loader }) let loaded = false const compiler = webpack(settings) - compiler.watch({ aggregateTimeout: 300, hot: true, followSymlinks: true }, (error, stats) => { + compiler.watch({ aggregateTimeout: 300, poll: 1000, hot: true, ignored: /node_modules/ }, (error, stats) => { if (error) { console.error(error.stack || error) if (error.details) { @@ -91,11 +90,9 @@ program .command('start') .alias('s') .description('Start application in development environment') - .addOption(new program.Option('-m, --mode ', 'Build production bundles').choices(['ssr', 'spa'])) .option('-p, --port ', 'Port number to run the server') .option('-e, --env ', 'Name of the environment file that should be loaded') .option('-d, --disk', 'Write files to disk') - .option('-c, --cold', 'Disable hot module replacement') .addOption(new program.Option('-l, --loader ', 'Use Babel or SWC loader').choices(['swc', 'babel'])) .helpOption('-h, --help', 'Learn more about this command') .action(start) diff --git a/server/environment.js b/server/environment.js index 345eaeba..77917211 100644 --- a/server/environment.js +++ b/server/environment.js @@ -9,10 +9,6 @@ environment.key = '{{NULLSTACK_ENVIRONMENT_KEY}}' environment.name = process.env.NULLSTACK_ENVIRONMENT_NAME || '' -if (environment.development) { - environment.hot = process.env.NULLSTACK_ENVIRONMENT_HOT === 'true' -} - Object.freeze(environment) export default environment diff --git a/server/printError.js b/server/printError.js index 34083a9d..4fbd51d4 100644 --- a/server/printError.js +++ b/server/printError.js @@ -3,8 +3,6 @@ import context from './context' export default function (error) { if (context.catch) { context.catch(error) - } else { - throw error } const lines = error.stack.split(`\n`) let initiator = lines.find((line) => line.indexOf('Proxy') > -1) diff --git a/server/template.js b/server/template.js index c404b422..22f6eb3b 100644 --- a/server/template.js +++ b/server/template.js @@ -63,13 +63,9 @@ export default function ({ head, body, nextBody, context, instances }) { ${page.robots ? `` : ''} ${project.viewport ? `` : ''} - ${ - environment.production - ? `` - : '' - } + ${page.schema ? `` : ''} ${project.icons['180'] ? `` : ''} diff --git a/shared/silenceHmr.js b/shared/silenceHmr.js index bf9ed774..8a0d3950 100644 --- a/shared/silenceHmr.js +++ b/shared/silenceHmr.js @@ -6,8 +6,8 @@ export default function dangerouslySilenceHmr() { // (β•―Β°β–‘Β°οΌ‰β•―οΈ΅ ┻━┻ const originalLog = console.log global.console.log = function (...args) { - if (args[0].toString().startsWith('[nodemon-webpack-plugin]')) return - if (args[0].toString().startsWith('[HMR]')) return + if (args[0] && args[0].toString().startsWith('[nodemon-webpack-plugin]')) return + if (args[0] && args[0].toString().startsWith('[HMR]')) return originalLog(...args) } } diff --git a/tests/package.json b/tests/package.json index 0899ef72..b459154a 100644 --- a/tests/package.json +++ b/tests/package.json @@ -6,19 +6,20 @@ "license": "ISC", "devDependencies": { "cors": "2.8.5", + "eslint-plugin-jest": "^27.1.6", "eslint-plugin-nullstack": "0.0.12", "glob": "^8.0.3", "jest": "29.4.1", "jest-puppeteer": "7.0.0", "puppeteer": "19.6.3", - "purgecss-webpack-plugin": " 5.0.0" + "purgecss-webpack-plugin": "5.0.0" }, "types": "../../types/index.d.ts", "overrides": { "webpack": "5.75.0" }, "scripts": { - "start": "node ../scripts/index.js start --port=6969 --env=test --mode=spa --disk", + "start": "node ../scripts/index.js start --port=6969 --env=test --disk", "build": "node --enable-source-maps ../scripts/index.js build --env=test", "clear": "rm -rf ../node_modules ../package-lock.json node_modules .development .production package-lock.json", "setup": "cd .. && npm install && cd tests && npm install", diff --git a/webpack.config.js b/webpack.config.js index ca6e5b38..53653f9b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,6 +6,7 @@ const NodemonPlugin = require('nodemon-webpack-plugin') const path = require('path') const TerserPlugin = require('terser-webpack-plugin') const webpack = require(`webpack`) +const nodeExternals = require('webpack-node-externals') const { version } = require('./package.json') @@ -18,7 +19,7 @@ function getLoader(loader) { const originalLog = console.log global.console.log = function (...args) { - if (args[0].toString().startsWith('[nodemon-webpack-plugin]')) return + if (args[0] && args[0].toString().startsWith('[nodemon-webpack-plugin]')) return originalLog(...args) } @@ -268,16 +269,10 @@ function server(env, argv) { ) } return { - experiments: { - lazyCompilation: { - imports: isDev, - entries: false, - }, - }, mode: argv.environment, infrastructureLogging: { level: 'error' }, entry: isDev - ? ['webpack/hot/poll?100', path.posix.join(__dirname, 'shared', 'accept.js'), `./server.${entryExtension}`] + ? ['webpack/hot/poll?1000', path.posix.join(__dirname, 'shared', 'accept.js'), `./server.${entryExtension}`] : `./server.${entryExtension}`, output: { path: path.posix.join(process.cwd(), folder), @@ -287,7 +282,7 @@ function server(env, argv) { hotUpdateChunkFilename: 'nullstack-server-update-[id]-[fullhash].js', hotUpdateMainFilename: 'nullstack-server-update-[runtime]-[fullhash].json', pathinfo: false, - clean: isDev, + // clean: isDev, }, resolve: { extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], @@ -388,9 +383,11 @@ function server(env, argv) { __filename: false, }, plugins, - externals: { - 'webpack/hot/poll': 'webpack/hot/poll?100', - }, + externals: [ + nodeExternals({ + allowlist: ['webpack/hot/poll?1000'], + }), + ], cache: cacheFactory(argv, folder, 'server'), } } @@ -404,14 +401,12 @@ function client(env, argv) { const minimize = !isDev const babel = argv.loader === 'babel' const plugins = [] - if (!isDev) { - plugins.push( - new MiniCssExtractPlugin({ - filename: 'client.css', - chunkFilename: '[chunkhash].client.css', - }), - ) - } + plugins.push( + new MiniCssExtractPlugin({ + filename: 'client.css', + chunkFilename: '[chunkhash].client.css', + }), + ) if (isDev) { plugins.push(new webpack.HotModuleReplacementPlugin()) } @@ -423,12 +418,6 @@ function client(env, argv) { ) } return { - experiments: { - lazyCompilation: { - imports: isDev, - entries: false, - }, - }, mode: argv.environment, infrastructureLogging: { level: 'error' }, entry: isDev @@ -446,7 +435,7 @@ function client(env, argv) { hotUpdateChunkFilename: 'nullstack-client-update-[id]-[fullhash].js', hotUpdateMainFilename: 'nullstack-client-update-[runtime]-[fullhash].json', pathinfo: false, - clean: isDev, + // clean: isDev, }, resolve: { extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], @@ -493,11 +482,11 @@ function client(env, argv) { }, { test: /\.s?[ac]ss$/, - use: [ - isDev ? { loader: require.resolve('style-loader') } : MiniCssExtractPlugin.loader, - { loader: require.resolve('css-loader'), options: { url: false } }, - { loader: require.resolve('sass-loader'), options: { sassOptions: { fibers: false } } }, - ], + use: [MiniCssExtractPlugin.loader, { loader: require.resolve('css-loader'), options: { url: false } }], + }, + { + test: /\.s[ac]ss$/, + use: [{ loader: require.resolve('sass-loader'), options: { sassOptions: { fibers: false } } }], }, { test: /\.(njs|nts|jsx|tsx)$/, From 1843a2f1a0ed7c6d71215e109a6e3ad416f72188 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Fri, 10 Feb 2023 17:25:06 -0300 Subject: [PATCH 04/59] :construction: improve startup --- package.json | 1 - scripts/index.js | 14 +++----------- server/hmr.js | 9 +++++++++ webpack.config.js | 7 +------ 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 2174d377..aedc9216 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "webpack": "5.75.0", "webpack-dev-server": "4.11.1", "webpack-hot-middleware": "^2.25.3", - "webpack-node-externals": "^3.0.0", "ws": "8.12.0" } } \ No newline at end of file diff --git a/scripts/index.js b/scripts/index.js index 17f0c555..b78fa76e 100755 --- a/scripts/index.js +++ b/scripts/index.js @@ -26,10 +26,11 @@ function loadEnv(env) { dotenv.config({ path: envPath }) } -async function start({ port, env, mode = 'spa', disk, loader = 'swc' }) { +async function start({ port, env, disk, loader = 'swc' }) { loadEnv(env) + console.info(` πŸš€οΈ Building your application in development mode...`) const environment = 'development' - process.env.NULLSTACK_ENVIRONMENT_MODE = mode + process.env.NULLSTACK_ENVIRONMENT_MODE = 'spa' process.env.NULLSTACK_ENVIRONMENT_DISK = (!!disk).toString() process.env.__NULLSTACK_CLI_ENVIRONMENT = environment if (env) { @@ -42,7 +43,6 @@ async function start({ port, env, mode = 'spa', disk, loader = 'swc' }) { if (!process.env.NULLSTACK_PROJECT_DOMAIN) process.env.NULLSTACK_PROJECT_DOMAIN = 'localhost' if (!process.env.NULLSTACK_WORKER_PROTOCOL) process.env.NULLSTACK_WORKER_PROTOCOL = 'http' const settings = config[0](null, { environment, disk, loader }) - let loaded = false const compiler = webpack(settings) compiler.watch({ aggregateTimeout: 300, poll: 1000, hot: true, ignored: /node_modules/ }, (error, stats) => { if (error) { @@ -52,14 +52,6 @@ async function start({ port, env, mode = 'spa', disk, loader = 'swc' }) { } } else if (stats.hasErrors()) { console.info(stats.toString({ colors: true, warnings: false, logging: false, assets: false, modules: false })) - } else if (!loaded) { - loaded = true - console.info( - '\x1b[36m%s\x1b[0m', - ` βœ…οΈ Your application is ready at http://${process.env.NULLSTACK_PROJECT_DOMAIN}:${ - process.env.NULLSTACK_SERVER_PORT || process.env.PORT || 3000 - }\n`, - ) } }) } diff --git a/server/hmr.js b/server/hmr.js index f19642d0..ce19af81 100644 --- a/server/hmr.js +++ b/server/hmr.js @@ -55,6 +55,15 @@ export default function hmr(server) { const instance = webpackDevMiddleware(compiler, webpackDevMiddlewareOptions) + instance.waitUntilValid(() => { + console.info( + '\x1b[36m%s\x1b[0m', + ` βœ…οΈ Your application is ready at http://${process.env.NULLSTACK_PROJECT_DOMAIN}:${ + process.env.NULLSTACK_SERVER_PORT || process.env.PORT || 3000 + }\n`, + ) + }) + server.use(instance) const webpackHotMiddleware = __non_webpack_require__(resolve(`webpack-hot-middleware`)) diff --git a/webpack.config.js b/webpack.config.js index 53653f9b..d840288e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,7 +6,6 @@ const NodemonPlugin = require('nodemon-webpack-plugin') const path = require('path') const TerserPlugin = require('terser-webpack-plugin') const webpack = require(`webpack`) -const nodeExternals = require('webpack-node-externals') const { version } = require('./package.json') @@ -383,11 +382,7 @@ function server(env, argv) { __filename: false, }, plugins, - externals: [ - nodeExternals({ - allowlist: ['webpack/hot/poll?1000'], - }), - ], + externals: { 'webpack/hot/poll': 'webpack/hot/poll?1000' }, cache: cacheFactory(argv, folder, 'server'), } } From 20fda52260e3d943bd628725948eff90aada7f10 Mon Sep 17 00:00:00 2001 From: Daniel Cruz Date: Fri, 10 Feb 2023 21:12:19 -0300 Subject: [PATCH 05/59] :construction: apply loader to silence HMR logs --- client/index.js | 3 --- loaders/shut-up-loader.js | 12 ++++++++++++ server/hmr.js | 4 ---- shared/silenceHmr.js | 13 ------------- webpack.config.js | 22 ++++++++++++++++------ 5 files changed, 28 insertions(+), 26 deletions(-) create mode 100644 loaders/shut-up-loader.js delete mode 100644 shared/silenceHmr.js diff --git a/client/index.js b/client/index.js index 9e5bbba7..bc245422 100644 --- a/client/index.js +++ b/client/index.js @@ -2,7 +2,6 @@ import element from '../shared/element' import fragment from '../shared/fragment' import generateTree from '../shared/generateTree' import { loadPlugins, useClientPlugins } from '../shared/plugins' -import dangerouslySilenceHmr from '../shared/silenceHmr' import client from './client' import context, { generateContext } from './context' import environment from './environment' @@ -107,8 +106,6 @@ export default class Nullstack { } if (module.hot) { - dangerouslySilenceHmr() - function pingAndReload() { const source = new window.EventSource('/nullstack/hmr') let shouldReconnect = false diff --git a/loaders/shut-up-loader.js b/loaders/shut-up-loader.js new file mode 100644 index 00000000..355888b1 --- /dev/null +++ b/loaders/shut-up-loader.js @@ -0,0 +1,12 @@ +module.exports = function removeStaticFromClient(source) { + const injection = ` + const console = { + log: () => {}, + error: () => {}, + debug: () => {}, + info: () => {}, + warn: () => {} + }; + ` + return injection + source +} diff --git a/server/hmr.js b/server/hmr.js index ce19af81..04785b6f 100644 --- a/server/hmr.js +++ b/server/hmr.js @@ -2,12 +2,8 @@ import { existsSync } from 'fs' import path from 'path' -import dangerouslySilenceHmr from '../shared/silenceHmr' - export default function hmr(server) { if (module.hot) { - dangerouslySilenceHmr() - const customConfig = path.resolve(process.cwd(), 'webpack.config.js') const webpackConfigs = existsSync(customConfig) ? __non_webpack_require__(customConfig) diff --git a/shared/silenceHmr.js b/shared/silenceHmr.js deleted file mode 100644 index 8a0d3950..00000000 --- a/shared/silenceHmr.js +++ /dev/null @@ -1,13 +0,0 @@ -export default function dangerouslySilenceHmr() { - if (!module.hot) return false - // kids, don't do this at home without the supervision of an adult - // i'm shamefully doing this because i couldn't silence css notifications - // at least not without spending all my free time reading documentation - // (β•―Β°β–‘Β°οΌ‰β•―οΈ΅ ┻━┻ - const originalLog = console.log - global.console.log = function (...args) { - if (args[0] && args[0].toString().startsWith('[nodemon-webpack-plugin]')) return - if (args[0] && args[0].toString().startsWith('[HMR]')) return - originalLog(...args) - } -} diff --git a/webpack.config.js b/webpack.config.js index d840288e..6bf51cd3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -16,12 +16,6 @@ function getLoader(loader) { return path.posix.join(loaders, loader) } -const originalLog = console.log -global.console.log = function (...args) { - if (args[0] && args[0].toString().startsWith('[nodemon-webpack-plugin]')) return - originalLog(...args) -} - function cacheFactory(args, folder, name) { if (args.cache || args.environment === 'development') { return { @@ -374,6 +368,14 @@ function server(env, argv) { resourceQuery: /raw/, type: 'asset/source', }, + { + test: /webpack[\\\/]hot/, + loader: getLoader('shut-up-loader.js') + }, + { + test: /webpack-hot-middleware/, + loader: getLoader('shut-up-loader.js') + } ], }, target: 'node', @@ -500,6 +502,14 @@ function client(env, argv) { test: /\.(njs|nts|jsx|tsx)$/, loader: getLoader('transform-node-ref.js'), }, + { + test: /webpack[\\\/]hot/, + loader: getLoader('shut-up-loader.js') + }, + { + test: /webpack-hot-middleware/, + loader: getLoader('shut-up-loader.js') + } ], }, target: 'web', From ae03034e2b76560597a14e3f51ddf4e108c8bd66 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Fri, 10 Feb 2023 23:25:50 -0300 Subject: [PATCH 06/59] :construction: fix reload getting stuck --- client/index.js | 16 ---------------- webpack.config.js | 32 ++++++++++++++++---------------- 2 files changed, 16 insertions(+), 32 deletions(-) diff --git a/client/index.js b/client/index.js index bc245422..c6f7fc13 100644 --- a/client/index.js +++ b/client/index.js @@ -106,22 +106,6 @@ export default class Nullstack { } if (module.hot) { - function pingAndReload() { - const source = new window.EventSource('/nullstack/hmr') - let shouldReconnect = false - source.onopen = () => { - if (shouldReconnect) { - window.location.reload() - } - } - source.onerror = () => { - shouldReconnect = true - setTimeout(pingAndReload, 500) - } - } - - pingAndReload() - Nullstack.updateInstancesPrototypes = function updateInstancesPrototypes(klass, hash) { for (const key in context.instances) { const instance = context.instances[key] diff --git a/webpack.config.js b/webpack.config.js index 6bf51cd3..2b89655b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -275,7 +275,11 @@ function server(env, argv) { hotUpdateChunkFilename: 'nullstack-server-update-[id]-[fullhash].js', hotUpdateMainFilename: 'nullstack-server-update-[runtime]-[fullhash].json', pathinfo: false, - // clean: isDev, + clean: { + keep(asset) { + return isDev && !asset.includes('server') + }, + }, }, resolve: { extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], @@ -369,13 +373,9 @@ function server(env, argv) { type: 'asset/source', }, { - test: /webpack[\\\/]hot/, - loader: getLoader('shut-up-loader.js') + test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, + loader: getLoader('shut-up-loader.js'), }, - { - test: /webpack-hot-middleware/, - loader: getLoader('shut-up-loader.js') - } ], }, target: 'node', @@ -419,7 +419,7 @@ function client(env, argv) { infrastructureLogging: { level: 'error' }, entry: isDev ? [ - 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=20000', + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', path.posix.join(__dirname, 'shared', 'accept.js'), `./client.${entryExtension}`, ] @@ -432,7 +432,11 @@ function client(env, argv) { hotUpdateChunkFilename: 'nullstack-client-update-[id]-[fullhash].js', hotUpdateMainFilename: 'nullstack-client-update-[runtime]-[fullhash].json', pathinfo: false, - // clean: isDev, + clean: { + keep(asset) { + return isDev && !asset.includes('server') + }, + }, }, resolve: { extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], @@ -503,19 +507,15 @@ function client(env, argv) { loader: getLoader('transform-node-ref.js'), }, { - test: /webpack[\\\/]hot/, - loader: getLoader('shut-up-loader.js') + test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, + loader: getLoader('shut-up-loader.js'), }, - { - test: /webpack-hot-middleware/, - loader: getLoader('shut-up-loader.js') - } ], }, target: 'web', externals: { 'webpack-hot-middleware/client': - 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=20000', + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', }, node: { __dirname: false, From bbdd54311daa77621fde879bf80df325299e6ba1 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Sun, 12 Feb 2023 23:55:44 -0300 Subject: [PATCH 07/59] :construction: clean up unused code --- .../{inject-client-hmr.js => inject-hmr.js} | 0 loaders/inject-server-hmr.js | 35 ------------------- loaders/remove-static-from-client.js | 5 +-- server/index.js | 6 ++++ server/server.js | 5 --- types/Environment.d.ts | 2 -- webpack.config.js | 8 ++--- 7 files changed, 11 insertions(+), 50 deletions(-) rename loaders/{inject-client-hmr.js => inject-hmr.js} (100%) delete mode 100644 loaders/inject-server-hmr.js diff --git a/loaders/inject-client-hmr.js b/loaders/inject-hmr.js similarity index 100% rename from loaders/inject-client-hmr.js rename to loaders/inject-hmr.js diff --git a/loaders/inject-server-hmr.js b/loaders/inject-server-hmr.js deleted file mode 100644 index 22bbd23e..00000000 --- a/loaders/inject-server-hmr.js +++ /dev/null @@ -1,35 +0,0 @@ -const parse = require('@babel/parser').parse -const traverse = require('@babel/traverse').default - -module.exports = function (source) { - const ast = parse(source, { - sourceType: 'module', - plugins: ['classProperties', 'jsx'], - }) - let klassName - let klassPath - traverse(ast, { - MemberExpression(path) { - if (path.node.property.name === 'start' && path.node.object && path.node.object.name === 'Nullstack') { - klassName = path.parent.arguments[0].name - } - }, - }) - if (!klassName) return source - traverse(ast, { - ImportDeclaration(path) { - if (path.node.specifiers[0].local.name === klassName) { - klassPath = path.node.source.extra.rawValue - } - }, - }) - - return `${source} - if (module.hot) { - module.hot.accept() - module.hot.accept('${klassPath}', () => { - Nullstack.start(${klassName}) - }) - } - ` -} diff --git a/loaders/remove-static-from-client.js b/loaders/remove-static-from-client.js index 3a999d4f..9d6ae4f7 100644 --- a/loaders/remove-static-from-client.js +++ b/loaders/remove-static-from-client.js @@ -5,7 +5,6 @@ const crypto = require('crypto') module.exports = function removeStaticFromClient(source) { const id = this.resourcePath.replace(this.rootContext, '') const hash = crypto.createHash('md5').update(id).digest('hex') - let serverSource = '' let hashPosition let klassName const injections = {} @@ -26,7 +25,6 @@ module.exports = function removeStaticFromClient(source) { ClassMethod(path) { if (path.node.static && path.node.async) { injections[path.node.start] = { end: path.node.end, name: path.node.key.name } - serverSource += source.slice(path.node.start, path.node.end) if (!positions.includes(path.node.start)) { positions.push(path.node.start) } @@ -58,8 +56,7 @@ module.exports = function removeStaticFromClient(source) { } let newSource = outputs.reverse().join('') if (klassName) { - const serverHash = crypto.createHash('md5').update(serverSource).digest('hex') - newSource += `\nif (module.hot) { module.hot.accept(); Nullstack.updateInstancesPrototypes(${klassName}, ${klassName}.hash, '${serverHash}') }` + newSource += `\nif (module.hot) { module.hot.accept(); Nullstack.updateInstancesPrototypes(${klassName}, ${klassName}.hash) }` } return newSource } diff --git a/server/index.js b/server/index.js index 1f588d39..e7214e31 100644 --- a/server/index.js +++ b/server/index.js @@ -115,3 +115,9 @@ class Nullstack { } export default Nullstack + +if (module.hot) { + Nullstack.hotReload = function hotReload(klass) { + Nullstack.start(klass) + } +} diff --git a/server/server.js b/server/server.js index be71f61c..b0f5f1a1 100644 --- a/server/server.js +++ b/server/server.js @@ -286,11 +286,6 @@ server.start = function () { }) if (!server.less) { - if (!server.port) { - console.info('\x1b[31mServer port is not defined!\x1b[0m') - process.exit() - } - server.listen(server.port, async () => { if (environment.production) { console.info( diff --git a/types/Environment.d.ts b/types/Environment.d.ts index 70bebfe5..db962150 100644 --- a/types/Environment.d.ts +++ b/types/Environment.d.ts @@ -24,7 +24,5 @@ export type NullstackEnvironment = { */ event: string - hot?: boolean - disk?: boolean } diff --git a/webpack.config.js b/webpack.config.js index 2b89655b..41912117 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -277,7 +277,7 @@ function server(env, argv) { pathinfo: false, clean: { keep(asset) { - return isDev && !asset.includes('server') + return !isDev || !asset.includes('server') }, }, }, @@ -301,7 +301,7 @@ function server(env, argv) { { test: /server\.(js|ts)$/, exclude: /node_modules/, - loader: getLoader('inject-server-hmr.js'), + loader: getLoader('inject-hmr.js'), }, { test: /nullstack.js$/, @@ -434,7 +434,7 @@ function client(env, argv) { pathinfo: false, clean: { keep(asset) { - return isDev && !asset.includes('server') + return !isDev || !asset.includes('server') }, }, }, @@ -456,7 +456,7 @@ function client(env, argv) { { test: /client\.(js|ts)$/, exclude: /node_modules/, - loader: getLoader('inject-client-hmr.js'), + loader: getLoader('inject-hmr.js'), }, { test: /nullstack.js$/, From 1d1abd2fbae51902511d356aa46cd1f52679379d Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Mon, 13 Feb 2023 00:52:51 -0300 Subject: [PATCH 08/59] :sparkles: hot reload for vanilla express routes --- server/server.js | 17 +++++++++++++++++ tests/server.js | 3 +++ tests/src/externalRoute.js | 8 ++++++++ tests/src/externalRoute.test.js | 12 ++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 tests/src/externalRoute.js create mode 100644 tests/src/externalRoute.test.js diff --git a/server/server.js b/server/server.js index b0f5f1a1..f80b2447 100644 --- a/server/server.js +++ b/server/server.js @@ -1,5 +1,6 @@ import bodyParser from 'body-parser' import express from 'express' +import fs from 'fs' import fetch from 'node-fetch' import path from 'path' @@ -69,6 +70,18 @@ for (const method of ['get', 'post', 'put', 'patch', 'delete', 'all']) { } }) } + if (module.hot) { + server._router.stack.forEach((r) => { + if (r?.route?.path === args[0]) { + const exists = r.route.stack.find((l) => l.method === method) + if (!!exists && !!process.env.__NULLSTACK_FIRST_LOAD_COMPLETE) { + const filename = path.join(process.cwd(), 'server.js') + const time = new Date() + fs.utimesSync(filename, time, time) + } + } + }) + } return original(...args) } } @@ -285,6 +298,10 @@ server.start = function () { response.status(500).json({}) }) + if (module.hot) { + process.env.__NULLSTACK_FIRST_LOAD_COMPLETE = true + } + if (!server.less) { server.listen(server.port, async () => { if (environment.production) { diff --git a/tests/server.js b/tests/server.js index d7e877de..09d0df4b 100644 --- a/tests/server.js +++ b/tests/server.js @@ -9,6 +9,7 @@ import ContextSecrets from './src/ContextSecrets' import ContextSettings from './src/ContextSettings' import ContextWorker from './src/ContextWorker' import ExposedServerFunctions from './src/ExposedServerFunctions' +import setExternalRoute from './src/externalRoute' import vueable from './src/plugins/vueable' import ReqRes from './src/ReqRes' @@ -68,6 +69,8 @@ context.server.get('/vaidamerdanaapi.json', (_request, response) => { context.startIncrementalValue = 0 +setExternalRoute(context.server) + context.start = async function () { await ContextProject.start(context) await ContextSecrets.start(context) diff --git a/tests/src/externalRoute.js b/tests/src/externalRoute.js new file mode 100644 index 00000000..f9d25d97 --- /dev/null +++ b/tests/src/externalRoute.js @@ -0,0 +1,8 @@ +export default function setExternalRoute(server) { + server.get('/external-route.json', (_request, response) => { + response.json({ nice: 69 }) + }) + server.get('/external-route.json', (_request, response) => { + response.json({ nicent: 68 }) + }) +} diff --git a/tests/src/externalRoute.test.js b/tests/src/externalRoute.test.js new file mode 100644 index 00000000..48d1fb77 --- /dev/null +++ b/tests/src/externalRoute.test.js @@ -0,0 +1,12 @@ +beforeAll(async () => { + await page.goto('http://localhost:6969/external-route.json') +}) + +describe('ExtermalRoute', () => { + test('express functions keep their priority', async () => { + const response = await page.evaluate(() => { + return JSON.parse(document.querySelector('body').innerText) + }) + expect(response.nice === 69).toBeTruthy() + }) +}) From 2047466132b10398b7985ae1153b4b42f6d8cd7d Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Fri, 24 Feb 2023 10:54:24 -0300 Subject: [PATCH 09/59] :construction: more swc magic --- client/index.js | 10 +- package.json | 2 +- server/index.js | 10 +- tests/src/Application.njs | 2 +- webpack.config.js | 199 +++++++++++++++++++++----------------- 5 files changed, 126 insertions(+), 97 deletions(-) diff --git a/client/index.js b/client/index.js index c6f7fc13..f33463a9 100644 --- a/client/index.js +++ b/client/index.js @@ -35,11 +35,15 @@ scope.context = context client.plugins = loadPlugins(scope) +globalThis.$nullstack = context +globalThis.$transpiler = { + element, + fragment, + invoke, +} + export default class Nullstack { - static element = element - static invoke = invoke - static fragment = fragment static use = useClientPlugins static context = generateContext({}) diff --git a/package.json b/package.json index aedc9216..d961941f 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", "@babel/traverse": "7.20.13", - "@swc/core": "1.3.32", + "@swc/core": "1.3.35", "babel-loader": "9.1.2", "body-parser": "1.20.1", "commander": "10.0.0", diff --git a/server/index.js b/server/index.js index e7214e31..cecf4494 100644 --- a/server/index.js +++ b/server/index.js @@ -28,11 +28,15 @@ context.worker = worker server.less = normalize(__filename) !== normalize(process.argv[1]) +globalThis.$nullstack = context +globalThis.$transpiler = { + element, + fragment, + registry, +} + class Nullstack { - static registry = registry - static element = element - static fragment = fragment static use = useServerPlugins static bindStaticFunctions(klass) { diff --git a/tests/src/Application.njs b/tests/src/Application.njs index 6c1a17e0..e4f9339d 100644 --- a/tests/src/Application.njs +++ b/tests/src/Application.njs @@ -76,7 +76,7 @@ class Application extends Nullstack {

{project.name}

{page.status !== 200 &&
}
- offline + offline!11123123!!! static this router with params undefined nodes diff --git a/webpack.config.js b/webpack.config.js index 41912117..cffe1ff7 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -119,12 +119,22 @@ const babelTs = { function swcNullstackJavascript({ environment, target }) { const targets = getTargets({ environment, target }) + const config = { + development: environment === 'development', + client: target === 'web', + } + const cacheRoot = path.posix.join(process.cwd(), `.${environment}`, '.cache', '.swc'); return { - test: /\.(njs|nts|jsx|tsx)$/, + test: /\.(njs|jsx)$/, use: { loader: require.resolve('swc-loader'), options: { + minify: false, jsc: { + experimental: { + cacheRoot, + plugins: [['C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', config]], + }, parser: { syntax: 'ecmascript', exportDefaultFrom: true, @@ -132,13 +142,15 @@ function swcNullstackJavascript({ environment, target }) { }, transform: { react: { - pragma: 'Nullstack.element', - pragmaFrag: 'Nullstack.fragment', + pragma: '$transpiler.element', + pragmaFrag: '$transpiler.fragment', throwIfNamespace: true, }, }, + keepClassNames: true, }, env: { + name: 'test', targets, }, }, @@ -161,8 +173,8 @@ const babelNullstackJavascript = { [ '@babel/plugin-transform-react-jsx', { - pragma: 'Nullstack.element', - pragmaFrag: 'Nullstack.fragment', + pragma: '$transpiler.element', + pragmaFrag: '$transpiler.fragment', throwIfNamespace: false, }, ], @@ -173,12 +185,21 @@ const babelNullstackJavascript = { function swcNullstackTypescript({ environment, target }) { const targets = getTargets({ environment, target }) + const config = { + development: environment === 'development', + client: target === 'web', + } + const cacheRoot = path.posix.join(process.cwd(), `.${environment}`, '.cache', '.swc'); return { test: /\.(nts|tsx)$/, use: { loader: require.resolve('swc-loader'), options: { jsc: { + experimental: { + cacheRoot, + plugins: [['C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', config]], + }, parser: { syntax: 'typescript', exportDefaultFrom: true, @@ -186,8 +207,8 @@ function swcNullstackTypescript({ environment, target }) { }, transform: { react: { - pragma: 'Nullstack.element', - pragmaFrag: 'Nullstack.fragment', + pragma: '$transpiler.element', + pragmaFrag: '$transpiler.fragment', throwIfNamespace: true, }, }, @@ -215,15 +236,15 @@ const babelNullstackTypescript = { { isTSX: true, allExtensions: true, - tsxPragma: 'Nullstack.element', - tsxPragmaFrag: 'Nullstack.fragment', + tsxPragma: '$transpiler.element', + tsxPragmaFrag: '$transpiler.fragment', }, ], [ '@babel/plugin-transform-react-jsx', { - pragma: 'Nullstack.element', - pragmaFrag: 'Nullstack.fragment', + pragma: '$transpiler.element', + pragmaFrag: '$transpiler.fragment', throwIfNamespace: false, }, ], @@ -303,18 +324,6 @@ function server(env, argv) { exclude: /node_modules/, loader: getLoader('inject-hmr.js'), }, - { - test: /nullstack.js$/, - loader: getLoader('string-replace.js'), - options: { - multiple: [ - { - search: /{{NULLSTACK_ENVIRONMENT_NAME}}/gi, - replace: 'server', - }, - ], - }, - }, { test: /environment.js$/, loader: getLoader('string-replace.js'), @@ -341,37 +350,49 @@ function server(env, argv) { }, babel ? babelJs : swcJs({ environment: argv.environment, target: 'node' }), babel ? babelTs : swcTs({ environment: argv.environment, target: 'node' }), - babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'node' }), - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('register-static-from-server.js'), - }, - { - test: /\.s?[ac]ss$/, - use: [{ loader: getLoader('ignore-import.js') }], - }, - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('register-inner-components.js'), - }, - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('inject-nullstack.js'), - }, - babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'node' }), - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('add-source-to-node.js'), - }, - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('transform-node-ref.js'), - }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('register-static-from-server.js'), + // }, + // { + // test: /\.s?[ac]ss$/, + // use: [{ loader: getLoader('ignore-import.js') }], + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('register-inner-components.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('inject-nullstack.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('add-source-to-node.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('transform-node-ref.js'), + // }, { issuer: /worker.js/, resourceQuery: /raw/, type: 'asset/source', }, + babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'node' }), + babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'node' }), + { + test: /nullstack.js$/, + loader: getLoader('string-replace.js'), + options: { + multiple: [ + { + search: /{{NULLSTACK_ENVIRONMENT_NAME}}/gi, + replace: 'server', + }, + ], + }, + }, { test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, loader: getLoader('shut-up-loader.js'), @@ -419,10 +440,10 @@ function client(env, argv) { infrastructureLogging: { level: 'error' }, entry: isDev ? [ - 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', - path.posix.join(__dirname, 'shared', 'accept.js'), - `./client.${entryExtension}`, - ] + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', + path.posix.join(__dirname, 'shared', 'accept.js'), + `./client.${entryExtension}`, + ] : `./client.${entryExtension}`, output: { publicPath: `/`, @@ -458,29 +479,16 @@ function client(env, argv) { exclude: /node_modules/, loader: getLoader('inject-hmr.js'), }, - { - test: /nullstack.js$/, - loader: getLoader('string-replace.js'), - options: { - multiple: [ - { - search: /{{NULLSTACK_ENVIRONMENT_NAME}}/gi, - replace: 'client', - }, - ], - }, - }, babel ? babelJs : swcJs({ environment: argv.environment, target: 'web' }), babel ? babelTs : swcTs({ environment: argv.environment, target: 'web' }), - babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'node' }), - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('remove-import-from-client.js'), - }, - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('remove-static-from-client.js'), - }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('remove-import-from-client.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('remove-static-from-client.js'), + // }, { test: /\.s?[ac]ss$/, use: [MiniCssExtractPlugin.loader, { loader: require.resolve('css-loader'), options: { url: false } }], @@ -489,22 +497,35 @@ function client(env, argv) { test: /\.s[ac]ss$/, use: [{ loader: require.resolve('sass-loader'), options: { sassOptions: { fibers: false } } }], }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('register-inner-components.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('inject-nullstack.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('add-source-to-node.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('transform-node-ref.js'), + // }, + babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'web' }), + babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'web' }), { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('register-inner-components.js'), - }, - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('inject-nullstack.js'), - }, - babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'node' }), - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('add-source-to-node.js'), - }, - { - test: /\.(njs|nts|jsx|tsx)$/, - loader: getLoader('transform-node-ref.js'), + test: /nullstack.js$/, + loader: getLoader('string-replace.js'), + options: { + multiple: [ + { + search: /{{NULLSTACK_ENVIRONMENT_NAME}}/gi, + replace: 'client', + }, + ], + }, }, { test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, From 59dc87b9670b7b5b313f4d18f0be7c4d86c54f05 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Sun, 26 Feb 2023 19:38:48 -0300 Subject: [PATCH 10/59] :construction: :recycle: cleaning up webpack --- client/index.js | 13 +- client/runtime.js | 9 + loaders/inject-runtime.js | 4 + loaders/nullstack.wasm | Bin 0 -> 1387595 bytes nullstack.js | 4 - server/environment.js | 4 +- server/index.js | 46 +-- server/project.js | 3 +- server/registry.js | 46 +++ server/runtime.js | 9 + tests/webpack.config.js | 7 +- webpack.config.js | 574 ++----------------------------- webpack.config.old.js | 558 ++++++++++++++++++++++++++++++ webpack/cache.js | 16 + webpack/devtool.js | 9 + webpack/entry.js | 33 ++ webpack/externals.js | 28 ++ webpack/infrastructureLogging.js | 7 + webpack/mode.js | 5 + webpack/module.js | 191 ++++++++++ webpack/node.js | 8 + webpack/optimization.js | 27 ++ webpack/output.js | 20 ++ webpack/plugins.js | 52 +++ webpack/resolve.js | 12 + webpack/stats.js | 5 + webpack/target.js | 5 + 27 files changed, 1100 insertions(+), 595 deletions(-) create mode 100644 client/runtime.js create mode 100644 loaders/inject-runtime.js create mode 100644 loaders/nullstack.wasm delete mode 100644 nullstack.js create mode 100644 server/runtime.js create mode 100644 webpack.config.old.js create mode 100644 webpack/cache.js create mode 100644 webpack/devtool.js create mode 100644 webpack/entry.js create mode 100644 webpack/externals.js create mode 100644 webpack/infrastructureLogging.js create mode 100644 webpack/mode.js create mode 100644 webpack/module.js create mode 100644 webpack/node.js create mode 100644 webpack/optimization.js create mode 100644 webpack/output.js create mode 100644 webpack/plugins.js create mode 100644 webpack/resolve.js create mode 100644 webpack/stats.js create mode 100644 webpack/target.js diff --git a/client/index.js b/client/index.js index f33463a9..f6074dd1 100644 --- a/client/index.js +++ b/client/index.js @@ -35,13 +35,16 @@ scope.context = context client.plugins = loadPlugins(scope) -globalThis.$nullstack = context -globalThis.$transpiler = { - element, - fragment, - invoke, +if (environment.development) { + globalThis.$nullstack = context } +// export { +// element, +// fragment, +// invoke, +// } + export default class Nullstack { static use = useClientPlugins diff --git a/client/runtime.js b/client/runtime.js new file mode 100644 index 00000000..49dac317 --- /dev/null +++ b/client/runtime.js @@ -0,0 +1,9 @@ +import element from '../shared/element' +import fragment from '../shared/fragment' +import invoke from './invoke' + +export default { + element, + fragment, + invoke, +} \ No newline at end of file diff --git a/loaders/inject-runtime.js b/loaders/inject-runtime.js new file mode 100644 index 00000000..107b0a97 --- /dev/null +++ b/loaders/inject-runtime.js @@ -0,0 +1,4 @@ +module.exports = function (source, map) { + const injection = "import $runtime from 'nullstack/runtime';" + this.callback(null, injection + source, map) +} \ No newline at end of file diff --git a/loaders/nullstack.wasm b/loaders/nullstack.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8b702e5a65dbaab9f119d902be4080cb388bf5f8 GIT binary patch literal 1387595 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 z

u+YD|4&RYb=(dd*|TI$Bj^``Q~C(@;gQ0}={?Mt;0TnkE2PW(p91T94>C!$DQ= zJ*B|9@%Wkg)#m(TL9Y?(JZ}&8S{u^5%{Q*GA%a|>!J3qr&L)Wx8IwM008wFn{1bvl zgUcwgmQ5l1Cg6nG>_Mx_UJY1P7c-IH;nDE#x5TPRS;&46P#fJ%yICd&tbB5GrpJmkNDkJ`<%(|IQrXLgveI^Q=$toO z=R72(?QnVMo>91bZn3?5IN8g3C#>z)S?5gGCx@)G`R<|eb>-pm7XA*`_VVkpue4Jh zlAg9w9%ksv<)QL`6wZyTaE{8Gecg~}rsYj}lF7$Z-q`fhoVv5~C{V##pvXU8K-=+8 zW|Td=xgk;q3hi=Z(}?CkjU|;mcNSDfwYV57Qf~E4T*&$@whsG8eC+_IxPciY0of^p z;v7}PWwn(XS_D;RFAv5ytVwJTT|--w6NPV>+myO*L2Z=7#hb*K>3xT@$V(_qKud+Y zXaT<>D7NIn3uaz+7wM#h(7{)$)^e_u`FmMih2+=rRanMy{=S%> z@P+O0C^t|ni#DruV5L{|d)*F-^dK^+295}otLG*g0c<05xdD`A2IEg&<45J6UFJu{ z?hcfT4^2rnTPqKo1&k>>Y#^jLj1W2qk`Ls>DwSzxCsv7vl6T0IS}ccWK_0&&S336H zmNM*;uWL}YHKw(o8U-0>7Q(gF*7c7xrVamKObWb$?V?ZB(FDZ@e570>yzsBQd1==ML$pWOy3Of#4hOBq4Hu2QJ0IhJ1xfsG=us!nLZq17Lnmc*CEoiIF;} znR;Re0^4(A;UHy}YPW9eIVr+Gl7rEC-;i`m&N&;1whnUl05cPc%PXi)K%n}@j7DpD zC;@z}JX9^xqHngk8rMPIhq8H zLcm3+aP6JUjqY!lGdFfSxbIwuqBYyaS--%!_I{gD^8CxKmc*ZXd9-h)9S__fL#g_!q=rf;m+3^XJ* zb4*Dz`v#<&WQXV&bj6grnN2mvh}Gb%MPJ@!nXbsojNh~^HfyI&?F*I9R1WJp7ZE)u zok=q5{tmT6{^-%3{%C|abFe>pJnbZJGa?zF+>JIhfOR056~eGClb^Wm{%GsM>Cgp+ zgg+XF^6)t{#wDWq@<%gL`Jq;0i{LxODXZI2dv&|n3?~y;6mzMx4 zVFbbUvi@i*cV2_!g@z|4A9YgreAJ%~p8(U@B^v9rp_yq z@Gn4Gt%@~rDJIITKv5wD=VHVrRHVqcb&I2KV(oK!R1vxc&waLjj^qTW;|%5Sq*fz= zLGVsI=&b|R0yZNpO~g!0KIznGok^!gVv_RkAfZg?oFUpr$-vrNu-0AY(A5LuZI9gw zI%E3s&M_V5nR#O(^cHIUeunk$Xjq0^q$X$~^SDrGViZ(!njJy{UuPE3@mQ6HT1`f- zo*K&5A!nO&mR$?yTMPmSY~-bx4mzs&bt z2`(+vH{ve#X=XmwNPLTTJ z%WN?A7KIFod7pqMY{wqECzj8(^SO&=0-0T0tkEgbZnmM*77hu3XmsN6Sn%_q20A&; z#MO{uE1gk$WgkGg48?z!I=E&S{TcZIgCv-P5W#a;z+v1QelX2}%+v^7@oW&`N~gcL zKx82iYvvXay$bMKf^7p6Wf2-+QUd&+-2+U$c7Gd~uAJFyXU!X`K}f$3EKhss>vu_q z_k@R3UnS<(1N`D10jfoXA$mhk;+hfn0W};W_*1jpiu$ZQBnlRD)4J)iJ^sxGB?o`| zrh4h(QM)vF^p*P25RYf5!E=qPID&)UpH{KWuy!h*!J}eml0hTOD~oJrt>skyN>2Gv zq$e7q8r~bSmtiX3DNuT{l+2w)w%-V7BrSyazOX;!&6&~WOvn2sQ>DQFv8o%xqOnvz z;aGU|lh7AMPEu&oOxS?2hLrU?F{05QMbg>PKb{G zel=(FEm;hjbyAkTB|l4+a(n!f9_nBc*i&$k(D95Mu4{$@Scpgt@b9EluEs??d~+jMr&cYq5W7(!;l zI$&)Uo)XUiPqKtW@Wdxg$$xCW(B!~-a%7?5CF0*ELZ&sJ-@EDB@WNL%vq>oyqYQ6T6+?!T#pD+njv{{xgAgu_ieC>lddu4-}zd&!j9wYfyxq)ns z;FeCz2cKzs{7))^mw<`!#)DbfRKjkHeNSS4VrCUpr`>P=C^b{_QSc`M&2!sK1PH~@ zs@S+1jz;GpV|G^{y@u~qgL^%s=~X@ry>WL8!4TNtDa@M2J(q2@o?8&c%*5E`1s$9r zWH3GdeIEu$o9x78J1zBL7luGTUoIP$?@8mDi>rBDXD&Og#%$*~CpE6q`|0VAT#ufn z^;BQinCjiCUMrfi?(F4cIkH0B;I4Vv2m~$T)tfb%_P1!-`;t;Tw^N*$MK5qX(Dart z_l@~~q@Ll;jTvSTi_D;_ADf{ou{LI70?f)@p6R=|w>LT`#M6-y2H>9f^3KaPw-0=I z_kMbs_2%vn{4wPack_K$TB3J_^erG*dG}lI-5gDCFtmFtpA|eSS0^>1y}`8iyr?HX zJs8WV^ND&vrqofBR&$P%ux_C-W<6sK=#3~?x=e5LP3*$2?TD~v$@AN&GZPkqk}8) zC!0&YP3ua>(twE8r={R9l|E;QG;i5|daQ=gpaG*hmZu!EQp0J7EZd9b-Y_$hd8nId z?v2aS1-emzQAw!V>%mZY-3un)Da$NpsDeKUpmS+7MCqB)p(ps1yf{Dq^;JQ9J|MG-qJ1h-rDj1zt!RV5{Bi7eCgwDhQ*O4h3sCo%jcOfVV+%L!tA)!f z%Z;;*?7^`ZZmpi?HA$KbHI%Phm`Q=P`)VHhs8?ei5SdiQ`h!rHz+z!b9jB;m(+^6Mk+HX2{y=aBiTqy^iQ%2n06?A(UfUn*ChWDg+TyZq{nJljwP zZsI3dJE(}|B1f|o^@AHQO?Auui)AZs11WFiYC1xXcF9sC?D+1Ml9ULWEXBTP(uUHW zKe<98SqKxjPEA^lYpCzukxmoS@%O%`-B)9r2d1ic>?0tc~`1#(3}2LTe;Qb zf0D0$Q2FZX<-uI*mG085kh7^oFZx=;=J_Uu2pYEFWUtfMqGbLN1-aLed+Fc7TP7$N`suz6NY+ zL^_1i#V&Fp>KR#9yx)QSSXd}SMi9ed7r;d2+_xi;x9JFhhOyrv$~~+F{;cKl7~oHh zJ>J?A=tnYieSNZKceh$3h5aC<9uDxgUhj7}nD;xhl}ubV(Q2)vz#*H?^9~l5%Mqc) z@Q144KzWZm{7lSjO}dn+wwQ$%-f7 zyDJ|48WTBCPatnDNTAlB*yx9cmE}s)aZaJvB6hD(lSKsbaw`!?Tg&ma{wqnJYrXy0 z9dEn+=v&)wxvjW$LJr+6H*eh3zwrk0=++M&SR1ddj0VGHQ#9lN`d}Z}B_{;bk8awI zF#L$9elaT8TH;2UrfFBW+67IK03Q*`+P}f^&IxH%e181vqUYg<)yndoJyk8ObZ*_8 z+^QE=@(WfV^3c-W1Dz%yek}6IgW#R2+^J?!Z$a1?{>N%@RW0VHR~8Q6c+;U&+;F3X6y$3HIx=b%Ti5yP{dR}v^#0A! zRW;UF_N#-fXL2mq+m?SE3GSv-{iwt?#L>o(L^x@~hJbWDd3E01Iu=8^B@b!-wEwJz zeQSQk+FnKpyIz#l-2i^TH%&+-(v2+0{0uExtM;qRBFmPtP}>+MU>*IP#S#BVdq2upQnt-d zJ?t#+8R_oe5$Y)%MJBS|nhMofbo$ULUG3;B*bb<`$kYwvD^l!;Alqtr|lfk___QiDlJ&r=^Dbr4Eoo(NwWOZ?}k zeH!NZVrjh#)|qtPLy)`t(M&4W$2oEhC8Z_aShkVA=!RuUd7N$i|sj(BXVor<*hS4l~FFb>>MekXf7N_)Al2<|N@UOs|BnY;6qX-|oHi4TVvQ@2S zhz@S@*4$!;v-P(Pzzw2OoX4%f83(hiv1dE8yTXjBM;O*|@&C<*=~3mRFf+g>gOU;7 z-kRD%d6$QekrR;)ShD9@@oH5!jO95Ny!zf*Uj0tJ4}V8vE|;Fn5IU(WZ_kFJg))MH z2lF{Ki~Q-`Q%dM=PuY>^kZE#RIiIRSQt<~It){@ zU==McV;E`U=V9zbhVCV;*+F_WMCH+V?PvhV(hy;m7>58{Ny8KIL;iOZ->yv#>j z4wB;VjO*7TxhQDpSJl(3J-#%jU zxY|=x?|or^7LHBXB=rLnn`K(V`_$}kpUuuADm8oML?sT&U;@Z?#UeGu9V(Vm#?ZWo zR{wmUMy>v-1z5@!nP5}$Y2~vr-j5Y@trUP-9n~3YUY%+arCd7GIn`uw9O9v4eA&)% ze4V3joCqL<61z03VhL{ke-<2X8epT@z;>_rA`_RPmwcVB(>(s>Il#Bp&7;AiDXzBYrtRz&LVu0)0k zrRKG9X7o*r)GB?52BdUzNz#N4D=DZQ#}0`T&9`1aq;w?TEA@odtI34e+@|SOW`J>X z+p;F&*-(O!C4s<+KnUir+aQYR4V3~wO<3XlHe)HZyRLL1bMHNu>GXvkdE)%}i|79w zW%oEO@afYFA3NRop~p_{0??}QyVSUkEvlCj*)E2E9kfF-8_Y=d8hY-xGAEmiR*>Jx zXiuwIMtGf@o$j*hd=F+ft4;2cDekwu`85#dU)^t;`+lwg;3R&7LnZMmpPa>SG7x5* zadm-?jUgy-?O>Tzws&vudN0R*`~Ab`<{Mkr8!rD}S>OM^&11jw-S2bz#jCIP_VzoE zKYZ@m_{)CrVD>p%pj}x~*(PbK^Hx3-UsrC!{;Z*WKj)r9uTR4Fh!kL42aYw!u(j|# z8XkqCP48SSe2*)4!cCQ`)9G(p%9u#ks59zsm!BdA+J2|#79A{2xsb`1Vw(~LU%Rjv zyVEQ>iZE8$0clRSLn4t;9+8MC$|1&-lP@Ryf5+;$6CtOe>P03GLhYzLS*h5^lng?g zS=$yE3H$tHYSw3|EI)qpLYpH`x)g!Y=VC4d^J?+Xq?mvBNpWiXU)jc|mrlv+^;-h( z-Y3St)+PxBaEu?9LkL8p!uM-!8B~1vVw)3w$g(M>7Yl8pC_8bkxe{68oM+Bt<}Qt3 zeS;ViPLaK+Yw|HMl6SYB)pxsVvE%g}kX{Pklj;BgRLpOm40*cqvD2;Z7_k-UN#agD zl5#n>=KIfSc}RG9FE>1l@qebbmF#ovQ=^gVHZ_I(JiDLGvm3_j@CK1=lxD|nr}?wf zSQ1-MRkG+Do zw??Fri*RWYwCA?|#s4?~#;x(s<>4NV;ckqEJgrBx2Ca1d4JU7}lYqryjW=1(>Of|K z^*5I|)8!!NKszs%PGiQTlGVf^P}sFPz4`(%Na|WFsB~Ka5_o>&pU<6d;r^!a@(c&K z^gueEngKxX_SR7lNF&nR07q;$WXGeA`j*W(PKSOAbu z^rr%uIUsr)GShh}Oir-p=a$nqT&JpsgU{suLX;l1;*HqlSQS{5z8G1%>m z0UgwMKG?R*VCx%MW6+P%*_+PEH?X6=_ zYo0OlG&VJeUMB-_f1^UKfCwizi8K>-^8ncf6&x-WxJ!*4OBY1M)29kCYmyZW=#|s# z7KpG3_?T%63Rd5_MWxNnv?v6XR50J)T+$FrC_~5fq}}Kyy}u}6Y1{bj9 z(!7YoptIFD#syjOp4J!C;%_64pk$I9C1J?P`8-#3Qu!ETsaTs6w?|YWlQ?Y) z+~E?xb?vws;q<>wun+tRePUu2nxyQr5Zp!TD=(B$J=}EWbw8J+^|E zebyu774GQorUxY32lzmiJ;(>_^ns~Tw;^2k@29~r@LjaHlq5SfqB(a??F=XVq_?o6 z^u1I(?Ir#Qw=1SEwa<-zLHO8cO1g0|y(ETXs>?#xOUTO9Sfeo;=C8#vBz6kW@*RQZ zVsR&M*FaBE%K_Pa*CxlFOc%#5s$;Y(LASGMyH^`;eWk&wNhD)WItAjr;<<=G@vCpd>^Q;&IitWqr)<55O{aMQ3D zNMl$IHtigimo(!?3`>>TD7D$)gDmO7=W{We!c6$!>rXCQ36LKUpjyIq;G%C5NkUj39TQ`z zhOL^I)%emnXHo!za2 zWs)@lvPwLK_LHt9nKJd?!9jU zARZM5p>V^b_w-~@dd?zx&PRF2M1xwOq3B;RB9#>#|8nl=uG~?9h|-_w!X2WHQJh>) zCk0ElPD~*7$DkhlI5}Bvboh81**4@q#GRzgVcSX8(*$vbfOYdTf}h?!F5!u;hVbpH z@~4k)`UF5jOu6cfq;G_-P$4;O*<1*vK)i^O41Fj>+72f&aZlgGVOjUS04qkLuaMeM zGk76)D?OQRkDy5x8WmyQ#th$4Y;7VObcR*GQXwhDA{7!PQlMS63dsp}!i`}$F2@ZO z5)1YTPvPjO01!T=xpxM&8ol8W^soiSw%P6g9(DTD9+bcSgFi2@NN?MO$th{CN0~K} z%88aPkI!qh0P3>fkxn`#`P}BfRW;nB;kH+X6}SvY5kK2Os`F>YpU5E9mT^GF8QFjo z?$IxOztYM%hD7(#zbcTzW5XC~fV3AN?QH`o6#q%k&3qMYh4>!;v!&qh>-ZmLOlD)M zy1}3niG315@-JhA(kKfAx&;7Z-!JZ)^7odYET6_i8M(ITGe7+tdzGT7+91- z=OQ)kNHjcpXXk@r6t{IALkK>g)zQvdByM+e5#E%98QX(pm9c$SB-K~W^+`TBpExM% zI6rVl9peLJILZfPc7zW~1#j^|`yad$0_`V8XKCTf92vR6WyoA*pJ*ML6k`|mvF#{C z1VXJkTJQf{Sy)OQrtbH5YQFvwhwNp(UL;jSbSs$n6KaArv4O8Oeo0saG{HihS&RCu zFQ+m~^>*8erGm6EscLFn3>Ebp9l$N zjoQjoDa4ew&-$pIW4$C8?UWf?a1aiQ$v~Iz#M&j`+7Z5O@>EVfgjxI<~gu|&Q8e-|2 zU}$`t+~oWreK{^rv{A1o9f>KhAmM_Kj14h$u+%*beI1CvB|8#R+VQEch$-VvC8pM8 zw8JyaQ$dAU_`L(8{s!G&#O;+m9X`)b&f0^T!n(y&Ck}SeaWXeF#1uui?}Zd}UJ}DU z6~kwFcX(=UWLkOr!tgYHu43<24iYN;X)vu36G=49rZh451LcjP=>v^1X*XG=#j?}m z409vV@h(2tvxAka65%KL;F!PTe4yG&3+JdmDY}#ym!i8I`Zs()jyid_gd@{MEJ}j_pGiGU{DAXn z@bCvS7=Iz?7m`5(>1YRo$e#m~pVVX*la#pLfcyGqUKqonJbe8EvHf+6efa)#aHX|d z$z7O&n4cW1t{_(BI+(2c3OmC)Cnh)C$$>RPm<8iPIC7vBkOK&%A96g! z4OrBv9VPVW0GhN0yXiymSVA8h^4xo+lTesPngz@7 z0diBP=vv#6tE0m^1ASKOqeNoWFFth%1?|NjHW5)4eDw0WOQYi~O)lpsOQqF-W#@Ao@q(Nu#%K^tT0u_&ypI3} zAc_-NiB?O2COVPt{oFxx!PS*Jf#8fkp7igV*CFE%Lc}LTyv7q-sWi*C=N2q{(*NCM4_iMoUUM}33Jt!9xnvG1+nT5_#pSB?o?b%WUN=@Z4VS>ElkTY%-(-z=Y3%U zp2q|{5jrc58fmaS{9s8F1dpWHQF%#<-GT(f1|N8t@8yG_XDF|C@dFKzjYs8jq7m9; z`Ppt`bPcyP%tiQJ`C-A9+dA*lH2m#^T)7KEb{!!ZN+A&C?u=DfF_7iI+Ua(XPQ~|E z(&9}IUKoNL(N71AcLR6Y> z=M>jLjMk)^=oQ6eesq!<1g%Pw)}9rIIwyTK)*t`p=8oaNl^ZV}I&ztZXvff~RBiJK zl3zSpo1|*KsFWwMxKN~)|NO$DCaY7CB(mg+zLh}$lUHlRY#^mniTxvH959s-(|JjU zDY;#W1)X?UXILsN2jqZdcBa3CQ-HHD1!N=Z0_X2y4lZb?9$XZMFt86*YNSW_HI&kz z8V@}6(Mk$E>TjzNSJgrEa*{8kpek5$pNuRK{ptl(JjUmb<3u=0V?<6{oOKKlFR;~K z!g;TD*c{`xJ)G2nb<3bg#y5_*EJR5>=X*ETh|7{O)hXBB)A}}cIIN`*EEcyIlq%*F zckuz&I>iU1!9hjk_|DF;h7u<^#!xFIZh^6SJEh2S{JBir4GoUQ1f+h#PCR7VG$`4O zKo4oMAZfy(kV%r*u+7i&=KSYH;;4qs6fyzcJFyAtwp*xiYMY0|5AV|lKsKYi9}J*B z0%BU6@n06kRk|g-#du+zH!~u1PS}gD2ZxEGGhC!i2hApcNqw;-$E1ZSG)q&7z3{T% zFe~wsMVYioRD+~4ZlOko$_UfLB>>R`X)TCJB3jHXtvHGZLUFu*SH%(OHizqg@pHJ& zUukzld{z8s{LrKwFSB?p@s^_EEya@)rm5BIq}A&Pnys=`^AN#;kLQMs_9)l0Yrmt$bE7?;TWLH;U87ywTWvhII{&$z2oRQ96WFD) zGib&LE^QaRyV1_x*QEwHM|F8nbh;S3Dpd(#TNy(gxOg6}D?W1AM;!1)2cz>847G#V zg!D5p6#2EChpR}= z%;U2)sPa4p*EkOsnp7tk(-Wor%&tguL%i3ErsPNN|NR(74Rda5`CMmqgJjn9@DV-y zsd~(d$dGNzJF}dPwf2@Bza$=DU*Ukp`kkOqSABeQaP}^tfn_jdjA0 zqZQLV>fhmqgM4+U= z6oc%#9s-WovyiF^1gXk`Fp+W253bUaook$+%%`Q&!O|wi%BU zcFzxO(Y#A9@Z2xeh$J84HbiRRjuo^S#G1z^@Jx_JEd{eUH5CW~aTXpT&sxSDKDjOs z2^f|50~Cbcj!p7Nxky|W4G3)N8k?2^o0jewt!8Yhaf$P0QCp0QG+tkyELmmu-6eE# z9h1)1`MO5jayFctSW0xQX&QdSWRMB^sOKU-O8Yp%8LATMFdemA_jDDMjFHb;xA-!s0bsI zfFhX{2_$2~c)KM;B!SjH-l!j7cv5Hdqd^Zz$|#uL4tgMrUeg0MV3Qt1Ge&!Kyt7C~ z(0&91+!e8BHt%SqxBrzDo)gbwvxB7CZZad`zHsjHPqi@*SBzUq{he@XaSQiDeiKX` z|8-G|pAeyNoK{OKAUla?%~+#wj2P=NUlR$N*2Kqy8YC@Q1z;OT#*i2T#hm6`sbKhc zsk^R)N_-iwH0M|XP;oQ*m=<@ND==U9@c5}DGiF*tcriGgmD%n0P`j^Yc$NwtA@7Sp zm3*w++1bDXLne*Nl_$eHxc|n@E_l;CY|+30w2m}xF3LU}U~37sSI9Sp^Q2INZVP&BW>6DX6HEtzA%KEB)R-^#ZcT5ITBJCyRw7C zMyd*bdZxCNYB_r4O|j^!PtFs_>VTe6CRXKwHII$TH6S8VUB^>%5fOZxyyap@;qF2P z;Bknr3(>>cR-PNmraWl;T214^^=xTJY%l*guBMuX!anG!QPM?)d8X0fX>D@Q^S z3z+7(M{7L?=4@+7g9fPPM@c9OYOq#cs-&Mm>Pw9YF#%u7bE438>JOEl{(gC9e@oZ3 zKdO1RfzuFGgAcjLMMj-jQ*KXiEr1N1w)y2h_rm$sbTa+Q5AZquw8m|jwlBqV{@d5# zYQdxmrJNUH!N%`x*p(sAO;Fw&L5+loGysM&dB8B`WgEkk&I&yTIYAsE3Et*Oy#pMb zl78iwtiEHEG`ek+4V0Nf1A0?qqJIxj-#x01!j4<41#yCBNA1-dX+Bn^JH&cJ!1A0s zY5~^$rh|;2_b^ABva%wfVGQ97DiH-=;*D48H=I1Ss5q4P!j_UG!fgwH;284`B9ToI zbSRxBj7nV#t|$98Dnlug!pz@c0gu*U0V|c8iqvt_8%NSmyM{S)wiwc+u`cldj6)zLpfP&s7!LK z!DiS_`VcWM;@>!RSHkvZxJqXCJ9zX}h>k=?SCAqR@hmEaT?Awhh(X8`!77%-yiL@Q zCo_RdANJIxmnbIA`|p=oy->YR)}`JrEnmq;wTebvVb&d8INGSyt1X_RjR(}ma@7W! znc6rKrtiQZNA-QQ>iZ}<5%1x^=$1>>dqmRp-ZAM@Bi$#a+bu`wzIhU@?4!b`n>kTp zsw)`2vhy_BYsTf9`8rDI^3Aq7U^a2|*OLBtp@DLU2l_ zOqwJD*6udTM%fM_Hf8TfvNpulu`IQIYq`C$htxvO!5QI1|ET6f-R;~nekUH9IPk6l zFS)Oj!FpMAs04|O@(@fCDIr|ygIx!Bvm}^6-jpP6p{UScNP{goi28?=c!XyO8fHTO zN9N}oZ=M*d1kipM>*YqX%xK*Cb!be4n`UuR3UYQo2NO@y1DTefFAy9lPR&R!ax}(& ztDbE>gm%A5!R2NvG2%g9{cMqjS-sj1w$HPm65b=Mh4;etV0pXAwgqQ{)lTx2O14#J zUo1?2!RCE<$yX)Z#^q`jZVKkhF*r`bO@~#u%kYw~_*OUub&F>WA9Y)~$;Y*D^Y~Zn zlHieatOeY(TzCj~B*JK^7Dj&7ywzNm{0yH-Fh>~4fet<(vqIt}`zb7YEGG%QC@MTx zO!0Df#gZ9{>gZQWgb#h*KP!Ba06VHaLxYh-(XZQEcUhX9j2~zGB>DqA3x&4MyejDMjP0m%ljng?r5 zxIO7RexRUAA75dLACT9hO*}b%uv8IR6^&Yq_`zcBfVUs8Zv;_fV4fcko>yO=^#kGo zM9U$LQ2POgd-(zT5)TWNHw{9yKuws2xM{cn>tLFz(CCbx#p%I1e!w<(#Si-Vh#Z1x z3^PR!;zX)O_#;OZpg!=@=T)&gj-f03u~ZK~g+DT&8IoOu(g4I+@M(%CNM&a1W{-pk z(UbSob*;pr>kojx?ill3Eq7GpGVMwfND#={IJD$Bj))e{(J2<+rAN;9=M2r zd4Q6W&W9f=iHEUsrYu&C4LpU|6v$enlIYQ{&{@enBz+{CNbh13wT;eXqNv_Q@1B%6 z+BH7(lUv(4YJPj65IU#plb-Rxcj4}eNb=XO@gZ;XWa`PWi1$qDAZaHhg-QTMM(4#7Z+zc`oL-V+TP9iZmW9wNM<5gY+AAcWk%aQnSBDl!vZ5EQ!~qFKcKFyBk$=4DgS9UEq=IIs-hg7j+#_BV zFVS!vFH@^IUZykx#658>#ZY+*uTVEd$q49&KEs}~?rk0I*o<*Sh>TY>O42OH4w3aP zI4c;VUZvx-4(x?w>}zr-?Yke?27n;g1~IU$u;hb$!VLyMUk7x$VMqRCPm7Gr@v~0D zjFAMqbnHDIV5HHvlh&~mhlwqb<))+4S}gS=1PkN`SYpSl%7f_J!=#q$+ag#&O7}pq zUCmdzkUc>$Qol7*p?DV8=58eIWC_;ZdDGo5h4O-90au&nf%a`vbk z4DNAos?-d}lt{O@X9R!Xb&9aSC6dbNcj9frq4o8NLT9bGOJxJXVk7>>HTPJ_!qDdh zmL82kq3{{B2~}q9p~;j7nLP?00N4PFL2Tv5mkR{tfVNPZU9fskkx?eLc>}#uSzNo9 zHDw5VQN*^$3oAg$7>EzYVVi-#sO!Kr?7B6+g>`cy-(1mq^CrG68U;7_X3o25csuET zGD6*)49gpYST|Q7t@0B_(>ukG;}AaQC)`q!pAZy!vq5@GV#v-w@PZsNNYnM%{Ded0 zE#=Mp-BN?}P=M6KVKAFMffJcrvRC&OgO4NYj85eUW&&k}|7rZQ#rCjYgpcN zmPhSW8~A3+7ACGS#ma^e+buczVIgqf#@wk7bMeTJal|04-7BC&i1NfL&+z_><!lfMFD@fPEgWT0%=`i(}~t@Xn<} zNOqAjuQrnO!Cbmxkx8#Z&A~Nr7hMQ0fJs_3A97}h zQVieZ{X>6F{t*0trX%B74e6wai|U1OHh$sg(#nZCFkZFTl~NR{-ts5g?INpyq`-HZ z8ertHE7MLBV*NzFoyev|Ykp_~HJ@dCCSFu!?ga5F!J1`nCE^9`jQTmjT{2y`Sm*9` zr{wO=!Ntc1?d3eWMv^Y;10-z1qK`0&W@>Falq{`&m0l}0m^4NKK-(aWIq=P%D8<%= zNVSU$g(E~Z+E5B8>j7JA?zzkDhI_7&u1Tk4hsFpR;}G05@IcSoQ5l^{r$w>ApVXEKB^}XR-35vQ>4*x=O@-WDJ0O ziZ9`eGeR=DDgzaznWB+)elcPFpl-)|$x|^D77T?fIt$5P<)U&*GC`hZE~@-&FoYx0 zW4VhLu3hD#s)&^D$_t0)dkhYyZ&5l%JDT((ay5z*a7`Krj~T%rd(2>>omr`1e2;9_ z86N=8VFg_^87Z$p8zt?XgAZZIDq_T--}lbqeQ+lqReo)Kc=5Yf1|=a={Vdbq?=c6n4|HMbbibDeb#Qve5CtCdhShRL>!;88YWPz!@8z$P`qMYh16SQU|H1v8s>DT`tlEZup+{kbZ!+8o>Bh+=aiUSG56OdLpo; zyQJ|cE}W~bX)V;DpcPuTHs5w#l_IfTCXabia-5}VXbXjE0898M?eKTo?QYh;&<;B@ z+F@a=r`k%y1YOnT_c}9WU5ZC0@`18|O&@5txpSVXqblT5bWWj`wS}ViGz9~;x!R=z ztD*;l8DF%&QtVOI11pnQsZvz6aPfKZbkhhJh9i zG?<-<(K`p)9zYNkQ+=}{%PwXhH(Q%f zZ>%=-49^;3at=g-Q9{KPGh~L6z8>_4>oj9)D6l5aWa$B}#ivnHd4CWjtR+sw4SZ@H zf(jfhT(YdC86}G>0wDQ9g&Wo%c2S}>_(qKz#akxAu~aA1U!6UVGHXtx{moSYDA8Nh zs&u!R3u52UV`{2b$?BSq{Nhf6+MAa=eR@5I8QQ`Ml}B-yq2eT#w%O~Ch+{#RBZ5^N zpmQow4p-sZiFQpgi7aprRqLU-b@SS*PT z$K3eT!{HraEzM7JQQEtZu#wwTUY5!Mg~=!UY&# zfnWp#%H7N@ZdEOYyG=A2{fS1SKfMu-V<=5_PK%`L4|o=;Vr+txQ@b0%nk>R8ctC)qMZBIr|7alYq_CtwKeKZcm~ih1qbT zvJ8%bJaO$v<>o<2bj2;p{e`#-YcL9ixQ}aaui6PDJ|I#B{_A!C<>B)hM(Z9F`%lPw zZHT{ah(9Q$m9sr?SMVd;DA^g!GE;=T?X1drYnkL0wKbfV0*MG+DqBQD>#lTKZRx)q z*`i}UP;Dd>c``IU7@p>6b6Yadn2ZLaY-ZLm_Ix^gA@D%%VRvil9og1ZoAxC%+RVOm z9s|@febW5SK3N&{3DV_0kL$5!pR997g$t@a9o1;`X}Z*6fnN_rQGxzh8p&=nW@I0m zykuDrXO~&MExtS5Wn26_*V>%zsXt%Tj=zR6DV4~QIa3-oJyO(!if zk*`P2XtM#b{PTmEgvv}MjuVq2JpQLYfStiIGM9*LDZI*$?4`i}L9MyWdGn{-BFQ>0 z9aAQJ_6TNz&Ic+UQ6N%?u{l7Lr=Dyc{Hy3pO@caVLffRVXVLG@Qffwu4(bc3GD1e` zr>dnzRsEo|9T81X6K4PkIly5EXf?RfWfoOXAacaLzm^3qZMxf_4QtxwzTX}dr|RpIWu9u)&H&;9{57oU${ElJXMjeN3~1zoz49{=&F~WdNO5)m zIWicTyTh31&Ad-Elgfkul-ja5+Qgz_#sj{(ZXkIgsyQ}sUc5(L?J4GzU(K1uiQ+17 zOzI%M@~{ZWi)U^*it7SRewzZs^>wWPbN1auqFJOK^4EysuBDKphNFcOV-ue*74l^{ zaW{k-L7^GeGvo}=ps0;9##4G6ELks;3lx~FU^s9X2?vNa6WFBwI3eR`FnLTEMMKM7e^70&?%Px<+vmJvC2$W#rDKWGe?~LEXhI|X7j*`YGoemKMUzxGYbin zpPPk5dJlB=^_GRCkYb%Fr88IHJsS^$8nBQ6RmcsQ*~BEdS}tRoI!S|Huv@2PNH0@F ziuO`kP`ZimID$^rZ9{PiX!850HtEE}u#o(G+@bb^z8s16qCl8qjMCQ#&q-SGe?B9U zB~H?HW8x%wX3Q@qcUiU_$pUg9WxmSaNf|n<6&r{`fNjgw!Iz#jZLZM<=@_f! z-29vobC3L-h_1uQg)d6E#94sUW)8_x#5p3Al$1+f2mau*^_}pfjSUSBmD&~Db=Hy{z3`Nq-}_rg9lpk+Jyxac%qB=CO2%=NSYhfnGQ~kGbKZC?CCtxUyMbIr@JD)dJ9?qQE)<&rB_iAuq=u3bP?@3hISuscV}2@7GbAg{ zy5M!4kBoE8CKu(6GkLK+S3^t=)(A$mswXxKm5A@o)X0y&sB>k|PtjP1xYy zPTC4i2*s%6gor#g1>R{Ap%-2W!aQi?iRS@%&Ct%f2^*G^V`9;|l$VOxsK9yF-yG(* z{wCLj^|w*zZ=nV56l#y{hjIDl(HsSRtj&U&Efm{6$0SSQ77)oJ!@3XtXk za)g5d#334`)uNgjAQ9^p4u*=h=nt@be7gNHot=o$iwLyppp&5G!m@srl4Jm!&0J0alFk*O3D}(UDe%wuPNF(hrh)JZiT*qjbKo6O)#v&js;R3$U`SNQT4 z%hq%OT%KU;nY$#G{(|I-UAlwm2r_jpGb7v&D z!m*OlNRS~3Jz$+&95afk9Es{M5}(0jSS(-=3O7?~f1_J_)^{YWTB$f$D-|vUD;8G& z3CKjhmlbHKNjHvol3YBikIAQa6#ctWT?pesnsn#&VA#V zuUgC}ef6n!UGRI3zFMP%&rX0;z$I5-xQ=S1lt;*5W{fS(QhC#r^7Y@`wkWTj(yiij zhx(v{Zk2acBmMRLrm%Hu<=|wqY_%!H-0R=Cu(&i>9HXSgs6)Tl1^T~J-Et?LV)3Ijs8g? zQiwT{60j{i00ur{M<9;OH>-~$(FcaRT)vHA9gV(@j1H56#M5u88xA?CiG|g#Z>m?h z?g+c4ZT-yCK3}K_DZl+_-c`tk3&)0F*3CX(eEMAr~rkL_l;P|A&!S%XE zLX*5GlK}_Y>xpA(^+*FW$I$=)4JTicVm*DSI5+-h?hxTEurSxWERE3%DY!mX(*YFt zo9)P)8lcHUYCxpDMpA-1;7&8d|57o!sq83=W_SUC!okuUZQltjh#)`N<;uq?oddu( zv=*x4qx#?a`!Tp1u3~Tt3~pD1#@A}t5hmD%(f4}y0ITu7z-SDC?(mJmHtY%BX`=L9 zaiXWz?v$RUAgDy3(&`QR@#iz%a2AZ7I&o%nkc8PU_;PjN@wW4LGZ}5wke#K*S9cve z$A*CvboBlPIns_#3iseK!{ma9@x>`vzm*61U{K8iXGYX@noWOTOr}t;cDG7oQSfDm zGA{B1hi9os=vHZ^sFj5dBQ{(nIJnaw@IdP8__y;QKANZSC;%;{oRw304{akk^btsx zIew^4ln^D{j^=?r8Tpo?FR?KYpUQA@>c=C;cqA%1)AloHXgc0>{1dtJXS#%ii|J!s zkuYCg2#p$fUre9i>0($P=IP_L-jbeJSJa-nK)52fi z0qfB$DXrq;(Kx=sR|jjnIxiI&Gd~1oruau*uP<+3FJV0>Dxd~tVgSRJLPqKYv**Ay z*ftRk%OU9GPaiFHe?kKby_8%|Vg3z|A&k<$M2 zS+x1EDQue($5HINjN+5kD4uAJLRyK=o8+zLC_a%!@o}C#xZ5ajJ7k@uA-n?FfrNDy z^c8O#l$K&Js2|^<-{$e`r_gI34C6Rn7uSKp;8e$m(QpGi}B zLr7t(v^$U>s0lDuY9md*EU?vpekJw%GCjA!Y_|$#huWCuUr9_fN6kRI#NY{zbHrTM zY*KfKtubx$qR1(%?m!c%=_Kr`JNSjQbwT`VM!M)i;=<>#01`i2qW4ngmWcgpTN7D2 z`3K@Dmt2$2uj+|;%VGNc%Jp04G>m4xQXMm4!_6{$Tat*SycEkp#zQOO9>Sqk*?C` zt`QZ0`!1-EktFn8mK zFe<#}6+SWt6~3rk5PGQ`uvLfgrwTr?cuM&vV(hmrH!taG* z8~=})b-hH441=qtGLh15j~?j zbjv_=Y@bk+&zc5|pd6%wl!UV3`9o|$uzg)GyFkRvK^)&2?9r}4{w6g~ZyS3+r z+2^UU@fnZ;Uvq0)5J)k7&34K>Kt3D-_=9IgD;Zt~-Lc-VWmWHCyML0V#;LIP)nizK zsAMRzuVvt&EqQ3flT<^#vEttNQn3Q=fuk?8W0B(bebrC*qZiC4NJ?o=bHoD}>}f%H zw0X0`O`M>WYsD}yhp;@>ZjtPDY21Pp;GE||px|zhgTR`K4nK&&i1E}0-gqrjw9?;&8+ruG!mO3AUy7^ZXIK|JFX29Y zEv{;BWF@?8{brxabdAuVSLZ#gH{!Q_vtbsI5v);(ofemm64Qt@kt0*9v)T#x6S*Hb27tQ5JVBfJELeY84 zk-)xVITF}+EQb`-eJ@A70u7DL%aQdmFNcn0_6le@7W0q19Q$92|AO$4(;Ni8%l(zw z>9=yAy|!k*c(}z!E30D+QjwS3U3pWWzj{-kxHdP%Ale0M4r=jzk~Sw`L>5G-+sWyt zvdo)p0Cpd-X&Jh7IW`f(DS7S8Xq9K(uEoKwz0wb?)uZ@=W%RrO$rK*Z-cS1pbrnso z%9avynCSGiNvFcl&Tbgm&gbfiG40W9Z1&;MCjn)9`^1*!w~t_n_6^IbjlrBY2D`N} zm}z6T#o7aG+=`V0Xv7B6f&sLR3^bnDvt6M;*N~0sUNnSb4GKL>S_m5`xP`NGm>d*o zRdgjg9{3J2=&>t9qIgd^CRA0#rNoznO)#n4c%hg^*;Cqxux{PkETbP8ncaQNQp*FU znRKNhWrXjF^IZYPGuRJ;@gC(D{ieW_hZ!_#|8VW}>4ryA6TH;yI8vtfOKNm{N~G4E zMhVQ>Zn=!dMf1?I#Zo=izJj*TTbOpI7u-s-aRY51;N1f`6O))Uo z*O;5(-hU*q&mYj}ASKp+Q~dK(;-B%N7S-)ZtIYgU6Qk{nJN_QqxJBu^f|8KLE^IXo zycCwiz_-4J1K(;4d@JAz)KITHx>%K(>2qsO#>`>b|Bs}=>hki>c6ySD-Ddh9BD(f3CqMn?Q7Gy7@szs_ay?UDmOtjQRG!MDWpaZxYx}+Vq2iz zh;W>3QLv)pAGx4qCr}T&(g&3cQicM}(Tv#~yV6N5(9Yt?GVPBen8edV0zeVuH)^Tr z?)Y&xnb;j+P59un9c42*Sg&p&$`*9qL5_{f4y(?j)N5Lovgbr{YuJ>lLnoJ>p0eDB z8VZggOb>^K`(nwY05QD7=fryj)pG70_gq<|QC7m)8?Qcj>HM}L9Dl9T)e?5Tzn9BO zNK2o;f+-}%zMx}sSCI8ddo#M?1-Wd115{`)%DA&~4KmS7i$GZmuP2wQi|Bv_ZR;Xo3EGq*$gYb! zDN#qZCYFM_b$5NbDcy&CKW^BLAGc<&kDKV1yiKAtnOeulx63Od2(Zd0sRsd0z(7(O zN+hauY9)VWk$}&fMf&x&i|S~hk|{-*m~2VSdL9%jMNtrONGoT)vb1N5>hx>WmJK0p zS)8&73|f9vGMXm4i35+Uo}otc_P!M#JU7lFU*c)JfR}xF9S7 zcs5EXfL5tW5)x_ncCCSPfG_vtF+I7uk2dqVnM=j4eM#X+X=n*`041vh)vL$@WaQJq zin4W<$Jp;h6vR7$wv{)XQ-gsvT%2M~8!8k)`}=BRyuVqIovn$mTS#6GlA;mVOvS27 zgewauI-M`L7CyL4$$BsY!EJzHj2?%~|135&yj{>eu&;5@(!>+~kW$w((3Fr9DiLgW zcvQ`~2#9rXapsPc4k_`lPgWiV0?tbuNPE!-3Wz=+iBbz=!czGHuTv?e`Ox%1iXN54 zS=!M$!5jAtW7cV28)rrY|2u@6qAIQ{dOV`YhowI;kH*a4d`mW}&nkV2AR zC<%G=9QdPET$CG*?`Bb; z1KX!9FMiM|@NNrRQr!xjp#Z$Cp?S$waR)@yK#T>8`yR-=g+ItZ!nqmzQ79fNs=i$g z8FU;%LWTm9F>{=a7#Rey5tM97t=R(ko)x7|v^FlBKRBJ`reByAZEnh%Mwxqi_Ran)x1qD>8^-vH=k26OmpIhay|>FsAQ z2`?G|5Czu&$PnviP>4-RstIxxG{nf8(1@km#?gh2fX#G3G74+d7~pQIN?JOlR);E~ zb@0;7<1h*1jo}2zJJZg7yMV+H8{1f$Fud+{FV@z;<{|NT3(tMhc<#6<{M1}x8GN$@ z&nq+}3cp|Z`-jh+o6gf8|ILNVY;o~_bLTO$UGDc0pTD;7Gue-0r<9awB^0DaTL3Nd_U?{Ju(pMax@uOGP1kYYS$&wVEt;nV7B}2T6~v zl^s2h^=O9s2ZvIX7vsPEhRy=ppL#jk{pxoAWeveUsBd;kO}Z-w-*VgOR@))rLwT!| zjS-^n$fr<`>fL49>wydL1lqqmr`cD5!{JLZ2gAL{9(QjCc_YtYN7}_2=9}D`5(}N_ z=UTSsbb(*QtYqE!w*9fvzwlX+O7vz*s>*#BBaz$YTmE16-apu`>$>l|=iK{#-uvFW z03Lt`0wB-5grr9c6yca6UUKu(8r8CB`1CL}=$lPWe{ zD>hwgS~ivp#TFg;H=U|6VpBDvCbi-?37a@JJ^rO8s;k;+hwdm=Ki}`#`kqdt z4H*GDEsc6Yue~@(84M)IDlbytnn{kJHE5~Nzs^`#**^hE*eh~KP8Q!{7w6zkQ%B}S z6Kue0?x=IyCaUHV9Gc-{91VY7qoDzvUriH2()MS}2I+FcW4u5s)!dSVLX3|7@wduhbTz+Xn za(d_yO0QykV>FSPOo>6ZUkbva?ShT_B671qy##<4B2XKpKQw#nU24DVAnTcx6V>1u zBD&5wPm}CWIiqOd)u*mQ!YQukC(KMBV(f9#b0T8oXsU{5M?++7h*f2J?o~>4{idXC z8L@zzG05`O`S#l}_}VE9rpG?L4bjT;W7kp|icv^&UuvEUrin{CJ(8JOYqWX6%GTRZ zilU!Q(kL;n%v?A4Z98)n5^8y`$npH(4gq!DTza}8d8L!Wkc;f{-Luic--*59Pmf&- zf17EEZO328BYK~qX#{C0W4^)P3ub2a0C6|SMyH?F%uk{zAyR`*bR!+OMkEIefJloh zBXV||QpFN2?xoFeQG0#N(h8G6Ai%euU8-+XEDUwuKpF2=MdY;gtw^)94r7f9(5D?% zX*A)((iUai0E>*L9DX*aR0EDMjaE%P`Xp>Xj+M~Yy&OnT!(8RVdX>DCxIfAG?+qMO z+DJ4%8^6~(XG)T{Gdnjs&490KA*roRibpyJfB70W=ialnXJ&(>+5Bj z0TVs#Sv?kgNXM<6lvZV1G=RrQY@q&~iI*1`-_eAm77Z?OiC4FK_H;D;!jAJoohhre zK3m!g^T``hh9+qeq+2d%*O94v7tKP&6JE&$b+|uS0*m277p7lbEUx$22Gi?nL*F%d zJ?lDL^iw){YrQY9+k|Z+z3^I^;k~+}p+4?c!C+&Gx(sTH;I7{c&7jrmXs_#RS$ShU z?QBY%*OLGT&ZARSbr*oPSLJ%!y!gifvizt*2fgLvWniCn_h&C3* zm0l+Iw1y))BXfWog~k%z!16tmyT z;aeOXS>d>z*N*&xyZ{`kzs0+*RS0mCWvEaI_jY3hfu+|_CemRk^uvxgH9(`OsVUK| zbVikw-A7{{aF(&Pn*<$9YorUoN42Tjx*HKbGe!IP#P2<>1Oxr0p6PFT5DDb)r8fP! z7m(WSFYuK5^9uFz^`f0ZRq78^MStPnDX|k+ohi$k^4HvxtOI0V z!N&u5rB;d3o|H zH+U+j=%l}FhAwv^y(PC&yyfHE{nja_4n@jTn8zYp$B7=yF01%VUN}@W#Yd$rg_ckA zDs}U$kV$S3BRdyeKj1G>*p3Pwln;Dp@)RWpF*WOf;q%c-deDysyS%G>Sj&l36d*oA zwU3?zfWdskPkuS!?!ErT5;N`|qhLFITyh^PTl=^qBo>-s5ASl}cHv83df#)GI+O9_ zrT6nW{FuhUK)OQenYw7C+4k%cdSB7!>=`hP%R`WpgtZXU;)L<4B4RAvR4)-0)hyz) zVAC?iA<^X7b|){^TM4gK)9&ZJEdn#nd67&AmtUKjcE4K8s=jAZmLD}GlZttw#1C6= z!wL*Fl+?+^D0xbJOlZ-z)uc0#U0!9b8xn}-V4iIuAoje?Q07)6Rn@W&EsFUoXdN2` z$7?5qZL3b-`@V7d1}6!$%OrDv1o=lC`k}3_91I~ES6$*%Cb?Q>|3GA3voVKcI5FvC z4`UE_12tQdj?0GoH5#u?!VN9N~)#taxVF= zBR9CSERtB8sM3GJ;P#_9dZ@`JhmXY4lv9Fb%Xu7N z)(dCLc^nsfkhSVkCanybshTr4)88J(EhLJloh8labC*35R}i;VB3OP$GBh* zQa%=gHOr|g_i~z5{R}g>uI9s9mDXay)E(`B`)ZwqA!d#s{Hh&-5&LjH&rPMQz}Wt@AA-RSITx%};eRxek&C1B93A4g z9<61L>|-r!W#>aMe8SrTjFOE*TIS6GUC{I0lGdtCRqF^-=Wiu-3bm^_f2*-SEv7u_ zjjI~^@5t8Z=!`ffW`{#Ceru&zY3HcS+y#P=<9LKWKXp99+&7L#K>jnosSv{B7k!3A z=TQm6WtIX)Z|^&;1L(8_W_{G}BCEMy!7zt^90FgVKG-1~U1~=1?s*$HYy_sZBxNu1 zV&X2FKsob=R`OlyKk0X?0UI2zK!X0;sL|9{B?d`vSkZa8F&5SHYSJZDfWKO)zaY~G z^_NP*e3@$b2oKS4-|@!@0y){m?Nb=mpfRgGuIsPpci75}1dq~VlgF#IIE4Wrhp7y) zYj_+F8K*FW1Yb!Kyg42+PGLy*r;mq3{#$~tG!ndZ3IkUuKSD&;vE>fMm;ll#5C zIapyqvfTyjS0)E^v+tYe9*eh?lrhCWz{J!kK4=BWv&k}*>;;Uwe&Xt4-c%-+o?Vo>Qr4=AR!v;KK<&Dg!hMcloSW!5tlcTr?C5<0%)Z@!lR-*uZzW8 zI)u}VOPGY5Ps8sqyuOSIAl{o^fI007(+=Ti0=@!%Tu@n<&P8eZGxl6ZlX@-hxxN&8 zmfcjiyF`<&$CEP5@_uDN>jE0nm_hSpfTr3Q&UXT|_U2_kOIalXEp1;8z%v9JV2C!y z@xj$T#(fDt=^yq=9W>F*LPzO(8QFyknBruTV8?@PwU`!q!vG-clAw-G^}2^2q9dg#>^ zs(M%0QZ8PU0MdcmuAx>o6{@Thj9Dw)Dk0>WooknS-8mWZS|l1gjj(AjuzJl#l$}sF zQpN}p4jYCMpP`3_{3^ z(V4tcuOrK@L@i$`MyA&}3trl1FB1_;8%2q<(BiCu^q|NWMkMmpA<>C^)5~o4vP+BR)DHMS@MrY$@K4N_N+L6S^C9dU1Ck08ST$B$Ypj}i_2BmcJ?9iqJN_$b zoWTCnO3FBNGqZ3g*7DtX1*3Io8@aMogOM$yMQzl0zdX61lip)44`I@dS`;lRmso+H z^|bGfWYWHNq|=zdS_oR5;%5uk3UtYD)}V)%6yfl*UXgm123obK_;w=k{8ZOMcM?m~ zi#Ut3Oc(&d@O`O80cNx_$$X|a{QT70CsU1!jDxv04mee+HTVz;Q-e1%?@7*h@PwAr z;OCm|Yi16tCtGlwa#{3+AeI<|3@@EB*g<}%tu$m`hWrqCBjp)$Z>W>lG3qktOD_lX zXhriTqdQ@)23@^n(Af@vzT1(eE_5;sJ~NS194Vf|`9@n31Ht5Pj5Nh1jV3OV>=%wy zvIJ{WNVwB1U@r9bKu8bG3Yz4I#n$9qn{uNuJgf3bSg_B<+?Y}1(a%LKk&29OS+B-I zKpEq$)r*7&cy^wjEHhuu@`}cyt8LR{gqsJMob;6x(8TF{GK2JzRQpgz6?x@i8Jl={ z_LOzqJeQ3g5-pt@JNSsz7VJXSI`cE#K95?cPtCV$t8e4SnHA|394Fpxkw`k}bWBNJ zxqb+CsarcfL_1ps6~GE#a{BP@6gy(b=kmmIeO_oIFJCLKUhJuUqfmK1k+xJ;Nibju zOl)BqRIE`!ovjsXda78{<`XOr7zmXCGH6shN?mk4#p+~vn|zpEW_CF-c80nvruk=W zt~97TS6pwJEi5zNA_%)7GxuEh`sbeZENY$@hGu#>(&I&(4c`djSQa~Cj64&`8N&}q z#PKy!-=)LSP^Qh$Ohq^qeb0W|6TN6B#^FdeJGwxx=0bSxMuST%6MUtoF|0 zlPIGxK>=U6?ajUEjA8NIxY8@|8JiFEnl200R1<76U0VTFm7Z!+}1n)JYRPlS3gI~D*;WW4)HEIBQ7XPV{8-XB@dr>bREsV*!eYJ>W&Q>fF_eWZ zm->_~0;Jolk$AL&dSPosR8(6d>2*;-HpSI%5H|2^njLavGM-kg-5woewSHcxpVxWI z^IfCFh~S>et48TPYe_P$Q2W!Z%Nm|;pm=zqrRo{=R#}p(QL*m zaWnyiKV7U8zjh$-<81^ANMKgI@M%0Qs_y}ZCkGz!!pf$bZ=@cyv_6h8x;$2TRCvUn zN??Pr*LX~?xADk4)D>=9h$KGp^@m8=efl%yG9__-mc9!KIum6Yd9!W7r3QJZ|0l-F zA`oOrkj-*Z?-JP%5Hi`g%>H!iv!^DT+d$QmdMDBuLz$R(4exEKcgpqI{UO>xz2kT> zMRQDf0c=RnTD_|&PlL)Vf62D?@JAA@Ej0qS&A*niuw9xGwhUpZ7Pq#zlDLI}L3pBW z+w|J#c6+BYp+K0J6amZYWeL0$N{#5<3pgvKSU1f`z!Y}5o_Zu< zDjE}}T8eOuDTPO+V=Qj5%To+alSTtAyPR(@JKfLqCUqwxTdaQg8TlF1pH9w>dCvpd z!jUkt>yd=sJv9=fhem>ty$5ci-Wo7YT^wG~jBA>*>%~5kS8$r3GQ8L#5!t9|wO|5x zNW-Vxy+fxS1tx$;5pQWemSD9s5xBH0baW}EKHK!ESMOWJv zi2(?D({#o#&g5alqGyhO*S@T6>yM^S$%DVt*o>K`qNQ_x7MV)68Dog&(>egliLWs) z*=htqZB~(K5SNL017x}V%!%-ir`)aa*FX{iRa)v=H^;PiyCDS&hP-9*w$urY#$0ck zI-!V6Xc$SIP|Rdh?4nLs8E>f*Ia*_NDKT6d$sn8358EW(ymWwVYFB;Ig?2;75wp@1 zH>{O2HtC~`fREnrdrk7b4Eq3QzVw3W&Pc+at>YE7qUfP)pGF=KgjD*oV#tQ{wn8Hq z)>EKK4|b9UDRqV*q|_N{z5LM9Dz~UJX(=iLVHawXwioLgRlVv;byw7}*2cfTu&ZBn ziNO%|5&CwZDMhT@ICql6JB7nstiN^}hVdeZuiqUgULF2!`(3ii@DoS7DpTFd30$+S zgcoZoK|yix>8*br(&|E(1F{BEcqn3yDWfL}AWlfppY58AvPOKs{;pWoYvM!{$v}QI&<-JA|tt+7XXSxlm#Whq!Yq*oKcwd zaQiz=HcRP!lZ_(%@VYr^Y^EMf@7Dh51C32jp|P2kqA`i>g`|~AMX34U((s3+TF6*? zb-Vqkh#xJJFBW;+pibkq`rBz-<|)Hdh>iVpB3ikZI;w614w4&TFN^BFSX8l@d_@~t zn>FPYzp<)B%5@-fmW(hf_*$(h3x6*y6!gWAYg$)|smR{n4(fwS)_$mkVCRsK(&8$Aw_Zu2$>VEv&%~RT6klzVaGKg1G*EA_%R|MFK2m2 zW6@QumFLxM075Gl3({9ba`q^Nc=nVQ%wnUJw;LwtkrWHiJD#gUrmX~&R^UZFw-jE! zolkE|%MEi4+RF;Be$V!o*+S7u_pq9lWzOCtM^FQ;M!qo@-=H284e$Ud{#mCUj$>pS z_cvI5OZWNuRiI!}Nrg)MAs<8nYfl`(kC+qh#zJ5lXKEG_id53YBjOco@CLOi8i%T+ zlpq`6Dl4TajPIBx*UO(gp5Rc{6kCV2v{+{D>KbEi*k*Dyra>p=>E*~827Px7Izosf z!ds)pC@+RTlw6|8G_jHiVwxGSbQ18^x@Yiwn)fl6S;$nq5q`lLrsPi*U1iFa>4=-e z$$7oQ3m8)mj|xR5;%L>fP75q|N(<~X4s0!vF{y(&9U)03-Dwja=KHP>K?k^)1q>z~ z$7%Qb{a@-C=&*mMc@d41Q>i%8LKuJ98S0Q%(aM1_W$j@^Et{zdOGRm=E-;f3ul&du zQnuxUKWRDIHZ2UKgL5_?R(Op2QVl0$)605D+PfSXBVvvdiVZstHO--0v2rtIY{(>z z6M<-(nQcUW3!0Q!8TOU?anAuOz_kVxS)R=tNNKtw_uf%(Bb7c!BEB zWt+rw?S2xO%|mAPrFH9No4i136F6%GIix8Ev0x&lu^ECck*k#0@H6d}YE-vc5&$V* zHt4Ep$#_Z8+o|9gGwrV7S(Kb`e>9V`WDdyo{ zX%1pVHB{s&3!5oszwv*h=$YPT(Y2}3DGOWZI?cUies^lDV^OApOpTFXVP^TKks7<= z_&Z~npI~Wu(c>R%mTFq`_5_~`88~B-g7wf$xKp}_HZvTH700+z711nW@Xq<<{Xh)iRO!>{pEWj^f7U>zwJSV?_d2OzP>`8kU_U)BzIx!;B#aZGIi5!N)Q zkR!DOQ`i7q&Oz`guCnad_INpQ6^hx4tK=X!Ad=oa&*Q%r_>DO&mhH%BbZ-CCQ}? zzh0R<;tpinuSd)w`}Ir;TV)2V;1Tb(JmS%qf>ZMAiK5e13-wz2^~y|N+Gmvxs06r9 z>`IXK#23SvaUgn23nXNeZLO}HkLo@-ANL4kG!_e`_Um<1S6)8h*AuGrb-Q1$o1*RF zF$MtTWG=12Q#xj|X#9HZhUM1_(w_F~36E*W&~QET^xQI1`F8#qBK3U67etXVx^!~6 zHt#GXTdh|u%(m6Erx?!dy(fBUnviUhZIef9LgG~Oot>KRw3=7zD4;W^D|L<2(=tTu z2QGITI!HTN4?WrDdcM%>o8^65+_F1PAJ5($r=*4zE-91dZ!1bTf7S4Z(c;SxmYr7r zBA=JnKPE#OSU>G9Op`#fnNA)|doY9d*-9VSs3gte24!W?!^DhLr#;Dr6` z;G&q53S#yLX60tms3QI%CZ5TMd)XsE+dWI`?a=JiML`pA{zeUH4d@136touV!*+mP z0T%_W6E>a&E7a4h;ex#n;#|0FzeCpfR5G2NNEQG)%=v1&`lJp;g5+2DkZ@w zCf*#9n`FGRRRa{phNCcbQ!p1h0ir(AYyDp-@z9pvRZuHHz!fnTd0VB`1)Lxvax}X7 zfVIy`@2B7hj&X+NhX8EWLoymOP12#fnr%u(rq6!M8h9q<_B@}lg58O2`J_e+zhCyP zRRZ+f;g^L|e{0kRr&NqhQlU0C)a55rOk(&0wv>y>r;F5Tth@U!bpJh#LMc(h@76P5 zvrz~8f6(KA`CIAt67x87XLrzN%3=ZwHVJJ9h=` zvDkHJ+sym#wuz1`Pj9$PK@#P=ybnk$A(luj%2hyGWXuv4|CY=dd-HE#+?TaqBIsSK zecP|1ROKj=4{sD;ecfkF^>Q9eLe&#R#?}9jaHUenLe@*)m9Q1>ib7q5$DnEb7!Kdw zEZ>>*QP`Bb+2ZJeGhIh{3dxl)oa#-AO@GS8d}rz#fZ9Yx(t9E@7o%wrS<5q0rx^aV z?v%P#*6LdAD!&soC-(aEL_wXre!RG4&*qFe;0RhQjHF0B3qde}79)EvXi;Vq%wkTo zXa$3IoW0j$Q5&^*G8$S`N+)0&?Vqx<0kQPc#xM7wEwiC4oeOlNV=ygRe* zWcEz6dePV;;>>D_zhh)_Uc z9f;`0;UH*|3LssUxk^jd+(pCztHD$@(vxrp9eXUQLL+$!vRXx)ZMGc8@CjVDqTk#1 za?aj1)DqWTY62SmxJRH-EgG`6GF>;qK=;@PYp`iV43>GHO_@^`)b|v~wdjIH5$rLg zD~AJM%5@cfB&JeAE5gP}ql|UcnB~bOg_u%pORL?9YlPEPJ`$r-Ob|}pFu}RR1W|urCcy;L7801CcBXWbK<=s~x#D1g-k3r= z$K<7$YnWhi63CWIQXtCoG&$)gJyAGC)w%#A>IS9Fip^B%{S*bV)49%RpYc8*%@D}7 z6vChq6P)Sg5fjvdJNyd0;MA*`V4gHFx)61W-fx{WO=Pmef4eBUP*D=+ymp`6!gX3} z@{LHGhb0x_+;#6qVmlJ&neXtfUki$VoT+zGdm zq0z8=772!idc@FhhoCFjIW4DP?$5m?!t8%|t}Jl}>t3WZ=aguVE+yZ<+gjakl{R#r zxbY*+cxf!g>olOY1>dG-U3(Q=PkKdWdYHMhncgikU0pKN}&zGUsrBr#IN)sIE z6={C)U4VJu6vAhxSCsNyC_oYFX!3E)%4U!uk_Lq8Fmpg=x2%inNUs2( zkj2~4lliU*?#9w9XdUvL1?!aWqW^T+or4;smWV8pgU}g6CGkfDheqBNcWlTAZ$}YQ zAq64rA`+iW=<{Wg$HDESIukSC3-&obXQJ?B5QTAA2O(1!BsHiltjRVGVLT_xa4HBn zJGEi1v4Bqo$btmjG?W)x5ZNIMcz7?M64uu#<}$)JKU2b#W-2JgjcjyO4xlm($5tI7 zGq{P?p?*)RpW7jnV}3M4V0RZksEwy>LfJZwJBfvp?3_saKpw`X!cxPL;C*{Cas)_b z#O8I=(z5{#nYu^NSoyWSFr^XvVULr_w-J`9N%)m_)z%VTV5W9T;xaHB9^Il;lsu{D zPGVP;R-w#tzoWdid8oA05N9=4bz-?D(sW&Rr?139YBE`Xf|c#KG}aJ6HB{-#px@?s z2|o|^XOb@lIQ4z3Z7So%+KIGyg_9l>Tpur`fcR24krpy7YTs3`l(cJmD}z_@U`7YQ zTI&HDLluLPb;9WFg$;s|=Aa@5q3CBA$_f}D8o@BN3l3#6DW{AjE^}q(3*C zGJV-%$A~n04ZDfDclN>6lw~dCdM%y+=H=854C%y3?O{;mz*1sVd*@@nsV`$_mak0F z)X=Ql%(lz2KUA2yyX6GZ%E@|nY}wCc?K~}8X9(czp59W{&YKl$^&4@KWrcdn*DWpi z`?|>~TkCR?G1AKGT-e4t%f#mi58o?{eU=yXMjW(Y@P-|<0DRSYdAMlj;2)g{=Y&C# zNhORU#BvQZj4K&vMKZ3Ehp8vyD%V(h7YZ8ILDyEPP$SNDI7qb>6+T2D)ut63INg!Z8RQ0!(!*}P96 zDV=E-g4lX!7Eo$Wt0P0$|I5i0X>m};u^8h{_FZOyjE%&s^MP|P}*^K!c>qbG>71Sn)~aumrz{-=)LM2{rB~3GtCsV znn100hMbbNbSNy$OKZK0N|ol^Yh7AHQd8$N{wbq|s!Frh9}b#YiK8dKX-+X^4$Uqd zlvk|ZtGwRlFO>g*r(phyq^2}(t?wHJhBvPl82USBtv)O>nTOOfs*NHFv8!^h#>o#V z%HXth^jq$vz4y@eb_{wSqlT}v3VD`$a!Fe618T{EeAj*s;~k!^^&u@X1xT4G9tQD z&P>^W*+pFH{AaR!bU4X)&gSQySH&+Y3IG|H`9*|LOIb)&@#Pd9&Bd2dZ&SJl z)(~-{9&d7QxPyY7Ow;Si|FEYi82kG`GEnmL~D5+EZodb-6@Tgz6;~R}> zr}6zvQEOS|s{*8*6JlRnQn+HVd6o%F*#*7T+$d#kWUsRW+R5CMZ!;k^MP6IRMp7>e zY>l0Q%YLa2oJ`|0S90G0pC6y=saTJ9f3os!?>t{jTq3VC{BfHgjQLaay;=S=G?I_D z2%^><+pT^kE4&@$8(_iw?Rp}o)Z9Fi(L`u^x+dI3`w>&=;Na31xu!-CBmC#W;~%_m z>3#3N{KS(_U%mAB2U2$8oHacRyPi%q#`h|N66?TzwRv8hYrjNs#HI=IY!Ldb8z1C7 zUJ=u#DY6VNJpNu6#(^*`_)IJ|)rsjdOqYk*LNDswMCI(}x z`r_oj)D};Wbh0WQN>9h|?{~Dw!~cTq&OH8Xz5W?Pzyl2egpa3+sNE5GB$z10XgiB ziKC5lbW1uEPd!tH2mPzmuG041Q##()+b7z0QHGbfduHma#3TSk6YN3>i zA#+Hv+MgAq<@xgb1PZwNqt9LH_^iW)N13YOmp;UgObaY(-P_N6HD0*AbKis_-?)?o z{YYY!i@H1{(gQDm=%%H>^I%@%!WELfDc>2bNPuv#SY`}atVZL5V5q4)pBP6fpVzR0 zwAIePwKnXgopb>u*aMJU0FoSePKVb{n22@m2rqf-g7?AXxB%YGFj2Ivjt13dh8Ms{ zs3?a&7ntSinfj3y5?sEA$DXYp3tibwwVo61V~koIgjOO6167Gw2(&io4L>g-!9o;i zYKDdr9DA2Em80R$tNB>2p6bbO`G?iX@4Sx(hVOsBUj@g6+~CXV9YXkYq2*UCJVXco zIsYEka-6TfIMM7IQ-9-AFWv`w<$fK{&m@7iyRKxx5HXQE%k14fb42K6#nxzpFe|6&H%r;L1%Y(y@RC?C&=(_W_W9I z$na`3ae_-jhtI91Rddqx+S(PQX1E}^KIz=ISLF;rYp7C&pkJyAW4 zS<~&G$yyNgx$tqPyX$J%LVeMg1|-5&qs`>kFau46X64bDXS+mnOVG~e$YeTm;S$r#`FGrtrPD5*w<199GS1AEudM@0{V>DH9w5^WEiA^}Z1T6%oNc_EXMm&uabQ8?hl*TmwMIGLz)StM}PuQ2G$w( z@NWpv$aYv@+Bu?@^1`Q>Dvdvub>w+yh;F@_XRcTxp_8kqDGw&M!77xh%d(ZN+Q8o(!Xzv6_*;ZJ-Zjra_^5Pd+hEs|8{Uj6%~Es{n0 zPi6{-S@>!LczkI10Kyq@6uBG$8!{er5?Zyw*z*`_>qBMP0i@3i`gSQus=>+N`C1P5Kpw5?4UXT3YpjVf5%f)YJJ_v6eI#9V*OPqS`Ay z#qqN0UuY7TEFHK+4$cZ{8t54C04#htu+1^yGTuhKI9lq08vQC7TIB5K1rei4fQ(mV zC3UKSZ=%9+oVyPOS4sK$VDO%x+n`-091oT|82+SYoo2}EIYSF%1IdSzCT1`N(2A0P zR;Ew?hNc|6&^$}Wa_f91b5MD5ack@8-@Itm$#ez5gNjZ%E?W$#C)-`4O+&>ypU^U3 zyqNz2jnl4mv}v3#4=F%l>`K>EHBz^~%*toynJfj{j$_G<~QvgGon3 z4}uW_ppJhBVq6D1o&N1L!k~2&1nXivCn=Lw6E|(UkB9Y5mT_83<9)vA)imCJy1PMl zoEttDnB@%XbSOE%?DM^9|7lo5AWat9m)`dr0~$|WdOx4Tj|HPmXaqAsG|S3sGlHN| zp>P?*4-yLPFIg56DdZ|7!goXg!etY$?QO65U)f$MHn+)epXqa6!hMQ*icPwqd>A?PJF2wOXx0+&}qFBAyQK~qI z`K@=GC1mh@tF_R8-nUxIk(PX`S+r`IE%dbPQ@RVfV^GT3juWpnk0F8kKQ?nrZqS3m zGx7Cv4*K6ZJ||^j#R|o(;P;X?2h30>q)MEaQYDxpoksArRwh`fUt48jvC+3oxK=E% z-_gV6=$uwCAWlm(vF)vYu#t~Gt_2>dnj2f5eC%l7KXhd3z0P?HjC0?E_m~nt4RO4WGTtIuHs@j`jy$OP=1RHwG)|>E(!- znAL*3pRtwiH0-6+vos~ZbNQN_{(Xb+RyYj zC)s540N5D*odEPU6;;xZP6aYfj`p$iMQyU!uMIelSZv9=g;{^PyNS*VW)HwVAb@?4 z?tZ4TE5&?mfR2CdCLy#PanVa|ul}qywQfEy7bIs#p6c8u%q`E{@hUJqOX~4dvjO z%j&5*7z5ewfnd3~A|IU+{&^cYC1^=%eF>3Ut;ZF8TRW2;Rqcy=h+OIUJV)P#VhK-) zkcH8y6i6#mC&KEnjc+dpihOx~+Ui-rRD}wcMu)(eIVRfJ#qlA;ZFmp{wbip?(TxY; zPq@n+TEjFPRBMgZv#+sw zOaX!>nKmn7^(;?WJ%<=MNSvH_cyzc*29Jct6UD*%IcW;dkef|iJ1?=SxWxIBiyrlc61Y0LoI;OL9PbAI?C0eua0qLccr2;Eb@Ik z2!<|!BAF1R`44qxwZ^FwN_%BiCSU2uErT~0q}ov3UoF3NrRR25jnw@Ksn$Ymh#ogm z(|t`O;WLI+t*@Wjto1z8DXAT7^{$go-8h#{)1U=((ISS0@@_2mm@2Jnu=NMPN z!o`?d>p&p~!;mnx?$KiLaPJYWjqii2y-v3*m>NIwc321!K-}-hU8D~5s+;f>(zv3d zE6T5e*;xW{IsBg_fFzZc<#Bww;f(_2ca`t*HylS$`swl={>D3=&jq% zLXEQfQ5cbgM+7QbAPpZ$pjruo7&j*`$~icBy-_sz)F-a;<)xqC|Fvaq9N%xKNv$_# z9ss#%55dah3v>ZCD|o+nZNFMKvt1YGk*j5+TGNg38ph#ZxxbV7KHG?%eHUQ&2K&y> zeeUPmW8C?(8k;|EW0$LM;&QH7weuA~ePk={b5j~ra-Uy8RXp64=5W*yFB(gQCUqYLK&tVJO{VTY58wH~ntun-wu*(Ed*D zWA)v~$}rSj9!EhOtu~JjP_B5Gm#km5Ex&rO1oL=hIU_|qSgRV=reA(EhP^Rk*xcKF z*m6!?bEoMaOMT%7L`C`a8BmCv`Or8H%yiw2MoCtI^M)nF*Ndno} zrfK6Vcu$@ecbExM0h?1eo{yxxUSII#|jeP4}m5r-Rix21Qw| zH@4HkWIG8QfPomY>9pU5I#$1&G1>IT>=%I$C_tw{At%>VU!lW%MRMlBd`$#&HD530 zCwyZ{Y8*gXAS`SQR0Sp)7;9NW2Wo4`GUh<6#POlv=78axfz=>vBJ;MFAn1F6%l49@ zkIQ#;dQx6ivGP$emLpDIEuZaJ4jc$Gm`I>SL~it8G>RVlkWz`3!Ccd*exy-+mj{`m zEsZKYc6rjv79L~LBOo~}yw!S4;Bqyrak)YCQuxL7VYAqm`lX+p=nR9<%4s z?r=XooUB7)MlwPBMIqUv%?8drEv;Nqe5QrNpx0y2>l11@^40QqvL2W-Gu~|G7-EFaI^HwAv)IxpKn~1`1{vKwDd!g{zre&w6mL zrjjOQS6fLkL$(rGguB>EVv&O!Q;jsrnYI$G$yUlwyyCV}IQPOiO+OgjtcDy@wXI|W zDQu<0<9D%@Q1Yf@s<6--u$AmUwfLW9E6I}5`s>J>xYbs|Z;@=J-+0~JfRJ97fBkGP zDaET7zqi>kPMp#?=Eb9x%+mOcd)>#zbI6|FXr2xcHYrnxJfGk}VM80g?QqvD_G!jDN~5;{ydm6 zg_N#z)dqo3?o6S@cBT;AfIe{TG6nMAp5u!$g=kbJ>ta}!$|-1N3NeBP%*D~XRL1$rMAu(PHw91Mn-r%dOF*L$0Cfhf!buayFl(n+K?D#AW>htLxKn-EVj;b7LyK6W|;Pk_BUXF9_GJB zkZ=yXGw{Sj9^~JFv=TV|l>E4ebs2Gs!_POfcPP(ZF*+cF;4oymR+A|ce`vHZ*q2ek zSXeEKBrcM~pmSB%0qBn!%p7T2JLorudUJOK7~!I#8Iy7d1lT6K@g|PYgyXh}#J1v) z5b+Eg0u9d#bqw(TXwYS(#vnW3cmwvb4P!Tr4h}qS_jnDA9c(bRQ5_uJgstZLJoq?=&%E*(-J3tgKNp(H(q^cLdf+fd~Ma~ z)h6H7>Zn+&l2^yaYV-CuwC30#O1{k7MVq(B6>q({I*x4jyT@$a-ki)^y%X`)TWsE@ z`{Uz0)fxHM0?JZ5b^|%bBmFi{`r9M%_RWaP7IoJx%)qVH8D6iM} zXn=jZ279#u`!^lZJZiXC1^2OPHN!24hSjkIw_XakZ#LZN{#b!e`K|bM)leS?q+<=- zHz%`PxD_~~qf%T@95sYv9>SnH$|tWYtCD9@NOLvMjK^|#b$-sKHJo~NGADD?E3M*# zn7eWh9J05LAhjpxT4wO@Uz^PwkP-TJg~AWqivUXj$W^JCr^HjSWYsD+vITm^UrgSL zAMV)Sct2CWQ;&CR2I%o<(<8$@2T$BE>Ne<@_|f?Qfk^6k_j=X3-(BT>{^o3u)8*Y5 z=nUdhDDrF7!Fm*ndgiY3?R@M{g88oU9m@JyRao(r9n+hM#X~A*JLd?d0nB-gZ=)Wc zU}1dczI#4 zKMp|eI6u40&K7z|m^_6IZAf1Z*to}M2MlN5g1Ju(n^7 zey7J_vOfo>st$S~$oB*WoTO_4yW3Nc7lNpJ4Mowu;Cl!oLlcTmuPKb2mNS{{S_tpp zqge>=lx$=z*fT8q#Cr`E!vCjTNfD^Sfg@{NCt{-i_f^ck&jvwrQW&g^A#s0tl}U(r zSVXR+j2x`3i{ryQV+FmHJ)#pdEg=qvgg9(YOC=-0y^tNCkvx(!a`aAcTKa|qr~5iL z5>D%1fsc$FC6BZ+a$5Tk$X~7ujj(}`P$msySjs{|gQ*UOobVpbc|;w44V5_|35sNd z$50gXRJQ-*7iL59XswI#k1D<@6G|IC#=|RPcaCuJuY z9L+b&nVA<>_NTmnp|j_d*3_5qA%mT51hAmk;-t7i_t9#f+CC1?o%x;z9H78kqhtjfFKUGk#$pFt+CK?N<3LLexW%e7Gg%?w8ACIr zEfAe{`Qt~Z6e;+ zBM*~))HFmPD#CY~Oxoz4d{)_!_mpaKgaMC-O#Zx;Y9NkEjexh2)Q|+~ zV%3+j$G)3Ly@K^2P?0=ZWTc`=ppyT%t3Z_*;n}o6l>`cbx?Bs9K2KPnu7*I3h$3Vp zA=1wq`;=$d2ob##LS$fpnuSQ;Ld3t4{f7`yNU9}7>TSqf$%rISBdZKHvt6K?pkWdV z5FR2&MCs+bq(ljeRz!nDs~pUTR&6RK8tiKMUka5HdBOi(OpS(0}D z6~c*MDIOiKPr78m8d1(xRV5dO?_Ab{HLB|U#O36$=3+njl4aatUQ4OFl<_YIkBcIgmYy6G96mtMB6Z=k+UIP zMI7lW$ypNiT*zv_F}di7L3!kQgBYU z;C8;{Y-F)Ge{V`5xb?@0{Ll#?GXoBf3?8L6pMd4pb*H&D=G@-c134>^lh0DnfS zyn!FD;w^39Alq@%42Ie~BI|aA1Lhj4UK~Tiu5nPgQMNBWH0~%QPYnYlcT*#QUm$I9 zU%dhSr(^}F%*hJej0)=fnEhKVB> z=!dF%TX`QlUxY{Fl1tJ6#RjO&x!LU61!Hg$l?n|t2~MM;z_re#N_u=TA^}eRT0iXG z`Hq6+=ks@1i(g4V&{fyg*`(ur-JHf4RA^MFP0h?$~ z=d&5BP3of5;`fVl>Iry)gU4bBvlaYYO^GP9(ylN^;Kq27tN3ClM3 z9WZ9cl72v;{&3*~4BDsalxY!aP;bN{qZk1~Tvrew$Q!95 z0>J8ctl?i5G?RkbGH|AWj6e7gmyTO5#J1&Os)JX^^cV!zp#ciHunnzunH7hw#dL7b zhD%I937!Iy{%@B)o3OSzI87sQinN54tA-~81KoVBU45j8HIz0CPdbT^!gxy|e)is> ztUc`F8z_oV1&(o0YnhdYIHdW~ehoLK!zJTpa(1ZRhY+*O5;SXKcN%KE7%WY2(|e#U zUgUH5-S&FJbAVOquS);$u&TH*&DK3Maxb93vv;wn3|1tI$)AAJ2Rj%-9Lp$0_2$OH z$kw6g0ZbzML{}Mw5Jld3U>f`4-;y5l{EzehoH6vH2L?I|O{KKEoSv{inU^?kxXk5V zo<@|k@Gd>Nh4q;E9qYdAi1~t1s*JBvEB;R+5h}*QmMBolUIFL=#l-U~z9`@tUfkdvSO`vH5kK?jztR*L38FsMriN!}sZ#NLYEfGXWVM z;vdGB{^$koH{+MmkjEYQK@5Dnf5KKVVV>>9;_ER9+3}4ZSIP`Ou}y6FJ{$4O;K{&{ z_R(it6ivLmmqJX6r}{l=t$LlBQ})34lc95lTmDp4rxsQ&7?#- z;D10U3kxsr9i7gbig#4q+dJ}Qqk}yFY4XnfWaU6>@03gXw(cXNqZhg)4sDE%RYyk0 ztD8nQYvX&1wi7vkg2Tf9VWiIR{YIlNqpnCYe7C#3zr@ z+nHwCW6OqCCRaSgaJEeQxtR7dp7v8)rXAo;jSf}EMz>@_93LN5qJcXz4UBIdjb4H2 z?@<{+8*CePrYWxu!=ahI;0%`ochiq3R6Cmuz|CHv=>xam4i@~uJbU*A3&w&-M3PuA zRNH$7YAzX$vI1Z3s-O&n9KPGxx@Ny&>n|C=Hd}uW!h!xb%lC5d37C}I>t#bTH`>=1 zIOOersABog!5*EzL_hCJ{h-lVaPTuL{kHBUZTw53V|3sG6)*${{0ct7CWQ=B%`&=o z6z_Ob@phg_`eRukaE>7jkwe;OfT&UuJ3S^(3f#<-Oab-r%AyqmC9#S z!mm-{RD>_9>?MW`j9yy$#o>sBKCk=L)O{P* zzF%uHejaOFA5Dvh0o8f-ZC*AhwS* z%&xc{W8hR>kOS3qvZ3IhMyUjrWGVd1qQ_BA-z7yhp$A(bW2Xqj=q$ppYC=<#X&v@W z%dpX-cpC*^oSyX&BfG$P1|(4jiVM|&!cF0Fo=HHKZ$!0+Al1pjWFzAs+de(5m^q1Y zUNiiKj8*P(kBZGY%c~xrLp3c!=)Yg<^&c`{$I^a9>0%arg({JmD;9? z_L_Ic^Q@N1?Zn2gm26(k;g5g~&Y$cQc%^=UR>US20PFSNu_8;IRWU#6Xm&XUo9dzJ zN}K(obB%^G4D_&Q*KKvwR@ZIGv-5iSD?9P7Djum&Kv&NA$!~V}393oxmxfH=#EE4$ z-vjFLVw~qgK0@$aCKPo+6JPB}gaXcEf)MoO-qN#oKl;OedFgH6w|xF@-rezkPyhM9 z`9tGD`trqJc)(J6MKQYi=Hx%2x=SjIWH6=wdRV1$o~W@7sO-4vaJ!uRCSN|TvQ2#c zZgDT8?t&9SXlXnQu9&>9d{aTS=FRf%H?I(-48I0RMS{_{g)L4)Lk=tr|DVgS0Np(g zMe=cvj8a8$DywB)5ckO8g57zKdXt}B09S(_%SCCw!hhXID@tRQpt^hv`eG(o>j|}e zB}?;)fCIM=R_yP&t9*bDJgN5s)Y4?>5r(={b&ifnV^h3z;n6r1kxRzA@U}1{tK}dD zcFMEqYn08Iaz+#XuIeO0ERNswROyN-EG~ssg~}~weHWit`~d_70T}qs(Zv8 ze1xH}sY42;`u1}sQypqC?kZ}=@KztP-#}ByE<%t1H^SKcP1}Ru{QeP`*(@I%;a*~C zgTW*wjQt0Neb~T*yl$V#GMR&fpZ%ixUj%Xdd+X8q+(7|W+4$(vSS3A&omed6bzyJxIVp&|c^pSu4 z>)r3F*4{f_`*z-3BO-(fBvv!#6}lBxJi`zYmg`8E(Jq$>nKd1*>dED&DFnY-ldBcL zqyg66=6IC_6H@}>(#(J{ko5>i;f|bdlVbRyryP+02I8LVchiFvw6UC`yr=^S$7`p% zj{t!k?Q7Vmv z0-yN+gb9V*@)LAiz-xuQ;`YurGxl0})1i-(=ba35N&nA2w98%85Bbk}S^bc9*7BJ# z*z7f1tbLW6xo$*Jo)t`a*00;J)&IaQml+=dRTtNh};^!1KB^eCXQ!CQPnN&w(eCVx^$inAD|9GNh( zAc-kYCbJNQVy86d|CiDbKL2%w5=dXj;PSktG}e+TYcka+@6fY+{-R%&2oTGWqVtbJ zJCwTX1uea>(GFEhefXTT!)eWs6~a(LcV$xiSd^{4hK6XHYCdU*iDfhzVoN(r+Hdyp z_W!Pq+}63b+f?6IX4K*Ak5S_2*M&tEZvHgVdezsi{sezBrd{Cw+;G2E&m#Zy>0`9; zLTfW&K31z}ijQ9^uf4LKD6V^HEkq*7|BRrQN1Ccc_!MEmaak!DwLAGZze>~8udKiU z_+8;2zG~4{^T)hnG?pecs3&3rIx#2=_O;fNa_jTlcxbL)CE6?Tw2BJ%@s6{e{$ zUuZQ_`m6TcK3@>nHInzKULMBQ=WrPC&`C8qTECEjV=hWQ@p9uL6md(i@qdt6=i4g8Rn#RJd#AH zd%xJe*R776?R;9`9zM-MY<%Jg_>?|3PIo_{Pr(0}J{i_W^~vC$(kJZg2@NY;uXqr< z@;W?ORQs+lFYD;~JvM^L+p}4Isep;>!`1zEd4~4Q_H;X{$1yEF_F0w#Fa85w#I@3p zM*E7+ahQOL)!uxkC~>ir)bFyt?Bt}N1JHEg@c}FrEZH0isQQUyM zHhjVM0iE_nN7Xlv^s1xu?}*svqcvqh-E82*{@n8L#r)y`eh^XG;P z%je?Fk)li)jlo!Eru_0H=k2VN8n5FY>y^O@22Typ4^@XQ%LV(!a(xU83ZINdy!53& z!k9~REKSy}lWus=hog#oBjzg(;+xT-boxOGi)e9tqM)2@KEM^V0i&!9;xhg=!1MuK z>9x=sbF55!D07zxuAN{s$nn5^D{xj5%8Ai_AOua7sA)e4M_6aZqp0V)Q4;j8IS3Tp z)_oDKk>&!(KVN_iTKV-N2=4_ZD{-x3F;|_@P5r8J4bWSt0s0!@nF&K_z=YToQAj(D zdqBJd*kCjC6+I^%g#S(5LmN^0$fo@(>c$~&QXvegu-QIEN6dL0j=Uw)w5 z+`sf9J0SfAea8=>S{(?ecmn|9hfuE$)jt45{17VEYyE=|^3L(=T%}c2OB@%r|Ivzw zl`UA##p;AWvR{)ADc1%)obJG#Kr1RT%AmXPsNg>RJ{%*sywQ4@?}=pYCH&e zMp|&`wRdaWg(p;FcPFM&jRdF{arK(GRCK``$IPj`9gYX&H$N5+5YnjFE2r14a!DP= z4oQ$mQoIg2Tny#EiE3|G1TU4d6hR5%s1Pxw3I6f?qBM!QTBE3A*-FZqt(P}B1b5C< z9!OT$F^7P&;ZfVEg+D_V5F6LR3VmR8Zobn?4BXiPNDIv>)Cb$qtU_x}JJqab<}C)S zwb_Fq;^VJZ<$$+YP4;qW$vLyt#6OZdhZ8njkPI4wG}U;+z>i6xG5?H6_%cfx2_~f= zD+&#K<_P90!9w(0un;LV31)g>$pi~=jTC@|5=+*L>jyNv`{ZaPn8~IjlhzYkM#SBN zjVAq~r$WW2kX+(Aa^&~LPge;#h`pW|`)mI)7P@pIp>2(;O`}qQ2aF1G2S5PHoFJ!C zte>5^UGCVJilInZ${K%rC@k5Xx#2pv04f68rJH6Rv}b}qhcOOoY?`WPmkH5HlB6Si zpR5L>b0dGTt!IHTr>IIPzZ!{H5KY7zq+!Kb6B=S(pkOYoTIRPOD-||i<=b4t#XST; z#3}?;WRonx2GDMmO`j^-<)Y)o;%~*OrIA1JhLuC4dg{;rWi0ZUX zT98eJv1MvgEMoYxS;h}E)pEAu1u4%@#5ybi#`DgXTY!4BRVsYfEDtsf;eZcf7%$z+ z&&b8f6@HziKD9AeJIuzUbmuJfCG56g)lX~OIjVj;veeW4>AF_~G*bMWRli9%tFzSc zVJgQ=(0EUicD&8wbt9!M9Y5oVRN^qQpXIO!21tO*;5*6Q0H_>F0^d8e7ADFZm*-qZ zdSvh;$v&t1>75unjWevA?njEDc$9u6PzC7A{I$~k(yq0PXh2e20(X5q7G)}lydgqI zDcFSrkt+KQrNh=Uvn!_$UnElD@^cm2^d7^)uIBFLiP(bGl~;)^(W%6&-4aht6FD@?=do!NKyI;<_)#zSGxtf>cjzx7P32e z3lm5Iz0891`anbE>k0d)D&g1@G6~&z!lPJV{e{Vxi)jFjP@dlx8Zl{tuk=5+>NCdn zHDdFRJ_J_Ai zKv3G|VTmtdPkShcfNNtwQkU`k`6`_*HphkyGHa<`r3mjeP8Ul%d(%FpzT#nhxz06@ zut(7>#G*1!*R1x~7mJ5}D<4;69=ZL5F=ASoN74_xFz;q1VNmB&a6m$%Ii;1ENh!X1M)Ajh#6V&L)#UZ=k zrCOp!V0~7U5*EoEwAwY^=k1bwg;g)h%3TI~s(1vWqs6iI4>yw;35T+DHoR_JLSsPZ zNJ4L3TCY)BZx9|#PH)*DOez1oVQJkcJ(#3svqAWfQJU^gZxGgYrFH%eHd6CYO4AlN z0MptaJd~3Lfx|3_8YzFNjlribO5iA{v{_$O^;OQ(md%%+Tg+E+17c5vYUSv_W|);O zUU7~X3f9({s;DT-t6Zw3;itS#jAX@jiI8GQN>9yPhz1SbRIpOkPi8 zyieSW?b}CYoG^yBO2P{7vsYH9I@0V_kV2b9sA=ehACm~3-l^MZpRom-j*U)gFl|Cb zj>xK(3j5J#_5LrCUZRWPXCv@3JBNJs-9(Des42ImTW<#z)xsx)$ng>ui0hE#{k~o3 zJdQbA(qkwlB5HILX2(=6Ch>|__3r+q^2i4pWJGODskoJu4mqVAD2;!c*)KE%Do|76u&eMss`65qipL>Zj)jFy>9(x>?EYAB z0Xse#7WYM^gF|x9DtEjJQPabZNVn4uewdy%P{KN5b<+3v->ICAWj|v&&r}qktVVcy zD6Oy#f3sE><`N*=YfG9g2J>kCf_>+NOJ!IVwF0JDhXtgQ4CzuwMG~4j!>iTS^gOq=YVI`>^0H_!L37eG8It0PZJqOKy+YPl zOjW^DToQBd^gq5>46^0gq8H;=0c@yliY_#9?LTQE6cMs1YfQ(~1_@|zo_?G>G531a zuiW^&hu6btU6S>zCYDhUEs+G~l3Xc~uy*&A=TS_u{oF2_B1_k>c$fDw&$!vKl`Ga+ zOSz)%u{43@i40I5-)iNGm>@%$pA&kR*4xpDI6wKfZv`=4h zxAi8uWimPeddWbu8(FGOz27=cU&=hz_S(Z7;4 zLbm7BKucdqhOz}No9^YxJr=SSh}SPBT|^&YJf}rsv#+OtY2D<@1M6UCX^#(BNMug^MX;NY?;3S(w6 zqr&pO6TPgTd2gqex3?S0DvEGZQic=T10B^ugAN*F zVA~k9^n)b9ziyIheo68{ob=CpQcYM7Q=yb!zPX>1GnAO2e@pzU)6hRPosO|3%_)f9 zbcWOB`A&|kbbM=D#?$uQne&hB9$5(zuA?ilLys7XIIrCmT1}zdD&PTW!|IgLV^&Lq zLT)QrBRZ&H_z$z^x!ww;9cB=7uk!CXJ|RgzMn1iSxV4BKuROz%1P)J}F27u`xWnf%1?C-ft^Hygjw)X$)%e6T zsY50(>iuFR?M`(a!ks`8V&SAaM_Z>4@t^%%1v6LYsAYmyV&{}}3+*8~C2ZZvyTaCU z;hw~OA4)QQdeFi1`Z1wON%8FQ;LZpv6O+4|QjW+i<*swjw(z-k1%&SupHuK+8!f*hX!-3eS|-6syzWq&*By%Z z?V%}NSJHT&5_L{gs%e?wvC)D|iH4nhqP#f#CnC1kF8N8m{?nknhDGlB8r(DyodeRd zDE!G?Df}Zfg+EzSIPvOoa>#V8#Jz*QI+7^d;;*6bpzTDb$e}C*ON5nZMiME6Alr+T zBEt8!6#TH(Jxkz;g5$Vz!Z{WEh3I{eS;D6GMh;d-CX0_%E8kgdOooqrCn=j1~szcE!R+$z1}^!10u^a5Igvfi+`6S#W`cil&%QzO#&LW%4Cn zf{r#(7Z}aW!@uu2Oa+=H@zTQ10dVW{vNGD8ONEvRyh1}?C>p6OjuauE_wQkB$ zco>d+RDiohEqX2?{%S#Te|PdMuWc88&yw-g@Q+Uy+r{5u=|>_BFJ7A;0x`(Kjvq6S zP)fu=fI->lV>sy_A@QS z&o8F2m9Z!o7%p0^l`VAfJ857q7Awk_e!&CVsxiM%jIq|UT>154y!H%fj3}#fm)V-Y zGN>tHpt&%+uya1>A}Q<$mdH>NU92Z|p^8`%EE?wL)H&>^eb zw{r6LxUAw*qLAG>x=Xg8irjNW2H`Q;`C1S;r|%Au0^_+iP+&B!ZogO^jH{DmAI8-t z8Hv#fegh=9TB#yMhATV>7WKk*PJDtD*)-Ue&?Jwn2-0y8M;UbEmw|XA4YQp565qht z7mB+W!;> ze`n5ngccs3%Rz}xHFb4l>16VU@E0S|0+abnwwS#-w(k+zYB3jJ;9RPz!!8+O|I+g= zG56lhK#e1HL!?c9D0zzJ*i)i&UpSr(V-v=kYZ>Y2dFg*|ceBY2!W=Hom>QhQ8Rw^6gcI#dbZqKX0 zEr<`R3^25oiXdoV+I1@Vlr#QVaIrubEBOVB!G_w!!(q zybTT}Cj$32I2JP~fWX;MZkl#IwW=6?cishe&q~1@bC5iK8qE)4d7l4ia#Uj=ZoSW{`%f9*7(? z)xc($%v24Cl-}4z7cA0KEgEw_CWJ&Bv>e1yCCa!8pTogFxto+iDv*~fCnotmhowBl zcxT0>(iEfa&zNH2_r)t$FKsCpcD3xzZ`p1(mC06>7TvIBgc3X?YC(6VCb^f+dYj~& zYI~k@X=csFdK9`_HPa#n9y_pJt zqgmC^xZ?>>jUz##aa9ouRH)ckwIo$w84nbxi%cRcQfZmPi*=GLaz95G!J)$z^3}~i zAvE{&b__mq$BKNa!s4nox@q%X{2S&71qv3)dT1*1Ylytv(~+M8NH#%(Wr zZ&CiR#Qa7`XfNqg>^f!c62n{+=4u>;;NyI6>ucY zl=6E+cUEQ-{qUXLs{c)%p{L3f)yKk~5P3U=22Sk-s(Y*^Wu%Q)SvuTBJj#QhUm$#^ zrKP7yqS4i}1w$CN!KOc!#Mm{N6M336pSke48hbbK&^ZGRxqw={)BC6J=<@OV6CUkG zgjXF1n}K|lbvo5KZuALsDm;SQb{Mq)kMk=8N<)x}{%jJTo?ik9m{YgiSR9IyaSJ z_kEUD+_%K?V$@u{$e1pb7lhM_lLiGUrV0)f8rNPtPS|@4aeD-os(P9c4ER|`3T)|y zcV6ri0afT^4ibpcyGN4UWJ@N-&#G<2IpdZ(Ca8hVnrB-0c_h|6Gc$;}xCE*;A*Vpy z(kQ>*8F1xniAg_y+(V3dNq;1R*xeK z`qgXMXm|nx8&|=*N3Ub+;^Grmu)pUnY&-$`n!7N3f{B04g)>h;*sr;8>WR^qkIg4W zxAH-ylh^XWBb$6IJ~6rt=wNcb3if;zekIfV+>(g-(+n3OFwT0 zynkPZllV&Bb1AeJc>K4-q}ewcrI&9yp?hyreSDt29V~ zr)tFDHYAfMxK_yjAdQ|YoDxE^1g6xt-6i2IoJxlN91;)jyoU5Y5uphi3seq6O@ zrI6@mksOJ~xC#%?A+EyHe1xlTEFI^{ZcyZ(EME~24jUnm@A#qXZR^h#E7}XrLVH@$ z3U+aoow-Sp9hW4#i9KxPPwPj`5g<#F@y+CVNIxRyq$P!JE3($6bRLmCfKQ`^V8VM1 zg3lPiI?7Z8k#UjndstRo-XeThn#`6h!li_cj>u|+&S9$roD;?A2&32Y!8*~wU8H~P zgFWz#lx=-mqswp26LhwopOe~q-5H%UNN=h^>MxVq&-9$s=ENH!UiR|6BE&0#rK#+)0bDivR${{4#CV7R0+os12%=E0>5^=SxAJZ4L(?&M(Gfs{BD1DpEhfP#M#Y z0!NYp!~Zrfop*$6dOOS{M>9y^mwR%*)8F|pHI1PcF&Gyn5Z%Bp0e^Hmtx61-w`L&t zCKWP-ZdM`d*tO)S#6@o^T2FzW@zG~SW0sq>!Sj@5>5kq&Q=vX`+8`Lz_fQMHsQb${ zFEvN4)qJ=QA&i9C(eV2`&{tmT{uMI~xi_MP*dDq_z>@dxJvW69fopBm%6-cZzU>{vxWCHQ}H? zMYX=Tjs6}BvHD1h{_2o}_jDhg)_&!;eYOBpMEN&Ee`*yKpBpTQ3_RboB#uge*Cx!v z(bI$IaeLr1=%0eMavLe3WV3u=JcLBG9`7F=rI&vgGNQb2X?}D}l$06Yp`93?%&vy< z9TKHl?)DO;_LBVNer^j_z?CsWR-Fa5FkaN+BwHRWsofUN4g}f3{sl}T^TGeEkyG>gUb{pWd?5sLP?)VVmWav1ljsz@Jc&xp zYftbR!tu~Y*||FC&^_Nl@;gu`LjW;Q`ST8yW~E?e5M0FO-;V9q*u zT)}3Bg$~&sf^9z>ee>XE8G_>tJ@6}DsuzYI;vnPWmoIY%>A>Q>u<;>%`A6}EYNUMm z)%ddcq01=Ehoujk;sXufBp+x1-<-8*GK}Ai5`9#^{W(7P_AOF_o-M@_C{!YFdw@Ge z&Au|ebM!{8hFsk>I?WX-`1lOsWH`E=bvr3WZ`eWoNF5~IJ@uNAC4DWF@sWzv{fm%^ zcX9d8xgx@MSBtP1pJls68r!#ksiU}AT!7#tv!#BwBCnWyyW#m3;Q2OR ziK&^f1JG7vVz#Q(jgL@ubNgUXP!mKWJp3;)wgX&#CN6tihMIy>_cDh?w;O1de0)>C zI(CHy=dPe59>1b_y~3214@E?G@&TdT#Rr6PW;SKH zu>4Al<~L#p-}y zlKiAX&&zg}Vz^gzI1@W6RW%_vnZlX)QIf@t^%ON)Di|#aR%HvDIxTN1#(Y~l+Zn+i z(eL+%*-q33m9oPsX0AW(sN-3+?pY6Pf_gBw$&hoMEZ0B2f1w-ElWxGiB zw{b&SUGfKfI~8Fxp0YZ1w)5}saq?{E0w2^gobV)Mk(>zCx18;~nLAPXLO`<5qW z#4!ZLrwbfc&@<+egCVWR?bF@l(C`01kGg_|Pe!>F!Av}a?R4Gn_Dkd09%a{c-}jxzeazf@XXfHP00zLhS0Fi%KoeS~ zNt!}zo~if>XiIUGgmu+ce|Rl(4Y0Zh3Srn)MjVlVL`sUS#I#G>io+y|K|5r_#EMO4 zDGgGyE398(8^%&1HKrrlrk81%wWLakDXE|D@3;3k=g!>0g9N4JrWz6VJoed--~R32 zd;fMf7?TlN#MDN%4}%kF%t>9jYP&iy&%Lx1bGNO$x?mh1xOTfr3fnqFaJ#~5G(Iwv z;NGB9wjD@2CEC0YPYY@f$34O4#_X!qmJtFC+JP_5bLBFlZ0(>lXES+I#lZY4+#(TZ z1Lx3kWUIM4VFzo7UEzA!2n0rxQzL^au!SO$0oopYu^{z^8*TUDXK3LrJi~fp*)+65 z7_)6GFf&?ME4XYr9*zJA<@I6<3_%SHbJ2V@1zRel5cfljRXm!Rc}JU~sR>_L+(9_u z?PROj6ldoPTRB82{lM1fvr$s+)T!$OL~ZeV>XKO1GWj5 zTE)QZ;diOn5jYkh95^cUSOBh7ofpI5GqLK!gd|!EWL?qm1z`*Kc&nY% z>P@hr{4VX@#y|Nkf@{0V+%@abEZWZO$Nb7>U2Q#=vD$2yszC7(o{dYpo;~8FCt}XF z1?^hHL&q+705YBvS!8`@HG+K#?$wmEK2o8!oj5cl@`=D1bGn14nMxq`SBN|#{ai);wN=EkTM zC&$3d<+e$pgn_7__L^(-RiXrNswdgG2gF5=*gzp}C2F>nhbHdZl-g5p3F5=F1&>P0 zPJg{Vf44zczL)Ww8I1;}Y5BHE15=eiVXpjM?Lg!_-+03MP9;!qr0)a1`oz~dfx_g8 zuS!l74jr2%=5Hss(4ThVtNLR|!}!7x>zoX05S_POa5yp@w&_% zFK<&;lZ9h^YWp3PvR+Kqk zy%yroO}{fTBLgsmMk3(5DZmP5NL1O9yrs(?mk3(Aw1YU0u(XXJ4JWfX007Ug^*XaT zAXHTSYcb&wvOK-kv042yFsmOO&n`Wci_4r zmjTFhQX3P1x*?U|yja*l!1lDco4vqysgib*r$s;6F7lB0f;v6Dg2)gOUx}oz7#W}Z z9z-LDxWZgQ#+8t{0^x!~sYQX6xx!MFOv_wBu^zZ*Xw;+6Z(imKr^r6Dw8+^6gUvHn z&~*W@XHqqzBXt-@b`+wktQCGBxOV(S*G(pn4`j2;p1DF(r3P7VHbFY&3?ZylVl{Hf zssE(~ld7sn7^TX(pj1V63iM#aZKnipP^uD!C@~sSjcgf2Sk~waawTMy?S>pB#4vzk z?(#!41zO|_e4o5*xW;4DTF(ml`sbyY-kA-z9-_g`4xft_`gi*Ikq|H1c&8ZdQRbF} zB&t;C3R4&4BuRJ<5jaw_k9Lv_G0NnBf@K(!p>@j&CAojp(^GVU0h2x(1*sgwzF!n# z_^C5NoFYl1%RCt$$m?eKV>|A&WTC71@JSUm(ktmGCNj{%Wk#WVk$BUthOYIv zNxqd)Xuru}B9xNRAd-^N<`k8yka)X85eU+ik#7e=6q=%l6@(?r)uV+-9D;~E07RZS zuiPZz&jw?1leR#*+%$KLh2oMAB}{JG;&Kx*1uT7DauX5cQErk%gcua$rg@>eea&{z z`uP~Yr2wn9^8iyP-jhwCmYeDgj1nD#+{BVZIMTrs$bOS@lVYS@ZUR{*k~Z^%H~*ULcLHzbi_gB$=0&nJ^eDTS0|pzSrlb_Bwu?$DW0Edp)R z(O&=uC=2yCyG0_<_9z0mKqGxIXbfb+sFD{V(^~RE=I0n_Wa0zwC4#6jhHpBy2^-3L zLupWroTSGJ4!P0E+aRH45Z{%-QSGqbI4!o`GS?5X1FD&9PXZ%0<- zO@@ys98*=ziakLYluQXj+9);Ml!T}RUoy=R$};4X=Q+7e$xtAV}oJ!tn1$p=4=fhL}Y*_{jyL4`^Y$02*%{>A-?*IFlCSHMJh-+h3@^ z#Q~r;^{tgFwh)PgS5TSrsK%5umqHLfTv3&Z7B>4yK{8{D1S1y>;Dap|h`#O8@Ic80 zE>C4!sEkeHmjuUcmjcJ_H7q9J2yEu?E^aBd14n~Rn1jvWNIBrRL*L02d3lCUf^8rE z<(L@364@nSM8L{g&;=L4BVmT@kC&zYG#9Y>l#oOCskxD?SK(zPXfNSEG`tkmuIJp> zjL;iFyRmS##ljv;vc(rD3&%yaO&88$J>gpvkR@H#q)eF^{T}QQmuPBeraIt{zzKM?(fcWO(Bc@XWQLnrU ziaPvzktQz7DXQRq!>U5IP!VU-w^$BR(k^b6wt!FDAcqSO!g=NdG4x{R#Eem+Hs#GU zc<~fh!RKLAHW86|Os*Fn3q&95KL5p>JX%=eIbZRH`EyM!v$w{4{6K9xuOP0lZBU7Q z`2P1|XphU4GlQCpW~u&si^_3+_CBBT*F9LO8Tf!-e-%(VnYjYYen_MVn4PfS2^s@I z3?vc4)d{0FW*$iyF7$;45>K$`fb7PiL5TgnKrarD&dXx8q55JG^1Kz%tAQfLf+h6z zAfK?@PQW24Z1L)a0HFK3B)ZJV)Uzw}4Va?1{JKS8gqm;R7!Oc|*SSamt8KP=)m2Gk}a}|xr)3KO> zyFr$H5kNL(7uCrfc!jhUdPI8n35nd@%r3e$*tN{#a1Kn-rV(LvAsZOzB}b}dNWhG@ zI_|---H+FUp~kD_>Z+)&FxYL0?_;KP$%NsV{b(G`zhY^=+iAD*EG3#1=3$v12L%ab z@255pqQEpNtCt2Njh`PWCE^w&uc5`iIi^_S@E87Y?3O(53)2@IMy2gCVqiY@90=C5_ z4uaa=p(TxG$vdP^SlvVW@=#Uy3cG)6b$=xWKt7hOSq8vhF4SmP=<56yM^W-&0|nbU zYEW3hr^|Qm(|5b7?-u;Kf>q9ebYj&qZu!6f-Ey&4AH7GQ+gpK79|5|EwufU1S$2>?slpA$=K2A0A$9dn_g%g7>skRPJN z3x1%0$U}+ql> z)19gUWD1yT>+QO1Ss1t{V&D;n2Ok|N2zNPN-XX9pRv4&{0Nb_hQKi@gSKzc2r&_96 zG-}QYnt(|?X%LaB%R3z=OX~8j*yWp4@b}#ohzFqZwyWsc#&32QOO&wkchPA(}iW{Bqmtp5K_tUHvFgk6w z*l8YH^Fnb1io7y2NQCI>xN{Vtrjp|x0`NjV`3`&4%lP4;cxa>!z zxGTHqe`*ArnE#2MM*ow!qR6wex&LWlz5fYX_&WSgrdMt1f0B1fT#ha78~sm+J;DF< zE4_3+`kpwpFu0zeZ^$cbH6Q-YgBBLSZBQO$uj0n_2eKq9__^DZl#SE!n8O3?(wKRs z!&3kW!PD6(DKv7!hIm$MNnzf@|KN?ON=yK%g2Pj!TeOSLF^qBw0+)Z!Hw)NdIbe+> za2neX;*i=&T0{^MIV+9Zdc)UZ^-*V>ImT<#O_cV_G#f;KI%*N0Aoy4GZ=Y-1=Q9R+liudVjj*GWw^k`Uq`bzPqQR3Q%Wum@8JO!1W+QhK~*XtJG_@{_K$@#_-4k9Kqof0D2Nm z_Q7v#hjm}Bpn&=aNo)P-v**^<1rkDS8|N={6kPtz{A8gsPszuXof?BF8PXz?c^Dvf zg%)YKhIOXN$q^)WlM>!-Cv zh2vZqHq$)KiyuNXP{3+0J}9V(1q*Cfg-28RGbT?M=~NUNEib-NRQdLyVDU7}{@3QR ztq-(f^0ybKx$s3j7-usln2w-=s_=}gU^>+#yQw4*f@VVrs>~@cW{eyM$f1DHguM!d zyN4M$iN0U)dEg7JEkn26V#ZBDCFW5FnxCt-|cmIMA8@p{;i zX#)aT#p}&z!r^=tuSc+uz@&T{Azn}Gk`dJ1WPb`YcSNfKLvt5I@W{&@eFLB01Ja1q zw}nHaE+T-QGxml{r#i_IXbebg)`(p1YjG1ai?Qupr0VI4YIXrnJPS{KB!<}|vXya* zW+YHRh-Ml42F`*a#iVqB%8YFQaMqw>c>MrFp?1CLpyDh9VT;Pn8I`R$OUFL~WPz z51OgA9&9ZZV9;&j-#uVOrfxW#M!l_U-2#`=p_yiDw1uLzZ1go8zNnUMEA?12!DK0) z&Dak9HO5kHAn0=7%H#$D3!XD^qws@&FFAOw2hgSj&naDm(4r2W+ZuxB3?JZ4#)Uy4 zW_cEt;Ko83T;o+VCCa!Op7{^(3x_Ul5u%9+J6y03>9obJWAm&Vg+SfAwfjdYSD<9W z659lZ3*0Mmi!cw6uRi~P)8m~=nq&_}znrU$Ck|T->mVMssFg6T4_n;n{0hgwWj|~& z(A5wQ2Za^(G3?6}80V`LB$Ry|gfJDtW$ps2x>N`uByhA0db7e(6T7vTp&!hnR0vZu z6xPU^mnf;gFqN24ArPlTZfA@)w#6HDva{&iI^M{bJvy2SD()!3h|I>~B9S}lJnkxH zeFm~F?g$|lcZ8tQY4rGM z$cphB)`N*=`cla4wAlEvJ!(i-RBex95ND8cU=RQY5k_k(5$A@P);#);wuFe}R=LhcqPLhkT&T7uR~*s*B5dbZ}(Z#>}cTNYcd2|Q20-BfNZ)bQOxY;{do zadL0ju0>Ke%z?*JMdZ8^&7vR;|Kgoe22Uu2K^J$; z=SeFyM8y23j)wf0l!wsXd3}Bx{K*1M;9pj!1>mb*&`K0jD~Cvqlv|Q4G6uHaS~rb(vcqtqpEoo%O;!$8gzv~J zEYx}!7J@lfP2pEGhFLp^^uBnX>4ii5E1&5^h`;$v3Dchp@t+U+Z|yTB=_op4cs}Vf z<*|kM&(~7Q(8-qM$J%EqgM~uX&l}>eE#l@#1BbMQhj1G*3Y<_>rOgJCVu zn?(B?jTbr+>ThNzsfg4Ej}7}KE!ffVORi1CnF=X21$J|rku-@8IG2wKd2JiOl(VE4 z%6CYTnK#kT1WP+hnxTNxm-j4blVpw}s|mai^8y!&JDt)0MH?}uNrZXb`yZ>7+OL;_ zEvGxFTIt?^2kuV0Sq_xk#yK<#9n5xsD1duJyaiau8A{r(kn^0xYhgi4$C7E_u7VVj zQgxhYh*uAPQ43YJl?B`5$X>@|lra+l8Uk`Fl9O#hzQL4#R?0woAqP4D0tPQKvZiS7 z)*)p8mrct^1;0KzMi%8LU-~XoSugbh%7Ms~F9(r~E-UWFDNOiKWtSy)X|o=^4-ytd z{WxodP*{RW<9p6^wH#U$7Y|crnA)H!x;lLa0-?ogVaEfl1n#|2>>^0#a+x0PTGuak zkW3o*eLb11CBh$VyT1ECR1$9`OU`x}EZ7p%k~G20Y`Z3yNe44B*Q-iQ2xiDZ63k{z zFbhVD+2hiZB_bFiy3qotY!uA2x0s_Qnu3{aCT#32fI`f`$M|WH9$JZTjArzrZI_lV zw3#sMEx0JbY?@V~p3o4_0|JQ=ObBKQI1nmU`ON#D7^GEthN*iBqPPS742B`?@u*A^ zn1?RfB(Vzo5s2R$lZ2>!B}-q-7Q!hT2Tiz@TIPlbO91xHV7QR=Oak@>tAx|$V3j~W zCYl1mW!#<31F}b;7X(`bDjBpEv>yIxG+|ef{yKWV%?_?XhJAWLDVV z0$8ccEf#Vg@*Bw1Fk71%ObM+`4YlShGq)MBCrk}?VsXD1M1!tt&M`d4g3(Oxc2h$P z&yhibxFF$~f}Y@k{51~$ZI~KRJ_=*ErZT9!G4W}p2H**S2I-XKegT~dJGQJ{=(^I6 z;MhZ;I)D&#b)rnndN|LO2P$nb%OPA|Nmi7v9sJPdc{m!|?6YF1>ut8|Wtgu_+_UAv zIurNy`Z#1lTM=KPEx|Sl8AK*G;!T*iwGnR{e^YD;>JFW0n7FCiq#L9aabS3(%w%w5 zIR-3RXhyj$c_URzK{r_ZPC*^9?Lgj)uXSNz;0k_t5qWm8%Ji)~I1C#G$>JqUG+4jQ z;6-(&Wyx4Tk5s*}nqVhz)gP7-Oayi>6x9)74GNF&>Q>eXS041N_5{|-qiub=jN9ec zxz5jL<(}XSsjKX6&JHTOnX}h(1~~0T&fo@ZUl_sbX9jJgK-+Z|4cb6Iat5*@3h^Kb zuCfQtfWcA=NOsE&Dm(N%c>Pjm`QrSW>^hsKve%p;z#l@!^f_m+J&deh8V@S5ZA=bc zzhC?>XO+NbV23gIfeaVF?VJUNa(s9~Ip*1=tH;JSqIwJoovI!$iaa38UDVcdtUhr+ z+Jq?^-EO@pyVo>jqeigal?6ivZ1i4j4|vnnL6LTzS5WAfowBG z`yx1p2l|SLeAu@~EYFd*#kZ-Cw@X_1-jl`lTj#K+tB9ZGxxH+k8t*g#LdPp)l`F&Y z=^i1UfK29`zz#t70^yw#wh=H_;XR&rU}uvRldBmh@5INTWr_%<07B;K+K_l)IlDo% zy=yL6Az>#`%XZpq}!Bs{!N(b6L>!5vQ zj{CYrv#Zh2<7TL{Io}@|ax|nNmqd^n0I?lPWW6PXaQOd3ygAJ20^Yq9Dq6$;B-8Bv zr%sP{)3g0WVUO>As5tNxhu)0}9v<)w1E|;#P7|xnnQ>(_0vb0+Zxj-S>4LA_M&L;Jd0JSi8X4^JJ`>b(>TJZG|PQ zmVEd%AM!QH)kW*-Q`_RgaptbVN^dYcla2>_2N!~uuqOf8*{+zePTqL61z(}&j+9@G> zitX=GWIfZ**k;R2G=$ivLH`%JLiAMADdM)a^49e_X&IehgqAI6R{UNZV& zZ7(&<1%QlYLh*3BCb`V6;yYV;N|j*?L7=D8~aH9RO9 z#eYi(_axR9B;Hai-7fo(u=+_N~j(_wr#K8@~4GqJoiK8+4aNi^Y^|7cgYp!K%mPz9>iHEHpV z^q}Ab9$f)S_RMGp@7q!A17LK5?z*;efVIr})~4U&}ZX5$qNFZ%lUU_dv-pH}urv;rG}Bj=+fz>_nD{DmHOtk)$yL<%42lb zDx||o|9e9P!W)XKRP3E9cGdb~N1;W)fNg6Bi+x60_c05DE6ruTd+KYVAb{MKrsDxr1gGkjQk{3^z18Tu6p} zFL#dTzH|LjMlbb66ne3^T6z2f!U`DUUi5>BFx6JB!+_l7K8fZ?nHmTZc~u(CYxrsn z#_#ab8Kv20_#F~X0=%zf5H1K!NWBgPofuxR`XFb3@Jb*MC74}Y+V{+hkU8Wrz*pU-{|@xbP@Kmf9x z<>$jBiz5niCUjEbDB*{ekU<$Gr#W-igqh=*udS}Y@YPKr-PD%i2%U^yN=IzWVpt5C zMaz8Q`1?-H{T-BSC@qd1uXFk&-o@z?;0*$oJbletuAvs&OZ`S_kz)oOOv~^u__VdP zZmMas120VXLJ5kC8w0ruEWoEqYEkLeX+3Sj4b!#`_<=5@Hf=@El!~pVIpT+StifAe z7j6;>R{>h$by|u79ak69fI)f^WZP@!C-ozxb8aYHd(6YwGcm?unhsN3>!2b*#rGT7 za_67sh&2uF>5Sl#iDnb;L|4R4wz4TLV0-keq&*OL zSMe4U>k$4oTkMhSy$5WDg2^3+bfS{u9zwxVDF>(YZS+rs%ZVLC)Q0)7DpBl2fPtW+ zD<8%TxJz20dzp7B{Ew~l@-pwl4nxjPQyI;I!2m_bgUJ!@%VC-tG^Lcxl%T(*;6Wgk zdyjm}bXgvR9>jdNE)%5NU38O5urbQFyvq$P{7{1h{q3rP{!qrvgMcd%$8F9!UL@xT z%m``T1vp4I2Ue(Fg8hR5$@ceShgCc|fq4QHnZ=u=9V?5Q8ae7kybjex-0n_sJ3;vE z*cCA^dOQ1dYr}S_B~MZgU68>o6hphQOA{vEFzFCO4Mu<_34gl{ooy$$TJg9lL{UB$ z!eIMTo{eFNz)rwDpXzNjuj> zrU*|zAOi$=%v;h)+{&B|WhLlg&_@Du0}tkaq{!*IO~vuDds17LirJCE4;*;K%<9-v zl&Z|4VUcu=n2miN6f6* z+hMT>@8u$Y+iF9^p4!ku;7vh~fr>JD^ckA@bY~{Q#}$YmjqxxMSl~#;kQ982l{I4q zPK*xGnsi^n!&r38hKxRB$ybcH)+dL{5beHLr35_P9N}Un3Hv6*~(!#`%CkzT_2#n26w7;5>$}}`n z{&u1%@nZzcHnc^yArt3{{Wc|AHrR#`vYC?be9|_wOooyD{B5bHWI3#M^~$hXC!={5 zjCn&p%xyMB5R92s5aq?hr^p>q&7l_A{ER2DNK%sZgd`Tq5)6g{Y8XD01Ivk zJvMAs(ukfy!IpReC7Izh*k~ia z1hcF@f=IG@sr?Y1CyAR7L7BiHce=xbeV89e-g4{|Ju_uS*2CdzrqYjZo?~~T`f(J) z4=}$;))@>xll{0!Dsv-|g!SXw12}c^4k5;Y3Nb(u`8;H213#{XT3O@|D7DXBX-NvN z!!;{9oQ>G^L_ut22Eax}knh$~W8{-Iz#B!04MaCKYTk3cn%|)oww2+i-*7ww50Kg- z3j8@M;U}G$5$}5jLTt@MW1U{ssTSlgzRk$!7qZpNVA!uAceF9S?dKccP1gDEt_D+1 z1>8ynxRpl5=LOt<;ehiqcm=n2T1$4MoI&YkySKyU?EV&6getQ3W`Jvtz%{uVh%#U@ z%~W-rQ)fAjnLG@zlIDCGz3VPuuJ8^t~(67T)PJ^t#0|uWI`H8sOh`KJb6PcZ2g!V>jMqp!?VL11CX#@U}twFIWjbAKM=M07?Q* zCe)roIHe^%FS3I>>|4C7AfHZjHnH(cL@L%Xa~7%CTW2|%7U(#uF=1*T{t}h4GBs>S zR-#OMhuzfRdrB%(!(_4&YLlr!->bw#*y7~~Xg4!U+-Yb=2jt|5Wcl>ej1ICFxEkgg zC+Q5KZywNYVT)Z<=%E`O>V5b~;2~^rwn(OKvlnQ2h00t9v@68}&rq37_qJ{J;Ip0~ zSW2OmVLq`95Mb@BWho_)$4|FGI&16HTp-t$*$6|CS&NxYxo<}vtz(8;4B}Pvh$2ZW zdc*@_6qB^FOf5udM*EYR7}?D(RlTzqokc~J$+=(bF|o_PN5|tn?lSYu!`9?BULZ(>HU!%__kx^LPj45oM95A_&k;4}kPk^{18Mk~7BU6FtLN-wr?X?oB z_%-RR>FGME?P7R7%}=SKybKXqY>iS-8c~RzUiv1&-nly}qlkUuhB+v!Oz#+7X$*c~ z(i;U7iUy7!;)AWiP^?RA1YoyEJP}BidY+0r5eaFDT9w~K3ZCn_TQ0lvjxZ>mpJ#Gzb2pFB-yH|D=x{4Lh@ zrrp8b6t@wwj~2hNjDb5sbXOL#0Sn865IQl6Vg>! z?$o(xtzgRo0X%UtA@OGe+a5uZp<^&8GY+W;NX^t!GH6%inpKs{S_#_aP%N57N-aT; zZy-8Ic~hAmR_rbh@L^VL$JzE`UJGkHUmt{6uTa_4wOAFO8k`~uItV^560b+^8R{jG zN6rpl0$bD(BmHJAHg;Gu0b8cV4sCze#3l^Ta*9{$e4@=|+=OvM!@WjFrUY(@VR`Hj zz&qc$LKqiCYIKmG_U}|F+aR%o(^y6ZZE}%-WYeG(R291HqSD5L1n1X@O6DE$bA>px zRjcwmq7wUah)UYS0hVkcDv7{Lz)#E+Dp5(-K~g~I4m&*lL6*0X64D2t zED4^baVj>GmJg>VMj2nFdYX*$QAsi71-j@1hfC2e|Rjogm3iAjyP^lFn+tjo|0#$qXBa&elfiLcHm-bX~T6E8n9f~w& zgK;}lOpvZJLdghe;pO$WEY#sYP^7#8MxEC{hQFw~ZJg1q(PI3oBOOgINU(3pSYH1a zNi67X4JUmL=Nt)QZ2e0?&Uq^uOyW_Atr`~82CL?F$kW|nWsK+`?cHF8U(%K9nnL~oXtBDO?Lhh!2N%J)f&BZddzL70gy>qw& z0&QCJO?&25(Inek2s+q;f5N8FnnwTePlaslFadfJCm?~MGi-Sg;kw$p7V!0%ECpZJ z&jI`SQthNL5CN>j}%A7@Ufhg>tU{A;>;ZX8VY29QRpmr zW(274U@#`hqr1|E)NSRAQsi;Qva&uHo^_*daNCqmubo><%D3?G65F`!=0*KG3|ZJd zbbG#qWw0yu>_v9pg|0z;@^VOcWRO%?j^(4udMLV=l^;u2S6X6}nG$LsG9Vcc{dZk< zKTovMe^=w-np_<5o0pSVuzZQ94?pzmn%BlA#r$r{a`!&<9%20Y{7%2RNe30DS0{HM zo@eD_>8fqv(?5vT!m;63Pg_gN*(cIbNBHJYe9R!!8Fg*N`Sb9Wk2&h`mT?PwDO2+q z=uN4mf+XJBI|gBJ#+!$~#UtHy%Nh1B0T$){$@%TsfhW?@K|ycxK4g0`PXViCwq{#$ zF|O{mJ;CN3Zn<~3RmwYTCz_LXBPQhc zn*<10rCFS^443R8h41~Yb`xm-lZ{2w%ve~E)i805YHj`592X%aH)DG+T)a;sl-dx` zW{LUr7&*tBZ!|DRdLGbrtYMR&yT|QASQ!Ywx8{2YSoh7wx12>$f4jxMOy|!cKR=LQY4E+;e4>|>=-*F5g|JbK}jk|^Y@QQ9;&PtB zUw>Rom!Y!Gi&of%XRk*nwOo8mEMD91x|X?Cy%Awxk%VoSbOz1mIx3`=Bht02Zt4Wx zox;AkVyjMZ+79u8-EU=WXx}30{n7~t)@T<+tXM97VXjq_bDzzYpX$f+yKFEUNr8nr z#0e$)tv0g7Z%^1aEjDip5F3$!6{kTuGH_^A^V|FU+xo*MCTQPd^&y*L`Oqf2g}lrc zL9erLBkzke5?gpvdau~-;&*#jG|NExT|jy#2kjCPWwNVe zcQ^f6v;S?9q=Ke9Ew`jBY zgVE-_PMh}{Z3ceWT8eIr-08Da>tks2jeqUg7{Y1FN;V13+FPYp96)a|+tg}%m5m`2 zur)KH;p`dtG)P)5c05I&P;{hf*?Zl>tPt|FU}ZSr(d5UM>~=Tgbx@ z&|# zk#_O8o~;I_T}|_bL7Ct*;1`}xnm6`?KU?|RRl{k2CD-Vfj#I!1>T4feGf3E#Gr)F3NfZyZ-Bl&qUJ?^OQ)~fLetg6p z39wjXzjZ zDiktjA@_vGiS$A6W?6c6?olIV6%=&?3B|OPk&0NDfW3@`iXF@{^|CJRhuQAb3L`BY zv~{P#Rtd(&RRAMbfwk1up9JeQrHK|h*K@Jyn-SBDK~p&u;EJ>j@z9YVz!p1A6GxIO zc7!X-otd&P{{Ilu_jUEC$2QWVG}y_;2cB9P1fgZzqECn|H;oFBTcPF1#Fnv<)uMH? zl2pqa{($xPehj15agqs;efK!s>Fxz1M~yrZ84{INn^Fld>`_C08CCMj@<=Uczz(Yo z^2>;H?}57(BS8)qQ=mIWfk#2I5ep75Ben3PXcIFG7)WKL;R4adGYiZWBQ140>O2qA zB=cZUt3?~aP#Ihtfr2^5CbLZPCJ%f&5F{KDe2=7*AzY0PLdmZviqVxh(50hS$_%tW zW_#N2N{XH)qpPgIe!-iKg-DKv!W3NG3}DDz10#b33G=UKU^(_57%o>cuxJfTnStf( z;j~!3eQqIwf7!vm+ywvfdBK0MO75@;=$9`HdSsPuQFVPe8;%ZHha%`Lwo_h8m^C{f zO}G^3-wMdL7gvpTILKphfR9CgX1o}IzZifoJHIyYQGos1r)(p3%aS(m1Xb>0&|ms@ z4SX=E2L4h5_)8V=XJS@}_2_TF*Vgd}{3QqeQWN+~Zw&ZE6kY)Dfqd0(fyZ-K6bf(- z5MRWD1Bcm)-C{%l5ma!W@^EoAC$RAmeiV)`VBPu&+=_zc4ft>$Gz4}VL=ZdIj;D89 z7`BOOFx*-MvFw)|y%$e^@N?~U25?yBIQx2+i6G(mWcJHlP+gsCx3d;OLi|1yL0$-n zAV|K5AS5v)9=#X@H9E)+5=|B*VRwVuMFO$}GVJ3#l(oDI&%FyF*#ip9+F(O5LIh4!lbA=XEPPd2?RstNRan6l) z<9SDP+7|yHduqrVhU`e}hYloE1+&*B7WBW!cdir8JC;ciLy6lX(E<;$P8cCgw&b^g z1G+0bGr{0K$Q?%8bu!r#Keth>ni>+gNp#L8y4%z$HW3RS^Dcbk+1mODfR-jiA7OHL{^d6v8LRyq;ea+O8sIl$at1vCZ5Ll&7k2WpdE=V&6JB2r+-ZcBbsm6z(Vv zVVcNDBw}G9+l#l}%39toB%FnRfLDDZ!K?<_jyk6=WNqg)46uc~RRx+lXSI-J^8mlu zHW=-Jwvhek({J@cCbu06dH>BEzQ96m7gx!Wk3%i2=Xsdu-~=`kR`ymPamX}K$-e|B z*^>4nB9yBU)y0Oq$HdnOHM>=IHDuo)V`}zpso5<97svRqbayvd8TH&f+G$HVJfBpv zMY;Fzx4Wj@m3YgvXbd=bGnqBCq@{Q37HWPU)EWyK?k_D{sI`!7_81G;mZXTe1qo3~ z%a(Q5DdzQ0SbXzZe2`8DiPkL85-LD#v<5FjCf97Lisfr*LdCl9f@ignSSaC#E=ut@ zq`C3cc1Wx3kOKhGoC4=xZ37kAY_%P_bq)e4tz$V{*=idUht{n&k!8AbWgwCmnj{S% z>atO}76pv#8f}|uQAf=cI(6$6^k!Prq2H6N5c|$-Eee2Kte`831Meb()0o66o}lc? ztCQU~CbA2FNQ}p`NM2FAMFiyv5tKP}fGeddUbz`vaa&e{uE2~o(3Q%TH9=QuTb3`f zNxJgp+p?UljK$SXh)s5^fdPv8_fDMTkUs(N4|+KkqiCZ}QT>#RyOAZDItQr=z^&Cuc>PQ;QKUFGiX( zAx7+i=IG?C2F;24J!#m)2sYDHG$)D?V2{KIL|YRhwEBj@J7z?4w^Jgs{0wA@s%=Ze zrn&IYDhe5Kktl*G%78E*)(}aWwT9@OD3)7=EDi@#)j-vSqf;er46aKos%tm)D;GBw zg1E6@;zp}{@Iz}Hom%Fn%EgoA@cksoQsCP>!Ul#jizXh*0x4T#uqToJmeBQ61hK;% z3ztN$CZH1@Dy2x zG~2v2NfCO`EL4mpi1fH7(qj?nu@mXhMG)!q0@k5%WgQw#T8GB#=(I3w{MOH9{XQ;~s5E-_v61Qn5cV2-~=y5>Oyy{O1hh^45A$Ok_h z^n$CvB$%j-$WR}|mx`hg`(<8rMc_C+X<=fHSBuqEw37=L{jJV@oMIhEtve1>I+aP8 z9=S=3vmP;+z|w5a?Zg<{Dr8~l00^FEZ*ou?WXD>p6ClifnnFaDF#+H(d>0F14%?%< zw4#4nZQPjba+51H#V5v=xIHV8*6ymthvy%js6&7>s43&wi3`vhY>lBOWL z?8T01d*@aayF-g<>pEr8c7oFAZ3>cfZ=!iJG2&JdN%?6%;$)ka;xjr+f!}A-h-Kxk zr>n!?i;*YgXU#FJ$;!$X?Ai;mI`rKWW^`sInM8O3Qhs-}{HxlDkd;rmPq}+Md{HRE zsn}+rlyct40@NZm&?d}aDvO}nX%2=LO_Q9Ee$QL-wWiK_nMz)K>u-8VpPN%QYY06N z{><0?)iiU^O+C%BfcqR{e`XC%%<=myD5f#RwO#T14pJ&8D_Nq7}c1xuGt{H=*I5R@o ze%C^a(nI->Ko5Rqq(*G^XCZ-{MU*NB0=!rwCX;9~>IB2KqRvE#*fiqtJ+r**5xY;; zPDM-p@V#TU>}mm$GXUy^yzluqA(tGr7@}z)FjeJ%W?iK?F{sokrqvFCL;AU-1|U*Z z18i_6&}n@mYQP&(W|d2+oNWpg51icuQz!c~dkJ8|MHfY10$p#Uqm_-4bGCrw>{&@A z;We)|+GK4r0Y+S8Y#=rl^m(cS@#y))t^rJ@NKwd2wE`c4bFpucRh2&VLp}@dgv8Y` zG+Uh*5V|yHCjQWgz61-lfFoGc)22>@X;XRc#6-SNi%3^T>P`e+tW9_GXlTwOrH2@Q zt?{ksgiOvzhMC;SbF$6B_dy?%#)-B?8ZYlJ<~fcIu~}#(n;$*lO){f>A_QwrAQKT5 zud6DyJ55w2-X<#gI(h|4H>(npWJkRPgyJ&xgIE>iL};WB5QjsyJj(kXYOYWUZ6NM_gB+X{n<7E1H(- zKp+;e$eIjN6_pZGULKodLI8B&T62M<@$PUj7fBk^oGVIe2z6N#lICYsU9YZ7EG;xb zU~ntEpw}9it4ts>F+ z;RpsGau4~0e_Zd?a+$BB_h0Wd7xrR?A8<&R*ocb-q27`1FJJo1xwWL+%DermBl12tlr+N55Y`;_kP@UHM=h`ovi;XdmT=&rrXf z8tWq*wh<+)&88KHX13ug1wX?P$C;GplE^vLSB`f-lvqFIy}$?5s&45cJL;-i`p41o z@s{vl`>fF{<5oZ<{}5=dY1gq*+*?{ozh7pIJn_v*RszSp9VToy@`hL6;#X!rQm6px=L(6WCnltILT^G;)nyQJc1-@_#3k$pmFhpuQ_>r)lK7P0+3hZDNGB z>x9;7h_o5th}5zyMQUNKBDIh?I{{6E{GD)0j}A#DXsp$8t|GHtaJ@kqMP|VdqynJq z%0ZMIp_PYg$q_(!kB!zo=(ILGGJ;#hv{zb6=*~>ltrsJ`EfXj%V(9Q?iG)eNTy9)H z2$bUsI>zc5{wFW?2Z!6f?PkjdT2bVDp4hKeb16C{oAz&!Le)5r4w0@Cr5~L$*f=4G{ecQTVi)Igo1F$tpvPFBfd@tk%nj?mVf=p)>fZe4+3nUvk zaTE`n^)4wU9-=}$ATr56hmQ%Avb!JTYkmrdg8a{F)hh{c2CeVPmc~7ua?m?%Iq0nT z;s{+`mAVUG0&1!N_Y|x2@W)g)Ygo?^3zUb{+Wh_4Ci^hd<`L@<9)u}vlAV|~5h*FR zti~pqbAC`aWul+DmyQH$#Xixjq04pI2`)*2^a&}VYfqfhE`rCn=I*f;0Tg$YM`|jH zv0~-O_1UvBTCnKO>6f_GjB>Ye@fx7#F}+{OuFqaUoi9KBq}BMcRC_zj@Ve}4dd?og z@|lNtr>E`J;U5Z_?4$)9Q$x= z(Qz-hXeG6@OTxvhmR2@vRQc;9G(B5Go1)x@r<3B<@S zirwDC9&chV5CmuFh|^cLhjLf#O!1clP61N^`x&Cu6tpRAq5agEm8ZV(Z(e%g%-5gz zZ1RCKD>IKY@5h5PD~peeXD133JX}|d>a5^W^W$Q8rdWE!X0?2pHaR5oLiG?-VD$_q z>RC8b3`0E{CTK(S=!L36zq6_qCaRi0Q!F&9l9^Fz1uL*!0q?a*;C+qT0J(=*BBA`J zxNJc9X}xjqzRFOQ>1_x9buIv2Mge$xlVjoGI`DE9X{GY>aCxnUYMgN+C=hWWF(tVkz5{F?hS2D;>F$?FCM2&vOQm@?-#7+F{@|S z8?NW$R?p50)pH?OvS#Kc>)5!Au|6A~%}&fm?@Tevd^|2j0``kZmH*6^i>;hz>Xq{x ztHAkC`RiOh{=swNYFb{Ouh+-#*rk2?0-u@|&HBsUk^HV$3l@VH^-D|76AFf|ke&Ov zXV((#22f2 z`gkhd$9iuRznThFyRmLW;%DH!_A%nVWD_w|KLtbV%ibXQV=50UE(qKH#`vqgu-(nh z@Zhhvjc3JRjcd-HwSfSJUuMfQ@~K(LU>g|s#879b_XOJrJK8Gje3mBS(O%DFlE6`3 z{#YP#Kvd6OHL&rX9*BFEO4QYsj}sU^lg(jodp@a!4&1BdbD181QBi6$TYF>ckDR~taxwJ0t;0MKUWIsVCUfPZhzn11f~0PB9Q2{&Z>lOOmu+0? z(nf#M>Q2xOLM0esdZausg+6i7gwi_ZMLM;O4Ac{ZkiD22$3Eedgqq=>2qKaZzt$d+ zp|&H47t*tsyWtmX>mm=M;h@8WIp^+#9|7VpB_h*C3X!*^vqHT(fq98{2*tkEs8)N_ z)+EMDzF_0?i7`+}9DP6&x@kx-GzKEk8oa_h zYCd0XV?9qs(lT1*r--`}yxB0O1Wf{u@Y}xp+4$wl?fE>-v#P-QCaPl&8cpQWnlP1R z(X17?)j4Ug}%F9W_|a=%EAk!S)lLsI<=lFVe-DZ@8PgAhcO)*iIi$p z+AvV=Gz`;aUd8~2f;={A$Rwce2J-0mEVOfaU{^*Dvc%vl>@>>A56JaNbN(nXf=DUq zqmlrlrkmTCC4Y<|W0*I+87lH}yRxhL`km%@1U!<0FQNLI=g@pal+dT>6yiPWz_)*C zZ}@`XUVFvl(D!W3KDBBOkTb~N`}hdj|cG9xon;PvaQZd>2st~ zF6h)Q_E!0^j-?qQoQJI$$QJs2wBvnZ+CI@~^t^ncqYm3(%TL<%MCZTOcJ@P3mC*T4 z?0jICMW^aN+Cg-U^Y{KnY!UmIX^95#$EE1u5DT3-JJB%w)^E(wfrLW{{YME zQ1T@SqT=`FTHwJe^#gJ9L&;0^1G&ZyC7-V!aQ8yI^EJfsJPUn)71s{)EetZ73oag6 zNyG<+FIkT*tqc-uvW4PnbYQdL$T)=fRZR9?GSs2u*JI>G}b$KNat) z&OWZzFW6a%NAS{5Bo+sIslLGw8s;cLR-(zFiyH|eWw9x^@tt<_I2QfSpe%A+(Mt{yQ^*xEz(ULTSsaeYx&vJ^rrky zzLZq+{6o6?*PaB<@z7!$EkE; z83l`%BWlI}II&qjq^2wNWVcl3{^v>_de7S+_agM61+ z;y#bDFv6GU+|e0|dtbg+U13yok)ATZ$v)X9b)RrwO!f(Coy(euNCS7oCT@VU-eE0Y zDNw)FmPMPPXc-`Sw1Sw{NSS32L)uI-ge^`;Ib}QSb^HOL2IN3%l{QSpNh%|nx;krn zQ$yZ8j%HEd){vGwZ%;SON(cmrRm(R*FR&I6P%=@i(w3=O(q5*BpkCh+KZO11bOOEP zV}{8EbFUeof(U+jDGly3KpyW}2epbV2niEnpl#hQu83z{vnx=uN~x`6zL4>B&p)8n z1aSF4y+JgSLoHxw(!bdfah2O6#YNQHUaw_3@`BsssT1d4h7t>*mkb~bv3uV1|9P6W z$R(ve^vLXS`Gw^sr6$Wr;{8p_$3#cad!QWt9E`}Q>dDi5pm2IB(`)`>EvcT7LBZ;D zW4fS5o+^QC%pfCI0r|O89-tUm0E!3JZ3CBsiJS=)p<*jTy#67;@D{Dlq^$kl1#L@7 zOG&^N`X@nT5iL{lo>rO*p!As|eq^5EA=LciKhH3SKXZoaco4nT{UVIv4 z&d(-kmbcp7PB)r#7?0#d28gOT&d!dZBsyrEf||tEy##pj46#vXt#^l?5Iyn~S`sCA z_0eq#tKqX#+dL zJ=>Duko7Yhw%VQU%xteem|viqA-Y(WAOb7o{&I?*GISc8Gz4WjMK^=X4FSfw?(n7i zZqtDv<<*F)%~?J501s;jNQ#yta$-bQrBzZj>r;}>&8X6iEmjEvd$IX(ibSx)#vA4? zyGcVIcmhF@Jck=a(J@>8b}@{cx+OH6ci42H1+Ry1z;5W!h8_uzRZojJlvgcwpsL+u zW*hkV04rmR6e>uG4xvg^UCAB_F5+L2&Uf3Qgzc6coFaIdD%yF#W?nZp_0 z@LvkYG&ReTSTdzf(OiSmEgy% zkHPxfc$wQA2lUQLIUBN@?36LS;ncd}zY$=3kaq7#M;Y!G*W;o;URwWHWed~vLQjUj zW#Cq~Y+4+2+}W&|-eo1BXmv>^nQ;Jd-9gAAE~)hfwe57)QQOa`(Ftn%*~XI%)K*fD z-6&lTjXT3ouaj`%X%hU-`DR}dGd3=^d;ofmEU>k z$G`Mjul(Cjzmkk*RzCT^|K87k^tV3!)G zrS}vq!o$_6qI1vccP0rB^HWcKsOX;_u`8#{?g>R3198@1onM>+2^H0Sd9y~YFsb*QZH$oicp#CWsipGpMT`@XV1H5 ztZH6*f9VO8@D0Ler~HHbZV8@Q`K*LXVIyt*U+J0gU}f$@Tz==nrwfv@S(h0=(Wez5 zLD!(sRX@FV435sK2Xs<+5c?@`?GWS)E$k(ws2U{4kM|ym0+ud+K8zisb6#c|8X1aKXKJk98-s7d`UW+|r&IaU6aze26*KK3hQLBx@t5U1sQ~^3u@L zusu?D$~KHziijZ1lYWIOpn$SvgN80@5fS;u0z>S83yX1jCR+v|FWrD1(b+$*RcN)U zB>P$QO1htQX0#v$MeiZ8Y}SWO>z@!*sCSI#XoB9clKi<8y|hT48qcn@9{wKYfZq?T zyqZ45Q}xUY*5mBEc$0l6WwW;@ot5E-PV2Pil^Om^HAB-HF{(*=68qJjzjPEl$`9N@ zVuh&T0w-LY0z)hM*cZr@AE8JT7BPlslbY(OFMtSnN2IXLL9ugd#M)#xVjOd9J7*il z3qr85H_I3ON{45rMcLS(JY*WsO$VZL%4G)trDUTz(-GP;&|_M{m^A!jA%Z;#Mr^Pc zORghTjaD*dr?-sT4a{l-6T_(CtA1H=Wb=|Z& ztYuk?Ovbf7o*gvR+@OI|1BFFCEZA$Xb@5Djn*e>0AKN=de=YcrtM*eX&m|uqr#d9* zW|l3R4mxLjhmi$-N>XP&00>BC@G4UK+LI0pZi2hE68NErQo~WDl-UH5(L?jRQK@< z@06yKJ~N%=xoD%w`hp75@K+q#;qL2x_Y-(vqm|=%qSezHtl3RkbuT;R;H$JmMs;Vj zg6-l}46T!t9iJ7|Rdh*9xD0Rg6ZQg}OTuP=j7VB;+yLZKl*RFRm^;DWW<&A#?*wQe zg!>~80k=oX;gLl+`iDh$(R&HgWf5zuV^c z__sx@hM$l{Ea^X=vMVDj=H&a0qGm{zT8et=e_ADq^vP_cVek=F;^9k2nH-?JO> z_hsCT5NIEZH4@>-Vfh9Q;Z&0uMyY{i587#uBaFvbvzD}WJVIzx#@;e8 zAYzNX|7-2E6Ia$bR#x6zSsHcVR{D$kvD9JK5E;WZ?CWQZ*bRWU#fk01K@)y=uDv_tHW;y zA*ln<6{5nq8{MSGA+Mpp0pqYBy+O6B=hhKO8t*?C=U|9z!@KR`)F{3n1;8e>0X0WK zOKL}inOV=s^uQh6jbY*RP_ZW}9GEybV6p@J1I8e%66aMJxghL@D`m4c2BQLg;+y;w zhL^%ga8#p$a69&4?LPOb=hl+)ZRK-D2_E#tTQQs_E2gh;^#5CC2SW(T>Np!&%KJ|i z8Cxn0YWE@6G1vfkj56Z6mK6{|OvYfajk!eWL+V%s5tSxGtQi-5@MY*5CERTv(^|8S z$`3wxdgg?X-#%0-CsugTdB09Mc|WmT-~9TY{?*l!Y)CQpmR_*W{{7thi+jp7YPj#D zRu=GKv9$p_Vkb>;p`YPnK7Izpo$N;Z97mgkxv!2g##9X;^rGs1ihknVUuC%}Ar#+s z2<6a7h1aY-O#!pQ1X?(M|6ivyw?$146qm-QNia;sDQG`(jY%-@BZ|!cS5_CFc&Z88 zXlF8Gr>gynPW1y2d0!qe!Su-Iylej>bRJk_PVG#VTVf{cG;}U=ET6)io z3E4Th8{AvIs5{s`cb$8y*K-hkZ6E@2G=tM40!+#uy$p0w?}Uu%x0F1@5IR-l%nu|{ zX4ht$q*wD+&RLtVoFI$W-6HWEMYi5szB;vARj=bP*sP7ru3iQ#5-oKs%8wVRu!!y; z1vIco{SCcj4=7!&1P7HABGGN;(^mpWb!uV>MDR0t)S~5|(Wa=jq+mHnbFCyE1u-)| zLgdv;$yLOH`CcTI^Q}lD5U`qigu%6TIuiwqR}nC(W+}v&)HW!z<+MDQw5K(Fa7=d& z`!#+Yb_fbJOf)E4CjmuPTJh_$qx97+t@NJ9${NfDZt*o11XM9AUqOsD{*q}`zn3Qu z|0b;Ey39^?K|^4tR)I3i3wCdZ?Nk~AA~+2%>z~6^7k8*8Om$mNLHS-y^dVKk@!5HvA-5cHi97b3O55|xvuXHW)`E@4o91s@ zH*$rx+0Sa{x0^5>g1Ah`-Ahjb&_KvE4P)ZA;U-e4HD1Ae<_ zM@|G4#r2+xJ3mA$+7eL7GspJ_9fRRCQ*!9~i+` zy#Airkl1B?;IKdm)2T)pu@dY9>CIzFxD{+lyNflhdU%rY3`28aC^5Fe(A+W9mGWXR~XvTGd^()ZCPQ%P*FxI`jpLG3 z7sphv6d+LH&E|OdL%}s^d0D4q6boj13p0*oIV&%3g*H`!CSbf zg~vos!D2%wzLdwH#w5Y@&pzTn5beBh+m)X5KbWHvAy)J`+pbJTSy_y7{6 zN~{DKPL+@T)VVcxk@ruH!AG?j(cSTPDUv>mnmKk^->?U%R>5$I{qY zpJrPr(~~SipjW>1lN7Haj_720T0^OxXsG3vn}z;;is0n~WQa*wxbU8G`OQS|O(fYO z;@aD_HM5^2&yeuN-Ip-PhgZWt^O7TtE3Bk#FcA=d*LO44_vGNB-5 zNQdDY%pZEEFi2BekQ?Zq%s$3ZBv*M7tYjp-!=qy>UrDCgBl6QT4Fj=-AO|q*pd&bw z>X;+=J*eXO4-j+u$HyVtsk9_Ko9$wuY4BQ*aEE*bEuz{5Q^OY20WkqJ=DKJ~m z(h_GmqPW#uk)%V7yyyc2Gk7s&MUlZXAu4?4)(>OMHgqx~$=3T_c$a9A4>LMIMe|yt z=(0ChXOgQEQe!7_gh2oi14_KuaLt;tVl2bH1K9laD-R2aTcJ>lF6L|PdO=V@n`Fki zRB5%Hx40Soj?&LFQe%|8MCO8{2)FDplt?nPW^ko3lEJ>7$4d9`jm{2`43FSHG{9)*-%pe#AWdcZ_*Vg$!V9N$n> zvUF;}zU7OR*xc`b1l}9h>;`QeN=P4VU?byk&tPoFH!hZN~bP1ZZ<_m^Aq zF2tuyhc<#WO1X`iGfM26qB%!>XEV)NWE8J&$s!v5xRFtCQ50-X{(uyq5%Z(_0lnpC zX83nL4DvCOboh651@BMmDQrggi&o0M#T1It;+GMn<%)!90fV_yDiYEol`jj$WD}{- z`=H@w0cx6EOeuVXtO_bF_=OHu7P3Fc$f=lqpz_|;-6*eeAp{@L$A2^VL5Ylgm}D3C8Cvc7sZs82^k@x0M) z=X?z~h3udktgi%3cCxz?Q$sTdKQz;UD`Iwn6oTw#PbgzYR?DkMy*&I0p#$9){|v0O z)qk*yE5}zOgb>@gBymF+Mgwz6_sVa;TJ`FLs??ZL0s}i^ z%!mJzh67#Zl~UNYA-`tTkyg(uP+N#V9|9lF=6*%5O@cW`y6OS3_3THiVDtIkbOc!$=KH@P^{45exh?8O%#>n577 z7;5a|#>TB{Cgl-_<|DN3BQ2HW1_myG5DCdZCVp6~n=orM!aNvIN_xB=@@U;?WC{ziX$`Er{&1h5-w>94^in?fA1AQhnfw=#q zR!il{{;7$(pZ2>m=>*}gY_3lD%|6{b(EOLc|^ejUbcaKeG z6dwzzgl;4_2!HvpkMd1)kAx2Yt%)xF%*5T_zMLI?QjJ@<(8YK7)6EV)zmN`$r;^jx zr!h<>vqCJJq(@O=)|b(2e$hK*tZFk|7N$&qswNXc3ze0_UDHXCjnj!?&_pyV3jWDC zf#*3>i-lQs@E=x|9e0q!)ZS+vC7EriM`oshFbBdOj5xubW5N^m8%f}9uE8V8CYZ{o z7$}c3a5)3<(IX`4h>W;<4hlY_z9sZ*20}m1+1G85c%QSkyY(~U#v`@MWz{a%-flj% zU1u^>jHC_V!l2*_RLMOG9ZZT_)+X?@CtaSTaCWhrn{Lxo%oxC-BgRkm;*iq3j8u4LLljr#CTrg0)eV(N z@&Ztjlt4f6TWz77tj&r++1MZ`h6J!FX2Jl7Ui73n$wG4fN!|rkJ~ECcjHklGOsKJU zJ!CS%!z?_6c9j`+9EyTD?42xfh$umi+WK%#p6zofX&kWRo*WGd*-mx-9xeCF*APuO z5`~Rk6#@_g3^L1CKLg9iRa=NEmFK+d>Y$y@z4w^s{Uq<)Jvsed*i$;~J49*Zxs4Uh ztnxnt7->^jlyFmkMV@4Vk0BmsoFrAgxBTV@U+bRa(tcNom1~_ShxeL$y^u1hk2ExW zhed(^<)n=Ei<6RD0k$C00uZDH4#*+0(Jf!2G!gJ!0igi^GI|&Q+EV~9{ay4APx(#& znD$W<0ERIj78pavw45@VCz@@Vru3hp#XEabo;PADCrU45WB(J;9iN57)(q9P) zyc&tv5~Bu*ILc*h=%bln;=mIWwkO0#t;F<-k1(d|rLdXlefK?&^m;6Wtu`f}y z(EOQ0%Tpu3&2%oL;S@u8{)4};76x?_QNJmSo{`9L(e*RH5D@QLAUeh!Lzt7 z8@G5bRlwpb`z>vCt1RlEf(wdJPJDBv*M23S_Skuz*Nl--Jj7_&cx+ z2vG^te}6(g{n?4TvzJp^eO5=5U!t`7>l4yyBc5gr@g(!1_=4BJf|G=`p@JszvQUg! z@>H2dgA$H(^Sp>)Au?eq0eQ{8nP`VLhIu@jE!iS$!9f~$eoWd7d$>o51S_pl_WCJO zoG2A)F4OYEvc;5W1*(#l(4IWnEJT(?o+ewoUKPJt4N3~98!?D(@+MOUD->W%Lap)> zAJPbi)q=AmwIR`do4x+TqQWKTLe-C2Lpz;-3jXhg2a zQxzgtgtvSt&@XK9zEPwCXd~!^1rIl+#et5?Q9AXstp^cR3id z;T%Cx0#(IW2+el03Jo5FV{RETge>|uL)yhDiz440m7mo%X5_pKJWhz zX=OKUAjUc}D8vY4P^qarj1Ii5<4I&EIbtTX1?LtxR5q+MX<2}Pt9q1@wk z^M?d=$m88DQFU;)`NJ$eBm@`b&L8ISApzy6hW-%B>7S!Cx68IaY{!QLkt4qQLoCF% z&RMoEAJUjZZKSl?2=GW_FicPxh!^gcA9?hN=acuxc;X&Xv0h@4dOyRPc-e?479$+v zUv#e;jmTumPfZRLbwQ8WY*6>U|Nl+Rq4y<@H=w;S({qssGxE<_7Vl6_)9U3|a` z>;O_+vl7{B_>Y``(gV>H*vtkL6DILlf(KVWvLYyGgnq?_Wqs73sk0D`RKsq~(*ryi zp^+PFDh*w41-i~M5=CSYimuZO8BSRUA|I{cKlc9Zvvp$s_!`kd84Q2H-^$NJ7a$(P zPx+IN_K4XCo5&=zPHoIamX;qhL&;iZL1oF|WX)7^*4H-))-QPQO;g-?@Qv``8}Y%{ zd7v;3iwCwo55d)T`Be!S9zJ6O;*@C(NM75v`y(_T_T3Ucm_Lz_{f|+k$Hr}d4Z{QG z27GO7w%&?j*b|E?NsD0A5tMB@+?bPx;1ZEp=TuZGt5>Eq3`%hE*QA(3z_e$Mhg>{Kodp&+QuSu zYN81Gro|w6EwubU@<3_*Fm6~}oOr5r-QWSlgr1a8|6_Nggjx7a1!5bW1t+3&%M3?c zp@kv}Fa&xjvD0uWE)$L0AdYwsFzWCR{V#UI?BLCL01eVi63YIP< zFx_QW;>Yi^D}@l>X;%lidbeFkwYiP*^zvcF!bJIsN7Fmk=)F2u2^4Xlri!(sTdAk7 zeC(on>ittsy?+u!ynhlzLjOLdQP=$wh>JGc00DOZGO!m^0~pu!w7!+tqRu^jah>xn zsdL^XfiZOH8P!mAiS7(PNizw?fw;-%6V~al$p`G0o|Zp&VcTY!vq~7EBI>0Muh-?WN>R-F|7XkM zhKcE7CD94Bg_d73dg*{u zXRGHcEbq1AG_MJ&_1B`L@iTjUM6Zdn_1Dc>?e#grmph8P_4h!*G+nZ6oQ0HyU|!@! zR9>WkLd7FkYtgqx4YR0XDBkpsT}3bJl;8=dR< zPDAphNI1o2PAKFIVfBnwp~zq_4gwqh@iD=Cw^0bty`PS^iveAgt-7Kw=Zt7a`a-#r z{Xfhz9ljLkij?E_K}|2HZn69rOU-R`b;ABnEewg;1X(4tradSsW`R}ZS7aG0zp8)H z7nr4ScW;@MC=YuP8`fC|ETGLl)MT%V#cI4Q&snt_OE6zE%F+~VWhP?KL2J6%uUD-C zSzb5vLCrF`a_zIFLSp$Yey-&_1$`s_z)_Xh9Lrr$ac*=V*CIchez>TOKm6)QHGVi! zP0z1RiW`#~bOqg%RidpEy_WgmM6ZIMHpErDSic(h@aYGEHS??oajextc!aj!G)AeC z9PCtnDL{prYin6wQWZ0DW700r3T{jgO&fZ2(tjwMklnL`Hq#&sV`bg=pClBQOE1HI zGs(fw#SV8rf}+fyeTn-7n+j4JCh9v$7A6mJwY{WFI%e|GmAzgls9KM?!lfDeRw=o+A0pG!+yYsUmat zj5uglgk1@{NU_2*K5_MA&I((k!yLt>o~SUI)I{MJY4HED_x?eaUgursecyZg_q{!L zW_m^~X)M3pYTK=7#va=v%~+nm+(Cn#NU%x}yIwH6X4hMIN2*!}yHfeX6_1m_C@BRT zFra{US1jJhEEXulVUONxZ1&T_Q_0&blXLd>=?&IoWw`D9SM^u#T(GUh|7IFv zvcvkx4g;)ySYiyhAJ)?V%LPTZ(q^LzXuHzj6lrS>KLBECGIs)I))Qzt@lXy$T* z>NXo)nKCR0jw7lXtoGPs-%(5PuR7GS=jOYeqC_np8Z*qW+dOjFZi_PO#vfz1#ba!@ zMY+G@k7c*{xsYa)ZM8b|6jYW>wndw4$}g<2Ur0u8nQVt@lPy~CY6k^|=m*SuY|K>S zuyS2HtRkG`uwsDFyaGoxXbEJDRb{L+_uV0;p8J!l%i>~V>M=S^?b0KPoWT&V5arHf zm}&bA%*E>~+3{gESpbF_uN<3XJ{PlRh_phg z^cVMAJ6y7TwFvU*=l&{&4SRnk4TyRXuf zyR@x4R?3J6A__o_4YDGPMU-vC-LWM;_a_Atw17GrJ){OcS3e3_(SskFa31 zN?2<2AOB6kJ(;LKh*<~^Nh2y7r89crr=P##olvpP(HUKRs=nc67B9cZe!1d4CD!mZ zUlmfK&(Tl#f!6T>=817&=%|7E9~zVLNqMo=0!MU~r#fVK13DKvGhE=}3djO2DoiLn z(E?3@!5-VAjm{rQi*P&UCVUgW^B-(Y2>}x(qOwBEQKQP$BU_SJUM`yziT$rQjwP{g zD0b}GV+cDI0@+&mOke={ybUKK_xg=2jKU>9ar9VnmJb9j~6cgfAMlm-w9Z}$U z)RGN*B$=AI?y&%27oc+1kql}rjW%B3*BbE&eOkzX<1cThvnb%Z^7FS+U?QWp3x00w zpW9r0^BoMCV)m&N_Z@c(Ru2si-*M#V8}GPd?bz{K)^EM-_B-Bi#~n2`HA0<)7xSYf z)wM@AN`c`#GtV#ptFB4|Gd~%VUVaozGwwT@>CxP9gkHQ)Fo##En%(O%?VJ7#RiJ-v z9zs*g&faQ!TEWI*f6RzMd}h&p=q>%(4IzcPow!U1k4v>v&^IW1su-ecKKi` z=PbB@A=L%fb`%dQl_RHw_3mxb366Z4=-h#U%pE9EWOfJ8%dQ>7!)d4pjqctxJaDCOW+<@v4s3 zanHL7k`_u>`p72sGi= zLrm?}^wCBRjvO_G6tM@ zQY>d_5Ck8#1W?!PMkWFu2I|=>2i+IMv;jT|UQM7UG*93Rt))XWl6-|F`!SVC+)hym z@XbCYr)k0svC-NGLs*Qh*YNyeQbsQ)W%Q)-5}F}xg(?COwS*yqm;vg(qGFkkPtQEVhhksK5>!H(%h3dx&TbDe? zNT5(1q&^3!>*$=vhzC0AW*VmnChr34K2eENG)GOCUJnBd2a#tF$w>8E52q=QqzTy} zi!~f%=Vv%r>UfSmmS|{EY0hKturl$W%&FJ|AX`fC6z-PJv=(7_*wRCUEjXa+?FCQ3 zcmMEj2@wQw)W!#Of&x8lm+yyHd!sXt+I-Wry_hEWjEs%m=s~voLh2Fw;r(GfuL=su zW+!oL_)GqX5r06KC&=St{*3y%$9$@mdW7m9-6%rT4*zz$$3i_4&7IOCCQ4==QrhG2 z4qHpi<8z8Am1;HX_OVt=wQ4f0AP)n{-h&26B1}ngN}vQQ1-ScBjVmi2YbMADt*MYQ^c7R< z9;tHq%bJ#z&z4a?vLJ1iSHe7HX+_n(VYf44<3PD&aB4vzBGh$PmS#7ELzdU2xpYi@ zWT%gVXb=*(c1a=9EN`pX>`9hcd!SvS0}i601CSopN6SF+FhjeAH;MVsG|V8W4{O51 zB8;~12-H?c_4IBn*vBlHz*-~MSKdq1P$LW3i|PwJN$!fw)1dP(W}T4{|F_8Sy6(&6Wp(mwymXaP}pUh?37sor8PI%!{c)#hCI9ldw3Lm zl!v#lD~`hH&m!$R1PzwQ84bz{-xCcHn%Ebqc$OqHBccU;g|8?ARay)Bz|(hrH+_(& zPa@Vd+T!l9wj1IvT5aFIueN2WBpoTE+9$PUb)M*II_DtM))5*a9Qa;rkANpAEn)X7 zEVWv|*EXH7*4UOchsw4zt{|!hBVr@*&uF{EZPc!9I95Th;40Z$zak}+JOy~TC9T8! zlf-*XnZ2P$h5450LpM83pD`1zF@1#cWc;8|8sleW<&{wKSy+poI;(RsbGwZN6Q=GI zJs4UwDC3YPR%Uovqe_w4232JiWnoGh{@Psm`K;R! zyET#E7}3R|wjM+6vqIczg;(7cF+Nf7Rb`|6?%I&Z;OvthN zVXsW%vS1IxHoS>sl&t(gRp%5)$+*oiY6jaE@jCLKLGoPSCXN~S{9aEsaf%O_(+&P! zHgPiT_YoMHpRkTulKR#LhHC5h1_DD7-7i2h$T}083c=UvR^C=J4p;tqmewtz7c?1Wjkq$ZS>_qxX@dxNu?sqe%YK$HxrnTj_g%y_EtLvWJBu87c zS^I4^FS6f8!y@D4w+Y=aXPFO{y%E3d%UQ3dpqW*7`od$%x06Ew570a+Ye zVt~tG1kFl9YT;=rXqJ@}FDA*{%(o}$oNR%ZBnPN%-#KhH1tP*`^0yyN?JAu#n0AMW zpE;JdnQretQW?lrU)XZ&|JlP$nwOh|5saB5ZcPiEX z$t>Q3Y$SAh((z6BP%f8<$O1nrZjsn`uHCKSHYU=84P$2ksa0KbB=M|P$Sph!nP9c! zI;J&X=pPqD3)g|c2&OqATXQwqH0!p5;_4LNPRl(*pGmy3^0=xY1RRqtLQb*hTGOXs z7c(x8671BLC$3}+CJ!j5Sw8imdb|3b*nL zvV8CKMvM{r5xQHx6#i0utk!{PT7mU$9M!OKx)S+S)MfBi6{TNk_qF`|m>lgk<a z-z2glhZojQJcgyi(PWAHEHUi#k?dyy$$Ty%v znZwJcI-S+QdxG2N-?6Z`wEQ0JikllPu@UPXak=Q%7`N&0NMtaV% zOU3Y&c%B3=B?R@R{l~?Drduo(Yhk?nt4(7|decWhD|G>M%9@QAp*+!!?x`=Y7P0?B z?1goIr9Tq%O%w2E40#+4-1gv%i5(5~FK9aZ{Wp)d6=^2BG?Y;~hR)wuqm$Vy zhW|KCF%WnmNZ8jbQ-nz9++Z$TtRhXp8LA{89v?t6kI~V|~2gsei6kkv)SD5C$c)2D5#nU<=WDX<2#!68<(Fa|l% zgh{EHA?F;KBoCH4%M()by1Hf`JIB0aJb2c?)9PHeJX zHU!FUeZDi`8Qxg8Y&UFo`>&eOPLcbU25;x>eT|3r619*OVEPn4F*9Z!?{}^H#r|Q$ zPiDWOvB|7uVrrS#Gx~fJOGio2_QU`fZfvFeVd@f%j>3iSMECj3wW3<_Uul92E?Tj~ zGH%`3%edUZvFxu*&8|F!vb#rBO8VE=CdA(l%VnamcS!J9&G%I(Jq?S^mdn2v`)=NI zF}R9MS*;fJ<0?Cihm85|@eyS_F7c6SnL`gdks?%79s>ASNC-THq+7s(lLX(E1YeWP zmPzNC;)bWOt;{TXvDi2FL@L7`W5%F}>5BSfBFlJPZSJR`H2IH?ZXL``3f(3(MRJ6n-FhN{{SH?2$y0@3m=^1Xkg z)}|xQ3Ds7FY%^fo_c3(x&jo(se&nBv{A8;_{<*|Y$Z(8enzjUSesjQ^)RS0Eq=RKI zT}zCrR>?F370Hkbid(jNHx-Qz$7d-3mu>T#{fi5fH)b7rWVFC>kl0R#Twp>?b9&zp zcY}9~>dnK7UK25{HjW5L_I%^>eEjn7`9c1a9JX;p}M~F@P^TSxC!|Lep%Q_s+ z-^ABz<%Q<{<`LVkYOy*}tyM>>!~8q?!0q{P`L*FM>3c=3kGMi7&{Ri>9P9lR_(uTja5I3TF@TI}9TmPY)Nl^f!#V8XEUWt3F_s2=7^n{4UbSU; zJQ=V@6P+EdR-f9qMG>7f5s~)4ZC|d2v;qALnKfv?LpOnz*m80sq{42LwN7#SZMUuy zwO%`Vq&(am^n1$orbpMwEzqm>;Z%}VKYBh6z{?2p6j&cU{&Ux^*v-GMGgRP)Fqi7< z&it-VK&BY=^E=nPj*%Nbr?~D}8n;ZvsiR6*Cw`#zAP#<1ppxTQwTOXsSEX51=HT%n z;=u3HKKmj5wH%!OdG)rMdz(IzzTJ9c0DN7H4(FH8$#+tiO=CG7kWtrhb#8vH>~VfK z?;h2=3Q?O}xuV3_G?3R+*JC%xIifG@ZAD4{A4C2wb#NpDb2@;DIoQr<5@hFOuTx3m zzRpP<5_B(LF#`d$#ish!i|g?fHN}OfML|stFn@-B+-{`a*{U1c?w=I^<$WC=HWdnh zimYj7b^JlyZU!KI)7$+U4j6ev+X(v<*M<>3{=FaZ&eW=}lA;14L46V?<4xtsS4SSe zZ1$V%ZPnDD_M6U$ySF@}00hS>?cT32z_4K?4SW0Y@L3y8M=lNC!EbPOn!Y&-coDA| z0i|`h;fuly9$&l=m`LCSCK6I9njc7QS`VbsI-us(k!w3!$GbMOjkO-*ORWc5hL`W| zcHY&kbQIHDqs=p(GTJ-`cW~=mh8UL^CdkBdZ90=VTBjmbD#b#W>+WduA?c{{g8uQW z9jmkEB639I6&(D1tS#}$q1?@M?$V5|*JQPZ@MBU*Mq+!|13dDi0(+d3V%qqS9zq-G z;n8@wt_84SV<^F1hInOwLnf2iWFO-%j+O# zk&+ox4dV^8AcUM>Y%R;8TAuN;?2A8-WY5d8V1f6puk}j<92O`=@>)>Y_^0fn-0otu zbp1$8lrUuVk_HxUqJg{Az{36-SP-Em=_3e`J|SK0If}}Nn{b5i{#t93eLWuh=VCOs zzXtXO=gn#jAsjUO@)+}T@K31N3A$l13AtN|qO6G|&Cpu{A`P zucOsIj5O&rRGu_4`dJzo{6wuRV zo$iY@rQJJxeWT*zk}6H?!Yv)+9;^zP>-^ls|^ zeGyljB^dWhNaODrv1gPl>#Nh+kC(0lt!)zlon7A0-ChDZTds|1TcvQuI8KLdV|!U! zQ>0>7!x;q+pKd6&2svLhTXV`*TH8s?l=Fx5J@tRq4b zwhg*@BAHf#2*`aa`OCVM*nq#bcXbQ6{Z?{_IzS5M$aL~xau!An@K4Pb%R4hr1ycSe zkUPqr4x3p&3D5-Huvhsg33n~ljSTlg38KN z-lV)s248>;DN++bWgmBB@Zr4XzP1cO5`H>w;FkewsR4f_#bgtrnG`LFbNog<76t0K z)J=Z1zRND69Bls%iRD+C1+Z4v3sAkb zg}@Gt9Dy#8BXB+iyH(lLf?$zzSfJINjHpx~Ga@uBM#K~JQR*-vlHhv=PNJ=X5&MY| zojznn9MJQS%JgQ?%@s4EpOSKdBoQO_8%7*7as=s-t@+uFoGs6K;q@{OTM4psr4@!el#_5S@ z9n>`7TuGF^K##Q+LxC1wBTeB+-ADnAE&oW% z3mn8JGr>zwlIBFr9n(fOaS9d>&(y7)4m-^Xc9O!=GRiLGEu}7XT`OvOO{>e2%e8v1 zpDQsjp3q|$C4oJP@n44&qZ1}%y%qa}%OdtUZZRgQ)#lX%6t^aA4sK1_9Nfw_2U1w_ zU6E`TAP%9-7&TFh3FNk|r)!34TV>}nMkw#`g1fP0xx!Z^*_moD~^|=n_%aF$!C4)@{r9Qr^ zyC~L)x#qLBoD{`1uqHV-c2No z;U5J8&43ue9qo8 zeMBkmq*}CfA7GLm;@Rc`8PuE^cTk|*91A7`TD!~8OpMW{dF;(V3o7Yh$v9+K>^8K* zurVLA#mH(RRjm^Xxe}b%I`^Knjuz$;&kGg7{mf9ZnGheu5JgZW8=)$ z+N4ordTq}7V7Qr|zS(Zmzi#cq+~Maf;G5H$I=`moM6)wDN`qSJoN3&|QmY`W5=MXbLl+FzJNaPY*-n#n}Bk|IHw(!x_{RCEh~ zK1A5$YaexzP7#EYbjqz3oqEYH>69Q)p5JII6o~EcKu!S(k-H zTfq^*;wj*1+vUckxfK)gf_BYyVR?x8IuM%_nXX!7@{PG^fluBDrHAlo1b3~$>rouA z76)pfLCv?q9dizM5Cg0@OEo>l$5p)rJk>}B<*-`2K-ESaFJQ^Ji90SS?nunghrJ^x zWGxM=M!li^dIJ>l3Zo(ZY?l>M-P%vHV+j9zc%#VdTr2e&r z5I%uQJM`=w5PFc4uxPvzWapUrdSp#RRR*a8ISZph8X1S!63Ahy6%giZx2`{rKu!(_ z+lX}_XFMPrcDbLjMDDRIPYDP+5&&p`BtwVb=(O;OMGp)6ia%jRkYX&;R{2A+*ukJ8 ztPWVP{m3y@3Q;`({0@h7d5;!IR0@&}DH$eJL#WpmvxI*4wdnF#w_)hvBb&W&I0?>4 zF)(foMn7u5Upe>uPB~X_5$IohTwdeZbt*EB;3LpS@OJv#WF#BWk}yV3B`h1a6@Ru| zXP~0u>>8VO&AKdOaJ(jqBH?~I$VV zsiDbIYpw?1r2N=CKiVws6d#2ZWBQPO%s5kpNPGYaG#{m@f@W1GJ?3Wu@7MnBwJVfh z`SIslxqfc^G!37JNONpZa4_v1hENCMAYzxIp>zAJHFXnF;>{*N=mC4$2d!xzOr7?I z#dm6t z>9PNiAbTg)J+;&vM7oca!c6HF0y5QB=TjaP+c?(1#@~ zcYJfgk1M3LmULG5M%uQoaj{1!+T8Xf=f@eHSz1Vsj{>QvllS$adz>r&$VMlJ&VMj>ruJQyS2a=j- zIIUsWg)MJtNpOr{4*=CR-b}Z)%%^dst8^Y5ssY;mirslF@gUY@5p?TxgQH}||~yXOdon{dzlHGSWRdv1TU0%Ee7rn~2{@XbtkbV_uS<(9#BQkDUz z4ZY-pW3}Uh+t6dXVD`bordVtndj5LZ;HUfJhMr;zOUjCG487%))szqoND9>3Sx#e- zd#!ka9gUzOY(V_*xp21?MX*&XKb9XUvnhMwsN&kuQ*menRqcfbrG68<@K>L@cBL~K zTXTP@Tl8kd(2NX6NP;6dSQfzak~6)QXBC8q&DEzq&9G? z*@5$1+UE$t$HRkYRrZ?XUS2~&6g7)Qf1}^+y1?h1*hNhHjo4b7z14*dB{%1WJ)1?d zB)jK(eUN>%w2q?bzL;_cvjT3WyIz4-JtQ%gb8zRcMjg+v(U|4yG9b{I);k0pl)A$P z$}q5)9mFNvYR?v}^cNdj5%WpZ+)f^&nV8{y*?vu@=y)1SW&88!nV(*5>cJ{gFhJB! zgTGj4@Opi<4uSd}#BA)BmV|?Z<;ly}TIG)uAv9LW#YTk5XAMqYz zh^jx{vh2|ye4Ue8R!t;TazheD=8Pi~)K?HP_JJJKoRPzdT)q0Bg*l^iCrUKOH0))R zobJbOw7LlIR0jf}yoIn*+O}hr;Y5H0R!)$(PjBohC52}UD;P=!-ti1=b=?#A)MpC@ zO&GJ545nu0nS}PtYqLfSuC}i|-%O0=yA632N*Bnhm`_#-+MB{vvkizpID^8%jsX7}8qKnsElO&n zNosPKSyEM;q^nhd6M<7xL&GC&u+Xg279ytjAXC?~X1+JEt}^qzxz+**>%lYMn{U0x zcAI!_d~2e|vCw*NA-^}~OT{>v2&l5cXZO3*YHw+m_m*4lE$8>9z}J-g?~PXSdsE=+ zx7y<%hG}@|YJHK~a?PUS$}20yaF(BlYlmDT=CP^0SijO_3pp~mQ$LJ3k9^lGbig{p zzt?=v;*8(b0*99L=*KbE*sdWtZ!gM*8K{ohX;J4^uS#OaJ@I-NY0K3DjzM>Ymh%Y{ zqXL3Z<%ky%|}T+m}`CtW&Xb4@%{gSa3uOQUdQ0phOxU%B#{u znS`e@KB3;jBcmTug3Cf}Eoe~)9BDrbDD@t^U@GdzD6k_(SbOrQA_7K~E?HVQh}Ozb z1bXXa*l^qaWGgwikt3~1E2LQpg9RfrIaSr|lTqrv}yHJ02fdapL_8iO1MYURgr+qZDuyWg?*e)Y$SxfKVEiXWa57971P ziYE%Wum9UW2EqY)^E=*ty7SgkMfqLb-rW55TXX`=O22yJ9d8)izIxlC^;?FAkE|X2 zo$mz_!!i~romjuJgRU~qY|WUy>&JkZ`nP#$L7dX?3d#FrC!3l11e<9*bB0)S zlp&~jqD%rQnN`f{-*4z3@^90;Ql(vU>TYdW)I}6b>!50xuj{>R^}$Huz~vxg#vHzZ z4E1UL!oFA{;b8_|8|Pzxjfq*me>ZYSo1xyp;FkmMMgfT(3rO9x1H9QvwJ_>bE1ZeP zvx@(*iZF)J;1b~^?W{@@pmu6kfpwQDh%AN36*f)B;Sa2CUms8Gr7w(yY0P>fDE+>b z5r->?-hyZ{=63!?C|e@2sI~IDS=Ne0E$hlGn%X+mgr7(!g4Rs_xwNR&H@IJ5$>gJ01nW(#df!2Tj0i*7B zwuYY(B!*+`!FT5~dI(J>1jh3$t;Zt>3@L=jcvNG5f<-3S@3?V*l0uz~vK#6gj7P0Qg`ML%oa&=(hp@O0f9yy13)~SrE(dnJR5IJ z+}~?dRGQdiy{0m&W*rIOqP=G@l=h{;8^$!pO(Ar^9RC+-jthF7XcQbUW$!Vs_iLue2)97ERM{kiOr^d0ffaTuI z+UND|6{o#OvSq5qe7BQz+ZdYSSO_9&yPEck^rbTy^*#y|JOV0-HX zq*nLb-oGJ0|cy9v>jw-pXqt71W(Sh;(<51eU_ z<%hi@6q?wB0!w`zAXx87)3Fb1HSS=`Gt1ag%KQO>^_%w(mLQ)wi5mwC)}<^h7sWDJ zJ4p;d%|BXms&s`yXb^~B%!(rkAyQw%0k*)(gppE?uclVQyeFijR$@tfYLkgkk$`G6 zOE)*V`+Q{6vrpU)t<=9Hl<)5o!<03PzO^>9aWO@hW~%~;vhVh%IX5*naa>_2RA4@P zZ-W&=s<~C-GeF6=tJZBROdy;}=NUrT^f!Qkyb7uL$--F>Uf7L@bD#GeY@eJoornL1 z*6=T^jJy>BVuD>f_58JxfO3DX5&RjfvtwX^`XHAZ@m_?A?_L?*7BsK3Z8C(nwjj*s z3(JKEq~ABjOc)YkgJ33eQDdyiUf=JeC9>i)csIB^HE84Jej5h3%n!4ufpcgyh~4{C z-2MRjJm&xaGd=WLL+3pkOQT~1ds^pA-&FjJ^I~*zs0}KPxk>S))(LQ{I{Osf)Jd9b zg5T&@95o-u+&06!UgLMWp&(BCLKsBLk^pL*D#4k+IN`Gv3>@WR{7+q9$z(q(#5&E| z*@ui`;WPDV>R=-L5%k^iJ9FQgGv*%Jimt|&4fa8DZ)-5Y3FS2=POpqOoGn9Ub{p4S zyRq9FXF$0NhB!)LL;(VkfGOpz4OluKTJyHTyq(e-PMn$=nr=F)gc6Cyu*eRstS2b+ZnEdp8gB0_Ynce@N zJG|uLtoHbJ8X500 zRt`O#G0q!kt9AJ5IFrw4YxkkXdBW4UwVBfWqOE`1tYJ=TYZrWZ{i}5Ztj4)NZ7fgQ zxuW|W(KIN)SZ2{%ZgxbiwtN`ue&O0<){b2dTzj;&c7SaiJ;1h()Rr6mqtE8e3xnD| zbVM=yP)>)#oQ#9+Fec{-`uCJTp59kRcK%eSxRT?Xe{!0u=p~NnEOjiW4~xx@kMolq z|M}-F@pKW(Zh?TQJcxzn={ipr>!0l>ckqOWWNzk-{A8y|{&^=qd%_zg5AmqyNGuyY zUr0xc`#{uKjX-dR7hdKJ(nAVh-PQfT#qRgxXLmO^+cPzDh%d(@bUFYmBrgX?D?+#b z2uWst1a@_pVGlP}V;y(Dw7fI^hCQ5-z9gix=*wDieRM_IcA2(4Oy*WPuiYDqQbr}Y zmCC5(Jus*v47i$gbVZzDI+=2rH#X0YzCa2kWvs#n-E0n=tq;tdAN_2hQe3S3vJLpC zQZ703Hg5xtW3h(ST1vUpfww|dp`6#MIzr0jT1vUpBRVn?)vZclsb8PVrpxV=P*`eJ{mz_xUwHwt zB%}(4NKSmeMo$2UtE#Woo^)&dx;5&8sWsMQIV0kc(P#X)IUp=O{$O_zDCVPcm; z!~5p`Fm-!G=_|Bw27uX9aTyLWDG+^IL~ z6O?TZWnj_<9um1NSS3@0=X$4(0B*MFtoMJ9n(}e6bE^v{j^A?oZR@vUt@4G&s=-11 z{7*Hm4C`Zt^?%SSoH!|TaB65AzBwH$AJnVs(VAp^ZjBryjs3^m-hZ!`Zq4YunGtzP zPKPkbM-+Oin9c)cAJmFuw8oOpPVfg!S+vv2(kVu_Wmu*U>UZm%JM%l%2YCi;^yu&568=YJ6_Cl=D)I-jq9;4hX3?Fn)dqrn3|c!ldS!M;@TO zlAZ-DU*VaP^>xzZ@1hNF)Di^t1oOGisrXC<##Wr4&pAjBz`#~2-^CEw5O5Ne!^4Nh zHO}2UL`TG-$&M#*C^TAz!k6?0C!JH;ko!G{mZ5?BwdoEelQvPF6aw!p&-Y1XDn^@m zh*Qx39%PK@0XZ*f7bS^VZ zd{9(5S6eP>8mf%*;}TV(Y-uBj3=<8q!Hlz|gy~{*yC86D9~-Bz1ZYnwNX6)u-2t6O zqN#zQQYMSh@tbIX++oUk?a{!c!9%O1(P^4%j1&E<$k(7z#7T&? zB#A@tCrNxF_TE6|{` zk6>rCG|EwD;8{I}&GArzUWJQmH5G?cCpE?E{yc9_UsoDjp(B-d`6kGclfHL(Cj$j! zqHt;kzvvV)*;2rYSs`ntO1JwY1o`msgKP0YwMZp|>uT{?$Jr?_c8QO{e8n&fFRsNh zw>Y-j!{|St)+r?rtvm2%qus-{B+LfP-QCW+x=4>pgWnWway*qh67bQxlDMtPM zwbm9)YVG<-U6zAL-NfoZ4GKxDTJv`m5P8bX->yf{@OQF3w)*c8;E?xFS!}f~ZEQ5} z#?>U$8@cV7JhQX7*Qf|@4ObwLlWGjEd9gpO^M}CdrLD4-h94MbW0{1EEmUe2#_geP zE33lPxE)p>dp_G%pHPbEI;otDVzj)!IboYiAz1aQaW9Mh!v2L8C70X~O%}ayR zT*LhbU~|1)&AQNvRO56cWXrTID3g$y5R~s$YXG(z2KL|DeKU>*B&at_W{nrKnEl?k z={5VkvG%4HE1rIL7Z`7-?*nLWzx}@c-aho<0nEo3Z5=>+->!LkeH_#2<)HC$(CvM@ z=;ha2zx$oH@%QW;xin?AquaKO6)bkNR*j8%(z3a)wzOiN?#-pEy@%)p@L39fe28wFBmvnnPVaNLWIbXFG;soC z0lQb0yIOszS5ecL@YKCxXlLEaE?UKAF-=(sEPR1?#bR2uabI1yo_dB+zGJS_>y`ye zMxHt~#{#aZ4LLZk-}q3i8g|!HSWU&@`Cc~Io^}7i-gD){MF*W!!wvjQ)Npg0pd71j z=uR;7*6HNL<&Bc3DhCPtI#kDh0a}OaP@Yg2V7Zl$wLMbWlQ&8%8>dysm^0r_oYoEj7+eIFuP&%?o~X{v>@y|uEAi~Ds^cvUX>3l zh^*LAs2zr?9wjWyjbj1C3JZn|mzb*>GGT%6g|Pr+#1AI0@Ro!HxTqV(^K0ayDZeH#VDqI(s&e0bb&tI96!dsYZTpqRQNq;6$`Haf;Q<_9m+S zO?%ILX|dre7Cc+^>poXB$9hj5bIAm^w*tZ!&_rzE>@WpMyzn=1dODMw)!-yu^%ivM zFieV{>lSn8Ti)|Rq1930N@Jr=ODI89s?gPvO+WvJZjTa7^{LwvhmZ@ngZZb7hEA^V z-CLNmXk#5!XXFtdq!L`co$(~%283)6$aK;_-Z3_Gy6;88-jdbIAB7QG_2YVu><07BuGyxmRLEP3?z(^w0JUhBk z9`0S7!Ye>$sSGT2oo_}Ele!(-+^6?TyD_B`J##;Dw#GXrfh}Pp@!h_#G1!3(Wz|_> z8vAYw*y{>IHTHeD_W@wP%>7Nr!gXTbYQ>OGV!y8a{msGt;*DT`VF&hA2E3f0plR5T zEsRnJp)?zr0il}?%p#pc5+=b-&K(^l4Gh8$R`mUVDU+P1j4@_-CkoqN+qJvrr%6c=TT#=$Xt zWy}q#{`cr41%&E~Q~n0&;23=qU$2%INCiyyH>pI4^77L@r6fsj_q;qc)-vW|Sf=kuJOk;75V&W@Kta)mK#~O&; zGcrdB-(wqGq-3bLf4#oqP@koIcQN1f4Pih3BX@6sGVx`x*nyJDkt?T@T};=>yyk+LYq7%3FbN$t{*vv4?l(mNFKY z13AXgm3-mAt^LitTKLQ7Mz}eE!~3kkhnva!Ur`6KVFn*e?-fAc>edk? z0T$pYRLQ)S1+N{{}|NnL|Em9#IRd(2m zaA0BBqU}p?dKzye3=(RfhhS^9Z_H@U4h}N`xkq99WP|z8$#)*#AQfp7t~wp9A5E^g2If8(t5!}lUBNi{3%r7#3V^>8BWNjbtn z22QS+#oq4FkTVM*>tKOB8^d7q9jmTAW!DnvJLD@i#*A);e{Xf<|em}Ded-xf)4`cI#2-jssu^1YWH93 z>{+}2H_EJ@EZyJrm~XUnKfNmV%I1G;ktv1tx^zEQ@_D=g$tER_X3O|weYI6zov5$Y z@|9i>^CT&F7w&iNzoPbd+aJ}SvDea30Ijp10Rihw?_l&|X4RGX;XNsTo1C~!*n!4? zvOUW%H=&?1j2jNjd_+e9&B*|s3;R{I_xT=!8hhbX=e(D3*d4&6*GBY~Xvb}A@g8lE zz)NmP-G=J$)5dmqbjqD`*C*@GPU3R$8T%6EaJzEX8a|($=Ci2p|6V<(yuU%SO2P1$ znlLx6*xk%I4IrQPe7ibo)Vi>@gm3^*^)Po8Hv<~uG~lm);`u9`(dOv2 zAK~xtvr>~Cb+Nzk-u!#xYk9NVyRrA6=1^p4bSssa2Yoo*+F|%vn^8x_bcOq4bIoGl zE{9}V`>tvU&;ky7qQKlnz&)8wlXNmSG>EiYH`VDaWYa`AJs*7;x(89&p6BXbrB7w&t|$F5THkd!$Y20eT1<=Wpp<_`+pkexq zcrGr^ON@piNA)C8ERJG=5_l8s(vZ9?nPYl0nMv0=my-eg zcYBQi-6F-nGc&$jo^LFen%pE}<6k1Y^h4(27{N-cIY!@Z#51!#Pyy{SR$0@WGS+eG zjyG?LXmd#0L^HDk)i5;9ub(SqfgRvXGfA@5HOX>`F>Y@dGQo8t>=tz5bAAhKLTJa% zS8{#EXiM}qleS*&?s?Mle{9aQnCX;}JQ`{V+Gy49cjSM^iO(l?ocLVuS*tvxNlKrA zU2#Mj6}*!;W{lV2tk+L`o_*r;zgQ~z`HZ%f^vJ@Y`D;~H>nBx`mEZOI!cb2hka*A{ z4ZvZF@3v3bS?vbSRJs^e5|cogr2tkZVU?t65%7S zv)6jn&%^Z{pLj{WsV3(1yATb$+s($a%$W%&f~-QD)9Zpuj`*X{tyy|oPYKRC+oFDs zOpqkt32jIGQp*os#T8A)0dI?14qC(q4KHhv2jOKcVhH4`ygsoA1bKa8k!I6#{|UbF zrbJGBP+Wh$TK0kjYqj+z)B=jf1~m{+hF+r>NQg>#T>6o0m>!ovzN}H>h^1JvUTDRV z!=|CT^;Wo)`I;6k)u*Qwx45_5a!1=?w4LBSR@Sm`f~Urx=nDeWzQ-Q)eyRgGa_H;n zY|P!&h348eZBbKJ72!YdKBjfF@*}OIfW^V8UUWd{J*kEr#?mkL8oPbgp~T`qY@iOO z)+DD$BnkL8l(;7oc|#4XU*6~jKYF64rEbx253AD-5j7~4-Nw;-?W1!QcY+L(NzD)M z=-3N7ZOdg$Okl)4MMUb0@9TOH@)&rWNJ0Q(+IN`##6mXPHJCj6;w5=lB9vHJNJQCz zL_Fft8nL5Wj5s>;HzvBo=E7;sq*CDoy4+m7c{l($)!8!5*=~2X*hF^MG#XcojvgEF zC4e=?x<{TD_)$>0yrFski1{=I{%8bMrx|uDL+l@Pr;(Fh&z-U&)9TS$PUJesV1Mv^KC_tBHJ{LHoV4aKf`&{{ z-KJHv<$bi7_D`!1f86TR2%YQ`go+|+gvvDqw056%LbYKrk0Y%x*5gPEu@anMim(w^ z573BLa>WMf85r9cdj!u+8WRbE(@0~VB=nDq#<@aX%!SWIX`+r??Gob?kjz}vB8u6q zC$_BXW9T(ctVo9s9LqI+^|A|6bRS^WJ+^|E;qNtuf>R|POZ+m&$I(CI{qecEBAv$B&4zvT$Y$A|(JWSW{#6jRvpTobDY_*w@|4!O!L&1d zQX$Z$Xjn0U;o}ZsA>{=p6QRg%u?T@aM;nS4eX zt4wQL9}a<(v1ce}!!#Ykjz;As6j&$}SeUz5eX{CaWqzii-=~r+NWACw=0;ue1#KC< zyYnWfl9Y1>|AVqTDfW-pjw?m=A}Ih7#K`rOS)Yr0m_q4bWN@b#sw_D-sy9nWJcw=O z7w+zt(Bk~Z%O4g^`tQf$`c9_kN@w(Hci*JBlUVn2r%Kbh*%e{0b>65W+~($Wj_NHd z{lOv5Pqmc?d78R;ZJ4%GKmK#qu6R3jBrAMdQec8KkEbeY+|d*&;Lj;mL3f^F_oXxQjExFbN=bg zp60xFb#vux`B}|7b0AY-_*ZkIv8v1KJ^_h`%qtL3nrQ&wZFFUzDRKyO)Q5!hN!@;JZjs^D9yGx_(AWJXHc)Gyvf) z>Xlv5c1|M_!e*iEe4y>z;EjwQ>Ae$er`u>dGYxGRGUI4FxlsTuSlI^NQo3Rq=C%TJ z73Xvv4Ce02xar@eRj%DJr&sRkKH1&qTT;53a8NEN)wC{06UOiGQ$a@C(9hr)4<0KO zCEt|LyVkXth%+6xp*{DVbWwdD;)?sBkaR!Y2zAtbOaufkoOFm{Kv{O4U+V~Yr!Nox za;C}qGjcD8)Tkc#Cb&q*eykL>x68*%i0>y2a5rehq@qPV8vIlVZDQ9#{M{eD*r8%- z)q9G8EFz`x*FS#Q-twq;4-dM-KcHrOU>nQ|AZwSQ7wJ&3IA<#fQQnjwz=xY=6Cobz zZlmlt9lvChX-F-E>E<+q>HeMwd#OZKSqT`i^!a~eg_EXzkdjQeXSwR$2R%oFimPlR5yI0FeWA)iVU^6BXl zVj_KFayqbCr%wlXkLgIWSV)zIY+X}i`BN?qPlKD@aiNy?)>C5IP; zv0Z_AIRP_#Tm#6Re^3*!U4G!w;CMBMQr_C5l~-pC>2I}%^wAj7hX;2uq_6Heqz|=* z^k{2H3k+$a1zrwW-7USPbijE)9-)Si~%MMb4EXW@;QcS6ST>cCMgd4!a#g z)Yh1?%$WOo(3o_AP9;bIox8bl72rAjv{*ai{?kRE=~IRE=VN>{HuY()8wzl}QNjr7 z1Cdi~9`^1ch~cq9WUvg*TsgkB1|%v35Y>4>fNb9OVCWLBnV9doF}2wV#V9vcC(vQIL4bAfHQ<_$>V{dlD0hHj0a#jlQG@IFKY| zy9P^##LZTaS4wxkSZ?&O8Iom{ad~YFIe9XlPu*Ojn?-lyy8HD^yuGs~3dxPUI2G0} z)f4h!Js~uMB=qZTe19=b$P2uPc|L)!sI1@5ibK;JgM0}2+Vu&MXkhQH0%gAx1={N2 zGbShCmpUO+UIl_`uBP-J;|SSriuxJPqh`L#z(XBloFK|tDo3ij%DQ-aTz6xlyE$G^ z=%?1*(^Qn&*;7SHr{{l~SX2drRS|7EdfAvnv)~Xm#Q93X=F7#PsEQ5cMpvXTJ;}n1 zT8I+oN3}4}Q9WdE_R9^-(6orev{T4dF~WJow^ za14^K00}RH&zB0Txb(IRtDg;2%Mfby;DZl__6&~!SXlAorAa3BG9IG;_0`snZZ9-% za9+yY-D=|&k>>WsA}pbNdtg0dSi5~H*=cPf`GwuSPbJuLcY0F!itXvi8yLOjVL<_E zPz-r8c@1N-?;D9-UW0t+%q|#%CIh}eY&?;TiqCdKNIu!UG|)+vi$U6zb~+2{QyrjA zy~D5Tk@zob$nE@8ZU^d=lg|U17fDNueE|~XQUdFluJ4M1Fg}DA z8z5O+yqr-h7>1GFcf!b!EwJ98WlaOnoN*i9yN)_wI%4`rhxe}<1gu0DKo*_{#b8qc zBOzv>wB@&EFV6c!o@0zI((G|m$K~959I>-2_b}RH=(Ec{Bzaur#23AXx4&g5yp6&u1pD>(&14K zKbMUUzhPUrE3RsrrgNOiB?|bN?&Y_2gej52Q7;D!Kl*zO$iL)K(b>3-hhOXJiM`;j z24#>VIC>>6k8t^NLoY7{{Blvg6nEJwGWuc+MIgQqchQf@4)<7@KcN_K<=R zC%Y|yhMrIcQ6F|d4c(a~2NJ=GAGj50Gx$=idl)^-7(ImLjON}|1W${4f7S##%A|YH zgeNk@b`kAq(a$6*3t*P0>~6rD#`f)?;Hpd=qv*JQWhCA5mqcDXCi~rw*M+n!32x^s z4)eOXesmaI5lhWecx=R8;i`OF=O^XD|KW0sb3a#_m&9S8Mv4L`ytG|@q2#EM@~-mp zrEC`Fu@vWRm!B!ccBeX@BBxLHA1fKAl=t-3Wp!XN2pbyz-z;k}@j~<~+3l{9gWGHr>x3BCHqqbL?!FB9b~g;S7I>`JLnsAwgB@x%F(f;t$6} zsEAMhENe#WR*X7_gaineOKG8a9Hd3x9JN$Xv==i>=_F#LYM~C^vX~W--IBoUUJl;g={uuWJ9W_3N=@X_4LeuD=bHRgq?7KT;r_@~TB&tC#G??9VxuT?mO=e~ zTBNb*$^*qo(}R{x>%z zTF(f9y=?4BDo8-k*|(=FQrtcA)RU~jtY0a8jLf?<0gmMAKwR?ob;#O&(| zKRV^U0C~!ErZ+|SwTRHs#vk5O+pLTYANR15<7lqlE{Wfbzo+~4hqO*ROT$0yFPBoR zmoX9T*a|B8vt3hBmt}xNManiyt5U|p1QjK8Kp}JJ+Q4{3&wnWg6-kY^9cCmk5!Iwl zSH=Smdo~3;Yq;cz9%I6Uo^AP0EMC=aRY&yUTQ&6=oxWAmomWJBtEM<-SNN7izo?~S zc9?s5ld1xrtQM}u3d(s%F6QP;%meS8u2)(#feG)jeQPww{AeYJb+M0y}h+X5-!FI4Zlmpw*Hs;QN=sg8R5eYFp5`T5eF@a{RG+!@tyIQ&_@)9D8!bLpF ztZdYG=y;U`MTS+&9olqOO59=hTfb!hMdsXgA{7W7Sef z8~$NCX}-+sG)zRA$zNVsSYRf*EW-6Z-fd=7HG(q#MW~n#Xicn!`+~vM8NQhO0>t`u z`CtxqDRgXFf#LjGZA4!PhP&U60?RlW^(OO?n$-%Enyoqbe8a)#L@bmOXT#lS{-fxV z`Jn9K6K3~9d;~FfRi?fxVqO?Hd&~ z?-O?8T%kevOcKesUM!sHYL%mDvm6=#Gp8{;C}u9#gdwnd9}`;#i#S^Ffe}mEH;imYTZU%T97kpRoh_q(#Xvnx0tUC0Uo&3x)k(qr=Al-{(A{ph+spB#`$7 zMGA%&x3-u+jPg%@?@EC{pRI;(Gf7wZGcz<7sJ zFjh|YPYzZO4c~nD$el+w){Y&&W&PIMZolKi8#vfr#;{}?o<))uQvH#IB)7r#9HMRB zfgDL?RtHTNe=%t-Tm{+YwgHE*gl%k0XbI~O#$5@sp7Uq!kGxgRe60!NMoRm zz`drmZ7)Y<4e(lbaIVUum(#{8e1I`zd^`P4mBnD(`#N9a1=g6$SM(SE;br~pp6$M* z53LXJz&=X&ZG9K(CkX<2Yt3;3gmd*a1|c8}1c*#&5n6(u zipKW~>h1D1aqzo|CmXxefzw4!dc3;T7YSxX~+4V|GmT<+!_a5jqQ|4MS5z zx0P76xTmcAve*2*@)Odn$x3`Q@bV$}*J~2Nj1pW#P|cH)Vi#G@#?-y5{0af#mCA7f zR!NRjhxF#~>c)_O?qdIp@U)XIS)U;MJ)0V@GPgmFTG~0Di4BmS3{Qz#Q^F?Zr)P5+bNeejjg(flCHh=7(mo8UW$uXt{5tXH zanPlSc&xzccU4ub%|k1Sw^#jY8JdV#@uDK}qZP>GUIhpj=wTpih|8Jf#WW3z$&1%* zrXhs(@0Y&g1B_QOY*=V&q#6v~HTh}ZT7DY&Dcxc=`H^;!$S=|^Bo5ytkz&LplvuLb zt&3fC&dF%YN;;6-8AJZ(linvwgFp!?wb8?jP_a=@1iDbDrv+D8(^$)qQaUuB4az^8 zP)zd% zqknM@NlOM`7T^S<>t%7|qS*mKu95!JURu=r=RLvcWg!`vh;kWL3Lv2bl5wEa-j@;V z0-lw(s}$`#WH=nqvn?Io=iI*~6F5b)Q_ z@xc9NEw}tr*tF;=qH=C#p|LJ^f zVa#nYVYNtlB~jbU#o$cvN1iDX7=Aem#Ac?*xmC5iciOSWFZ_ulY*xT3_!S%4woiUx z5FQ|Sr{NvfZ zV4dDEvsWR#H_#l&82*WPD6oc~@%0kY^2aoXSdc|EV2t;s;l&HcD(EBRsh;YjObd34 zft&QO?mid~i)>rQ-dGL8|2gA;WmwPq6HMlhO*(hup8hktHpv>bn|y{Q54%bB zCGQ5M#CLea%IC~1h)0Y-HBTvM8j*laG`)B&JH44PAoR`T0MnJ(+HSHWK$i58*tN{_ zty+gfw`hu1x60;(;J?vjF0*qC^~vIP22yJ&O|A*dX@m^_7ZDER zO?QuZTLu@8&yx{_f!3!XmI3B2%d_QTUivLqUpH~7gZs~o-^cxr`=`h6SNZ<-_I#`(DmRx}X8GeN`cs|v z$sEerLqXtAIG&!G!V%2@!5TZCmiS>9 zpXv_Y64E6>VBWC`-QMlQm6W@$NPoU?=xMtjkw=U`n4gf1AYu;Sk9S?j@2NEvm%&tTpW(f zmxh%5kexn1{9m(v#;m)AyHCtX25xBe@Y8eF4>I=t(44cN^unj+l6_Q;9*-9=ZAOp9 zrLqyPL<`D|dMz9em5grL`TLGORb)#2U3{G7I8bNTBXy(WN4x_5KTy@%p@q&Fz zrLa|fDf)$0g6CrQni6b zN$xdDZVB+38^_}faS}t*1{|rRXsV5{W4wonNh~Ev?`+kK8GCjHnTtR}E~a$$?sl&>IJAWv zeZK4%vRPxhd?9T``eI?-jmIc3MOqS#O|WD4=*&DD^zpu)zWASt9~JG)J$-TelULOb z39b~(klcyQ?eGmzO2XJrF_OOWgAaj4Z7tdbgQC&kkG7c)f3S9yNL3WAd2BRXL}Lz< zfW4>;=18*D;W|Awhq=q#C`{Lq^XPsPog}BNX-aeq(mwL?qoXH&=Gv7`5I~!vMhmpb zI><^o_PWcPe@<_LO5Rhi^SnXR-HVHCRrD%a=RGFI9MbQyd2vw{Vplk1dbIEZBN}<> z&!$E|qsNL&>#7JrW{YlO3*rRR_)y8AtQzpPyb_N`!yA33(O!SN(O#%GxLQfLS-pMJ z#Lj3Dz{lqdefCr6vlL{~Y=-}0M+Q8G3#0pXVZxUgyKfgp_qT=j=6$;`y5DkD)Q(*k z-EX-nx^EXo_st4TJ9c4o-((i|pY=~zFr1-OK}N17GX90RSX&Lbf42LqtWa>THCS00 zpXX9c8gU@Tp}E{ z%MUATlU&ko;0Dh$&{n`nga85nr*QR;6Ew?u{ znI;oA)7k@0k`R?g8d5`iqFpJF7t7fJf2%t^*^UZ^q z+H%|x6xRhSy92Hp*145tJHkBs0z8Mu?qwf>XXs)6kU#eje-54PzL!5F7T?dGTi#t< zlDBtXw=bHWAwFqP-|vwClNjz34vc2DzXc(%LEAEteaKSX;g{&*jPXoh_VxUKh+ zG$#sS9|A?rlv-}O!TclGe*J(v)nHhH|iX30~IeGKG>M%ekq`O7H}>h%gU z)$XNIzQq-0{&aRBF{35a;i(da@$!(2wbv`m2rJvxs%WQHg_#<2TYB~Ab8>lJ3O+{u;K|K(tNi^8|H!i=Mo zm>ph2{?4f|Gd8Rnt}rv!%2oFGOQL=URhStYAE{34anlHARhaSXdV$;}{EzK&vcgRL z!e<@-q0Y!eg_-&V(%5%E=}UWSC|>==K0jk z^;Vb}YlI+Lnvhu)W@>bPF-=HaVP*_p-@*zrelJ2X`yO#e?nck@#_JVkA}~%J&DSf;yk22OKD6tJ6XxA-g_*B!mD71C{S9BH4D^z4!iLVOcr@+s1{7DoNR=-x4K{Ky z4ApAQ9d}zDr^G}$W+@lIHcIs`2-r4GuY#cITt_StK`%L3L^rQ`O`=Ptg-#h%aD$b6 zl~YL>&k4Ss;G>v15C}dNg=_dK>i2puq~;i^IGDjBS7nZ`?H9T) zWPCB*RhnLsvP6E<>xn4iX_u!YNcpJ=F?KTfGSccrOEa210UiN4(LJOLKx?rVN@VO` z-rSk4bAv37@@!|_6ZzDgkt$A11tsJMZ+N+VwJdacj5vJwzsYS=u2zha1;))x)3;a9 zw6lCCs>$45u#ex0+Pb^nu)2HaT_ymx*kxP z^hV|P7*J+(YCGyaN~MJG+-`HBgeRgYWY|nD+$k}u;6j~GF~KbKcG5k-Ey|-bx8z+x zGq?r9IhkmlRI}OG^3dyIFZ{pp|V&zoxs;>LR~YTPO#5>vA*uQPZ=e_B?w(h z{!UfsNFcJ@Ku5}Np;$Bm*7cN>_ZdZ;1XHSpB#!TF?pXrr7P3q7*UA^vBo6L&nhYzzV&GdaKy8$&2S^g426&LPk!YJH+p33d zNCYg0kJ)NS1bst=$jEH*5JCI))C zJk7^<-;M#@4tvNQ3ZOWW4!gHSo$`E34rZ zQ9Ps3VVc|*tzagt*E6eMTM4UatG4cpJ>R|_tn>Bu*w-h=zTQKH@pV#RG9gXMKV6TY zu_zfyJ+qCWM`CIsY;{Q{SsGA7$}0bBCg;`^8;eQ?yFBe%Rq%#IzS#gt`e!VhWzxyU zAuFu0ugLA$htEI?-I#SnV)k^UMHfSFY9xKv^m(H`%6Navv-(@E`=h!t2;*4fl;71G zeNl#JosrhlZnQ*QjYJiY%;)JKa^*UhzL@R1p2kYf7 zGcBmM)-{W7vekN{=L<7`61U{Gg$omTZKd+sf`9U!E!+ua7jMm6)}iqyZ+9D%KA2J%9>#VFwDWwkB;% zazUrFYf-aLA)wk~1MUgG%zz9(Yh%nJBs*+8u)&gxj?^Ygiiy;wIU8>OcYUt3+LbR2=6b2#W|_;eeX7`_92-_LeIhT& zqNYlQBUMz&5WumWLc8cKQi%icW|Xv5-mFFxyPaf#$X2`Jt@Fz8=G#<8yvGhF6domV z?=3&97m=4~iQf9LMgfs8=^_dV;F{d4CQ!vLp9<-6y4;b17 zpa+4xL1e-X+Q(5Mn(^!`^87Q3gDx1ZB-8(=b|4$g&vztcEJ&Y%5!NY4koa z)D{2pce(O2QdIkd_zaW?O}f&4-WEm~c!OBd>b>{Q^}mFclTlPmmri+9GVzCkuqq>I z(G~365ytH#iOoV3iId}q+6qKftxDN7l{sa&O=a$K!307o433R5 z=;j(3?30A!INTSqM!sLiA!)Q1V4K{MOU3zomwHc@UOBf3D~j*9KEK&(Z6ANstSAmN zNAH88LO5u*#WE1qyohNyfv7WqsM9S()fAPE7-_MiD%+c)e1L&?>!-4rX=5c>5gsVI zaSF;*JZa)8?=T10U~g;e%4CQRo(0r2=V-!`!F0dk7UZwSb|%_Ez<>XAo%F zK~zTK%LXA!(t2B?Ma~EFX6+9MyGyi6BEOE(K&4LNmQ7!r<2uR}?GdNS!RMqHodp1~ zse)}^Wkc8a1ECH1Lm?NqLSnbaAMpipUZv}y5LKk_? zJ}HcsG;|aJj{r&Gp2n7JkbxMo+@CG~x{`mczzguhjbw>f-dX)+YuV;ThKA*s#$ISa zW5bCJ$fl3+0k{zMlmXae!Y?Xn{;JnsItF_x09fNw0Z3j}4FKv*FemEtr41usBaWVj z2=n3cE8)O7u?%3COq#2C{n4Z;O z87ZtFPFC4?H{M`Cj8ut@U6fPhzyK;D5-%}@*%gaxYf^SBRn|^q5JZ3>!=hc3T^j_L zSOG6+Ye|(VSf38i9 zVb~ZP=DO0vxQnVbv!p!t#4o~gMX~kw<-hGFJXAHqlR_rnoK9E8Slxt*Ru?RxO%<#z z#t+hIwNhzPH=m{uSwr^7+7lWx?S683UII*}d7MXm8(RBf3p;o(8cMo}p-!Ab5o@T9 zlQLRLm12PgegV`!$~$3Sz^#BUO%3v~2ATwL_MVJQ&*wkOGcu&Nh z@@)VI(^x&WYpHi^tLN0Qe}V>(Y^1JU0;bxQ`LMOR#CETRezcH zwEHxhPPtkzQocawGnD3bQ!3@h_WY9V$hjmvF(7GbcJ>R4heW{qV51s)^U7g4ZJ#9HxKyL!4hj+m#e#|sZS440h%{V<4(^!@HXBS_CAXVnyVcuZ_r_7&l zy3)kyigxz3xHgGX5dEPne@;~(1OJ(%aDF!vZ9m{Z9%;k9HvRrXnc943k8oAAjZMPC zpYrwHaT|vEAGzTky9GNkEmZWK%JmWFNk+jw6NKq`RTES=sF=2YA{6S{^n2GJyc#ek z#_GE8^GTMC+o2*TED{u(M2yZ$hWkcsFpG)GSEk#BoHpV0;!_-5)%KM~ zDD7DLLeiK~bwe_R;48nUVz?cW?Uv>G6{TY^A^JvRJJ(T3=k2$T&GO#mgWnIWkSjILx1GXYPAis^Hnb5uj`X{A&u9-t$n zjb#z<$@N(j!WSM>96}Q>lSWllTs?-Pd5iU>C*evLOlKnqs$sReJ0@3=Myum-L?4^d5H?i_xpOd2hVkG=KmEm7h|Gry27{f5tj zD&2x+8W}Pi%bX|8>!Zt^aKPha%Ms_ex(<9@4e$Zr+im+SkCwj zwL)$PGy~$TqVDpu&8uG;;3TCb093-`3X5%XjN5i5{n`A78ynJL*m1v5~D?qY;3 z#WzlNYR4O#?6eRT<92055+PZP=cMeH8PAvjw0QTMb;+2iE{S(+X*N&m5>8*L z&e(dXYZFI@LB#*b#3}c*aFPKjNrLTOIp67Ut>CoctfrkJ?D12KH_Sz~#Q-9EWD&U0 zH?cxQi$FQw<-=J}HJW!wh1r9^=S0Z!kD-MMC=v%-VX53=Fj6p=CR-#P{Vnk=`qLZH zA0z_>@^h=fZ%}Iy&F&7UIMpwf%@;XaxuAHFLF}w(4DNM{kGP##DX;m>ne3pdsKgeeRcCv8Zo3;Q&;$@n) zIDe=~SHyHO`mqa>?c+I(VnYhjVHBG3+Evu|sH*(2H- zpwSsUyKGWrJ=MqWiHO}{w&kTgAvJ*j4JI85jmmVIFY5>zKRgrjW#5Iy!W^A;eX(|v zlL@-0QswtmB}~(`i(fqZ>^>~4g2RWDEGp8(poLgfCM4Es!myR^6^2A9k+1Lo2b@8( zad9U-Hwj!?8{2sg5_#bej_$q($K~nY`Dqt(<>-+kZ66cUNY({LN!sBjWh8P8F4N9f z$XkuePo~R88lLIT$V${R@GV15Dl2=YzG3|_vGV>y=_N^n^b%2){F3@BlMzO{)b1Az z2)Q|O;;#{2(XE71rAoNN=AwAya{NR#*7LI#2+Wul$-7moth-yRtZ^{i34yGI|l>Pftq>|vAAh?KIV2o6RYReoac2uMH&oF=pN9? zR@xnQYm?B$&;n1|IL=G@SGHCSh^ql&VqmO^1meU3|1<*WHB;J*TOu>iRwqU$#xtz5 zZ?PVfsCtq@5#+Ne6m^y&*nY3dQPuSTiLq5FJS}Wi5iaRCn78!<+i9?hC+?1MJb^v# zBCL16%dOoI6`r-k?W-|lW2GAO1Xj|Z1L0Wf2{9AT+#86|(1^38C-4<&)ZLd*r~H)o z$Fml`I;^zUu__TIRA&ezN}bXYyd@!Dr9^J3H-|C!Onn%|k-5SQ;)0khN7`~CiwkKr zodrv)sN8T=(?O;w-6CbNS{`DIM*?ayGeYpigd$+6XBlT{9e@ydE7Supg3MZD`DMHcRMwc3H1X%nv)&u^2n}}}mF`Bz}^th7c?L$st)VIXciIYVMNTQL|bM(WD z8FSdh${$WsC+n)%nLXTq^yBS9mPbA3fL*2eXDeuW7}j0Tx%11~38R>h`y{N)e2wXz z{Tf3{5@GpbyUj{~$DKpzpv$5@xiMEKF6F<0Sy~oGOsC?Sn5vk;_`dxA6<*8h%$_?D z)&bV&@_1q-s|jYUNkNy@46=@>8SDh}X$Dy#(RsRxHKhFS%%Egku5`$Ju?2(~Z`BpH zLaoKZ1;(T7?0|Fj!M&Y^B&IlgBhQXi7s7y6RwEK0V4^V!s*Ba^?sn);@1yGQ)Q8e; zDd*Wa1lh>5%coHanlUY;rAZ6au3h1JOHNxA0LSD5W!uzW zD^5R_I{C?NI_NobP5v~=*oSJY?$SnH-BpZey@=Ia&1NWy9MED3dEcXy9T|`^7W%2L zScB@X1~nXaV<)jlSVL*TSlwm9K$M!yUQ5NVR;U=?6MobP$4g-GDyk=he7*D$vXF3{UD}R2MbQwVJ?? zG9-xJ7#t4U<87~AYMc*i!o*$2TMvk}eE!C6(U^J_TcI__-g2PG6fR<{Vlh?V2jfbZ zPz=s8p^nJ(6=H+J8W9Un$E40zw&wioqiHlCaFW!m+If#Omttp<50yd8g}W$H1v5x%aOW;M z1VYRL%`S|XY+_r%2?)iVf^W)&Y$VXbqoejPEQGYqFMj0kj}}2KO+c>#y7%OW!5{<^ z9R28#;nntmu|DyNLGP28*f^hdmvQpwfybG6F^y9o&qBIJLOu5sdi{JirN8LZ=OmUd z*DGTnGpg9*R!AC0Xiwr4-^zx1G%O6YHLmngRl`Foh(W*hvW^ zphBU`k`DzJjBydIrq)98bZbk};LTbSJKj33U@S7PN=L9j4S})YjzzkPuGa~~tE?t~ zogwF9$AbZ(gn(-8)(>g}Jr6DnOg7wRHrImo#o58n5?p2n`tc<*a9p~J;A@1^?<9a; zt>G-iH?YN$r#NY=3fB^RPkaOyHrc32x!{MGdgWF?hi%Q!6j6yHn2Rc`RdFAkn)`&F z`DBmeb>OO5Hjd10R?1tig-VIf| z$BZ;GQux^{VG0Cci-MC4Z0`!~e~ZRKKCqjQkGng_`9FQeVS| z{xv0e|G|Xfwspuk++PN1QmZ)0qNh>!*vcg0DTuN?hR066zm60A81nN zX)wDD@IdYLze^G#mh6QeNmwp~ne~sgxFUqoX_~coL?uK(4kP`!`jJ6G{o8mZR_j;z zb`=O8Fhql8vWndViO>v}Cs*VZ$Zmj;pzKUiVLbLvYDm*#?FkYz2~3VCNL6Q#Hb(^E z1i6Tc4us@#K2O>#yd0Im@}ER|E&q$y@>ekJfs;!oCbe7KQd#~ zna+=2<7nB3ve^IYo)_?#cy82N>9mVhEkSpO@eDqsWUYw3nkA!*#w==>*FUW1bzmL} zLCQNaFqB}!tZEw&R~E)P)jLZzthV7Z;u+oXG_Q2F+Q$vqRg-ZV^91H*&2li<%qbQq z5`zELUNh}o0}F%Gf?dP*&?U8;Svy+tc;_oc#Yykw(k;HHqkW}+nurS`m$>knP!U2+ zSktk8=8pz0Ao;b1~%^89P5A2FnI0kR2U=Qw#Adn0Roa z%@7lpYI2IW$P_uTZlcs>qgRPCz5e?e2>PVn=4x=zN@vhsIRKLO;rMr|gKNgoqhh0A ziRKvQ#~sG-H)f0>1jR~cZegCVNw~PuNCr(6Dy1bf>!&*I97b z0=Ke+w=-$}LCwL_Hl6X$qqdfry)V^|2DP8(U`SE=)g!HcKFwU4es&s}A(euXBq(HH zBwKSt9-<=_ zaOtsi>$W^*f{*RtFH~b5$uC<^qYi&&@QwLdrM?dTsh{;@iTp`zwjXvY&xP9~YuRV2 zaU|;AcJqL~7P9#lGFf68B?O*?dp!-gxDOx)Mh0_3k&0M78& z(?BYt*>lL8U#e*>ONXP^GKT&)XDC>09Ern!F;U>Eb%m%VEPtM}2{<9jgHGhPhqEu+ zaff9YGyzH=)d%qBIUPJW;+dM=vQyKHA?(vEUG0QXKHmevvG;DN$A@HhR=l{x2ra|X zFbHrTX>&%Xa;iN(QcObFaqM0jV53wEZ~c4?Y*5eOZf?KSy0AW^tp!(LAqfv<)9+jD zGvMJ4d`kBQJ`YEKIa2ZM+&B<6ON9jv!>j~_!gVvT713;y0Pr9{80BR+1d8Sjjw8o2z$mZ*MA2G}pf~bum+zW@Jsq zMt5l30AxS;AKt>c?l zI7wV=NR1U_+A_P~n7&L42e*Q=c3$pp)w6$?mO1%Zt(wvCdNR4Qq1TtP3Y@w4l4ou6 zs<2RzR0tmAdSWWiFH+r<12s0B%-rJ}CVHf$pt8vr`T-{JZkbd_L0N!gr6=@{*=^jP zyyal#$r?XP2|sr&j~DowAeZ=?(nEVOkKCC9QBVK%%j0>v(OKVbse#}mSx?g2q!L%X zA57N9ZbCTQMY}l%;H$Qa_C}sc=H@P$lYP5<%`PLok}j#sy9fRP9=vMEO~m8 z2TdxxDpd7vpKRpH1$TdQw-zQyBq@`LaVFD1B}bbBsbM&93v6JS-9jBpq^TKcXxX23Zzg4dOslcnFr1kxW*PZUEms9@bPnd%bL6`jMjXcW~<)1h4Q+J6)3@{Al*O#@^F5g|_E@EcE*4dJ* zv+~fn^6@9JpJ;c1dcpb8K0EO8Td(7-`p)=Pel~24+xWR?+|c8)s=z7nZQLFHyB}tK z>*fezr%<-?+Hh_u??6uOXo)9Hk)tE`6SpNJtXw}rL}<*uAv*uL_J!~H{&I=)7H%0G z9rOHZdGsBFwwfxB==t%mTpfNFXw`qDpH!QucreSDF5wY7hUl8eTs_lI+6x*_2OA4Ml!MDzsAnWR+@m_@>l2Vn*8R zOvwmlP|PH{OZ8=Y>wOT%9pQ+VNB>}jUCOKz@PHAfjg zHTUl2a-iEE^Xg0 zmd1uEjL@^Jn3t?zv!Rkg*@r+hfTU^|z$w>ADScA_F}}eR<|ys(Y1CYZIw+8ze7|mN&d(z!qGl zVKvE%qe))C`%QVVio7^F40)kjxnp%($%~^?@?y0dNK|lqc!&zvs~kLnlv=#MTn!d3 zU<`?wU@Eo;DEWTy$oPZe^tox?vveUnOB^Hi@|3FrkA9FF&#s38nqoNG@NbShR&nGp zKjj1#l_k0;`0Tg?i)T@VAlJ*EwJbU^{r0_jRI`|VIEhk3#zf?O4aELx)+4vlj79RsJtNTbyH zWL@usLONQUt*?uL0myd`mq*K0;6GBX-hWFvK^`KC{e>mm9duMFn!}|uOF0Z`x!Hpe zj#>f!q6!#|SeQugAFfEeU&H@JllagBpf2=<(UG#B2O!Xf<&hw8);jV4Ry}}pebn~= ze7A4#50{6_BlQ4M?emOk0kw`j(Ut%gTQD4SEyCD(b12%ToT~WX#mooR(3+B0^Iu6? zZtJbvZ+Y|atvlLpy1lq+7dl`Fq% zPgP4Ro!iz&cscFyN`Ar4Kn5*sJd)4r?hvUN2;O1y+kfW;M|BkIu(Ao(lwZ^yA5x3? z>6Q6oH{Nv1&18CZeYS!@7#In)9puS$8 z`LzAuy7>)pbKA`%Iy+IEEit<24Kg{^_Ymm! zlyuS~<9pc>Dw1Z4y{zoF>CL-}GyR7((or7iOl(wRf#hfj<|xXA>6V5uh(~pkL8NZP zIdrp13KZR}Uqd&krP) zS9lnfuBo%B0}}dH`~SJxJle#|`N3a~Hz%ZM=%FMEQwCitD!2lLIcZh zqZ71Y(>}Y0P7oZS4U@*kVOXilj2?VkED1*pL^evCu*(#R|IFV=R5s}^h|Hh zXXuZV(MA0cFR>5v1>3E%TDgqbq=PCbIO)s5QdAq=3(_lV@h=O;?iIH9te3_H=Lg@$ z%OI{~7={<`2hebW61;y&t#@+k$zKmion|!HcX;8BPU~(8=gyxWJP>Ve&?e2~fi+g?+3XlNh4ENn$cT zcDMjatYcsGH87Q$y>g~X5;TzPRUNdZq(dcA$^gxi=;6F;QlupNW267=P5_N_Mxgtl zvq$Y=V9C|yDEsqw4?|7}M&blLuu{SxA>qBeahJm}KY|r-CTe%M~^;d1+R>H54m7c8MWK6CpFOr>fnNE^7 z71AeJGohHzgp`YkJ+af3I2$8Ah%3>w!V?@@O2KN6=QA9$*`Qqx#)sZFUU>ibYtIli zR(b+1wxxbHjud@2>T5%!?ru+AJV7e7LDRF^I6oi{nCa3XHl7l+bkn3u13IR3y!P02 zns=XEbn^Jt_l<||AAhMH(CU=UIA!ToZa~&)&1p@{v!?VuYXY!Q)BA2%EygzpmsT`~ zXWH1Q-PJy6W0u}(cQxFgO8 z@7iiUKR~xj;9m#p@NR*QAlVD_Ohz+fEyDaxL3^*71;Xpx?0>TSs;#+9tflNBJP-QZ zBJs=8N-NYtn}Q`sRT36Qx#DgzEKkhJ8SC=+V? zLMp5ECs9pxA(ySv!Oy8~6^~IyQ4kD26R9sgq^bLTams0NR{xX;^Kk4pB>h66qb`3~ zO^ULF%2VVD`-rr@q@K0h#el2d#5`Phl6Bj73&ixEWNSEs7o5CHJT^Dc3E*j9#7VDw zc!i6Le*0u+oAq-BNq~kMqwXW)&ih6xsbo;QC2i^86i4YtOZVdtQi!J{5pGt}0WpRP zBaUl($H1k#N>$$ASkkm+uXp0@f!FNQ_0h7|?0r|sTS^XDB9o&^IvC`n10V7xiUtEZ z9A&xWNLD2sEaapE4I`2cVk$%@I`Si?kh#$U;+)J**a~> zM}UG3Aa5z0=k@c%Xem9&mlC__5?%UIinr?$o%#}!stmH$SQ$Y=V1vSN)098c8CM6g z9@@oe`9FH?#Y}v4%{2D_Zdm)C*lpPjs>_t8slCoa(OH&io{3PLPh>;_9%M8}R~%xS zZkMbLhz1p3)H4erCMQKI$Hf^e^O3 zhn&v&@gXJPaL5rUouqv!ve?VutLn}WN_9df*>;jt;-n>mpRVidK?T-yR~byiMEJK* zgP)Ed%!mdg)z5Wou{3D%sTqr5S2bN)<1VWe00bK#DWH*s5CT9)3B?dI-E#hs@du>0 zx>Z<N95MGofFqrEE>m2l*x}BiAT% zqars)dLXBxLkU5V*%4WN$uWDx@`s|#!v_b+KNh9~4C^q3~S$vF01p)U*hIwX^I&yPPCEYFm#2KHb`*>y?~lViZtB^Ii$PK>Hc~=}GvNS9=m{ zfGOuiM4c(K!w?T;pl0KRt2JHfd9qz627zF%jTVs#MoXRpO=Hl~i(#mdf8#e$@jUzqxH%_cJ6nLj(Cbeij?IfrCWSni$u9bI4q0)1Hp;u?0Ud* zjW{WGv77TGi}t2XcwL*e;dO1=h_C1tB9KYMnyyZRwD3r}IE&?7Rh9SoesEBnLs?v8 zBRBPr$}SraI7~b2EE`zfaDcZf+Qg<$hde@mbZM(D*TM0Jojq|IM74B^z>`vl5 z8_4cla_ZLrJb%ZpXy@+>`3YZ`#6-EcGC$XAb*UL@zW4H*uxYms)PB(H%L;b}nG zE>OxZ_2AaRc4csDxH=gjz3Lry>l-1V2)&lN>)>WWlp4?`$7&*0{lm5MBjD9U_p#^- zh{2>L}l1}UMRgXh*ASr0+IFet`I>T!ciF(B@`30mZ(l4yNc>kw*L}T z2)5cO5~&C3wCy$J5Xqw0ze6f4&Rq5+$^{rJ)keDRcqOk2O}Lox+@Z#EhxT}`*LV&a zE>@Xlv^UpyZf=j~<{Qt=@9|un>Zpj`?)@${+GE4YtW_}MWvTJpQhsj6IF=jFE$8PZ zquy?>-*}E4K)d2)(0GoGWwV|$PqL2#^=7@NU3Q$(1i2*D@>ILs&Z=ccT)ZBv>F1dwK*<48PbYRZ&ZP10Qb9m=2Q4 zn{#AM;(5+z3h8+SGw~gT#T%h1hiP>tyY(R3R-^|PtOwafE48_l!?Y2aT26W}&T&_0 zs&74*uBS4}zDsx()uPbUa;*pZSr3w(B|Ydct(2dlaBu<}S|+?62dWIds{70TOyJj1 zX6>X);2#zE5g4S3mwddr41PFmiwS)1zKa;O!B5u}jAYJych0~o%Dh;Ep8|s!(SW2p zU!Urf#^TLvz8{A<&y@tn3+d^;k3*@VYIsZXt1#Vq<$|MXxM4}D;E|ckYqqw3;{Z~zhM9ItlXoX0C|7TQ) zn8&S8yUP8Y;D1OP^6~O&ODBPO#q)ZTe8?22eb!p)mC2XiY0uLB)*w?Xfqbi@^Zgv1 zSJHG0G)7(t4S{z3WGxJCWVY9}FvbKRs$|fZ_0?xXz%KvXpglaWozOV@CWU4_c*{ez zIzw*Oq5yB(ax(W1V|AqPU&Nt()Q;_a z9UK#OjZfDJho5>ZtX#O5_uh@6!lF8s;+cE2CqlN;3^=Y0HWhUDnu3tWXi+vZi(Oy~ z?fjQi7Sv7nSaNyG$3%Fnw8z5vWa08oaR4+pw!aHbDeOq51~f$!Bh|#q)6S-tNPD2u z->avcScahtb+PvZ?A3D)->Cj?PvOr3j+v-}lP#ywqAI_P4)Ht8(V@aJw#bHN2v$lL z$KNb_?vTwUAAo)ploW z;+N4}9umt9*~C98C}t9_g?4jA#6^dqS zv3qA6P+)&BlTL6e+Sm|%yNwOmy^rXu+#ZH|hJm9|)y8H7G1+62-rK6)t2bj2B&puR zVAp%wyhm7!cJEWWE9pM19MsNrGp96y&EgbWmCIJnziCID{d!QX*+n&Oc8M7r6xeHj zZqnD@y}he@F4^$bXI3^YX5$O(;)toN4YEs)8*)tsu&rxm zv$9cttjF=@w>jDi(^c6|)ACXC*;?ro?Un^LOH~}$iI-Zhw;#)SQ4&#WCK)}2WMO4! z@9CJ*^qKZJn>={WN%4*4LVprUuXUIbdTr|BNVIxvppf5Y0NRckRF^vgI;7znk zL!ww-Xi_4QK1GCn>7Bg=4u;lA)-!UV=s-qo!&sW8(XZ!k^Fy4rzS_EnY?NDH_u6B( zbbD(z-8iQ+7hA^5n0mFqT)D-Q5W*b83&&fnmBD%Ev-IZPrdQ9$t2)E&ZSj=?xczU4 zuR7=Jt?^ZbbGPHGYVy4$zN#MIo8v1-NA+FaR8_0yC_XCmLA-OEedVtzZ}g`4N+m!F ziw1leo2oX2H4=6lu;%=Z7i)vWYdsv{njeM6rcEx}pZy^Hg~9Rsq^$`azFep0VQ)IZ zCmS%dgxU>DRoB8oB<7tgRV_K0FV@k7va$G`BGp6HcRm34Xgl>;k9FSxyg4_!#{f2Y z=AZ)z(-^ho4LWEaC< zi;3e0|4GJ~7W(Ui`-Rcbxz@Uj2_5>&-4QsB8mGK0wJ~{q#yZDMPlCDkv^x)hY0rji zBC`4ZZOdk=IKkfCTY{f!ajFJS)45V(cEFzB57>_zZ^)?Xh5s=PHlPX;Bq}J&T?h!@ zsP>oSO;vcAY`YCB_E{`kmo48OMK@@S&NM9^l1?LiGiWbb{o=Ur$Ui3j@1Qe}#+ZTEh8r zsfCzwqn#poNeP8u9$%c}*r)#S*7*?tf6JhN)D8h1KY$MKFhDMLImO0iX^kdZo#xM- z;3+vlX8^45Y9TK((GeN^JAg8+P#)7Hb$%e$KUgO^L10KHeVL0h0}k03@N^&}S9-1X zYSFRfzzba7U?qhco|O6OKvzkyPbxbDR0IpJbSOLS{V3)Ki*Fvfq=y7}b#(IruV9Qs z(^UCX)39&Vv?Q~e<{9CCr8D1JxFX3MYDjCoL6M@v#L)>7?M_Ju_rrAAJap0h4)CNB zpvPDY3qU&n>YQB$xf4(*;d%o~kZ%IedI@8vDC8uj5Jq7av~g*Gnz1!jJF;BapP_fs zY>h<;6>7|54F^Iwu27h94roo9wU~evV^TtG0hN<=_L!*UvhS2z6;e@I?65KJ{lfJ+%M7>{sZ=v>gjJ7;fE`1+??U62e&nlKO5EHq1OBrr)ko58dPrzeA4~2L1iU}!Lz<^f3;xRyEBU2 z&c{I&9w2|F?S(}Sei59sMl09ugkg2~n@nNHbVx2PwcRZpz>B(a}Fua%VclKAAGgQ7Rf+j)##IDSgH-z;s8 zS=tot?BMZ0d`gZEK_-Z=%~;-@PlasIi$PZ%cuT;wMP z`-FLcr;%>UXv$9xc#^gJm7v6A;ALm*T0h5HaPusU4po)k57pUyhe{H}@m|t$sw<~^ zIkh@WWFouoh|=SZmPhh(Y7|aSCjM#;RQ^t`2M@sT$Sz_HayYDM32dj9qDJKp?G5m*wQyqq~F#flV%I}9XfWzgX zJb)-&e>mm$>7^Jzl&(+LM~6HB-#ujTRl5FgJ%CiYKBIaJP^$c1Xni;hhm!XAgG-#+ zuzmwEwZ3bjvthwiH`i}WX715MFo&tpxqg$vXsfc`j=1GgCF4Ql5MvP{ZqZGkWxcps zGAX+&tGBdN`~AinRQJ6-Ec(lxUYA3IiYS%E%2uo(X_;9+s)Tz2utn4@)Mb`U&{p}O zQ?X8!3@Yq9F9TZQVS8x-9eD;yl&_xZ#IsOC-nICN?uZU+`FqR_2E`X)O%Cq_35WX_j3 zwkPD>3i9rS;s0#N32+rr>sG*QH_^12(G*}3_3|S7R@pm0ILTY&sRz_n3F=!9ru8`L zS_)AMf?5f#)TxM?6MCjDzp>dTgj%Sa+M3_CL}pWkf210wx!nvvdWUTid%ZKS1XLFM z*~5K5xc4@X8)=sE37c*`LA?dD@Z^Ka!##387O|haiAR|FZ9nPg1l4I3v@KK>bgzDe z0fxO9!>0IW)Eqscg5<`T(p3neF5n|0Xq1nU>Vw{;)IS9!RD2 zx7Mw*D|KhemfDT*mS~d_o=h2So`O5LbSgu9LT&ow0nO?z zOy>A0M;`gOEP|3-(ddK7iWKSNUNd^CfP=z-G+t79^xIjM;}xHMpl+(_gZh#A-SbqJ zxm}I? z7Eyb3cL1FbJq1u|V5ox>i#TB7>KcdgEkG zuw#LFRTh;97vD=^L!#vF(~u37lvRyrOrp!k1(cfc2C_>by#r)^n?$dy_45O~KJ&H5 z6sE8yl9)mfB}uOgsR=bh7Jg~KhlgBc0|XI@C`P(}1Dq6ANgqLg^a<%|*HBb;yIS)e zvi)0Yl6^HE!ZL-*Ix~s8@=+$!{lR&oTJv5twf544hJCS>bq6$~V>GNQtioKU*18t; z;3Je|b4%Sy>n`~SsS)2eOoRxFG@f)C>Q34i-HbCW+(;W+zog6)`dH06?X`l;d)5Tm zY@Jr?a!Q2oII8?N98*G+-W&jL1#h4kIP<6Cjl@;kicMK@!5df28RuD-n?btfHjF;$kSC(r?eNe@FHD zcVJVuQ|mWO*wo&TQ7Dy=mQJ_+;sk2n8CmUIe`g@}sVT&!{vV2f*tH^dasrHj6N*Op z+qU*gq;G_w{4MOD$8}T&C%h$_xOA3?pybS50-%wDwoO6*H>6iOkU$7az; z3dM0wNuhX)DJc}!G9@Zw_Nd5NB#)-lW|BvVQ|OxF6nw*x0f$hTjVmmnlso$S-Fm-b zBaInKr2`0Lvp7@lim6hSgRt~hVR4d{#lW#6FL2tI&b>f+fIk=#ySvchm1 zSnsORFOIFplh>5+teNp(_Uu3jRAB0A5~4+=ErJ^Eg-=J9gn0&~j``2-P?{iL^5S`< zPrKJfmN0Xqt&vI)X37HktAtE&T}`SsAV6eM-2`$KZ-{gRR>XPS#OUc<~cExdur895th5h#p zv?2XxC3cHTgMu_uv=*znK^w`TK?|m>)ZWM7r;b&ZoXW_NffD`KcRZSKjfTi0JME_g z$G=%@_w(d71V>C_^RI;h3M!b83~6uo|CLy^k8rr_;g|;3Zb!b8Bij6SYp4S8kMG9{n&fUh@e+D7tC`Hcy0e#% z;WZRfz0NBS(|auH?JE}CDSRanZK+)|wFGFbNkh*{@y1SK#ddA}QHh7;Db#9gty9o9 zHqf4a1&sP`nRbL3sap@tF4i%tr!6B*y&8y&0^7GqJylev*6Hta8TcAcr ziVs0;{75=RwL_R2qA8dOP+&xf^+2QEjL664?^;!$#Pc$%K#5*Wfs_q*v>E#C7}r6j z%26rg%188t(4|NOHyg*KX5zZN1IdbdxJG_`wQi;IXn3bC`+T?F z?o}7`YRWkvhkr4DT5YYM8J%JT2uM`Lt&pIsyodywio{+IFKZd9IvGT=eq9Z$U0Ck~ zKYF5B%Ti;=%v8e`^y=LlTGjF6ZJ(J-K;(WN@+wB!Y9bXBdalxc!l`^B zMwCcG0Ar-KnEo_EixCYb$D71u5Q;Y%EAcuL3YSmBh_^LjYi~vzNbx%r4k2hkUEvVg zb~<~cljoXB2IP2a!%;48_rlIU-8w+ABLPJZX+ch70$`1?>XG|xa#f*p*^H@2At{f6 zp=bnUs~&cvh|eEkfMo4ilan6Low7xt(WAAT$cx>jOfI`@=M*HKi^&B*>1WnG0YJ3j zat`^O?gUAaksTA%AW7_uog~SKh0bcVF5#pxk9K8pJU2~xHAQaIDH*b5(#wrLjnHW} z0HNx$La0i00$Q_AODc%B8b?|LQXlR!tpiDLf++%|e7m1UDmGBhumL$kFk6_aZ{i-xQ9rllMiV9DZ%vdd|v_xt)@vhk|M_BFs&G$3 z4gn|sZigwCcLh~?9G;K?$4tu2!xn~BDYQQ=>*r}uPiWM((*=|mthOI$vcke{CPcKK z2%iW(21#dGD8=BKWi$#U#<-2fHqV67SXW%C>iV-lCJT%+zNlr6CH(cS>px*MdN5W@ zfDcTVk99tb3$Y^~%JoG&YMYPkvCYTnYFBo%%E>}Ct`x7gF*ap9eq4Umx`J%7Zcxz@ z@iq(Rv*rfhOx2X~jtN&;pI!u0kkdOSwU(-;jHC-a>0uPwkx{g)lD1}vy^XZmCk=B= z0?}Udl^B$X`I=;xEJ7|#>Kofflk&@#YSVGTiH_NGotecFLeeqMxeUYRg|Gz+h&_MH zwxX7!Mhp4sLcZU$6;;Wx2wTz00b8-D98`kAxB#t1*oxF-U^MV@q`^$vidOTOa7nA_ z=~@DFxUDW!7NCAiT7XvUT1d-^9RZ{o4HFjNl~|nBc7Di7(>x*2I*owCzwNcFTKNr8 zW-`;h`zd-&5eEr_`d`qn`f!LrB9G{7fa@?7N~YTElO!17gjU#mS4r@}2%)>N)FeGq z1Src=r9p6P1mbdBd9Dy)@L*3jEIyh9 z|A*ZxCwLQh!_v4;!cM^=VKfYmDm)jArTN{6AYFr#P%72-4X}uZ+n7J=1IfO)7&EAg z@jK>SzePujkdeZF{D4MU)ZmM_RZ!L@{A+K*{JS~Tt2`rc5LAJ`P4rb;h)w$X>7sU1Uf5aWMAO;|^9`(uUDIY9W>XU?)NU$^S)CiTTxU*Y ze{ww(YQ9b}XgO0{pD_9O9V%6uwka+ZJiCb`C@85SR4@({nPVZ0WRh`&sXVmAP|QlI z^bLwLTCC+UQBzG5?2Vq)<1}hssDj&%1HdjGT!KG5xXNls?n!0E$h}L(LZ2B4Sx%?m zfFsl+Ow$1u@*r2kg_TQqytS2bFa3i(_isPlqCAA|yxBkAoRwLG1=Jv3Z>oS41gdMe z)*I?K)k11jHH~CYGo7NoFqE+jRY=Lrq=hw)!qEwu*^XvdVk=6TX+#`OgfM+|U9ErL zZTEJWiOa39a$+h@W%qs0smMMwCJRv&yqMW@laZ{?x|p_WbQ!lL_}ZX+DtB9$5CjK} z`qA8&7%nS&p*?J{k)|_guo?ezceQMGkVI!?GyGS72diAWr0zfr5b~27psAtBLMy=|$$USg~%ah-sq8KeDi%@W=El8-zPRP)wyvK=p8Hp7{(QTx#7GFI7m0Oim!b0rSJ^NK^RGKn}yjwwAxjPF_e?yOYDa^f`(CmJ%|0ZPipxw*57Dhv-oHmg~Rgy+_}z=sCdc(XZ)bnP$qrO z9{a%ydY7s~Z|8=GJN$8BK#SmBo(2%2RtZx&auD$^L`4(E+A2R7#PDY`>NeIp44A%4 z1}ox+;{3!<`H6%f(iC_^rL_21%hjN0+;~b0rf|nr$-*u z5;X8wo32feL54LUUJZg}QcaNKRv>uufC%m+1bdSStTp^;@5?l@r;)ZR0rDPD)D$>; zJ~PL~HubB5Ct)z?%Iq6bADb@jVAMerz7w(F>W)qOxKr7InZxk};!b5bswYW@WC}hs z-c0=16N}hzqh%e*6;UJqfI{1zh2j5_$M-;F zBxuU-Q-VvLT2Ez%ou#T#!o_1#(j_(r?UXL)J)UlgmwQ9JoNde}5>pJ*Nv>XlVcg*| zB76A18p1S#C5$7gX9By!&-qR_7-GhgGLGei7gl|eGg&a!!+s|`$dDf#^f+&7J|t5} z?hu<~B2b%6CtA`F7~F*F)vV2qpcZx%eLiFHA~m`(yzA$%FL>u&mBSHv3lgVQ!U^zQ zic_*AB|nxA%qqrlOrW?xXKYE7i|jagN?)}e#xXw_9mr6Fg$qS(*mw)|^et`;|Lxr~U z=ZE6^ZAh4lY=r9^P^C(VUCqC;ofKV1DtWbatIm7uxw76(%l*Nj;o&35O-0)^kN9E7 zTSFyHFTB6bo0i#V%U2qeGH8NB4@POb+OmvgNPA@qA{sNFqcE6cAeY~xIc8?~dCMK9 zLu|&Z?0Q9Kq^GC<6#g)je9`ZY$rFcfX)Vw5&_BHpq9N4ZUQCgpOyU?M$HU z6y+QgHlBgD?Izkz%t9L+Fo`xC=|CIN5t@E%-s%h zZ|_{9Ob?_umupCfazUv`bSaQ;{0={owfLpZfNe|T#|woRyhw7nlS2@38QSx#aX*D7 z;yT0?*C!MYKxW1BxCjVd*s>NF#Lfvxb}e%Ze>Kx2l0A@n7UZ_q^<4aZyb!iGiw_qN z-%l9ePEe9bMfHb);3EaJ31AR^n2`wiCm9F@o%%SEVMdboVXrSt$RM>hiqtr?L*7lW zxGN-3=PNVuaAYoxa@-MZm(SPLzzw zvRf31Q&`a&3TBC=(Qk^b)TBrU)v1q%2CwH8xv+F9krh(Z;*z2iw(}pv=U^W5iWvOdl&YrEX!JG#)n5iNCR&z)n zh#|d~!aYSgJbt$!J=_@5qm3cWGbBlcjNdWEhxoMv$DCbgfF_5fLpB)}2fQBjuttrR zX0;+a$Ei9K$a#!du9}g}bJ*<|qNeDVS;*YqSuE%lI#srcEEt-T@UK;X5%5u44Qb-# zTdMhww5>m}btb1i&2>!ybKV`$dVAPIA8wBh+p&fi9_MK0K1C?!`>)eTD{CMEUbbmw zjPDu77hLnSb*KoS6oWjK;IBRBPbFBNYO_`a=lcP|nw4w)2}&bsFqhg;k}W$rM6Fj3 ze5}3Bmgvpm3A$QAY5bPOMs@Ue`kfRsd=~e!ReTuGT>Wzoc6-)9O;h-1(Y!@;~t;sseMvRX~dIOU5Lc1!t)y&Oc7re5pNXm+f_`E4m`c zB}HOr;X91Aqgvi+ty7@`oc(T%vnak^G-vus@g(m z2Sf6ODM-EqB*Bv}wyomQ(;#m6r9ib%-00zEP4&=P=mx%pIZD|h$)s+^L-fD4(&M1b zqHUL9%Ps?jtM2HOl>C4+H`hr_Sm(3`!Fs~5cKYN8DDQXplM-EocW%<}jTB?+U}uUj zTn5YD!1xsp3kpz!5`$aGYnYIIUrX%r3gk;T4R)cRSf(n(#uJ&UKG6vwd8xyOT4U6t zU0%2YzYwU8w}4uG(L4OQrjtDz?fi6Z2jfIR2+>~@RFW8b1`-8&39P3(Ht0pcm@aM{ zDX^9+f+idFt*tGpsF;hFGHM0GFc!^@Rkpxdjh0mnKywBzNWQB=q?nGFKGNa+#|#42 zk(^yDJP(S&rc+!nYJt+0->U1Vv%*-6Ka0f|JJ>aj@|=N!8=k2K^(6@g8Uo87fI!I`4*8?WhGu@G?TH9$BLMzi;SuYt_~vl z0Wr$89^}zFxVmy~;qfQ!`af$yvHlv`{Zvc{UD!?Nsv1qNyz$BP!xWC37cHVeK1^4p z1d4!pMu$&jG2oYr@`boM;OpmNC<5{MxQc#EcDTpN{0YUX6O!mq zm=#nmhA-1Yq$rZW_&eVEHytDl^}LGlS75Q;gsZ(-e8on^oyAvGL=B_MT)1s6)L&(n zLAI^o?}d+28<;Dq1oWe(z&ndCw@3O_t~|DWi?+OpHvifBP3OAn?A+cgUTz}*s4tW( z6F<;qe_Vg8l3LUTiyM@bQfb!wSY^PB2V6hAOu<8$a+TklC=3$36BkesAdtWVX!3?~ zL3?}lB@jIOR1ZsVEZGbSK$hu(60p;@(^z$miA+ylSIBSrn&V_d=FEmnTJl)EZzerE zU-kH!RMkzDGrPHnlEPHEyl>Nb0B%L#48BzBK1Roh; zsX{gj^H_-UHj9rHV!Pw5j}+pv+wndbrj+;W)@5~IF$fzP|8EwRn0P+=m27w}zDhP+ zj<3=s&xTCb)HPtd6jy=ecgH;bx~wjUf=`MbdJ*(MyyG6$Ts z!5G-_0CopuwE;>Ik(42zoQZglj1|Zn^9B}|d85uHz=WslL&~=C0O;!#89v~qw$EPa z4z|lYdTAvdNitE5c%41_tgaVEG0cXAOMd2+33BiqO{Wt}LxOp~Q?Rzz9OmmviEE6!-SHj?`l|TIL+~%3s zJ)-7M$xQVbhzsMn4`qcaf{ex?wrDjxj)^-$=niKF&y@$_Z6ceZ8=-6|}{2D|him zJ>21MW)ES5l85w6X#8$Om&5*Z!e+Z#RG5Q?K!K2G21$zwb7@h5w+?ZS576-VlcUtc z_M@PbBZxrs-0)v{fOFW|0Mk}!x;A*$xg~1#P`y0y)ZB&PA8A%-uCIIPC}+({QQ`)~ z0^J^u>3FRJPji8)ord2b2#PE{3ZWcIgc9(p@{;KU_(dmI2EVrd9~dyxpPxo=BqRp4 z&WSyYMW|I+6jnstaC-_X$+r8G_WQCxZj~_&X7MZ!7kG2C{epufZuC zh_`tiKa{0KEnf#{U#$t}^cP7MX;fM74&O?`CQgrKShXe6%1g252j5WYRI6`R^M^0I zm6z3gZYFn$_XJ~0Xu(2NcM(>$7@yh6yTXik=seO(olq@P&4^LdNey+by`CbpbUzzv zk~p9Yz<*d|n3}`^LN+NmV)7+D_nzQ0V#;ss-=p4Hz!0&|0wR(tk}u6O#z9)rP-u7N z5I-bbJGzV65O_ow;PK22Ul2EgZ<|t&5ysPlir@N4PwF=*h=cWwk>DY)-apZc-uOTa z;l1YvTa2B>g|eR(9O z@A?LbNq(g?9-s`(gmC=7vv5QxZgJzIAqgR^@kipTNDxt}{$z(f7E)6x2vMo4i|3$% zP=}k9I^2j`W&6&ewEN{qwBt5mG}OriAI1q1ejaZRP9gR&&n{wQgqFkuI@x)Jv;v+`rLfKPd2Ih2C9LDu{t7Tk&1w21@AWC~xCGb5y{_fIgtL6Vm&qePPs zT11_9a)w?Z`fR|TFyIc*n|RxnvI0P1E_vNL&JsZ8sS~xSEVNfvkWv+L|7|QJY1S62By6tO05+C4;=&X7myL2QXJmBa_Pzph5{y~sQ$Ti_vPE~`26cKD4Oe(A zyBI2WfkmS=zoqKAS*X>D63?wtHxYPmvNSidC-Mamo@WSx`{M*Lp?FmyR+Jp&Ar!@e zXtv1hk9?_JV~6Mx_V8x$q8Q;D>;_~eOeDG>Os&k%&-GeG`;8e+NY8I!atnI%NveGq!-{T!(us>S}ht zq4jVYGtu&nR*f|R`a@;TdPosJR!gzvqk4HCT-VN!|->q*ZkQ;kk5jH+ld?`ck3;cyT!NJ?v^T$zXB3! zck6AlWq`P!xf|RFUCn9zaX(cN&;j_AB(fnZn0o1 z864fBDH`1>BLh1An1U|ZO@?x2&)Xe4=8YQZ()8I__bQ@d@R$OEL=Fnf>1iAO_aYqZ z7P@=N0TRA^YK~P+th^|;{&Mevf?Bwxb5hR1`npIAD!BjDDUV(OG!_njL$Fs-}jC_TLCZxOrZeJ-z7=t>iK zNam=%yvtVTV&rJPY`9)(HPqmjD==P`(Br_jc$7g7|4_it%%b2+hMxpj1*neBK9<}O zSt^pYK61!*Rb)$raiP1leK;A_cw7tDHixT7HS(q}4ftF}hw$`a4(rzE;~fssMy2!G zTb=|X?V75L)}OZ8=fW>WQYrNu&~}q2A0wY8 z2>J5e>a zVW$K;HeP2LhODaZ(eLM~exI-Ub@JzBzec~64ftH@_i_jE>weei*Ou|Dep&9{qu(!8 z{k~ZB3t>4OYHGY+Nd3Oh!H#ynBl^YImZpWsg&m0$@kww|Jq42K5z5mcz~UQeNXZXW zDrVj9X8nv=r!~uGbEuq^+z17=x%#uX9Brl1FdcR}6apWADjrzk>r?SnONf`E1vU0W zeAS|6!_Gf&460`v1>em%DUM(T8bK^D=wP;j|11>iIgO-QX^nFCpy+{iugfPG8JALn0`^Nr}40wGwO zj-K5xz73$1ODJj9MXrr+<$`h;s|&A-Co&Mt5#7u!Wmd_GwW@G>M_QpN#-9ipl7_w% zUl{?wZHt^vx1O=2{culU$_y9MZ|^)kw|?XJH8kw}n;0&3+&{|R62q0Dk?2fh1aS#Z zA|ohD9=FISQIsa~WAT9CV0!heFqw!;q0Hn&$_{@#9%y)w>`Va~C8|{@xhcS_FWeYU zBwLbw_4apT%uR&dz;l?G#rU$d_`@FCnKdwrN_aNRtbLPDNsJ zoQk9cJEbBCLD@XyM-F;LGLqw84dpE&Cs|BEV`IU2M^@BdZd*~4S|l)Y>Y}k zqkx~QdjCoLM?@&SPoLZT(Z{@4r+xzS9d)iGl_w!V>U%FL8RZE1O$$mN+6#js$Y6%1 zO%F4q_&CE79ZX7r2)!I3V`{;>4<+b;gh$Edc9*$PIIJPm&kwYM5$mKjoyp2tN*lk5 z4~(Dq%;k$Nl>p~9C~8b~a~0?Bk8ge7c=-NthbRAuo&=St*Eyb`>CU+Ya=%i(xrtHJ zp}epTyA2kUmee12-#?yzpBj1bAE!nbp;-*zzJEI!Gap^FV)%=^@~8Yc73(QA{!-?7SJR!^zARAZ+%#I+zJ1R zscE=Udc!W3rmW#g>AGDkUEi!-DP6aVrRxn>O4sdT>3YMJ(sjF7x?a0d2~t4Tb!*~q z`Cjx-q{b}DVIITvwO%^ec~LP)aIXl4tf0^FRdOXrjhxqKQ&{5#eRA~J7xc-?FG3K{ z>E)L!@Bdg!f-GT5WW9{HR{I}3@?7tN96Msvc9+8Ff5}lIZEBkILwM{UAI}hcipy^UFNUhrrBp!zfa8}OfsVQA|JGY;XrJ< z-k6b?h;+R%gSuWh$&DG;bx-$$G?}=;+2xYluN>sq`}I;sRAoV+_8Z;l z&L)mA??lg)*RMM`fy(s=SSRkFQp9n((?EjW!K;zV)SU*Q=?+DVWKQT#O=?LnbY5aj z!SRt`l9%%Kwej<0YPwp42;~XrINyRg$y9r{X1>z)CyUE0+-RZZv-<3uES}LPGU#c2 zBCbB6Pwk7LvUs~Q?u6}8S_E7cfBm7#demx<58^6Z4 zAh=jE^mrnwQ1&W^z8F7mVdc2PCR~u#%H-)2Z<-8nQ%F*_g`QPVr+PHLSpKmM1sYW_ zN8(ve_QxlbJhHGJSwXZS$poZ^EV$!$K! zeB9)NY2V<3XmrU3!RTXrAf#6LAf!j`lG4P`CrZp$sb?iH66l;q7a6O>(HH9oGBYF5 zkyh)fz_GTkqYjk->0C*28|E%-V33ml`SET?yVpsAJUjWXY%!55b51mzCw+#Wx#U0# z=W@M`&SNH3)oLVy8Wq*<)#6FYK#)(~A9Yd&O(%A*wj-QNV`5xU$_O{O=Vw#4vtA3T zk-AmU8=mr}7wy+iZ?wve%7=71z-)q>T{@(r(jgt?{s8=tL{P))^>I^bCR5b}sGz|{ z5eTuttN{&}uAWP29W|*>4k!k{vk7=j10rY4wK=AsVQe!2!a$q}5EC7(>BXoLF#%9s zKmDAY=80R##*BP#C*3(*^iK`X@>e&C9z=4RNoGv>qjpfwB*k3qFH;(Xva-=KwYh!) ze;Wr~iv8qF_=;!A%` z$$2_*Y8?cRA8itf=P8lNI%V$su+|`R$DKyUDKJaNP!3(K7otiYD8}yxq$@H_;%i zQ7%w~9N3LFizaUZn^C4})k4^U_*7g+UMO4#P9n>$aF(4Acs3zW*rmdzUW*Wv-b*MX zy#Pv%HW{iqNzHa?7KE`S5$sLiOIXUd5OV42y>(YQbj4j&>L+*QtK05FGZe!(mHQ)W zF@_Nti>kBWrXQ@E-d3GZ6|n_^<`|--Gov)`sFu2}gh(wt4$oHX%&5;K){eK&rnhUp zhD7peFi)RNPiwl%G`$3+%l(}x1;V|u+m)E!m@^(GFM1=T3qhQg*zo?8Ce1;W`%G*75)cWjw16TX5$o!iA5)(F1TV8S$Rah^hC z2ZSVZAA52I3GF4sO=ul5LM=|zT_~9bdvR872$v5f;lcoi5-yr0Nvdo&n?g{w%gho+e8uzaV5Bf={A>Os;eHNHqsQqaBvPt&9)lXhX0Li zL|XK!@yPs7Gu8We(0V^HY{hvu;l1X!6)zR)hQFbS(A>8=%GTaa#?EpwAB+{7lM58!Pu^8Iywf zW^&$|VGFVnvB%xMRRvGfRt=K$f3R@QF6CAD420+=loo4Mvy~RWC97;X z=#%)tRrCj|P4u_4TYpPce=Kc)Fg7Ws_)&NKIT@l=#H*_fI*Gb!K_eiU&xb}FXiqW8 z?7;LU9hj!@`}=k?>lR@2DGMN4QOhdHo4d?huHG8o$@wo#`p>!YVHQ!u&ccO>xLKjN znY^P1Y8OUt8vHS--&4J)#oIgYKG*qnM%5)`nWAceqv&2sJxN?9A!!5epb&uUIBX%9 zSlK7p&S5dcBx)q>;gCcW#$+CT4*7_C&^9r~J?`RRUtOmu5H&5^14*=LGfw{UO!0VS zq!F#etnDNXFp*TTGH9=EG`2ipx(W6n);ybCG42w(rtn!UHsGG{%M8fyU)UJ42+0l` zH;Aki)uxNeWI_2!ba_rS4iXOkp?3R^easqDKgO2E)m-J%;83h%D$c&?frKwN@DeYiTX5H?(wY z19#O6MKMzBGVNehSb=#t0aO#uaaBSpMXi6e-BIcCcH!r$3Q7j;5GV;EDw>u znO7P?M}q%_L%^@7dm`#94XH|zwN{QEInu5QzNUbwy*+%dPm0PZrvmUit75Lw_`@%z z%lwk-95qh$4CF_XHp2N#oar03z$UDp{VmqAW^MM5iPuL!k;BaX8lj?E4A@+ChqZ*k zN%sR$I;&}ZEup(j!GB!yyK&ZbZlZ%}BwSH%f+JwRe? zl^fMUrP8hB5OTVHU^@|4HvMM9Hevcrk2fzg&K}nuh>EHRlB=)Akd4i1&=XimgAT+I zO;3oKc;?<(1he@dJwbe|M%{f0b@CD7A7i!fUFo)qUdO6LlrYThZgK{uv;=QS$XC&t zP4%Wa@HO28io<(g28lBJ=7!_U7B?z^K4Gl>w?%y{QPV_~DOe`6Y6-_SwO-MX4;rNph&wg z<|<34Hr4(%2WMsKf-ch3@NK}YLLyZX$X5OqpDFIv z$V}j?3O?mZ?#rKCo|g}yvu>hLe=@i()~DUr{!3njz!J`*QU~UT4|5^a#)+@7Fl&{? z*xwm@0T~28sGQ1cD&<3}2Cd|BJi2$^h^&i;gXA9=^*+r3pV-q2n23+^&SkfbEKWNi z=?b3nrp@2UUEQ0zsu-1K&$>%;^(Hs}5dVw)9;eoquzu67bD6_-6GRVmfxEL~=jDmW z-QCvqd+&8sUdjjb=85$I!{p0`_(D60^V{B@&K?BLxw3yjs!Fn^m6o*$a5x*vwbNf| z#APApxf~&>itdP@AxW}q8pyk|*r0q5LoL|>ww98t2rOxxfedP4@sJE{eym7}ESE!< zkl-2#uZ7%^4+`onZ_-|o{J`#Eg2t>jb9OMGMedRMjCGqj>%mjLuCtro3mI^x;2bJ{ ziQJkTi}a4Cx|ED7m0nfDJsK9JPvZ3OE;z+aoW|*j;CBI4A*(8qCFX~jNno15>1yC~ z*uW|CC!DS{ak`?6r54vFaSEb8M7#Eru#{?|JriE%@OLxOQg%V$;5Uh*l&NSJpYPMXs};?sR>$pdW#LYH`B}uMkUaA-YJ*wu#8)7(zbS$J z@X5|Yng-W~oeDG(rr0vP$>(h?~R%>e+m=T(QPywtUvMpgVk z{Ga4>*$nnXUx!x2#>Z(SEK1gf)q`uV`Cq<2JxaqcB>G$8TJ$H* zkN%Xj0Jpj(O11fx%E3i6yE~u?L;1zBv8iZ?<&=R_T+2Z!kJFV{)(4u9iC~Np4AoWr z){+KCZB50q>i2zoAMZnra&l4_2qQF~rNi-nDf)wMN+<1X5y6Ux5Gn!ck$tvtK?J97 zM2_a;F2aqpM_rTPifd>N$Dw4K%F1vIi78$6*`_&`#A{u$S0k2O<*G`lq>#%$=yv0n zo=(nV+ncrkMUkLs+B#O#me^{|O4#T}xz*ATeeRtxRn;6-ALDtBODlB)HiXzRL9T^b z#kFb&u{k}@1QTj?30NXXr8w9G*>i`U-C3mqI3&lSm(Cz!cbKJxL;$2F5TL;%2&#Zz znsVvX`Irf!e~$l!PQ`|H9%-I-RJJop6+Y7L48O0l(KLl{KkS|+6Y|nGKo@a@KVT_< zJ)tI16RP{BG&+$cMj$NYFe_eQ*3SMKX1D@)AX$f^K(m!6Ll>!4({nT0DA9ufum_2( z0iikzBC0!E{&>4+rpWrKDmw}6&wR__9^|s)?Cq2s%lz&WXP@~RNSgf`5GN;k`N!K> z+Kk@{%4ZiL?Zik7X-Yxq2DCd$HT)E2t5llEDZL>o$tq3HH@+Veh30skzgFJSvGmvm z2WCb`t<=#@#DZDUj|%)(ee3iFXc%8Ky~!24xFzcozhGqO=%OwmZPkj z^g*mp#3}x(4mT~k=93PB zMc2Jq%K*n)$0ba#ge#xGvIkso(MEmJAuPmHD+8-hPYsbJ^M?lm!odBB#)C?Y70w4{ zH&`4CU`?wP77J1yU?F*tmh8S%?XYN#?@G1mTjM)X0HG94pfcjycD1m88cE^?<&l&O zA}A>tsiFy$#zit~E2D^?&QH5YL-r*&GAAQ(Gc2JT8>^C@hSjj^g(mV{?F%LG-; zN@!oM7BBu*5+>z@WPtkiV{w3i4XZqdDoEDIbKri?bEpG7Ig?>|21{0rWKLiHmAOvw zgI(O^#FC0;bP`YMtOt?U@Rc8y$*!N{?)TLPNhnp_Wn^_69RIPhjOCzsv&g|0(Um&0 zRu^5k#}}cQE_9`f^L~=WX}+`2wFVJkA874}Z&E3hRS-5q$?@LoY_QlDr*uT0sj=uZ z^@!+@4(hmR?uhTkU>z@&TcgECIO1fq1P?BH1D4rxv0Tzwk+S9V%<}!*Mh2BW0A@_| zik^P(!uNbXAH_Rv8TH5Q3!_2Vf5)KX*Oys<8kU3M7qvae@5I|H^juvZaoRQl$VI5+ zgAMRwDT;XiE%^xOl`MBDha`>{G^&}6;_H`-7Z}6R@L#Kkn>`q_0~`yraLB5bBQyB@ z3j8?Y#o)hD;4c|`$^dH9)M5r-fDKuo3-F_UpaxGcpuVoNSpna77Y#fHL%CdoKM3#* z8%P8s)f!}5PBj)7jj?DVVn^pW4k4XbYp`CHsFDKgVa!QV_XE$W0A zL=j2)usY;#Do?3&eW5t=jkBL0$d#JpT`ln9A}UYB55 z7~C`F)RV;G1@ys0^W6W>-rGQ1dY$!s=ktD^bMKj%E9qJq+27hdBXY8YP^sm&gCSa{>VoL`csWoL0}ygO zpFfzX(NU9vK`AKH;6K|%gKcWlE-1}5a2#{2(>-o71m&o`WF&T*!5q+7hkQtrO`OMm{SMzIr%Jas2xzkvclpa?oeU+L2 z_flIZtkLH+=X&DL*1B(KpEP9i*!)1`oW|V1+`L)dPkLDpE)M?n{bt%*E}2HbUK1lJ zY9T9#C$1}KDqob1ahrn-3MSxDG!Pd^li2VYaFWbwB~HUdcw&SEwi2dx+9z%RraZ=L zM|Q&0yH+XSvA}?t^1c5-ftC?aAlqU8xDszLT9OdR;-apy)YL3Fu}-Q54x?8Qp#I=e zjhuc$#K_&?ptbI>y>=_z%(;2qTU17=j7c zx(iE-Bzw-t%4fVr5a^$WCIVqKH1+7>z5Af4-(HwO)8U0pu=RDL>EEplH6uebP%M~x zGb-?D60+iXmYOmG06%K^T&wZ&?_4_=iDngxxFLXWTvlkmKejsUr^`PYNAnmjtE(KC z&__2)dL&e=nyQS;>z65orQzsj*15@d5 zd-Ou}YN*GH!>#K@p3Xx1)-;Rl3|_Jue8`{t}A-VucAG_uJd(z zv_EFAB2>OjsPted5Z)xVpAI`HSs_09k@XmNevu>1>m47MO?86tx0G&d-_)k+Co5@! zTa_@vbIRo9D3@$z%dEhO1l8ZK*=zAl2NCD$^v0WH9Ix%RqQ?xKR5rg92keagK^e2< z7A}NoI~hxF&+oD_(jNVW-<5a^Ij?0>-o~7MHSakVVGG*n##`&$+s|@XqOS$8^MC+4 z?8n998QkCe+!KQVJk$ODL^0MZeRH;_ufe-J2V!R}wf5)>)jVYxc`IYxpM3YTkL2C` z;nk@ZWP(a3g!tY?n|AUR8(bEYu_?%;0E<<%pO;#UV^1MdUb70afH-R94^mMRmST2#&xtJBym173c* z0ya1e?`2idovjgVQ8kB6FmZ(MS`oRNxH5xJsp7!rk?79{uEMq7a^PWe?&bIh{JOlg z9t>xC>qN72sIJhFmeEIlyW)dPL<&sI;{*8gU=an;ky-zGA%QcmAChlQGdN%01t->U z5~OGsEKz`8QG(A60OlQs17`jNowyN@+^3MwlGRrjhx{ba*&h90h2f=40^WErYnEiW zV5+dbC060TekD1)ygmAdshLVe16wbg2D!5EE!4XnAoVU>ii%YX6%AZZJgyok*r_J9uZZL-kH zZ6+n@3rz<2uk&w)>l>~LS8cTO0+G_F=MU1;^hWf=fn#~7x7UVxQT4mUQwWJ8-?Urq#$^RT~+%)2Jl>Mqh03lSCTRW5&w{ zT^`{Xp6yS@iQsgY!`12J^i`WX0G)8!=hb^^Mr?N}e78{eZ!d~G6IxeVM$%Q>s_!Qf;?9Y<)rpIXim0K{gtAZM~jfHMi-`%0#rYr;m2?8FLpm7a_yn9tM& z#nznEOq#E2^hirViH8XiTO7Vowiq2NcENI8nhMT?N{6tNM-GZ|Mn=XFhm;f?onr4I zKkH1^R9gEnS<_dXN2{61Ub{M7q??|ToqK~fR=`kg(7+IX8Qdv78pj$YgzjT#T%>x? zd_o4Lm2tH{U+UPU+$HlP0lIIOuet$UZYy{a9P~AN(#_9QCUK^ln;U&!JKf-lr0Jd| z*8g^QryDn@)0lV}H~hDtqZ;PVUA9H$FaI&aOsy6)Lm65UZW zFFz?S&H6K8^APhX2(p^Wu_FWfyZ{oi`6T7Xh;nN~o&sL}xyDcWVh5V)&34D@syEv` zf!bdluRpofQEBu1?#;Z*W|jQ&7JkY$Ag-~rwW`#+{A3fMscwl4uexacij24Mx+~|e zs9l<2JN-Q^rEaknvK(1mWQ+j@SvU}=bG^C3*JWdY?vekfR3Wa=q>)9Am>zxC+u93i zi~|<$Y4tH%I_fupQV0Llz^fGCHoX>asTloWJp1li;NIe}@? zpMHuwsTF=lR@l+|b5__?ESlv2xihjpbxo_l59Ub?92^5i)_EbCa!6@&)La2))WnoBF zYSXW0+D?W7jk16>-CPNqM3aqvm;x^=-q2*+R1|a@6h!IhxoKg1#yFRzFaE%1 zFSn*|a4XX_2h{a<1jt`#2h6 zGGb=doc9=WH71i@l}cv0>PY6QLF8HvoUC{xnCi$oh8=$nQ&lX*X({3-B`Y55C|NPH z+7T~X`{|MKvGK6*bmGCnds zS`8qT2g;}xP+RDNwrDsF2XOL-cvAlU# zyt(N&P0cl2ak`xBX)$G?)%&Wf#GK)hj>}U(_bY+uf|QP6bG}W{~C&`#S{o9r+!b z!kHu-mr}BN4f%oJG$8gm2W?^y<>{w24hx${EZc+ksIS-NzUIU8$Mnv2eg|n_Qy}oj zE_Y=^Cy1gljJ9wJz882V-WnB1E)E}}DOB`vzhDnS+d=jAAYLBFl)g**<{_ni5ZxPi zg)KKHF%+2ZcQ);WlRU&uIOS#%ot^HmE@vAFGC4c&5a{suh-H7en z%|q&Dd>!4SmgaY3bZazZGq$I%Ibb*DS0k;$OKNE}AYG?Def5oKiR`8J^!5X`G;bm^ zOmiplO&P=QRyW7@??$wp#N-U8X8sIHdXI=2N=nAB`hci|Q4&$3d}%DnA5p!MP|beZ zgMV9~+$K;;v&QvzH)$||-c#CAdwR?Mpf_8ZnYGl?Na@q<>CHEyC32J5_I9wAE)Ktq zmtpCOI_tVe(4nO^2JcdvoTgIY<>K(2@nu7bj*QMEMT>^Vg_JnwFwc47^SCmK+EdOB z+sCk|<^zA$0;501>qvr4bcSGy-m^CCoY%kcVwPV)H%SqM-bsq!cnHJ?>jDwKX>SLh zVb}*6Hd&kNM?0p$?11gtPScSvsqR3Ir==S>Z}6nDa2Q$IYzL*@*_v7fzLneF$rkHA zh-8no$m&zJx;3$lrsOlF|}iI>OQYJ)*O3vbA?5&U+ z4>jdRGH`>avKpw5aA)vMLOvth37LTTJjcL2Irv7s<~`AenEFE-xG@NXUq{irWc?;% za#I;RY=FvilB}7KKFOL1#e6PgS4`~b-LAwvG2(-`5_Ky)!EsV~LG39s6Vi9SvEQbi z#QF!OOW!&D@~4QLT|#N$Vt3Ai{A?V#E`m^B86s78htZ*8_<3zy9KIDuZPJHoKug!B zBn{~J;2Sg`BYH?DHbmzP{c|$rMREqEOUULWs)C&8wccbC^gZ8eE z4t~GP@4sr}IOuo}`rbkL=&QZGgO1}5-g{-_Mw4Fb^Y!Gr*wVras2kAMjaufXZuyPY zH10Vp>7;yjWOCxHTlvbBwDMK;B#e)f^>|pNd{67N7dJIl`h>5xDe9f?Q6TGpLnL~1 z&>^}-FHfdC$z%s~QfJ3$3D}+W(bbw>Nm58-A^;J2m5M>cDxMa88FGrAM8xe>wbH{P z&j1`SOEW7y=ZaB#O1UYl>}tCNkhEmJYi04&rBo2?ufMCmM0pogE?drJl4>Ph*u=z_ zUnM18vGHQH?`ZcwP~}|jwc*8< zHoo^4-mK~_>^@U?NNS_yB8OC=4H3aodPd~{b_D)ERcW8G!@J?Xi= zRIby>xKy6g8{(3bR!Rx@1=5}dCtx%E)7W&hMIr%5#(>p<1S*|>uF5#gJ7Myx&`qbd zZ4(sbJu^|4V2$6^%R8fg91|CL0h$=o!XWl^EDa|Y zTmyr*9sizy;{pDh=Y*w%s9KTGzt-L2Ad@DT`%impbkrA4ht5Q{IB@C!2O8%c$^sT~ z?c+eAa|#9Sh8?ukstMd_ydm%mtv>iCX|MrRkf5?G*)k{u1Q6QG81n(KS9oc*jh9Lh zaF9c>GLVzc4FNkON4r1jFg9v>-2R$Z`%#%fmv?b5 z(XWuK9(LLA5@V_H{q8Sc?=KmUM99EiW`R-&I3UpqU4b~I^QRddoJ;tSkOU>Qjhad7 zD9zpUi2K`kPVTFiTH6HuT_kkX09l$9UnY3AK0*w!PiVA8rdQ zy}Up!^We_bMalpIUkCWsfsP+Q2YB7p>E#|jR&`V~p+*9jFI#v?iz2yGkyy!Ss(2NHCx-)e7ky0#p2Vz3s( zYBgb$t8Cm$AkEf;Ssfg;3G8uLeDl&1UQ+__QYS^laWF=r=_UGPzG2_ev?Q~e<{b@q zt-IJ-I+SD%eFoNQqHsn=V-Od{1O&RQ7p@83#L`WGQnV%k+6B;DAZ$0FP{NG{v^N8& zR^$TU-J+1~>mh8yE|5PEuhz<#WVv#6hTcuHMJ|pdRLE1u8WyTlC4d9KAemAPNYBFMqhwTgO z^5c+Nqmf$gt8B20UE*JRePhz(Thf`)`Cnz5%nGA0M`Wc0s7WAaGc9pArtiR+`hB*D z_N1+b-c3NNi2pL6G6fhJE1}P>c~aQ8keXe65|iPy_FHK0!%{_X(<2F0Z%A+lQ8j&m zJ&1Z25zO>=7x^$T+VT2$6{ zlkR6N5dg7v+q!Chm0;SxGjCHlQ93lCHtmIFHoXc?+HtnUd@4&MU8V1BJ)4b zZ%ph!B8oqzV`8M zt)eSj^@e(0S!FDVY}rB3mqd~{>Lr=zU7ZyGA%=vpiZMe5$}^p@yKYlYycOVftH1|ql{Uz8Q_+Fc4|7!StD4?DD0p`(+JJZ{%Z!$T66a49{#Uj@`V5mGdH%V; zPvFfz7x_uY`R5WpVVL|=<>fKh8|DR`MtUrxDZe@7O`O@apu}Y0?d_f&?#UE?CgyUo zUbbVcZ!OWI&Cqpi$HIGwxaP#$nW!v1-YT0Mmts5Cl6Ny5)o!L^pOvlo0CViti z;p45?&6Ms>v}vp57PSqF4O!aFbZpmdCcYhOlcb>;AM^gDqvQ3)b}S9XyM6-vrRkTv z9V^4{O`3*aT{zWttflF1*S2G=YXC>a>v;gNpX^8)fIf-=#D21Lf3ofY`02XA*M71i z)d13dvW#j0rR`Xq@p>7Kj#<;@$EEMux@p{J^0iTkq~0~#pEoBn_gEqrcA-7Fb&JAi z8?xSxy5+IGY#v(-AqMNjr%X{MvM;P(;xVN@(TT2_VZoWyIvD%}~V71%tQ8l2W z3>&Big|H2qu*6jMwNm(u?cHWh(M}>Ft~#V`A#Gc2QY?=eK)j!Dj;Jw z>so)I-|2N>;Z9_qE2M9-qjO?(^FU@lE{j$BK;A2mv)}BW8FB(#ok&2B{%dF|$#el` zPPaO#0}Rjbl~dOA%raGd>qlDgBiU4lS`yScZic0?$S>79)r#NFfDmd&IZknGj3u&8 zcGGJqu{gJz0Z8AFkh|YE_!N>Sg>w%WhC8rs)jq2j? zu4t3oai)wm&%zztI-4Ortv0s&daa5MoR!d5Gi^-Vbb^{$qMe%K@eh@(@XmD-So~ z;ilFO+gqc6!D5mDrccP?t$zY8)ZT`wBXuGndT#*d0hAgTsa#Mec70x312Li*@X~O# zzZhJ2xDa^4MIJ6B$U`zh+o+8E@TM5p@xZ*&eXWk+dns(^HVRG~D#E9JcOx6$gsV716K#<^=b_v z99sCr2J^GWlZ8a>>V#&rx7E7BD$L2_*0rbyRgi!-xRM2e?pkpvjR{xm@Fl_`jVGOk zx|23WH%l9X8);+f7Z!q&HfEDm=(O7fnUiug&Qo>OUvyff%gM{g~92L?vx2Zyh+2OeDKB4eF&0v#>8-W^)4PCeA($J>r8mo!_z(@WYjd<+h|m4-0V}ht@$2h&hU>NT2j{dq8l- z2nY(BYv(ca1tr)&`qL%5enenve#-Iuy9bs{2bE!azxM}OajjP*tNNgLZt9-vpSQ2} z_P$bhY4&TLKB;vvU$N1nNb*J7mk4spV!Y__Em;b_SGj>!B$U+|-z-V@Q7Z7X$2S+j zVL9=Z&ck~1Mo*?eeW%)WgeLo6sGxoPMNDR1m~j>*+%4cY^3d)p0{%YycLw$;5A0YO zSQ{~iq4_|B6>bVkT1ABn)wh<c&0j3W8A25R4>IFeEOu0ZTl zGl)(7KNtbAy)3!rEFW|NJcQGVM)~TL%3-A|!ce{n12egX;SDC&a6{uLiqczuJ&seM zC?9C5?lcU%mX@M4POUu5khD@YCex7RDMxSx^m18?qkvh&)7mLq(o=9`MPZV@mm$?B z4n=ponsbp-M6>62^fvR*k}g+8G8|{;e7ZInv)|$#u4Sr2hS^gcY@7}sr6P;B0J=7r ziqGK4fJ4Y6%&d|-`c#{9aql4E;c{zQ<%}jm9k)lnZA-|p?~ceREi4HFpfU?2_cQ_J zTgi>otwi{lFj??HtJ-(JP(_>J>w2_#`F;sl z#fzQJ713HBv>MT7O2xUb(L09jZmcs%tCLFgO?*v|qq?7tHS<%p65D29uAfvo$i=_d zep|w`$~`AMJ6=$Nu0X`D8x<6TPtl3W&4EzdUEmyJT)pXEmLNwE(g)WTrG8P3cCD#?gl2}?8 zFR@KQ2dGAHb}8I7qWOcEK3?JV^vVM@rl;YxI`PxYw$2aq+udwIJX;+ipQTd%Yw1M(cDn^uy}s5yK?&kcl@)wE?@Q90Y+8z8 zjBD)+3%B_q(QaP3=qew!dQZCc1g|;L*=5B?icP<{vt52*-D4lIxPd|;iBvRgQQ0Lu zHh&P7_0<~?ZQu_0q;clXK7@KN=6DL5mfrv>F9Gk%N7kaw0u8d;JLOmsAaoecr^6L+ zJzx-&#@)?y$qTb?0=H(}1a8&f0_f!R(6Q()&>&pzo{`jH`+7R`40$Ml3(-63UCiGW zHndp-{pVxhl4{3LDo_Hixx)^Q{4numjc1K#bJ**bwTPfr!NQ5${oIX2k8)sYawcd29n6T7SfuX=`_)r zWc=iS-tW9}>=v@MCjcbSp&eUUqCZC3pe=F5p0xF=-F7e2)*Oc(SE-^3GD#B+A*QO` zd^=dQRrX@-OzPrHiQ9M|ATT~efX63o{}i7v^I}+Jg-=5hq<){nKD(W2-f#hDMFO{G zMS??Yb=>_1-z>*?*&r{4U%!--umnuy*DE(I9OI!u zUX7tlf-(G*gP{O-An(2cd02sr?V3QAU$3;hy`|;~@H0oqeNjiG5?V$@rch;5oDH`* zY>J{%{e0fUOX$t55kLPf5IUq+^&)N;jfzXvOORD4a(*vr^PBZ#Wr8?#m{#@0a}cT6 zu<$u-DIVnsZAWlZF_3Tp6fbbj6DJ4|rJ-k8r;sKO6g<$?xLj?Ps}WP5pD*RRzLA8W zfYXmCzGhlnZA0-2$jaP?GW6QgxCiVzkx!-{$$aT?3FItc13na( z>gjQ}UR~Q(9o=o#$_p`HQHH-6LRZ^q^?KXArq%1?+y|K}!U?ev{zPAr%zm#{Fgg?0 zi7qr(H)q?0vc?uUyA+NB%@X4^N8<)*T{#+--I8|6x2Wu-pYK&B`{;d>-nQe^FL_5Ezr=r6xXB^rBRNlC0m-2b-6+y1|d0Xc7q3 z7(sv4#MaeUS0BW}o3b#+kh)-$6*4~Ubkm7F&4jGAXT5t$$ zE9mOxN>$qccgn8YT94LpA}Ll4~kR;n+V}fcV3FdZ_BqP@BloZK?liECr2fI0mCQW*oBDZNjRAMlFTTB7*GKM3X=_Lhw#MK4?8@YMQR%|n1lSBw777z1|Gwo%tMr56E0Y|gDO3SH2_XN!p z^A0SE>zhXaq!#vtDhvizFnq*d_XHz0h+GYZ)wEQ3BN~$w2uV0S2Mfylw7vSU3xa=Rm9(9*)WxVc3AJ^K##5)9}KImB8ZgFUrbAe;SfE5de zy0mi6|8uQ;ev1r~_W>oMb1e&mwgW57sz1S0vF@x_Gw<>c8<6Ba5d+zQQNl5~j8VxI zWkmFBwsf|WP6j^AsA zb}oKg^pCf9&O@p=1t0KeM$G7V-Vn}b>(zgn0EY{;EF4KYV zKfD}@ZRV2G$iF1{p-D^rtI8oPo>@&Yx4o=1Vw4Bg2y@%AR;mQKY_SewpSzpBD=#pb@d6!%Fu$)YT{K} z=%C7cR*TkquI6(M7)U|eTZAubuf$~CqEsS%R7AM<9Vm*jJpFowB-Sm#ea;wry0Qe< zsb!Mj`9LnVUezV|$d5vT>k;pU1gBS3aIpke+L|tzQlxxq%-TOI?5OJSt5u3B{AL;7 z`D(jd9WPfK`ARQ^yj}|7YcZbUX(UeBm|mAgSZ`>QY*5nQ_-9YAqAvG|P1y`Z^~_3lB!621{hVbuhx^b*k>T4#7;p0)ZLn>qt|27D(GWW!!-ul^ zEW}Ti?{ty^-;pZbm+Vhxb4Z5s9m-@)PtgqQsGEIycHEK)fPE_VILj$Q67`Y7csL_x zJ~7(N>XYWSXJqGs(eE`C*|ivJ$wb3glZl2Yhi$6Z9b(P#dK-O}QeM4U zeqF5wO2?#_z zXxXmY2w#gTYC&oJXa=QiP^6u&4uGT0h@bLaEhsIDvjcE|Ab642kdvmF_V~IL?sZp& zR0{O{cE7ziN0gb&lso{Q>hbTi2pVY2|F=jo)7pWM$RkTXz%}9H!TW^>y4#$m`pxDbd+c}|{97Rg}gb$co7vRj}! zfF%AnkTjKMyADQ-KuAudSPGF4VKEF9FFVRiUjmB^?B3>5vT)7V>>6moGosT{GK$z7 zn05h3BQr6+HM@WdQhZ?XF=3m4+hWe5L@g)%j{r*n8~}&~Dp>*& zIk8A`y>N-Hg&LWIu?!%BZ^yO(i;p_N|9bE61aCx2=iXRhr}b;#Oa@2I`L>K=ez(n3 z&KpiD1Wi}Uc!5P0-D>lf^aVQ3H)95MGk(Xs>$m7=845`eS(vfaX?J2NJt%7@#}m!J zJ2Sn?g@;6fYI3g$l>K{c(xh7n7S_~>5V9uF8o*Ndp&(%V2qJXeaLV`KSyE(BS|~EL zl&B9%6U~Vo!o#<|L5>q<-rZyBgeSDxN!_=l)|0zo`ch<4^EOwY{%EIKIeC6}?wr`R zl_TJ0*Hn~EhN*J8LG4a9QH@#~tVC*jKNM=dzbW6y_fxDd=9=%ro+TNNxjq?^U?Mke!S5?-dI!_CSBAe$2hQuo0qKA3GvEp^_zU%R`E(9Yi7;VhouP%(Tp5rtLwDE zDpo8~GpC{%wpw+@G*epyJq?DTua|fA=b!f4{XJ#^)4+%4T>@DBuWKI7neMV-P2 z%)BRg4r_~(!?}x-Ki{r)&>;Z&Ar~@KfaGxiMY74cN(g5%sN_~(8>i&u+&*Z7A*d-R zK(Zu+62JFKY~YZ2CO;uqRz9E2tmwwaX3IYBCVBQho#`)fm_&#F%3}G8yG4GT?7#BY zRzQ>9+Od;wctv;#otG1d(0=IsNA{U*K{X~)O{7Wx~EzoxS{Dca(65tC+CT*SHnW3x0 z6`c-WtCI!&e2$}Cpr7PdywWuv`Yqlu^b{>Gz}XEyFzk1%PN^&h>_JDkANS^tt-t8_ z2}uOut3ula2v0VUFfnVS7fhn z%GV!&yl&6HMFPPb@-lTnq{)-}vdC{rrM|#OP!P7L5Nq=XdemVwp3&w6*5?9}M#oQvGlvy@5cN?M;5dL((w`_m;fUpVKq<_wnh=>H3#CEqo65H|%ox>S5T zpxRoQMYBEab6cylEXK!;*lF(&h1>FJO6}=oqBaXOqSRE?mNS~j1{?j$3P;?v%y>Ib zGuQEnC|G{WT!cs`)*uCif>d)y2_0Rs%aRh3EFoNV?o?Dg%^e>C+8lAFRG#Y=XD%yG zPy5MMRaCtiFjVrneqboL-qA5fkdNg&2Qwg}THH`#X8?hb06H#TnGsXN*G*${N4&;x zcyW$AmN(g#vjKIuBWq$U5OdENziDo2i^PR+U&qI#sJfRACs^edSO6}BOK_~-YmgDL zVfAU~)TPlAF2|yX=EQAYABYNv#>>o!{6%U>Hpn$gvO)Y2hB9(Tha|nx zqpT2mRV<#EhsCnnJ?n%axf$9dn}%W(GL*klu}_G&p#U=F7+KBHS{Nb)RY-YLI@a%^ zL$Y$?cNT>bWxGY8kN}=Swo*2U0p~MZW(8PoNK|ySh6dE`O9WUuO~^kvY>m$7dv-DSBDPCkCGt7m$?(#I zU;WSqTm5vG1Tmu41$3)=G%kvd2B3iN^EyQsdgSQdFQ@qGrX~AR5Sw5g|l}J>? z^o6V0^(&KaM8V=5v>P^ef=#Sc53!|mnHrQS9@YwjJw-x+AyOs72jGl94x0#3vzatN za}qPH9ae&I_@K&gR)Vo<&Sq_JAhn{lFt_7~jFl^>aq4Gteg~}wu-B}jRohM_xor@7 zellQ1Ts7f_n6h%L_(MTa`)6fB?1t3{0{dU2Tb|RECS-8?s!pO%UC>0?uWa|X*89a6 z%4%!wD5b5S23gTED(2YM11d@H!(qv`desf(tj*P_s;}c*d_^#L)2a?wSygSt)PIv+ z>hozCA@ntTNsE&(pj4fIsyg(O(pvrd14kOJnH))Gdl>=^$8|_lZ}94`(4bc3aP(lc zpv`1gqVKZNTyu}1aohikH`WYuE;pV#E>y?ljAoOH2F=g`*-Ml0cbtCgbOV7RKoE#s_?td=bzCjNl% z2hC5I^v&okHA90du^NZvk`~nIK6Qub5~^P|RLbk|R?JoPtB_z2ef4^3jNzo!Q(&*U zsv6U>XJiS7cK|MMPVFebe8dxcxgs$Tm&=Oa#w7_>{dAe~p~A%TaFad~F1wq;tjwmdt>{ti zSlwz@y))}{LWM4O60xy6g&aFxNt;&WI(wvEc20BTQSL}wkp`T^fn=C|C0moAjDCII zwuWjs>(>imc#+mjDQ%ZuC){v9y?fD(g#jUbQ?KrH-cONhkCF|pNkZZKtmm%U52a^;hz~u!}sVJQg|fkx#%<5xY_{@pQDsrO#R%Z{z7K za5ehpI;d~ey`77$-{T*rZBTaJ%}!&+^|+VT$hS@dV|%0q_FlglLXC>7imPfB*#mpO zju=zPQG@w@zxm~ayYKd|-$}Up;CNMiTy`I;vwd6^65E<#5ARCb?e3rGe73CYS-8fw z!)Ai87ZY#Xdk%Y<#-m1D%JqOZle9uaD7!KQ&T*-~LQgB01IF->`)i^%-(nRa>k&4+x+~upBswqU~drSGsH?AF1 zVw$yMx3}8IZ>tW$>2!O2n}%K+W>qBSP05`4kq^Ys$;I8Y^?c8F-l}(eu*RP400UXf zyoN*?k-a?h4h@d;xF1v@$~bWOfJ^qY0myUP7#^YxA2+fmxZ@=iM;@+-OLSCbHxAla zU0X~+L+k9LT2|k?4RW>9*&)cBbY8}*cpptYiqHcY7>H_4qBBB1q|%fHAq$5XOn;wt z`iE$TV;J^?M|r)Ce1m=V;&W)ip6w{P;GpfWYkbdklnZ>&b|4rm5a>5Wv|xXJq*#^` z;IU_hGGCEZ{E5tm>9&pt12Tp=J!e*})0|;cUIFAE3jMr5>KtNh`kEh&JBaY$Lt4iN!%1KC1?UBQYk2Osb9J zgRh~DID<>*u`-(#ierrXZ}h7BZUk)vg534BB4}P47l#V92*k|@`V0>*d=diY$6^IJcbCMF`nt7_fik$ndE>}3|xYrVniGz)RY%igmvN4};8MmmjZ{GmZN+5Yxym!b&9Tl$AtYHO|>gF|flUEVVWtVK=3&P@LNBZN-_og6QVcFzcB? z!*^)#iy0!jPMLi z_j5~r9a!xhRB!*mdwb<`9?b4}gxoJ{ta`$xO$G1uq`6#z=RyoLp45|;PIMkV)4i_>6e!~I z-q>1$s#{3WTW?(GmmdVr^PUyQDDRsrDqg$zWE2qcW*TBk{+j5ee=EqG!^S9IX;ZhM z=L#d=cZQzNPZeslYM%7GcUs5W*`44#zj_pRsYG$LiP%wG>ZDac++~GqsEm+zO{+*I zR#VzFT{a#ov97wW0wGhfH5Jg|XbhD368~1JkWD&cf=I4HnF{q1veCwTz2DQW>3-vg z48_mHIGPW|<2CSbA&nN@1}_Oe1v|Q31%vZ#A&Fq{du5hD5pHz!{{&SiSO$OXXjc@l zw`6=NRKyK4MRY!!h*4W~cXxT^MXsEYS_}6vFXF52^s)A(pv}GN|NN7^$vMbOv9gv@ z(O*IGzHYL%)bs3J3t7J`gxxV;{HsFPlsszHcG+p!2v+Uvz0+RF=T-{dfqtDVF%J5N zGav+Ci+Bq!tp2rjwJB$|5}?RkG_Rum|2S`07;MGj5gqF}ND8K*>FP=k(?zVnMSA~f}i^nTWBKU@HhW~o=@|I@4cWYbis1CWHN zgk{;xiC71>El3SXp7do{OLWb{CE86((ZH0Uo-9WyAb0poJ7%>+Eo^d!uSDKSFHU@B zo9Wkgy|SAYaQJpP7I=Yam8%*NHSikC!L?b)5C^(v=}6yZLXtX(5t@jk&JIuaC2!;_ zP4}N!sH)D?7`1(8Yty@5z#|M$9q+|%%+W7Z6}#B%o&SkCU|s#JSuKmUTDU)6v>l14?yOM4ppbkXH%REVZ#dZp9J;8mN4fTY?4 zar`hhiyfxtk-WiC#Hx3)!O+A_9W9AbwGV$}DGVb7GSxX0y>20Z7h_`a7V0O$dx(_4 za98)V{QaG+S9#ay5Ql~0TJM*ilN}bsMOS{(0qP&7^f4HIcApxzQdnJb#kmyRn%$?y ztuzqcasmZ1-`mbRTCVje$vP}7cHJ{VDVPveRl%setho8{n$Hau+qf$FugiZ6dC|Ax zq(I`{{}*>*{7K;TF0{VY3Pn5@;s$1WqSBDgFk2d0e>**5zqi^KT#5m1(}uyxBHiR2 zTC`7Dn9)zDWkF`nt!k&3o+RyqzGX;SYEMZG!#1gg^sVy#Jqo#`f^;R!XAz!Ty zL@0|smve#KTP5`9wD2*f^#PAo0OXwk59BoZ{z&0QicF|K*jwm3lm76~m<~Xwl1-fD zrr_H`KIjvvw(w-QG}4BEae$$k`jR{hB2)Q>-i7faPi_rDyESkS+l*>r5VoN3mGUl@ z&GAP2@^~O)Aj^?qap6iL4wdgEN8*^kHOZ0n@!C6vX3g=?a%4TZaQY_X2+K{#mvnzZ zwhpB3r)yqwA5#8my>j73dDXq6TCn2~9V$cUQh5@CgN7J%vYEkOl=_??0g@c75{Zfn zx;Xs}SHB%hl}KbCbSNJ*1|ZO?6DTSlbln3;CsQWB?0M=swfZ^E`P+J3u zr^+LZ^C&C{RniOJl;b58BgRjDp;d+lWxi;;M@dDJi=_9-RFbgd7fD5V(USU=V^rjK zSnR#Y*ht*lk+2J?YW`4Skv>iqg${NR`$>qYmVJqv>z!KM+>@y||KXd0pI4rQ&5)>Iyo3=WuN zZbiCgnBTU;wNR{_IK&rjtHpaVDr;_^vUd@Wu`qUC*~hC1x%U!6)bMDe_MK}{;weddU6RmrDC*mk!AeYs5~C# z+NM#j8G}4{IaQHzg}9E*#3Co8#b!i9k{dD&L(FR)qmrZorL`UxG0PWc#YMd~==Gm* zoCDxC3Vhy`lB2>?tXBt3LHcywRd|ZCj;_{{lxdxdn98EDWe}OxDiS(K znbyhJ2@{B8SmX<8#-oI(RDUSNWu4iipTYh0@|Q@5T;MWfg3`lMBue&Bua>oS(!Yxc z(8D4E^rMJ?9%mzoWPzrL03D`O69L9lDV|xkSg7Efj1Xi)S~er6S#}ERUyFMBPC1(- zbNgv_Hs?x?=0c~K`+8_tY5CYnVtd1LNcI9;=*SJ<3}|+Ulb#Rq$xOk+P?hvTVvmM@+<7StsgWLC;eb zy{a`AR*SvR5GxWUAy(u(7O_%QG~7$n*(K$Sy?tb)dw@Kh;g19?#p#c0{E#VCY0S6p822yq@IIN_ynbCU;m3^|)S*!4H}P{0ye>rekT`((4H z0`|;@t4ZW!?@PsyYa)j|zZ@C(aVfM(s*@Zdhi-MwoMleU-Exs`mZ~Llz*CAmNh@ag zbGBTaDp!?sLME-GH}{Z92a-YkT{388+^fp@A+hdkJz(1=>d|X8z9So?E{&)Sw`(jlTc?*VD^A?-ug3!Y>^>_)^j|kc^1vw`ZHOQt*e6$cHA7kx z#@?x|QTtY*a4)I&R?ScaIN!<=UCgQ*NYT#dx4j(hF1tvim!Z2c`|{Lf@y*q<{OeZi z1Bv@+5E5pP>=N&iu7R7?uR@f?f$3kpD0_P8fJe|W--;6;$--#}0}VsTu@#8pFI7rF+6W!8mqCda0PZAis%zv^)qYdaktNmI`GucGT3<`^>BN${nsQiW#?ItiZo{gsc$s}sc$s}sc#iQ+S?;Zcm7h) zZlEoMvmp!6yip$n1r!CZMp~i_R!zx~k{u3c%n6>m_zSlTXA1R?;zZtQHU0?t`!coFdUzDm6x3&1u^n`A`sdmfQQ8*o(_p1GH!KCLpXj}B(rHdno~j%BSHZm2+OgNa?zO30>utGQ>+4sM z>hJ(!n;C}&m@X ze{pyR8G(=bc0aA#v}{!k2%43C+2OCCV(MFpj3xot)%q3(C)5Y5;ywyE+tJ5(xHWD+ z%_18Sg503i9HTML{0Qn|F7^4{X_)3Y5A&st8fIPQQ7b*5eyKBjH68v^7lY7CncXX~ zBn0C| zY_ZHVeZH#^c-D6WyZpI`xacsKmygmmfHGeHCD1;MIs_EKy;(EA6~6f@VTuOBcGS4dPw9a%wEOMc$3i94`o_E4QcV#sf)u+ z@@s$Cw^#Ba>vAIgXTJ-=~Jw+BN4~iBrpSmf&VyE2! zzT%sOJmpC+)_A5#mOwl+#UIQVdw*?;`M#sIZQiZZrPA_19VzOgy(V~1hMl47( zAN^*gluuBEH2{1f0cdIYT2;_-Bc16}{-UUbPnIv9s(-Pq;wmJFKm~7sJ@|_`^_(1_ z75)n=JgvxU5<1hzjVuIcY58NE;UQE#-i9icRZ_xvMo)Dtqb>g9Q_=&$0>Zz1`qA|1 zV{JC=FFSCiSn^BKB^1%%ZB7F(+Vj!$_9F~Hf?8z!XM)D3Pt~raL_X^KNtE3Iu8ivi zGDX`XEJV_7oN=g&jY&`N^`;9S-0GPFzSjXv9}!>{IByonU-1{s1LKMd+DU+=9ROK) zLMf{u;&kzU=%j@FXd+Uu5w!( z>@bmiJxLa0fJ>b!b8x&;eqbl9mLCL8a{ex4b%Hhk6C#bk?UuxlQd&MqSEAXc z)a9p5D`=lWS)YM}MUho7`~ucYA*N5YCAW7v&wxcjjx)v>>;pmlxkN---q5~O zuq7R$Ux;W;A7WF=pfF0!BDv5aB??kYdITLVeZjzGQZ8L+D>k$>$ZAV+;Z31s5fO#+!X4nP76brR50_;@+Zx?F-n z51dF+(F4P*NFeg5!g*)NCILvnB=EdvxGr3Ni4%T>r03g1TYi3_E>C_AqS6b`fkn2M zB@!4Wc5RY?#VfDZNFa8sg=9$+*3*Qk7;sC6KS-=jUv#%imnzx)c}nT2+ZWrz?F${k zgQU=*((-%%MP}SDruV+k9^P@G%X?nS{8E1J@%-NJr1!qm9!@Uwc+V>%FXi`sG{5)d z^xjMD;nsyd?-{Lw|-=>u)GW?P(yewU| zNZ|lDyi-+B&Nly&uPR4J9@`@xV%=qXwBx-4Ou{4b{B2+_U6IL;$3*ekg~4%6wc<4~ zz?XL%iV7nPl2f%sg%}{Xg*>tgJNO!H{>tZA886{@jH%uwKV%r$q)%VjTB81}UvE;Z z_B#$Z*I;G3^j);E?DtoBf01&V3xk`4`?`>`0Zpgr{ngU`BBf#%2FLRIS>rM-p=E_B zxX^|B+WxBVUR1h$q^};sD@2XJjA@1y1&G_|kTou2ijy#4y~S6LNwNbW|Ce7`Y+SY( zB%Pwk<%RMH+nrH-aEx*K^u#XP02lRPej_d3%bzsSXF3n@1DM~ zFSFd;Q$?csqz!oi`H_G_GSwe;d5AEO#>*NDR)l%Gwq1MkAEB$119>%UA@qeTEEK6j z{n+3Kmz4_@CL0Kh#iHO(8?Q{f-b|j9aLhzK=b(g6^yoiL!k0bxGct1Fr;m)g;&<@! zobV#68A(z-upn6BZW{!FjkmR4OVI1}hVi=;!qYKPxk}nel1dZ`(IHbJD_s#|bIlP) zVxdaiL*p&V=89-%ToG(c3vDudL|rYf32F>DTi`Szo3hifCOk3Xo+o;jw($l?%lzy2 zEp`Z?X|Hhi!wXgN{qqa2P!LVZ@9_U%ws5q&(wVP&t5s%y;mr=f-8Hy#xVAoe{gI>F z$0i#$-F(aDt8TsRHOFsvd9aZ7N`DBhbLy5tWsbN-(3~KfV#bgVD>|*we=mz33}Ogi z@Nbz5N5lL0LS&~^pG-U?v%`p2qyq2m3?}{blfbQ16r@Ma{5L98zYi2xx^toUOdX06 zr~4+LP{?3UD2~^l=mZp-KylGt%^39IpTmG@#cE^?DC`7;#tu-^%S-5R7o{q}ua~;R zdz8QLAxphpCbB{Bi_hTmB%_jCLe&39$lfkfQG z|1w(uCj-j__U`7T&-E^i{=6P(66PatMJ;F=>3XD(6;m>}w(9fjoepo4xYC=)$^*GL zZ!&1>O|2tn%hXnC*#WKHO`eM;3242^P2L+zF$oa`s12EmO5XsgEY&kq59AP2Z zMsVHya@{exH_$?)?XJNE^@A&@^_#G1jQ36Y34k+Kc^G!T6*g*DZqB=dq92qeNb*8P zuJN52ta1fE*9%v$D=!aa>DL;rAWv`wMJr4gFD3P7(vfhMm8K_kKY(vg<8sLLq~QnX zMs@|shD>UEQPiTXK9YcoqW$a#Eb@7rOzJ1_<{-ajKY*yR2&nD{kdgi%m6IY!1L2-Pd%z-?c#?*`T|MS~D- zHgbEh6dlddSZbE~RCm*?Snx#;nr6$O-xFl^P-^@_TM}&~Mn86C>nJ)#PJ$HZ<=%KL z@jrDCbhUnE>)7~+O-{XY^i209Day{56-7Mqw_`M3&+VlR~+{DA0aQSFLW*)6zOr$FuT-uAE~c~IM@B)R4QDWAc5 ze?|~%m(+JjIfJUW1I-Xd=m`^fJ_eUYk2}?>F&`I)Z_{|i?-GvjwFFQ!No>Q1#Rywc zxw&&7-EFZv9O}EfJbxY9XJ_ z6$6VCT|to|kaVX=lSr>YFa(=Ckp!FGHileyF>|WOpAQH={$gh9idHXrO;u#|7X^Hb zcNfeG=FAe)vINDmb&HY!k6|Fda}RJjQZ)8!WrgWW3{!MR%&5W~Q~dEd7X{%9hu{G| z{sGGj7Jc3}PV03#+ov;qlyMpRl89-4;Pi@be!)sCmWMM3ivJ2@LU(7kC<=FH>#bWi z(~81h%61<8k6Azw{$eM1z(NR2qK_ng%T2}9bjt7O6B%q`YL4~2$mD5}8kCQIJg7ld z@8~c3#oA!7mxjoa!qhV_(CsQ+;&AGfyh^E`j6DBT1NRgfxh^C8&g(V86~^lpRWkaC zj2MD>risfP)ej8BRCf6O?i7zRHmryF*>J?D(#%P zN;{9wZRcaDoyTeCsN3OiyFKBlJRRUEb{3w_PNG)1++p%aDTuJLOA~gk*>95E8~V|r zFiFyOgK~bs3h{}tt-Cd8;!PPP_OIF~@p`WphwDNC##0-j>Rsr5Uum=+BGdgJT|95cksY zqb%#@W^i6OUf`^__PK@1w%1KuEjPr|WO2vKICpXXRP#ROO5ERR-p81a`!(M|?PJ%+ z{hH^X` zjxbA)qaV&9Q;22hh=zy-N|@H7N1yIY$PSc4Asl|DGg%Hp%Vrk-2CVU*S75n#x0S=P zGIv;LGF&gR09P!nPZcnp=>UZkwqKPe^6LTy7?%a#QeG;b1=PoMMK+7D5$QTBp7ZQ! zgj=#UP5U!Op(Z0J^1NYE8W_n+LKV)R>JE%Pn^B=b{!)?@&v$UFfxvk2Yk?QD%$nQ? z$3!?oOt75H9?pr*HdZ6;JlB!cNbssNSwv;NNu0V%p}lC3X641_;q#cV7d>H;7;mFkNQoqeKo_C)E7bL}v_ zb7y5*KbAUsygNJ@olWTM4eD%f`o~~o+~NePQWN;w;z(%uqMM!bP!k+_+{_~iWju9 z@km@M401VIP;KCsB2uniekU#^u)h?SLctf~Qq_^MnIzGrzVI0Z!_jf)&eosmZ{2(W z`ia`m+ZKcb2eRw`Y2&c&`hTXN`_mcSRscr%GkzUu4~F!AqS!Mo=cl^Czt1>tV7w7F zSGb!jtE@+e;0*p&AXmpd%0wW=1qa5>W0@85`DB{Wr+{U`8?wx@pNL7>8gFE&H{-k; zW~EWq;xluoZu(jXr^7j?^lEEF|LwJR*#uzLo?`eIM7j`;d?Aed+KC&PJXMt;BYczcot$NCWEtr+R zoV^o9d7Oq5^^3S6dG#UUhR#KrBJM=zVj5T|1CdBx2uvg|;)c#cgU_S$-gFaaCUs=o z!VM;&Lf6gQpgaZKJYs{I)LS(L4m?e7;th&l17a4KjkvMad@aXV)~+?IK=CH(V*`I$ zs+ogK63V8>d}~$I1>u*K0D8dl(P)GO(637&A)()nJ@(!z3(0D8LuWe1GMbiO6=hH8 z$}!V$&DB~$lUhsSK=R`AWnLv2gy;>Hh?fSp>gZ8z4GmQ#eH?PIrfi-|t|Q@Ig_gwf z4r`7ahtODmt{sR`8pOJ}&Sy{-r~6=$fCVHJYswiGMLz=;pwj$EtOcpnt#U~1NSS0| zhF7Y2mAk*e>a*#;>lM$oFv!VnOM{y|QSzk2OxEwz1H@dH@uJ|5RigaIDp8KC&!YV0 zruOL)Gu0d)!u>}P?pj*s2+R*mm%ek_`QY^NpM3VRchbVNK{W^!#=OXwIp=5T>6U^%&eVd*1yCmcEhqnO~#MHp;7)_<2+lb`lPnA6^OP8UC* zhCcUKQ$rAEc~>jknG?DupG`PgX%1haM*Wo9!EB` zcRJ5H9C3H&v+b=FUj4LbRV61_q!XpG7U6j4-?V7*Wf-Go#-5DPm9fH>W-DcTh3@)H z+qNh1R}II(?+fBlPILq$xqFv;<6}nKu@Kxxt`K+1QX5!i!rqQ}Z-YF2Zz2sZ%I*|1 z;P|fZqg2ClsyR#|YCBT$cxn!l?%R>l{hGt1`*x&szveLM{wTL!IZTOZQopvf1D;Rw zIZHFLKEk6y0B9u|r-pTJg3^kn==u@Lf_+--2b*Y}PrlM8xfI6Z16HOV=LMne8U5wh zjZf(>AAgz;KB13E#bC}T52g8gkFJT{*E|hg`9zhNwo^kz@+@j9(2|g!t zgDxuq`9w#WnCLI-o_-zq|1h!bwA-?)wFVh}5`7%erpp!e{{GNac8od5Ej(j2^vHsj zz=YW1de$(k`^K>FRhyBR2!Pc6+6?M`afNF$uKS+xXXp9Z&s8^5lW8(>c55`4CQa(r zDOk^T<);%i*hOG^vJ>le(Q_e5J;B|(C4EyHlAgd{l;v_%poRoJN%=Zztwv~i0zpZk z>q$jwnV_D{VUS>w7js_v^tqg~Ba?-Q97|S_vJQ1Zh!1Jzi;g{mVBiKG_-FLDcZN7Q ze_85#Mt>=C`U(9d9QcI(LW9q;GWcFZnpTrG(%{=(h#Hn(S_auHzqIypOZlaxpS%d! zjwOM3HoXm|cj6t)7qJ6U+OyjZ&0DWHy08NmBwH4`wnwkpV3Y3Xhq9LsE+KEd4UM)c z!`BJIAwsog6j2)*v4OlgJ^e6oo~5lW$;sW(V`>a?r?^R%)zb&4Wi({-qF=2=5MCj0 zg_@dyF7bF*>o>I~`4628>5M;Da6K4{{chKq8p(c}l-Pi7REO#~*k_ zZkX$&&bUH3n``XyZIZOlFI?J2qY_~JOs8Fnb$+Q;@`ZQ@{niePar6W7m$R_O-Qy`c z^pQ7W_Op^niI03AX`|`qeoapDKC(tig8MZg#C;@<=!5$;5yXAujBH=-R{|)0C$Y0M zJ(Z_IvevstWeZ6l=OYA^Z(Xv^m0nhI%ayX{0?SgBmLW@AfkGe52u+`J+?2#M9t+3t zoK>M@Ov2tvTb({xS9chfQ?`}1{r|=-WCXF{we6G|mA59YkB%ITtf-07qK@DG z>er07@Sc=b#wS~y&Uvn##xQXN0F$3p^DZ!nSzT{blL+R$|LA8#3S(b}AmSNWDXQ?o zp;c@+qG^Ry;7FCxp@oZbgF}4DOUoU1YaOSED;>)f7}1>i7X)mcr3sM{e@4+c2OP)Z z+6VP)bS23+W!B5&1RA!m>WKl&@bv^A>n;gC%~ghPjHL9tIE{uXib_&xwZ%)&7D}T< zJ;of4U)VDoKZ;O1UqRWLlF?rlKX`Uh7kHgQK|FnQ_9+?C`#ig5#f$YS6X7$9zaH9$fuH<~sQZ5PV6Tva#h_@&;5HCG~NtyY`WLlY6bxhl(; z6wDt7WrGqwPji=;Ab2}Tk3%!Tb`~2JLczjipr`5sJsom_%tb&?tU?efVV%F8{m3C{ zq7Gq_i*6V0FfCh38vZmE_mNE*_9~m9(>~=6=BHWsofQk83{&NlKpVE@NmzN$NL{^@ zg`pukYtm1Ki-pklB*$%UadOfrl>E(&k-S8NFQGU;B7%7h^ulEx=D#3&KT zV7v{CELD`$jWqE+q@N|~zG_3(8M5X534_s?AWYRP8}m=FUOn*4%4&2u;iwmaNbl0X zX2Odaq3E*EBGnT{hwe0<@1*BJ^H;$-U+*-&KH2y>JKKBA8DA$AMsQH!6b=9=BS^#y zq>M22AxkQ&8bYFpu+=3ym(qYLQdWr6OwO%V^)zz^0n&Y*4y-D8qq1s{q<_W2StgzA zt81`Z@zffY5u5VoD=oT6R@rLM=e66(bxUkzul`m_e`KG6u->GXLM%PkZ|syni%J}b z>P$t|+yr$!IMHcv@(+RsRHKG>G7r>+-;dbUsb&}6n6Ut&6%AiSZ*rHJ7NDL7YuBG? zC#L&syWS)5nh;SDtLZ3KBL;h*VlaKFPI`)u&-9|(C%O+^=zfcMNy*)TmB3MSuT7&# z^(P@2iaYWB)gS=b$3sY(i7yUWn@A07dzcALXx_&m3Grq!5A{auXCK;To7O&0@$#;% zQ|*u1A6iiY(>7N;9*#7km6)~NqyZ+9Dpn@#Re%b2VHXOmsb+0VVm$NN72__kYg<6o z#Rg?a!!I)+qfgpJvk1u!8xL%-vdjoSLMxG)svUf#aMLez+Kc&+ms;FN;S=d{ zEkEPo^E1w!A&SG-O zoK!`S2q)#b1r8_W>I4oa>4+{zkdWDB=L%N4&H?MXIu?UGKq%?AHo6@`No?c;eOLP@ zS=m}U+CFjwAELid#f9uopd`Ff7QE|AGiar}oEBH?a?4Z|bCG8`Q~sr+@-HmUK+uW+ znSv}_mDZScU1*`u@`{Ypp8f2QGqmS z5v9^fAT8NkSDy~3XRBw45xyf0p=jXH;|~*X>xzLT>*6fVb_&tyPEGYe406@cz}H`6z@@fu~;7&%-~T+O{f3Kr4$eAjZ(x7wO;R-{MEyCd|s^9Q#6k6>ew+f ztYoPT)|8zfug3JSHRU0O;L^IIm88d&vSuq6ziDbRrf*m*ZwVSoJ(6$z}?i{3c|LQJPmB_QHC|DDkFXS7F$T1Y^$j4f1QoyVjkGjQLgfu6v_7-Zd;zyj{KD_`2?0_sUXs zrviWG>*8Ijf?UnJZsP^b88FkD`dbfWFPSdyF)QPP;yB1P)@B$)8j$6YYq?%GjY0vn zct~AlCcT*Y3P65l7X?9ZnY=!=>!Haj;5_u`wdDjvzgQ@%3fdJsSh^KBSD$ECHQHIX z>}=x~U&iv66^nf2voP4Bdcr@*UNeH!Vhf6`mEf47P`rA_r_O6g8!2dItL;(C((g^Y zek!hul~j0yb=4{F0GzJXfAKK>LVqESlkE6d$+X6*1Bnx`p&smKn3bn#3EZG41gx~o zT0xe~{jgZ7(xtPEW7QECo7?O!C{@!Q8n%H3Zvkk@$L7d}IC--xAW`T1pS&Wvkntb8 z&dCLBS9i2gpF~mX*hrxwyEA=pmM3b`@+We8C??|W%=Li^s*3nl_%X)LcDfZS;=aX( zjs&MX5#5sWaaO4UF2kpj_8gfc@5&YJlsBP5WY`wElvAWh*Pz(=uZ=MJg##J8X?~+I z_nJu0Jo$*<=u9eB53E_7uK@wnchUp_P)DOjR+fY|eT^<5*^<*F^%%E`uO{0zZk1Jk z>BzX17XGmaJS}Ww74};KHs=8f11(RG3997^3@+=kNW!$9or^LnT!Hg$+&dLTSVW5+ z2kC2tDs|97okB?!3T|2b-FB}{;T8F9i99P-s!^v}r8fqyTsje4E`=lN%n7@4kA*Ke zyPgl^;KFzzO$RQNE=O}_0~O2$ZoirH=7jJ?cj-W;$SK%Pi7>suL!50P=WM(6Zd1lvvQq8YZK+vi zS%HJpBn3N^Wr@gS|lKt1yGNmOOsBc6Lu`LzHYmb_?WmmSPmkZ-VB`OtV zUe^oBRassAtzlo3(sP~bL@Q4;MOhY4yZ<_vvbLxskcGaM46jB$5>FCx)xL%MTmcXF z2Msjt1{JWu5xTI9_>hE#mOIqazlaK6M84kBy3&R)sPY|0265k>uiX+jc+w7q zVZG1b!IxsRY9ZzC~g+#bFqI)U}~2G?%!h6FazCJv=yHy zdbSS8et(jxB%G!`m@K6XgC(t!O0F^B6d)t0xmzXZ6{L+&HK*#-f0G3thr&Ti^sQqg zHPe*#cP>g%a~ouvCS++trkvbV#*y2`m1AMvKQ6)at7 zJcm2fxwyKT>ut~vA&qNujnWPV0r{lz&0!Eqlq{&A+iJ++T!Mr7;>(`WSm)1;qqB3F z;8U3i&SfTufGrBM$pixS)Py=`5*%Ego{-L)$WM}nqI@AuBty8aam7?+<$!uOXNarj zVGBc|iLH|vI_jPjfl_!wXaB()l|aconifVsD!V!IXJ;wg+5XR3oD#M!#dYqL)r6KB zMj3eHHMBPw7osguziaI+YOh72TprQL4}G5v?VS!qt^3Rj?R-#^qaauL!2$yJA1HQ5 z&#Fq2k;6D-ZENW|nVX81O(P;?k9f$HR~XLRbAp9szW9=SMY#n5HioUf&}9e#W4Ebw)Jo4y!CX_xl#|Y z2qU2({hijTl9ufxE$gCLUM|a8Ha--Aln72u1h?ov9Een#zHuGB78 zlRX_=^Vr0N!~!l0v)E%TVHWk&U|fNp#1pq!NAb46tgnS`*C{vJ&Hm&jBWggKbNUyM z%AiT9y$@O67CA%}g6@OTw|BP2_p~0?-_u)5rD1+1+F4DS`?y57681Y|1*{_>OY&=`ef*v7QVq zKtw&6C~cW2QbtfnGErdZ`~|7r^S{t6RbMzZeLaw|WNMEdF*0+s9 zkj4gGnMfL=tf#y`R>Dyhpe%(DJw`fv4?x-TRz*$GBQ(7eYIPI+^RioX# z8jT$ksZox;ZMkw3l2~Yz6VO<%)_s^q_O2sSOs5Fd9CP+ecU(3^;1%7|IyuG~(Xreh zTnvN7FNR?SO$?)nDqEg3v&F_`woY`%G%Wp|!XfX{)|V6qkrh%={)=Td#6RkGdr*F% z`se3U{cA<_+B6T{<&gZM@ALHvqO1@SWk>0O}$nZoVe#DCtzPcX;CvIOf3B@hb| zBtBzwqI_!a?uZnuX3z1+l(R#t#Guvo$)q0tmrS}TDv)Aci$$O>J{h610aei=t9>~O zbkZffVZeyP!l=i?7?b8tgV{;!==szABrUmL2}@1H&Y3PmE<{1b4(v?N=4~&UWvZWy zd-t@ocPPhk7^SxkZS!YAQ;t5-lnbXt=*dnk^N$3NU>Z~IB8PN%FUB2Ht~?{V5BxC$ zS_&m$_t^4cH?kHi@T!!Mc}CWqtvAKgpK1y`jSUYw|I_>ow5QFJEqNoOI_QFsf&_)c z&NJ-TlN(V5IjErr!%NgJU$L}gJ2BG^?U>wFFSPQ34B&d0Xl}`Jy|g$KQ`@c+&S??M zsH>nL6=*?B4k-p@gUk*+QY)9Vlk25O#qfepcL=RWXH;hl9XEVi>p!N!e+DHFrz2b9 z-b(vH$dU@u4~uTKsf~RokfVW|rss6lRYt)$Tm*J1^AkVAk`_=WBPK@|`a>LffB7&j}?Zd}&%q>r;NN zy?TLkN(Pfr0Rs>TU@IthcQj1_A`t);UeVo}pO5!1L9e?tA0Nc3UaIa^EF=CR>DqT| z_K3yh_L(XEirQDQ@r_#6VD4#s z2R$Ga-oqb+zRKL=ussNO50#t-X@3e~4k?SxmWxUtC>WM6>E-Oc_;$p6f=H!<^%`s0jWSQO9!a z^YU+D6aqsEA`yz##eL?>XL-{VS&A1&94q3=_d2?9RxKe!U7XO(vS=N<)wA1tE~49N zl#=NHCXoENU(QEpRVyZou^&U!vQG-fmI_^9~0JHBar6L+~sK^SU{1<>aMXp~JjK`CZJjn*tawZAGNOoAF2(+tIO zsJoz88Zv@prydO`j*f3u$46_xtP+$-FZIWxds-J6)RB8y_wolINx@g9z&ZX5&)~E( zBQomyW47Aw@CWaHn?K7kaXE8YCT@Sc^#8N>{?V3RXMNv!-*fKobMBm(xst9mW9!`G zE9=UdvB&mEGnPe}BQ&-gDM1*eQ5v^(yS!GtWc^`dFBYt2uz)Fu)FEO;Nlo!$sml&h zC~8D8sR#xpK?S9?L4b)>FrYLhaT8J;a2h3blYYM6XYcpNx#!#;qp?X+*4Vo5d4KHv z>}Nl}_VYaZ*-z!!VPO1b>C@*Ag|gG62?s3l0EJP@?@B)oX|t#m1#4XwM6BtL?aAV> z@b55McFQ1ytKBmGwkmcFFQ_WR0ePWB8`Hg3kNg3^N099?1KQ>^V*O!m`aRQtR=Mu_ zK1hS846EcP^m0ziyxIdfBvaFU^5`nfrCJ(`l0lzGRiTjpUY%t0@96MZP#tg{v29rE zX9pl&wOAqhT$ko@=^M%dNe-SmSOX4AkGwIbsPdYNdFf;+(|>L4jZlhO0F_Mr?qK!| zSNM%0E`2bG9mrJxJU$P<<=V%K@_?BPn3)bpl)?Q{JI?#bnnSZ(Rj{v@&;mEvZTgT3 zhHT7`TyjPN%;?OWcx6(wLJL*u!M8Z|z=O%@ud;LKF=rQ0a6rbDm{hDISZ44r1qEa; zJ(O}pg&cQ?WaHAbnx=E@sjw)kv#CdwMVWOG*hSoHIwT4u*=1sejJJu2`;yKO*@A1Y ztPYA6T7=73<^V(6>QW4nxOMocRs=#*wnay+9FSy{N^|NMn>rB8I4z%b=qCW1Qq@II z2CUOT9A0#|CuPSlSx~gZWtt(;x4KR(U?Zbyw~j(idum% zM;J}rvhtE&7_nR1HxODB%*a;T{n^PPl!e1si6XnhxOb01+k3Q%!Fn7oJT z6Uhswe56rMPGZ$;FW0Z-uI|cRWe!nO7eJ*J+4R`-iD`EX4lzY-Wa-Hi(N1?5>ZGRC zhN3LFn*7g(xq1dWXi=sY&JrK`rl{E1;_6)G}9L#K_&S15h%( z7?A!eCXM>Y+4Lg5ED(2y*oxE{LbFVn!esW*jYyKoVX`XvZ0sEo)#1A)_#hYd&_}Uw zPhm2dD4aJ(JYY~V`gL(V8ycAy86=o42Qo+&WRNUyQ1c>o!75Rxyf4=QqUzvn8iq!$ zsNn_2=+8{y^ynO%B2uPtx-Mb-SjH)7HNt6S&MuDpJjMQG&KjqjZCK%y`4dC0hnFvK zx;{E8oUTvd6hwcBxw6o}03F3%u$UoH#YuRAcfyIbHO+pG)W~-I2 z9KbjPn60te{#i<`PO?sdOWawS(d5f?v=BToH9(@NbNJ#t_IFDD!(wuCFC%Hv(tvX7 z;-1Bj*k@Xepm$UppC7t09(|(FSaMTWekPF-Vp?15~VHbuw$#1U|AU-+s zAg4u^oQ4!&q?Dx9ptDAdgY1f=-F~fS`KH%IkzUyCUH}5||LoMlu2Kt~LksY-kqoa1 zu4#SKOWKGeXmDN#gxEISfX4f+^M<9rVM$wyIhtq;D9+s2-Gm7ayJn%#qQz4nKe9Xk909uO%P$AB1!U62q#2o z_d(kkS5{l&L`E6)yB0obGZt@J6$qqc^kS4q@EpWTQpzYPl|UMe#VptUfP_?I+p(c) zQHMR4``d4yCQYBQ)UG!eWqVo;V_;^V3Occ@{1VB(Xd|=6r{8aYh25IIt|uDwCqB^I z7t-5n&mUpsBX&(Xft61YEZ*kcdB4wLM+f48>CBoOM-M36FUcd8w%vD}yBfR(0M|-Y#Xy z5-bgd12x@U41?5@XRj3?M*YyA~rAB1g0b(X}yn0g6B<@3%3f=8Lsrs3m} z$ZQtcd4%qq`G|7oiF?}=O0|I56pExtTU~DSQ_3U=y9fuS%yV?lc z&S2naw7?syW~~fvq}6l@Ltr64AiSd~wr|_5DnV#@NEkk<2PUh~;0wN>{3}%tL58)) zf~p#7JPC9ydn#WbF7c-M9SXWEqVg${fLYsZwtE*ahIh-eUySB>_KQ*S?9coRB<>p! z_y>#LTPENAayC6??k&^8QtD_=C$*QV46SyUAW^*a@S|B@V-#wlm0pP*XfI%jl4hqf zRKgN|oEF{Wj(eLa$YP_1yq%Mqy;Re(GZuYXc9Mm_3(y9OnJv8(>rfo%2(`TO4dsBa zP=X0ha{gB$b-;QTBP_WeTcMUNk@W{H;wn^l5Qz1m`jU;|)H+((7C5(ewyS1OVT9Yt zZe&)yOHpn*csIk()`>N>QPm$WrWBY(kvJHFj6xKSK)IH%%0q2!EDiTQ8GmQwxDCk8 z*SSzUz=4VAH^^sN4_MJ?S+23{v>w3P%B|LeMgkR0F{esx(t}106%Qa)`9SrcPNPaU zQfA0bopR{7J;-wslh(}3)erol`Lu3LUX^PlhH4~7L19i~%2`k(I5IyLn!4p&^ zxVo!yQtxN^qC!9_&NS1qcMLBMb%f_xeI?Ts8knsl;d!uLTXOoP(1;qUKL;sKjC)at zreOtEW~+tf@p2`&EZ&nVrf^zWmD^lLwfG`J z3NzEnAhbF?0`j)Yn{6i^9z>r*S2M#_CRU~}$4FHxp%Jxn4g-u@sjJWQ&;(Xk-?@-U z^>Q-_dpdBGC948$)ix&<_L9`{&7BeS&4g?5>6v6HoZW&LvXjdK4)T#dPkyl~)F#nO zIB8_jYvHEdPLjlOK3eRal45$Da(_;DPDi%xsVWv^OhF1fb5JLF6nF3_YV{+4HUuk^ zPY^y{3<#MP`Z(KoQKjmI^MS1l9%JBbO8VHnXV5DNC{rUwlVqUYx(%@r0_j%Vft6@V zLJDjpfrOA^%=!Y+l*AR%F}WP&^lmvgc^401B{k;k$w8cGE~@okg?l>fF>oKczLYG% z?2NCP-E*r?ZdUVmxytAN_9|OJ+r&5W%5yDBAErt_N~|Wau@vo!vnHKw&?eS}PhJ7z-_NOv7gv{cj%9E0t^h zsQ;6airMqhc1PvfQ@`@Zh8|fhbx~cZY~;!A}KJ;->TnR1s1g}s_8<3w6-Pd$IDav)m^lW?&&a+Wfk+$52720R9y*}xToV3W0lb# zt+E;BFG#6y)Qn!!StI@bBmurm+Y`J3CzLC|UNsaEApKE2*g*p5&(q@G0C@qvFEj(7 zapy0mF~)9#aEnSCwD;#jWuu2RH=4JCne+IE&&WE{7_|M$^Oj~IRY_sApQ>Ns5MHDI zb^DI?!02BGzy}1NNo;F9Q*wsTQ!P>p)Hi@h@OIl28L$0p4Rd;}O^zmr_Sk}KFLK!O z?3rXlK}MpkgH2{a{_OT@Qaw;(LekY~=+Bw0&AX6$g`j5-s2g9zZ8h500Xg;@P_hd~B?1hdZ;0Gg%$IPv>ljBytHTjpiS z)S$(Ls9Wi3V%G6ZSmXtI=4(-Zxi-F2?A+r{euyWIQ|`bO|rLu){+dp$&Xw&j3gd8 z^*lM6Pg8iBoZ@_WUXKon&%H%c|C`0!MnHcn9m{Kc((6xoWn7yv#(ogzMNZzD4Z?wC z%pw^2rnwXO6SYZ(9`K3r%*VvXN+S?Y@pt zMG98`ZS843*vHj$_21h5+!KTPo$7vX@)&8BE@o|h7!y4q_BN@GYL+c6!PnodwRzTA z*BYT$O<;fH+Ju7NrV`5t$va44f&VX7WXG=hrgfS$?1n(ryZ!qrz-O#M(f})!?df4` zkJmJq<%%X8Jcq7$dCEv~`lOTg)&Pf^zPD!*W&_R5(^1q~3Vucep;0fKya1(#Do2;b18_g`~M)w|gQqa@lbJhyJ z*5!1c4ET_n^E?k({oS=M{_D2u5zoLNdBY*BQjk#zCxEsz*!OwpB?cS6I38V$;u{pni9W*nSvb+|VH&LWZ~(!YLfa(ytD zI?iP9iiC@=Pq4^a2Cw~Mi(_HZn!U`b+N%)uiPYDD*opTNi2c{s0}rNYD$(5V8xPU& z0ch?m2kG<7)$Q|k^?69-@WpPXk%D~l+T?i5AKbmvr|rey?$P>F4$M7uY3s=3nCFu^ zFUUl~OnlV>;jkv)Ej6VarRBwF)#Bw`{b-no=(dF8L_~kPC9oxxAZStQ~XT<2ijpu)z!xKeeDg03E+U z%Pl)9nBIy8I1;|sZ$Gk^15V4FzM3ZKbyNo8GD$sids{#6H9hkdZF_hz`mb7>EYaZ- zJ87_qO}wXSuoe?oP?{F6asXo(TMBW*C~iuJY<*tGJ9~2$xD0ZWbA2DgiobSh0GPdf z0l4O>18~z^!unggRgp?I%o_id6IRVj({%km@9zHSRqy^rIry}?>SeCJ8q1yjtKFGwGj z{;IXLd6>5Lp;gZ9J~&+aw8g34SFJ4$|GsK%ZPZ$pQbv86PKFnOi5>@wPkPC$J|41W zW%6%}_e;_&P8N89!?x4=+8L8S9q@!b*ZJo zeB=p!vk4%7d@Vm4roeUWre(?r=k|~;hzM7xp zS(zRe5cg@#+2G6=(8s+T-y6#F~(_e<2mWiReM znt`09B@f1d!>Bn)eid7A(MCD-ljKek$~)X6xisZcv2!=2bmH+y*;jZi>TQ{6OXni_ zS`=J-OTp({EmL}N0fVmS-=Xxw(SwuT@Q=QmXw>zJ+i=IwkJnu@T5nj2jE~)ehlO;T z(bh3X#wH>xtZb^WcB=tyB#v-+p3zd{R6(-WVN!`=E3~$MpVWINBI~?)zwcOi`ne z=CE)pqho&baXB9SD0i%GWo4@0(FSAI3pR?5TbHTsbbTn_!OY-#-hfkmu}c6!TkKJB^IkL~zmM7cluykC6|sy->mq&`pi&GQnoY}}@; z(emleU2w0qcKgRg|M)uhJIwu_t@=GXq7J}&CwHs$e$_fVzt#GAdIlf&wJCrj@i4**7bM%jjRvpO26l}sW>D-s#< z2J`e`VOtckVhS0GLXM4wZyz{BI64ZH!_l#zk1c%@1h!FLsPB(K008+Z#6$_Lqx?H| z&xzshi3F~PzS8d0Vl<3;ln{=}e5usLs?t;jK`qw@A%UY#fWM+``J{|z_=gqzt2O+e zGl>s80Ln9}?&fM9fIu6Lj-~#ynDOjgv5+pjLhTjj|U zWJz8Bip}d5uf2vusg2{ujt-Bk4_5nYfLe%CpdPGXyGx@MjSd_)OZEEyrQUHusaHy@ z30)q9`eAytE6Jwpf9|jF5t>!2My`g>Nq+bL3w^$}XBVS|_3p_N*JGO%llAWCIWXJI6x=eT0w1o16XrTumKOQ*tYWpxqyO08h}9d;T+q{y$Sglzfx# zkHL9_)H>lN1N?h_aSue%p`V7nLL6Iv_OkSPe zu}aGD+8kC<451`VCWCJDCj#DK*H4{0_Wn zv8~EVE)z{m%CdJN=%QYIyJDE^<>xYxnTF zTfa$PQese9KE-65hd2`r;E@L2rv?_L8yGU%JbXwGfjzbE;oVklkcmUF9EqQzd zi(!wwTNioF<}%a7yR}UVn&1F3nO|xe3siO2E2bsP@9>AE zWNj;euubA(QdtNRD5{ood$#k^Pqf<67s>2nQV!(qpYe=NX%Fn#eODI`3_ZP7^WWR<`z$C$hl3qfeOJ(|<=SoZ$?{b3xxO zSAsEpdm)H`im!W8)Qs6u1DdV&^lVfhZv-0O(?p~4cl{Nf7_l>28s(_fkJV$?97J!6 ziL3tzJA3PaCeNRyX?VU(J_=>C{p;|bHPMo7#Za4^>;8dznF~STqk(vYE z)ti~P)oI@rWa+= zdQEohsH~_xVRf@VQP$Kya2M1?J#Ovw%7d}ModX8&c-B>(}YS34g_IS zaHNr(>=QUICX0J>mJ0aZ@czm01C!6!BiWc~#-(?H+@J1_l3w%|Yh@OM!^ZPNR|Q+FV5Cg8g(^>|JxdJ#Q_EVy<~dpe*|QF9m`1k=Itn3YpaB#rDlL95Na59oBj3Ix1C zvCqnn70qUkV@I)~0}f_pug*eQq)Z2sk<$JM{pT@%s$kF@trvrCq%3Q-Ef82Il`5&^ zTK1F~dDorYcMt;W#`$Y*hIQZ6Oeq7Os0C6zhJks#MZPSuu(J}5NL#Fc=e$(caXL0{wH zdneuZj|qN`hTi7oxg#Q|qXKg%vW~VN7Xc`gx)h<*rKwK*D9tM-H>S(!-hpIjv(raKT(87@n{Gte$hx5Kb%X*-Nlc$6hg3qLT zgBDH=2)q=!4BUu$APz}$)f)=-sipamIcwBIuj1O;`k?A-{(G(Vo?k1f5-Tbtm1?XA ziHG?oMx=Vi`cmh}wW@Ax;f(lD?JUqs0n5jw;Ux8RxD9_c2SX6ogBs+VO+~=Cv#3Nc zC5&r!hCiyWbeH$^(Rz2-xz>#%eS~Yxod{VZP5s!ISrN9H;AZu_7OLD|)_bwl0&vJ5 zqYLWEv_Mfl2`OrAP!bTt|NHq-NOWL*I;+NNgsO`u$Q8}VBP6M9ceB;#7CS2UZVtR^ zqqE`Wxd2BArLBpO&hc}keCxTh?KfSgT(M@OG`zbt%ENo9-#m}ZAU~|Ij3+G)I!c}F z0wU-vXhJi&Cn$pTWrC7Tn=W>x5;YDp7WmvE(jp@%OVM8S8x#t_>Nl`TnUaJ!AtRsE zMCUF#h1J9O8iKGU8_QEl6w29^%7wf-v?jcW1FLb{__eJgCFP917GAXTFrI)01qH~M z1U!od4vtyFlIkgmGSDqvPDuo6%t+=|(4yPNXfb)73}-rT0Ze(4v;|fNG^`ZN#_+Xd z_;+RG(jBO{p2v?ts^4TkDmN08CIbw7Idq~@l3{i!e=WWg)1Z~pBI57%Yl%)3!(QAz zh%k==QA>-RVxd=dF%G*@%xaz9H4(NZ^qW9VhyOUuNxy+pz~(?>M=7}7a31gTab$Db z<-X6G?gj!;+KZ*PhU9LgdY0nun1k-$F56r+W(n@Z@{Bc;^ExnbsxY1i zFpZXT!d-WA9cw#AuYqhnm`Z*-BBMS80dg zI)Ud2bQqO&CpYkrPWmqJ;AqF!77JSPebuoL>&n0a1D%fr5(1&EgOFT`+&0Kz*`$D~ zm40FNX^Hy0&sZm8Zzf{i^n@H>HnBS$q=z-D+0;0YYo1LS+&zw0r`fbvbwtM6OwzAn zoy00hP+A6wr*G+Y-i#s=JA>1uYm#^ERY$c^R&kcZ6aj&5~rqgBCA}r zz-HlKuz`$N%@h&dl)y&v*lMgez5%v5zS48E(Jx)sMt`_#K)+DOI9lkBam;3>{m>7n z^U=>b9;5vB&PtV*(VLJvdiggmKirvoKg#-eX-h zx4l8*y}=&utvB8yHGFP+M;h-Pnf;#UcT>eledRRoxF?)dg=U{Dit3b;Sq`X1<+#X$ z$2Rw(&guLjYREN_e5L#0g33IA3;b3^QPyj|m5nE~wN9g)bQ-=g$XbfAUSzF3y;!br zeDe*%|wXzD~ltbLe?%kyZ9)GrvI^JEc@dcK0?;@^b6 zlW$|uz71SdShn)QxG7R69vmynHg*y$-xFGBS$4^`{8T^$B{3sEIYo<53N#KWTh8pNfiCfIztBA`G?de?*_UB2IjkZ<| ze!4$iv}?vCBsruF&{z1kT!WtuG0cbtBqcYww0jzhysg|3>^6)zGLHNKi0w{15}KjS z>S|bBE$6FvsXL+mXrA*dhh?d4IDP@3ZgnJvJ(< znI8Yy!CtU`%{L)`aT^pi?#KGW%O!4_0LO#yLWl&%cqBGQ=BwnNqs4yIJEs}W&F=6N z(aV|H_Qj3Z9JMwA7t#mGlI+S=8HV86zdyYFhYQ7OE^|FCg;W#Q>uMnuwi|vfufAJH z?}@`d-)3L|zskRr8vG=GDhB2h<|zjD#*`KVFT=oMOpZHXLT&bhGqR8XhK4cX z-#hsr4iuSUg$(OG6Omf(tzew1rjX?52256Gq~B`++m~DzEyq$Uah%q2@P3Z!9L^8; zLyNO$UNfBkg{#en$ZK5s+2({_YH&i(zjgFijsEd)p-TU~rT+l`KT!HNd3JPEW=}?6 zi*!S6IDU!Z;0^0I2>dDIii^_bZJ57L;vifYuhP9s@6vG3nxJET>>zt4Xd1zS}kW?DR zH%jsIwJ5OTkILNO0&HzN!kQ~t68LG>0&zGLb6$(j9a%10dzZ%3;?5S1D~#AjqH2s7 zIQo_qXZHW@-5AJ^Z}(|0Rxf#~UM6hvO=pL2A+xe<)RzqKA)UU$yu1G;)I;5aK?5az^^dp|GU9|cOX{fB66|=*YYA-z zE-^;Zp4qWByoTOYBZOATcfi!&`POL;K7J}<)q?*xLoD(jd4kGjp~Mh2TF)7_Rqv6**g^J^WAkWDH*00j&ON8E(y@}PsOFG zv)>YzT`pf6mpv|THmkyRj7=3ALIs5K1Xhc2w7?6s7C@V59h`!vvJZCYxs(HC_t^5_ zbZ*oloR@zkoM=*oQC~Nr!oiwq*DqQbM>3fVfKVt3g4oZ8DL{q26q{#SSVd{a%mKh> ztjT~&FYh~m*X3sS7{Cti9CQF--+-j%P@>Xg-2^sC47tv!6B;VRMwr;u5IbFwN7+4h)e0fQzmI=&MNO{5eX3dcB0`s36B&XAmV z=a<*JTLit@VD3Hbk?f~0!WK+KwnX_bGgX|E=I-tGjYIYfKI&yR?D_kE{j~9xtv7w} zt7)(SRgfTF1er@hKmegKcwuO2nO@3hX3$LzR@fD_RdW@^b=>t>;dHTprw~#e;*<==8&(HU-cRBNeRMuk4&dRb{7~oVJ{#s&+Ss0i@ z{S_|cDKCe=o?3`0H`-AHp)8YNo;FY^Z>K{*lN+9L@wP4}(?pps?&bg6MLG*!_9#`y2 zfal8Q16B0I7>TBJdI3$tzE#tb%x;=@G~o5_QfK*4k~ugUtTja8l#E`f5bl@hvdVC) z0L3h=bNCXVT>zyxnP&A9yMv!Vggo-NeQ*Zq$^n~-J3a4YomTup?FPPg5_QH zC33NQU{+tVOf>or0yscltLiHm5-x7n>RFs6CNnSf8?Kr8%uqX^@&PkQ`K>#>W<4GeMi95!%oQFjV{+H-y3D2M%`pF zgy(U#fpc;2>QxU7R+8&)4y3S{PSRSh|jFP z>1USGIY9SJ;XdP)-9M|(D@1T!mC9~vkN5BI9`CU^eP8)_x7N@VSOl`tNW2ZQT^8Bm z{alb(lsL*IYa4ZiMO`6=gt2Lw)yj0r?mD5Kcvn5)Xis84iC!xyJYm+{+}~v0&t)!WPkmYwI>=6@12s_VswomUZ6ivGL%oWk*LX1UfAs zXDO52goB!GyOV5tUwM1k+*-EvMp4 z`6q`WDBC{&C~&)mKHG zj%-!gKu6dLNP=6=2J%)v$FQoxz^!bcdZ(XrEmGCjw9n7Qgd-m=s=ns^f7;O4iKlE) z936Mn*W-0MO;z=^R6uKFXwnA2Va@E%(9)O=7G5FeR*{J$@JXL*7sGb0n zHZoFbyBbbZeO;wu^VT)^)cU#j>$>gFYm=FKJP{0KeV^F6PHwafS#QTYiQWhaB8Q_R zBZ#;|H)$WFC*w*;g*vbsCps$pdhInT`dSRj{#tjTN74FHp){xmg4Rz~;-gmctt6C?T-D*9?ms$_B3}Y9>XtZ>3@cL-;tf!1N&%+(u zI-emvt2U#$Ft5yEGW$;{G3|o`a7vzvM(;ybqqEu|%`yXxa3##~X691n{$o^%@OPTCmVENu*Kq>Zg#2m~daMzPw^ zX`H!ZF&*~7Y@Jr?auqPQD*yXZh$BSl^#Smy;0-iGlQ$Aqo#~6}yu0#ca7OSUD#>$H zk*>K7a6^WNAHcFN3>8GJbb}9+E6Y$ggVYw|S(ZfRA z#G!Ri3u4Y1uB1G$Q$??Lg`-u3YE=i_R(_s2DkcE9H7Q;LiEiZVHsB*z5jCW73u7;nSq zx-13XqjR3DNGL8dx>l0zG3wA1qiZX{VL5SI`HJk_o-cbX!80C6|~2C5tEr0 zl6uOE#k>+8ZRDZd?S;K`wTu&Ik^ ze{@aDruHVzQkjIbbbIHUTd2K1Qi-{Le<1eBDa5A!9|(uoJZagU<%3Ruhj3QjC|{jn ze_y`B4dr`b2c@N9tTIy_iVcmUQk1TxZW1{Ys+(HsO|_GT!K$UBk_7T-m4_LUB30x< zu*oz$xB_~ma@VpMJ^X1@;jY7W99*Q>ox+eV$g96=ITtB;G<$wWt`z)vQO+oGM^nZq ztHqQ>%F;4rhhp}mQWQ{F$|ogv6hB2La!2KcVj)AvkV%+Xc{9}7Z}y5Z=ZrS$4MC}N z0D-VKx891tDbhhw^?&6S-yC>R0RENSN$yM0(I8U`&^>pXjo_QsM{K+W>5S8F$_m3! zB;Hk}U!2^EH)H1mZk8*k5L0Sq_U}LmR9D&oRNBF*;a>P_AC52&0@X49vjMDI76IIH z@Vwe7>bKIOiMKR|J?(8}$^!Z;giLTj2z3z{s7Drd1x_-UtKamK_RK+Ku79G;)|(KB5(f>gQ$A3sS#N!9wr-Nb`mqpPn~vP0yR9eG^w|JgC-F zDUOpboq2OF{TAAo`ozObNsT~psQ`_cQiIcVb-3kVLXeB6kX!A#I_y7o`N69@9!

)O4az3Xe$W?MUu0B}E6Ms#fv#ag1FCxnF_2tW6OC@|(0NCyudO7RZDIb38!6RNI&xCW&|e8=va? z${q$}R}Wn_z+>CFNm)x28^3csSP zkwwlfg(I7X7NwV%tgESYE0ssXyLH(=TqtJjt%1J4EzuIpl+9rwI94}ZhQqzNq6H8e#vb#;Bqd<$^aTyeZaH9+gBvqFosLP;4g;WWUsWK@3 z8VOe4KX@4wd^-{|g2vXX{8S5)jEgyL>OG&3c2(jPR-uwt0^da-41jitT1qZWjtKlk z3wDl}^~qpau(!*gcxS1@y2YNjbHpNAt z@Bjs9$kY%&R#npEt>lM;Sy)smp~^PJa@4yADss4q0HX{Aoj#1^%Ity*{@D1c)$ieo z7(k{6TB-dmW>MDZb*VbUXeYL^3VQtr0bAPYm)e2$RGy2GG!OWa{6%0AXoX35sjh>q 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⪚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 JZpZ3a|33uX|BnCw literal 0 HcmV?d00001 diff --git a/nullstack.js b/nullstack.js deleted file mode 100644 index 53d12948..00000000 --- a/nullstack.js +++ /dev/null @@ -1,4 +0,0 @@ -// eslint-disable-next-line import/no-unresolved -import Nullstack from './{{NULLSTACK_ENVIRONMENT_NAME}}' - -export default Nullstack diff --git a/server/environment.js b/server/environment.js index 77917211..95a03d1b 100644 --- a/server/environment.js +++ b/server/environment.js @@ -1,3 +1,5 @@ +import { KEY } from 'nullstack/environment' + const environment = { client: false, server: true } environment.development = __dirname.indexOf('.development') > -1 @@ -5,7 +7,7 @@ environment.production = !environment.development environment.mode = process.env.NULLSTACK_ENVIRONMENT_MODE || 'ssr' -environment.key = '{{NULLSTACK_ENVIRONMENT_KEY}}' +environment.key = KEY environment.name = process.env.NULLSTACK_ENVIRONMENT_NAME || '' diff --git a/server/index.js b/server/index.js index cecf4494..c7685c69 100644 --- a/server/index.js +++ b/server/index.js @@ -2,16 +2,13 @@ import './dotenv' import { normalize } from 'path' import element from '../shared/element' -import fragment from '../shared/fragment' import getProxyableMethods from '../shared/getProxyableMethods' import { useServerPlugins } from '../shared/plugins' -import context, { generateContext } from './context' +import context from './context' import environment from './environment' import generator from './generator' import instanceProxyHandler from './instanceProxyHandler' import project from './project' -import registry from './registry' -import reqres from './reqres' import secrets from './secrets' import server from './server' import settings from './settings' @@ -28,51 +25,14 @@ context.worker = worker server.less = normalize(__filename) !== normalize(process.argv[1]) -globalThis.$nullstack = context -globalThis.$transpiler = { - element, - fragment, - registry, +if (environment.development) { + globalThis.$nullstack = context } class Nullstack { static use = useServerPlugins - static bindStaticFunctions(klass) { - let parent = klass - while (parent.name !== 'Nullstack') { - const props = Object.getOwnPropertyNames(parent) - for (const prop of props) { - const underscored = prop.startsWith('_') - if (typeof klass[prop] === 'function') { - if (!underscored && !registry[`${parent.hash}.${prop}`]) { - return - } - const propName = `__NULLSTACK_${prop}` - if (!klass[propName]) { - klass[propName] = klass[prop] - } - function _invoke(...args) { - if (underscored) { - return klass[propName].call(klass, ...args) - } - const params = args[0] || {} - const { request, response } = reqres - const subcontext = generateContext({ request, response, ...params }) - return klass[propName].call(klass, subcontext) - } - if (module.hot) { - _invoke.hash = klass[prop].hash - } - klass[prop] = _invoke - klass.prototype[prop] = _invoke - } - } - parent = Object.getPrototypeOf(parent) - } - } - static start(Starter) { if (this.name.indexOf('Nullstack') > -1) { generator.starter = () => element(Starter) diff --git a/server/project.js b/server/project.js index b5787720..b3c19e75 100644 --- a/server/project.js +++ b/server/project.js @@ -1,3 +1,4 @@ +import { ICONS } from 'nullstack/project' import environment from './environment' import reqres from './reqres' import worker from './worker' @@ -17,7 +18,7 @@ project.root = '/' project.sitemap = environment.mode === 'ssg' project.favicon = '/favicon-96x96.png' project.disallow = [] -project.icons = JSON.parse(`{{NULLSTACK_PROJECT_ICONS}}`) +project.icons = ICONS function getHost() { if (reqres.request?.headers?.host) { diff --git a/server/registry.js b/server/registry.js index 5305b2bd..fd14a655 100644 --- a/server/registry.js +++ b/server/registry.js @@ -1,2 +1,48 @@ +import reqres from "./reqres" +import { generateContext } from "./context" + const registry = {} export default registry + +export function register(klass, functionName) { + if (functionName) { + registry[`${klass.hash}.${functionName}`] = klass[functionName] + } else { + registry[klass.hash] = klass + bindStaticFunctions(klass) + } +} + +function bindStaticFunctions(klass) { + let parent = klass + while (parent.name !== 'Nullstack') { + const props = Object.getOwnPropertyNames(parent) + for (const prop of props) { + const underscored = prop.startsWith('_') + if (typeof klass[prop] === 'function') { + if (!underscored && !registry[`${parent.hash}.${prop}`]) { + return + } + const propName = `__NULLSTACK_${prop}` + if (!klass[propName]) { + klass[propName] = klass[prop] + } + function _invoke(...args) { + if (underscored) { + return klass[propName].call(klass, ...args) + } + const params = args[0] || {} + const { request, response } = reqres + const subcontext = generateContext({ request, response, ...params }) + return klass[propName].call(klass, subcontext) + } + if (module.hot) { + _invoke.hash = klass[prop].hash + } + klass[prop] = _invoke + klass.prototype[prop] = _invoke + } + } + parent = Object.getPrototypeOf(parent) + } +} \ No newline at end of file diff --git a/server/runtime.js b/server/runtime.js new file mode 100644 index 00000000..f4d6dd83 --- /dev/null +++ b/server/runtime.js @@ -0,0 +1,9 @@ +import element from '../shared/element' +import fragment from '../shared/fragment' +import { register } from './registry' + +export default { + element, + fragment, + register +} \ No newline at end of file diff --git a/tests/webpack.config.js b/tests/webpack.config.js index 12fb95f5..fdb7c0bf 100644 --- a/tests/webpack.config.js +++ b/tests/webpack.config.js @@ -7,11 +7,8 @@ const [server, client] = require('../webpack.config') function applyAliases(environments) { return environments.map((environment) => (...args) => { const config = environment(...args) - config.resolve.alias = { - _: [path.join(process.cwd(), '..', 'node_modules')], - nullstack: path.join(process.cwd(), '..'), - webpack: path.join(process.cwd(), '..', 'node_modules', 'webpack'), - } + config.resolve.alias._ = path.join(process.cwd(), '..', 'node_modules'); + config.resolve.alias.webpack = path.join(process.cwd(), '..', 'node_modules', 'webpack'); if (config.mode === 'production' && config.target === 'web') { config.plugins.push( new PurgeCSSPlugin({ diff --git a/webpack.config.js b/webpack.config.js index cffe1ff7..f57082d8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,550 +1,52 @@ -const CopyPlugin = require('copy-webpack-plugin') -const crypto = require('crypto') -const { existsSync, readdirSync } = require('fs') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const NodemonPlugin = require('nodemon-webpack-plugin') +const { existsSync } = require('fs') const path = require('path') -const TerserPlugin = require('terser-webpack-plugin') -const webpack = require(`webpack`) -const { version } = require('./package.json') - -const buildKey = crypto.randomBytes(20).toString('hex') - -function getLoader(loader) { - const loaders = path.resolve(__dirname, 'loaders') - return path.posix.join(loaders, loader) -} - -function cacheFactory(args, folder, name) { - if (args.cache || args.environment === 'development') { - return { - type: 'filesystem', - cacheDirectory: path.posix.join(process.cwd(), folder, '.cache'), - name, - version, - } - } - return false -} - -function terserMinimizer(file, _sourceMap) { - return require('@swc/core').minify(file, { - mangle: false, - compress: { - unused: false, - }, - keepClassnames: true, - keepFnames: true, - sourceMap: true, - }) -} - -function getTargets({ environment, target }) { - if (target === 'node') { - return { node: process.versions.node } - } - return environment === 'development' ? 'last 1 version' : 'defaults' -} - -function swcJs({ environment, target }) { - const targets = getTargets({ environment, target }) - return { - test: /\.js$/, - use: { - loader: require.resolve('swc-loader'), - options: { - jsc: { - parser: { - syntax: 'ecmascript', - exportDefaultFrom: true, - }, - }, - env: { - targets, - }, - }, - }, - } -} - -const babelJs = { - test: /\.js$/, - resolve: { - extensions: ['.njs', '.js', '.nts', '.ts', '.jsx', '.tsx'], - }, - use: { - loader: require.resolve('babel-loader'), - options: { - presets: [['@babel/preset-env', { targets: { node: '10' } }]], - plugins: ['@babel/plugin-proposal-export-default-from', '@babel/plugin-proposal-class-properties'], - }, - }, -} - -function swcTs({ environment, target }) { - const targets = getTargets({ environment, target }) - return { - test: /\.ts$/, - use: { - loader: require.resolve('swc-loader'), - options: { - jsc: { - parser: { - syntax: 'typescript', - exportDefaultFrom: true, - }, - }, - env: { - targets, - }, - }, - }, - } -} - -const babelTs = { - test: /\.ts$/, - resolve: { - extensions: ['.njs', '.js', '.nts', '.ts', '.jsx', '.tsx'], - }, - use: { - loader: require.resolve('babel-loader'), - options: { - presets: [['@babel/preset-env', { targets: { node: '10' } }], '@babel/preset-react'], - plugins: ['@babel/plugin-transform-typescript'], - }, - }, -} - -function swcNullstackJavascript({ environment, target }) { - const targets = getTargets({ environment, target }) - const config = { - development: environment === 'development', - client: target === 'web', - } - const cacheRoot = path.posix.join(process.cwd(), `.${environment}`, '.cache', '.swc'); +function getOptions(target, options) { + const disk = !!options.disk; + const environment = options.environment + const loader = options.loader || 'swc' + const entry = existsSync(path.posix.join(process.cwd(), `${target}.ts`)) ? `./${target}.ts` : `./${target}.js` + const projectFolder = process.cwd() + const configFolder = __dirname + const buildFolder = '.' + environment return { - test: /\.(njs|jsx)$/, - use: { - loader: require.resolve('swc-loader'), - options: { - minify: false, - jsc: { - experimental: { - cacheRoot, - plugins: [['C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', config]], - }, - parser: { - syntax: 'ecmascript', - exportDefaultFrom: true, - jsx: true, - }, - transform: { - react: { - pragma: '$transpiler.element', - pragmaFrag: '$transpiler.fragment', - throwIfNamespace: true, - }, - }, - keepClassNames: true, - }, - env: { - name: 'test', - targets, - }, - }, - }, + target, + disk, + buildFolder, + loader, + entry, + environment, + projectFolder, + configFolder } } -const babelNullstackJavascript = { - test: /\.(njs|jsx)$/, - resolve: { - extensions: ['.njs', '.js', '.nts', '.ts', '.jsx', '.tsx'], - }, - use: { - loader: require.resolve('babel-loader'), - options: { - presets: [['@babel/preset-env', { targets: { node: '10' } }], '@babel/preset-react'], - plugins: [ - '@babel/plugin-proposal-export-default-from', - '@babel/plugin-proposal-class-properties', - [ - '@babel/plugin-transform-react-jsx', - { - pragma: '$transpiler.element', - pragmaFrag: '$transpiler.fragment', - throwIfNamespace: false, - }, - ], - ], - }, - }, -} - -function swcNullstackTypescript({ environment, target }) { - const targets = getTargets({ environment, target }) - const config = { - development: environment === 'development', - client: target === 'web', - } - const cacheRoot = path.posix.join(process.cwd(), `.${environment}`, '.cache', '.swc'); +function config(platform, argv) { + const options = getOptions(platform, argv); return { - test: /\.(nts|tsx)$/, - use: { - loader: require.resolve('swc-loader'), - options: { - jsc: { - experimental: { - cacheRoot, - plugins: [['C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', config]], - }, - parser: { - syntax: 'typescript', - exportDefaultFrom: true, - tsx: true, - }, - transform: { - react: { - pragma: '$transpiler.element', - pragmaFrag: '$transpiler.fragment', - throwIfNamespace: true, - }, - }, - }, - env: { - targets, - }, - }, - }, + mode: require('./webpack/mode')(options), + infrastructureLogging: require('./webpack/infrastructureLogging')(options), + entry: require('./webpack/entry')(options), + output: require('./webpack/output')(options), + resolve: require('./webpack/resolve')(options), + optimization: require('./webpack/optimization')(options), + devtool: require('./webpack/devtool')(options), + stats: require('./webpack/stats')(options), + target: require('./webpack/target')(options), + externals: require('./webpack/externals')(options), + node: require('./webpack/node')(options), + cache: require('./webpack/cache')(options), + module: require('./webpack/module')(options), + plugins: require('./webpack/plugins')(options), } } -const babelNullstackTypescript = { - test: /\.(nts|tsx)$/, - resolve: { - extensions: ['.njs', '.js', '.nts', '.ts', '.jsx', '.tsx'], - }, - use: { - loader: require.resolve('babel-loader'), - options: { - presets: [['@babel/preset-env', { targets: { node: '10' } }], '@babel/preset-react'], - plugins: [ - [ - '@babel/plugin-transform-typescript', - { - isTSX: true, - allExtensions: true, - tsxPragma: '$transpiler.element', - tsxPragmaFrag: '$transpiler.fragment', - }, - ], - [ - '@babel/plugin-transform-react-jsx', - { - pragma: '$transpiler.element', - pragmaFrag: '$transpiler.fragment', - throwIfNamespace: false, - }, - ], - ], - }, - }, +function server(_env, argv) { + return config('server', argv) } -function server(env, argv) { - const entryExtension = existsSync(path.posix.join(process.cwd(), 'server.ts')) ? 'ts' : 'js' - const icons = {} - const publicFiles = readdirSync(path.posix.join(process.cwd(), 'public')) - const babel = argv.loader === 'babel' - const iconFileRegex = /icon-(\d+)x\1\.[a-zA-Z]+/ - for (const file of publicFiles) { - if (iconFileRegex.test(file)) { - const size = file.split('x')[1].split('.')[0] - icons[size] = `/${file}` - } - } - const isDev = argv.environment === 'development' - const folder = isDev ? '.development' : '.production' - const devtool = isDev ? 'inline-cheap-module-source-map' : 'source-map' - const minimize = !isDev - const plugins = [] - if (isDev) { - plugins.push(new webpack.HotModuleReplacementPlugin()) - plugins.push( - new NodemonPlugin({ - ext: '*', - watch: ['.env', '.env.*', './server.js'], - script: './.development/server.js', - nodeArgs: ['--enable-source-maps'], - quiet: true, - }), - ) - } - return { - mode: argv.environment, - infrastructureLogging: { level: 'error' }, - entry: isDev - ? ['webpack/hot/poll?1000', path.posix.join(__dirname, 'shared', 'accept.js'), `./server.${entryExtension}`] - : `./server.${entryExtension}`, - output: { - path: path.posix.join(process.cwd(), folder), - filename: 'server.js', - chunkFilename: '[chunkhash].server.js', - libraryTarget: 'umd', - hotUpdateChunkFilename: 'nullstack-server-update-[id]-[fullhash].js', - hotUpdateMainFilename: 'nullstack-server-update-[runtime]-[fullhash].json', - pathinfo: false, - clean: { - keep(asset) { - return !isDev || !asset.includes('server') - }, - }, - }, - resolve: { - extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], - }, - optimization: { - minimize, - minimizer: [ - new TerserPlugin({ - minify: terserMinimizer, - // workaround: disable parallel to allow caching server - parallel: argv.cache ? false : require('os').cpus().length - 1, - }), - ], - }, - devtool, - stats: 'none', - module: { - rules: [ - { - test: /server\.(js|ts)$/, - exclude: /node_modules/, - loader: getLoader('inject-hmr.js'), - }, - { - test: /environment.js$/, - loader: getLoader('string-replace.js'), - options: { - multiple: [ - { - search: /{{NULLSTACK_ENVIRONMENT_KEY}}/gi, - replace: buildKey, - }, - ], - }, - }, - { - test: /project.js$/, - loader: getLoader('string-replace.js'), - options: { - multiple: [ - { - search: /{{NULLSTACK_PROJECT_ICONS}}/gi, - replace: JSON.stringify(icons), - }, - ], - }, - }, - babel ? babelJs : swcJs({ environment: argv.environment, target: 'node' }), - babel ? babelTs : swcTs({ environment: argv.environment, target: 'node' }), - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('register-static-from-server.js'), - // }, - // { - // test: /\.s?[ac]ss$/, - // use: [{ loader: getLoader('ignore-import.js') }], - // }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('register-inner-components.js'), - // }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('inject-nullstack.js'), - // }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('add-source-to-node.js'), - // }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('transform-node-ref.js'), - // }, - { - issuer: /worker.js/, - resourceQuery: /raw/, - type: 'asset/source', - }, - babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'node' }), - babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'node' }), - { - test: /nullstack.js$/, - loader: getLoader('string-replace.js'), - options: { - multiple: [ - { - search: /{{NULLSTACK_ENVIRONMENT_NAME}}/gi, - replace: 'server', - }, - ], - }, - }, - { - test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, - loader: getLoader('shut-up-loader.js'), - }, - ], - }, - target: 'node', - node: { - __dirname: false, - __filename: false, - }, - plugins, - externals: { 'webpack/hot/poll': 'webpack/hot/poll?1000' }, - cache: cacheFactory(argv, folder, 'server'), - } -} - -function client(env, argv) { - const disk = !!argv.disk - const entryExtension = existsSync(path.posix.join(process.cwd(), 'client.ts')) ? 'ts' : 'js' - const isDev = argv.environment === 'development' - const folder = isDev ? '.development' : '.production' - const devtool = isDev ? 'inline-cheap-module-source-map' : 'source-map' - const minimize = !isDev - const babel = argv.loader === 'babel' - const plugins = [] - plugins.push( - new MiniCssExtractPlugin({ - filename: 'client.css', - chunkFilename: '[chunkhash].client.css', - }), - ) - if (isDev) { - plugins.push(new webpack.HotModuleReplacementPlugin()) - } - if (disk) { - plugins.push( - new CopyPlugin({ - patterns: [{ from: 'public', to: '../.development' }], - }), - ) - } - return { - mode: argv.environment, - infrastructureLogging: { level: 'error' }, - entry: isDev - ? [ - 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', - path.posix.join(__dirname, 'shared', 'accept.js'), - `./client.${entryExtension}`, - ] - : `./client.${entryExtension}`, - output: { - publicPath: `/`, - path: path.posix.join(process.cwd(), folder), - filename: 'client.js', - chunkFilename: '[chunkhash].client.js', - hotUpdateChunkFilename: 'nullstack-client-update-[id]-[fullhash].js', - hotUpdateMainFilename: 'nullstack-client-update-[runtime]-[fullhash].json', - pathinfo: false, - clean: { - keep(asset) { - return !isDev || !asset.includes('server') - }, - }, - }, - resolve: { - extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], - }, - optimization: { - minimize, - minimizer: [ - new TerserPlugin({ - minify: terserMinimizer, - }), - ], - }, - devtool, - stats: 'none', - module: { - rules: [ - { - test: /client\.(js|ts)$/, - exclude: /node_modules/, - loader: getLoader('inject-hmr.js'), - }, - babel ? babelJs : swcJs({ environment: argv.environment, target: 'web' }), - babel ? babelTs : swcTs({ environment: argv.environment, target: 'web' }), - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('remove-import-from-client.js'), - // }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('remove-static-from-client.js'), - // }, - { - test: /\.s?[ac]ss$/, - use: [MiniCssExtractPlugin.loader, { loader: require.resolve('css-loader'), options: { url: false } }], - }, - { - test: /\.s[ac]ss$/, - use: [{ loader: require.resolve('sass-loader'), options: { sassOptions: { fibers: false } } }], - }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('register-inner-components.js'), - // }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('inject-nullstack.js'), - // }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('add-source-to-node.js'), - // }, - // { - // test: /\.(njs|nts|jsx|tsx)$/, - // loader: getLoader('transform-node-ref.js'), - // }, - babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'web' }), - babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'web' }), - { - test: /nullstack.js$/, - loader: getLoader('string-replace.js'), - options: { - multiple: [ - { - search: /{{NULLSTACK_ENVIRONMENT_NAME}}/gi, - replace: 'client', - }, - ], - }, - }, - { - test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, - loader: getLoader('shut-up-loader.js'), - }, - ], - }, - target: 'web', - externals: { - 'webpack-hot-middleware/client': - 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', - }, - node: { - __dirname: false, - __filename: false, - }, - plugins, - cache: cacheFactory(argv, folder, 'client'), - } +function client(_env, argv) { + return config('client', argv) } -module.exports = [server, client] +module.exports = [server, client] \ No newline at end of file diff --git a/webpack.config.old.js b/webpack.config.old.js new file mode 100644 index 00000000..22620e2a --- /dev/null +++ b/webpack.config.old.js @@ -0,0 +1,558 @@ +const CopyPlugin = require('copy-webpack-plugin') +const crypto = require('crypto') +const { existsSync, readdirSync } = require('fs') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const NodemonPlugin = require('nodemon-webpack-plugin') +const path = require('path') + +const webpack = require(`webpack`) + +const { version } = require('./package.json') + +const buildKey = crypto.randomBytes(20).toString('hex') + +function getLoader(loader) { + const loaders = path.resolve(__dirname, 'loaders') + return path.posix.join(loaders, loader) +} + +function cacheFactory(args, folder, name) { + if (args.cache || args.environment === 'development') { + return { + type: 'filesystem', + cacheDirectory: path.posix.join(process.cwd(), folder, '.cache'), + name, + version, + } + } + return false +} + +function terserMinimizer(file, _sourceMap) { + return require('@swc/core').minify(file, { + mangle: false, + compress: { + unused: false, + }, + keepClassnames: true, + keepFnames: true, + sourceMap: true, + }) +} + +function getTargets({ environment, target }) { + if (target === 'node') { + return { node: process.versions.node } + } + return environment === 'development' ? 'last 1 version' : 'defaults' +} + +function swcJs({ environment, target }) { + const targets = getTargets({ environment, target }) + return { + test: /\.js$/, + use: { + loader: require.resolve('swc-loader'), + options: { + jsc: { + parser: { + syntax: 'ecmascript', + exportDefaultFrom: true, + }, + }, + env: { + targets, + }, + }, + }, + } +} + +const babelJs = { + test: /\.js$/, + resolve: { + extensions: ['.njs', '.js', '.nts', '.ts', '.jsx', '.tsx'], + }, + use: { + loader: require.resolve('babel-loader'), + options: { + presets: [['@babel/preset-env', { targets: { node: '10' } }]], + plugins: ['@babel/plugin-proposal-export-default-from', '@babel/plugin-proposal-class-properties'], + }, + }, +} + +function swcTs({ environment, target }) { + const targets = getTargets({ environment, target }) + return { + test: /\.ts$/, + use: { + loader: require.resolve('swc-loader'), + options: { + jsc: { + parser: { + syntax: 'typescript', + exportDefaultFrom: true, + }, + }, + env: { + targets, + }, + }, + }, + } +} + +const babelTs = { + test: /\.ts$/, + resolve: { + extensions: ['.njs', '.js', '.nts', '.ts', '.jsx', '.tsx'], + }, + use: { + loader: require.resolve('babel-loader'), + options: { + presets: [['@babel/preset-env', { targets: { node: '10' } }], '@babel/preset-react'], + plugins: ['@babel/plugin-transform-typescript'], + }, + }, +} + +function swcNullstackJavascript({ environment, target }) { + const targets = getTargets({ environment, target }) + const config = { + development: environment === 'development', + client: target === 'web', + } + const cacheRoot = path.posix.join(process.cwd(), `.${environment}`, '.cache', '.swc'); + return { + test: /\.(njs|jsx)$/, + use: { + loader: require.resolve('swc-loader'), + options: { + minify: false, + jsc: { + experimental: { + cacheRoot, + plugins: [['C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', config]], + }, + parser: { + syntax: 'ecmascript', + exportDefaultFrom: true, + jsx: true, + }, + transform: { + react: { + pragma: '$transpiler.element', + pragmaFrag: '$transpiler.fragment', + throwIfNamespace: true, + }, + }, + keepClassNames: true, + }, + env: { + name: 'test', + targets, + }, + }, + }, + } +} + +const babelNullstackJavascript = { + test: /\.(njs|jsx)$/, + resolve: { + extensions: ['.njs', '.js', '.nts', '.ts', '.jsx', '.tsx'], + }, + use: { + loader: require.resolve('babel-loader'), + options: { + presets: [['@babel/preset-env', { targets: { node: '10' } }], '@babel/preset-react'], + plugins: [ + '@babel/plugin-proposal-export-default-from', + '@babel/plugin-proposal-class-properties', + [ + '@babel/plugin-transform-react-jsx', + { + pragma: '$transpiler.element', + pragmaFrag: '$transpiler.fragment', + throwIfNamespace: false, + }, + ], + ], + }, + }, +} + +function swcNullstackTypescript({ environment, target }) { + const targets = getTargets({ environment, target }) + const config = { + development: environment === 'development', + client: target === 'web', + } + const cacheRoot = path.posix.join(process.cwd(), `.${environment}`, '.cache', '.swc'); + return { + test: /\.(nts|tsx)$/, + use: { + loader: require.resolve('swc-loader'), + options: { + jsc: { + experimental: { + cacheRoot, + plugins: [['C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', config]], + }, + parser: { + syntax: 'typescript', + exportDefaultFrom: true, + tsx: true, + }, + transform: { + react: { + pragma: '$transpiler.element', + pragmaFrag: '$transpiler.fragment', + throwIfNamespace: true, + }, + }, + }, + env: { + targets, + }, + }, + }, + } +} + +const babelNullstackTypescript = { + test: /\.(nts|tsx)$/, + resolve: { + extensions: ['.njs', '.js', '.nts', '.ts', '.jsx', '.tsx'], + }, + use: { + loader: require.resolve('babel-loader'), + options: { + presets: [['@babel/preset-env', { targets: { node: '10' } }], '@babel/preset-react'], + plugins: [ + [ + '@babel/plugin-transform-typescript', + { + isTSX: true, + allExtensions: true, + tsxPragma: '$transpiler.element', + tsxPragmaFrag: '$transpiler.fragment', + }, + ], + [ + '@babel/plugin-transform-react-jsx', + { + pragma: '$transpiler.element', + pragmaFrag: '$transpiler.fragment', + throwIfNamespace: false, + }, + ], + ], + }, + }, +} + +function server(env, argv) { + const entryExtension = existsSync(path.posix.join(process.cwd(), 'server.ts')) ? 'ts' : 'js' + const icons = {} + const publicFiles = readdirSync(path.posix.join(process.cwd(), 'public')) + const babel = argv.loader === 'babel' + const iconFileRegex = /icon-(\d+)x\1\.[a-zA-Z]+/ + for (const file of publicFiles) { + if (iconFileRegex.test(file)) { + const size = file.split('x')[1].split('.')[0] + icons[size] = `/${file}` + } + } + const isDev = argv.environment === 'development' + const folder = isDev ? '.development' : '.production' + const devtool = isDev ? 'inline-cheap-module-source-map' : 'source-map' + const minimize = !isDev + const plugins = [] + if (isDev) { + plugins.push(new webpack.HotModuleReplacementPlugin()) + plugins.push( + new NodemonPlugin({ + ext: '*', + watch: ['.env', '.env.*', './server.js'], + script: './.development/server.js', + nodeArgs: ['--enable-source-maps'], + quiet: true, + }), + ) + } + console.log("PATH", path.join(__dirname, 'server', 'index.js')); + return { + mode: argv.environment, + infrastructureLogging: { level: 'error' }, + entry: isDev + ? ['webpack/hot/poll?1000', path.posix.join(__dirname, 'shared', 'accept.js'), `./server.${entryExtension}`] + : `./server.${entryExtension}`, + output: { + path: path.posix.join(process.cwd(), folder), + filename: 'server.js', + chunkFilename: '[chunkhash].server.js', + libraryTarget: 'umd', + hotUpdateChunkFilename: 'nullstack-server-update-[id]-[fullhash].js', + hotUpdateMainFilename: 'nullstack-server-update-[runtime]-[fullhash].json', + pathinfo: false, + clean: { + keep(asset) { + return !isDev || !asset.includes('server') + }, + }, + }, + resolve: { + extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], + alias: { + nullstack: path.join(__dirname, 'server', 'index.js'), + } + }, + optimization: { + minimize, + minimizer: [ + new TerserPlugin({ + minify: terserMinimizer, + // workaround: disable parallel to allow caching server + parallel: argv.cache ? false : require('os').cpus().length - 1, + }), + ], + }, + devtool, + stats: 'none', + module: { + rules: [ + { + test: /server\.(js|ts)$/, + exclude: /node_modules/, + loader: getLoader('inject-hmr.js'), + }, + { + test: /environment.js$/, + loader: getLoader('string-replace.js'), + options: { + multiple: [ + { + search: /{{NULLSTACK_ENVIRONMENT_KEY}}/gi, + replace: buildKey, + }, + ], + }, + }, + { + test: /project.js$/, + loader: getLoader('string-replace.js'), + options: { + multiple: [ + { + search: /{{NULLSTACK_PROJECT_ICONS}}/gi, + replace: JSON.stringify(icons), + }, + ], + }, + }, + babel ? babelJs : swcJs({ environment: argv.environment, target: 'node' }), + babel ? babelTs : swcTs({ environment: argv.environment, target: 'node' }), + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('register-static-from-server.js'), + // }, + // { + // test: /\.s?[ac]ss$/, + // use: [{ loader: getLoader('ignore-import.js') }], + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('register-inner-components.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('inject-nullstack.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('add-source-to-node.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('transform-node-ref.js'), + // }, + { + issuer: /worker.js/, + resourceQuery: /raw/, + type: 'asset/source', + }, + babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'node' }), + babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'node' }), + // { + // test: /nullstack.js$/, + // loader: getLoader('string-replace.js'), + // options: { + // multiple: [ + // { + // search: /{{NULLSTACK_ENVIRONMENT_NAME}}/gi, + // replace: 'server', + // }, + // ], + // }, + // }, + { + test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, + loader: getLoader('shut-up-loader.js'), + }, + ], + }, + target: 'node', + node: { + __dirname: false, + __filename: false, + }, + plugins, + externals: { 'webpack/hot/poll': 'webpack/hot/poll?1000' }, + cache: cacheFactory(argv, folder, 'server'), + } +} + +function client(env, argv) { + const disk = !!argv.disk + const entryExtension = existsSync(path.posix.join(process.cwd(), 'client.ts')) ? 'ts' : 'js' + const isDev = argv.environment === 'development' + const folder = isDev ? '.development' : '.production' + const devtool = isDev ? 'inline-cheap-module-source-map' : 'source-map' + const minimize = !isDev + const babel = argv.loader === 'babel' + const plugins = [] + plugins.push( + new MiniCssExtractPlugin({ + filename: 'client.css', + chunkFilename: '[chunkhash].client.css', + }), + ) + if (isDev) { + plugins.push(new webpack.HotModuleReplacementPlugin()) + } + if (disk) { + plugins.push( + new CopyPlugin({ + patterns: [{ from: 'public', to: '../.development' }], + }), + ) + } + return { + mode: argv.environment, + infrastructureLogging: { level: 'error' }, + entry: isDev + ? [ + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', + path.posix.join(__dirname, 'shared', 'accept.js'), + `./client.${entryExtension}`, + ] + : `./client.${entryExtension}`, + output: { + publicPath: `/`, + path: path.posix.join(process.cwd(), folder), + filename: 'client.js', + chunkFilename: '[chunkhash].client.js', + hotUpdateChunkFilename: 'nullstack-client-update-[id]-[fullhash].js', + hotUpdateMainFilename: 'nullstack-client-update-[runtime]-[fullhash].json', + pathinfo: false, + clean: { + keep(asset) { + return !isDev || !asset.includes('server') + }, + }, + }, + resolve: { + extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], + alias: { + nullstack: path.join(__dirname, 'client', 'index.js'), + } + }, + optimization: { + minimize, + minimizer: [ + new TerserPlugin({ + minify: terserMinimizer, + }), + ], + }, + devtool, + stats: 'none', + module: { + rules: [ + { + test: /client\.(js|ts)$/, + exclude: /node_modules/, + loader: getLoader('inject-hmr.js'), + }, + babel ? babelJs : swcJs({ environment: argv.environment, target: 'web' }), + babel ? babelTs : swcTs({ environment: argv.environment, target: 'web' }), + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('remove-import-from-client.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('remove-static-from-client.js'), + // }, + { + test: /\.s?[ac]ss$/, + use: [MiniCssExtractPlugin.loader, { loader: require.resolve('css-loader'), options: { url: false } }], + }, + { + test: /\.s[ac]ss$/, + use: [{ loader: require.resolve('sass-loader'), options: { sassOptions: { fibers: false } } }], + }, + {}, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('register-inner-components.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('inject-nullstack.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('add-source-to-node.js'), + // }, + // { + // test: /\.(njs|nts|jsx|tsx)$/, + // loader: getLoader('transform-node-ref.js'), + // }, + babel ? babelNullstackJavascript : swcNullstackJavascript({ environment: argv.environment, target: 'web' }), + babel ? babelNullstackTypescript : swcNullstackTypescript({ environment: argv.environment, target: 'web' }), + // { + // test: /nullstack.js$/, + // loader: getLoader('string-replace.js'), + // options: { + // multiple: [ + // { + // search: /{{NULLSTACK_ENVIRONMENT_NAME}}/gi, + // replace: 'client', + // }, + // ], + // }, + // }, + { + test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, + loader: getLoader('shut-up-loader.js'), + }, + ], + }, + target: 'web', + externals: { + 'webpack-hot-middleware/client': + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', + }, + node: { + __dirname: false, + __filename: false, + }, + plugins, + cache: cacheFactory(argv, folder, 'client'), + } +} + +module.exports = [server, client] diff --git a/webpack/cache.js b/webpack/cache.js new file mode 100644 index 00000000..67035602 --- /dev/null +++ b/webpack/cache.js @@ -0,0 +1,16 @@ +const path = require('path') +const { version } = require('../package.json') + +function cache(options) { + if (options.environment === 'production') { + return false + } + return { + type: 'filesystem', + cacheDirectory: path.posix.join(options.projectFolder, `.${options.environment}`, '.cache'), + name: options.target, + version, + } +} + +module.exports = cache \ No newline at end of file diff --git a/webpack/devtool.js b/webpack/devtool.js new file mode 100644 index 00000000..c9142c08 --- /dev/null +++ b/webpack/devtool.js @@ -0,0 +1,9 @@ +function devtool(options) { + if (options.environment === 'development') { + return 'inline-cheap-module-source-map' + } else { + return 'source-map' + } +} + +module.exports = devtool \ No newline at end of file diff --git a/webpack/entry.js b/webpack/entry.js new file mode 100644 index 00000000..e1894631 --- /dev/null +++ b/webpack/entry.js @@ -0,0 +1,33 @@ +const path = require('path') + +function client(options) { + if (options.environment === 'production') { + return options.entry + } + return [ + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', + path.posix.join(options.configFolder, 'shared', 'accept.js'), + options.entry + ] +} + +function server(options) { + if (options.environment === 'production') { + return options.entry + } + return [ + 'webpack/hot/poll?1000', + path.posix.join(options.configFolder, 'shared', 'accept.js'), + options.entry + ] +} + +function entry(options) { + if (options.target == 'client') { + return client(options) + } else { + return server(options) + } +} + +module.exports = entry \ No newline at end of file diff --git a/webpack/externals.js b/webpack/externals.js new file mode 100644 index 00000000..14c51c51 --- /dev/null +++ b/webpack/externals.js @@ -0,0 +1,28 @@ +function client(options) { + if (options.environment === 'production') { + return {} + } + return { + 'webpack-hot-middleware/client': + 'webpack-hot-middleware/client?log=false&path=/nullstack/hmr&noInfo=true&quiet=true&timeout=1000&reload=true', + } +} + +function server(options) { + if (options.environment === 'production') { + return {} + } + return { + 'webpack/hot/poll': 'webpack/hot/poll?1000' + } +} + +function externals(options) { + if (options.target == 'client') { + return client(options) + } else { + return server(options) + } +} + +module.exports = externals \ No newline at end of file diff --git a/webpack/infrastructureLogging.js b/webpack/infrastructureLogging.js new file mode 100644 index 00000000..002dc634 --- /dev/null +++ b/webpack/infrastructureLogging.js @@ -0,0 +1,7 @@ +function infrastructureLogging(_) { + return { + level: 'error' + } +} + +module.exports = infrastructureLogging \ No newline at end of file diff --git a/webpack/mode.js b/webpack/mode.js new file mode 100644 index 00000000..ec71f9df --- /dev/null +++ b/webpack/mode.js @@ -0,0 +1,5 @@ +function mode(options) { + return options.environment +} + +module.exports = mode \ No newline at end of file diff --git a/webpack/module.js b/webpack/module.js new file mode 100644 index 00000000..1b557384 --- /dev/null +++ b/webpack/module.js @@ -0,0 +1,191 @@ +const path = require('path') +const { readdirSync } = require('fs') + +function icons(options) { + const icons = {} + const publicFiles = readdirSync(path.posix.join(options.projectFolder, 'public')) + const iconFileRegex = /icon-(\d+)x\1\.[a-zA-Z]+/ + for (const file of publicFiles) { + if (iconFileRegex.test(file)) { + const size = file.split('x')[1].split('.')[0] + icons[size] = `/${file}` + } + } + return { ICONS: JSON.stringify(icons) } +} + +function environment(options) { + const crypto = require('crypto') + const key = crypto.randomBytes(20).toString('hex') + return { KEY: `"${key}"` } +} + +function scss(options) { + if (options.target !== 'client') return + + return { + test: /\.s[ac]ss$/, + use: [ + { + loader: require.resolve('sass-loader'), + options: { sassOptions: { fibers: false } } + } + ], + } +} + +function css(options) { + if (options.target !== 'client') return + + const { loader } = require('mini-css-extract-plugin') + return { + test: /\.s?[ac]ss$/, + use: [ + loader, + { + loader: require.resolve('css-loader'), + options: { url: false } + } + ], + } +} + +function swc(options, other) { + const config = { + test: other.test, + use: { + loader: require.resolve('swc-loader'), + options: { jsc: {}, env: {} } + } + } + + if (other.template) { + config.use.options.jsc.experimental = { + cacheRoot: path.posix.join(options.projectFolder, options.buildFolder, '.cache', '.swc'), + plugins: [ + [ + 'C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', + { + development: options.environment === 'development', + client: options.target === 'client', + } + ] + ] + } + } + + if (options.target === 'server') { + config.use.options.env.targets = { node: process.versions.node } + } else if (options.environment === 'development') { + config.use.options.env.targets = 'last 1 version' + } else { + config.use.options.env.targets = 'defaults' + } + + config.use.options.jsc.parser = { + syntax: other.syntax, + exportDefaultFrom: true, + } + + if (other.template) { + config.use.options.jsc.parser[other.template] = true + } + + if (other.template) { + config.use.options.jsc.keepClassNames = true; + } + + config.use.options.jsc.transform = { + react: { + pragma: '$runtime.element', + pragmaFrag: '$runtime.fragment', + runtime: 'classic', + throwIfNamespace: true, + }, + } + + if (options.target === 'server' && !other.template) { + config.use.options.jsc.transform.constModules = { + globals: { + "nullstack/environment": environment(options), + "nullstack/project": icons(options), + } + } + } + + return config +} + +function js(options) { + return swc(options, { + test: /\.js$/, + syntax: 'ecmascript', + }) +} + +function ts(options) { + return swc(options, { + test: /\.ts$/, + syntax: 'typescript', + }) +} + +function njs(options) { + return swc(options, { + test: /\.(njs|jsx)$/, + syntax: 'ecmascript', + template: 'jsx', + }) +} + +function nts(options) { + return swc(options, { + test: /\.(nts|tsx)$/, + syntax: 'typescript', + template: 'tsx', + }) +} + +function shutUp(options) { + return { + test: /node_modules[\\/](webpack[\\/]hot|webpack-hot-middleware|mini-css-extract-plugin)/, + loader: path.posix.join(options.configFolder, 'loaders', 'shut-up-loader.js'), + } +} + +function raw(options) { + return { + issuer: /worker.js/, + resourceQuery: /raw/, + type: 'asset/source', + } +} + +function runtime(options) { + return { + test: /\.(nts|tsx|njs|jsx)$/, + loader: path.posix.join(options.configFolder, 'loaders', 'inject-runtime.js'), + } +} + +function rules(options) { + return [ + css(options), + scss(options), + js(options), + ts(options), + njs(options), + nts(options), + shutUp(options), + raw(options), + runtime(options) + ].filter(Boolean) +} + +function iWishModuleWasntAReservedWord(options) { + return { + rules: rules(options) + } +} + +module.exports = iWishModuleWasntAReservedWord \ No newline at end of file diff --git a/webpack/node.js b/webpack/node.js new file mode 100644 index 00000000..013316cf --- /dev/null +++ b/webpack/node.js @@ -0,0 +1,8 @@ +function node(_) { + return { + __dirname: false, + __filename: false, + } +} + +module.exports = node \ No newline at end of file diff --git a/webpack/optimization.js b/webpack/optimization.js new file mode 100644 index 00000000..0b592ce2 --- /dev/null +++ b/webpack/optimization.js @@ -0,0 +1,27 @@ +const TerserPlugin = require('terser-webpack-plugin') +const swc = require('@swc/core') + +function terserMinimizer(file) { + return swc.minify(file, { + mangle: false, + compress: { + unused: false, + }, + keepClassnames: true, + keepFnames: true, + sourceMap: true, + }) +} + +function optimization(options) { + return { + minimize: options.environment === 'production', + minimizer: [ + new TerserPlugin({ + minify: terserMinimizer, + }), + ], + } +} + +module.exports = optimization \ No newline at end of file diff --git a/webpack/output.js b/webpack/output.js new file mode 100644 index 00000000..ddece211 --- /dev/null +++ b/webpack/output.js @@ -0,0 +1,20 @@ +const path = require('path') + +function output(options) { + return { + publicPath: `/`, + path: path.posix.join(options.projectFolder, options.buildFolder), + filename: `${options.target}.js`, + chunkFilename: `[chunkhash].${options.target}.js`, + hotUpdateChunkFilename: `nullstack-${options.target}-update-[id]-[fullhash].js`, + hotUpdateMainFilename: `nullstack-${options.target}-update-[runtime]-[fullhash].json`, + pathinfo: false, + clean: { + keep(asset) { + return options.environment === 'production' || !asset.includes(options.target) + }, + } + } +} + +module.exports = output \ No newline at end of file diff --git a/webpack/plugins.js b/webpack/plugins.js new file mode 100644 index 00000000..539741a9 --- /dev/null +++ b/webpack/plugins.js @@ -0,0 +1,52 @@ +function css(options) { + if (options.target !== 'client') return false + + const MiniCssExtractPlugin = require('mini-css-extract-plugin') + return new MiniCssExtractPlugin({ + filename: `${options.target}.css`, + chunkFilename: `[chunkhash].${options.target}.css`, + }) +} + +function hmr(options) { + if (options.environment !== 'development') return false + + const { HotModuleReplacementPlugin } = require('webpack') + return new HotModuleReplacementPlugin() +} + +function copy(options) { + if (!options.disk) return false + + const CopyPlugin = require('copy-webpack-plugin') + return new CopyPlugin({ + patterns: [ + { from: 'public', to: `../${options.buildFolder}` } + ], + }) +} + +function nodemon(options) { + if (options.environment !== 'development') return false + if (options.target !== 'server') return false + + const NodemonPlugin = require('nodemon-webpack-plugin') + return new NodemonPlugin({ + ext: '*', + watch: ['.env', '.env.*', './server.js'], + script: './.development/server.js', + nodeArgs: ['--enable-source-maps'], + quiet: true, + }) +} + +function plugins(options) { + return [ + css(options), + hmr(options), + copy(options), + nodemon(options) + ].filter(Boolean) +} + +module.exports = plugins \ No newline at end of file diff --git a/webpack/resolve.js b/webpack/resolve.js new file mode 100644 index 00000000..a65e6f10 --- /dev/null +++ b/webpack/resolve.js @@ -0,0 +1,12 @@ +const path = require('path') + +function resolve(options) { + return { + extensions: ['.njs', '.js', '.nts', '.ts', '.tsx', '.jsx'], + alias: { + nullstack: path.join(options.configFolder, options.target), + } + } +} + +module.exports = resolve \ No newline at end of file diff --git a/webpack/stats.js b/webpack/stats.js new file mode 100644 index 00000000..1189d8a6 --- /dev/null +++ b/webpack/stats.js @@ -0,0 +1,5 @@ +function stats(_) { + return 'none' +} + +module.exports = stats \ No newline at end of file diff --git a/webpack/target.js b/webpack/target.js new file mode 100644 index 00000000..cff58f9e --- /dev/null +++ b/webpack/target.js @@ -0,0 +1,5 @@ +function target(options) { + return options.target == 'client' ? 'web' : 'node' +} + +module.exports = target \ No newline at end of file From c29362a25dc34c463f0b57ceba5471b49ee0f8d8 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Mon, 27 Feb 2023 10:01:26 -0300 Subject: [PATCH 11/59] :construction: accept visitor --- client/index.js | 40 ++++++++++--------------- client/runtime.js | 32 ++++++++++++++++++-- server/index.js | 10 +++---- server/registry.js | 38 ----------------------- server/runtime.js | 63 +++++++++++++++++++++++++++++++++++---- server/server.js | 47 +++++++++++++++-------------- tests/src/Application.njs | 2 +- webpack/module.js | 25 ++++++++-------- 8 files changed, 146 insertions(+), 111 deletions(-) diff --git a/client/index.js b/client/index.js index f6074dd1..b2455bb3 100644 --- a/client/index.js +++ b/client/index.js @@ -1,5 +1,4 @@ import element from '../shared/element' -import fragment from '../shared/fragment' import generateTree from '../shared/generateTree' import { loadPlugins, useClientPlugins } from '../shared/plugins' import client from './client' @@ -7,7 +6,6 @@ import context, { generateContext } from './context' import environment from './environment' import hydrate from './hydrate' import instanceProxyHandler, { instanceProxies } from './instanceProxyHandler' -import invoke from './invoke' import page from './page' import params, { updateParams } from './params' import project from './project' @@ -39,12 +37,6 @@ if (environment.development) { globalThis.$nullstack = context } -// export { -// element, -// fragment, -// invoke, -// } - export default class Nullstack { static use = useClientPlugins @@ -112,19 +104,19 @@ export default class Nullstack { } -if (module.hot) { - Nullstack.updateInstancesPrototypes = function updateInstancesPrototypes(klass, hash) { - for (const key in context.instances) { - const instance = context.instances[key] - if (instance.constructor.hash === hash) { - Object.setPrototypeOf(instance, klass.prototype) - } - } - windowEvent('environment') - client.update() - } - Nullstack.hotReload = function hotReload() { - window.location.reload() - } - module.hot.decline() -} +// if (module.hot) { +// Nullstack.updateInstancesPrototypes = function updateInstancesPrototypes(klass, hash) { +// for (const key in context.instances) { +// const instance = context.instances[key] +// if (instance.constructor.hash === hash) { +// Object.setPrototypeOf(instance, klass.prototype) +// } +// } +// windowEvent('environment') +// client.update() +// } +// Nullstack.hotReload = function hotReload() { +// window.location.reload() +// } +// module.hot.decline() +// } diff --git a/client/runtime.js b/client/runtime.js index 49dac317..612a4ef5 100644 --- a/client/runtime.js +++ b/client/runtime.js @@ -1,9 +1,37 @@ import element from '../shared/element' import fragment from '../shared/fragment' import invoke from './invoke' +import context from './context' +import windowEvent from './windowEvent' +import client from './client' -export default { +const $runtime = { element, fragment, invoke, -} \ No newline at end of file +} + +if (module.hot) { + $runtime.accept = function accept(target, ...klasses) { + target.hot.accept(); + for (const klass of klasses) { + for (const key in context.instances) { + const instance = context.instances[key] + if (instance.constructor.hash === klass.hash) { + Object.setPrototypeOf(instance, klass.prototype) + } + } + } + windowEvent('environment') + client.update() + } + + $runtime.restart = function restart(target, path) { + target.hot.accept() + target.hot.accept(path, () => { + window.location.reload() + }) + } +} + +export default $runtime \ No newline at end of file diff --git a/server/index.js b/server/index.js index c7685c69..bc3949ca 100644 --- a/server/index.js +++ b/server/index.js @@ -80,8 +80,8 @@ class Nullstack { export default Nullstack -if (module.hot) { - Nullstack.hotReload = function hotReload(klass) { - Nullstack.start(klass) - } -} +// if (module.hot) { +// Nullstack.hotReload = function hotReload(klass) { +// Nullstack.start(klass) +// } +// } diff --git a/server/registry.js b/server/registry.js index fd14a655..d687b92a 100644 --- a/server/registry.js +++ b/server/registry.js @@ -1,6 +1,3 @@ -import reqres from "./reqres" -import { generateContext } from "./context" - const registry = {} export default registry @@ -9,40 +6,5 @@ export function register(klass, functionName) { registry[`${klass.hash}.${functionName}`] = klass[functionName] } else { registry[klass.hash] = klass - bindStaticFunctions(klass) - } -} - -function bindStaticFunctions(klass) { - let parent = klass - while (parent.name !== 'Nullstack') { - const props = Object.getOwnPropertyNames(parent) - for (const prop of props) { - const underscored = prop.startsWith('_') - if (typeof klass[prop] === 'function') { - if (!underscored && !registry[`${parent.hash}.${prop}`]) { - return - } - const propName = `__NULLSTACK_${prop}` - if (!klass[propName]) { - klass[propName] = klass[prop] - } - function _invoke(...args) { - if (underscored) { - return klass[propName].call(klass, ...args) - } - const params = args[0] || {} - const { request, response } = reqres - const subcontext = generateContext({ request, response, ...params }) - return klass[propName].call(klass, subcontext) - } - if (module.hot) { - _invoke.hash = klass[prop].hash - } - klass[prop] = _invoke - klass.prototype[prop] = _invoke - } - } - parent = Object.getPrototypeOf(parent) } } \ No newline at end of file diff --git a/server/runtime.js b/server/runtime.js index f4d6dd83..8be05e95 100644 --- a/server/runtime.js +++ b/server/runtime.js @@ -1,9 +1,60 @@ import element from '../shared/element' import fragment from '../shared/fragment' -import { register } from './registry' +import registry, { register } from './registry' +import reqres from "./reqres" +import { generateContext } from "./context" +import Nullstack from './index' -export default { - element, - fragment, - register -} \ No newline at end of file +const $runtime = { + element, + fragment, + register +} + +if (module.hot) { + $runtime.accept = function accept(target, ...klasses) { + target.hot.accept(); + for (const klass in klasses) { + let parent = klass + while (parent.name !== 'Nullstack') { + const props = Object.getOwnPropertyNames(parent) + for (const prop of props) { + const underscored = prop.startsWith('_') + if (typeof klass[prop] === 'function') { + if (!underscored && !registry[`${parent.hash}.${prop}`]) { + return + } + const propName = `__NULLSTACK_${prop}` + if (!klass[propName]) { + klass[propName] = klass[prop] + } + function _invoke(...args) { + if (underscored) { + return klass[propName].call(klass, ...args) + } + const params = args[0] || {} + const { request, response } = reqres + const subcontext = generateContext({ request, response, ...params }) + return klass[propName].call(klass, subcontext) + } + if (module.hot) { + _invoke.hash = klass[prop].hash + } + klass[prop] = _invoke + klass.prototype[prop] = _invoke + } + } + parent = Object.getPrototypeOf(parent) + } + } + } + + $runtime.restart = function restart(target, path) { + target.hot.accept() + target.hot.accept(path, () => { + Nullstack.start(klass) + }) + } +} + +export default $runtime \ No newline at end of file diff --git a/server/server.js b/server/server.js index f80b2447..b4baffff 100644 --- a/server/server.js +++ b/server/server.js @@ -153,9 +153,9 @@ function createResponse(callback) { res.end = res.send = res.write = - function (data = '') { - if (callback) callback(code, data, headers) - } + function (data = '') { + if (callback) callback(code, data, headers) + } return res } @@ -165,7 +165,7 @@ server.prerender = async function (originalUrl) { server._router.handle( createRequest(originalUrl), createResponse((code, data) => resolve(data)), - () => {}, + () => { }, ) }) } @@ -185,47 +185,50 @@ server.start = function () { response.send(generateFile(`${request.params.number}.client.js`, server)) }) - server.get(`/:number.client.js.map`, (request, response) => { - response.setHeader('Cache-Control', 'max-age=31536000, immutable') - response.contentType('application/json') - response.send(generateFile(`${request.params.number}.client.js.map`, server)) - }) - server.get(`/:number.client.css`, (request, response) => { response.setHeader('Cache-Control', 'max-age=31536000, immutable') response.contentType('text/css') response.send(generateFile(`${request.params.number}.client.css`, server)) }) - server.get(`/:number.client.css.map`, (request, response) => { - response.setHeader('Cache-Control', 'max-age=31536000, immutable') - response.contentType('application/json') - response.send(generateFile(`${request.params.number}.client.css.map`, server)) - }) - server.get(`/client.css`, (request, response) => { response.setHeader('Cache-Control', 'max-age=31536000, immutable') response.contentType('text/css') response.send(generateFile('client.css', server)) }) - server.get(`/client.css.map`, (request, response) => { - response.setHeader('Cache-Control', 'max-age=31536000, immutable') - response.contentType('application/json') - response.send(generateFile('client.css.map', server)) - }) - server.get(`/client.js`, (request, response) => { response.setHeader('Cache-Control', 'max-age=31536000, immutable') response.contentType('text/javascript') response.send(generateFile('client.js', server)) }) + } + + if (environment.development) { server.get(`/client.js.map`, (request, response) => { response.setHeader('Cache-Control', 'max-age=31536000, immutable') response.contentType('application/json') response.send(generateFile('client.js.map', server)) }) + + server.get(`/:number.client.js.map`, (request, response) => { + response.setHeader('Cache-Control', 'max-age=31536000, immutable') + response.contentType('application/json') + response.send(generateFile(`${request.params.number}.client.js.map`, server)) + }) + + server.get(`/client.css.map`, (request, response) => { + response.setHeader('Cache-Control', 'max-age=31536000, immutable') + response.contentType('application/json') + response.send(generateFile('client.css.map', server)) + }) + + server.get(`/:number.client.css.map`, (request, response) => { + response.setHeader('Cache-Control', 'max-age=31536000, immutable') + response.contentType('application/json') + response.send(generateFile(`${request.params.number}.client.css.map`, server)) + }) } server.get(`/manifest.webmanifest`, (request, response) => { diff --git a/tests/src/Application.njs b/tests/src/Application.njs index e4f9339d..6c1a17e0 100644 --- a/tests/src/Application.njs +++ b/tests/src/Application.njs @@ -76,7 +76,7 @@ class Application extends Nullstack {

{project.name}

{page.status !== 200 &&
}
- offline!11123123!!! + offline static this router with params undefined nodes diff --git a/webpack/module.js b/webpack/module.js index 1b557384..8015373b 100644 --- a/webpack/module.js +++ b/webpack/module.js @@ -14,7 +14,7 @@ function icons(options) { return { ICONS: JSON.stringify(icons) } } -function environment(options) { +function environment(_options) { const crypto = require('crypto') const key = crypto.randomBytes(20).toString('hex') return { KEY: `"${key}"` } @@ -59,19 +59,18 @@ function swc(options, other) { } } - if (other.template) { - config.use.options.jsc.experimental = { - cacheRoot: path.posix.join(options.projectFolder, options.buildFolder, '.cache', '.swc'), - plugins: [ - [ - 'C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', - { - development: options.environment === 'development', - client: options.target === 'client', - } - ] + config.use.options.jsc.experimental = { + cacheRoot: path.posix.join(options.projectFolder, options.buildFolder, '.cache', '.swc'), + plugins: [ + [ + 'C:/Repositories/experiments/nullstack/target/wasm32-wasi/release/nullstack.wasm', + { + development: options.environment === 'development', + client: options.target === 'client', + template: !!other.template + } ] - } + ] } if (options.target === 'server') { From 6e815a192bb7a195b01b2a5cc201297461edf5f3 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Wed, 1 Mar 2023 17:58:15 -0300 Subject: [PATCH 12/59] :construction: minify improvements --- package.json | 3 +++ scripts/index.js | 2 +- server/registry.js | 37 ++++++++++++++++++++++++++++++ server/runtime.js | 38 ++----------------------------- tests/package.json | 8 +++++-- tests/src/Element.njs | 2 +- tests/src/Element.test.js | 2 +- tests/src/LazyComponent.njs | 3 +-- tests/src/LazyComponentLoader.njs | 9 +++++--- tests/src/RenderableComponent.njs | 4 ++-- tests/webpack.config.js | 1 + webpack/devtool.js | 2 +- webpack/module.js | 2 +- webpack/optimization.js | 3 +-- webpack/output.js | 1 + 15 files changed, 65 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index d961941f..153e173e 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,8 @@ "webpack-dev-server": "4.11.1", "webpack-hot-middleware": "^2.25.3", "ws": "8.12.0" + }, + "resolutions": { + "terser": "npm:@swc/core" } } \ No newline at end of file diff --git a/scripts/index.js b/scripts/index.js index b78fa76e..52bb68ed 100755 --- a/scripts/index.js +++ b/scripts/index.js @@ -58,7 +58,7 @@ async function start({ port, env, disk, loader = 'swc' }) { function build({ output, cache, env, mode = 'ssr' }) { const environment = 'production' - const compiler = getCompiler({ environment, cache }) + const compiler = getCompiler({ environment, cache, loader: 'swc' }) if (env) { process.env.NULLSTACK_ENVIRONMENT_NAME = env } diff --git a/server/registry.js b/server/registry.js index d687b92a..ac72c163 100644 --- a/server/registry.js +++ b/server/registry.js @@ -1,10 +1,47 @@ const registry = {} export default registry +import reqres from "./reqres" +import { generateContext } from "./context" export function register(klass, functionName) { if (functionName) { registry[`${klass.hash}.${functionName}`] = klass[functionName] } else { registry[klass.hash] = klass + bindStaticProps(klass) + } +} + +function bindStaticProps(klass) { + let parent = klass + while (parent.name !== 'Nullstack') { + const props = Object.getOwnPropertyNames(parent) + for (const prop of props) { + const underscored = prop.startsWith('_') + if (typeof klass[prop] === 'function') { + if (!underscored && !registry[`${parent.hash}.${prop}`]) { + return + } + const propName = `__NULLSTACK_${prop}` + if (!klass[propName]) { + klass[propName] = klass[prop] + } + function _invoke(...args) { + if (underscored) { + return klass[propName].call(klass, ...args) + } + const params = args[0] || {} + const { request, response } = reqres + const subcontext = generateContext({ request, response, ...params }) + return klass[propName].call(klass, subcontext) + } + if (module.hot) { + _invoke.hash = klass[prop].hash + } + klass[prop] = _invoke + klass.prototype[prop] = _invoke + } + } + parent = Object.getPrototypeOf(parent) } } \ No newline at end of file diff --git a/server/runtime.js b/server/runtime.js index 8be05e95..06f1fbfa 100644 --- a/server/runtime.js +++ b/server/runtime.js @@ -1,8 +1,7 @@ import element from '../shared/element' import fragment from '../shared/fragment' -import registry, { register } from './registry' -import reqres from "./reqres" -import { generateContext } from "./context" +import { register } from './registry' + import Nullstack from './index' const $runtime = { @@ -14,39 +13,6 @@ const $runtime = { if (module.hot) { $runtime.accept = function accept(target, ...klasses) { target.hot.accept(); - for (const klass in klasses) { - let parent = klass - while (parent.name !== 'Nullstack') { - const props = Object.getOwnPropertyNames(parent) - for (const prop of props) { - const underscored = prop.startsWith('_') - if (typeof klass[prop] === 'function') { - if (!underscored && !registry[`${parent.hash}.${prop}`]) { - return - } - const propName = `__NULLSTACK_${prop}` - if (!klass[propName]) { - klass[propName] = klass[prop] - } - function _invoke(...args) { - if (underscored) { - return klass[propName].call(klass, ...args) - } - const params = args[0] || {} - const { request, response } = reqres - const subcontext = generateContext({ request, response, ...params }) - return klass[propName].call(klass, subcontext) - } - if (module.hot) { - _invoke.hash = klass[prop].hash - } - klass[prop] = _invoke - klass.prototype[prop] = _invoke - } - } - parent = Object.getPrototypeOf(parent) - } - } } $runtime.restart = function restart(target, path) { diff --git a/tests/package.json b/tests/package.json index b459154a..fc8a8093 100644 --- a/tests/package.json +++ b/tests/package.json @@ -5,9 +5,9 @@ "author": "", "license": "ISC", "devDependencies": { + "@swc/core": "1.3.35", "cors": "2.8.5", "eslint-plugin-jest": "^27.1.6", - "eslint-plugin-nullstack": "0.0.12", "glob": "^8.0.3", "jest": "29.4.1", "jest-puppeteer": "7.0.0", @@ -16,7 +16,11 @@ }, "types": "../../types/index.d.ts", "overrides": { - "webpack": "5.75.0" + "webpack": "5.75.0", + "terser": "npm:@swc/core" + }, + "resolutions": { + "terser": "npm:@swc/core" }, "scripts": { "start": "node ../scripts/index.js start --port=6969 --env=test --disk", diff --git a/tests/src/Element.njs b/tests/src/Element.njs index 15d72b74..f9497d30 100644 --- a/tests/src/Element.njs +++ b/tests/src/Element.njs @@ -29,7 +29,7 @@ class Element extends Nullstack { abbr - + diff --git a/tests/src/Element.test.js b/tests/src/Element.test.js index 83379ef3..401a79c4 100644 --- a/tests/src/Element.test.js +++ b/tests/src/Element.test.js @@ -2,7 +2,7 @@ beforeAll(async () => { await page.goto('http://localhost:6969/element') }) -describe('FullStackLifecycle', () => { +describe('Element', () => { test('elements can receive any tag b', async () => { const element = await page.$('b[data-tag="b"]') expect(element).toBeTruthy() diff --git a/tests/src/LazyComponent.njs b/tests/src/LazyComponent.njs index 7ffb1a06..86d7c556 100644 --- a/tests/src/LazyComponent.njs +++ b/tests/src/LazyComponent.njs @@ -14,8 +14,7 @@ class LazyComponent extends Nullstack { render() { return (
- {' '} - LazyComponent{' '} + LazyComponent
) } diff --git a/tests/src/LazyComponentLoader.njs b/tests/src/LazyComponentLoader.njs index 7ad55b99..88e439f6 100644 --- a/tests/src/LazyComponentLoader.njs +++ b/tests/src/LazyComponentLoader.njs @@ -11,12 +11,15 @@ class LazyComponentLoader extends Nullstack { } async hydrate() { - LazyComponent = (await import('./LazyComponent')).default + this.LazyComponent = (await import('./LazyComponent')).default + console.log(LazyComponent) + this.should = true } render() { - if (!this.hydrated) return false - return + console.log("RENDER", this.LazyComponent) + if (!this.LazyComponent) return false + return } } diff --git a/tests/src/RenderableComponent.njs b/tests/src/RenderableComponent.njs index d469e803..f9e0ba95 100644 --- a/tests/src/RenderableComponent.njs +++ b/tests/src/RenderableComponent.njs @@ -32,7 +32,7 @@ class RenderableComponent extends Nullstack {
-
+
this is a normal tag
@@ -42,7 +42,7 @@ class RenderableComponent extends Nullstack { element tag - + children