From 9de8cc04b38c1d863aad83859aa61ee272a8c523 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Fri, 19 May 2023 17:35:44 +0530 Subject: [PATCH 01/32] template files - old project --- .env.example | 4 + index.js | 44 ++ package-lock.json | 985 +++++++++++++++++++++++++++++++++ package.json | 34 ++ src/controllers/preferences.js | 37 ++ src/helpers/mongoose.js | 17 + src/middlewares/auth.js | 29 + src/models/index.js | 2 + src/models/news.js | 33 ++ src/models/user.js | 59 ++ src/routes/auth.js | 20 + src/routes/index.js | 12 + src/routes/news.js | 54 ++ src/routes/preferences.js | 19 + src/services/news.js | 75 +++ src/services/user.js | 33 ++ 16 files changed, 1457 insertions(+) create mode 100644 .env.example create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/controllers/preferences.js create mode 100644 src/helpers/mongoose.js create mode 100644 src/middlewares/auth.js create mode 100644 src/models/index.js create mode 100644 src/models/news.js create mode 100644 src/models/user.js create mode 100644 src/routes/auth.js create mode 100644 src/routes/index.js create mode 100644 src/routes/news.js create mode 100644 src/routes/preferences.js create mode 100644 src/services/news.js create mode 100644 src/services/user.js diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..57ac135 --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +MONGODB_URI=mongodb+srv://iamashutoshpanda:1k8KAsaD4aD770b8@cluster0.z2wwu5l.mongodb.net/?retryWrites=true&w=majority +MONGODB_TEST_URI=mongodb+srv://iamashutoshpanda:wibjFEaUQniVhhlf@cluster0.lrxmqdi.mongodb.net/?retryWrites=true&w=majority +API_SECRET=secret +NODE_ENV='UAT' \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..90de75c --- /dev/null +++ b/index.js @@ -0,0 +1,44 @@ +import express from "express"; +import logger from "morgan"; +import dotenv from "dotenv"; +import connectDB from "./src/helpers/mongoose.js"; +import routes from "./src/routes/index.js"; +import rateLimit from "express-rate-limit"; +import loggerMiddleware from "./src/middlewares/logger.js"; + +// Make all variables from our .env file available in our process +dotenv.config({ path: ".env.example" }); + +// Init express server +const app = express(); + +// Connect to MongoDB. +await connectDB(); + +//rate limit + +const limiter = rateLimit({ + windowMs: 10 * 1000, + max: 3, + message: "Too many requests from this IP, please try again later.", +}); +if (process.env.NODE_ENV !== "TEST") { + app.use(limiter); +} +app.use(loggerMiddleware()); +// Middlewares & configs setup +app.use(logger("dev")); +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); + +// Here we define the api routes +app.use(routes); + +const port = process.env.PORT || 8080; +const address = process.env.SERVER_ADDRESS || "localhost"; + +app.get("/", (req, res) => res.send("Hello World!")); + +app.listen(port, () => console.log(`Server running on http://${address}:${port}`)); + +export default app; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..77ebb36 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,985 @@ +{ + "name": "bookmyshow-api", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "bookmyshow-api", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "dotenv": "^16.0.3", + "express": "^4.18.2" + }, + "devDependencies": { + "nodemon": "^2.0.22", + "prettier": "^2.8.8" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/touch/node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2db968f --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "bookmyshow-api", + "version": "1.0.0", + "description": "bookmyshow-api", + "main": "index.js", + "scripts": { + "start": "node index.js", + "dev": "nodemon index.js", + "debug": "nodemon --inspect index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/aashutoshPanda/bookmyshow-api-nodejs-sql.git" + }, + "keywords": [], + "author": "Ashutosh Panda", + "license": "MIT", + "bugs": { + "url": "https://github.com/aashutoshPanda/bookmyshow-api-nodejs-sql/issues" + }, + "homepage": "https://github.com/aashutoshPanda/News-Aggregator-API#readme", + "dependencies": { + "dotenv": "^16.0.3", + "express": "^4.18.2" + }, + "devDependencies": { + "nodemon": "^2.0.22", + "prettier": "^2.8.8" + }, + "prettier": { + "printWidth": 120 + }, + "type": "module" +} \ No newline at end of file diff --git a/src/controllers/preferences.js b/src/controllers/preferences.js new file mode 100644 index 0000000..a609116 --- /dev/null +++ b/src/controllers/preferences.js @@ -0,0 +1,37 @@ +import User from "../models/user.js"; +/** + * @desc get preferences for a user + */ +export const getPreferences = async (req, res) => { + try { + const user = await User.findById(req.user.id); + res.send(user.preferences); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while getting preferences", + }); + } +}; + +/** + * @desc Update preferences for a user + */ +export const updatePreferences = async (req, res) => { + try { + const user = await User.findById(req.user.id); + user.preferences = req.body; + try { + await user.validate(); // check if the user document is valid + await user.save(); // save the user document to the database + res.send(user.preferences); + } catch (err) { + res.status(400).send(err); + } + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while updating preferences", + }); + } +}; diff --git a/src/helpers/mongoose.js b/src/helpers/mongoose.js new file mode 100644 index 0000000..062aefa --- /dev/null +++ b/src/helpers/mongoose.js @@ -0,0 +1,17 @@ +import mongoose from "mongoose"; + +const connectDB = async () => { + try { + // MongoDB setup. + const connectionURI = process.env.NODE_ENV === "TEST" ? process.env.MONGODB_TEST_URI : process.env.MONGODB_URI; + console.log("connected to ", connectionURI); + await mongoose.connect(connectionURI); + } catch ({ message }) { + console.error("Error with mongo setup", message); + console.log("%s MongoDB connection error. Please make sure MongoDB is running."); + // Exit process with failure + process.exit(1); + } +}; + +export default connectDB; diff --git a/src/middlewares/auth.js b/src/middlewares/auth.js new file mode 100644 index 0000000..fc2da28 --- /dev/null +++ b/src/middlewares/auth.js @@ -0,0 +1,29 @@ +/** + * Auth middleware + */ +import jwt from "jsonwebtoken"; +import User from "../models/user.js"; + +export const isAuthenticated = async (req, res, next) => { + try { + const token = req.header("Authorization").replace("Bearer ", ""); + jwt.verify(token, process.env.API_SECRET, async (err, authData) => { + if (err) { + console.log("Error from auth middleware", err); + res.sendStatus(403); + } else { + const user = await User.findById(authData.id); + if (!user) { + console.log("Error from auth middleware", err); + res.sendStatus(403); + } else { + req.user = user; + next(); + } + } + }); + } catch (err) { + console.log(err); + res.status(401).send({ error: "Please authenticate." }); + } +}; diff --git a/src/models/index.js b/src/models/index.js new file mode 100644 index 0000000..e17763f --- /dev/null +++ b/src/models/index.js @@ -0,0 +1,2 @@ +export { default as User } from "./user.js"; +export { default as News } from "./news.js"; diff --git a/src/models/news.js b/src/models/news.js new file mode 100644 index 0000000..6d442b3 --- /dev/null +++ b/src/models/news.js @@ -0,0 +1,33 @@ +import mongoose, { Schema } from "mongoose"; + +const newsSchema = new Schema({ + title: { + type: String, + required: [true, "News title is required"], + minlength: [2, "News title must be at least 2 characters"], + maxlength: [200, "News title can have at most 200 characters"], + trim: true, + }, + url: { + type: String, + required: [true, "News URL is required"], + match: [/^https?:\/\/.+/, "Invalid URL format"], + }, + publishedAt: { type: Date, default: Date.now }, + author: { + type: String, + required: [true, "News author is required"], + minlength: [2, "News author must be at least 2 characters"], + maxlength: [100, "News author can have at most 100 characters"], + trim: true, + }, + urlHash: { + type: String, + required: [true, "URL hash is required"], + length: [32, "the hash would be of 32 chars"], + trim: true, + }, +}); + +const News = mongoose.model("News", newsSchema); +export default News; diff --git a/src/models/user.js b/src/models/user.js new file mode 100644 index 0000000..b732b7b --- /dev/null +++ b/src/models/user.js @@ -0,0 +1,59 @@ +import mongoose, { Schema } from "mongoose"; + +const userSchema = new Schema({ + fullName: { + type: String, + required: [true, "Full name is required"], + minlength: [2, "Full name must be at least 2 characters"], + maxlength: [100, "Full name can have at most 100 characters"], + trim: true, + validate: { + validator: function (value) { + // Define your custom validation logic here + // Return true if value is valid, otherwise return false + const fullNameRegex = /^[A-Za-z]+([\s]?[A-Za-z]+)*$/; + return fullNameRegex.test(value); + }, + message: (props) => `${props.value} is not a valid full name!`, + }, + }, + email: { + type: String, + required: [true, "Email address is required"], + unique: true, + trim: true, + lowercase: true, + match: [/^\S+@\S+\.\S+$/, "Invalid email address"], + }, + password: { + type: String, + required: [true, "Password is required"], + minlength: [8, "Password must be at least 8 characters"], + maxlength: [100, "Password can have at most 100 characters"], + }, + role: { + type: String, + enum: ["USER", "ADMIN"], + default: "user", + }, + createdAt: { type: Date, default: Date.now }, + favourites: [{ type: mongoose.Schema.Types.ObjectId, ref: "News" }], + read: [{ type: mongoose.Schema.Types.ObjectId, ref: "News" }], + preferences: { + type: [ + { + type: String, + maxlength: 20, + }, + ], + validate: { + validator: function (v) { + return Array.isArray(v) && v.every((val) => typeof val === "string"); + }, + message: "Preferences should be an array of strings", + }, + }, +}); + +const User = mongoose.model("User", userSchema); +export default User; diff --git a/src/routes/auth.js b/src/routes/auth.js new file mode 100644 index 0000000..f140fb3 --- /dev/null +++ b/src/routes/auth.js @@ -0,0 +1,20 @@ +import express from "express"; +import { login, register } from "../controllers/auth.js"; + +const router = express.Router(); + +/** + * @route POST /auth/login + * @desc Login a user + * @access Public + */ +router.post("/login", login); + +/** + * @route POST /auth/register + * @desc Register a new user + * @access Public + */ +router.post("/register", register); + +export default router; diff --git a/src/routes/index.js b/src/routes/index.js new file mode 100644 index 0000000..9dabbd3 --- /dev/null +++ b/src/routes/index.js @@ -0,0 +1,12 @@ +import express from "express"; +import authRouter from "./auth.js"; +import preferencesRouter from "./preferences.js"; +import newsRouter from "./news.js"; +import { isAuthenticated } from "../middlewares/auth.js"; +const router = express.Router(); + +router.use("/auth", authRouter); +router.use("/preferences", isAuthenticated, preferencesRouter); +router.use("/news", isAuthenticated, newsRouter); + +export default router; diff --git a/src/routes/news.js b/src/routes/news.js new file mode 100644 index 0000000..8e4886b --- /dev/null +++ b/src/routes/news.js @@ -0,0 +1,54 @@ +import express from "express"; +import { + markNewsAsRead, + markNewsAsFavourite, + getReadNews, + getFavouriteNews, + getNewsByKeyword, + getNewsByUserPreferences, +} from "../controllers/news.js"; + +const router = express.Router(); +/** + * @route POST /news/:id/read + * @desc Mark a news article as READ for a user + * @access Private + */ +router.post("/:id/read", markNewsAsRead); + +/** + * @route POST /news/:id/favourite + * @desc Mark a news article as FAVOURITE for a user + * @access Private + */ +router.post("/:id/favourite", markNewsAsFavourite); + +/** + * @route GET /news/read + * @desc Get all the read news for the user + * @access Private + */ +router.get("/read", getReadNews); + +/** + * @route GET /news/favourite + * @desc Get all the favaurite news of the logged in user + * @access Private + */ +router.get("/favourite", getFavouriteNews); + +/** + * @route POST /search/:keyword + * @desc Search news by keyword + * @access Private + */ +router.get("/search/:keyword", getNewsByKeyword); + +/** + * @route GET /news + * @desc Get news as per the preferences saved by the logged in user + * @access Private + */ +router.get("", getNewsByUserPreferences); + +export default router; diff --git a/src/routes/preferences.js b/src/routes/preferences.js new file mode 100644 index 0000000..0e3627c --- /dev/null +++ b/src/routes/preferences.js @@ -0,0 +1,19 @@ +import express from "express"; +import { getPreferences, updatePreferences } from "../controllers/preferences.js"; +const router = express.Router(); + +/** + * @route GET /preferences + * @desc Get the preferences of the logged in user + * @access Private + */ +router.get("", getPreferences); + +/** + * @route PUT /preferences + * @desc Update the preferences of the logged in user + * @access Private + */ +router.put("", updatePreferences); + +export default router; diff --git a/src/services/news.js b/src/services/news.js new file mode 100644 index 0000000..157b959 --- /dev/null +++ b/src/services/news.js @@ -0,0 +1,75 @@ +import crypto from "crypto"; +import News from "../models/news.js"; +import { setValueRedis, getValueRedis } from "../helpers/redisClient.js"; + +export const addOrUpdateNewsInDB = async (article) => { + const hash = crypto.createHash("md5").update(article.url).digest("hex"); + article.newsId = hash; + const newsObject = await News.findOneAndUpdate( + { urlHash: hash }, // search criteria + article, + { upsert: true, new: true } // options: create new document if not found + ); + return newsObject; +}; + +const addHashToArticlesAndSave = async (articles) => { + const promises = articles.map(async (article) => { + await addOrUpdateNewsInDB(article); + }); + await Promise.all(promises); +}; + +export const queryAPIByCategory = async (preference) => { + try { + const cacheValue = await getValueRedis(`preference-${preference}`); + if (cacheValue !== null) return cacheValue; + + const response = await fetch( + `https://newsapi.org/v2/top-headlines?category=${preference}&apiKey=${process.env.NEW_API_KEY}&pageSize=5` + ); + const data = await response.json(); + addHashToArticlesAndSave(data.articles); + + await setValueRedis(`preference-${preference}`, data); + return data; + } catch (error) { + console.error(error); + } +}; +export const queryAPIByKeyword = async (query) => { + try { + const cacheValue = await getValueRedis(`query-${query}`); + if (cacheValue !== null) return cacheValue; + + const response = await fetch( + `https://newsapi.org/v2/everything?q=${query}&apiKey=${process.env.NEW_API_KEY}&pageSize=5` + ); + const data = await response.json(); + addHashToArticlesAndSave(data.articles); + await setValueRedis(`query-${query}`, data); + return data; + } catch (error) { + console.error(error); + } +}; + +export const getNewsByPreference = async (preference) => { + const apiResults = await queryAPIByKeyword(preference); + + return { preference, news: apiResults.articles }; +}; + +export const getNewsArticlesByPreference = (userPreference, articlesByPreferenceArray) => { + const requiredData = articlesByPreferenceArray.filter(({ preference }) => preference == userPreference); + if (requiredData) { + return requiredData[0].news; + } +}; +export const getProperNewsJSON = (news) => { + const newsJSON = news.toJSON(); + newsJSON.newsId = newsJSON.urlHash; + delete newsJSON.urlHash; + delete newsJSON._id; + return newsJSON; +}; diff --git a/src/services/user.js b/src/services/user.js new file mode 100644 index 0000000..c96b0bb --- /dev/null +++ b/src/services/user.js @@ -0,0 +1,33 @@ +import User from "../models/user.js"; +import jwt from "jsonwebtoken"; +import bcrypt from "bcrypt"; + +export const getUserByEmail = async (email) => { + const user = await User.findOne({ email }); + return user; +}; + +export const createToken = (id) => { + const token = jwt.sign({ id }, process.env.API_SECRET, { expiresIn: 86400 }); + return token; +}; + +export const createNewUser = async ({ fullName, email, role, password }) => { + const user = new User({ + fullName, + email, + role, + password: bcrypt.hashSync(password, 8), + }); + + await user.save(); // save the user document to the database + return user; +}; + +export const deleteAllUsers = async () => { + try { + await User.deleteMany({}); + } catch (err) { + console.log("Could not delete all the users", err); + } +}; From 004bfa1c0960eb2a2cc12c34954a5fc451bc85c3 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 21 May 2023 23:33:24 +0530 Subject: [PATCH 02/32] SQL commands to be used in Sequelize --- README.md | 3 +++ sql_commands.txt | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 sql_commands.txt diff --git a/README.md b/README.md index 98541bf..7b48431 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # bookmyshow-api-nodejs-sql + +SQL - https://www.db-fiddle.com/f/dEAQ4vjNCD1ZzeaPUu3CN4/7 + This repository contains the code for a movie ticket booking API. The API allows users to select a theatre in the city and see the dates of the next 7 days. Users can then click on any date to see all the movies in that theatre on that given date. Movies are displayed with details of all the showtimes. diff --git a/sql_commands.txt b/sql_commands.txt new file mode 100644 index 0000000..d5541b2 --- /dev/null +++ b/sql_commands.txt @@ -0,0 +1,63 @@ +CREATE TABLE movie ( + id INT NOT NULL AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + PRIMARY KEY (id) +); + +CREATE TABLE cinema ( + id INT NOT NULL AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + PRIMARY KEY (id) +); + +CREATE TABLE hall ( + id INT NOT NULL AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + cinema_id INT NOT NULL, + FOREIGN KEY (cinema_id) REFERENCES cinema (id), + PRIMARY KEY (id) +); + +CREATE TABLE audioSystem ( + id INT NOT NULL AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + PRIMARY KEY (id) +); + +CREATE TABLE showEvent ( + id INT NOT NULL AUTO_INCREMENT, + showtime TIMESTAMP NOT NULL, + dimension ENUM('2D', '3D', '4D', '3D-IMAX', '4D-IMAX') NOT NULL DEFAULT '2D', + language VARCHAR(20), + audio_system_id INT NOT NULL, + cinema_id INT NOT NULL, + movie_id INT NOT NULL, + FOREIGN KEY (audio_system_id) REFERENCES audioSystem (id), + FOREIGN KEY (cinema_id) REFERENCES cinema (id), + FOREIGN KEY (movie_id) REFERENCES movie (id), + PRIMARY KEY (id) +); + + + +INSERT INTO movie (name) VALUES ('Movie A'),('Movie B'), ('Movie C'); +INSERT INTO cinema (name) VALUES ('Cinema A'),('Cinema B'), ('Cinema C'); +INSERT INTO hall (name, cinema_id) VALUES ('Hall 1', 1),('Hall 2', 1), ('Hall 1', 2); +INSERT INTO audioSystem (name) VALUES ('Audio-System A'),('Audio-System B'), ('Audio-System C'); + + +INSERT INTO showEvent (showtime, dimension, language, audio_system_id, cinema_id, movie_id) +VALUES ('2023-05-20 15:00:00', '2D', 'English', 1, 1, 1), + ('2023-05-20 18:00:00', '3D', 'English', 2, 1, 2), + ('2023-05-21 16:30:00', '4D', 'Spanish', 1, 2, 1), + ('2023-05-21 19:00:00', '3D-IMAX', 'English', 3, 3, 3); + + +SELECT showtime, movie.name as movie, cinema.name as cinema, audioSystem.name as audioSystem + from showEvent inner join audioSystem on showEvent.audio_system_id = audioSystem.id + inner join cinema on showEvent.cinema_id = cinema.id + inner join movie on showEvent.movie_id = movie.id + WHERE DATE(showEvent.showtime) = '2023-05-20'; + + + From a9d6cc1a15ef07695380479262b610e62d98ddc5 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 14:30:00 +0530 Subject: [PATCH 03/32] env update --- .env.example | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 57ac135..1cbdd8a 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ -MONGODB_URI=mongodb+srv://iamashutoshpanda:1k8KAsaD4aD770b8@cluster0.z2wwu5l.mongodb.net/?retryWrites=true&w=majority -MONGODB_TEST_URI=mongodb+srv://iamashutoshpanda:wibjFEaUQniVhhlf@cluster0.lrxmqdi.mongodb.net/?retryWrites=true&w=majority -API_SECRET=secret -NODE_ENV='UAT' \ No newline at end of file +DB_HOST='localhost' +DB_NAME='bookmyshow' +DB_USER_NAME='panda' +DB_PASSWORD='' +DB_PORT='3306' From 1fce9ace0bc593a0a85b464573b9f157d1c6b526 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 14:30:22 +0530 Subject: [PATCH 04/32] REM : redundant middlewares --- index.js | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/index.js b/index.js index 90de75c..ab95951 100644 --- a/index.js +++ b/index.js @@ -1,10 +1,6 @@ import express from "express"; -import logger from "morgan"; import dotenv from "dotenv"; -import connectDB from "./src/helpers/mongoose.js"; import routes from "./src/routes/index.js"; -import rateLimit from "express-rate-limit"; -import loggerMiddleware from "./src/middlewares/logger.js"; // Make all variables from our .env file available in our process dotenv.config({ path: ".env.example" }); @@ -12,22 +8,8 @@ dotenv.config({ path: ".env.example" }); // Init express server const app = express(); -// Connect to MongoDB. -await connectDB(); - //rate limit -const limiter = rateLimit({ - windowMs: 10 * 1000, - max: 3, - message: "Too many requests from this IP, please try again later.", -}); -if (process.env.NODE_ENV !== "TEST") { - app.use(limiter); -} -app.use(loggerMiddleware()); -// Middlewares & configs setup -app.use(logger("dev")); app.use(express.json()); app.use(express.urlencoded({ extended: true })); From ad59eee3730ad65e3ccfbeb23701c46c32b23481 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 14:30:34 +0530 Subject: [PATCH 05/32] UPDATE: packages --- package-lock.json | 339 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 7 +- 2 files changed, 343 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77ebb36..58a66f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,40 @@ "version": "1.0.0", "license": "MIT", "dependencies": { + "cors": "^2.8.5", "dotenv": "^16.0.3", - "express": "^4.18.2" + "express": "^4.18.2", + "mysql2": "^3.3.2", + "sequelize": "^6.31.1" }, "devDependencies": { "nodemon": "^2.0.22", "prettier": "^2.8.8" } }, + "node_modules/@types/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "node_modules/@types/node": { + "version": "20.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz", + "integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==" + }, + "node_modules/@types/validator": { + "version": "13.7.17", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.17.tgz", + "integrity": "sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ==" + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -198,6 +224,18 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -206,6 +244,14 @@ "ms": "2.0.0" } }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -231,6 +277,11 @@ "node": ">=12" } }, + "node_modules/dottie": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.3.tgz", + "integrity": "sha512-4liA0PuRkZWQFQjwBypdxPfZaRWiv5tkhMXY2hzsa2pNf5s7U3m9cwUchfNKe8wZQxdGPQQzO6Rm2uGe0rvohQ==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -362,6 +413,14 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dependencies": { + "is-property": "^1.0.2" + } + }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -450,6 +509,14 @@ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", "dev": true }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -505,6 +572,32 @@ "node": ">=0.12.0" } }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -568,11 +661,86 @@ "node": "*" } }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.43", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", + "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/mysql2": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.3.2.tgz", + "integrity": "sha512-eAJX3avZcNmVjhm3tWA7PdC0xn5BfEROIyCHDu4L8yr53Ckcj7HmSlUTdCQ6Rhrs3kCgu97dSnodMXO7TGv/Nw==", + "dependencies": { + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/mysql2/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mysql2/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "engines": { + "node": ">=16.14" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -642,6 +810,14 @@ "node": ">=0.10.0" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -674,6 +850,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "node_modules/pg-connection-string": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.0.tgz", + "integrity": "sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg==" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -767,6 +948,11 @@ "node": ">=8.10.0" } }, + "node_modules/retry-as-promised": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -791,6 +977,20 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -819,6 +1019,101 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/sequelize": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.31.1.tgz", + "integrity": "sha512-cahWtRrYLjqoZP/aurGBoaxn29qQCF4bxkAUPEQ/ozjJjt6mtL4Q113S3N39mQRmX5fgxRbli+bzZARP/N51eg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], + "dependencies": { + "@types/debug": "^4.1.7", + "@types/validator": "^13.7.1", + "debug": "^4.3.3", + "dottie": "^2.0.2", + "inflection": "^1.13.2", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "moment-timezone": "^0.5.35", + "pg-connection-string": "^2.5.0", + "retry-as-promised": "^7.0.3", + "semver": "^7.3.5", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.7.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/sequelize/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/sequelize/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", @@ -872,6 +1167,14 @@ "semver": "bin/semver.js" } }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -912,6 +1215,11 @@ "node": ">=0.6" } }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" + }, "node_modules/touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", @@ -973,6 +1281,22 @@ "node": ">= 0.4.0" } }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -980,6 +1304,19 @@ "engines": { "node": ">= 0.8" } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index 2db968f..924c772 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,11 @@ }, "homepage": "https://github.com/aashutoshPanda/News-Aggregator-API#readme", "dependencies": { + "cors": "^2.8.5", "dotenv": "^16.0.3", - "express": "^4.18.2" + "express": "^4.18.2", + "mysql2": "^3.3.2", + "sequelize": "^6.31.1" }, "devDependencies": { "nodemon": "^2.0.22", @@ -31,4 +34,4 @@ "printWidth": 120 }, "type": "module" -} \ No newline at end of file +} From a93529e779d341a45816d7d3407b613ce5b3f06a Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 14:30:53 +0530 Subject: [PATCH 06/32] ADD: controllers --- src/controllers/auth.js | 29 ++++++++++++++++++++++++ src/controllers/preferences.js | 37 ------------------------------ src/controllers/shows.js | 41 ++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 37 deletions(-) create mode 100644 src/controllers/auth.js delete mode 100644 src/controllers/preferences.js create mode 100644 src/controllers/shows.js diff --git a/src/controllers/auth.js b/src/controllers/auth.js new file mode 100644 index 0000000..90c4f28 --- /dev/null +++ b/src/controllers/auth.js @@ -0,0 +1,29 @@ +import { User } from "../models.js"; + +/** + * @desc POST Signup for a user + */ +export const login = async (req, res) => { + try { + console.log("IMPLEMENT"); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while login", + }); + } +}; + +/** + * @desc POST Login for a user + */ +export const signup = async (req, res) => { + try { + console.log("IMPLEMENT"); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while signup", + }); + } +}; diff --git a/src/controllers/preferences.js b/src/controllers/preferences.js deleted file mode 100644 index a609116..0000000 --- a/src/controllers/preferences.js +++ /dev/null @@ -1,37 +0,0 @@ -import User from "../models/user.js"; -/** - * @desc get preferences for a user - */ -export const getPreferences = async (req, res) => { - try { - const user = await User.findById(req.user.id); - res.send(user.preferences); - } catch (err) { - console.log(err); - return res.status(500).send({ - message: "Something went wrong while getting preferences", - }); - } -}; - -/** - * @desc Update preferences for a user - */ -export const updatePreferences = async (req, res) => { - try { - const user = await User.findById(req.user.id); - user.preferences = req.body; - try { - await user.validate(); // check if the user document is valid - await user.save(); // save the user document to the database - res.send(user.preferences); - } catch (err) { - res.status(400).send(err); - } - } catch (err) { - console.log(err); - return res.status(500).send({ - message: "Something went wrong while updating preferences", - }); - } -}; diff --git a/src/controllers/shows.js b/src/controllers/shows.js new file mode 100644 index 0000000..178d384 --- /dev/null +++ b/src/controllers/shows.js @@ -0,0 +1,41 @@ +/** + * @desc GET shows by city and date + */ +export const getShowsByCityAndDate = async (req, res) => { + try { + console.log("IMPLEMENT"); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while getting shows by city and date", + }); + } +}; + +/** + * @desc GET seats available for a show + */ +export const getSeats = async (req, res) => { + try { + console.log("IMPLEMENT"); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while getting available seats for a show", + }); + } +}; + +/** + * @desc POST book seat for a show + */ +export const bookSeatForShow = async (req, res) => { + try { + console.log("IMPLEMENT"); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while booking a seat for the show", + }); + } +}; From b830de9d1a10e61dd6d53441b59e7354eda7c24b Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 14:31:13 +0530 Subject: [PATCH 07/32] ADD: models --- src/helpers/mongoose.js | 17 --------- src/helpers/sequelize.js | 16 +++++++++ src/models/audioSystems.js | 24 +++++++++++++ src/models/bookings.js | 34 ++++++++++++++++++ src/models/cinemas.js | 29 ++++++++++++++++ src/models/halls.js | 31 +++++++++++++++++ src/models/index.js | 6 +++- src/models/movies.js | 28 +++++++++++++++ src/models/news.js | 33 ------------------ src/models/shows.js | 51 +++++++++++++++++++++++++++ src/models/user.js | 71 +++++++++++--------------------------- 11 files changed, 238 insertions(+), 102 deletions(-) delete mode 100644 src/helpers/mongoose.js create mode 100644 src/helpers/sequelize.js create mode 100644 src/models/audioSystems.js create mode 100644 src/models/bookings.js create mode 100644 src/models/cinemas.js create mode 100644 src/models/halls.js create mode 100644 src/models/movies.js delete mode 100644 src/models/news.js create mode 100644 src/models/shows.js diff --git a/src/helpers/mongoose.js b/src/helpers/mongoose.js deleted file mode 100644 index 062aefa..0000000 --- a/src/helpers/mongoose.js +++ /dev/null @@ -1,17 +0,0 @@ -import mongoose from "mongoose"; - -const connectDB = async () => { - try { - // MongoDB setup. - const connectionURI = process.env.NODE_ENV === "TEST" ? process.env.MONGODB_TEST_URI : process.env.MONGODB_URI; - console.log("connected to ", connectionURI); - await mongoose.connect(connectionURI); - } catch ({ message }) { - console.error("Error with mongo setup", message); - console.log("%s MongoDB connection error. Please make sure MongoDB is running."); - // Exit process with failure - process.exit(1); - } -}; - -export default connectDB; diff --git a/src/helpers/sequelize.js b/src/helpers/sequelize.js new file mode 100644 index 0000000..8ed8e03 --- /dev/null +++ b/src/helpers/sequelize.js @@ -0,0 +1,16 @@ +import { Sequelize } from "sequelize"; +const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER_NAME, process.env.DB_PASSWORD, { + host: process.env.DB_HOST, + dialect: "mysql", +}); + +sequelize + .authenticate() + .then(() => { + console.log("Connection has been established successfully."); + }) + .catch((error) => { + console.error("Unable to connect to the database: ", error); + }); + +export default sequelize; diff --git a/src/models/audioSystems.js b/src/models/audioSystems.js new file mode 100644 index 0000000..bb72860 --- /dev/null +++ b/src/models/audioSystems.js @@ -0,0 +1,24 @@ +import { sequelize } from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; + +export const AudioSystem = sequelize.define("AudioSystem", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING, + allowNull: false, + unique: true, + }, +}); + +sequelize + .sync() + .then(() => { + console.log("AudioSystem table created successfully!"); + }) + .catch((error) => { + console.error("AudioSystem to create table : ", error); + }); diff --git a/src/models/bookings.js b/src/models/bookings.js new file mode 100644 index 0000000..05f14aa --- /dev/null +++ b/src/models/bookings.js @@ -0,0 +1,34 @@ +import { sequelize } from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; +import { Show } from "./shows.js"; +import { User } from "./users.js"; + +export const Booking = sequelize.define("Booking", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + seat: { + type: DataTypes.INTEGER, + allowNull: false, + }, +}); + +Booking.belongsTo(Show); +Show.hasMany(Booking); + +Booking.belongsTo(User); +User.hasMany(Booking); + +Show.belongsTo(Movie); +Movie.hasMany(Show); + +sequelize + .sync() + .then(() => { + console.log("Booking table created successfully!"); + }) + .catch((error) => { + console.error("Booking to create table : ", error); + }); diff --git a/src/models/cinemas.js b/src/models/cinemas.js new file mode 100644 index 0000000..db750f9 --- /dev/null +++ b/src/models/cinemas.js @@ -0,0 +1,29 @@ +import { sequelize } from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; + +export const Cinema = sequelize.define("Cinema", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING, + allowNull: false, + unique: true, + }, + city: { + type: DataTypes.STRING, + allowNull: false, + unique: true, + }, +}); + +sequelize + .sync() + .then(() => { + console.log("Cinema table created successfully!"); + }) + .catch((error) => { + console.error("Cinema to create table : ", error); + }); diff --git a/src/models/halls.js b/src/models/halls.js new file mode 100644 index 0000000..1f93f3d --- /dev/null +++ b/src/models/halls.js @@ -0,0 +1,31 @@ +import { sequelize } from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; +import { Cinema } from "./cinemas.js"; +export const Hall = sequelize.define("Hall", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING, + allowNull: false, + unique: true, + }, + max_seats: { + type: DataTypes.INTEGER, + allowNull: false, + }, +}); +// Define the foreign key relationship + +Hall.belongsTo(Cinema); // Each post belongs to a user +Cinema.hasMany(Hall); // Each user can have multiple posts +sequelize + .sync() + .then(() => { + console.log("Hall table created successfully!"); + }) + .catch((error) => { + console.error("Hall to create table : ", error); + }); diff --git a/src/models/index.js b/src/models/index.js index e17763f..47ba4b5 100644 --- a/src/models/index.js +++ b/src/models/index.js @@ -1,2 +1,6 @@ export { default as User } from "./user.js"; -export { default as News } from "./news.js"; +export { default as Movie } from "./movies.js"; +export { default as Booking } from "./bookings.js"; +export { default as Hall } from "./halls.js"; +export { default as Cinema } from "./cinemas.js"; +export { default as AudioSystem } from "./audioSystems.js"; diff --git a/src/models/movies.js b/src/models/movies.js new file mode 100644 index 0000000..71754a6 --- /dev/null +++ b/src/models/movies.js @@ -0,0 +1,28 @@ +import { sequelize } from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; + +export const Movie = sequelize.define("Movie", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING, + allowNull: false, + unique: true, + }, + duration: { + type: DataTypes.INTEGER, + allowNull: false, + }, +}); + +sequelize + .sync() + .then(() => { + console.log("Movie table created successfully!"); + }) + .catch((error) => { + console.error("Movie to create table : ", error); + }); diff --git a/src/models/news.js b/src/models/news.js deleted file mode 100644 index 6d442b3..0000000 --- a/src/models/news.js +++ /dev/null @@ -1,33 +0,0 @@ -import mongoose, { Schema } from "mongoose"; - -const newsSchema = new Schema({ - title: { - type: String, - required: [true, "News title is required"], - minlength: [2, "News title must be at least 2 characters"], - maxlength: [200, "News title can have at most 200 characters"], - trim: true, - }, - url: { - type: String, - required: [true, "News URL is required"], - match: [/^https?:\/\/.+/, "Invalid URL format"], - }, - publishedAt: { type: Date, default: Date.now }, - author: { - type: String, - required: [true, "News author is required"], - minlength: [2, "News author must be at least 2 characters"], - maxlength: [100, "News author can have at most 100 characters"], - trim: true, - }, - urlHash: { - type: String, - required: [true, "URL hash is required"], - length: [32, "the hash would be of 32 chars"], - trim: true, - }, -}); - -const News = mongoose.model("News", newsSchema); -export default News; diff --git a/src/models/shows.js b/src/models/shows.js new file mode 100644 index 0000000..4a0e446 --- /dev/null +++ b/src/models/shows.js @@ -0,0 +1,51 @@ +import { sequelize } from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; +import { Hall } from "./halls.js"; +import { Movie } from "./movies.js"; +import { AudioSystem } from "./audioSystems.js"; + +export const Show = sequelize.define("Show", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING, + allowNull: false, + unique: true, + }, + language: { + type: DataTypes.STRING, + allowNull: false, + unique: true, + }, + dimension: { + type: DataTypes.ENUM("2D", "3D", "4D", "3D-IMAX", "4D-IMAX"), + allowNull: false, + unique: true, + default: "2D", + }, + startTime: { + type: DataTypes.DATE, + allowNull: false, + }, +}); + +Show.belongsTo(Hall); +Hall.hasMany(Show); + +Show.belongsTo(AudioSystem); +AudioSystem.hasMany(Show); + +Show.belongsTo(Movie); +Movie.hasMany(Show); + +sequelize + .sync() + .then(() => { + console.log("Show table created successfully!"); + }) + .catch((error) => { + console.error("Show to create table : ", error); + }); diff --git a/src/models/user.js b/src/models/user.js index b732b7b..746967a 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -1,59 +1,28 @@ -import mongoose, { Schema } from "mongoose"; +import { sequelize } from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; -const userSchema = new Schema({ - fullName: { - type: String, - required: [true, "Full name is required"], - minlength: [2, "Full name must be at least 2 characters"], - maxlength: [100, "Full name can have at most 100 characters"], - trim: true, - validate: { - validator: function (value) { - // Define your custom validation logic here - // Return true if value is valid, otherwise return false - const fullNameRegex = /^[A-Za-z]+([\s]?[A-Za-z]+)*$/; - return fullNameRegex.test(value); - }, - message: (props) => `${props.value} is not a valid full name!`, - }, +export const User = sequelize.define("User", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, }, - email: { - type: String, - required: [true, "Email address is required"], + username: { + type: DataTypes.STRING, + allowNull: false, unique: true, - trim: true, - lowercase: true, - match: [/^\S+@\S+\.\S+$/, "Invalid email address"], }, password: { - type: String, - required: [true, "Password is required"], - minlength: [8, "Password must be at least 8 characters"], - maxlength: [100, "Password can have at most 100 characters"], - }, - role: { - type: String, - enum: ["USER", "ADMIN"], - default: "user", - }, - createdAt: { type: Date, default: Date.now }, - favourites: [{ type: mongoose.Schema.Types.ObjectId, ref: "News" }], - read: [{ type: mongoose.Schema.Types.ObjectId, ref: "News" }], - preferences: { - type: [ - { - type: String, - maxlength: 20, - }, - ], - validate: { - validator: function (v) { - return Array.isArray(v) && v.every((val) => typeof val === "string"); - }, - message: "Preferences should be an array of strings", - }, + type: DataTypes.STRING, + allowNull: false, }, }); -const User = mongoose.model("User", userSchema); -export default User; +sequelize + .sync() + .then(() => { + console.log("User table created successfully!"); + }) + .catch((error) => { + console.error("User to create table : ", error); + }); From cdb949880fa38f69b26f6c0f82f9887a2da20a9a Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 14:31:30 +0530 Subject: [PATCH 08/32] REM: old services --- src/services/news.js | 75 -------------------------------------------- src/services/user.js | 33 ------------------- 2 files changed, 108 deletions(-) delete mode 100644 src/services/news.js delete mode 100644 src/services/user.js diff --git a/src/services/news.js b/src/services/news.js deleted file mode 100644 index 157b959..0000000 --- a/src/services/news.js +++ /dev/null @@ -1,75 +0,0 @@ -import crypto from "crypto"; -import News from "../models/news.js"; -import { setValueRedis, getValueRedis } from "../helpers/redisClient.js"; - -export const addOrUpdateNewsInDB = async (article) => { - const hash = crypto.createHash("md5").update(article.url).digest("hex"); - article.newsId = hash; - const newsObject = await News.findOneAndUpdate( - { urlHash: hash }, // search criteria - article, - { upsert: true, new: true } // options: create new document if not found - ); - return newsObject; -}; - -const addHashToArticlesAndSave = async (articles) => { - const promises = articles.map(async (article) => { - await addOrUpdateNewsInDB(article); - }); - await Promise.all(promises); -}; - -export const queryAPIByCategory = async (preference) => { - try { - const cacheValue = await getValueRedis(`preference-${preference}`); - if (cacheValue !== null) return cacheValue; - - const response = await fetch( - `https://newsapi.org/v2/top-headlines?category=${preference}&apiKey=${process.env.NEW_API_KEY}&pageSize=5` - ); - const data = await response.json(); - addHashToArticlesAndSave(data.articles); - - await setValueRedis(`preference-${preference}`, data); - return data; - } catch (error) { - console.error(error); - } -}; -export const queryAPIByKeyword = async (query) => { - try { - const cacheValue = await getValueRedis(`query-${query}`); - if (cacheValue !== null) return cacheValue; - - const response = await fetch( - `https://newsapi.org/v2/everything?q=${query}&apiKey=${process.env.NEW_API_KEY}&pageSize=5` - ); - const data = await response.json(); - addHashToArticlesAndSave(data.articles); - await setValueRedis(`query-${query}`, data); - return data; - } catch (error) { - console.error(error); - } -}; - -export const getNewsByPreference = async (preference) => { - const apiResults = await queryAPIByKeyword(preference); - - return { preference, news: apiResults.articles }; -}; - -export const getNewsArticlesByPreference = (userPreference, articlesByPreferenceArray) => { - const requiredData = articlesByPreferenceArray.filter(({ preference }) => preference == userPreference); - if (requiredData) { - return requiredData[0].news; - } -}; -export const getProperNewsJSON = (news) => { - const newsJSON = news.toJSON(); - newsJSON.newsId = newsJSON.urlHash; - delete newsJSON.urlHash; - delete newsJSON._id; - return newsJSON; -}; diff --git a/src/services/user.js b/src/services/user.js deleted file mode 100644 index c96b0bb..0000000 --- a/src/services/user.js +++ /dev/null @@ -1,33 +0,0 @@ -import User from "../models/user.js"; -import jwt from "jsonwebtoken"; -import bcrypt from "bcrypt"; - -export const getUserByEmail = async (email) => { - const user = await User.findOne({ email }); - return user; -}; - -export const createToken = (id) => { - const token = jwt.sign({ id }, process.env.API_SECRET, { expiresIn: 86400 }); - return token; -}; - -export const createNewUser = async ({ fullName, email, role, password }) => { - const user = new User({ - fullName, - email, - role, - password: bcrypt.hashSync(password, 8), - }); - - await user.save(); // save the user document to the database - return user; -}; - -export const deleteAllUsers = async () => { - try { - await User.deleteMany({}); - } catch (err) { - console.log("Could not delete all the users", err); - } -}; From af82532ef084e1f2ddc42f1d855f39203bbc5549 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 14:31:39 +0530 Subject: [PATCH 09/32] ADD: routes --- src/routes/index.js | 8 +++--- src/routes/news.js | 54 --------------------------------------- src/routes/preferences.js | 19 -------------- src/routes/shows.js | 27 ++++++++++++++++++++ 4 files changed, 30 insertions(+), 78 deletions(-) delete mode 100644 src/routes/news.js delete mode 100644 src/routes/preferences.js create mode 100644 src/routes/shows.js diff --git a/src/routes/index.js b/src/routes/index.js index 9dabbd3..0861f77 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -1,12 +1,10 @@ import express from "express"; import authRouter from "./auth.js"; -import preferencesRouter from "./preferences.js"; -import newsRouter from "./news.js"; +import showsRouter from "./shows.js"; import { isAuthenticated } from "../middlewares/auth.js"; const router = express.Router(); -router.use("/auth", authRouter); -router.use("/preferences", isAuthenticated, preferencesRouter); -router.use("/news", isAuthenticated, newsRouter); +router.use("/api/auth", authRouter); +router.use("/api/shows", isAuthenticated, showsRouter); export default router; diff --git a/src/routes/news.js b/src/routes/news.js deleted file mode 100644 index 8e4886b..0000000 --- a/src/routes/news.js +++ /dev/null @@ -1,54 +0,0 @@ -import express from "express"; -import { - markNewsAsRead, - markNewsAsFavourite, - getReadNews, - getFavouriteNews, - getNewsByKeyword, - getNewsByUserPreferences, -} from "../controllers/news.js"; - -const router = express.Router(); -/** - * @route POST /news/:id/read - * @desc Mark a news article as READ for a user - * @access Private - */ -router.post("/:id/read", markNewsAsRead); - -/** - * @route POST /news/:id/favourite - * @desc Mark a news article as FAVOURITE for a user - * @access Private - */ -router.post("/:id/favourite", markNewsAsFavourite); - -/** - * @route GET /news/read - * @desc Get all the read news for the user - * @access Private - */ -router.get("/read", getReadNews); - -/** - * @route GET /news/favourite - * @desc Get all the favaurite news of the logged in user - * @access Private - */ -router.get("/favourite", getFavouriteNews); - -/** - * @route POST /search/:keyword - * @desc Search news by keyword - * @access Private - */ -router.get("/search/:keyword", getNewsByKeyword); - -/** - * @route GET /news - * @desc Get news as per the preferences saved by the logged in user - * @access Private - */ -router.get("", getNewsByUserPreferences); - -export default router; diff --git a/src/routes/preferences.js b/src/routes/preferences.js deleted file mode 100644 index 0e3627c..0000000 --- a/src/routes/preferences.js +++ /dev/null @@ -1,19 +0,0 @@ -import express from "express"; -import { getPreferences, updatePreferences } from "../controllers/preferences.js"; -const router = express.Router(); - -/** - * @route GET /preferences - * @desc Get the preferences of the logged in user - * @access Private - */ -router.get("", getPreferences); - -/** - * @route PUT /preferences - * @desc Update the preferences of the logged in user - * @access Private - */ -router.put("", updatePreferences); - -export default router; diff --git a/src/routes/shows.js b/src/routes/shows.js new file mode 100644 index 0000000..f26ea16 --- /dev/null +++ b/src/routes/shows.js @@ -0,0 +1,27 @@ +import express from "express"; +import { getSeats, getShowsByCityAndDate, bookSeatForShow } from "../controllers/shows.js"; + +const router = express.Router(); + +/** + * @route GET /api/shows/:city/:date + * @desc Get details of shows in a city + * @access Private + */ +router.get("/:city/:date", getShowsByCityAndDate); + +/** + * @route GET /api/shows/:id + * @desc GET available seats for a show + * @access Private + */ +router.post("/:id", getSeats); + +/** + * @route POST /api/shows/:id + * @desc Book seats for a particular show + * @access Private + */ +router.post("/:id", bookSeatForShow); + +export default router; From bb9afde9162ee134593ba7630fd3201f6776de84 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 18:21:42 +0530 Subject: [PATCH 10/32] EDIT: fix schema --- src/models/audioSystems.js | 6 ++++-- src/models/bookings.js | 11 +++++++---- src/models/cinemas.js | 7 ++++--- src/models/halls.js | 10 ++++++---- src/models/index.js | 2 +- src/models/movies.js | 6 ++++-- src/models/shows.js | 19 +++++++------------ src/models/{user.js => users.js} | 6 ++++-- 8 files changed, 37 insertions(+), 30 deletions(-) rename src/models/{user.js => users.js} (80%) diff --git a/src/models/audioSystems.js b/src/models/audioSystems.js index bb72860..163d383 100644 --- a/src/models/audioSystems.js +++ b/src/models/audioSystems.js @@ -1,7 +1,7 @@ -import { sequelize } from "../helpers/sequelize.js"; +import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; -export const AudioSystem = sequelize.define("AudioSystem", { +const AudioSystem = sequelize.define("AudioSystem", { id: { type: DataTypes.INTEGER, primaryKey: true, @@ -22,3 +22,5 @@ sequelize .catch((error) => { console.error("AudioSystem to create table : ", error); }); + +export default AudioSystem; diff --git a/src/models/bookings.js b/src/models/bookings.js index 05f14aa..543e9a8 100644 --- a/src/models/bookings.js +++ b/src/models/bookings.js @@ -1,9 +1,10 @@ -import { sequelize } from "../helpers/sequelize.js"; +import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; -import { Show } from "./shows.js"; -import { User } from "./users.js"; +import Show from "./shows.js"; +import Movie from "./movies.js"; +import User from "./users.js"; -export const Booking = sequelize.define("Booking", { +const Booking = sequelize.define("Booking", { id: { type: DataTypes.INTEGER, primaryKey: true, @@ -32,3 +33,5 @@ sequelize .catch((error) => { console.error("Booking to create table : ", error); }); + +export default Booking; diff --git a/src/models/cinemas.js b/src/models/cinemas.js index db750f9..84adc37 100644 --- a/src/models/cinemas.js +++ b/src/models/cinemas.js @@ -1,7 +1,7 @@ -import { sequelize } from "../helpers/sequelize.js"; +import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; -export const Cinema = sequelize.define("Cinema", { +const Cinema = sequelize.define("Cinema", { id: { type: DataTypes.INTEGER, primaryKey: true, @@ -15,7 +15,6 @@ export const Cinema = sequelize.define("Cinema", { city: { type: DataTypes.STRING, allowNull: false, - unique: true, }, }); @@ -27,3 +26,5 @@ sequelize .catch((error) => { console.error("Cinema to create table : ", error); }); + +export default Cinema; diff --git a/src/models/halls.js b/src/models/halls.js index 1f93f3d..54cac0c 100644 --- a/src/models/halls.js +++ b/src/models/halls.js @@ -1,7 +1,8 @@ -import { sequelize } from "../helpers/sequelize.js"; +import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; -import { Cinema } from "./cinemas.js"; -export const Hall = sequelize.define("Hall", { +import Cinema from "./cinemas.js"; + +const Hall = sequelize.define("Hall", { id: { type: DataTypes.INTEGER, primaryKey: true, @@ -10,7 +11,6 @@ export const Hall = sequelize.define("Hall", { name: { type: DataTypes.STRING, allowNull: false, - unique: true, }, max_seats: { type: DataTypes.INTEGER, @@ -29,3 +29,5 @@ sequelize .catch((error) => { console.error("Hall to create table : ", error); }); + +export default Hall; diff --git a/src/models/index.js b/src/models/index.js index 47ba4b5..8192e03 100644 --- a/src/models/index.js +++ b/src/models/index.js @@ -1,4 +1,4 @@ -export { default as User } from "./user.js"; +export { default as User } from "./users.js"; export { default as Movie } from "./movies.js"; export { default as Booking } from "./bookings.js"; export { default as Hall } from "./halls.js"; diff --git a/src/models/movies.js b/src/models/movies.js index 71754a6..28ac6c2 100644 --- a/src/models/movies.js +++ b/src/models/movies.js @@ -1,7 +1,7 @@ -import { sequelize } from "../helpers/sequelize.js"; +import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; -export const Movie = sequelize.define("Movie", { +const Movie = sequelize.define("Movie", { id: { type: DataTypes.INTEGER, primaryKey: true, @@ -26,3 +26,5 @@ sequelize .catch((error) => { console.error("Movie to create table : ", error); }); + +export default Movie; diff --git a/src/models/shows.js b/src/models/shows.js index 4a0e446..efc672a 100644 --- a/src/models/shows.js +++ b/src/models/shows.js @@ -1,29 +1,22 @@ -import { sequelize } from "../helpers/sequelize.js"; +import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; -import { Hall } from "./halls.js"; -import { Movie } from "./movies.js"; -import { AudioSystem } from "./audioSystems.js"; +import Hall from "./halls.js"; +import Movie from "./movies.js"; +import AudioSystem from "./audioSystems.js"; -export const Show = sequelize.define("Show", { +const Show = sequelize.define("Show", { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, }, - name: { - type: DataTypes.STRING, - allowNull: false, - unique: true, - }, language: { type: DataTypes.STRING, allowNull: false, - unique: true, }, dimension: { type: DataTypes.ENUM("2D", "3D", "4D", "3D-IMAX", "4D-IMAX"), allowNull: false, - unique: true, default: "2D", }, startTime: { @@ -49,3 +42,5 @@ sequelize .catch((error) => { console.error("Show to create table : ", error); }); + +export default Show; diff --git a/src/models/user.js b/src/models/users.js similarity index 80% rename from src/models/user.js rename to src/models/users.js index 746967a..837e46e 100644 --- a/src/models/user.js +++ b/src/models/users.js @@ -1,7 +1,7 @@ -import { sequelize } from "../helpers/sequelize.js"; +import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; -export const User = sequelize.define("User", { +const User = sequelize.define("User", { id: { type: DataTypes.INTEGER, primaryKey: true, @@ -26,3 +26,5 @@ sequelize .catch((error) => { console.error("User to create table : ", error); }); + +export default User; From f9527687de4ed43321a502c72821f8fabd712326 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 18:22:04 +0530 Subject: [PATCH 11/32] Add: login and signup --- .env.example | 3 +- index.js | 4 +- package-lock.json | 1145 ++++++++++++++++++++++++++++++++++++-- package.json | 5 +- src/controllers/auth.js | 41 +- src/helpers/sequelize.js | 6 + src/middlewares/auth.js | 10 +- 7 files changed, 1160 insertions(+), 54 deletions(-) diff --git a/.env.example b/.env.example index 1cbdd8a..0528735 100644 --- a/.env.example +++ b/.env.example @@ -2,4 +2,5 @@ DB_HOST='localhost' DB_NAME='bookmyshow' DB_USER_NAME='panda' DB_PASSWORD='' -DB_PORT='3306' + +JWT_SECRET='secret' \ No newline at end of file diff --git a/index.js b/index.js index ab95951..34cb726 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,9 @@ -import express from "express"; import dotenv from "dotenv"; +dotenv.config({ path: ".env.example" }); +import express from "express"; import routes from "./src/routes/index.js"; // Make all variables from our .env file available in our process -dotenv.config({ path: ".env.example" }); // Init express server const app = express(); diff --git a/package-lock.json b/package-lock.json index 58a66f3..d3b27f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,17 +9,39 @@ "version": "1.0.0", "license": "MIT", "dependencies": { + "bcrypt": "^5.1.0", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", + "jsonwebtoken": "^9.0.0", "mysql2": "^3.3.2", - "sequelize": "^6.31.1" + "sequelize": "^6.31.1", + "sequelize-cli": "^6.6.0" }, "devDependencies": { "nodemon": "^2.0.22", "prettier": "^2.8.8" } }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, "node_modules/@types/debug": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", @@ -46,8 +68,7 @@ "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/accepts": { "version": "1.3.8", @@ -61,6 +82,60 @@ "node": ">= 0.6" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -74,16 +149,53 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/bcrypt": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", + "integrity": "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.10", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -94,6 +206,11 @@ "node": ">=8" } }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -121,7 +238,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -139,6 +255,11 @@ "node": ">=8" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -186,11 +307,86 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/content-disposition": { "version": "0.5.4", @@ -236,6 +432,15 @@ "node": ">= 0.10" } }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -244,6 +449,11 @@ "ms": "2.0.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "node_modules/denque": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", @@ -269,6 +479,14 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, "node_modules/dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", @@ -282,11 +500,60 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.3.tgz", "integrity": "sha512-4liA0PuRkZWQFQjwBypdxPfZaRWiv5tkhMXY2hzsa2pNf5s7U3m9cwUchfNKe8wZQxdGPQQzO6Rm2uGe0rvohQ==" }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/editorconfig/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -295,6 +562,58 @@ "node": ">= 0.8" } }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -308,6 +627,15 @@ "node": ">= 0.6" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -349,6 +677,19 @@ "node": ">= 0.10.0" } }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -394,6 +735,47 @@ "node": ">= 0.6" } }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -413,6 +795,25 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -421,6 +822,14 @@ "is-property": "^1.0.2" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -434,6 +843,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -446,6 +874,11 @@ "node": ">= 6" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -477,6 +910,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -492,6 +930,39 @@ "node": ">= 0.8" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -517,11 +988,25 @@ "node >= 0.4.0" ] }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -530,52 +1015,196 @@ "node": ">= 0.10" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + }, + "node_modules/js-beautify": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.7.tgz", + "integrity": "sha512-5SOX1KXPFKx+5f6ZrPsIPEY7NwKeQz47n3jm2i+XeHx9MoRsfQenlOP13FQhWvg8JRS0+XLO6XYUQ2GX+q+T9A==", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^8.0.3", + "nopt": "^6.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { - "binary-extensions": "^2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "node_modules/js-beautify/node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { - "is-extglob": "^2.1.1" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "node_modules/jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, "engines": { - "node": ">=0.12.0" + "node": ">=12", + "npm": ">=6" } }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } }, "node_modules/lodash": { "version": "4.17.21", @@ -598,6 +1227,36 @@ "node": ">=10" } }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -606,6 +1265,21 @@ "node": ">= 0.6" } }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -653,7 +1327,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -661,6 +1334,48 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/moment": { "version": "2.29.4", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", @@ -749,6 +1464,35 @@ "node": ">= 0.6" } }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", @@ -801,6 +1545,20 @@ "semver": "bin/semver" } }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -810,6 +1568,17 @@ "node": ">=0.10.0" } }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -837,6 +1606,14 @@ "node": ">= 0.8" } }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -845,6 +1622,19 @@ "node": ">= 0.8" } }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -882,6 +1672,11 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -894,6 +1689,11 @@ "node": ">= 0.10" } }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -936,6 +1736,19 @@ "node": ">= 0.8" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -948,11 +1761,49 @@ "node": ">=8.10.0" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/retry-as-promised": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1085,6 +1936,27 @@ } } }, + "node_modules/sequelize-cli": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.6.0.tgz", + "integrity": "sha512-FwTClhGRvXKanFRHMZbgfXOBV8UC2B3VkE0WOdW1n39/36PF4lWyurF95f246une/V4eaO3a7/Ywvy++3r+Jmg==", + "dependencies": { + "cli-color": "^2.0.3", + "fs-extra": "^9.1.0", + "js-beautify": "^1.14.5", + "lodash": "^4.17.21", + "resolve": "^1.22.1", + "umzug": "^2.3.0", + "yargs": "^16.2.0" + }, + "bin": { + "sequelize": "lib/sequelize", + "sequelize-cli": "lib/sequelize" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/sequelize-pool": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", @@ -1128,6 +2000,11 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -1146,6 +2023,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -1183,6 +2070,38 @@ "node": ">= 0.8" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -1195,6 +2114,42 @@ "node": ">=4" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", + "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1247,6 +2202,16 @@ "node": "*" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1259,12 +2224,31 @@ "node": ">= 0.6" } }, + "node_modules/umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "dependencies": { + "bluebird": "^3.7.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -1273,6 +2257,11 @@ "node": ">= 0.8" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -1305,6 +2294,28 @@ "node": ">= 0.8" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/wkx": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", @@ -1313,10 +2324,64 @@ "@types/node": "*" } }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } } } } diff --git a/package.json b/package.json index 924c772..6e42771 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,14 @@ }, "homepage": "https://github.com/aashutoshPanda/News-Aggregator-API#readme", "dependencies": { + "bcrypt": "^5.1.0", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", + "jsonwebtoken": "^9.0.0", "mysql2": "^3.3.2", - "sequelize": "^6.31.1" + "sequelize": "^6.31.1", + "sequelize-cli": "^6.6.0" }, "devDependencies": { "nodemon": "^2.0.22", diff --git a/src/controllers/auth.js b/src/controllers/auth.js index 90c4f28..8edbfae 100644 --- a/src/controllers/auth.js +++ b/src/controllers/auth.js @@ -1,11 +1,34 @@ -import { User } from "../models.js"; - +import { User } from "../models/index.js"; +import bcrypt from "bcrypt"; +import jwt from "jsonwebtoken"; /** - * @desc POST Signup for a user + * @desc POST login for a user */ export const login = async (req, res) => { try { - console.log("IMPLEMENT"); + const { username, password } = req.body; + const user = await User.findOne({ + where: { + username: username, + }, + }); + if (!user) { + return res.status(404).send({ message: "User Not found." }); + } + const passwordIsValid = bcrypt.compareSync(password, user.password); + if (!passwordIsValid) { + return res.status(401).send({ + message: "Invalid Password!", + }); + } + const token = jwt.sign({ id: user.id }, process.env.JWT_SECRET, { + expiresIn: 86400, // 24 hours + }); + return res.status(200).send({ + id: user.id, + username, + token, + }); } catch (err) { console.log(err); return res.status(500).send({ @@ -15,11 +38,15 @@ export const login = async (req, res) => { }; /** - * @desc POST Login for a user + * @desc POST register for a user */ -export const signup = async (req, res) => { +export const register = async (req, res) => { try { - console.log("IMPLEMENT"); + const salt = await bcrypt.genSalt(10); + const { username, password } = req.body; + const encryptedPassword = await bcrypt.hash(password, salt); + const created_user = await User.create({ username, password: encryptedPassword }); + res.status(201).json(created_user); } catch (err) { console.log(err); return res.status(500).send({ diff --git a/src/helpers/sequelize.js b/src/helpers/sequelize.js index 8ed8e03..98861c5 100644 --- a/src/helpers/sequelize.js +++ b/src/helpers/sequelize.js @@ -1,7 +1,13 @@ import { Sequelize } from "sequelize"; +import dotenv from "dotenv"; +dotenv.config({ path: ".env.example" }); + const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER_NAME, process.env.DB_PASSWORD, { host: process.env.DB_HOST, dialect: "mysql", + define: { + timestamps: false, + }, }); sequelize diff --git a/src/middlewares/auth.js b/src/middlewares/auth.js index fc2da28..0c20188 100644 --- a/src/middlewares/auth.js +++ b/src/middlewares/auth.js @@ -2,17 +2,21 @@ * Auth middleware */ import jwt from "jsonwebtoken"; -import User from "../models/user.js"; +import User from "../models/users.js"; export const isAuthenticated = async (req, res, next) => { try { const token = req.header("Authorization").replace("Bearer ", ""); - jwt.verify(token, process.env.API_SECRET, async (err, authData) => { + jwt.verify(token, process.env.JWT_SECRET, async (err, authData) => { if (err) { console.log("Error from auth middleware", err); res.sendStatus(403); } else { - const user = await User.findById(authData.id); + const user = await User.findOne({ + where: { + id: authData.id, + }, + }); if (!user) { console.log("Error from auth middleware", err); res.sendStatus(403); From f9a79e4210fd2a026750a1515f5fc6c0d25060d9 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 18:54:14 +0530 Subject: [PATCH 12/32] ADD: example query in readme --- README.md | 2 ++ readme-assets/example-query.png | Bin 0 -> 133028 bytes sql_commands.txt | 9 +++++++++ 3 files changed, 11 insertions(+) create mode 100644 readme-assets/example-query.png diff --git a/README.md b/README.md index 7b48431..c43087e 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,5 @@ SQL - https://www.db-fiddle.com/f/dEAQ4vjNCD1ZzeaPUu3CN4/7 This repository contains the code for a movie ticket booking API. The API allows users to select a theatre in the city and see the dates of the next 7 days. Users can then click on any date to see all the movies in that theatre on that given date. Movies are displayed with details of all the showtimes. + +![example-query](./readme-assets/example-query.png) diff --git a/readme-assets/example-query.png b/readme-assets/example-query.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc4cc7286c82fbeaa5d21475cebbc856687f953 GIT binary patch literal 133028 zcmcG$byQnhyFN-wp?HfHm*VaYp+$>Bf#UA&1W!wgLny9+7IzEo?(Xg`!QC!p`#F@z`?d1PSr^%7~uT zcLEm)4Hp%AGZ&ztlPR3JoxQCov$L_2si~c_g}uuWd^6y= z5bGa>#GFhGT`cYG$W<+EP2to{P3%maO$|9E5L;3Q|`5#Z(!;NT@!k}o4d zZ-s*+hm#insOp|_u;`(IJ4w`Xa$E!Ja!Lj!I>2OirEMIY? zw3uhxVlWUJa=<2QqM#@$z2~YZY!ZlQf7E|&1R>TH>UdxKn|BjUoxjrY#d7$f_|71$ zE(3*=bnQA2evnkDSHPNX%50r@{G|Fat|igj@R{P<_LD1Nw~nzVfQ zM<4%r*ZDLXEVSHe2=A67 zQFK5>!Ht@I@$iT;yTwdl$g3uwZzHbqt7e3DMUkUJc*y$eLiK9Gi!*Gcp!vOm8Gv*T zX6>8w_gw6P-6-iym!W4XSVFbI9ZPt2dIwkxo=SLyCEsvMoIJ8t47CWj9-S zqZ=0D=7yO1?Sd)R4@2V3FX6fM=}U zKD>J}F^#XvJRRtSeskVe+|05#?gdbjsW3b^YWHBbqFe^<5B`Gbmpjb*4(V|McGFFV zOh6?)GLOVN9376-bQmtC77i*t14QFz_wPazPxAUw?YlVV?-;Cttr|uKQfr9bPxF>K3gjpl2vOUvd%zKlyfeGKQ(@P9smegjC{c99J3@V`D0s&aX$?)4VU1*QjtR z3U8SCJ=I&Cxkh=@jL3r6lu^v!)^sB8IOjt0sYdd+*_VZ~YoBvo#``*Ko`KF|JjxJs z0e9d{dy(!^9w;9s=qlyQpR;rJ<>~qJ^rRroDwv4F2nR#m>$o308x&(ZLy@2d5>q6@ zJC1;~(M#Roo=LTgomIO~-7ZrjdrX28jVQ|HQjNQWGu^Jw4{&R{zc+7{iYd}$vTygt zgd4Y2bT^Y!p^XEnWWI*g>b@cQ3)Zew$8;7r#oSJ|9?2d)rpB&~_jOa@$vy8L`^a&}*(t zEjt2lO>>jFA32-PH|)wKI;WU?kgsV2ecMeF1o9)R$**}TA^kQV!ou^8rQ$@%q}R)y za=cQm?})Y$KIa87_pT`m&RbR7EQJql!ygBq8um{;PI#b+ebGAA#LnWAZ`Nu(?768H(;z`5(L>7ioj^q*_zauZE!jJGn_X%KQ5Qf?8Cjz zczMiM8D}5BlUb99Y?m)&kXVxeY^!xalET2r@Tl+GImfkFs^SB94Sh~GO1$evW;E9$ z;S5}cS6m@E?7sw=oti9yX3r`3@ggdxt(b~uH_1hyENNK@Sjsc4XvO^ zSYWM~STy3#=H8Z{&~RmJUR&8x=e28cZDsprm z(12Z51MIRo_Hfw|XLu%gJY2P;`|$)sI2|YO4|ygk{!Op_V2ct>AVa9vVLm;qbAQ~U z%f=Vb5U>00{uqqfu^&QboY`?zs;a^sL%0Z0V6f3-FW)p^-0~kXsv90`Hk7ia0HDPJN*E~ z2P@1%*fH}*k|txbW$}f&E82U|GRI9|#B4PP@v%&b&z&lETDw68;emdL2(BQB%VO=r zzzh4fu`%_lwjT&`7NBpY`e<#OOvsS$*eq(FYaPyDG@)ZF$(v00CjFzc%j{b#)Sroy zINc>g2&WiA%2~h62UlB2?75MCJW5=zIe2`xA75-Zzr=<$(D=IzzrVI+e`mfr!*=k& z2FFgN56MOt2qi3MCty#B$3x!FI)b|s~D_!Z2^!LK193pqrpVKwT z0LiDQ%TyKS9U=V|Bu`vwq_Ulmwk$eJQ1rUB;%T$ua{5>t*Am^$8<3p`Sh7e)N%b4f zBv^8MAz?qM3zoO8fuEbv71)m7V8{<95je{*e=ki6Bd))}kYCR0T*$~7JK7jkPuHv` zT$pSAVI2HxY2v4`MlrfPREfxHhPC2AAFrQXp5ML>mIOvl7(y?)`-SIGrEk*qwkkN> zOT^goE>884J>iKe8!tG|GJ-Wbkv-8kX-_W(ak+;52;2W*yxFMCo{O(?V|*Eq9?3ub zNvkizQXAoT!6ffgX#J#IE|L4EHS>6()v;SQ%JtAC6`(H!1oo9!ezRBFGp&EOIEYub zG~$v{jW1jIJK!So7FuCT#M5++eCF$eex!(4%0Z5<#NMIXI6b80q~~bW_8NX!Qul-z znw?53K!MH}_?gZye(X$ky^3iyZ;6%Z<2W#}fi>>rlwu+KaO?DNt%1)04gSjj`JSoz zqfiMumXl5;QfSKhX$*J_VzyFM$Q|%dpuz6MvN~<2oGV8il3JhnaL;-Z?Q>?aQ!+j! zlAQ&Sua1~%Vh!DJ=GiWppFZmD+wf3oul&(@dp@vpH264Uoj*_=ROd}nsYf5OPu^Ac zYO{Yg=#e!f=5v;VYO(WWexy)iRoU0O@9JF^kAkbi6!UOVw|JBb`+Q#fT{|plj%5f> zHTW1$J}DKN_9vd5%Y0;Z;_7+q=#12kMo-O|3z`t)#5ITZ@7Sc>e7Lc`Y$qZPpzk5h z+P6NRW1XRb>}Fczd2l?Py9tO2TQNedp%O(}rFBEe4a+4&5YS@Z$jthIR#m_S<05j% zm}jkPvT=0aX~z0h7+*yMSdgduq`LAz$US)e4XaiSx=6v6c>eK|v5ucDl|NsNP-8+mA9D(hNreUDJ3yyWa!>q?c2dG@ z4%gP3=Vyb-)}bq8To-Gm$mRO2?R;V<=@6)Fuhgd=@_hoR-~|}MHDCl7>8{%Y2o~cu z10SgvF5klL>`&$EtMk|oaXwo9@`CAVP0F^M1;Td}SoE=X_WIdcL_Hrq{l33{!@in2 z9l-L-2R+bTr?E=P37y1LJh=KY9^N}w2O~B5ok}94Tpa6%bWFTw=iYVf;=-nJX3}+Y z&5AK5Vp`(pLjr{Vz><%vGF< zV!3@FJQXe{rkzdhs%ov)SM*&NcJhOHk112vB+H+tiITu)c!ELN`RJ8}+dS+~5Xxe4 z;yf!9$L)3`k>p;us;!h}`JKz~gT-XcuUvNhpHs&k+OR6T<7*vxx#ISoPY`_17|1+E z7TKHc#2)+xOoPjGL$|T)X1bKUj@(4I=Q&=tfCaNvQnMJ^H2R6J0F`+|;EHt}P_uv2 zD=?OlUkkFKxW#obZTavB4&IkTpLS*cRdm$<{>EnLhH?MwSDbaQd(p+1l3CG1<1C36 zyXMw~jxZ1*1wx;t9t7iqh`gKOZ1%P1;fv3zIKhg4kM?0zsG+L2QOX>SEkBozPN2m? zT;gMn3LK@fcJgv&!9r`@Hlz;;S;NqDlS6YSn;B+e7+CD6L-T5o@uAW`>|TcuasRjY&Sfo5N9^ zn8Zn0ua=%3J4 zu`}U-CC>tKCG-y8Y4&%X^<#|__tiTSCwQ>btgqJX?>F?E@u<(9C|VRBad4}VGNR8j z1Z~q4QR&sjNApaG7FTkNsWke?_T3h4ScIYEio*my>{LHxNI>{gF2|=vZSwZfZKqvp zXIkKyCIjLGtAvVEhOreVeGLh;n)(-v^L*hr2}-0K=#{0=bJpk*cnywQJU41?$=j(P zN!en!&0(ay=c;!uFZ6jibA)a}i`zmc80}j?TXw}7?r5J+X^nMB^+Ai2(}{$0v|HbB zO%|_W(@r(}D?56_$a+lEQnwzL!jiprW(ua2%$CpI)hI9cmtSJ=RoRABE+v^U%a(JO zy`(Po$96a{!DH~&~2acM9d4$K%kTiJv8(@u;$5tSn~>8cz+K$p`9%= zd9yw6xMfB~e}I(S3}~A&B}rU8VU89NX?vo%UVJjj?sDcQ|GBcEgU6qIfzPVHVUOFDN=R8n)&G5 z<91EHzS$Hqn^+W2tlS8QJ57iQypz~MQ7NnA)M@Cc43lSNA1oJ& zJH0l#ed|1oa3!P)Y{c~(`y|UbswX+3ZGJZOnt5}yyy&I7UAc(|=|xzFY$$Q{Z#<_W z*N7&R!KI=A+s2YvOyL{57o`lZz7!Rd&#=DAh$DusTu2Uq&-jh=jQuVzOjLlO+unMM z!K8GxS{w(e$%1U%d~md3DL!HevCA2v@*r<71oak_XyHb0lu>7Fl`5 zUuVd?W#6-+qSF0zm2Gf84b_nBk4+rT#IiipjqFXXiF?_ZwwEg0S5gMe=m6?|;yL0U zeV`o7uQw3;f_(0t%L{fIVT>&+ZnWIt2{%6Ra9E9zZ-8}6N%c8nE7tU z2Ao>Ve)%ZGtJxql>u$B4<*#W=H?74#Xs)}7$5lemmCr&s>jHz(7Utf}Vr4gtr#OiO zI4FyOHTOKl&RikXntS-groz?s(djdW+rQvR_fpD69M@A1sxI(_e{ zvJR~Y(8pqkqt>LsC8UMXbIx}pgac%=VpSE0+nbiM72)yVI@h#sDj|Dk;te40Z(@~A zYj)~gutpyD@iem&dHv9+)mJF#kA-NsI$S106(a4KzQh&HqXUzYqnnuaKPiaYT&;cxN} zX50S8N15FEUS>aNnvt@{!WYP<5 zGrI2G%!Hv-fQKFW4<`Naqtf88v@8d&dAh1V^C`o4U2x)bKy5#J|AAmW|D6Pn>vWqD zznQ`!G&DYLp>*P1rO-SpY;0AjlBJS}kWRUt0MdP);d?C;z>MNsD*M66s?OxbK%`Os z%BEPF$%Tb2z{G4SZX*vES)Dr{ZjT|&%zyabc&d-IUU215k7>$R_3 zzc+PRV1@p!_Q2b_4GeBocF@&{QabBt*jTY)6=K7`NWNqOB=Nv;JW*aBD%4{ZXLviS=JLR$N zU?}IN*yj`+2Y4SUA7i2bvS;a+(?a@|Q?&c2An)c|6R}g^Sw%+JUrlme!}@TfFz~#D z`jgjx&%z_(4?#VqFaWnu%EE-6*06|obP^-;I2kA1Dm%NM(TJjg>)#HPkpYZ{>IBcQ z3d)G_CnKaCvGI>P-&8>BJ3Ecv_1q)xbG_V>H#A)gc1dbZ7^*ID>N;d}vwcHNu}eNq zMAGx1${B)g8IaCJEEJroCSz3eaD1sh1C>&%XV;!k67#5JHURq6TKdc2IwmO8HlYV zl^3s{qhRS(IA8VqW7(k2fRSC9&bVrc4St*ERqrR_>^Hx+)Ab278{P&apLFOVuN?C` zFZsD*HR@xQu2Lm%Vywt48Fs~%Wbx*#?~6=H=hXq~CBj=q#xDGz`nNxh z;-qVaZbMh3qO^>X8t==~mbB^it+8YwsA1Ey{52v~%i%f08y?;U(H&XQyVWYWSETH` zP9C!wO%Asqs}I@i_9^IH+K%FgWXAS8gXf->^by&%xE0PSh_iau(hW|Hpv362XFvz_ z{z7cAuqSbSW$#D2ci-r`Mn!QO*)WxkPc*f_1~Go-KiH1=(iFj~TZOcaBB+7Izd9!D zyeoa->N;dow0IH^wf&fZDbwZ5@`IV}HyN|{CyTOIuo~jECJ05I?||hDB-T*ts^Vpp zzJ*!7k81d`DeV4pKhXOII47Hp^gZ)Z9{aNT zWdmWT@Fq@pUi1jm9CzQV_Gocb(!b@Mv^+{JRVa@m5Etu%i*+Mf43J7tw2 zheyG@W9Fe_tM$&k6WVQYBs%%tm&r~r3PNkl3`om*8)YoI0UF-$&1d{33$5~AFr*sl zL^YJF8R9?EmD}fwe;CEH`_`~9HJ%UGy`Q+yES?%gj6F=)>k&y5B_bMhPa~y*h5RoO z@lTa;Z8zO(4B;R0<-cUdj%ZqV#D9JHhdTN51v~|*;J-D+Ieo(Sr|ch znxnAWpsh-qL43ASn}yK7$&qmHX-)C|>dY_~0ow;D|5eahv`cfwiOFXqTI1>QdM!`h zw6&Sw8}`a`&J<+>Y zynzW9Rkjzz&J7v9i54}Cw~AqfeacEwu(09z_mCk`47}&eG}ze7S3Y;B?krw3i36)^ zj9pp_{h>`6_LQc8*K8#@Y9@WNVPLUA7hSEm7g55A4^wF1?1cw^nYr-L%oibQ>?yhj z$dJuGpmubrt1ozqQi{{jn%do!T>E|4T!C3l58m`8F+*}*tDi%!Z_nV2+z(er)n308gP|A#)-yLxP8 zx9)47pY?AU%_yH5HBR#{eP1XU1@`shXvoB&kYCz8M!DlUm1l!C`dzm`#wS9

@Oe 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%0Avi1zYH{THdRqPmx$L&EHw8{c76^mhe3 z%t)Zvo5LQ_*?1?^q54Q$!<6+SSa0hA9Sb%e)zjl`8Lo_KFM5*Mx=_?<5$NQt;*>=ad1Jxzx0Gh+pL7QXCIt#!`QiMJ9K#?T(wE#rwwkfkNPpY(9} zk9!3LsM7H`c~j-;IbKl$E-)OZtZ;axEK&SMB7h11VtpQMrYn^zc;lO5^44!Y)ECS7 zdwrfWRnjLM8N>?{d6pD5Un#-k(=BE=TV3Ygi~S|wqV>)L@uY~ve{l*ey-w_l5*5v9 z-TmV76kRlc;K>^>(Bk#n?K}(4_^WhANaE zH{f#n#d=C!ZA)3c-+9Y9-{&5mbPE3;xROu*7i7r4aVO+dt1-7zB7W{KOp6WNlNCy_ zMny!%iCMG&mIxSukVnrk2OEAR1C4h0ySQz4Dy>3lhz~5Wi+a%%qXzqb(2)6m63{+% zmhr0F*^$nvz^BgN(cIEZ{gZ%}p)YxG#shAO-HHUxDiBCV@20AeQcBJcR{eFmQqXR7 zF&D8Dj8#++;T?6h(fhR90okS5w>`4mXl7~H`+cQJnKce>1loQ>D*>%0jm1CM@1qV} zJntR}Z^+_|M&kYg_wEHX=s)+%U(p-m>fm+RjW%^youb5+JIwxrj<_lHOURot^K7iX zk`a**{#4W?L%H_R(D{XiadB=$Vn)?yD2s90Vqir~?^%?PaEmqP} z_2vf-h4TC(?V#$2fZCgs+7MkbOtvudPWgwmzCtmf%gR#Sre7TO-|Cx%*bzJ+dIpI;aLv+ac3;Yoh6 zkA!vw`x~q64ueQPwlWjK=Iyp~hQnBez~PT9|9vs=)27=~`rXPuNt%gG3CZb!{eky< zYsdZ@!8Zbk{Offj6*2yu+yh=Op7R?@Li9#J($DIbN4M1-KUcz9tkX!{h_Kg}!>_XX z^cgOiy_XmK?r$mCd6aj-V1M!s89l%2PTq@+NsL*^8a?d4s0cbR6%lpwMa?D?@F%Hs zr3EeiIkFB$sM@__xf0>m)&niV-OqgMRMbMreb)5a*vzVh7Ucc@sDlMACkvvtG+-@` zRPb1wyZ1i{XXU1xPkqqE;&QmzOZ66RWKUnj%_XQJUO2Ux^F>0!DHDv%^^GU)W*;b3 ztBjr}WFsz8_uWz>h_X1vS{&~0RZpM2!(-8}I{@LBj_D+7UmeZ7(Z!JNB&VIWnVUS< zd#FIEh8RiLQYVUBE!zSj6&v1O=j;7DczZ<|ApyQH%GRH`#rO@A4RX?o#4J z$*Ghh&i{5icK#m_2)6^>YSc}0^W}=%9A$!PLSCji_U`aIRwGM+PU!wgM#~mYQkp|^ zM2R7Miz96F2|ZOdjvVEBC&pbsGt16Hgz!*wf1)xLAU?Koo0HiLw;kUH^RohgdYiayl?}j@33=KpE=z=t&Y3$a?@S}%;DfTypYrGm$T3RxbeaY?Z#_}B%)?vPM^p1$v zv+L5h&QLf|Q4VXpgEbH#I1$rr_+$<|Gc8XmUI;0|q@%-o(N|`s6$3h&7f8|Vi*eiFS2g?FeyRZ2ZT4nfV ztSRFN1NTpre7lLD#K@AV1}YVyZ`WeY?~AvogIA%Vk(@QD3VK-PWc5b>FSY-nuMY@` zIc~9>8LrvAePwKD)Qv^PSD!OlkRx=j3`!R)e*t>pl_K7MdWGQMzD*>lB+JxlK2Zn( z#rYFTB=G;2vVR{f6m#x$#yD-Ze4?1IjEPeW)v1qqfZn~ezLg_NWjQxAS&-yh-rCd! z)roJKBgd?(tXY*1*Y%-->xiE8QNi}9Z7(LM45Rm1+VD*kHmh$>ez)RxA;UQHpf1m7 zREwP1{aSG~o}A5kE;hqN_8wR!?0rQ~!tkaqZ8Odw7aqCKDPd2-;eWwy5%e zmYl(vWOUr*f5TINFMRFIFF7`6(FFt%3(p$=xMkGF55aC3pev&o1PJM?wu^XyRe4c@ z%*lrbo7rU{mA+br+wb1YtRP^W{#cCU#DsRQbtQUyTx)X<1s)hkJi+2e?kfT|%TtgW ztHUKQQtKe^6j1Q^#9db!U2)x&m9#jHASs>PWq7nit&?TiwUp)w#y?k+OR*N-0Isb^ z(uWeo)cAlE4#Q^`OL?u8BlO(AbVaZmE5lRWjnmkxQ^pHC_uHmabRA}fx3%(_YCDk1hj zkm}N5j(5?=c`__QVX7Pa-4QXZJk8XX8N>L0sy3?Aa=XE{Js9D z{y*?Z(!6XmB%-6tnO~)s(Q`yztMc9CsU^#e(^KXqBeiY@S)LD4PhFw~F1%9{z&yP_ z53%070vZ`Y{exVpwr-DSogUZ*5%+cewF0;lkk{E?2?VY}9nm$O5&hYD?6;jOx zR?~|n#+n9$q0l;QoIARR`@q6eGlzRo;1-$5gH6ER{Tb9qnvU;q)Dg*}-gHo8mqT>b z;KvRys-4SzDLa|#x5nAUz+A+Fl2O+oG{(cMZwJ~6-aV2@ZqyjV71uq1>4cH-pL#Kc zJWi29Qe95`otfQ@BjfnMr(v?y=&C^F21*kII5`+(0!QzU9W~&M6OC{_K26ET9tCAa zmXUhSkZ9Jfng6+10CCb3?Y>um9N;H!3B&`si_v}=EGcAkviDTAOG@`n<)Xu$Ue>4! z@)xt#ZmfgZm~}&s>S4X&CAh;uY20?o;4R*`gPEMRftyYbDylgvc5L2S9}3k z>Cyt0{eFGB4qz?Z_bD`^|0!so=Vf1F<ABd6)#4RCf%0XNTvk)hN58-jjJPiTtQqrU)(*P)_Z)TTwad4xl{st z44hY%J+1=M`9ma>F&Zu13Y{+mZDIf7 zc=h;z`)Ex$mh7mDoce|f+qtI9?SW2YQFJ&l`sdrb+fo*Dmh|Ak`dSeR7tF)lXhe#g zt;*AVdJywAgPX)+ub41;1gS#ikKG;E$92!n`k`{u@uOX1o)XFzNbfd`L1z!W{VMNp zgccX3R2U%~CGDF@aIec|K9L^#ei{C`f%coKmsSzJ-ooMdwp9O<{f_8B@H@Z?wLvJwkhgQVNM9AU)@`fE8U6)bJmai1~&Q#0M|6 z9GDWZyBxB^M)e*vzJMaYrHA<`Urn!a>r7KmUXUlklo%%->3ncoOYDTB4DkY4)kpR> z-BE=51cizob$GLYe!to|Q1};xEa&2MMNOapQL1fLLYQtP0K^Elne?`Ei)Sg(wOaEa z29(7sGrLPF6t)>V6sac9JbYM_H>vcU;Lv(ttS^7XAQ+85Ap3fA;2?QCaoleD=(*$8 z)?6NFPk(E`^&Cf55Adh)q({~{(^>|pLP(Z5H|JSgQblJZ0(sdO!03bso^y22hLfqC zD>wTF?O;tW4wkx{67aj0@paT=Ij!YVSaw>GkLE=0R^?yfB2(vyr@l+Edd~^o-W}lN z8z7r`VL{QF&jfdLesr`RGwtX(>5JoIa@CQs#d0Fm%A4~mAIcgLn&tSA#$5}ScWST_ zwuQmkS?f~)%Uh1*N_z`opL=!)K~+18>3J&4K}KpTikHW<>ltLO)NtI6OXe zYFfAZ6y^!YZl~Q22J-{etN&l)Ytoy~4fNwX4y813aLY(Npm!1x*f(n{lhU|>EThWa zKEhW1E8PM73Nh#KI$F*`>5BQ1eXy7=&m;s`bF%bnFM6V5bV`{ojFim3K>SKN4ocz^ zE;e5{u!Grn1}vVL^Ee3%SLZkVI^n#3xQ|ck@*2jal=0+H#2r>5U;3l8y7C#6qv%Ik zxayc=nd&I2ZxCLa@Iz1#;z8A`cM}p>03V)IRr&`r`+)o>N~^<0XGj!k9pkmrE6x{i zYS|steLMM{b)#PI*V>E#GHVnWHhaIW$Mq=aj;l6@h`zMsl((~k3O-tJJ29^NHUaKW zRVA?|UlXxGUA@b@Dx^pUt0z#a75b|{UcE+cSk*{RP&kkxKI-<`%qrPzXx3fv+~ z04;^jZc#PFX?YO33SzhG#doiVuN-&;hE9$+Zy{_Z2Z7~Wr(@KzK^F7hzyAnLS*39U zO~PMygiKm~+3@rZ0s1-{UKIF&I+NaOsW0IL!UmKp4Fh_%^fd+ZDQzNaC9b>x|AV-@ z4yr3^(*>V|;FjR-?hXeH?(QDk-Q_^=;O_43?!n#N-Q6AL*rZ&!EU>A5pi^CwUR zoMLa*K5PBn=aJ+z>5P@){@(F$c_r3KqfTFU*@134yCumPM;~qP>cZluI6N zA}fcC#*WeDWBZBKuF-|b>5>2Rp;B*tYH!kwC#X$ZfX=$?EjGO;+%(+jN&qHdes?4g|C_nY-c^?_k;arHECm!gRb`gK_U6K zD+~Uvd0fa(*LiP5iAj79ExUD+3GI+41qbFE&eGuf+Z#?wf0Jd_D;kB>lM`@D_0??X z$h!~nJd6IO=J1wwYdk;}DT^1$WsSxmQQpO8DeTo`rB5)%h`dnc8Dhs4{f2@e9?F87 z&qw{1^sW-w9L@?MJ^=+Q*}l7)Lhpq)2AR>xXc>Z6J051BpXng=#zpc$X6*1gw{8d* zg-zO2MKm+%P^jeYP~fbd`btXEC_d2zT`8g<;x_>dPZ;l!P-#-El(s?|_{o`Rl`y{3 zBQsI#1^q;zlmogM_^{hcBHD;1dG%t8vIC(!YB&lb0i4EvS<;;vl<;6q%%xvq8fdPu3BsQT zK3}U}e0Hp{H`z$wT9UFq$oYFO2!C;sxXu|>Zw!&pKAOtL@ERE3p$A3CFj94cB4mnY z!`IKkr^({xUGl;6!eG zfhAomi2P`+Fc0!NNnDL@D6&fU%UBwrXEdx^pvhISVRs&6+z(bA8V>5boRy zjHPBzTXnnUZoe6fC$|u+4SjN`l$2?$tAA+ZZ*8zJLr(@hOSSCA#hRq=BZo*>nJUjj zcDlPrPnrFFnf+n7gi3F1sCy_`2=Js@Mk0HNOl@?$c|tV?5$ zmaTnM)P4><-Jw`&77Sj7TjNee7oh}K9vcKk+CXzn)(p7LLG=rMS#9Q$P6z-yt&t3dL<8TE6CzTkp+`+95 zJhAlQ3ZmQYtKpAE8w?KaB;H&BQHJZkm|$w8x{p~;1`g$s7T%C3Hr}{I*q{$?eOh3wf)i@bf& zjTEKmzdcwX%;w-_?h|oK1O{DzL?nhL8=}G8LunHB2PAnrs?rHx;CCl{hpZLo^6_X0 z=v@2wVl~~g8Dk6kp5OU31q*_dr76Qt6rK@Cd(%uV=)7|cm7f~Z&nz6<$TIwZ(2;`?z@)wG@H}7TdBMo{`SPpF~^@D3@+7PY-?LA>hbe^C}~s zv_BX|MV2JWh{-pV>u5-Hyb%5MnU|C-mn0^lW=lBOIgA8Iew#q%scB-`gVSiTr*1FEtS4C zLAGki7iA048&0NQqO!Uj2R5{aiZ-t#%MvE)b+k~mh~_^NuK7yPyB_(xBB-WP!8&yd z9&DJ^Z+}E;FJ!GBn$`6L2drEa-oj$;4PH{#M3F{T=zC$F#TbAr(5$LaJ&*FO)~P@Q zoue`+FRHGXdP82W#fsXT+r^|jm;N0SBBQDnkL1=`*x`is6u!g1=ZV8u_9#gyw2_Yl&&1J>*{Yb~%+q0BgIAiqs zT1${Otv)WA?I3yS+U6ZTARt!r`e8pnieoJuyf8;@WVp3{aO&5#^gxyKgDp)Zjp6Jj z*jLloev&{WBptucc!RNBRvN|EE}s$pHa4qY^}a-0=%k=C>L>m# zdJHiUjQDbyAYS0({5+1|qnNL?uF=S^cuS{IcLj?nLWGBAKg=gX?pzVivC-^&%4~Q3 zL!fGd?vth$qXHvRY?!GfU+U+0TE_WM^5GAJaafV7m*ZIjN~Nz>8T}6`d`#Al0xHt< zfyYKHdb|sO9qb1Yxts|0f{Hh-=VdhV@r`hU4H=`ktJx74Cz9HI5j|6dFWZ^XNtF5u z4>$gk5-!ESOh9=Kn3CmbzGk2Y5<_2X9Mp8IdqTX{q*PS; zH89vfv0r=&LMsyc z9ZvFiE-e#=+1=myrQY>TC6HSII<8ORdTQYYL#~>n&sF-?0KbAhb#RzxVjWHd`K{S* zKGGUUqLubq4~MsREcwo?1dgNkaxPznhtxB!J7FZY$rO{?0aH?mCO{%6Ma7o4GDxUY zEQhpL3iSmPMLO$Exyu)JSx&4Elu=X&2AlJ%xw9j=UL;u==)lrCP}7k z_S7$Wd=QkRW(JzI^;8$$94}8xolZi)1GTXGV+ za9q{qhB1E_EoHHJk$<01zFE|9LF4h(m8?|lT3x#)E{u3V%8l5G9%041KN|A&6J!(% zAw1l7o4?f>mnoF$U^@B^nV9)=laJ@;3Ju-fm8FZ(ocSVEx2@|X_dzfa-b+;70;-d9 zS&@|Wx~wg3?M<0`g#)hjN_dZB*i%4Hc&&eLlHO!QtB}s-Rkf`L(R1AaU)~(Gi>rWX z+!R7_fd1zm%I_v%V0=58-EOdi7r@>#gvM|%w=_w2{$@(R5#IE?lxaCb!rGY-6yH(; z8m85ljo%O}@SM&5yvpnAQXqbo$Zm7>1K=aO9A~&u@iSsMvU|61=vKWsSg*ibhx@+U zY@R~pT!I%uG=`OTqCyLNhlkLw%rFZV{ z0a(E?>7Dty?F0zYJR--?!XXQmK;LP6ZwXvU3XelA@zm+IJeB` zxf0}kipo8r!XKrL2DZZuf{p|b?@ZB|4Hj$)~^hf8>CGxJBV0W%I^D< zOecY;iEI+1RD2P&!nKfb>&yL_@z zo&>bZ{Ic}sZaIbBYxv*K!_cZn{MYd-?^nEQ|26r6{NItEq!z(WljlbGzI?=gK|<@e zG2iPUW%Q5P?}Vj@{z-@oMbwj>nN1k-(gD-03Bm*vIfm*C42K;si6)&>9gD5s$Zd98 zLEh)?88KgU#Gc}&7zX5h%vr;EKGRtyYl%vgpnQHGd8P{4IR=$9sBUcmLEdL6Xzn{= z6Kd+~!E++6dJ0{9URT!lTXQR7{TPAXmw8o?_kn74^?*6XM9b&UN~n~|rl^<1elIpNQGPe(-y=K{ft{gi0X~?TEZ+1bI>3eMq!)lmUn{jgx`}o5;96EwHQ3ITK zc&!wW_af|#8~3=dT{EJYQ#9s4VLe+y-RoQ4N_eU|rj~EhR~}AHHqe}b0j4KrDugbX zjM};EN#r528?@O$JL+Eqlfs!9DEI1aJlPzVn&yZ$M;NHN4*NJ{yELQi59hz-lBx>|STeo3|a zFpMWRr}ry0PO_fgbh%A=`!gj5+0Q=2AzYp}?g?4pHkPILoncwOzEeNGl6`@GMG;Vs z`5c~n>Xhhrb5bbXA!$68Y`+#8N**Y;^h0NVks(ATP2u0Yv5v)*-Oq8XkNrpFnkvjUX&tx{Cu_gdfHze&h|DVx!h2`N&WC|`9mts(U|lZzg&dSNB#g{nM7E< zZcP_4l_ldYW6OmlZxu~Qe zS2~=Py9pANtFbUfLb$4&6{cHk+AP4l+eIcPQxzNucz&f&Xk_wZ1FkfL%$4?ZWLgm# zLt`Q9u9q@w&0uV#pyzR*^Y`&-XGtYda7Zr_L|appPkmnHDR?W{MXA+#AQ^Vuh*ckt7+ zA~?8lI@!;SE$$mx(b)9BIOUhB+fh%f0372Tf8FLgrC{YXV-_*bG3q5Mv3c=hafuD`RI;V##iO79SQsSDP!-wG;^7n1b?;5)u!wU6gHZ~KW0vg33 zIU*ALUfLQ8t7=V-!2Yg}D(gJR>|u$zbk1PLRye3PTetzixnEySd?cUF4q8^Vc_V`> zCT(w7$j)>nEMYw&z7`oK5cd=g3IuY0f)NZ0k8P^Gwb;J^Cg^)p>3lWaIx?!K#$CG4 zP;|n2DH(0B5c=20e$cbOwfy4pRQVA6Jl(X3>j#~ZPAdeTm9L!oPA!fuWn?$oJZ0&v z{!nrNi<`5r6*Jo=W=@dNS^-M~g@|X04@xzMRzoF?&{>Sc^$@+L`ZBBk8na04qOADb z`VK}X5F72SrIsN`jlly(zExog;{lDxG5%oqCqwb|{cL zfz)AaX{8w3fXrs|u)5T>iH~I4scR%B!fm+o;e5yA;WMJ2zI>?x^qtqQi?x@>r?1GV zdRhw>tnuD>>;0_VxR49=o(t8dsRN%WM$H(^KU-+i*&ij7N4PlG{*>BbcMdfd(i49} zQ9i(DQsj+^{EO;T$YsoRVJ%orMD zu8^iGW;h1_3p%Or>_<0rcSMtP{LN?Y~9)To}xm>&Nb@&C(#{+_k zRvMu3oLt03C(I;XPpZ0-&^f*hc9!1N{eri{Meze~^W)aYov8@spkT&{5et7gj9%f(^KJdgaq#%k}y zYmPEw8Re#;461p+r`d@)PCG5(M63CnEn4GWC{GIzd&1&;$a?`_u|!oDEAag1Ibwv+ z&^Rz&2^SDqZMDt8>51h1K^-&CE_Q7q`*08U><%9ksk?t1-Koa;_Nhw*-Ylwwrak2r zX8{R;-mt%$n1c&P@2o15gTCHyGYV_SJwY+TGV`zG`6O15l%Vu|+bI;%Y$uz(Yoh)T ztY$f0BVEd4;yWf#*&5Vr1*=ic9cZu#ZR|`JZ-y8Hr+rvL2iP-JRQ1Wuli0vhYPJs( zwO8e29}Oi*888X&P$*~%FfWUxIb`t0%IsJjsf&nRY8v^z;9vr1F#mp|vcAd6 zv|~FIhQ?Q6lDZ;14!N=Ap2t;KSz%PC{lxBqZyqwYw_nJ48E=0ByVR^)(NKmNV1*cn zShcyF2L0MHgNcYvjv#|OfS*YFs4pQqT*&?F%ZS6?u@W8DwvIZWgG@WG?ap;)n|%?j zbaXOw-OPqLO?OS<-P#U!ToQ%Xa8%ONJaM$+>Yj7%Ahv$NmS+_*baZ02h`H0hg`qXQ zp#T*hooA-$$6GyH9Jv#$ip*Bi+LX~4HhE+fRMH`+xT_R=dy zolII<;P}zNBeK9={fg~z$^~z{T9vuzMfPn;&-Q9Mjw!gu>H!dTwydw&Oj|Cgy}7%m zb}ONtccg>s6gea5ZD@b64)^NGQc9n!|L|fH_R7KYb&@2KbDQKQ)k`K)1We7FmJre> z%&f*1wo|6KzlX1Yx#K~~`9m|d^1;eTU(%o)--SscM025_XE0*%E2r(b$a4nF*o0gJ zxBG176C`tM3CGJDMPTF6NYUq7_0F;60XsJo06C}_rgpSC!lW5bH32QtI|?t0%F1l1 znUj7ZbMG0p`FT1Ti0T%Hq4Jv4(UX#U+wo^k3j}?haDRRzFDRWXM@VdE-3W*gd0BXG zHEpSe;VSV;;wOx1PF4Fc@@h8NvNC15kQ@zPpopL()allT-9PLz0|Uqb*5?Xwc~_C% zHM^xG_lS67WQ~m*4sml3PA4uTZ)$A|6DAUsLuH)`F?1(vSAr(YBtLNXMoAAq)nqIK zWOMI#=F>&Rl;0DzuSRwfI*~FLnYScKO%BTU5>!IP#aDG#gXqo*tIwo<1ZtQ2D$PO% zW1@W_g&T?QqPSv=#3T2nQuh+`E1|N^bnbFobeH*PO@BAivg^q1Zcy*3g9b?NwFP@- z#$YyI%dLKK$mQ6MSBYbqo4Ao|tyv~rSa%S1(2ZYn{?snPVx}7&W2|htUZX&VoUwEw zpz1V4DO%bB1Jiz7ccJIEqDP*=*V-FUYV@f4(8%Y)`JtcJ%{ni>Uw-(Q%=pk~-9;Lt zCZK{thpGQER5@goe@HHB%=-hrzV|>-`@V`o&nA+*}y0=*# z8r9rf1D`C>jLN_HHo@^$|na<*)LMVv5n5dzb&vF)+) z`yx)se+s-uc!NKn@o^hx8i^G}ykRo_b~GqGaI)%_kS67>6-Qm@xqC=GED<;=p9t{a zjQ~$yQ3P(`wjuM&=Mv){_ifgl5>3nv&LobXmL3u%JDCJb=xbn8$_2GvdPF+8?sHPK zZ3kZ{=FPLIQE%z4We}213SG(2gt|t(U#KETRdS@vR3G6NXSP;7C2F2NyfH8E zpt8kN*j#?0j~uv0H@*pz>dci|A7f>isZ@TCc%su=m-{*AL8pk##n^af)~zIA>F}6g z^g&uyHG9y1SW(7-o}J6FD~;_*VKO?Kvn{m1Q>NqMyYLC!bMj;JYi?()!Pt$Wa<BGz(z%7H@S2;CxJ;FX)u1C~E)irQ2w&+>*S`ekP#eI7U%M3GZ3WE4OSW*co+g(fJ%;UhhA0 z#3fbx5teepbLn3Cl;If`4Kt-ySQLdN$vp%}i25E>nB#5_D++nA+jbqn7|vsIX=dT@ ze(ym>k1j(=zVJG$A=;s!()#!QU9=yksG=|lV0tI)nqV>)5H|dyxE-%tT_YtOnEm5= zRSDXDs#xVsO>wo9aUd}_R8{EpCCW6^6lwNKi0``RqvO86^u;Z>+ds?=I{9pRk$qjG zkjfXI7u>=^f||73gJwIEPwKIK>*u|CVxI!4*w5o=Tdd>meOQQFs(^tsADU-ox3<>f zB%$1Be0i!nQH?MsP#$jbmyIN9%=oU7ypVyy_pYufzn6?gjz(8rE}PV;f(ddAbGjV4 zEEu4`CM@{A%24am?J-+kLpHS4yJI(LH|zowy%w>S+Ts|7(UQHI`BmN=qst<58Ekrr zwBAQg$nDb!Nl=8BDDh3>>N4_0Xsy9F2>4?~W!*+53jrqf0VN3%!g~aS0qH|P8;cAi z&+kxKAtu&7j(jti5i+<(18R@93J@!aj~!<=l^5vFYPw(G-wV_^bDw2_+Af&M1u3E6 zcP$qfp-vs167zaH0-qCym+3}zRR|z&%+pEcRi~9l(t_YSxZw4!TfogkCG0YkkyZtor>XjkSvgG(hxo1wZ8m=sj{-F#!2;=Rrbl^4S8JMR}q!4)%)O2DV-;=TS7vOwL|l z)}!jhTeR@3)h=mGS505XIx|HQv06O&0dG%7^B0B!sJ~hz35GT5i^?FgwwI=IwL&XJ zTj_^EJzcLe#!B92!}*eK9;DLpt>{3Feh0fdubQHwff|H3GH~ zcBJOUDtg`7qpp%tz(kTcm1wQ(RPI!FtQMU8jzSc6;+F{K4manQF#AN&yNeAe^Toi4 zVfM|Lls9$fY7|}T<=#9tOnROKP1W(U7@Lb0(ECFrf8C|N6mYI)%#^p=819dX)Rx_N z;>yT9J`lXJ5?!)5Xu^v2ocOWW9QvqYDw@jKviSK8uUD+(R391_75Co%4>}Sltwe`5 zT^fLIOjb7;+{&IBa32rb?99G)OaZEZsFkS~5L_(<4A5)2Rd6T65~m!HUQbt?KL1_D zq)&4Pgi_-3%YrG#PI(1%)gu$mB;?C{;n4`+x!ou$>5Rq@iwZnL3N7RawFkdLg^+>2 z2l{Xl`Uus3frV8h>5fe|P+;idr-B15973O~g}aB5#U;LqN4sxk{U_ri8u33eK5b|v z|A)pWzY@;EFYpuK;D^{sl(e)~7JY|{!DpMcidCZOeNtoZ7eFcE$i@?$XvQNXWYXMh z^jYT8RP_S7XS>DM+|_v|t3MY_N0-yK>d!HhH=(sJ0Q8#ZiRW39_C`GI7iGeq6L2+Y zkI|rmld4KI4JF2}8|{LZYh0_2o?%mCR=4=`N$JQH`&A>w9H=Ggff2Xt%JY#A z-r(`3obS8+?~Ko7>3?f{SY$osV87-f=uT&Qn#HB2nKn{BG5@1=ird3CrK+h53c()? z)H>B3Tik=F-{}os8$lN|jtn?`X+Snow~}-5B4<{(=1A7VQ4Y%7IUG8AogIh>@jlNH zc|jC!X@gRILPs?GAzsd_U4&!@>Z@GV8l{Me^p}r~E?c#UTF{mXaaV&5-NGAsoW<@OXfcze9j1$W)PFv>_` zAt)1MwF?2iZBvCCbdMBA3vW{<@edIRDvtpBMz;a8(sV8cL!$1e5b!h%x|AGt!!v)?+|1j72$m>6x$wFqeljDV2qM~}; z{lOS5tY1w)9jt@**qfN|^|sC3{sB4-{=f^oVS50O^EUgQ@Sx7mQIYA6=7bQuCd2Gd z#Z%;mL!h#;Sn6ctc|5o#C3P~Hh)|jNM#qT>5EbQuU3R?rAAnksNOIWNWIC!uI?3*^ zQ3qUJBpPs<`g!PW&RblsZk2U{ZWr3ziy@d5rI?-~dRsGGK?|q62~+;t4PCsqEnsr+Ra(%}BZ>S+m2G>gW48A|FnpDY@iYYt;Cb>0Cj^ z*NF6i556=wbfA*|ndXFiF?Rb3c0Q@=1k32lKP|v9g$bQbaN&HE56iISH}D^5or+(B zxfmlm!cPy^%3y)1PT4lKc%vH+VL}&YQs%6o%z8EmlO?w3UKfmkJX7V#)h1Z@oqIlO z$yRcub~@=lJln9s!gsYR3U!kU%77AfQvmM5wWR`&+7c0d;=c%Jt?0B$L%U(R|zN(9bZEjb}KB8wY z>OhUh!K=hUmoiuTDMPc^ZEJg&$4OhGVZyenHV2Njvk39LqDj=k;^zg`#2DD}?xVfq zKUt4kD61ncJz*ifIrhR)nA8nYONz}@w9MRu=aq*_0)#5^?6S9mLPo;0{X zJKm*0!RXMAEP&TsRl0v~!G?Vv`s)QUxOWhL4*LLGE92$?^eYEt+MP*G_0b0ykm_xO z*CUaL>#7iew?B{%vf6o@b3ShMj}9b05t4*li@SP`?CJKfK{7QVjO6kgM?y(tnr$bx zlvE5Os)l!8*1q^^`pJ;wCnu7MfwkYd_wdYxqSuXzP~!XW6uAT=BxO3aUSW8oc5C!L z*K3^yhOxFXh#dSy5rNvu^;~Y zt)Ze+q=_VMeg^NriJWv+op?YF><5D9e1*ZNNasGjowod6;NMG*bp3Lwirs^r4Ro_zi^H|6v;H6}ek zciJb4H)dt1frD4^Mnz;b=hT}(2G5_Qi(r?_X={(P3^946dtD{-LcAxrTCFQ?H9t$(PM`q?q-0uIm zNIZI5kwW8{G+1CQVt2zk4sX^{r^ahVvXH7TL*NNl>E1Cx>4O`OZYw*a*rOS9~$ z<(}{jM=}U$GCO0guDosMW%=iLcQ9v|VvxZQ@;V&}5*x=HoOt9@G-*;O$OjTDL;q{c z6Bm24+tcP>=0&l?_2a6*K&{n-BS967$^7#3mpU0c)=|m9=>Ry#{Fz?J)tl+UjRRJ| z(;T4NFCM3pJ3O<6641J}fwGa;Oy_iI$7X}opE6{jR`BQtmgwhdwfxBfT-_kN5$EKq z??bS!E(1aEfVa#~fojY!>?hb%lcSsNiFlwOS=GLVPQ@K9P45=33j=Xxn91z#%49$t z3#k%4RQtv7J+=1;y$F?ve$4mqGZW^l8q$9EE1{>2F1IcUFWq!^nt+h3v6;v9W6^$i z-NBNhKDqWVve5%h6VIJ>+oEGvgX86i{7Ngk?bkJq`!gjKT-o+AIZ-AHYm`7TQi6BP z;AEUyPR3xNFb0+cg8ob%VzQqtrYvCdmWIB`pT+Gag1wH1;)B#>ujZtX);lMRfbCCk zk4CK8x{wYwCy{9!_L&$?H0;LkM*6dG{bAapmHBi29@_ennSGYdG2RWl(DMEe?cLVv zpAl%~qQ7B_U#_L5VKDoLdxM+X1!lmx9R$~doXEB z#UD$f4T$pS6lsyNkhbdGmCeaVIc#h_a>0# z-PFXWesQZ}+lLDq?LIE=Hq(#Sx{tEa>_6-cv=f7h&3DK50XTfSvHTZ+X#5)_`{(Sm z3kr(2tHRl87XFP2eSph?Py&&An#_3WeF zSua#{R&hznUN|P9gU%oS2?wDpv9o{m{rI9EMx_C248rrLTgMZ=`)=913coPnQPuwj zY`WZABX}c4MFZzvl1o>j`z5V?TSd$MJ>}132}W|D^)T zb>QFHl6*hDxx+(V&UAFeNy6-pzYB+DI(Ph`r$PPKA229rq!3L-x~gu$?i1U1Z7=nA zwBRs-M)bc71#}tuO-Z2T-V^!NIjucJD3O)Y0G5^$uYR%NXZg&z>v>YUKA# zl74GLL}_L`<`F$Cy}ax=5~w-tIsOf~8Y2Df@HP@bBb_KQ{c{q^y}p6}iOwIzaO6KA zAgub7{)|uP4N?_~hv>ORPs1o73axcpoy&CUC^5|_fH%3+4ys8;ch)D*=^q-vpO5{% z{POj%EC&UWj)$P&pPIc}|>N)A&9K){ISlO$s(Gs*nFi>lg zSLEeZcLttXe)DHwN`-y@-cR~brlPSdd+d&-wp8Lso@P9!)LLt5rx2(ZUsE{~n4{{Q8(KJUb7Z7w? zc$Qd-Tkz@BC*cQ~gCnn#R69T8PGu{#aRr_7SFh9yDrafR=7IGD3{_TrRd-x~LvQSb zNsBbw^*;}S$IwecAq{H5IWJ!$aehD1v7!kc1kg>Q_ylmFULFanD-xI2aI|}bB3|oK1HJaes z`KY+wS&%6+ZA~h@D#kC87v>|~!VQkarrKC5du&J7BnvBi8^20J@SE0^F%pUuJvHq- zS>q7|g?=FxiP7l&35CU0YhwAON?JPO{K`Rgs`O3H8wNcC>^Z+kZ6NTEQBRURzj!i) z)gjN7NkcN z*ss?Gr_uzG+fXF&mOv&XT5|mg1%vE9=U)3bsb*fZT??EyJ6xHzdb5AV$ka1##N`f~ zI2*zAE+od53fV7qVWAkFq^S6|SdL)8W>maf*VuTFI(1fTNbx-eaT`rNu3?cDM{sA; zTaA6%PtJ&RSth+VNgKl7iz9F++x&;m-Jkr|dk5`vy37F~RZ|Xktk`>c(uM#Y(Jx9& zBhg#`$lUo9K-k|ezN-Grdh@_5SYgzai?qVZg*kWNbG4IL6Y!EAR?@dcsu z_5nt(7dDz_Clft{>Yw*0InMbxjOVmM6y=nvIsql-pfOIh9zPGcY6lOhVx_Mu8o2~; z>MHbw_-KY&g*Ji8!pLoC_eMv>U*XCvCf&DD`p>KPjb`*-cRn_LA8kYkm~w&CX~8Bs z+-&vNwGL^y<4#i8_r`2`ctMw+AAZF07gT&IotsDPFOMDL@13M05u==(e$L9Yj8n1% z*ITsXm5<4~AJ=3~r-@+}Q&wA!5KdM<0u&%fI(~02y%E!#w_qG##JC*0Sr_UC?B<_l zqqk$i{0bQ?Cw}y-iyZ|IaXo))NfHFIGngwF(9zO$6*YhCJoOV=cG9{y3le-ofmia! z)9Tu;^VaPFMP>wxDjnlf6ka$_Y@xHJfAWh(+8|TOXb{~(-B#K z8!8+9Noi}<(Oo9!sb}e=DW)~KlU#jL?_G%(*c^G~T-%J4ylq;cvz3;RLn88Z6P-}+ zS&zoNUa05+%#)azLo zpc3mmx7wKx5qYh={Zjp9xE{Z^E?HF9z}|kaE>79XLA#)BC>*;6XWbIxVPE5#-e)OM z5|K8r$o5g=@<<}_QJ2=B(eS`09mD6*(r98MpdV5}=Rn+sL>u9f!%xc-5k&S&N7_BY z0y>DC*oBEPFJcu zG}!Qf6FsH6*MR$@CTlL_Z1f^`b99jZ)sdUKCok(iyO^42ajx4Z+u=q>>!yf})w+10 zo5!*#)nWe74h;e^G{+>qa9Q1RBhLYRI~l9LrAU%*Ax8M`m+C^HaqOr&h!KTze~{b0 zCx{u>CAG)dw9e%TJSilhNRo8FP>G_^7_J5XxfRz70KkjL=+927%oZE_P=Ov_`4X!= z>osdSqee{`O#lY&^94EKfIg)OX#3Vb9RZzHGn6zuDsw)SadUKryBC-lM&tjBuGxKm zZDIb3x@k9tZWOL4l|CIyYtry7>&s9Xp{@+R)Jwu$ky01ZO-!HM08fuq*U$b6x8EAZ ztt`BP&7AR)@+p$?8hTbwpAJIN>W;O7r5}*Zj7<7jgI-w5v|r;#e22XL}u>=?`weM|NR4fTiAZba(4rgns3F{IwDq`BcFUdMk$ zWLtE~dD!%Z3PIf6+#J7symWB)T#P2Xu`xYJ($zA0!+{J7@}3CO_09@)OxlxN?WHRI zahWL+tk)NL#8n26xPa9fGYZv?+4y{)=_XxYaaKfvz)9~ z8={RuLy-z@l*T`+6cMiZsQFTNH=cFjWzIwO4_Z^Jsz!~tKPr)=msNA~)KOC!%i>1b ziT?+-h0lQG%#y)78l-=&m<`Tt)_f%qs{Q{1VG24@8Tz&&%bR}>3z-0iH+1Ob!0}Bf zNKZ3yiu`P_0BJV0Ie?Yfe7jQ*!GI6Hzb#ykC8;q2+;4<*01!jiFqW!F`}&RV9w+SW zS0=~zIe$jTMuv0bo;Z8Q9crU`NtySId*$Yav@@{YCUr$~$qbJ4p(=(Pn69HFa?i!E zK+;%vsTy;M2b&cGM8kMh%)RWSy6*l!~5{Yh2jts z{_G;j_qhiLqf5!L zx}9Db(l(Y(FhK~QGkUb8w%dfUJRGH{NBgmTfRkHy?>K8buHZa{9Qz!5*Ek z1gZk3nScAb!BayIIr3GR!jdni+KPsKVuMWff~do4v_PeEg`*NGTelvv7QKP&c47<1 zJ&F4ZMOj%@lztQLE6h#;n_3)|jCw6c1#h^ZxnXbsQa3VdVr&QwDE&{*Kih}NEk-w8 z$kURhQqeP5%MJ9G&w_Ckjzt}?UCbltKY$5Bqtze#{K5XLXYDlP#(RCH4T1GsqS7K} zYqC=G)Mie-RdcS=fUMDc^pD+Caw)E+8Z!*duzGfwx7cNESc=?t%*!}eBjqw0)Njel-*vYjEr^ITYG34wTV}bOX&CZ;;Q+3n35C)Q`xCVl!q*#(P)h|o>3mBS~)enoXAz8jqV%5D6V&COb6r3Mkz`mmxZEP#d zKBe~nT3(#@Wttr>Rw*yuktsCdd?kV}BWj;a0x(A`?)7A+^idQbk&^65(-PXM-hJ@W zVKxEf=(P(ZkuIv^rA0i4k}!F%VnNk11m8$vb73JuhSLwHDSTk>J%)Uw(QRUEgY(TU z)@FLYC+u^65zcOLOl1qZ-%!aj^#Zrcw%Z*ezap_2wg}PL=5}Etca}DoE4OL3+okw8 zUmdt&eh3~TvdE!%p_Qg0zvdR;k4G4z>@ef{4A71Q-K~<7Lg{+%jp>W#H{kG)oJ_lu z5T-MU(wI7eWIFC?2EDq*LoPRV(q?#0DEvohimZfOiM2MpB3|d!$(?wHxuo{%b zEN1M~E86;oxqYrjb`D`=%c|TOiu^+*ypl-9;29SnBB=NJLl~sQ76=8jT;q#snE=!SC zc!--X$MG$L(}USGSOoxld$Js>A@JjprM3~K1nkllT4*U3$q0^sgnw+NC#ae8!6oHG z&KH;Z%ixDJaCo4#W@me4g={an)U!c0$y3>b$z*~)uAL<~o4Eox^*orw)5K{n2p*;z z4C$%FWq*3gS`n^@=Y+!|2t{%ovkb;CNE;SS%biOqp_=>n!6&INsepx{Jaqq0G<@H@@cgf{#my{kC6j5^`uTY`w5Td=- z9S;ScMR+<2em?#bT%ep_JF+7PnNxNbU3X&7mgSX5pIw;OgNKYkEZ;T!CAg5HbUv@9 z8Z!a(W?nu0InD6r?`csj2#u3h%E;lAziwcZcgD%v2GIrS;)hjujFT2L~zAW~KuX zq-M5uNZ60?fx!}tJ*PPcHTB=)?Qvup}c(fzR}Skn+MWB z2|+AY`afG37G(l>mygQ$(+P<++vstMyjxKga&&*046ls6ZPyR+d^#&iY`YL6awoST zS+wY>b`KZ}PAiRxqG?q%E+>-lcX=`JjxN2Iq*+u+f~|4hf?2MKgo{(twIfKcb>3fu z)}_gl1^{att>FU5!XNT+`1_pK0Sowxk<34bi@%4R+Xr583G@mCC*n`UjkUdV+lOxRKtZd~3%=1%;tT^#Va#Fi4?58&VI4&&X?qJ-WF4CG{hJQPAC4yQ9}BU7 zg9AFN3`Sn5d)GV9FF#y7uO1||=;*#pbY4u*n>`^>OCSrj_Jrah6)wWP110lj(Q-BsxKE(uH-)BIg{9fe3b;k$UXFLSkh!QyTQCrzau(cy8k zhcjrLmn&AJqq*}q{$T+EQ5t2n(jqO2qzU&Kvd`iLdkfC-l1`m|+kdD+L~=@rruArH zV~7U~M)(Ou#)8%hAVNg~`X{3>5{htuxHd;AR2Q&_=)vRXd$|bRq0daY7p6>zNf~`C z?bM0RCBY?$2T?p&kyEsdV)6TtpAFXQjnZr)ObTIq7Gs#01&+tSsg?jC?{Ek z70pDP$$g+-7&iTAs_u)h8kHEvK}2`?1scmsXt}tAI&WcWbkaULwZl z0P#2=${QN z0SndMT$gC)$rU5Q=l@znf;RS}uLkxGBN=aIE_~?(D~&8;5tpdoSjN$GJ!CMFxay2s zrievn?0N+m`LT@?Ucp_y-8QP5;3Qu_?$*7?+NI#PuN*9PJkReEsGC3g+~5luEWf#k zc}!M(Ae@l79Iss8zL;Abb;P@@BE!wNaNB~kGi~vdOPO4*Sc$8E-O>2297Opxo=iJ! z`_aPkF7Iz`iCQ9^uI1FXiOCs`3>!si0eOxJ7%Ck@z|6Hy^SLI+N??|lhCq$gLdrJu zbU+YdRa3z@YM{b_dRSgUrEU-jQ^N2=zi$1k$Y=t*@sG4&N=-+xf;vy!;}i=^Ku`T=(Kf+79frRzcst+aDdRP4Gewc*cfQXXqS(~-xF;aVh!FaoC%HR;Hyu=LiCiCwXW z%Nyweqop3lyVXz;T`cIEQDk~?&feX^$>9+uSG!b;EMGxlG`SXSX6S>^13A}I%<_~n zNU!zCro5+?trp7a?|QN+41l-gP9U#;CY>1_nM`x(89h5=WM$Pza)#S$E&LMCoE=&l z`T=_v$7VSwyTP71>=%>csbnY~E>6&(Zz?mh8|>B)qA%9+4nF~TdkAt$a;5kl2So)1 zYu?=B`@Ba@;8wX|6y=vUf>ikmdGOJ~6`yK3Zqi5RZ%5mewCkWVXUW|6PJK@02*{sX zoPGz&QE_Di^M0^J$<+9b?n%vEV2t5atHPnFswtF}&=(Cz#Sn$|>Le7e*P{k(xR2j} z@yUhkcf$?c=OW?o^az$qlCKnyc4C%Xrk)SL*xS4C@5_lm-q3NJkwPFxNd7{?75lS6 zDp)S6LMK(gIOaxOu-+;*uIU(=^;P;ijXQjy5M(x%-j2?F#j6qe9Fnr_x(t8oc^{hW z-H(@5T=yGkV=3eZPXXEci$R}rJzWs!GroD>+am!(pMjE z4lH+pO|Yf2Q)kepm5^ePK^8X~!y;#;k?R#$i&>WmCbwj8P9$CqX-D@t)DaDzI3s9X zLtTM)E<^}$aea*^_N&;>TprikjKDJ^(Z*NE9a+`Vj9xhkpK#q}U z&oSDWr|6OKE`#6q<+2lYUncDI7n9bip93Qt4VRJChT}*P7EZBC(Jw|ahh|D9DoPhD zzGYVUv$b3ly>{#-NJMpw32EpgD%~T`Fiyj;Tjf@F>=xupXsbo}`AuLb;E(z*99&%E zP5ef3UXAacj5L#VBy9JmwZFE+QW%=h6CD<(;fkqw*CTuDir5LuM=GUPJ>!W})*y!g zZE?e0AVj@Gf|t>fO5e$U1a|MgcAmpF;|#`46=66*uN&UQjR|)1B%$kJZPo<$GY0}1BFVs*t^y5w{ws0G_0IPoW|=?FhcF}WxfM+@ zzFn(KNAO+Eut$q!1Vipw_*|+ZGZIKCbJ`z6VHBbl79M|8NxyqY?=JiK&Ng8cBI{*zASJ$#hL%B|V$ea~tVG?a-jU{0-QX);{=-Y$=SC;KD=Q$ zB7<>D^I0!hozbKQz9$AhJ_HjMN1fgznCijoep{R;uvyFHY)hQ#?I%Lsb$H1EuNnSV zr_EZTX&B*1G>4~&u{UNpNHi@sF4Q^h3KH8jlF5j2fib3Rl6B3o%f(#SwAJWMO7DW4 z+O(7$$QJAekTPlCC}t_p60O|}o7fIZ6iYJq1oR9FUy?K7+Kw3!TS7*Yn)awLbTF*XQt2}pxho03vhWs(YhdRn!AlzqP(>9~mR`U;gtCb_^dKu@I|b|h^De5Bag zt!{X>LzrSR_iK(a2^b+7jDF1|-oe}6Cr@%ro5&q9e>wswbL(P2?tVY9+UthX*}$H{ z>v&T9xSVvAFPBm?sUP}LAop^R9Z=vzc)1n#`87Uq|kfg&PJ9R#Onr4(3|Ap zSJqYbzF*WP=}~9X*^29MOulFJ6k+Ipd24MuLm5Og+s~qSO_DLuYD~R-1d6W?K<>03 zu|{FHNjVCmcaXqGA9b{&o>kCG?D-?&h-NK>YnutgpX6xG;y-#)7@HI9RIcyuWhN0cz!?H6`Gm!=ladt{mEB zwo#Xs-5D^LZ1r}!1DdLQnnf~RJ30fLi@iaSZF6dbng$m^9Rr?+FeexiEbZ3G&m#zgg_x0|)8 zTf`63-RB-1JSQ8-ehnV-O?;O#G5)mNpfIYx-71HeBjZ7|6e)PAD)~E>kkIFtQ}^lm z|M+C^SoKZU63zu)W(uW=f+1f6oBvkEut)qSh4C0bSF+;I?*1&R`7`2Sb0s3fmSwHF z=O1EYSis6yV8sKcq6u^03Ny8}NE`%n+)A`jhW;1P@sGO(@4JVWhxEn&5eK=%`S-$@ zfBn|w3|^{i>k`@^LIsVs;9qX8zs~Q|NL+PswaHtB&2ao&orgHt*tEwr(KE|bbi!QS zH?S4SHgJC~?4+&hTLg8qy#ThdVF|8@SCp!t7vG zs(|94*!d?j=!P}I_8FDyZ=xVo2)WtMnqr|kyM7aiFv;@A_Gq+Xq?_l&eOT{w9JN!a zWhyBjk6f&gUTGbTD|P2-;w}ce)&UZ%%xn16!p?_mY>xza#l4}k0zq*;fu9F75DXT( zN!gK(`xfX_;IlOOE~*t=*hP~jQvW!{d4J_<#jx{NV0EUm5#}6ChjO8R0c1;E9n9AS zp?#5m$5q4GnrhX;CVyRpMU%HlWu$rG)JrW|xlS+}{oUS;L_kRB<1eb$g@dD9+sQm>)e=AA~}?zOcRH}VBz{v)w3 zmK0r$)ha|?EHRa|)y)Et8SYNeQ!PYpFN>=EWT;UBK0%B;NDq5(^IGp?{J0v_nP2g- zTk2@Bt)MkBtf109>KeJY>qMoyH zwKw$IkRkYI-IuSKp1@rWrGvv&^Q&T$y%U6>oY08HHXUhG?t%Yb&Kl^q~*| zR+i*?soC;BVdCr06WOht-5n;3*!Fak^78V&u4QlNJAM4BThorRiO+nOX_`#06Lh(j zZTV$3ezPW9R4`NA%@*Uo6U}$o8vpfOg6DYrF}_vHZ<*=d#H*cBu4&BFORW~gpA^XW zBB^;F4)*<`f7|$`B`)UL7vk=QlxRPK2|cf?J$_(}v(|22RNWGDB$STqan2QD-g9^n zWepGmqYn!j&^jezqshT34kxLNcs|J}duA;5VEIkt-%5C*9OQiTK3kTlBDG9s*&QSx zm(C-ChT z&cm}0XXhu`?}WznDxD}0l4m8?r7KEZ0u2tmR?+5I=2Usb^fNacCwblZmkpG}r4^rz zm~Vp2*`8jAP}(8#YwHT#2pO|P${4l4TcP~zGgDo3*?!JLT~wSbp(W+LwFx=Wa}Vs^ zYqVy^%=DRg7n5Quavy{O9b}Pnoi%Bu*9tT&&sGx+gw1}|7eIxUU>Wl>5b zVIUzPIGS=AY6V46LSAO_r~)@C^yZ=7gB$(1pp=q|RvzhL*Rq1A)%(~m%043_pEdgM z?kf+N%)kn_|B@Plidbp)Sq_57f|ebV6bX`w4TJ@JLLN*>E4$RbWMp*V^(^!@*Z-n@ z*y<%8TX}IYCT*dUsODTbYzE`GM@)+CxmT!z42p8ldEh8F!JO@O*BGtP9^g*A2X+eo zD+7wqCDJKKHK}26-2j~T!#*n+KvnzHgxY8FCM2{&vrOAI5n0bFdMX=lPK@lzEoo)| z6<&QTtGw5veZWQpN&r|*v2%&#c0d@?*KGI_DH3Tkx+OoYO9zQ#A_a7ahEYtGzL7?uY@R#x$cnn$ERNHGtj)bcq&)5FEAEQzhF36s=1 z2V5j}=64XfnW0KYM>e$tOvE!h09!nBAcblc(*h9zh%n#iPy|6kT z?0&H*m9;3s$`W)~`;~%Df(ZD4FhQL%Is$qXEHjNXAfA~>6}YrxBv8c!7o?bQb$W&X z&i1#kq^_m8tEn9+Q#%BK7k;>JpJb6*%|2CPWg61R68&j+#DQ$9G8sN zDms{A?cjrtn1Q%k;zo?<%g9iC*ir2Y$kZnHCJ#@-Y4#REex= zpTZQ(>5J#*^ht=5(-$&}2b0z{8%0Ws-f&3kS59vh@6(Px3BFNal#tgAd1o7AX0dy> zI45o7qPDKxM&@m4Gnfv0526$mKdTL5!nOBEn9Y()q4A+ImKXOF<4V0Eag)C>UB{94 z={awZp99K_pfx;h(O0hd2W{`$`G9%{G*YCL{!* zwJLK^{?5?8zF^yAP z?ldFP-nbJHX%8yQ6WOR}>hi2et0%8jWC*8n38;8fuvXr|=}&$}V-(*#I1E1$1LZ3CDIAP(uA={f4%p*NH>ne80_WmaR&ColW#j#=`EUHm` z&Sl@}X%G`{ANr&yv%lekR#N?$(yGv(D(xbvzWqB0!9mIIU*4x|TV>@ta*3iux2#pz zSR2|@xJs~C%9!2GyU`Ryd{F*~&L8AP-)tA;FreDAkvvH%dbC*|{+am|g(J^v&=V+| zaJQb9eF zf1BCY3WZx>4ngBdDw5quqI>GPTIz)br0`q8?rp@vddSRPGKKZj$*(mOq-75Zp8!ov zzF~HzYX7ZIh=T*+x^cH5!O?NNiO>sqL6vFgq?&ZiIzyo!P1Btrl#@#f31vDrcS^>q zvjC(gmOZQ8Q2}kr>-7HE94g7r4ty8J8K9lSg+#0P{|Y7Y z<+%KU$_-nxa!sl2{s~|)Q)9gz+e*Dt(WAu`k$Uxll4KC3@nxT6N5360uKu7lHDJykBIE{+s9<}J_ zdJyH3)iYm(UO38>FXroj)r}m^|G9i=Nz5WTe%EVr!MmYR#Tbx$K3vw9!Z=QiOpAej5UTf$2n9IoIRnpm`w3*XpoE6 zdb3N-$#nKl%LM>DP0Fc-uS{CksEqC!e|TJ|2;C=ji#1>&w$BNBOvLZA>81nhZsus4_uSAfaa(_^vPi`Y|Oz_-=%USFPKNY_7_CyLfxz%&;nHp~kRGqs&K3nKi zcg&x4M5Nt?<=T1%V0^tstqmByY02&mdYIe&yngd*RZ<)A3h0@o!A&X`|NAER!PS>co7nKz#8)710v^{EH*0DUr> zFpShkJteYY%dtzmR0Ox<{dB;1J&VqPvo^K~$I0$RAH&*~QYV=fZ&zA^n=xe%#Te|@ zn_0}*6@@gHo`EM>SupROMLF-u6ApuJzfp@FJ|%c~CTI_VUbg}}o#w4i0h>YEeq&&?vDz6Y>t^UO+<*68U+LTCB+Lf_qi<4sV zc6SkS12a94N1g`f1Q}3CHfN9bwuXjOv(;N}0r=AD+Mlc!6ne57jRw4c@k(hR znG<}?ipgmxw8aM(EOM+%UgvI0RseY%eU)Yc)ny*JQbC>NfEY+ReEzdF|1A&EfTrh3(0N&DW+Lod+QXC$^7P zcl(j$@MSL)F5A{g@+$f!2Q|xxo|{(5RNvDQ0X4VW85+h#-syaW&s@cK`uAx=CBBpg zO7l3k#NfAhoqU(Iv0pFfV(4hp)3%FxG&gO($@HZ)D5lES&dJOJw|Yi`*^w8-Tl!}k z9;7U`zezY?`{v1NwMk(Lzt~X9Gj;p5OtW3@$GgU{?kNe=+GTO3BefUR9xpbpv)Lzj zyPWSlroQwW$0jN!foS_gBmhosj(G4sGO!`@(+_0iZ#-g5awaJsR-{d<9{hd2QLyX{ zpI2{<6oQ7z2Ao5%2;Uhby3(U9#BWOSzlk4ImP4(yW_S{^TsuThSc<%;(>1*m zbiMp`K7=k}oz2F27OXQLyi8?o;i=6`Qoz8_@65bxv=Z>wA(>uu`T}Xwec<(LqtNw@ z)_-)NB!x62Um8KdMVyrTPnrTA{6?9c#Up|Yqq~G3$0vkjz65Rxxxr7r5a+qLJyOai z6Mp^thXru(E`CBFUalqZc?HfFdvs88(iop>$^92m1UN8u^3@(zX(V;HfBm&05s${P z!%=&bCEDwvtm3ttgU5vzTkU2-gMG#_;ImpERqrfXyNe`S#^=1;sM}N6+~(OyLg z5A9dAk;Y**nEOV&rU5`SNe?izjyfv02R*<%s0;HXcg8|0Rtbo`jG8OXL_ft)RGzYX%b(j;s~p`Cl9e9{tXMms*Hhjerh1zd1LuB z8MT<{_2=O1E82Eb8WeZZ4od7I)k%+?Eb?A(Ym~><9pwEEY>K@(Sblqk-fPr%`W7g# zY=UD`KhF*j4m0@nN+`L`I=9gUzb32&m^!cQNT5e|T4xgmxZ`zaLFvy_XZ-Oit;o zvYB|Lon9TkfDxQOZ(pRg>FRz@a|fmy%wChKCy|BN`y)-T5_yxLqv_*C8mh=@?JuDH z?y~&^XUE!1-}T{zbzh}Fx+OGi%mjJibr>e;hVAj8cq`EP1&Zh>GP5%6k`arCCzf67 zv_`Ey6PnsQw~YyNN%E{pQNC0{V^lape??47d-E?>i`WJ~)yj#_-g_-9hD%xulYcu0 z$kh^w4jzs{Sek`|_(?PgnZh`Ngeu}&VuzzVl1I0c*!dI1t4g%)^yhq)H@F8n z@-1nk9$YALpz>HPNBD`h``Q0uv~G0=9-|SO89Kpc!Za~RT(+F?TY{%HkNkF^&@0zF z7Cmh~0OR|wag8F4H=x-hAbMA%y^N|2Q6~N(+~Fb{$tJTywAVnI))?EBe}z9hWr4-d zy=%)Y+hufS@9n~}-lf5;X*_x1zX37F4;6|HM7~sQyN@B@CTnm3p5XH{(0b1Dy>Eg& zSyx##e|M@2pv|o9PlS0r#et0=E8L8uDEBrD*ak608v+~7*00t_>!fCw(&*D{?05a- zKzqX~O|{wGM<1f`!)DJ8muExVMJBKRFs8tIca%V_)kpQoyK^+ti8&;fGNRIu%9h&D znx`9mv}D~rGE{Y$hb7hbkgYi^A=nKWPd7GUgBm1-7H@yiAhD_LS#i6~f%K8ZwiKsQ zm{ssDdVnFlQ@70kv38Qn1<2L8W+%FlA(-xf?RjfO3a6f-93~wW3jVxg)`!_D8B;_t z(P^Jjs6qRFIx2zAL1NL{+wD7!U=rx!J4mR~XC!P4);v3dPz(2|_|l0bh@Ymjt7(UG z#dh8oRq){8UFT7K^I7vW8JL-^>ydef50V?_qP}1A(KtvvV|0-AdnVkW%bG2Hp2~Uf z)mU=)vB43vxU{={)HOIRb~9Oo1a7qu)-ym>+TBqnQUn~4LT8-T>jK)6fP^X;lMK-9 zd{lOU>t}7WBuBex{&xi~Q?l6%C6{a?Vese0mCJ#1^=bpP)=9I;?BaJz4d$YjFHE_) z0p-->H$q$Utx0)gMwBVJP;kW8+;*!|lOkd8`@GrhT#vMG`kz0QiDaxC2;{N=w#!S! z^HBn4Z~F+Co^v@|Tehz>RrW#;_F&*t({7qzO5$m+eE%I2WB4JM%od6T6ju2Vkuf|= z$q{mKEEQmH1=rD23bvMH*B7haNJrZkr(jO0io$y>#h9xrB*zorMv{@q6^hNp3impJ z;U25Vj5v`^(jJasKT0BfhZ=aQ1F-XCvD$tEQxj>*rjreB+uAn~>@J-xF1X+h2{SdilQ+L4V@D)f_8{v4CYjEy(D+-6wf`Wh-u zmuK5)jy#Dpm4CU+y7;1m@Y;fDC3IugXQ!f#-g!(nqO5DW(g=i2ESOGV-cJk|>0LEgK@ zh>k`jV6Vd#e0&p`3&SuB)Yrkp z;>ccw0HfTX%5~=um&_;7s{eh>))JRvYYR!TVKgC5%5ApY7drb$y8{o>8TIh9lOr7h zFy#-LEFA-sln0ToOZN9l0<9jV*h#9B#u)np5_*RjW;b{?{+83$XcTM@dywv7rT#kE zNK!_%$Bq|#uMNR~Z$aeL!W*>yKsC*4xxnnhx)DV~CJVLNJLngIxV#(*pL(75!(R}N z%1w1lTS@n?dCmKhRNW;v1a|XB4*8gf_nx|25L60be2MzJR{e{42#RSaR87OW`xupB zHdYU`RZ}91OR?Uiz_^3d1xF;GrM^hH8sD)Fe)~^X`t?nm0uB2!4XPDLpt7PMIK@Z1 z+Ys1w9Ty)(12AHThGwyl3?xHP&h8%bXZk9$Y$k)q$y&re6L|{XH9S&pCyC7(jE_&* zddb)O9GrXm!VpCnC0#IR*7zc-ZdItsGg>Px^xKzkJ&obh5O9b5yeSX~y%X#$kTjk2 zY{>dT@RYT+W}bNhMz&$)3-$1fk(yU^)XiSUT~Mu?i8r)X)<6u;%eQHKl3cHv?8x@# zI@5hbVUmhJx7^@OTEYw!azsOJrxM(bc&JjaF5I|zXp5OWo&xM2^H>&z2=4Hk!o)+# z(-Jva1l6VFqXh>TfvfIbmt#xL2uYW^SKZ3EGDzl>Wu^5L27 zZ+``ir~S!)ZS2WXGEk|Nt@ZOv_6uRH=9dHKc%=H$Q!H?=BbKl`RFsuZm%?V2Lx%~@kSjh9x1-ggwTeiQ`__60jOg1){~?1kTxTx0gj-q^P< z+!-s=o=_Sz9T?t-eSlpg(Rw}aIzUI*LG-IFC*98%A;_yGfJ!_cEgG}__#P|m!;&Dj zuH(^_rsP9S+Hb3LHpVJ=>N$@zTLL;!DCIy59fBJOBpQco<#7 z_eI@L>GcH2LRiK2Wf5| z$H@09!QwB~S^TM$iZ6Gr7aZNtBc=v{j}M1hdCYcPj;*6_G`!a@?_RrdLP)z_NlLsl z`ss5TtPABhb>1`dZf|oxSY)>JNiLjKR+I7*2qNNL@-}f##od12%{`a`g?b0b-!fbO z4I%U1L8>3tt5~Uk)wf-kaz1|_S&b zF!Z53OT&W(lMoQ>vXxc!whUfUvdHg-9E1zY=(2);8RJ1FvF-#gO#qJMuDT*nvh zB*q*g**zb4a8wf!?kz4!PVYDO>~^4o^8W|AM3wZN@-vi6USOxAYuh8dolFiVy+)L{w&cPHS9zlH&I9Pu_11^?sN|Lu*3m#6pv4fId*AG((R zdUHkix4M)^GTEfur(LmIt1MjdVxuR;7|GJr3se&LDst^zPy-RnFB)Ik64bSPJ)5v_}1jZDEH9k|4IzrjXnAbW5SNPJ(0*qdY`2(SWF?l5l2tX-?%7M zs(6Vl&~7N*c>Z>{T*Agtlx83r*jB@^4bQ3{|DpNOw4-o#ZF5tb{1%U!&qFWhzK6rp z+!O;+uA|H!a{EY2Rq$fG+_7J_-YNO=!T+M=!IBHk#?4;E(uo3nYwE5Jm9R`|wXb#P z#m+K@_Re4gEgeEfp|hd&o8?LTL;rRi=0AuH9l1<;VEXdMG}2P>61#`-=T3}$keeJH zFv?`~M~9RBb~xN(%G!R_igFH8X^3bks_B2@B@9yLwhw=d9J`ZPV)I89yQcyh5d_-a zMn}6R?KuT26*xx4xt}~=h`J~;M#3lotZJEat{Yg=$UrsVsm2$LjM(Ws+ zGNi9 z2?KQyWP;{3_9MpLrB#c}nj(fGRRDn|yId4CI9D=mfUL8kXsa~adO5MK%%(UiuO&NA z=WvM!nR=roS`Q5dH9r66ZhN+CBEpj*I62Bvh8rRk8>zf~5#4|YiU-3LE#4|E`y5Ge zde{@X`y_-H6J>8~k7O!Ly7M$t)Tq0{h;eH5=h+@j)=AJFZ7|;M=4bosYz>mNjS@|b zBH-oj@M~MPAf6zvXv)%Y|MCVT8_MCpLX8C$PczsHN#N#fBr!}G`?yJcG-lP-ITkl- z_PLIFL9LYi>`Z>-90fv7#cw_nVDob{t3=yq{RhW_48~^Z1xK8oPND*cXt0Fo+$CoG zi)fH3_|>rHfSqhB!vahBB%DrJ9=V%6Eb+R^cBY$PDO0VDE)4kFgpJhNnM%BHvO0bt$p%(CZZL zFLtp`+ex1@Zf0H53{rSkBBr3=sCiqVR(_x*YCqe1WLY`-Fg)oXmvAIS2&7CH>eA8;{6)*NW2Guoo!(YsvGLxIcnCs`D0LjRt7 zNwY*1A;IWvj?7)Fj3at_xh5zcm>~?C{aMQlzrEYrm|;5t{uzloCz+?nZ4#;bAcySN zS&QZx{oJJ=rio3=axTe&IN7CJO5Gnqy(=Z`(K4>(6D(5NQcLRgv;q%62zzsu8q610 zGr25dLJ>OibU&Zt9X8a&ffW;BoW3v1inS!Rx!gOGPkaLMhM!6a)4q&dh-^(?Q!&bL9cWP(;I0*rJYLW{@>)fhrJGe` z6V*;ya~x!M;+@)sbt=gpB`=I)mTm1`#H*fSL=2859Y>D4;*_rava%k?(KOk|Mw142 z>g7CnW)3Pe?Y91*B`HJS`lftNYItkA3Oo{nbXa4{b_}o7YPTOJlM-D$#>D!-60fbF zZzD}X{`&hiy4$ZAT!v{DZX zZs8Mj*uDC1T!-@QdQ*set=ys=u)$L;K1%^ec<>UVqI_CRQURP#f%HX16dkCq)n2G zNP(OaQ}&jHu#TtYYSH*f#Fg|9sy$QP83#r<5|&+O1D9&vax*P3_u?It#(}d+)vD}r{qDf4z zR@mtqG`1|u=@zj#87*}fBJGGa6+~i1iH9|gjP4&de~uk+GrnfBJ6aRKO*mFq_~$X9 zbq7>-owo$F+ug3~ds!kt9lh*yqnY`v7q|&Htd4 zI)gy8(zf#i(gV`V3X>7cIX$i-OzW4CSBW4i?8qk$$bFm_eXq!w?eQ!fGJG}I*?q5MmR3}sZi)@q1>%9}y8?D>Pee68fhMzb$n5(jp8ZR`Sr^Z3~Vtgxx? z)NJ4-%{EqVL-ayCwV25DqoGG@7UI)J|&KY|f-uZj+ihY6yQO{}hsKHpY|2 zJcBcwiuSY=0N~%DA7dvw%@B&&9eyKc^BM0(-`>)ljYOkME7nfOK^BI-c>2QgibyJK zm8cg=5{9}PL+5vu*z5;OeMiE%T@gfXHJbV7TA?$0H)O*MuUAD;@k|~s*C%|1Gu`ygI2;)-ajohj{O}#Qf zV>YhXd*B%`qKsbWAu0YC=GWjj&e<8qY4H!BaY&u%W`YRo^=LMQpeAIwT!U57XUYNW zj|&|LR;081es)qR5j}I;7u2-h%No~WKmHA)c}tgLJXY=M*{8p$&SaSpz4oE~Cltf* zE)q*1w01(pvC+n7_5w@A{tuX<@t)lOjf85u63lKAqdYcQe}EHGtA=y_d1L1NZUEvK zQN~badtFG7P~ERKr7Zp@{sf#$)`q;}ToenceXL9$X^}Qib6N3gvS7Wmz?2}mWew_< z>Z-;@yNi#TV^nq!C>|jC*?i!XYZVS<$@7!1x3~+N2FVmLewGSM91WG$Pi&SDhe!Nf zkwP&XqsiPl%eH6T3!C(P?bicA6`PKVLYddZ5+-^>;SEV@vz`4Oe)Z2MsclhNlp>#2 zy(0hMx=~^kAfuqWPNJ6cC;!=bD>--0Nqg-420aE!%gZEvP*ZQCAwK2)BT!7jyRgzRM(Aeaw!=cFx50~>LPDD@ z6Ivp(x=g^9V;j8jSYeK!HR!LgJ8@<7h*-D($S|xC^TpV%<&4X}RIC1@+2!DhdHn@< zNarAfD2XTu4^H0v=ofjRSEa^i<#8Tzr>WV3yiyp&o;`JAxxA7Uwbm*1!m4?7We9O8 z^*2OBeW+Mbg1DHojGGt2r0<6CB8YchJUE_Q6i>$cj5k`w`|abhP3z(Fl=rCRO+;Jr z<0r=!PMLSG>FL(WUUg^9tpcp&oI#U%+it?V58}ez!V^ue4JXc4Vd&M~-lGLTApToB z!jtQ*H6olg5;ZZUTxYMCm)T}gtoPI9pgZy9$?InW7QoGY%R}k5IoEy$XE4ZUSAT&! z)c{?f}08?+TEHn1l%2Z3 zcVP^)r&!LKWY4lcLe_@QBRRiuB-`n&HjmUQ7*ITMU~?qxU7|{%v5>=3{^@2%UJ^;3 zJ(?39U%$pYI34N7;TG;t;WE2d+>Q?Z;q@qOT@`6FgwmF&G}dg0=tcAG?p%F+P1=j?f1QewWhH(Pr8{Z#wLMH_MquqcI2?lVPdbh{_C*+CjSn z{49#h`t2ibH*ewUhpU|?Ii1Ll=T4=Od`{%~8a@wj#Te?dN*P1H*m%)lAscrccyGwm?umR7Af+-ufdXYK&D^pjpIkEe?^hdn=eTwbiQmV<&lnGu$F@9~MU~ zx}+3a&7LYBoX*{S$4Fe)#*hKW$@7XLDLYPxrtWQANRnCnkCAW6?P;?^V5~)0s}Cpm z1{FHOjx%Mcm{@^kR}xy}kY>lHCWR5Mn+5wt$@-Y@b&16J!t?;SN2k3@=NAThuZSg= zuXW_*@Owh)c=c_tq)$Rf@Bgc^ua1i9`yN$M6eSE4kQhH8UBb{ciiC8E^Z+B>HS{3e zT{EPBFrxI(-8l>(T|*2Z-Cd8*_pSHw`+0Bu{&;)cwa!|1pL5SX=kB}ntbJ#<=S?8a zmA#KlH+#FFnAvv}wPS2b4N`vGwea$*JJ4E!YmndXu|s1TKtmK>WjfIKEoPc-rjU3U z-x0>y!+Y^1vWRSPxJ)4l+zXl0zpN>M+p!)o9pYCYHP#dxv?!e~y+VDsGZf-oG?Q!- zkx--SljMmRjbA@=627EUkDGX!r_Q_9%ep~iM5Pw1(WWg@(|N#e+AMQ=Erj-;9!?aT z-wqeSQM%jIJZ-kl*d?OU+BG8O&2jAZzL#=#9aUMAtM>WO_2_kct9ltzKoM0UD&5d= zq+rs2YB8zRM$IKW^}P@9bk>C{PI2sIb;{)BF8ad)L@Gk~oLNXFr zh%77xkVo%_I?~~t(wfp?E9mIf?UMTsf)7nUtC6tL%c->d7JQ@Gk*WdAWZMK|nb$iTMlt^?QaOkkEZ2Ah-9Id0El&39{FLpGG05iZNpx3)lx%?|fj z64}m!UrGWK{<6F)H){*qgj?{N&ZRyG(vOOdlh^0`1##tt5+kDfScrsW-oZ9RRK84J zZ%W7A9NWIPDjc$~c0Dsxfq{m;y?(%!z@mb=mpT>*h7?ZwYB;M+@RAJtlnTC@ zZl?4BYrI4%viE=M)r)Z^6-uRb>HuxjxUPWKFYDJ$_0_DLz?EVgxWgGl_+mf=yucA5 zvOorvp1Hta#}8)&&$%n8A;ue6l=5x_e*A@p=oAFl0DN2zdzMMU|Me;kqxr(lb~~oD zs8_JFd{^Lt<1T7H71XF;8}58{ON{!ttJ?s_xyNCz&U|$U?4*<0=zMo6+=8?(ywZJN zCow@rs%O4nMo$luj7;3S&edPyS%A!Un-DQMb85_BE0_dbiZ2wm=}X0Mru~0^M)IrQ z=R!-N`4ag2{zuRNk8S}%q}xT`LrMMA$vFE z!VsXnZn~*cn4MBZfNqm|KC#})5!8z3mrZA4-d`AwO?KP2TLLtce5`QpP0(Q%Exu@N z%mgR@!pMsVH*XupnvG=fM!wln*3lF8fr6;t`l924?tY1pywvi`tenX_K8K`oLeTjY zJpO4yWV>U>j-?x6JeO$#;C=<<$SZIq-HHA$v9!>>6lJ%byGN$!msF^9S2{lcTAOvA*S=(^A7P>^@z7?<8ml zjgC8>Rc)tBt`qZ~F2!vw_Tcud7pmP<(EY8?z2=6QF+UtRS0*^^+^_!kL^PGZTu>$ z8-&flQby1-`x$mQ!L18B-~N)tAIkt{7;b_3Lm z$=h>%EFDF@pCFUa zinYA&MI<((juO(sRh3p6f-@8K5~HRU8*tG_^MFm{K9nSE!jSt||n*zLKjR6Qn)kS8-w8Oca`LypZYm>obLi-EW;g=VDeAWs%s*Sh}d;L;wd`R!4s$iGo2@)`^WM{!_G0g5! zklnlV#A1Y9Ve;x#%a$aGl>>Jk1BuAP87;2dY&qPn5z)jnoAOW2v5RXSD z2WOpuQD;kpfXGCryYFEbvFgHMlH1y9;4mj8I=OvJ=q)u1Wu@@ZPc*4V1Fzow#`i?F zjJ)>^vV71x#L zRGsiXZk@{j2D;kj0FQe?sGVRsNg0X&U=I2L_&Z(_h)&gI8A;TUcN&e33<6gb@ z9v*+)^!ft#(ueF!+mPz)5daP`lg(yP#Gh^92;|Gr2KNHK=Xna7$tIEK_w_GtIYXza z^HTKHHeUPVm-cdgNrT$~}=niNY*K7p``S2NZXiN?Xb zn6BZBN8gziY<3OYIJaZAz7u0D31X;3$z@Ll^Zo9x3uk$&VrWd$vduj_w`=3m6&zuMsB3Ewjl_HsYkF8*WkZL_87Lm*61OfBW1$AXP4BRloRF7g4^BlZ!rI41{kywg<$ zvL6NJ)0uDic$`niE6mtCG)9Oz2*;(=_kCTGbUi*s9Jq501^GlASQ^Jx*gWPGJ$SQfW0;kq1I?E`{=3P_ z8CjBM+#a3BqjyPwORU}<;{Pc?Zl1fBO*8gV!-MKJD>O!E3lIM&3X(pnl`r{oHyU9H z^cZS=KrEX*uLIZ{y#f=2R|Quq8`Jcxj3;1ds(n|7gx;JEb%z7JJG0o4GR*2k0HBsB z@6|MD89CDC!^xQnc=k*PjJe??hcRF!+y`-68cZd%erLQhMm$JkL&NjE=b| z1<#FVqBMmX6p*8XR`ts8UsMKzd&+*N`q9Yy5jm)BeEiXy;zUg3r{;Rg3V?1#Z$3!d znkDM7D&F$m`BvpBPc?vH|AkaRWUU_}M?;Za3*+-H?KdB7fNHJDzG*H!oH!w3iuyc( zr*Ooa-}!-c?|ZsqgXH7crSTqmM}n)70{R>!z@qE0{*Li6^Y4tm-Ln;#B$CJx|M`E_A&2oWZ&RW242_cxU~xDXM~M7GOUD=*c9H_MlY@@wo>!>QVSkKrQuJG6&-#M%&7T67 zgDh0*vm*RvH|q}#+@RLBS4JYbh2*EYJ<7v<{&FQjdCG$6@l|S6Ajj3);PN@yk@R}E z!Lmpdl%m>VNGFrSDSt)VhZZH>rbHTamTl$0UW!k+&_c^}W2QwVjHf9o21NqqAj7Y~ z4j03=%=wARLZ{P>x%z8&jX~J7e#H$04*zF&e`&tp_vi%2~-x8KFiVPJNDb@CDVDGxqVN z3_3E{H^@lmZZ~|+2lobhJVB}O3kC(AJtJ(}Q2yV_8K00%{le@i$eE+1y4c{(C$HxF zYA;YL@>?I9hwEpDa3f4YBsNM@GPbI9UnAOv<~Ov;CIm$50oR9D;ZeeopN+0> zBtiQ#>QcY*Ofn#iL%}?H`+y)o$~n7lG2`T0Fy&|%SuhBdQP4@{W@-Gi7QZrES{+>D zbOL~!yBo<=zjf*&)&NwO_+e#tD&L=GuGvj`3Wo5j(hBnI12s5A<$X~LT+f?gi{6xD z0a7X40o~FMcNxXUxeCdiEmNKw{7S%03Vs)@$B=yWh~o0pn^r{o^r6jo16N@o9XNZ5 z1$+kQjDWG7%9D*_4E!10gJd!P=W^mz_R$y198U!fM1?XoWReuOfyG|-567Q|2vId{ z6zo$yq@UtmR)*!Eycgb>e4=PenN`e`ba;K=)U#vld1m0AD7c{TV*9<4Mk9YHkqU(% zIcm|d!OiksM#O4QXkCaU^wn3i2MHEq4cY_i9{5nP4i_saEkP0Ujq!fY~K+ZnQTmq^^TfoQK2pt13f zY`^k8RnjJ8B$nDSI?jNPjLBYv7(m%6O-8quGH2s|%4vQ|h5|^q-Fe$jI01S>CPi%7RA+y=D$*I%&;QbOr7=_J zcYehdZRh3nvgS{Iijpc(o6)<9+t{W>{?7fdSt9HBxJf&?fY5keY1DF8fDZT=W$wYA zFu8l!Q5fIou%czd)>u(tzl9{`S*zY`hCK#)sO6Y2>&hh5- zP0A2W=m_GC-hos5R|i&~!5TzV=g%vDk_GOy$eeSRQQtpuEA0DYVYH ziEVw-%P0bFeDi2osx;q{OhnpS_9wy6Z{;qgcGHt=d17IUj;bxJwvkusUjtsG_)~2%B-Yu16gDm&! zAttMVhsYxny^Zn<&MR+c*HVAR!U+9rsrmL)hedaDP!xFkh%k7y|2`eVPz`x1$*!qN zP=mal+f^ik&deUgY`R+iFvCOl7hi@Qzs=g+I&xxNtx_9ky-T3z9#}3MyUelAnv{`J zI(#D|=w_N;b_XhnE!6Hc4muv)5?_OLj0)ggY6n($MH%riS)N0_>XU~~#Qbe`h^Za= zJ}+WDw&`OiJ!O36C+m$C%HG!PHa>=+X^$W6XQ#nSa+q%y@t8Uo=xcuRx>lid_Ev!{ zQTK$^BKbs2zvqX3&T+Rtb|Q8R>_%~0uk>Ygwm$lOf+pMW{wiIv-*8{7k?r|vnHzHf z9%ymI21au9E$qI3;k{T&houAw+Sp2jNbgP?WDEZAW6tUKLQ?Q>Qnkm(;A>h3kTN9) zEv-?wWx!e4)pyYXi;j}~At&GA^JJtb{M5Jusl~6IAlQC2C-89Cs?|GP-srduFS1_t zgGAfymv0`&u<8D&G(7MtmBHt-xSXk#f$>ta7h`~eyfl3y-_ zl7DV2zTh!SD=th^%G25H30G==6=xR z_w%ql)@^0|u1j&_kFQxrZeD^T6D@7ciw`yf5Aps?^`yCd5cG!34*B&aFZ^Xj)d;>MDZovo;I4q;XlpwFptz?IXq#xSso&xAEspz0bt;A$6O;Sp9;iG1&jM;E;eOvBb-Hyg<>{y0H;iuSIWym56UmCW3`R`zr z#XV8WS%Kwfp!rrOJVDAlez{pDn{Vw(Hv6JS*gT$0*0J%Miq^-MIV$x7g6cQT&6PY| z{~~yrGI#AB>m;*sDtDCYyvd!Un)=gSAmuF2S+c0Pfl?UV!UvviitgQf&4^CfvYXbpYW|4qdb z@pm641!Db25?c}BxBcX&^(lLkx2*|(jAyXtRXgF(oDZ}|dljhAPiWTSgmB7o|Z*|mA>M&-#*k!4u8mIMuzMfMhF zPf^`_x4(`bC47v@SLfVH$7BWv|JHt0{Z}t*$R93}SZvPz^fcrTuLR>0{ufpP5C0E` z(fa-iclZC{F=<5D-a%)^UIyd-67=;k;*R=RF^Tn6(VN_9;y;|b$iQPTck7t!jO#ic z1Qhdnnlw$^!F2pf-K$(IAyhasWl}wLrL)iER}-0AmhO}1G}4-(Y7L4Ica9XvB5x1# zfw%tzy4=e9MXQ)cO@DnxET*rUM%n@b}Y@54m(?w2>C8&TPTDO$B9)IkWgAur+AhZEidYD+qD4zb}aVIRRD=(ESD zu;<=h?dP0l(OjHU2`k78g(g5jDYT}h5tF2HMQ9UUg5R{L5@G`GH<}-Odld=lstC4b zyZi~d-gA0|eOdq~_3#%B@zAU=X7;`q2xhb0;eS34&bVyK*Gn0HOwkru_4aC7EWjp0 zR=DnAt1@~yOMRW&m-#AX+|vd`=?62GI8G+5b`aCOj)FBeZ%iNDHr`LjzRWc^dQEMp zr22r8VZ_-kz&~JbyIy*8ctk#}DkGlKdvi~~7N$#fMc(}-MsA|Qgjr1}+{7=BW4pqG zu+?!j!m3m2yhUb(;?^gcAG1Eq-fWPO)mPBAO~}yvbI+N2)kN0~vO6cRMIm%iWw!mj z0`7kVXG|T=0bG&L3eg^1bQFdr{Wu_ZMtzg|MGo16C7J*l{JloaI!Hi@^5Q}q0ilqG zVO1iIGk&I0n7MW0)eFHoP#iJB?I4ZDN$*WumV(Ys&MZA9EwV+wTtE{2czsQBRn^2O zGM%p6)jl*iOMuE8PuJCA&V|qucX#M|>Rw~UlGqQ+I%P76}9a9(8Cf)F{ zTuj!b0?Ch8#u-KLm)gMO2Uu_$LUzY#Md{RFSzy7U(%1$*GKURs)BW-T&-BfypL!xO zWy^4rMBQ3N_E_;YMa&MqsA*b9Vnq~yvc97QDa^HtTp{>9jF>ndx-C3<^5ItmKunWn z`E-ni-th2lMduWX#ytd?r_tPjCAcD8+reuj>gmrP^FUc6BhLCiB7>RX@O*Em^i+uR zuZC1;I+xl)9~T;a#XU*{0lc|hjg3tY za4l3}*Jb~hH}#eLl;)^?-AaIw^Y&}h=Dx~>xkd9Lp5>|eB(ls*llYiQ$U^5phW4of z>5;>tU)@CK#sH%4Z&!y)P1{fQm-|=KicS-}0Wj+Z<4^g1>-1FmhK8*s_u?i>il$5` zQQdb()!0_Y12Raa2jtRT^dr_y#)S<(evqXN$z!0|WAR6PV*@T&tEjY1iZXAhJ&xl| zM)d^z49@Dy73dZgw$$U^wq;3}&3!H=ple% zt?9{A;BhRn-NCiJ-*af*I{C_y%}~i@9#>(!H8-dBq2Y57ZNQF`6=9QoWr*PAf5O&# z!)m93jwd%^h-={&j+fFQad9%dZgVQXIZA~@!|9rpGo^C!0Ur1pgFYKXzwc1<+?#d^%(Wb3MzGOvb$azP2c!y88j=J;6xJfVFR7c`*5JuDWht_)c)vqt0-Mel-d+`&e*X$#|2$u5y4-41-IG(>@pWU)mEbR z*4Uc=DM%PK;T~J?GipbrlK(sIkj&Cn7ZLM6#g%LY`2Vl?o%1Fh`ajVkhXoPjmJz1w zkSA5hA3&zQm{fg56(-xR+LiL_Zi$)JZz3+lj_0oPnk)W(Z}NwNKjwRk2yX3*PmZc^ z19m)N?-NY*zkS&V9zXL`x{x%#$)WX&TQ$eztz+$*ZB*mva1982D+wOcmi~695b{m5 z#4o_|X%lgZNj}5cNaurxb?}%D^;>ccEyM2KO9+XK2bgciXS zlnJCxt(d~exGN?5I>-dp(UTJ-V>g;f8G1_V^L{pazdPM&^*{`7iVXRMJ?4AsZ8TPB z`)rfm#z6I0%azDGtRJ==F39Ekb@jbw$!q_+t&B}QgA=F;Eaa}+7RM(j#cu0Cx+a9aHa;BUX+yfNJb-F+tmo2jN_a%&N*udu>jkd`30`RFQvzpp} znv=u9VaDQ)T3B?2Bi%dGA=LG=Zi7nIxhDXOJXPDULW$xzHt3&$!KmLiPU;`Xs_glL z3;wrV{{PzE|9qHFp8VUtGi&-|FH1-aeECCZaPZgL|Lw=U`~Ncb|HlcNuJN>ye)zvm SXo_y#fQ+P~M4`BW@BacW$Y)*v literal 0 HcmV?d00001 diff --git a/sql_commands.txt b/sql_commands.txt index d5541b2..212a834 100644 --- a/sql_commands.txt +++ b/sql_commands.txt @@ -61,3 +61,12 @@ SELECT showtime, movie.name as movie, cinema.name as cinema, audioSystem.name as + +INSERT INTO Halls (name, max_seats, CinemaId) VALUES ('AUDI 1', 30, 1),('AUDI 2', 30, 1), ('AUDI 3', 30, 1); + + +SELECT s.id, m.name as Movie, s.dimension as Dimension, s.language as Language, a.name as Audio, s.startTIme as TIME, h.name as Hall, c.name as Cinema from Shows s +INNER JOIN Halls h ON s.HallId=h.id +INNER JOIN Movies m ON s.MovieId=m.id +INNER JOIN Cinemas c ON c.id=h.CinemaId +INNER JOIN AudioSystems a ON s.AudioSystemId=a.id; \ No newline at end of file From 724330c0e9bcb6af4ee518d52164ae4b115f5419 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 19:48:27 +0530 Subject: [PATCH 13/32] ADD: get shows for a cinema & day --- README.md | 2 +- src/controllers/shows.js | 10 ++++++++-- src/models/index.js | 1 + src/routes/shows.js | 4 ++-- src/services/shows.js | 36 ++++++++++++++++++++++++++++++++++++ 5 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 src/services/shows.js diff --git a/README.md b/README.md index c43087e..c9d0f61 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # bookmyshow-api-nodejs-sql -SQL - https://www.db-fiddle.com/f/dEAQ4vjNCD1ZzeaPUu3CN4/7 +POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) This repository contains the code for a movie ticket booking API. The API allows users to select a theatre in the city and see the dates of the next 7 days. Users can then click on any date to see all the movies in that theatre on that given date. Movies are displayed with details of all the showtimes. diff --git a/src/controllers/shows.js b/src/controllers/shows.js index 178d384..68f4325 100644 --- a/src/controllers/shows.js +++ b/src/controllers/shows.js @@ -1,9 +1,15 @@ +import { getShowsByCinemaAndCity } from "../services/shows.js"; + /** * @desc GET shows by city and date */ -export const getShowsByCityAndDate = async (req, res) => { +export const getShowsByCinemaAndDate = async (req, res) => { try { - console.log("IMPLEMENT"); + const { cinemaId, date } = req.params; + const shows = await getShowsByCinemaAndCity(cinemaId, date); + return res.status(200).send({ + shows, + }); } catch (err) { console.log(err); return res.status(500).send({ diff --git a/src/models/index.js b/src/models/index.js index 8192e03..3368d3e 100644 --- a/src/models/index.js +++ b/src/models/index.js @@ -4,3 +4,4 @@ export { default as Booking } from "./bookings.js"; export { default as Hall } from "./halls.js"; export { default as Cinema } from "./cinemas.js"; export { default as AudioSystem } from "./audioSystems.js"; +export { default as Show } from "./shows.js"; diff --git a/src/routes/shows.js b/src/routes/shows.js index f26ea16..5669f37 100644 --- a/src/routes/shows.js +++ b/src/routes/shows.js @@ -1,5 +1,5 @@ import express from "express"; -import { getSeats, getShowsByCityAndDate, bookSeatForShow } from "../controllers/shows.js"; +import { getSeats, getShowsByCinemaAndDate, bookSeatForShow } from "../controllers/shows.js"; const router = express.Router(); @@ -8,7 +8,7 @@ const router = express.Router(); * @desc Get details of shows in a city * @access Private */ -router.get("/:city/:date", getShowsByCityAndDate); +router.get("/:cinemaId/:date", getShowsByCinemaAndDate); /** * @route GET /api/shows/:id diff --git a/src/services/shows.js b/src/services/shows.js new file mode 100644 index 0000000..d63bbe4 --- /dev/null +++ b/src/services/shows.js @@ -0,0 +1,36 @@ +import { Show, Hall, Movie, AudioSystem, Cinema } from "../models/index.js"; +import sequelize from "../helpers/sequelize.js"; + +export const getShowsByCinemaAndCity = async (cinemaId, date) => { + const shows = await Show.findAll({ + attributes: ["id", "dimension", "startTime", "language"], + include: [ + { + model: Hall, + required: true, + attributes: ["name"], + include: [ + { + model: Cinema, + attributes: ["name"], + where: { + id: parseInt(cinemaId), + }, + }, + ], + }, + { + model: Movie, + required: true, + attributes: ["name"], + }, + { + model: AudioSystem, + required: true, + attributes: ["name"], + }, + ], + where: sequelize.where(sequelize.fn("date", sequelize.col("startTime")), "=", date), + }); + return shows; +}; From bf79ba65593f9ab692c45a627fb4a6f6b852a110 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 21:21:47 +0530 Subject: [PATCH 14/32] ADD: get available seats --- src/controllers/shows.js | 11 +++++++++-- src/models/bookings.js | 7 +++---- src/routes/shows.js | 2 +- src/services/shows.js | 24 ++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/controllers/shows.js b/src/controllers/shows.js index 68f4325..973e95f 100644 --- a/src/controllers/shows.js +++ b/src/controllers/shows.js @@ -1,4 +1,5 @@ -import { getShowsByCinemaAndCity } from "../services/shows.js"; +import { getShowsByCinemaAndCity, getMaxSeats, getBookedSeats } from "../services/shows.js"; +import { Booking, Show, Hall } from "../models/index.js"; /** * @desc GET shows by city and date @@ -23,7 +24,13 @@ export const getShowsByCinemaAndDate = async (req, res) => { */ export const getSeats = async (req, res) => { try { - console.log("IMPLEMENT"); + const showId = req.params.id; + const maxSeats = await getMaxSeats(showId); + const bookedSeats = await getBookedSeats(showId); + return res.status(200).send({ + bookedSeats, + maxSeats, + }); } catch (err) { console.log(err); return res.status(500).send({ diff --git a/src/models/bookings.js b/src/models/bookings.js index 543e9a8..d4b0d6c 100644 --- a/src/models/bookings.js +++ b/src/models/bookings.js @@ -1,7 +1,6 @@ import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; import Show from "./shows.js"; -import Movie from "./movies.js"; import User from "./users.js"; const Booking = sequelize.define("Booking", { @@ -13,6 +12,9 @@ const Booking = sequelize.define("Booking", { seat: { type: DataTypes.INTEGER, allowNull: false, + validate: { + min: 0, + }, }, }); @@ -22,9 +24,6 @@ Show.hasMany(Booking); Booking.belongsTo(User); User.hasMany(Booking); -Show.belongsTo(Movie); -Movie.hasMany(Show); - sequelize .sync() .then(() => { diff --git a/src/routes/shows.js b/src/routes/shows.js index 5669f37..10187b1 100644 --- a/src/routes/shows.js +++ b/src/routes/shows.js @@ -15,7 +15,7 @@ router.get("/:cinemaId/:date", getShowsByCinemaAndDate); * @desc GET available seats for a show * @access Private */ -router.post("/:id", getSeats); +router.get("/:id", getSeats); /** * @route POST /api/shows/:id diff --git a/src/services/shows.js b/src/services/shows.js index d63bbe4..ddaa2b1 100644 --- a/src/services/shows.js +++ b/src/services/shows.js @@ -34,3 +34,27 @@ export const getShowsByCinemaAndCity = async (cinemaId, date) => { }); return shows; }; + +export const getMaxSeats = async (showId) => { + const show = await Show.findByPk(showId, { + include: [ + { + model: Hall, + attributes: ["max_seats"], + }, + ], + }); + const maxSeats = show.Hall.max_seats; + return maxSeats; +}; + +export const getBookedSeats = async (showId) => { + const result = await Booking.findAll({ + attributes: ["seat"], + where: { + ShowId: showId, + }, + }); + const bookedSeats = result.map((booking) => booking.dataValues.seat); + return bookedSeats; +}; From 795c6f168b77c5dc1105a1a16e8290c79b2d4ea0 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Wed, 24 May 2023 23:46:43 +0530 Subject: [PATCH 15/32] ADD: ticket booking route with transaction --- src/controllers/shows.js | 13 ++++++++++--- src/services/shows.js | 11 ++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/controllers/shows.js b/src/controllers/shows.js index 973e95f..ebb4b86 100644 --- a/src/controllers/shows.js +++ b/src/controllers/shows.js @@ -1,5 +1,4 @@ -import { getShowsByCinemaAndCity, getMaxSeats, getBookedSeats } from "../services/shows.js"; -import { Booking, Show, Hall } from "../models/index.js"; +import { getShowsByCinemaAndCity, bulkBook, getMaxSeats, getBookedSeats } from "../services/shows.js"; /** * @desc GET shows by city and date @@ -44,7 +43,15 @@ export const getSeats = async (req, res) => { */ export const bookSeatForShow = async (req, res) => { try { - console.log("IMPLEMENT"); + const seatsToBook = req.body.seats; + const showId = req.params.id; + const bookedSeats = await getBookedSeats(showId); + const seatsWhichCantBeBooked = seatsToBook.filter((value) => bookedSeats.includes(value)); + if (seatsWhichCantBeBooked.length) { + return res.status(400).send({ message: "These seats are already booked", seatsWhichCantBeBooked }); + } + const bookingsMade = await bulkBook(seatsToBook, showId, req.user.dataValues.id); + return res.status(200).send({ bookingsMade }); } catch (err) { console.log(err); return res.status(500).send({ diff --git a/src/services/shows.js b/src/services/shows.js index ddaa2b1..430cfce 100644 --- a/src/services/shows.js +++ b/src/services/shows.js @@ -1,4 +1,4 @@ -import { Show, Hall, Movie, AudioSystem, Cinema } from "../models/index.js"; +import { Show, Hall, Movie, AudioSystem, Cinema, Booking } from "../models/index.js"; import sequelize from "../helpers/sequelize.js"; export const getShowsByCinemaAndCity = async (cinemaId, date) => { @@ -58,3 +58,12 @@ export const getBookedSeats = async (showId) => { const bookedSeats = result.map((booking) => booking.dataValues.seat); return bookedSeats; }; + +export const bulkBook = async (seatsToBook, showId, userId) => { + const bookingsData = seatsToBook.map((seat) => ({ ShowId: showId, UserId: userId, seat })); + const bookingsMade = await sequelize.transaction(async (transaction) => { + const bookingsMade = await Booking.bulkCreate(bookingsData); + return bookingsMade; + }); + return bookingsMade; +}; From 713a583aeac80a486d2eac9fa16c42866d72b589 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Thu, 25 May 2023 00:22:56 +0530 Subject: [PATCH 16/32] update readme --- README.md | 18 ++++++++- readme-assets/bookmyshow.jpeg | Bin 0 -> 36618 bytes readme-assets/er-diagram.png | Bin 0 -> 98534 bytes sql_commands.txt | 72 ---------------------------------- 4 files changed, 17 insertions(+), 73 deletions(-) create mode 100644 readme-assets/bookmyshow.jpeg create mode 100644 readme-assets/er-diagram.png delete mode 100644 sql_commands.txt diff --git a/README.md b/README.md index c9d0f61..dd2f963 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,22 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) -This repository contains the code for a movie ticket booking API. The API allows users to select a theatre in the city and see the dates of the next 7 days. Users can then click on any date to see all the movies in that theatre on that given date. Movies are displayed with details of all the showtimes. +#### This is an API for booking movie tickets. + +1. Get available movies for given - Cinema, Date +2. Check available seats for a show +3. Book tickets for a slot + +![er-diagram](./readme-assets/er-diagram.png) + +### Checklist + +- [x] JWT Auth +- [x] Normalisation of database +- [x] Locking the DB while bulk operation with transactions +- [x] Indexing for better performance + +### Example Query for the UI below ![example-query](./readme-assets/example-query.png) +![bookmyshow-ui](./readme-assets/bookmyshow.png) diff --git a/readme-assets/bookmyshow.jpeg b/readme-assets/bookmyshow.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..1c7ca6355c654ccc7da683188cd172279e85eee9 GIT binary patch literal 36618 zcmeFZbzD^4+CRL3p@wddknU~}m4+F5=#uV`7R4Zj5=3I?A*D-60gFa*NEMK7F$hHw z#ovI+E#98{Ip_JE_x-$oyqnG5YhCO5UbS-Xwc*=~Z*u@CR28BMU|;|M2Kop1HU+=| z9Q1*UgNuiU3noDSkPs6R5|dDqlA(X7S*hr#&?hSsI}-!?SCW^LlUMSbxTyF!O=V?G zD>JLBSBo+JZv}j71IX||a7+d)3|0V>3f9ixdDbx75^+QGZJiRY&RmPCVrvt7R&mi(AZO_o86Od=o<+g8ZzxnTfLa^7N{({O=@jycTo@t>(s*K&pQ`I$BP!|uJw1P3h9&O7*3Ip)9*3` zoL3vf3`UE`3OKDq>DK;gPhOXx^t}zepW1D!>ct^l;L^*@cuG({xw6JRa%F8pd~>a(4 z?G!*}zIo9JEup}kgWdZJrKRSJtR0Ps=E3;`er zTbnf&+J5idQ#Df#9~Y8WUrsN*nhgtLn%h`rkxt(Jl!#`nVGl;5hjTR1La6$ZxE}%l z*g=FY7?7DEecgiAEuofLo^_`@y};3h?*3@m;tNK(mOs@H;d(`Qbpvy{by}z`eiSG3 ze{d_Kc^0oFFHrUZTkcjwgRBlDRc2l8Aaf|~^2@WFcuYwsrm%tZM@dD+h_gm~S|^k* z2N;DMA)h`IHZQTOmG5(CHN3-kJ$Pp(7)4}v)?CHkh1O$4)YAD^7*_Ix88*;RZcTYN zykbW{Z)BNu5x+_6Z+>C)zOKX!HaEOSkn!jas3CUfh3NA}wR3rfxxY#~O8Y$Elh36d zcgI9n__sdCwP5u6e)GwnJITvX)jPzEU2hKDLvjL&=~=w&W<7o>B_XBCZ|+&LNK>5T z{>uXVHfwMt#F(Qe-8Y4*Z6$r+Jbcm#?M{jNxI_!q0^tjA139IX;EU$Zdv6 z5rS?OzaGa{)bF0GE$d&o(Ea>4QYYy@a>T|C&XkywmBFx>7Jx-qIq6*RsywlBW<0;D z{0YEuc;?H8)|Y+9*O$7VB`o*d!0(qU`TQZ<;#we+$9-qsh`bf0=LxBXM!~X_j;am>kM1rI0kCYX_L>K>n9JfjMyfC=wqS(#78+csf zDD9cr7$^3;$~gN+Y-!sQ8IQI{Q0C3#kM#Z20Iv6q3fLcxhjyc=B z(y*OBN+U0~I%<(K-*ir4yl;7G@?UqI!wxLN)^ta#GNo-S$US@rPy1iX_A}AK5C;uW z$S29y%4=arvznc>;@^$*@A3RD$q!5IGGWymu{a6Qp+LHRFkY$p%0De5P3((^IlcU#!@!o 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 eP5dw4>QX8Lb3Z8}pz|vRaDiSa%M`va3iubFc Date: Thu, 25 May 2023 00:25:28 +0530 Subject: [PATCH 17/32] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dd2f963..879e89c 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) - [x] JWT Auth - [x] Normalisation of database - [x] Locking the DB while bulk operation with transactions -- [x] Indexing for better performance +- [] Indexing for better performance ### Example Query for the UI below From 342e536247cfdf4c0ec15045551dbb59823df55d Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Thu, 25 May 2023 00:26:09 +0530 Subject: [PATCH 18/32] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 879e89c..8cfc7c3 100644 --- a/README.md +++ b/README.md @@ -20,4 +20,4 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) ### Example Query for the UI below ![example-query](./readme-assets/example-query.png) -![bookmyshow-ui](./readme-assets/bookmyshow.png) +![bookmyshow-ui](./readme-assets/bookmyshow.jpeg) From 0ac2ca893c14d2c27a1cfd92f6e4499d9e6ebb58 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Thu, 25 May 2023 00:25:28 +0530 Subject: [PATCH 19/32] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dd2f963..879e89c 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) - [x] JWT Auth - [x] Normalisation of database - [x] Locking the DB while bulk operation with transactions -- [x] Indexing for better performance +- [] Indexing for better performance ### Example Query for the UI below From ec27531db60e1c646e96cda094612fb0e8979bfa Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Thu, 25 May 2023 00:26:09 +0530 Subject: [PATCH 20/32] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 879e89c..8cfc7c3 100644 --- a/README.md +++ b/README.md @@ -20,4 +20,4 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) ### Example Query for the UI below ![example-query](./readme-assets/example-query.png) -![bookmyshow-ui](./readme-assets/bookmyshow.png) +![bookmyshow-ui](./readme-assets/bookmyshow.jpeg) From 1e141fbdca3845e7563c96d3bdf4fd89f2a452ce Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Thu, 25 May 2023 00:27:53 +0530 Subject: [PATCH 21/32] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8cfc7c3..f348e26 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) - [x] JWT Auth - [x] Normalisation of database - [x] Locking the DB while bulk operation with transactions -- [] Indexing for better performance +- [ ] Indexing for better performance ### Example Query for the UI below From 02d002282151e8c141fd79a4ee18581eeb965aa3 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sat, 27 May 2023 11:55:16 +0530 Subject: [PATCH 22/32] update transaction --- src/controllers/shows.js | 23 +++++++++++++++-------- src/services/shows.js | 9 --------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/controllers/shows.js b/src/controllers/shows.js index ebb4b86..df54f5e 100644 --- a/src/controllers/shows.js +++ b/src/controllers/shows.js @@ -1,4 +1,6 @@ -import { getShowsByCinemaAndCity, bulkBook, getMaxSeats, getBookedSeats } from "../services/shows.js"; +import { getShowsByCinemaAndCity, getMaxSeats, getBookedSeats } from "../services/shows.js"; +import sequelize from "../helpers/sequelize.js"; +import { Booking } from "../models/index.js"; /** * @desc GET shows by city and date @@ -45,13 +47,18 @@ export const bookSeatForShow = async (req, res) => { try { const seatsToBook = req.body.seats; const showId = req.params.id; - const bookedSeats = await getBookedSeats(showId); - const seatsWhichCantBeBooked = seatsToBook.filter((value) => bookedSeats.includes(value)); - if (seatsWhichCantBeBooked.length) { - return res.status(400).send({ message: "These seats are already booked", seatsWhichCantBeBooked }); - } - const bookingsMade = await bulkBook(seatsToBook, showId, req.user.dataValues.id); - return res.status(200).send({ bookingsMade }); + await sequelize.transaction(async (transaction) => { + const bookedSeats = await getBookedSeats(showId); + const seatsWhichCantBeBooked = seatsToBook.filter((value) => bookedSeats.includes(value)); + if (seatsWhichCantBeBooked.length) { + return res.status(400).send({ message: "These seats are already booked", seatsWhichCantBeBooked }); + } + + // DO BULK BOOKING + const bookingsData = seatsToBook.map((seat) => ({ ShowId: showId, UserId: req.user.dataValues.id, seat })); + const bookingsMade = await Booking.bulkCreate(bookingsData); + return res.status(200).send({ bookingsMade }); + }); } catch (err) { console.log(err); return res.status(500).send({ diff --git a/src/services/shows.js b/src/services/shows.js index 430cfce..a93dce6 100644 --- a/src/services/shows.js +++ b/src/services/shows.js @@ -58,12 +58,3 @@ export const getBookedSeats = async (showId) => { const bookedSeats = result.map((booking) => booking.dataValues.seat); return bookedSeats; }; - -export const bulkBook = async (seatsToBook, showId, userId) => { - const bookingsData = seatsToBook.map((seat) => ({ ShowId: showId, UserId: userId, seat })); - const bookingsMade = await sequelize.transaction(async (transaction) => { - const bookingsMade = await Booking.bulkCreate(bookingsData); - return bookingsMade; - }); - return bookingsMade; -}; From 40af5cc6066fcec14353341af4000e7c1ff45aeb Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 28 May 2023 10:35:36 +0530 Subject: [PATCH 23/32] Add transaction & check for seat range --- src/controllers/shows.js | 18 +++++++++++++++--- src/services/shows.js | 17 +++++++++++------ 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/controllers/shows.js b/src/controllers/shows.js index df54f5e..fdd9891 100644 --- a/src/controllers/shows.js +++ b/src/controllers/shows.js @@ -47,16 +47,28 @@ export const bookSeatForShow = async (req, res) => { try { const seatsToBook = req.body.seats; const showId = req.params.id; + + // VALIDATE seat nos. + const maxSeatNo = Math.max(...seatsToBook); + const minSeatNo = Math.min(...seatsToBook); + + if (minSeatNo < 0) { + return res.status(400).send({ message: "Seat nos. cant be lesser than 0" }); + } + const maxSeatAvailable = await getMaxSeats(showId); + if (maxSeatNo > maxSeatAvailable) { + return res.status(400).send({ message: `The hall has seats till ${maxSeatAvailable}`, maxSeatAvailable }); + } await sequelize.transaction(async (transaction) => { - const bookedSeats = await getBookedSeats(showId); + const bookedSeats = await getBookedSeats(showId, transaction); const seatsWhichCantBeBooked = seatsToBook.filter((value) => bookedSeats.includes(value)); if (seatsWhichCantBeBooked.length) { - return res.status(400).send({ message: "These seats are already booked", seatsWhichCantBeBooked }); + return res.status(400).send({ message: "These seats are already booked", bookedSeats }); } // DO BULK BOOKING const bookingsData = seatsToBook.map((seat) => ({ ShowId: showId, UserId: req.user.dataValues.id, seat })); - const bookingsMade = await Booking.bulkCreate(bookingsData); + const bookingsMade = await Booking.bulkCreate(bookingsData, { transaction }); return res.status(200).send({ bookingsMade }); }); } catch (err) { diff --git a/src/services/shows.js b/src/services/shows.js index a93dce6..caa63ab 100644 --- a/src/services/shows.js +++ b/src/services/shows.js @@ -48,13 +48,18 @@ export const getMaxSeats = async (showId) => { return maxSeats; }; -export const getBookedSeats = async (showId) => { - const result = await Booking.findAll({ - attributes: ["seat"], - where: { - ShowId: showId, +export const getBookedSeats = async (showId, transaction = undefined) => { + const result = await Booking.findAll( + { + attributes: ["seat"], + where: { + ShowId: showId, + }, }, - }); + { + transaction, + } + ); const bookedSeats = result.map((booking) => booking.dataValues.seat); return bookedSeats; }; From 98ae0965614f0e88a0fe859f4ff1b92e4903aece Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 28 May 2023 10:54:49 +0530 Subject: [PATCH 24/32] Add comments about indexing --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f348e26..ecc9567 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,20 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) ![er-diagram](./readme-assets/er-diagram.png) +#### Which columns should be indexed? + +It's important to note that adding indexes also comes with some overhead, as they consume additional storage space and require maintenance during data modification operations (such as inserts, updates, and deletes). +Hence we should add them only when a bottleneck is observed. + +In this example indexing the foreign keys for Shows table would be good as this will speed up our joins. +Also if we want to prioritise them then indexing the HallId in Shows table should be prioritised as it is used more frequently than the rest. + ### Checklist - [x] JWT Auth - [x] Normalisation of database - [x] Locking the DB while bulk operation with transactions -- [ ] Indexing for better performance +- [x] Indexing for better performance ### Example Query for the UI below From c42f7f3aaf4e27edcb7b6c222806e384a3df9035 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 28 May 2023 10:55:19 +0530 Subject: [PATCH 25/32] typo fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ecc9567..5e6cb12 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ It's important to note that adding indexes also comes with some overhead, as the Hence we should add them only when a bottleneck is observed. In this example indexing the foreign keys for Shows table would be good as this will speed up our joins. -Also if we want to prioritise them then indexing the HallId in Shows table should be prioritised as it is used more frequently than the rest. +Also if we want to prioritize them then indexing the HallId in Shows table should be prioritized as it is used more frequently than the rest. ### Checklist From 642eb5f35931552c0fbb0344370197620efade8f Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 28 May 2023 10:55:44 +0530 Subject: [PATCH 26/32] typo fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e6cb12..948ca41 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Also if we want to prioritize them then indexing the HallId in Shows table shoul ### Checklist - [x] JWT Auth -- [x] Normalisation of database +- [x] Normalization of database - [x] Locking the DB while bulk operation with transactions - [x] Indexing for better performance From 5b6754ed75d004635b3c82e8c35e8ef12eaac275 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 11 Jun 2023 03:23:16 +0530 Subject: [PATCH 27/32] added caching layer for static movie details --- .env.example | 7 ++- package-lock.json | 83 +++++++++++++++++++++++++++++++++++ package.json | 1 + src/controllers/movies.js | 16 +++++++ src/middlewares/index.js | 2 + src/middlewares/validators.js | 25 +++++++++++ src/models/casts.js | 29 ++++++++++++ src/models/genres.js | 18 ++++++++ src/models/index.js | 2 + src/models/movies.js | 51 ++++++++++++++++++++- src/routes/index.js | 2 + src/routes/movies.js | 15 +++++++ src/services/cache.js | 37 ++++++++++++++++ src/services/movies.js | 35 +++++++++++++++ src/utils/asyncHandler.js | 3 ++ 15 files changed, 324 insertions(+), 2 deletions(-) create mode 100644 src/controllers/movies.js create mode 100644 src/middlewares/index.js create mode 100644 src/middlewares/validators.js create mode 100644 src/models/casts.js create mode 100644 src/models/genres.js create mode 100644 src/routes/movies.js create mode 100644 src/services/cache.js create mode 100644 src/services/movies.js create mode 100644 src/utils/asyncHandler.js diff --git a/.env.example b/.env.example index 0528735..0e2e537 100644 --- a/.env.example +++ b/.env.example @@ -3,4 +3,9 @@ DB_NAME='bookmyshow' DB_USER_NAME='panda' DB_PASSWORD='' -JWT_SECRET='secret' \ No newline at end of file +JWT_SECRET='secret' + + +REDIS_HOST=127.0.0.1 +REDIS_PORT=6379 +REDIS_DEFAULT_TIMEOUT_SECONDS=60 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d3b27f0..75da8b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "express": "^4.18.2", "jsonwebtoken": "^9.0.0", "mysql2": "^3.3.2", + "redis": "^4.6.7", "sequelize": "^6.31.1", "sequelize-cli": "^6.6.0" }, @@ -42,6 +43,59 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@redis/bloom": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", + "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.8.tgz", + "integrity": "sha512-xzElwHIO6rBAqzPeVnCzgvrnBEcFL1P0w8P65VNLRkdVW8rOE58f52hdj0BDgmsdOm4f1EoXPZtH4Fh7M/qUpw==", + "dependencies": { + "cluster-key-slot": "1.1.2", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/graph": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", + "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", + "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", + "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz", + "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, "node_modules/@types/debug": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", @@ -340,6 +394,14 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -822,6 +884,14 @@ "is-property": "^1.0.2" } }, + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "engines": { + "node": ">= 4" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1761,6 +1831,19 @@ "node": ">=8.10.0" } }, + "node_modules/redis": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.7.tgz", + "integrity": "sha512-KrkuNJNpCwRm5vFJh0tteMxW8SaUzkm5fBH7eL5hd/D0fAkzvapxbfGPP/r+4JAXdQuX7nebsBkBqA2RHB7Usw==", + "dependencies": { + "@redis/bloom": "1.2.0", + "@redis/client": "1.5.8", + "@redis/graph": "1.1.0", + "@redis/json": "1.0.4", + "@redis/search": "1.1.3", + "@redis/time-series": "1.0.4" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", diff --git a/package.json b/package.json index 6e42771..938235f 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "express": "^4.18.2", "jsonwebtoken": "^9.0.0", "mysql2": "^3.3.2", + "redis": "^4.6.7", "sequelize": "^6.31.1", "sequelize-cli": "^6.6.0" }, diff --git a/src/controllers/movies.js b/src/controllers/movies.js new file mode 100644 index 0000000..f585492 --- /dev/null +++ b/src/controllers/movies.js @@ -0,0 +1,16 @@ +import sequelize from "../helpers/sequelize.js"; +import { Movie } from "../models/index.js"; + +/** + * @desc GET shows by city and date + */ +export const getMovieById = async (req, res) => { + try { + res.json(req.movie); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while getting movies", + }); + } +}; diff --git a/src/middlewares/index.js b/src/middlewares/index.js new file mode 100644 index 0000000..17cb2d9 --- /dev/null +++ b/src/middlewares/index.js @@ -0,0 +1,2 @@ +export { default as isAuthenticated } from "./auth.js"; +export { default as validateMovieId } from "./validators.js"; diff --git a/src/middlewares/validators.js b/src/middlewares/validators.js new file mode 100644 index 0000000..6b148d2 --- /dev/null +++ b/src/middlewares/validators.js @@ -0,0 +1,25 @@ +/** + * Middleware Validators + */ +import { Movie, Genre, Cast } from "../models/index.js"; +import { getMovieById } from "../services/movies.js"; + +export async function validateMovieId(req, res, next) { + const { id } = req.params; + + try { + const movie = await getMovieById(id); + if (movie) { + // Movie with the given id exists + req.movie = movie; + next(); + } else { + // Movie with the given id does not exist + res.status(404).json({ error: "Invalid MovieId" }); + } + } catch (error) { + console.log(error); + // Error occurred while querying the database + res.status(500).json({ error }); + } +} diff --git a/src/models/casts.js b/src/models/casts.js new file mode 100644 index 0000000..5fa5f83 --- /dev/null +++ b/src/models/casts.js @@ -0,0 +1,29 @@ +import sequelize from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; +import { Movie } from "./index.js"; + +const Cast = sequelize.define("Cast", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notNull: { + msg: "Name is required.", + }, + notEmpty: { + msg: "Name cannot be empty.", + }, + len: { + args: [2, 255], + msg: "Name must be between 2 and 255 characters long.", + }, + }, + }, +}); + +export default Cast; diff --git a/src/models/genres.js b/src/models/genres.js new file mode 100644 index 0000000..f89b4d2 --- /dev/null +++ b/src/models/genres.js @@ -0,0 +1,18 @@ +import sequelize from "../helpers/sequelize.js"; +import { DataTypes } from "sequelize"; +import { Movie } from "./index.js"; + +const Genre = sequelize.define("Genre", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.ENUM("Action", "Comedy", "Drama", "Thriller", "Sci-Fi"), + allowNull: false, + unique: true, + }, +}); + +export default Genre; diff --git a/src/models/index.js b/src/models/index.js index 3368d3e..97a6a4a 100644 --- a/src/models/index.js +++ b/src/models/index.js @@ -5,3 +5,5 @@ export { default as Hall } from "./halls.js"; export { default as Cinema } from "./cinemas.js"; export { default as AudioSystem } from "./audioSystems.js"; export { default as Show } from "./shows.js"; +export { default as Genre } from "./genres.js"; +export { default as Cast } from "./casts.js"; diff --git a/src/models/movies.js b/src/models/movies.js index 28ac6c2..9dda44d 100644 --- a/src/models/movies.js +++ b/src/models/movies.js @@ -1,5 +1,7 @@ import sequelize from "../helpers/sequelize.js"; import { DataTypes } from "sequelize"; +import Cast from "./casts.js"; +import Genre from "./genres.js"; const Movie = sequelize.define("Movie", { id: { @@ -11,12 +13,59 @@ const Movie = sequelize.define("Movie", { type: DataTypes.STRING, allowNull: false, unique: true, + validate: { + notNull: { + msg: "Name is required.", + }, + notEmpty: { + msg: "Name cannot be empty.", + }, + }, }, duration: { type: DataTypes.INTEGER, allowNull: false, + validate: { + notNull: { + msg: "Duration is required.", + }, + min: { + args: [1], + msg: "Duration must be a positive integer.", + }, + }, + }, + moviePlot: { + type: DataTypes.TEXT, + allowNull: false, + validate: { + notNull: { + msg: "Movie plot is required.", + }, + notEmpty: { + msg: "Movie plot cannot be empty.", + }, + }, + }, +}); +// Define the join table +const GenreMovie = sequelize.define("GenreMovie", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, +}); +// Define the join table +export const CastMovie = sequelize.define("CastMovie", { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, }, }); +Movie.belongsToMany(Cast, { through: CastMovie, as: "cast" }); +Movie.belongsToMany(Genre, { through: GenreMovie, as: "genres" }); sequelize .sync() @@ -24,7 +73,7 @@ sequelize console.log("Movie table created successfully!"); }) .catch((error) => { - console.error("Movie to create table : ", error); + console.error("Failed to create Movie table:", error); }); export default Movie; diff --git a/src/routes/index.js b/src/routes/index.js index 0861f77..ac515e3 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -1,10 +1,12 @@ import express from "express"; import authRouter from "./auth.js"; import showsRouter from "./shows.js"; +import moviesRouter from "./movies.js"; import { isAuthenticated } from "../middlewares/auth.js"; const router = express.Router(); router.use("/api/auth", authRouter); router.use("/api/shows", isAuthenticated, showsRouter); +router.use("/api/movies", isAuthenticated, moviesRouter); export default router; diff --git a/src/routes/movies.js b/src/routes/movies.js new file mode 100644 index 0000000..e7957b4 --- /dev/null +++ b/src/routes/movies.js @@ -0,0 +1,15 @@ +import express from "express"; +import { getMovieById } from "../controllers/movies.js"; +import { validateMovieId } from "../middlewares/validators.js"; +import { asyncHandler } from "../utils/asyncHandler.js"; + +const router = express.Router(); + +/** + * @route GET /api/movies/:id + * @desc Get details of movies + * @access Private + */ +router.get("/:id", asyncHandler(validateMovieId), getMovieById); + +export default router; diff --git a/src/services/cache.js b/src/services/cache.js new file mode 100644 index 0000000..70bbcd2 --- /dev/null +++ b/src/services/cache.js @@ -0,0 +1,37 @@ +import redis from "redis"; + +let redisClient; + +(async () => { + redisClient = redis.createClient({ + port: process.env.REDIS_PORT, + host: process.env.REDIS_HOST, + }); + + redisClient.on("error", (error) => console.error(`REDIS CONN Error : ${error}`)); + + await redisClient.connect(); +})(); + +// Get a value from Redis +export const getValueCache = async (key) => { + try { + const value = await redisClient.get(key); + console.log("Got value from Redis for ", key); + return JSON.parse(value); + } catch (error) { + console.error(`Error getting value for key ${key}: ${error}`); + return null; + } +}; + +// Set a value in Redis +export const setValueCache = async (key, value, timeoutSeconds = process.env.REDIS_DEFAULT_TIMEOUT_SECONDS) => { + try { + // console.log(key, value, timeoutSeconds); + await redisClient.set(key, JSON.stringify(value), "EX", timeoutSeconds); + console.log("Set value from Redis for ", key); + } catch (error) { + console.error(`Error setting value for key ${key}: ${error}`); + } +}; diff --git a/src/services/movies.js b/src/services/movies.js new file mode 100644 index 0000000..ba6622a --- /dev/null +++ b/src/services/movies.js @@ -0,0 +1,35 @@ +/** + * Middleware Validators + */ +import { Movie, Cast, Genre } from "../models/index.js"; +import { setValueCache, getValueCache } from "./cache.js"; + +export const getMovieById = async (id) => { + try { + const cacheValue = await getValueCache(`movie-${id}`); + if (cacheValue !== null) { + return cacheValue; + } + const movie = await Movie.findByPk(id, { + include: [ + { + model: Cast, + as: "cast", + attributes: ["name"], + through: { attributes: [] }, // Exclude intermediate table properties + }, + { + model: Genre, + as: "genres", + attributes: ["name"], + through: { attributes: [] }, // Exclude intermediate table properties + }, + ], + }); + await setValueCache(`movie-${id}`, movie); + return movie; + } catch (error) { + console.error(`Error getting value for key ${id}: ${error}`); + return null; + } +}; diff --git a/src/utils/asyncHandler.js b/src/utils/asyncHandler.js new file mode 100644 index 0000000..b2f64f3 --- /dev/null +++ b/src/utils/asyncHandler.js @@ -0,0 +1,3 @@ +export const asyncHandler = (fn) => async (req, res, next) => { + await fn(req, res, next).catch(next); +}; From 4bebef65f25c5f27d7eda5ac3c3df4c2ff53456e Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 11 Jun 2023 06:48:01 +0530 Subject: [PATCH 28/32] add elastic search endpoint for query --- .env.example | 4 +- invalid.json | 33 ++++++++++ invalid2.json | 38 +++++++++++ package-lock.json | 72 +++++++++++++++++++++ package.json | 1 + src/configs/axios.js | 10 +++ src/configs/logstash-bookmyshow.conf | 21 ++++++ src/controllers/shows.js | 18 +++++- src/routes/shows.js | 9 ++- src/scripts/sync_logstash_elastic_search.sh | 21 ++++++ src/services/shows.js | 55 ++++++++++++++++ 11 files changed, 279 insertions(+), 3 deletions(-) create mode 100644 invalid.json create mode 100644 invalid2.json create mode 100644 src/configs/axios.js create mode 100644 src/configs/logstash-bookmyshow.conf create mode 100644 src/scripts/sync_logstash_elastic_search.sh diff --git a/.env.example b/.env.example index 0e2e537..53fd159 100644 --- a/.env.example +++ b/.env.example @@ -8,4 +8,6 @@ JWT_SECRET='secret' REDIS_HOST=127.0.0.1 REDIS_PORT=6379 -REDIS_DEFAULT_TIMEOUT_SECONDS=60 \ No newline at end of file +REDIS_DEFAULT_TIMEOUT_SECONDS=60 + +ELASTIC_SEARCH_PORT=9200 \ No newline at end of file diff --git a/invalid.json b/invalid.json new file mode 100644 index 0000000..3558495 --- /dev/null +++ b/invalid.json @@ -0,0 +1,33 @@ +{ + "query": { + "bool": { + "filter": [ + { + "bool": { + "should": [ + { + "term": { + "dimension.keyword": "30D" + } + } + ], + "minimum_should_match": 0 + } + } + ], + "should": [ + { + "multi_match": { + "query": "Guardians", + "fields": [ + "moviename", + "hallname" + ], + "fuzziness": "AUTO" + } + } + ], + "minimum_should_match": 0 + } + } +} \ No newline at end of file diff --git a/invalid2.json b/invalid2.json new file mode 100644 index 0000000..075df8e --- /dev/null +++ b/invalid2.json @@ -0,0 +1,38 @@ +{ + "query": { + "bool": { + "filter": [ + { + "bool": { + "should": [ + { + "term": { + "language.keyword": "ENGLISH" + } + }, + { + "term": { + "dimension.keyword": "300D" + } + } + ], + "minimum_should_match": 0 + } + } + ], + "should": [ + { + "multi_match": { + "query": "", + "fields": [ + "moviename", + "hallname" + ], + "fuzziness": "AUTO" + } + } + ], + "minimum_should_match": 0 + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 75da8b3..476a3a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { + "axios": "^1.4.0", "bcrypt": "^5.1.0", "cors": "^2.8.5", "dotenv": "^16.0.3", @@ -225,6 +226,11 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -233,6 +239,16 @@ "node": ">= 4.0.0" } }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -426,6 +442,17 @@ "color-support": "bin.js" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -511,6 +538,14 @@ "ms": "2.0.0" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -781,6 +816,38 @@ "node": ">= 0.8" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -1759,6 +1826,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", diff --git a/package.json b/package.json index 938235f..d2fb7ab 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ }, "homepage": "https://github.com/aashutoshPanda/News-Aggregator-API#readme", "dependencies": { + "axios": "^1.4.0", "bcrypt": "^5.1.0", "cors": "^2.8.5", "dotenv": "^16.0.3", diff --git a/src/configs/axios.js b/src/configs/axios.js new file mode 100644 index 0000000..16e0ea8 --- /dev/null +++ b/src/configs/axios.js @@ -0,0 +1,10 @@ +import dotenv from "dotenv"; +dotenv.config({ path: ".env.example" }); + +export const axiosConfig = { + maxBodyLength: Infinity, + url: `http://localhost:${process.env.ELASTIC_SEARCH_PORT}/shows/_search`, + headers: { + "Content-Type": "application/json", + }, +}; diff --git a/src/configs/logstash-bookmyshow.conf b/src/configs/logstash-bookmyshow.conf new file mode 100644 index 0000000..8ac9f37 --- /dev/null +++ b/src/configs/logstash-bookmyshow.conf @@ -0,0 +1,21 @@ +input { + jdbc { + jdbc_driver_library => "/usr/share/java/mysql-connector-java-8.0.33.jar" + jdbc_driver_class => "com.mysql.jdbc.Driver" + jdbc_connection_string => "jdbc:mysql://localhost:3306/bookmyshow" + jdbc_user => panda + jdbc_password => "" + statement => "select sh.id, sh.language, sh.dimension , hall.name as hallName, mov.name as MovieName from Shows sh inner join Halls hall on sh.HallId=hall.id inner join Movies mov on sh.MovieId=mov.id;" + } +} +output { + elasticsearch { + document_id => "%{id}" + document_type => "doc" + index => "shows" + hosts => ["http://localhost:9200"] + } + stdout{ + codec => rubydebug + } +} diff --git a/src/controllers/shows.js b/src/controllers/shows.js index fdd9891..9d38bfa 100644 --- a/src/controllers/shows.js +++ b/src/controllers/shows.js @@ -1,4 +1,4 @@ -import { getShowsByCinemaAndCity, getMaxSeats, getBookedSeats } from "../services/shows.js"; +import { getShowsByCinemaAndCity, getMaxSeats, getBookedSeats, searchShowsFromElastic } from "../services/shows.js"; import sequelize from "../helpers/sequelize.js"; import { Booking } from "../models/index.js"; @@ -78,3 +78,19 @@ export const bookSeatForShow = async (req, res) => { }); } }; + +/** + * @desc GET search for shows with filter and query term + */ +export const searchShows = async (req, res) => { + try { + const { dimension, language, query = "" } = req.query; + const elasticSearchResults = await searchShowsFromElastic({ dimension, language, query }); + return res.status(200).send(elasticSearchResults); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while searching for shows", + }); + } +}; diff --git a/src/routes/shows.js b/src/routes/shows.js index 10187b1..1c2cb46 100644 --- a/src/routes/shows.js +++ b/src/routes/shows.js @@ -1,8 +1,15 @@ import express from "express"; -import { getSeats, getShowsByCinemaAndDate, bookSeatForShow } from "../controllers/shows.js"; +import { getSeats, getShowsByCinemaAndDate, bookSeatForShow, searchShows } from "../controllers/shows.js"; const router = express.Router(); +/** + * @route GET /api/shows/search?dimension=3D&language=ENGLISH&term=FastX + * @desc Search for shows + * @access Private + */ +router.get("/search/filters", searchShows); + /** * @route GET /api/shows/:city/:date * @desc Get details of shows in a city diff --git a/src/scripts/sync_logstash_elastic_search.sh b/src/scripts/sync_logstash_elastic_search.sh new file mode 100644 index 0000000..1370dc6 --- /dev/null +++ b/src/scripts/sync_logstash_elastic_search.sh @@ -0,0 +1,21 @@ +set -x + +SCRIPT_DIR="$(dirname "$(realpath "$0")")" +cd "$SCRIPT_DIR" + +LOGSTASH_BIN_DIR="/usr/share/logstash/bin" +PROJECT_SRC_DIR="$(dirname $SCRIPT_DIR)" +PROJECT_CONGFIG_DIR="$PROJECT_SRC_DIR/configs" +LOGSTASH_CONF_FILE_NAME="logstash-bookmyshow.conf" + +LOCAL_LOGSTASH_CONF_PATH="${PROJECT_CONGFIG_DIR}/${LOGSTASH_CONF_FILE_NAME}" +USR_LOGSTASH_CONF_PATH="${LOGSTASH_BIN_DIR}/${LOGSTASH_CONF_FILE_NAME}" + + +# move config file to usr location +rm -rf "${USR_LOGSTASH_CONF_PATH}" +cp "${LOCAL_LOGSTASH_CONF_PATH}" ${LOGSTASH_BIN_DIR} + +# load to elastic search +cd $LOGSTASH_BIN_DIR +./logstash -f $LOGSTASH_CONF_FILE_NAME \ No newline at end of file diff --git a/src/services/shows.js b/src/services/shows.js index caa63ab..f948d28 100644 --- a/src/services/shows.js +++ b/src/services/shows.js @@ -1,5 +1,7 @@ import { Show, Hall, Movie, AudioSystem, Cinema, Booking } from "../models/index.js"; +import axios from "axios"; import sequelize from "../helpers/sequelize.js"; +import { axiosConfig } from "../configs/axios.js"; export const getShowsByCinemaAndCity = async (cinemaId, date) => { const shows = await Show.findAll({ @@ -63,3 +65,56 @@ export const getBookedSeats = async (showId, transaction = undefined) => { const bookedSeats = result.map((booking) => booking.dataValues.seat); return bookedSeats; }; + +const fetchData = async () => { + try { + console.log(JSON.stringify(response.data)); + } catch (error) { + console.log(error); + } +}; + +fetchData(); + +export const searchShowsFromElastic = async ({ language, dimension, query }) => { + const shouldConditions = []; + if (language) { + shouldConditions.push({ term: { "language.keyword": language } }); + } + if (dimension) { + shouldConditions.push({ term: { "dimension.keyword": dimension } }); + } + const requestBody = { + query: { + bool: { + filter: [ + { + bool: { + should: shouldConditions, + minimum_should_match: 0, + }, + }, + ], + should: [ + { + multi_match: { + query, + fields: ["moviename", "hallname"], + fuzziness: "AUTO", + }, + }, + ], + minimum_should_match: 0, + }, + }, + }; + console.log(JSON.stringify(requestBody)); + const requestConfig = { + ...axiosConfig, + method: "get", + data: JSON.stringify(requestBody), + }; + + const response = await axios(requestConfig); + return response.data; +}; From b79c64f5b181c1993231b3025396368a2805fb24 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 11 Jun 2023 18:55:31 +0530 Subject: [PATCH 29/32] Add comments for a movie --- .env.example | 5 +- index.js | 4 +- invalid.json | 33 ------ invalid2.json | 38 ------ package-lock.json | 236 ++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/controllers/movies.js | 45 +++++++- src/helpers/mongoose.js | 17 +++ src/models/comments.js | 44 +++++++ src/models/index.js | 1 + src/routes/movies.js | 15 ++- src/services/shows.js | 10 -- 12 files changed, 362 insertions(+), 87 deletions(-) delete mode 100644 invalid.json delete mode 100644 invalid2.json create mode 100644 src/helpers/mongoose.js create mode 100644 src/models/comments.js diff --git a/.env.example b/.env.example index 53fd159..7bca5ed 100644 --- a/.env.example +++ b/.env.example @@ -10,4 +10,7 @@ REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_DEFAULT_TIMEOUT_SECONDS=60 -ELASTIC_SEARCH_PORT=9200 \ No newline at end of file +ELASTIC_SEARCH_PORT=9200 + +MONGODB_URI=mongodb+srv://iamashutoshpanda:hGEvTJ8tHUa3Hxgd@cluster0.cgcoqnr.mongodb.net/?retryWrites=true&w=majority +NODE_ENV='UAT' \ No newline at end of file diff --git a/index.js b/index.js index 34cb726..41cd466 100644 --- a/index.js +++ b/index.js @@ -2,14 +2,14 @@ import dotenv from "dotenv"; dotenv.config({ path: ".env.example" }); import express from "express"; import routes from "./src/routes/index.js"; - +import connectDB from "./src/helpers/mongoose.js"; // Make all variables from our .env file available in our process // Init express server const app = express(); //rate limit - +await connectDB(); app.use(express.json()); app.use(express.urlencoded({ extended: true })); diff --git a/invalid.json b/invalid.json deleted file mode 100644 index 3558495..0000000 --- a/invalid.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "query": { - "bool": { - "filter": [ - { - "bool": { - "should": [ - { - "term": { - "dimension.keyword": "30D" - } - } - ], - "minimum_should_match": 0 - } - } - ], - "should": [ - { - "multi_match": { - "query": "Guardians", - "fields": [ - "moviename", - "hallname" - ], - "fuzziness": "AUTO" - } - } - ], - "minimum_should_match": 0 - } - } -} \ No newline at end of file diff --git a/invalid2.json b/invalid2.json deleted file mode 100644 index 075df8e..0000000 --- a/invalid2.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "query": { - "bool": { - "filter": [ - { - "bool": { - "should": [ - { - "term": { - "language.keyword": "ENGLISH" - } - }, - { - "term": { - "dimension.keyword": "300D" - } - } - ], - "minimum_should_match": 0 - } - } - ], - "should": [ - { - "multi_match": { - "query": "", - "fields": [ - "moviename", - "hallname" - ], - "fuzziness": "AUTO" - } - } - ], - "minimum_should_match": 0 - } - } -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 476a3a9..a3e578d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "dotenv": "^16.0.3", "express": "^4.18.2", "jsonwebtoken": "^9.0.0", + "mongoose": "^7.2.3", "mysql2": "^3.3.2", "redis": "^4.6.7", "sequelize": "^6.31.1", @@ -120,6 +121,20 @@ "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.17.tgz", "integrity": "sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ==" }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -325,6 +340,14 @@ "node": ">=8" } }, + "node_modules/bson": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.3.0.tgz", + "integrity": "sha512-ukmCZMneMlaC5ebPHXIkP8YJzNl5DC41N5MAIvKDqLggdao342t4McltoJBQfQya/nHBWAcSsYRqlXPoQkTJag==", + "engines": { + "node": ">=14.20.1" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -1144,6 +1167,11 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -1343,6 +1371,14 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -1417,6 +1453,12 @@ "timers-ext": "^0.1.7" } }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -1532,6 +1574,144 @@ "node": "*" } }, + "node_modules/mongodb": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.5.0.tgz", + "integrity": "sha512-XgrkUgAAdfnZKQfk5AsYL8j7O99WHd4YXPxYxnh8dZxD+ekYWFRA3JktUsBnfg+455Smf75/+asoU/YLwNGoQQ==", + "dependencies": { + "bson": "^5.3.0", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": ">=2.3.0 <3", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongoose": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.2.3.tgz", + "integrity": "sha512-ClHD73HiqMk4hcOhdlZxluldokZfXvkrxjdKuqI7UQWLM71OIoy+n+OS+OHz4qJhS+/UaPzemQDKYtVrl4l0Ig==", + "dependencies": { + "bson": "^5.3.0", + "kareem": "2.5.1", + "mongodb": "5.5.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1842,6 +2022,14 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -1983,6 +2171,18 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/semver": { "version": "7.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", @@ -2178,6 +2378,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, "node_modules/sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", @@ -2209,6 +2414,37 @@ "semver": "bin/semver.js" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, "node_modules/sqlstring": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", diff --git a/package.json b/package.json index d2fb7ab..defaf0e 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "dotenv": "^16.0.3", "express": "^4.18.2", "jsonwebtoken": "^9.0.0", + "mongoose": "^7.2.3", "mysql2": "^3.3.2", "redis": "^4.6.7", "sequelize": "^6.31.1", diff --git a/src/controllers/movies.js b/src/controllers/movies.js index f585492..2e71dbd 100644 --- a/src/controllers/movies.js +++ b/src/controllers/movies.js @@ -1,5 +1,4 @@ -import sequelize from "../helpers/sequelize.js"; -import { Movie } from "../models/index.js"; +import { Comment } from "../models/index.js"; /** * @desc GET shows by city and date @@ -14,3 +13,45 @@ export const getMovieById = async (req, res) => { }); } }; + +/** + * @desc GET comments for a movie + */ +export const getCommentsForMovie = async (req, res) => { + try { + const { id } = req.params; + + // Find all comments with the specified movieSQLId + const comments = await Comment.find({ movieSQLId: id }); + + res.status(200).json(comments); + } catch (error) { + res.status(500).json({ error: "An error occurred while retrieving comments" }); + } +}; + +/** + * @desc POST comments for a movie + */ +export const postCommentForMovie = async (req, res) => { + try { + const { id } = req.params; + const { content } = req.body; + + // Create a new comment instance + const comment = new Comment({ + movieSQLId: id, // Replace with the actual movie SQL ID + content: content, + userSQLId: req.user.id, + }); + + // Save the comment to the database + const newComment = await comment.save(); + res.status(201).json(newComment); + } catch (err) { + console.log(err); + return res.status(500).send({ + message: "Something went wrong while getting movies", + }); + } +}; diff --git a/src/helpers/mongoose.js b/src/helpers/mongoose.js new file mode 100644 index 0000000..062aefa --- /dev/null +++ b/src/helpers/mongoose.js @@ -0,0 +1,17 @@ +import mongoose from "mongoose"; + +const connectDB = async () => { + try { + // MongoDB setup. + const connectionURI = process.env.NODE_ENV === "TEST" ? process.env.MONGODB_TEST_URI : process.env.MONGODB_URI; + console.log("connected to ", connectionURI); + await mongoose.connect(connectionURI); + } catch ({ message }) { + console.error("Error with mongo setup", message); + console.log("%s MongoDB connection error. Please make sure MongoDB is running."); + // Exit process with failure + process.exit(1); + } +}; + +export default connectDB; diff --git a/src/models/comments.js b/src/models/comments.js new file mode 100644 index 0000000..1fbecf4 --- /dev/null +++ b/src/models/comments.js @@ -0,0 +1,44 @@ +import mongoose from "mongoose"; + +const commentSchema = new mongoose.Schema({ + movieSQLId: { + type: Number, + required: true, + validate: { + validator: (value) => { + return Number.isInteger(value) && value > 0; + }, + message: "movieSQLId must be a positive integer", + }, + }, + userSQLId: { + type: Number, + required: true, + validate: { + validator: (value) => { + return Number.isInteger(value) && value > 0; + }, + message: "userSQLId must be a positive integer", + }, + }, + content: { + type: String, + required: true, + minlength: 1, + maxlength: 500, // Maximum length of 500 characters + }, + children: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Comment", // Referring to the same schema for child comments + }, + ], + timestamp: { + type: Date, + default: Date.now, + }, +}); + +const Comment = mongoose.model("Comment", commentSchema); + +export default Comment; diff --git a/src/models/index.js b/src/models/index.js index 97a6a4a..ddf7b6d 100644 --- a/src/models/index.js +++ b/src/models/index.js @@ -7,3 +7,4 @@ export { default as AudioSystem } from "./audioSystems.js"; export { default as Show } from "./shows.js"; export { default as Genre } from "./genres.js"; export { default as Cast } from "./casts.js"; +export { default as Comment } from "./comments.js"; diff --git a/src/routes/movies.js b/src/routes/movies.js index e7957b4..4386cb5 100644 --- a/src/routes/movies.js +++ b/src/routes/movies.js @@ -1,5 +1,5 @@ import express from "express"; -import { getMovieById } from "../controllers/movies.js"; +import { getMovieById, getCommentsForMovie, postCommentForMovie } from "../controllers/movies.js"; import { validateMovieId } from "../middlewares/validators.js"; import { asyncHandler } from "../utils/asyncHandler.js"; @@ -12,4 +12,17 @@ const router = express.Router(); */ router.get("/:id", asyncHandler(validateMovieId), getMovieById); +/** + * @route GET /api/movies/comments/:id + * @desc Get comments for a movie + * @access Private + */ +router.get("/comments/:id", asyncHandler(validateMovieId), getCommentsForMovie); + +/** + * @route POST /api/movies/comments/:id + * @desc Post comment for a movie + * @access Private + */ +router.post("/comments/:id", asyncHandler(validateMovieId), postCommentForMovie); export default router; diff --git a/src/services/shows.js b/src/services/shows.js index f948d28..e11e942 100644 --- a/src/services/shows.js +++ b/src/services/shows.js @@ -66,16 +66,6 @@ export const getBookedSeats = async (showId, transaction = undefined) => { return bookedSeats; }; -const fetchData = async () => { - try { - console.log(JSON.stringify(response.data)); - } catch (error) { - console.log(error); - } -}; - -fetchData(); - export const searchShowsFromElastic = async ({ language, dimension, query }) => { const shouldConditions = []; if (language) { From 21c84db68566f05a84ed746e5aac46b9b89b9c5d Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 11 Jun 2023 20:33:01 +0530 Subject: [PATCH 30/32] update schema leastic search and diagrams --- readme-assets/er-diagram.png | Bin 98534 -> 52869 bytes readme-assets/example-query.png | Bin 133028 -> 106569 bytes src/configs/logstash-bookmyshow.conf | 2 +- src/controllers/shows.js | 4 ++-- src/services/shows.js | 15 +++++++++++++-- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/readme-assets/er-diagram.png b/readme-assets/er-diagram.png index 600ae7aa26e6e8718983d72bf0eba29b860c7442..f9bb09030585a03cfa67021a1206ca3d29fb8229 100644 GIT binary patch literal 52869 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 literal 98534 zcmd?Qbx>SS*Dgweh2R8tcXyZI!GZ;McV}=2?jBr%hv4oyXt3ZixCUo%=M4G1?|Z&` z>O1FD-MatXT~y7?rn`6d>b0KrthIVad{&f3evkhi3JMBYRz^Yv3JQ7v3hM3pJ2=Rl zFCXmnAs;XQL&Mu}#o}}ztqzbPetn3`5Z0!7OZ2X+;q+$x& z?+r4bph%%)CB)P`vW`|febi?=p1~8V7N5q41<^=@VR{9JX#=4HRn@bw%G~Q`m#!PT zzSud?*w8f0gO*lTt)+DiKZ77`Slh;7D?>83o{x5h@cZJav_v6`r?2p*b8Hk>Jm*9L?c3UCWDIol zgf|<4=de{1JZNs=;o*PQNYT;J@zA7UP0$nKfWLcF;ag!KchD0Q-SDHCMh;H-w{hjC zO_h4azcPz^8Ja%h`aVJWg@!!H9m{Uly5MW$U*98&VX7kfNrwB+Br zl*Mj-7fejBSbTo>_pf84^A)*v4mNj{q4CB1Ih1~Fv^|qwH1khKjOqW`(JHP+#$b9r z?)8B~bduiDN*o~j7w@pR!58rEo1c{K`~U7fbr%h0!^^0V0bkodp!g*EaVF8{g^L6!SOSI zgZxp6mn5j@3|+d#Z6U!v)Gs6jZjd|uHpCD&OP&iwoj}P5O7px5*(TB)Ks-&wz#GEn z3+b(KpZdr1Xz`O^MR6yK1C~7Bv-P3kM zy$+t3vifELV=@+#B&p{Gbt}?@;nn+jWzBb!+RXP=IL$9p@`BWwMj~!Su(q1df^pAa zE$$hKxIZi*O7#s*5skN{bcTxU_xVAFac?oAg9>)RMA~o>Fwyh4e-^VTtG&+Nz0DxZpxkUEQ*MEs zmFg<}EDZHx$DqoZ$Hit#@NJ-;XCWM1$g`nc zJtVgn(2^%$3$O3vCHxZ5d!ui@Uun+TZko#$rM2ZO6V+r@NoW3$!R4bi<-?lnF`Vg( zq8e6`khtDs)b#taa^GA7No`U4j^i8ix4@Ed)1@DIg`UW7)gKmapW$uGkc>X8-QB`M zq12iiOxV@E$v^TvJZ*2`N!Zsg==rhfe=(Zzb53i^!C(S zoFHOZW&Bmxy-r7#Mvm{-*)EU7+^6k_@|D{ck5Y3^1Fc6TX8)UM-Mg|e38(m`KV*In z4J}A=V6@T|;KRgYVy@sL^G;ZC@|df+-!5~f)3gsY3fSm@VX@1bVnWc7N6B7kXSr$> zNR%pXc3G_^nD;4V74QMjr8#zHa%E%g1O}Y!$z2S@bI^u(WYB6~5Gu9f8Sl=fI?pvT z3dV$#dpwpbKcu?NFg!*6H8*ar_Cen5NQ;9oC6#Y{vCzO`)zlQ}g&jKqdu{Z@gQ#J8 zki_*f7jM3FSmDV)Ezl@GjaMG}ES}GYHv;+4)7y+sY&u479;tEodpeF2SYn~hobPlV zw=gb!U^I%Q4}3mSUJ)I*L2dWP(5K;0tFbon2SWnc*0|v{4Ri0)d6$*}7Hk$$jwd?K zHcySyY-ahTH!imwiVJg=?AGQtOvzS!5rlA+4kx-1zIoM-+?<)AT_^c<+#$X#dtTE zfXw)lhjBO0K}1Tjpy&Hy?p~Y03m?GY1!m2!13i3R*hfQ<`-isHI^lIe;w9*0k4BVqqMvG(w=m> z*6_{3?*eV@IoEt@&o}+lf9p+WyAhd)fp>J*+L8(5tGPIT+6Su~R0Dwn`%SFw7l>Ik z*9cHZ!0yK5#(nWy2sfT59O+FkE?K0U9Box3)a;5+rPr+|CtvN&Dm^VdU>VsGf3wO@&4$s|vH91eb;&x6QPO2U5(w>M3K?cpS z>NeaT%!JH#OIs_NL0Yy;9Y9#i%?oE^(orgw5I`;GsBez~|*6@h#*>nW+) zgLVPgN(S;GbC%Uz`m6*rmj( z4*kV#XXit(inY>^l6_Cx(S%6qeKO&Js&nfRXT{F|y2BjafyAk~`HCsG$A>55-bq%b zF$GRI@?&$*5wNT2bWk|0^ys<@6ee^2x0*Yz_q2Xj2M`Shf&(0TcH?(ob+PX z?hnJ~<9;?}K2yBm?z%^MsFP-MI;YN-=}=^XEx*SJ1VRvLWYdK{-!$vf(JgDPH| z`DvlX*PF&WTF2i8d3*%HqvWjrr8A80nW%hacBV{AMS9hgno?@92|$7^OB5ILOxX3< z&!jo=oOLQ(oo+18f5=c0@46Lg>T#lpn#n53vhr#hynb zS(bDSuYfp2S2V~mz;pt0{(hCb?bi2KZ3zSrJI{e zWS6){DRA@*^xj+-7W3-LMCsk@WD&SnR~27J<&FOsl5AwqA29Lf#&9O$X6;a^=!gfw zy8ALUO!BfPBH_Ew5(}w<%+4dwA_75M1HsG|9&N`Y-6+$a+hf%G+ZJ8szUi_#A!(7Q zJAa3t9?%=ZZ0fKF8RAC!9w8pxE*CUEVreR}C@X!`0c}m3+6mttSsNO zT=_gtW(z&M{Q0%g!pO=U|DOQzL^* z>S9Hr$d;NPgB(XIR}6m@qoxc(JPJ_Y4|o02l|j!6tK&RuN8{p>Cg-ek*`5rucm*wn z!+=)8=9Ne5rn;D8&_dpm?Sl3M*7Tl>y$4a-0jb?3(zr~8$;GcH!p^;Vv5zO1#dA2H zH^R0bt>hIPOa~wOE9?S8Y?s+WM#eR}-+Ds}{K^P#^(pkiU#uz17auzOT(BZ)=9Vmb zXTe(ILoh4#7ToiMspe|y;5O|~>BRdX^rJ#UZuq{5WhA_IAdL6foh88@fvQf`LVJm`;>p18EOk-PZ&1j` zdU5aeFsA^pl2Lj$DtIBUtt-s#T*7*KK+w$D6>8DtOY%}#-#uC5YdN8KjhDN5FHl+d z_)Tv{qHai0@KN=B+pa>6-&NV;?#N3&Aj5yq#@p6;SMQf5e7k@2;X&nEXW`v{pvWRR zdjtFJDkt~YE#|mPeDc!A&8JyjAd_Zs)OVir&}}1_b}JH#4$OSm$e6yGi)6Srh5jR%zryK~cp2zW!mtYSeum$y zu1Z`v$r~@NrFp5X$E>=Umyk8rH6FJVul0}+w-o?w5{|oe?j>K23ffj2wLXq1E3_hY;Slno^YkKLh8^G1J2!sq`FOrnib!-3L{#LTYP6;PA zq3I&dqG~5-f@!-;CZB%$zuZmml|Q+G2NgHK0&Zf|# z`OgT(+9h(O9l{3w^JFVBGBSmwrB2^R;!Pl5VJ@#IURyi=+~>r_!NIzA!JGPE-{k#W zF5cu_i1uZ}KmUC{rDFZ+snO9Rtlkg&GyH!IL;vRlRavqBwo6DWHvG${$p7m+G6HM< zE+o8<6B1AVz5ahWAS72HDj_UPGS&)!NE+9DAcF+e72#E`Liu?AjbQ4NwJD`c?LFV8 zb{Ru?hxbg2AHpdMo5nG3lv!h`3#Su>-Y_tuQ{W4m z>+InfY*bBjbZ>eyQ`SUn#MCRDZS}L9E$2Fz5knOuE$%XzDLi3DZw=+Ra7AI~jBTT9754GHdpP{T$Yi?r zz;fPqK~UO&(!eE)=lw>*!0nAi>;x6Xq*!5IR!8QST2nA$y9S}{;VhvW;>*SQRbjg? ziGk<%m^zOEuqDZ5_)`61>gGA9%N}rLtothReI|(Q@Rcr#E;J(Oa4Sw5u45ZznvQlQ zJ#=wL-7aO9Yjp-gU!gA#;~|X`4VHVVYMwtzS-)}QcuZ`&+c>V1DPI|0;;O2v6^;b_ zwk)3LOlX_P8s8*Y8xd)QuLi}e6FRd2)_7vj-7*)dz4&x|?048X zUsqFXi#hi4_bEf>z(Y+ZTQM2es`YU8xi~1D+e2*`RsKfQ1MqQ<^Hr|_5qS^V%quAMePO2-1TTRw%0Q-KaeF_Z8aumP$z%W zZvk)IYyZ@7G;ig>r`MeOa@(%_y0&Yh{fSJZk6~xdW-kA}m?E3N?-`fJbBm`q4A!VA0=dRH6FgxI zA2^A|i=!a_y#hmxpy1M_H78`(ABz){8jClq|7Ps(HO+V`b zO!2v7i9~YpLKUi;<15e2>st~7uSRG!yRzJ_P{AVvgRCwp7;>LR7CPGAFtCKxjsG%p z+R*2(y1#W5vd>OYfAx)oG%G%G5{mYrUm@Vcr~7-DBieh!UV8*YGGpRh?DVuZPBtfZ*PQ7r}-t5~#O2zeA*9`UGF=X@R0W2SAgW zaA(bJzbNhowaFpHZgnm*r7L#b`S>ob%FZ63T4BrlxEt5py)Zae;Z0jwUQBjG z=5i^&t2j*Fe(I^OKaXEP0XqTyog3;haqQB3Al+rQJHTa2`-6P_EFnQCQZ`9C;mf_! ziEc;3!yf9*Kghr*{1=Ro7y|L$2N)T*Y_{1s25ihdD2WNcXCo_l-pWbO6v!St!;dmsm2HmIuC)cF6^)_5J)lNwe=<9t9$%=8UKI8 zXvX+{!-mU<-~rG>WRu`p-}A*#5o>b&rh0uGAhmBg z)ERdQfWOn^k-QUdfhh=Q_^swBL0VJW+|8hwB22E+PhhW@AV6Uxw50hZ{aC{L2@mZR zxim{49BK=HO8RrMzi^`!#=P!G^@>Bn@6Yc=`|zYm$&${qv~H8&nzFav!4K2l$8R49 zHH$0Epx{dnhqr_YG}yhO0F&+XSGzQMJuv9GlM^y3dIGUBD|Unt7O;3aO)%Qf=e>~< zxe?&4a%$6Yvxq0H+y0$q@drRPIyB;ls}TWQOlgZDZlSvEAUeV(!VKVOx$%vq43Q!! zS=}M|Tdw4kkz1Ergi_O#^vV=WFG`Lv|@;Hdp)> z0ey-hYaSGak3+{4@vPy{6cc3Yax|sxB&FX3WGYvuy%LQKP3oC}?#+uF8|Nl)Tb3J{ zk9PnEKiyQ?S5=yV@Qegp?)o#KWu}-u9(5zWWf&hkqSz9(lirmn8Dl;4lXwzfY@i*w zTWe2a4WWH^cYS`^+{Q{rqtWMF?!cctNnmbucIU$py}94V#3mN>CgUyf7bP*~GPO~T zCVbw)+C5WP$i9z@|Lg$7cVGZ(Z`z|M@CWehi`{=O6a+cBy`h_hCDN~xr%^6}pN=)w zM6X5-(G02v$<6G)LBgMs`kcU#^f<Oh%k>??PP->cFIaEPdp)$>XhXhB~xxq%$I3+?ZHZD z2N)AU&w?n>e zT=GpzK>L0FRAi--HpyCy)l<#H2rQ%$hV`F9^MOBgT``e@Q#Fsa)H6n2h{^Q0MvYoL zYI+ld1)IAqQkfgBw5TcJ)$QyZaj#-U%!l~W?70w%Q0&?Jbiaw=IFD&0(OXewsrc4> z4r}@53}?vT0WH^aohWdnotd26ar1>dd}x1+wHk>Axs(r6zCCcakgQPch_b_2K(^t* zi4bYtoU?b`w+ycXtaZ-Q5m1$v{3}njbTmh*|95Ez$-GdokyhAhzHJ7;&aiFG{-N3F z5Y8Re4c-QQKRt!aq?GUUOCX=>e;*U!3po?sQ4Q05+@JWw9#bK&L9cQrnk2`IYw0eDyDWV zP5mloHL7_e=w3l)@VwaY*aN;GtjrNoYuzq@&=|ejN)Q+Gp&r2Aq zK+@U#p;H19DuqVaU5|A_5>0$h5Y&@NJz$r99WjFILFR{usERMTf~ zi>!~i4?PsfI`Gj*l}j>)hSvpyen&KVztz?FK(5=WSTQYY0 z81bjh!)+>i+?y@0k@Km9TkMK?g~ogGh`fjYeHP%ho|n3KFk#(VFN1exZ!;@TcuoUm zK_BG&*uSW5tE(~ODSiRQHKbJBZDsMqYuJGjb3pk}68$@-NuqGRHc3dHFmb`I?Z=9! zf=k-+4Db1r_KhuW_9(Xloz4AiP>l(ph7TBj;0QF@s8FVzvQ}XOJr|lReD*)0v-r%Leth{x#IdL9EHrg1p7J_I`+&S?t!0(%7#(4@>wuFu*LSi=tLT_0e)>ut$ z1u{fXs083p<$yO#jMVr;^tJ6SdF!#k<7JM&+X|`5$hFyv@k4C^>bIu@V*SHOh#%~* zfMN!A&xY|F)gG*_(-`=qA!iGnFRY+p@^wEzlx};N+2@`No1Lfn*W*Yd*(tE9d<|rq1Dod`m)G<@n%^ zvvIc*j8;_sOIxlte$`f}+=SV^84m{_@2g$I=MEPt7U5@}6x)hz%3iRMjK>KhOH-HvlKPUN)^Y`aMMeUDCr{Gk(V+U)?#B|@M2vj4kTJL=m!Rkvk z!d3b60Y&43BUs&5L*b^?q!8adp?2M$mXO2)#D}8u895x;m@4^(dz+(D->oNFLoz%G zfW7zaA&0GYdn7L0Uze>Y?Y)SU7RQ-Eu;<0ooJL{>DGLed5?{;(%}p8F5aXJsyAt{e zhdnQQh=`UXG8yPJyP_c>r~@k={_nTy!})lI}kr zRM^#)am*FZ?+oWs;?ZP@v>nN!<$bgUv~K9 zNlyM$($q6IP|bwI;3WuXINhh7?D*Dy27Jk>1a;lwu1ujb8 zUCP3-q71q@Oa$-lriXIVqbHD*4LVcZCPaWPEQ}?hE&o7G_+=z|%zAieHDTDAFt*^-@|WAY~%wj}iBi$hSTMm%xt+Ikn6B`JHMR(&N1% z_QZ`wfu5U6^=JK5>y>o9;lXUe#Z0>Y3$eR2{52i*H`m^Wv{w1856AAP?wON;YD$1f zd|-;zjclVnYwq(hd|f|Ok5ST(>!O6qNsLYJGnvLO)CisyPGG8wG%im}zH~YdBBPAM zGFtkD(Ivpz`q<6;9|B(qx<*RH{|17_p+JKupn(A7s90b551x>eBLqzpK<+4J(^Y1C z?2bau5*S5_bNLCu{JpCEJvKm}=PM?~Csofk0(18H%uryuAUw9`kM`+qY#IiSIGrx1 zBbYjdv*p`2A`1#Ws%&|}Wx9&kkemivetmuN!Cx49jmguEj5B@fs%~#RaU1?T_?+G= zH(SqL+=Tg0ARf~5hw4ecHyLkBQPN8ey!l+Zfq!jRg%{veBm&`FeUVN$%4suCo%{(~ z-#iRwMN=WC@k(HVHcG*!RIP1xp5Hq|B8$;Ht-yr?03y9#nIAFLAG|qR`HocV+uSj8 zQuH35I&fvBECaRSqhzaWf0-H~fj)bCR1*x2{XB6anA3y< zU6q2Dd`ZA_BE%-(rBAW?33iF>*KaF358jRw=E_Os2g!)@dGl154sYUkRNbC2?_QfM z*DQ?9=60rdCb`I51k-}9Q6_}%VMeau*`_Dff9cq-=kMQ{dQqsI>W{rV?Xc;u9E&{8 z@NvX|adi9I(^b>sdD5b1B(gT(ej)PISq~fM=%`Cn11SzR|IayUugg-A(tlM8WV(JS zUb8yM7&jf~yF+u089A$N4awQ~&SXpu+g_y978ApnBqdxh8`gu0Pb&Pu&K7yiL=3n` z;99G_@1Dzd7h2IjvOZD@mo1CY;@-a@G>x@sj; zbYwz!ef0DZKIw42?s|o%nuFST?g+8vcvY=;tv#2g45e6Okhk)7lPh|$DcvsfOHJiC zYQ$o6t`j!TvQUt$(qjOLP}j}6+y6Cnt{8?)|Eh!J1*HLGSDEmwNPG(4Qc^J7?kq=h zI3Q_}@FA;#|FAEb`gb76Ij{w?H1}{Kf<}x#&(Xx};km3aw=`W7^EoV}hR|t`E+;&< zJ1cw68{g{g=2M!i1k;>}JT)$^SVsG9*U?YzX9+Nyvou4Ld`sS$M31Y${#E!(Tf zAZc)l8q4*IrjnJE9)yxZ(rtf>Oj+airaI2_R;APnF>2~fmy%(2<%#omps28qYypxh z@N!zJ02G`!!ZF7SyGDsOy7KMY7*hP#7e`SxKW-=!|5(i{uh6IXUdoQAaU|^r<(T=W z&l*J!8VF-XzIkhFP!oDSQbo;hNv0&?LW>C&~O(>Aw0o%hDD-UL%zHhdAgei`7syPZmTmOd|@)ue{WyW_|jLa*+LN@XBa-L#`N;O)? z|4rcTHb|}3oarlVPuXZ)T3N>yO1aMQmDce8ndzS``X;aa^Nrc@Ag$pGy2%1^!;DV6 za(z^XbooQ$flX->lDxxP{h&F+Xt9saK9vTpe0%c46hf;`eG`Peg@sgxpM&hafj7Jb zv@RF%mchS+Mm6t*2^#Iq9vby9XG3}E8FG6e)ao^#SZIJX3u_hOPEz)XKs#KM+uQo> z3>>*$W0~c_zT&#JwKWrNii}q)yyeM;=L%vNKVsyULlqO?_u~z<&^VafHwnjr59@1p zv>r3E@Su>_0ztNOiHRmQw_#XsaGanesDdFIxz5f9@Ql3tP?tFrcVx6t-cCtjle9cH6LB!3Sg@SPuTXr!YXk5Y?(8_uX|*siFN1~)vV^J4 zF|^XbX$cia%!0;o4S)F~Z>*Eo|E5}TsCZ{K`!9u?s#;bL@j(0n05K;g$T=>UE@QQU zPxPR_?4h$~#LsQjR6q{B?(L25mhi-GB#GQA-L9=&Y=-`d-I$j*o@tps-;bgYyaLiJ zE|v^)^$lnkn5?xE47c5v`FI^pc=(v;h3yQPKcbDNrF_~rsPKJ=HY|%+YGrNY$SqC6 z@B}Dq^@tvlUK~xhOpkg*U$d>q)A$>|#nQQ%T-b0~AJ~h67WnAmGD1fZDfZW?-vc6TgX^pVg5d+oO?oWpng6p@~Ywh;@P0J4gm5iXV*g%zoK(ti$ zwDy{UAw|dE_25Z&fai%oLg1dqA0=SR-Zh`@Rlyp&%N9O2rW(5A?a&Z$f8lU}48s!* zpmKF-aN?c4`Ei*XozR8z?%EaU{%NJTH*#TYR?l)NF?YqPhx{~FVF@P2~h)SB+IpNjqvZGJ^S{6(mjLzLQ9Gr z*h7z93#D4l9XUb%COwn?GxuG;9P0nKvWWce$~Rk4|E9Nxme?^Nr{E)!)vd*xdS?HK zQ~j5z$*NPo$SS=DH5?kOy4#aO&E?r!@70a{7tgSgHi8FS6IXQ{s2;#wmEhZBp*^Xu&S+MREMi|3zsU~}O9gGL^o0P)w?xd=sjpX=7;{uW{&RVB+T zSGKRq`+AKooN9^B*SX;2(}NLbs?figd`MQh%W*Dsqnw3;-;In3*xHr!-_Y9C{Sg(a zf&X+kKh~D@nS|6_CLsJ+%K#%2G6Q4X-jMNpZlo5;`(kNWxtTz z0`8l5u_4jXNOUM(%MR5)pvU*hl=`YWwwU{K1(V}x-hdnf-Y7GC(i@8%Z|a>34df&(y>Ofu z=YoWu8=s_(#`%34EN25Gt43*bi!?6ejlbnwCld=mv#KmAH~dhxs@0Pc`5EN6`x|ml zfM_qFdPA1jYrdZkCkL3E5F`ucJX_6u37aQJT#9|!WXj~j$)2d66qj+5w4`M*eA20^ z^|2r#A|^GaWcRt3FODTpSY78##MpF_$Sh?5jqJ{jcmU+6^4#NcEDeAxsRDd^n=X7N zrr5IMtXvPm#&--=b$No(>70ozIO7((X?cYnjQA+FX8mPV)y2FXeMyX7eowC+x&~5a zq721~$%wN{TL_I{AndO1g%o)*66>r!jSmo6lUKIDK}mB4*Y(GJMGlo6`(6Xd2CJ04 zx0D|%pndWA?v}DZWNYm^N4l;=7%k%DnA+2PgOpgpwApAgxM4+W{4j8=#x3dekSII$ z%j|I`p}lMKGpjqhC{dYUyo^$ct7 z9;|m5k}>a%X7d2Hd4O+}&WubRWGvRBFB~nG7TIofE4zFM2V!wNO~GMmp{PwhLM|vx z%kFr4dTe21aqS8%zRjo;XUffMPYhjt1@WR`i_1ZS7gAfEPfCyGl5|Y&hc*aF_UjBh zisl2$;C8*{ue;)VTCnZshwzp^PytA}m1J2ri!9EQ?TBgh&ve|JZtW;aCo-cNFGCJr zQl_;V!>&?&({=W;dS;t;Rj;1cZpWscVCQ587*3=zdoOn3VDAU2@$%@ZEoR2P?irkMmc}fKd*Vs zrheSL4`bVwq@|cC!@4lXd^4Jk#P-Y6qTl_InMGftt@yd3oJCXgIhZY4QAg49YGd^% z^s2q4+=SMC;^%$*{Hg$Eq|Tt-(lr?JV==`1BNVy`& zU6Acx#nqhjCzb*v86YnB6YW(Z>|(fT^E>xwFi$xmM3SM|!s8O*^Vhmld3 z`*X0^5s5EZC{aH*A`#V+m%wBEMhE`xyIfr0H-kHj0v-nofDzfl4bk`7(v|Y^ z1Sv)Lx1kj2o=yH?o_g1*GWiq12aS|+g{CC^8_Y_iDqrO964r=x6gWAx<4>qMfp3Ct z$)reYw18p_k|jC^T;j`1>g)fVpY2bCvy>pN7L-92@F|m3~J{u^!R#!8+V1 z_j7+c73wMIxkwlBW;dB=4Uly~vK5dQpQQfM`HWxo{%OHn5bQ)PadR;~El2l<{?C%p z0X_dXv1DLR!S!P!4zlzg+s;xq^@d5ZTmHIu+CZqh67@O_4 z_JRP~;;lbTn~HkTNe4#b2{FqH;{RYw`F$i-MxHP519Hxc3oQx~Q9 z?CGP4ac5j9Mp6{Pdf@uLlFtH`jATl0SBu}PFaR*t)I4wd#O10L;QI^4OZe?S&P&2r z(=yTZ*g<{4LN=<1MMF<0c=fN%#mPpTMMyw&6o_z@Q{hJ(31`PY{Gcc>r9i4FRU$yZ zh18@m_j1GLt>X8sg=mh3zmIxzD-%@PWhG#bTK+gRTyC8IeYE}kgNDVaihDp}L)F>L zl7?en5i2cC+~igXhxa`v^OGz7HAP(Q&*G4jc-YWPnPcMjUUdb&Bf{qY4+838wiRR#g-IW1n*Q#Pbi-Ns1H({wLX=pt!1M zD2PywB5BZwC1!tfg!6AzE70WZS}*s6HeT2wWqhc!lotQ*UKB-zD9PLI?}^B_2XeGTY&ia#>jkk7khg;@HnAYmM04^M7^O8x&g`=oD0y35 zK|Msmt*$z=fd7`MQtu@q-;J2=r9LbxF^5Hl?*H0qJx})1OT1-eYXtw6(jR;E?LS6uV+=XQ2 zrc6jcH>Tvy)@Lw>vK0$rUW?f5^o@yXb#cwR89+dc&<`r+h=Xzj2rN?_I6nDbp9lz7 z9*n=d9Io!GcL20zQ(_4E2L@o}-+m2d?1$ktN{YXi;|3)va2tF~Q~*8JE(V{5s`-hA z*TM9{eGKnekF@K?)nTqRTRccHpOKyhb==$x%GCa3!XwbS_7o=e6wFU|ITfNPNcUWG z8Q=RZ%Wh>(ROW2QD8pgGGqixr-ogzH`KeZvCYp$WW#tx1SBYY+1fPvwt76NVW#36W*8gbC$l+Z%e<1&&T^y;m5MHIy59I=TKmN}4f%o^&S5xN>Mqcj z&|+eBPYH43VsO&6CHb4Cw4Q;q^BB{zrcuW462v_WkEdR&3Bn^FCO9ujI=&%7_1euE z$(NBABk~QLs+=QMmFOI%?JA0?+aK!8!U7r#^onn%1sy&@Z!Azyln8bWMM5ptANgrZ zYK~TwE+z@8@>$0s#T>db5|zf5VtnpR%7!xUE9B5%#F|IL(M`mfd-)zR==h#BqS0Ao z*!NE;0;B-XwJyXu+19&j8oOtq4BZw@IdI>pS4LB@EzZ0?1vqqgp8T58{=@6gJ}o!< zD`feqg>rX3cYua(xatRG!voA%9)6@W328~)GxWX?do6%AqaBOlP}Tq8I(2dcP@>AS$%k8SBtc%*)e6;Y!YjwSv;HO`(W!@WmZ^tkwfFEc4y21lCq+W<)x)jzD&6Ubw$ zeW~-hZC@G7a$GO8ik0Hf3(Q77*uG!uy)U{*>k>>&Yl<2OnmAuR;VpY{(q;Y9##igh z6Z(tX`GS6^tll_r3+7%o%g2{Sz@Vxh3(uagWbe4dv)+V^L4&!VwJ>pqN-7)<><#Zo zwEU~FAgnn}0827Me;2GEw%X-KXBJgeB7wZI&pTX6({vWQ<=*Lx9t18ryNBIarc~1! zNL3RB^swif(+qc%$m|P$ot};@r(D%BrBeI?0#RONeU$3o8!g}gpgRS@W-vuYqrw1he`z*lxTU&Ah#9q%jsRt*CR*N=* zUPd;U-8ph*^k~?P_g}PcHq&y=6nY2`1_=*nDh?Nhw)pHEVjf>oe%-{tY&HMfi2G@Y z&l?@VH({PFL0gIb#XP<-Sq#5XL;-jmq115}6y{-c37wIf;#>8*)}fVV{+%1K`5_4^ z#}$1aOv8n`-+he6#HnXRW_FzL=s1EBtp|SN#ic1rtb)(Q@5`z@f~TxPpH3u)qhb7$JfG3&$H2hdAH6P+dvSx6HWHIkGjVran(U*8P`l4dpCe`Q_s z0QUE~BF0sYz#Ee0pK0omoVvnWv;YE0bq_YZIK*_|PV#Lc@Qw>xVlirqw&dvga+Cdw zt)D3Kso^u=#B`{QT+XAbnDEBZ!kT!*DgL0wu8=DrqrC$*#|*W>$jC51~9>hqj>Lf(Tp!p0pmr9B@N}Wm@&muZnLe%iS5+vk(SrkwK$M4DSL- zN0syG8%W=sE|paXKRa2#I{+e-jm6N4Cz8H=0<5YK=D62t-)!Joij%~l@n{YnmH3%_ z4U(SQy%<{Z>8z&=A_T$G;t;t_P6`nQQI+pRmEvoCX59GE8R=Y?CdKqF(6I=O0wTY5 z8(0(y2tb=^T?KEcD*0l`6+av8~C$oeYuMZ1$z!$ad? z1vAn8*+LhzDzc1VpG>C4YpLjyjnta(CpjSEJ019idEEkSYwwA3HPfJvLSnfQy6l-o z8Bd7Va>4QC*8%@K9YoFQ9}<|W7!U*v3^!za*E?z@4r?9S*H6u@1X zP5Mrwu;jGd_y(?;XaGlD-4$lKoigJVuvNcEa%%_CG3O7kk#W9pC?3OFs_z}%d)%+oApD*|H?|P3u zoeIk9I#73P{T_9IqFRuf+lS_b*B&IC&TI?M$&x%(fd8g{{W8Gs3%+*u@QJ^KH$jB|NXq`DhY8UX?p)WJP|{>L_*okVpTZyGL&yhz_W%)E2bby zn%Y+pqK28kX}`HWWOR}7uPJPCA-4MzJqrZtyfYujD|=_PzCgV{f>T76vbvHinT6lE z<#>D$pO9Z66&8KEw)l~2D$RA{FVx2{-5N>yE|7IT;#Ka^+dRkQT~_n90C9*#iTe7d zIdskTGxehoYh}WVP8%lE#9gU^K4k2yA_O`LtI3A_l9X`%(oMTrza0iK;PI}oxlsLGD*5<|^nY5Ad@f?~dozK5F{ z86>p0aZj9cLo%^MlU3cP*Bm#r9v-^D2>3~wmnX~5DVu-aT`c?Xy{t3Lzs&)i8sYPb zt^cKRV{3`BpqfVa!}IfWxndGjjLb20=gpv3vI{ZoC~T@LtFY@8uxRCqPzU(EMbrg2BLhfOACVzx*2)vh;(e3V3 z-T%SbTL#4ybzOr=u;A|Q?(V_e-QC@_f#BL`aEIXTPH=bk;O_3zd7gQ{nwgsV=Fe1} zYMLsjy7!(fYp=cbxuD1ukV{Id)UT2-ZHk{>AwdYci)T52c0_9Jj#6il&D~l=F3gP7 z^c$6Zr5J87kO}+xm;~hM-+RgJq(XnKNoT1RreZ~h*J2B$mdh{tVri+=JhjIwMqt~T zWFzv_9Z~7U6m{N|#}P?c{pLzae@lTq>TUg(Zb$gM8&O^c$ad0MG0 z-O_x29v}LC_vEaf>Z>*5X6mw-2vU#czl{i%i6|nricregmR=lVq4za6!ufLEg%w$r zWtEXSL-oBE&oKIhITW(?x&3H~CL$&s20k|`wC1JF5iXm;Di=aZEi|w;E1Wznjz6(v z1Xx(A`K?p)Ti+;CdjqqnMC8r z1NYUrQDMxYZ=w_O9lL?GeRIHtt&ocT_yr{$!9n4pBuQiId(%+&Al%`Kezk_c{7?;Q zR|S0Esn$Ww9N~eo49)h!%uF&cW&=#QF!y@5=0{(HHYTX?G(+3(t|oWcfHkQ980rCs zR7`=2aY-91x>fAG1lOYAbCW||QLc(8F@sPl?08RCe^abAo>ZErh|D6|-tuzftx|nr z*BQi9!c7fglL^8@EFUH_@9|Uxg|(EhvRdyV+F7>yc%C1e1vaw)Eq9FBqrfo!FJS!n z5N8+N&DxBM7ns! zGF(C}zQ-nWTjp|Ls#)>5^jTGJW+e&0hKt>TA_bB8y=C9`ewQIiO1}gdSTs z3GQ?Zj$1ZC#GYBR%c&&QV)#9$^OGi}k&VDDrn-uCoVlmGQPn>aVNm)if&66zAOXz- zbEME7`O#1wpd{o~gWcY(25$CWU&c)@B(<-Z&T3BWX;8kKA>zo1ny>O6F9@vV=KA5c zi?Ab3n^4A*sx9m=NwOo3t8Rd)RlJq967t&>gPvAOwic3Y3px9Bza9^s>_L2U!;{gV z#pWwVd<>%uC=~XRk6uy@VqGiF-{E~xQepA)LH=2Y@&?>t7SbZTCCy9Ns6{O<{t6fu z%+SLG88j$@GRuM7j^D_Ig;;`OGl@j_L3X@H!1elj85wHrZy;CnZw@byjnQH6&95Vr^Wpq@XPm2Jq4oZNw5uo|G=q?;(U@UXjyON z#ScXzBbFjh4V&x+InSqx`dpu*v338jb~v|n(`%VOl5TxB5SV12*?2pN*RaIo-T3F- zDO73}WY!J;QUb_8mZ5n6;Xy{~*v(9_JF_KOy#Uy7&4d}#v|Q4t8g{o)ca`{P^YI(U zqlND;K_vyaC11Z8{bAWvfprN0fe=UN8{WvTHC{SJwyXkF&B>b)l$DSwuI6)PeT%BT zBM_F#I|!wPrKuud%l!C~>4EvIJ2KQ{*6u(&Qd%dxY!2Bx)}>i8Yy)KhWE+}Q#YPyZ zIY-Y`W~f*5c}gLq1A>$>u^g%d>W-95i24n%?QgIdiJ(wNW-B*rIM-BCchul^kMRj2xiukmS)OBAO&>3B;u{O!e|!$T#XOgXDpZt68lacBH@?#lgmTZ{AW3D@MKBV3TJO>n#h@D=PY_Dt(kd38n=_)h>5Hi*>CN z3ET()mZ$!hN>5H&0qnWh-4Njcxv4OJq)n7cp6-6YI_}xhjm9H|66|VS3h^F{fn>Bj z69XNDl`2^T6`&+F$1qjQc)9Bamz4nM`{v9sFV1c&;Jb#$jls8NLbJ@uI`4W+Zu3UG z_mJs5(M7C8VF1kBlt3naKMCf+5|34}#{43*{6R8hADejdnj8z41$yuV=ZN$(%LD{6 zMO6p|Z|sR*m!um2G?yAeF$>vs0Dk@m&$`$W3j4~iBjLd1a1o;gadv}Ozbpcqm*t(7 z+A)Ks_@6Y9m*^rpmp>k?olVgH% zVpK>3c0~mBtRzuSx-YNI?Kud@yglZzhO~6Ga0THPzn}5FGn`adcH#+4_rkZ{GD#6} zV>lmLR3t69AvIyt7%D|jb+}cQxvUs8?TrE-^4yk#~j>2ePPEr{23E>K(VzKCq z#5YMxqLDib_57pg!aEL-ofZK$wTYOeZQ)+y=lk{60!T9gNPR{P=??AxM&)#V^*O(M zx;~|_Z}CEhjbg1iE%4+yS?NA!-?Y48J|L*s%XK_<#?bhsl9?4bXD?I?e%+G6{c_;0 zUwul+HO*?a(nH8{8`%sIsJ!^gJN5Il^=B~z8f(W-EHY_ zY_Q-yR{U*Y8cm3kN8QjuTn5J<;?9tVc8KVmH9cn+S;qmnyyWy^6Kxiz$JT z4iCTap|0+zE1y{zBbGx{=P8R5_5g}gp>J%%M_l23YdyyaYT%izsH>|`ydyT=_y9V| zb;G;@*Zac52Jn|*o7E6*Hl~8E;o~L8&thpw=Ov{_b+Gh;faj>>n=UBn;g`PZ=PeTf z@wzJA{?RpcmFWdp8y9@|E~W(bn7~NuMf-|e(=iji>$a$Vdisb$^2e*v?$X{pyW$T= zettiQ0{V!g3X(F+l$*s1@wZjBwGbW46V=ku42k%CImo~W{o@-MY8GjtV`?gTQ3D_2 zqsvKAB`JcslcG{~F0@Gcq|GH-->eT@*N{2(z{vELclF>Xe<jOBA)GjJuFMa`_KrjGYxKOJARcS zZh33@;8gg!l{o}T={GB(F0l=c9>f^*3hU?oJR2DVkY8XBzv0Vrmt$&bzn4FZ01sSsI{Cpe=V#Ow@gJt)%I5Q zlSCCW&|7v+ao6Y#fS<{81IhS#DRbr$Q9>;{^&GsOCf`X=B!zPD_lvs&l$G94jSnxh zj&htDL^rEN0;wulLx0INni}zaEs@mw#Io-N_MK?2s$!(kAt)9ta*&7=Z#FsL`#+A{ z({;U506E?xQ2YGFtw}TdZvY)Z%!3GUhmL(F2G4puqqLl_<)Dh2PG&O_rH@%G6 z#@!0IE_$6SNhM{>8}6P~_7_65G^YALvsY1>e^9g+V(E0m3{KigOG}T;WaY|zb$w34 zz@C9jx5CEJ=Rm7G1fJHjUn7jZ$F$qdLsfOj`r_ARRV^%p!`cUbl7a+&me%lVOH}2)vLSg(^iMoM ze<>sKKyZ99%L3F)YcS!g#=i^f3?<($82w>Q3>hX;OJ>5PQ@e7$EaxYWcPYw_u9PhJ z##t;<4aF7{p`=erfPff7r_h`wt)K!cK!=uckP8-Fnp4{>7pM#BtavtYo1`3aL-i8DI;qtYiP-7-V z?*-w6YZuScN!C0pBIopt>V=&wZwuIe&=9MD(FA*gyPOHCy@cn@Ukazhg6Vf;@{JEF z>xB8r0S4jchdSm$DFvwJ9Rfv4%{cSz_Sd%MbrS1u(1#8WpQl|!WH2gprrgnowkyn7 zd258fxfX;Y%}!Fb_G4!^F;m?U8~!?d+>GU@@bbtEkLbR)5?(dJv#&eJuxI#t1Xt0>oa>bu5LH--S3Z+KC`?-kr5Vy?}%|IYD zgMB=r!*~45mL*WDPKANv@wT$qW=)kf(V&o;iCj?781%%hW_nmeO32O67D!_>qSd>4 zzoe{^9y3>Ha#qOWtvt`f&CHRRw8oTIH_B*6$5yAVdKs>W}4MCA7 z!xG+LEO1tNwvfZSf;{O!^6t_uzf($q(}tSft)_lR!r2MBR5|J8;Guu3J4x0ah%IIJ zyOf-bIM^oJJpGj&M#W{gRx%R-u6a7#qsiI(?NU;jf^rCMR4RRqV$wb$%RZmqogH@a zX6-*f{fmP$IsO3QAEbL_@0-V?U7<*voZoJn8xfAW?uY}$*=Y+ey!anj+2O)!Wf3=~ zsAF{%Z15D~@vptc-kpvg42gztAgTvrk85&8ex~CN$^`9qDz&_v>dG$)Y`ZF#R|~Xg z%HQ54fLHMNj5HA}+AXu;qt4RK8bv zMAXgDJv5AUcR|8dFK)9m^_|VR`R;2>4*t2Z3Bh-Y%c!@sYQQ$Md^DaVg~I^;y35)< z9o-1YN(Cv#)%31)-gYIX=ZQiXw&$aa4ue#gEr>*rSN^PxAL6rO2M0|u0qB<@GiqOT zit&U5w(bY|-bS9E5^rY)dWX{^jhSM!)>y~UZsIn*uuSF^#w~|3v@=Ug`GNVYAhvWTE-iSkg=NPHqf! z_D|<>1s0bod>Hy;Z8n(7UK=s<6>-xISep-|XDc@_4h`VbMH>j=O*5`MlfARb(s;bs z!?bydgt=9%QJ&R5F)n$MlQB$Imn5aE5b9RtO>D?!@JE72$bv8^@X}4GG+>e8tOAe| zv9azsT+QdbleTXM`hqES?(>47Bdmx(r7ba87J=6>|NO{pc!@>P23C0dW@}3Hq#mYe z<=H-!semUTJ0oj_XBWilf*W8of@>ORQg( z4aR43Soba8#LTU&AhrrIZr7cg03a)Ij`1_@^39wOF!yFVZBezI-vH-AxZwxO#~ohiX}OcCR_s<<)Wm7}G=s5xubwNuv+oh1mn9ibWAR7D(vr?NR$2?1xK z+8{x=8zW!`dH#)!(=9J~UrF2ccX=+BO5rb+;@w==>1CXQwmK9TI%a8@`;v``281b# zMG{dG8cFkU3~1xs-dfW^ zZE&k}@@`%?fn(#WHak9z8H$hZt=nqzef5^w`l<8#(5|R#DO-v^cpMe?J(O(TCi9em z_4aaM;xVQpxb0Qzx?Wb)y)yCCjph zxUsjlm}}VY7`B<+@l*aKXeNi{z92{y_};2OAJnAI2w7~uUKfrNdQ}u0sneYJ30ZFuE59OqMPeu4ZN?-ItSj&o zR&07%jYva0CC>X)hULCF@)_NL= z-CJ0+y8;0?0Zq7Af`!^JFE)+!*e(6=3W`leayjC;&J?&uT$9NqkY8orm5ci=QWGaY zo=9ErvJ_=)DMd4u!hO+-A+~a|{g^{d<_eiO4yI3&EE$$28BWU&!s;_gsiWp$job{Z z5JeeaAin-&R8Eb>K4Vk!OKO=EcG|69_O(lF%4l?~An#I;w2bgMPYBjxba9Cf;vGx; zay68sBva5JdQ7ZjAd;F#%Yr2nAe6wQ`zKH@p)~GPK#}V~NRE7uXPDQ4aESdtJUKq( zbSaJ;!t?gH*wf+;Z@VRqPC@}tD_!EWDfipHLSzF2WnC@aC!j{Q_Ue(;Nq|L1y|A{>(a zUWnY<^3^$FoWQ{u}@L12dzx{0t;p!m4q5EefwNz8v(vgO<} zDvG~!gCHU=Q5`Jv^Tqg!g#j!1&}Ss`4ullN1^|5eXwraVpV^sDTKtfBR##$XNVw27 z=g-b%UhBy_h#ZUdmZC|+hZ=UoPrK3WBYP!TtX@$#U3`fDraRc7w%*VW{Sh>ujhFtn zI^^nk*RoA_RJsDMlyLPMH2w&Cv!h7}wAEb}+K7~X#IK*~oIT71rQYM_{0SJ8c#(N> z%^TANW$h8ke`u1`tBqSB+6-*4S7EhCmuG`z$_+-PO@s%*%5hNycfBIgog zzyRNdapXH9TH|3x1H&?X@{JJ=k|@%k7fy7eDu9uqzUk*-XI5bmuoy`llFiG8KK}+J zX>+L}ywy}coP^Gq2r9jGI;_N9vd3J(H<2NHG}mLTbmw28Js#2j$wu?n!nIRO`|*SM z9C8+eB~_PQxmX<-CWT}BhuiU+nnix=j$eL}>CLJ>h1K7u;3dx0C&zWoXC;`7&tT@a z3-ijX)ATmY?|OWZ`JDMq<}~*gll>n37!FB4Y)fDwz}r0U&e})6_mVMW7_MJHqbf}T zY=-w^kTlrSUqs-7i@N$2_$Qn%`&6gOeP4TWV$ik{?$wnetBm`$1cv$jKl!bl2@g&) z{;y{Rf@$^`?zZKYxo09St#~XweX?sP#e*vufci{0^DN7xAfPDq-1!!mUG z>QL8Gzjo7gaVPoP`KZm)8smY}nb6)4{ijSiE;Y>K^V@@kkSH;Gy;EI5q*bdR&P6(N~zt0GS7j0Se z+NCbNZF*}Hu?c}0qadw9L9Bkq@o{=&ML&v=hQ${tk}~TvH;Coabki$QFsX<<715vY zM&|#_a%Hz?pXZSo1~UGPUPjj+WP} zM9cQRL;Y_B2)bokloG$UpCg;1Z%^+uk{Gra(7vp;f;?D$nvw*H zQNos-On+3*rj?c_KxC)|rsn)9{FM|4-iw;gfA0T5fcSi|ccG(Rf4BIm>6H;&Bz|PG z+y~nYNJs%@`EOb1j2lX*8z0Rp*bHvz1TS*YD>^y>?A{@{%AF1`JR~%ztMK( zfyO7p*W}|himh{eHzTma|6O?$!$2Vdr+3aNK~KSc8-M8B*Ua^QtACLjKZ+|_u}{S) zYFr7?){Dlo%^P7qk%>AfYGwZepN62Sfl9wyENVlXuKxkweWp3FdTLG8YE8b-hV}D9 z9-*r#EXzk>nlll1Lpva}n{N;mz*+loVvV7%0iGwI4Sf4G)a29h67{de?Pw;+n)B`z zh6Z_7_^@aUL%BF(oj{P`zjJ3KGc9-XCv8et%%TS^ttBW7FV--cj3%$7?yKBvo(iQO zbh;l?cIp`=;_78r)|6HxF^{DC5D?mKQhZkRCgU@DOG~ytQ(R&4-qgKIpuj~oWn)ch zVlCDn$pyC8GDVK5iQ{Z=)%k*P?`PyGG&+5clPN5PM_u(5cOII6R z!Rn+N5-%#Ou>$fQLWBuMi_6Tpe@(Vx!M&Bm-UsI+vY0`hi%z)J_fw=DLcolzVNgZ6Bl#p+#D zM6sleWpA4i8y~Onx#WPTok0tWQkRq>$wwpo=M5u$ZVMR* zg+BLe`(=R9e66C74TiV0sCMVa`tPYN~4*^3*(qKzQk`;YIX;vm1-YvD`LIwR&!U{e| zMf@L$yB_GlJ};XIaNFgdg_ZyPYyPjKy4>D=V30{UIL^UD@wn#$M67g8*kI6_6<Ag6jw$KZ$z!&GLPI)2^0bK8-6U=!b$m%1wA#%2teY5p;ORB$0rhmgwBrvzAW z@k%ne0X&>P7so$l(a^Gx4Wx;c>RtA*v?6w|8jN7Fw3ZcY7eg=g3zjOTT)p;Im78q+h#yrgt=$*m$Ii~!z@aUJyGFDP7 zJFxD)6=NFR-Hg^=MQl{Rs{d)IG*0FSpcmT^jyO$5;n$rEwncl~okC8)6q* z3$Qs?sjw3oGl|imA)zRH$4+CiUd1eVTiWx=F=3Hm!Od=NP9D%#UlTfnhGQj;IG(31 z@Ov_n_nn3$LY`bx{F+mCM@;9tZ_%30o+^FLA+weyuD-8EV;2Y$IPpRBq5FITQE;NVNpC>Ietp=(k1vPcAuBi5bhKJato0IW$XBLBeSsCdWS`Ie zWyry~V1BgLM9%f$ZaXGzn95*sR7|U1`?KEwA=AWuo?Nt8bogvJq}&kfOK56N=3I6B ztj`gi1Pq98(N8b8Cyq;!nKxCas80H!gwA(t#-`B~>-wlP-s6Xs72mQwo~0_cxXsX( zTrwga`by;|!2#fgy)K*}HFwS(5h<7|lLl!WK|}k}vE6Jsj4Cang%1lTtlU3U2 zV1*9^e~|FW%%zJ2&$aWZsk!*!=h7d1$@TUU$hoOX4Gl(v@702FjX4fu z&e_MkkpQYMU=b^DPB?T8SEXcI$mo48PnSJ&-Su~0FAO5OEYUBi)IV@kEeu?>DAevg z`X8iWKI{U!q8<_>XKU|=`0!py5dEF#Kd9&7FO(zb}au>U3tCHL4{xO zn?8Y|LFY$vqne6N_#Og=#2>2sYL9@_**{V^2$vEv3}$`{%J!eBSx-}bLqFs3$?r_{ zJL943%X?28iu3#gCEjTU_xNZIt9Lg~VBGnhxz<(>CQ%9=6ADXB-7ZK#L`g1vO6n$% z_@EERHR5>gkV%c}Vzeu}s-qE$lt5a+z8CEz>%0o4SB&{EsMc>f2DIv)I7pt^4{aGG zL{i&ug%TooS&MBg&g}c$jh8~sPS8br&uR*ud`+U1ah)|E<8`Rw-#V@rkq>UL$~apS zfcZKRIH&{0Z7%AG8_Z3@b>9a-@#~mPsuvIM&&4@WeCh~@F|Peaqr@5JfOCI9pQD?bx#&+Ye!o9 zGZ@IZ#0MIArZE|qr9-gyDEQiTwy=Kxlco@r@#?7l^%(nJsEynN;?e&^-M$3?Awjqy zlp;B(k}&_oT`muc8iP1Agz5J)l^GfYh^6`{;Fv$7Cp9)2A#Co}L;8cqRQ^X65Mu?> zWq78Z?-9_QCu*$o5;|+5p>X-Lm=QiB8|Y8>^t7q3gMF>pS9H6F!Prm7_B}j&v#)lT z+&p$atSq2?3}udWv#2KPJf*+0C}p7rH7&`VA2?Yrm!pnIznaPsf6lwh<_V=AY;hFn z{mGWnd6okSiYSi1>nJ;VGpw(QHhKtFpW!16e8KtHeJy=t+&fw4W7*f%4n0({0d)hL zQ&LRfC|Jciql0r$hj>A+>Ikp%4HIDw z5PsY)aIKo6=T#QXP{`1EECWE6JU5DlFX3R<+7EP%EJA&zH78<3(!Fm{Fmxf7}rc z^!wfxZnexv85d?*!=O}Dyb))zI-N}cZRAH3)%)bgksxs}1@ix+ zQ`e6EllqLf&kakD4Fj@y|v=uS4so}(6L=S^+>HD;)|^V(xLAu)CBc&V64;! z)v4oa_UMexUu;ULCkCx%ncWd#|266QkC4q`TG~x|+2;dt0$@h;@LL8a_7(yKzNH77 z))_+zE7L%Dxs&Ok*a*CF2QlxX7k!R%aX7D3GjaFjja%~(`-+M0` zufM3LBP#27D~~i2RbPGMK>|`ED!r+}h1TJ=2!lL|&d{Q~uiAX_zHbsCJgxw*qmw#_ zC@sj}F?yf%zXnUKO{|&uHb_doW2O|A7J78DuWcX&KSqNzVoV{a%n`ue$N0^Aj0dL$ zOjf<>#KrfA=%rQArR$cm@Y>YEyYJ9wN&SiE-+um~EFcGKFQL8*5+irBVrDF{=jrul z2Dcya>^)64Oytt-{C-6H>O-MakLuuT>>vwW z^VG%^(urBsmynfYikh%09pLY=Ugt>-XH5tZv&;lReKQ&{Pd*93nq9|1{@ksfFMut!=y?Z; zu0g_krjX($&?G}2%8{6`$S>DrNWEMutUmoru*#!dBNiS+qsOc?4*H>j!aFw5Yy~m3 z)15S2d3QzyFlhO$fM&gnrWC})`C`_c*rkR7ppL4$faJJ>QMZox=lYI&sx`UmlDD-8 zne2&n>~2O>ReF54${2+0pcMYOky2vGCuC9_R$@v)O`5Ya%ZCS8dwQNb5DK{~J z|4cExD1Pe(6X(Dm2SE43er=2l5ijFhAEd$^m-_9-2z=IBL<0$XL2I^cvZMK+A*=mQ zY(@VtA0S|S4vN83aOi)_%eJ~Wf0RVUmoiKUIHB691n!|gNYd1;EFt%whFUk*y=zpV`}$;0 z!FuD&_s+;&-cz_|t|qG(w@JZynxf0g@?~in^5Nz*tXMM=m3REI+sm`A;QyTPsdu{} z1?@*LtSq?6cAZI`<_u$Z3Rtag?`Rr4m#cL!+!Ah~TeqCX1^k_vUQp4`i7g=eH1h$T zyh5MP#(7l!&T_RyJIFEqsa^veM>2SOTCBn7C(~V;QLCtcK+eH8+gk1KbT3$L`lu`F zG3>20R^~^reNFECAQJDPxQJTnh z6-Ff%uzw`Pv7w8Q1=wA&g=&5e2w)8ha5>ZVb8-Cg`UAJl-8?L& zT?E(K+Si*<^a%FWlVC+Yx)po!-}qTQcXIo$Q#r_pRwu4%mfKML?`E~+u8uAKtPl|c zjd>NshJi$=!If4muyY`RHZ_05w~~aSyjaL-YNapv;=G{Jep(`ks{{Yej4`*|ko!xU zC%6k8csfh~s9n94#%sou?8139Ftr)b`QY(pnK2j%Z=2{%B(z+@EL>axc<%M9KS8#dE~M;GoJyxlgZc#}XwUlw*TdNi z#u1y&SBq2E5$GCDLzD+IuZxL%b&WAKkh!}P?1(q58KauDY*9gL8^Ie>BgEmKrsY}PZam#=Z_I# z5n*BPgtdmphS=;TZn9$j5v$8{tHdE{sYDc_AGt^jP61qWP1li_UUT*%tB-o=fM@zg z#F08vnWjCtXS_cej$dU=j9Uo()4* zR@yrt-X%{nfm!QZlpBwWPJeRVHD9Z4Sf<-^TqDed7>e`v)_FunZQX4mzQsa_BJbT~OzucI$RWY4#RaYtc-^d2^=;FVL^B6|O^ zBlaO}4yiVA@jl9w5>bg``(laCzeW>LYXw3bStD!yQp?KHD-HYd$$MnGby%r*B5Jw} zv?!<&Np49Oz^IG7=Z+_~@Z;m$(?BPjjmw^58A%LYbt0mH`1pe#ETZ+-xc(qOZvX@x zDgp08ZF8M3NZ0$^RxwqIIsW zBURs-QmiDVIvjC!ZE+oXy&uZx`C;j`KHgWY%FvPp%&uI-vGKutndWJteMfQj!1vVqi719jXFJI%!&x4dbL=BBt=sv@6Y8_qL$ z&&;AnohucU?QPg?(NKUzhOr?^QwqhgLW&Bn#s%RYo#aAlQ7`SoHn{($RikL`qrr<~ z;;#1erwf=jplB}!Cb7<4;V#=s042w5{;f;?1lo{}7M5KPbJN_3a7x+)HUbS)AR91v zh78QG#a&DW!PtaOQX3Y30~2mVT8VC4uFDUX^Ejx%1AICWRZBN>d^4M&-}LxY#I}q4 zKOP2xS@7F9_V^pV<;5^sD&gnll(pq}F2k$^w}iv)*Mf^hiu_1>D|+XA?d4gKA78c% z634+-s!mlJ2>$G5EzNIVahxQ5;`{tt6ke9O);J zXTR-)a1CtgXqaurV$q7@8kNHq&NO~M$i)rfc##4!j9AvihYv7&od*^f!Mrk+5tGT0 z8`q)M@=zLR622}idqcJtTa3QqMt1$#;%h~V0=L{a^ZM{|cbhWw>n0AGdNbHE1iV?Y zHcyu>J#9N!4^aO2FL3Lnr@lS2$Lqsi?&Qas|IUNL;lOA~GgyNtV+gJVkIKI+da$zb zC3svu6cY`l4j8(rSspK24BeeSvq!M;XRO-Nlxw12yIP|GTG`_cJV?xj3h<_-yRX*J z+LNaI!>KE+=mbGmM!9OPQ|NqkDC3gy`WF<2%Tmr8HUzwd4~JkA0>?6fPEf{ceDN1c!XNa_EbB0kC#w*lK*}O zE#{z@-Poar1>`jiD3JLi29P@OVTGZ=J81S%{hZ_Dd0wEB@g&6|-hZ(ZK(~GaW9&LO z+@z-+*73t!(GJ)KdOvi&5f5b{-e@c_V+9Fs)pB}v6$HDTsw*ey4VT%n2ETi5h`460 z4_u7S!G-S+X_)Cl?QY(od*;tUuNsGIW{Qp@s3rp5ybN4v`mS3o>yTZhgMvdTGN#F) z6>KpiQJgv(v66_A{|xU%#j+!N#J+R2t>XTV7Qif1-7v0dQhppI_kI@`E*SrxbTFwq zb%p}Iy?CRam?3WvOn%MLWDyg(kKhn|>AyN~z4<4)D$mWYKlbxgLPfCjvF`EtaM@=D zm8Q?l$FsnG3XQUJ@KIsvjo@XP*zbBhuk@0T`fzEBG3SKtTh{*BiyU`*k$_5z^eqq8 z5Js{+rTuOQ?4EIj_jw zpXFlJgkT`sOW&$tk<+yWBX;z{K`iLlRzKfP{rrFNaoon(e5q1Kdi@V)cV|pt+0t_u zXZe6L({^YH-uKxZ=)`@tdag|=`G&MdoQ*dVEkrP(>te+gXV3)|a}f68-5B0J6kv~o z=c7>Y6V7SGa_{wUuZMDilA?AdkPFJ(b5=Ft=+sIrUR7<@hF>BF0>_=4^o*n%Qi$o|>q;mH( zQ*}jB;~*=VY>%WIrVfXq_LNQi^AEZ@C35|Z&;=pl08e}ma3LE zU*c`E4^7i^KH=!PJ%hw6*5A*0#A)?;^-kU=+h!5RvgMxG%p!CyqYOM7HQM0M&{B(& zjuz|NP@4EDc($kM6L-BKLPnWJt6uA?BmkSZ>&R`3r7GCBA*V{P+4oT<(0hoGoUipU zw6zmY0w&k}$<64$%4t+q8*x`Tb=4?0;u+gLsNj*=BUnx^ElWnHKXu?nzDG8MVivC$ zq#p|9ZCNfb9QKNP1vF3?jBic2_xM#uMH^w6@pV8@)I$U!=Ysc#n#0qZnZ?@+8Oox6 z;-xPIph4wqmh!o0)&*0k#OqX|!<~n1j0a+yWzal=NNPET#XuWv2orPQn`7>r$F)-+ zlMKkD#;o^lpqO94*lZ&P52cOBI1+0Hq}~i!tMV{R&F-KA$$nPY3|oV1sl>U$%Oyas z7=zMxIF1e?yNU8Q84dGT`C3R<1qg@FR~^+C*B?7S`cQpeXN>bjIY2}SlD!h=+&BZb zJw&WvqJ;1#_KAFxQS?+niy?e0pP7i)?_@Cr0a;*mcH0fhT`C?1qjpb_fm80=T6rcG zwod`QMeW7Ud(%6%nORk_EXr`xSjvLjaJg8_xc6`Z75h19<3iw#pb{V=i3I ze|7(|)fwLJ^4qsMWnIla9yk$t@bLU5O%Y^qnmiD7O53X$0HWNahhyc|IXVvk0VPZ7tJq+QJzLyk~&MPG=@VMge~w5I*= zT(h#H)f&+3C75}yTHA-S?U*=<d%FLJ zPrB>?-_sR-Kdqhb)4@!HPiX#^Gkt@S>g>6~nuBa(JQ2A}0k@t59p&-p zQ?y{2S$0$M=n87fHf*wpxU%}@jj_##QXrI;3RB58bv9b?@y6`GanA2LdT``>yB-v~ zjvo0qKI(@a=(!&r-P?v! zzoIR%nQ*@99q#m~1Up@1h4&}$B*taha%9x0a%U2yTqGs}J8-pSOz3%CI1Cc6>M#A|nsbJ2S4fOYp>!?#m4Ro1`2# zP0dq)vl~4j+^V-;*H%b#b3!T3J=lJT0(!!A%eCJMHk8P1sejw9I#bFxCpc-r$!0(P z-f`B7PvzPvn+E*lJkx!m%Q5g~)N#v-zxmwDs_UV}WmxA&VQ0SKOGo!c2 z$gr|I&Yj}j?o!6Xwn88iVZ-gdUb4-6@RrY1Vu35sczUSha|`q6wSn#|AVa#W63J;2@tLBfqZlvA!nxXm2y{c(Y>^V}F76 z`EbS%TZpY@cE_M6-J&T{`Um!#t4qz@#ai1P;hT-`A4qLb{V`5KeoR$B8Uw;kB{8p8 z+=TJde)+?T;aeN^OMLxXCvh~EFBM@4~xeCePLo0*{r^bbkCj@e0y7S1onS$ z_71?6HsAVaW-_tuWMXS#+qP}nn%K5&+xEn^GqLU5o$vRZbL-st-&414RjN|idF$QX ztGgGTXZ2c&*rkIGgQK#=m(!FT@aqEy91>)j^@+q5#Ex8k?UjE1c-}q56Wop~K@$}I ztADzdTxRGt)-bvHY^$A}sxQq?I%aA80p2=6!LD+3GJDTnP=b8n8B~b--F>zP2 z!rAsob)ya^!I%}^@$hEc3nhNu17!}o+^k+_qF2yUji`!x&p=*i%Kh=ui4ySn0O7`g z{_lY4s8#bv=gpFfk`ru*DWJ~Fgq}9b$B6`GA)yPQlLVd~D}Hv(f{@3i@oN1g34G#j zeSmB%?}`#<6&-o*$8hz2mb$*Z<*`!wbkl$YiyizM&A4C+KdIYsMxzaB8#%EH7+u!Y zPjWO_bOeyoL@S-L*gyWUJOh?$2&+W@f|1vjZS}diFv@LVn_|{I(U)u~4`NK-+;AW! zboJ?4Q|cvfhmg|QJ~GT3;4xoi--2SW2ZmH*8noHlXwkhB^HfvPIq%ac6fm*yR-~KU zV(M5vBUK)p1paJr+S_n1>3>Qwu}Z4ElRvy)5NmI2g8cErZkt5Bl@VwQm`s)=stVwV)x zon<4mTZtGjipDib70fI$cVa{M6)UpjQ>LyEOPL-UM*OI8e}z!fY}u=;d3~84GWH@D zrqrtkR#UKpVb=LX%Llu1MR63Ma9eSvFn>3g`wcTd)f!z1f?5DYY9XO)|7EZlL$iQw zZiCwp_+f0WulsClFHeG>HE*X}>({y3j|bwy8!R~ls5hQSD^r>E8!=-Y19gA;Ne2uO ziX3ZqrS7-m8EcGHKjrjt9Dl`^9h{^a3lpwY`}ZK8Pfjs7G}wsHGHp+ir^o<@l5PA{ z7kf*~ZS=76gAb8IM#{aS^@?GyS9Qj*Lk~s^tk~_&LAIQaAm`}ELaJA}vc=~9W%uL3 z9T=Iw{DoWmDi<2h!aMEOoCqYx-%2{M-91QGrnm>< zz;KIN_fVps$Mvyj*nClbU9ByS$HP%T3z`1x@Pp#U&mMIHDdD>|ifX$dspFkH6ge;+p2>D&X^25Xx{O3cT|I zDJ>mUvxypgj{hS`41gp(8_hxe-!_W1s3dBx>!~q-pg~bS^38wmaec5=N&h3CX23>a zik(;s=7Z3GysOE%W%L#y;M1T&2nRMG3L&NwwER@d){8Y>u^k-C2FzIE#I#&O#fQnF zFEi9i%JmjVIutD2|1pCneQq`3pfp8Ptir?c@kzP1*@JP?d13+R!W0DX?4;e#qM;0) zCT|4o^Qq@y0F<{2hZ1o7>#5c1^`VNF&CY5$mf~^8-rJ=V-#u;3Gy7o;!Izd1$i7Is zdw*1a&&bLW9Izxbj2ya@?88LwqE{#hOiyx!v%PJ--a-pVU-5k9aMy@N&%Tul4<3r8 z+iGV>HNEZFjF$Xb0&BUKqt*Q$aAD#AzSddl%r6LgN1p&47(<%DrC2!DkOfiExOP(H z>)8M-0BLSG5lwF&PVEvmv3!1j(EvFE{`wv;sDZ-QqF1o&+-RIXSkr&St8k&vgo@fF19{M-%^!%`x{rw-1CwB znF6;e^b0khm4w)OJAG?YSbpL3tv`LCB$-F3Wpu;2cR5FhPUw4yFhd&S%MFj^JzYmR z%x~Oo{^H9wSaeV(fD`B-U;You*v#Eo9nq}A9)4^u<#i9<@3kx7q2~>?s(&S19NnZH zPei2Ek9>o`G#f?!t8FWGD$#F>$*rEH+y{JEmhvWG;}j(x$Hoy8K?1pr$iIrv0y1jH zxxzQsLcaQ(QY_;qorX>3>W&x& zT$B*G<|TdP>HWoo3%XY2_j#2=f!#FDMG>C{tD2zb#xE z)f9&^7`?8ju(9(4`Y0NN2HbD$b7YGR1J&G#dDq;nGohGoz985@TkfuHwP2ZSti6p{ z6klnv&h*FpX|mxN13kpp{7BYuILQMJXtf1M@GH9iXH#}Gbxi!knvS8P;ENEC2^p21 z#+7j~=4`VhYO00>5?i7V@W9z}=~v8iUz!sN%UIduKt~Plwab z*troASQYNF)%iyAiLvQ*%)_?IV0T~ROO~9t-QcD~IxsLm!n(BAwl4dt1pT zotSBK+y7iaA+WGF$4ga3T_X7$}-<|H-}I& zn2x;?Dwbwfjw70ODsVX0rs zS>-^^zFC&9XhoaT;7FYMx>@XINvkv38ju)nX{r^>Iz#eM*OfXBxRSE4F!;OOs%i}0 znz<^XwTkyYtC@noWQzsZvctQ013AK?)?9uYYXS;0@9|LzMo3;}h0w%NQ6!WHWQzXB zCr~lFq7u!7W>)houC3NcsRAbC99*KuZG{zowuBs{;A28`n&PnI`Nysm?!wgOSrXll zBGeipjhEtDtN2?+Svj~fPXW~x|4~*LH*0$UTN+srFpLMKmJgwkvE1pk7d_hMXOV*d zfa`!ZQylw7i50XJm{I^iq3O-OsR2Zkre}@ipm7r4FmH%xQg8cRKp_an z6u<0-3AjEv7 zE9SwO$K4*%trZqF`$}_Vq>|Y=iF1|2T)Zv$j{%eA7^U7|73{j>Lw|>b}WX zlHmRlnS%1Li*VG3iTY_q0q}S<1*o5JpujaU0HhWW;0D3PX+QRzq=GNM!it@{ie-WB z+M(*g2g$HI>7}@pi#mjxr{;~8aZj)g*vd{He(zPnu{x=$OT^7iVTIZ|_@jEIY33{2 z4E|>KX2gNif1gf0ZwHv>IHlKb%%4DYMeu7XaB-40t2Yu^CV0mLmCx`1y>3V>X}?Bq z+2ySc*}NAijm0yW6ZD0vcNM#@T9o2=xH*_m$ZT|nOnIHQCuFe+obtktUJ&3@CkOU& zy*&-)x6sljRDh|Q9x0AYt&Si?56JSs^DZ#GSis7!FyKE?P$%GA9z<1=vxeF}Jej== zQk|s70TOM#5E(4YFdcD=$^QKAX{YgA{EA-g3g22EKQGnqUL$G0ngb#IY{y18+pz%H zkFyOND3f1Qz{DC5Bj7}5X#;FYN}o27<2XL;B0S9yZa%9xslr65$>u}$^i_Om;>SC&RRFq#QdU?oOU=B|CiYcK6EK73+#G6z-z^{U zWS|^;8UzU<#Z+-$N5-5tsGbL{+rXe z#gXbqe$Z1C5KR*wFeKG?lJ2VEexNmTbjseCb0F3UG83ykeR^@ZB(1!V@_tfpRfTgU z55mTMtJe7&b@k2rBOVUEQZ4ZK|CQZvNi9EC1@13k!fELeBQIx^Z6-@u%|{|!gI)S@4dF{)tilN1kjABz6%s&Z$$QQfc(~PK(r;AjjzSb zrgVG579bLp*T9$oj!fy-4nn2MWANB`4nJX!tHM9VY_sG|HcY~M;z=$Q>`PJ{FXKp- zYoLo9SSF*Y6CPm^)DdAYp@?$mC=s` z-i{u;I7T|07NYq9trzuGa`r!~#f0EsYRZWWJd)-&u@pG5#B{7G#XKA9#N!W9SVFQE zaXFLT^&%aYX>d_ekYuLhm8+^lIb3qCT8)lm4x7@G(vr8tzjM)qr&nXjw)Uwua`g7=LJ@B!qpw-w#)V5Rvp{kTy3HzjYwk<(3>=Ow(*Q#>`pLJg}t~@pQ;2> zI-tt9jEk11G3rV5x6iY=>`2*gVl#!YLtx#wNhPv#l?hIP>h(T z3{=gjz5~zcNZQ9_Ap}>5m~yT0o4yd5i1pRc;f)1%Zi=GJwz|P?YBMP9hvX961>u(s2?a_&;%Bj$yU`M=s3XMaxrfl&?YI z`&&dy^*O4#x(@~(Hal9_H^&Ypqj`4;)y%Y^@6X5+6u*5dIFw@v?rSc2sk!5EUIUtm zp32x(Y68~>LH38w3r%&ORQbX{(%yyMj5cEDS256p38+J|_X6!zaYn8O&TbDsEA_i}%FlOfo^#lN)A%<(>AJJMkoDIrwrG$kv-e*03hOy> zCTqSSI;)EuPGS3Ao`)$nEjNt5ne3kWf8_$WvmdqTe$-z)ZqE@Dh2u~jg4+I1`av{) zQr@n$LR6D3k24loKs*d(-aSp77Ir%JL3ov*oILBo6999#=>pid^dcBQ2^D}_O{nJp zT@{;JjmEunyNsBz0)8u5Dh#Dp9-bTE`8H{YeIcE`v*x4La$+*F7i-JA+A`;>jhAwEcqq~M0q&V;IP-o|@DWbdu6_(($WPd2l z(f_sFxxOzQ2^#CbNuW}t`bEa)r?5~B3Ne1hfC`vS`eFy{5Q_*F_*Yz%VnPIwzbg_S zxkp%+{7Y$S&jR1ldE2gVCby$xKp&>4aYC*zrn|LaH!9Mz#ZsIx=KgfG_vBmvbbpfTFh&N>jxL@LwyeU{?}-jC&r?S3kS~4*=y>qv;u>pnk{1z|f~>zo8bAPmwXD}qKZ?LKoR2BRZrD&) zmLH(cpEAW-_E7cj;qtH~pYlyy$lAe65#{=Ij~Db3IB`Z#7moqvVB z{rJ$&+RT_dpyh(Ne2elo2__BJVGEltJYDG$|GS6AllPuRvIHI}5;fcD$uR1|Gv1V> zbIs@PGV88AiYTL<6@PJJ%(-OGs|L4yO>q>YcvE+-IR7$yVe!*=)XS2(=BE@JzGv8y zZCl(9ic5{Zr$`(TVy{JSrj$u};X7oq8w~Vc`4W+T*|EFv*j47s0 zhnTi}QgkYHf#bcYU5e_w37E-*?_swSj7l!s>T$pFDTUIUZ!c!BvpNh2b>5vxP!=j% zoX{|Y1`A%&%&rgPoun+#tU&;-frFMGUGTx$YPAKp0vVZyX~lTR9k!GR z%&YK$7q9aU6%pq1_Eq5jxvl1zs9+B29Q$zT#f;1 z;E3mR+1Voj{8(e;gg|Uj_mhs-VeryTZ;GzGo6xV;wpODNt;5zLZK>B)xXJ_z+$&}^ z43>FAqv!DBE`48R(Y~oQbukI{r2|RWy}CrHpUJcuaE!lASc*i34QAJ4ZskQD#X;Xh zC{Jj~CoK57)xd~_M$ohaj1!qY;OjJGTJB zTacmS)BWZLrWADga3#EvMK0|cd70g{ox4r0{r)l7O`6a0IO}=T{B|>KL+gIB;q!)j zDeVO~bbTGR5@36$fc=%(B~X3EZ;O$ra z-h}lI-uFXzFuEZ7Q+F8ox~}E}=Bz7gQL{mQFV8sIOSFYMDB-f@T3!pI||kpCN^wEcY70@K6>@jxckc)+3>7Swa$a z7T6JYYt&-cMZadK=BEMvvk+yAgAnTN8TACMlJp%;$I3#YVs*U#_HdtgK>o7 zYt}3WhFcEW6#3wR(yQZ*hP~;Qi~yIlTMPZK9j$&&&csf`2!jHsM;Uc~^Re7(@1e38 z{^ea>rW6xTp8wFzZ6{-;kMC$*jcopX8Dy|<<8?~?i47{#Lw!wD_{>4b)|7D(G&<={ zgDL}Q!}(htQKaEG+owfMH*~`yeX9C#qT-YLlT$QCQuaK-We;>(0vLQPSpcld-rOgU zn9+6O6<)`tjT<$haprgqZmT^V3 zp_i2oaD~Lzcr%c=rbqhHGF5>E1Y6sWWN3;w9GK|X(;|p!bIw^qaY&14c%^j*4RnkO z=cODRNPz{cJ$Dmjk>1DtGnT5?9lv!Uw`_;yt^RaCDVZwpYLETMDY$}VR*xKs6Q7ty`07{oogIG0 zi6AZNx-1FL^v8ES$Fl*_0fITEa;JeI5Ul6$&&IT~52TEz0$e8c>;;R(>nEQvf|FOD zQK&?uE*~*i@va--kAqz7al%OK=Y6j>e%LzYDxBzDFg6&73;+ z=72%D%NdSEgN+0o{#c>!qvLsnfhj!XSQhW*g(U?*`HO-=guR79;6%?Wb7H*l25i2T4Xyh+ z!@$*du;UGPS`ZoT;m6%AlciemNydhmO9h%aajCwh7UZ>ZpD~wBv!6M@BX5Uomp4`Wzv|{dhQwjEr)#`r6^0ST%$UYWI5)T9uRBll zo{nh4L6^oJ(%h*xq>80L#^OzuL}E8~PmwCD+;*__vlCTlK4VF%O|RF~7YqI4t;&%p4bdJHjOO=`_HCdU0)>#%JdA6cr{j;=>mx2%P|Y>8tI zZn)3!%*VHz<0-oUmD=cd_q%<4{iseu$Sieh#rm7t#nyH7+qTNzz5MQc$G!;@vsT+e zf98Rnny7@`pW>j3ywU`ul#ptbMR}_(GolTP3PMKB(sK69P??DLgzVx1APXO_E#13k&m$^K;C|UE`uHw)v?70*1_QpgxN1Vp?FlZ?In>TwldMoyn+k>upl1s>XuV zCQSKQ(#(#}ij^|C(NBdL&`mb0U?wC?7Vz22VIx1(>teeeBs?EE9^)UMFR%7TKl{3q zWvXZqvnUMB^XC$X&G2^OxoVZ*~qvc$+#$DD--{sVGno!`i`%Kc=;4o z*M{3}WzQ4D1!06@Q0*E&>7van8j4EO*X25il2#OM+WUxDTic$Lr-dggE>3d)rd|b| z1o+95ok(~mBo5zoM=8&i)o>d4$g=nGB7+8a?!Sp8`_)@Wr3T! z-I5$c4nGMsZF-fmB#l)_hrxh=_XI7yroMyN7hD2wECQ%K0B;R(@L_xg6HM!&$%-GY>ke_SS-+ef z<;#3ubzVkzfvH%C01;hv&zJ(O(zTSlD4-no$3D{s$2Md{Q=kogRIm1`4W3Zx3mrqh!2;k`EpX>EpDm zJuRv52g~Q1>$mcx7T0bIRms&(zL)r=>DVqDB8UauT;fN$x>Id|S(_|4(zdoXblc_$ z07HB}kVwCT0*G#*5CFZc0@k95a$L6PdJe7y^=CwY6lbd0aJwYk}52CfR;qlhe_ zF8|I*iH)Qsx1}wHzamblri5+09&b4ExNu$*6{2)+4~(e({6$oMO$jGws%W}?3t>VE z`@)>8aQuO-ap@XzE;s$+PTbG_JF2-Tj>HNi9nT&iFxm?x^6)f%Z!`H0r}pGUQz;b@xqqFa2^Wb1sMqTZMnD2<el_WNV4ns6Zqmnf%=#qN`pF~sHb;ngHgt*F8>yTbCDLm!{s2jw)01i{QL_)$8< ztb;{-otF(*tXvL8nU}QGfOa&~6#_N1WvA876cG*V+zuA=~4B1*G+Z_No*PzGG6?2Z*i`Y_)4<~(1^ObLd!z;VL^U~?wT{R zvB)ZSCt(9Hbl0CcD-WQPvX|J(gzFI}pi1nQPq)`PXo{cT)2kg|Dcf2l-#8N7?{w(4 z{7yd;j)?f7Zoo+mb6etQJUof;!$l<_ld|g3Ip>^&K=RwsZh4`;{uF7eHX7~YL~u45 zAALmAVkR&{^ZA*NS%E&k?bQ7#36dvYs_{1dl@YNw-~j}P+lD@;Hob<2?UtVLd?qY) z&c(|&J?t(wYWJie#lT}?VtDy^q6lq=ak?qH_gKA$dwVzRu;FMD2;tSq@MB^E7#~qd z?KJ^9t%RLT-CoP$E>4cS@DOUmyInR%+@V9^7ctg1;{blB z@d2G>&Ll3Xh5eV=%fL|S#U=3^cr=DF5X+op3`_Ynv_^V={X{}l&0GBE3R z>T!=#%6P3Hcz$qtd?LWxtid6QAGb|8f9ai<>TLxy5)Txjm!%H%wI4~PgVEKT+#MHh z$^l9z;RnF8{DK(b55e*ypAILV=2$TTw_DLiMRWQKhbTFM<35qC$ls&%drXDJEfC`C zX#~L2;P?YXvy#pP4-L7OO4R&%=XgZOU$0t`d4YpRIeCdUXmT@XJ;_ubBH*P}EXVYyU%!#G8mH5`5jG65YA5C# zB>8K<<|S6-8Ev_O&zvWf?n9~S`&6$h5PwK7{_r_;1g&0E?0=`~5Dsigt!p9lF=krxNSTW*0v zSO)_DS)BYpvM-_ZiAgcq7EslZ$2f1b7&YHy9!>m`^!FlHx{DEw5J2C%ntp-t0}^AW zT(t~=HDEEeyTYWra^ng;JV^F7^IlnG&(XjfvI5790c1D>D7Ro1YiQ4~t!z!+kwoun zeo3(es;)qz+dpI@qC;lBrX$f)Yf>5lI84K^_BoSd3GSGMUfg&u?XM}Q-r?CFuMQcp zF_Z!DDuODN^GQ5{>v4268Lg#t^Z*l%UKf zH2D@-tlc~31R9S^YA*G2|4&Y-4v2tb?-vU&tWVSo=VECw)P za?ml++0#}agM6*)zC)H(<(?e23Bm~VrprsJEMjMTNQ*~x(+Pt>l1o^dSmkDlZYX=d zjGZ$EMd+X`6u)Xy(t&|4z1J#(#2s1)|I~S&`ixa)-<1&m1O93WEWG+|%7E(z1a-<1MVB{Bt zu;URONwdEWhRo-9`QI5*5RN$@ls#ieT%Pv@oRiwjBs?E)qKyI&*4l-i0S3-9eW%dcr8yF7{e9MzPU08VDUo6#b zLr}L;Sa4@KomN24H8)!41bF^+Wc@`!Np*Cka99tne5XeuC8DoIkVu{FT}Fh`eki`^ zOl2^g(g`3(9okrZ-UG zTG)46{~SFw^eAWbDnZyt9BxRhSADc4c_8hc$~GrFbXLYr=r}dt?4W>h$O()O)-L9_ z_*t)y3blE!SCrU29?!ESU;!Ori^D|CKIb4o?s%5Z!YZ3cULC++{yi-9E$;hxur$5x z12bf}gWNr{`H6or_@Fe!#S1GOwN(F6d7-@yu=e`?R7-gD;o^*STLfMYlYX6QEsa-* zfciH*DYnNpT>Q>^r(fzW8ws6EW*_EtorzysS3y{yTl%mfnC3JkhcbG#4onoBQO@z8 zS>ROZ>%i=0T8V=hD1}E_@Ce9-tj2*88ShEa{4{rnUsVv%x8XAP+(z;e`nE7F*N9$* zD?;z+C`7z_1ur^IqGwxpy2FSWg`01)gLuQ@86Xm;eb^JKj;XO{@>yaggT4lkKJp8?HR5>#>0k%0Qjecfal-fqHP!>~wSLFSsxiyHqGW>x)ePpPDxXczr*(=i7G5yVuU#}j}KVVEdg1b z-rb_~w9|DVY4?7;lMyE02#n`>6cw}2|JBAT+$q{S;$9krGYsSqFqhVj>8S=Fuwj2CCxE&GL7BSB3Vu`F7j9rIBhq#gcT&;iD8X$4|zkIUn~rO zqxq&ONy>c(v`n3Ko~ba+HQdDJd}6CH`iiOH&Ga7+1gJiafkI7@5i@`sR%(WlCxdH*&rCr5Z+2N}vUH4QRb zo&)2r!iE;=JmwBS0;r=Rg8SKaNv*UMVKV&42R~xhxj%OI%`vmyehpE3%kNqx?$ALm zPB7!wbc-Qy7W2`?#X%iunYu@J#**zL?E^>bHv}?ohb+$z(cTkyI%^Ya!zb5i3}iYj zQIB3Xx1Kjm@)>^uhcO1$(oDPQ=uf?0yx5mBStq-STt`Nm@{cO#=L3cB1hKpt=O55Z zvMlRxfNcsI=VkGN2I3IqQDid)6AUTu<`<_`6(qng5)xYEWUr7>;`0PctF1bo2=u~& z&n!7iC+3+W&MKps7N*hD*Y*613B?TAM1u5z!XdL$EA=ApW>Xsx1v;;J&=C10vBMYm zUGH`5e%r^LL&7B-dm1-Q0voZDJEP#pf>qy_X4)ud-X{d;1GbfZSW9j^-~35ma*Bir zpAzu$gfU3QG1-uRJS{3nGcd@a;Pt>jc^xG#>t(neW9GcK}>MP3UJ zW98v_auERz3D*j_9hC$b=kNU~Szd1%wt*lSHzfmgV8R89*_fID9e(f+o&I}jS#WwI zHj}L(jc#2=ehwU^eAV! zmIJw^Mn$=H&z6igVPwV9;zvoPnF#GzVZn%)hc`l#D3?jvZVr=z7M`)28vSz=`XGq$ zU6lICEA7mhM^h9Lhci?JI-YgiUd{L9k)u5=Go{3GGn=De@uVw>5@j>;avmFJF*#WnJDQu4xb4ZQw0K>rusU0Ve5H3-Bbg!x z4p9}FrgKJM-<=vAwak$lW<)G3(CZw?|1{ek-CbE5IB3&9CsA^bLCiVD4tBe{yI-}3 z1JPBz*$9H$AwgO|TG-#wixj9Ts>WB|N>)k<7kp_xh4BQ~q0Ck&aN+`h$sjUz$WNzY zOspi_o+N0thO>*0Y#HPex%l2zf0%;~td$|o7;!lN?Z71Exi6R{HuD0b(MxLSxp%I8 zx#Myly)%d8CdoQ)+9jo5sq!iKK8IrYS8|=P_OCF6g4$ezd61SNQsIeS!aHi!$p|Mb z@^UxdIp1Dn3vuI*^Kvp-Cv`a7qQ4z9W}THmZ9NpIld6OIV2+km2D%$G{<>N)mBJuU z%4~M)8`ajDj5|ZP ztO3D>%^3^P5siU!D4U(8n&hSfRQ8uQK_|+p2JA4%S-Ud!O#|B6zw-+q)v6oHA2rP> zaFv>Wf^o zuW{qmj)#rj${S<`EC;z*sAJR%EGAQW_I@%9N`gv)e2Uh{H~}f@uArZG+a&h(egEsS zOGDz!;&>aCa7bFR&j4JSO1<;5W!Pb*VGy}+PH~`r`eTj3C3zdICj1zj~TZ=0#aFY!hGM-(_f7+oKne6*|BC*~Xyo=cP7gc&-PUxRW@U zS9+g*%2^P2knJf}_qA!-V)98dI@__PNDdtLBA$~PJN0kNnp@0=Gwo&$lm)^o`03ZQ zieWeiic5JB27ez-kwnPwO*+-d1}Fyns+5~eI8N4tki1^s=)QE!Q$*_HrPAo%6I&9_+ej%0=q( z=E%RPAz4v|8<|w-!*u60c>OtuYne~zfs(mGIit8X%^Z)4-{}O0VdVkda$`o`k{Lr7 ze}g2m4b3Pc{JgZ@_=1DDYizr7KZs$9pAsVwC9qddoVicL@$Km1qUdITJnNh~hsBLV zO-f_ba)U|D=qsS!g_JzT-77Z&veV*YK~_}C{Yjd+G6zXMBGrFxkGO=A0Si`|H84t} zqzO7WJ!-ikCcLKY2f;QlPD4eHH>rC%O;Jmu!}WLATeL@u)ttxvodztMD6?0QggDXkkVHPP)9m}P+@P7mTeV!hjun3gajTk1d;#jn)|N#|0)QUtU} zvbfMOgZkHU(|Nvhx>OYarm@vg6CCIu{yYG-71+N+G#JmgQW!>=b95bE1zE1UeX|hh z%C$e9M`^(Z3aND*K5D%wZoh=EZ9d%J&2V3gI;Yx(Dxg#g<}u1qkD}s331nBF8AF-* z@J9Rtu|6n@ez4Dw`GT~x9n@l8#%9P-JxnFbVxCSG8fS2tUJ)rM@0ZV`i-?!cTm;+| z9NffU5s*998m>a9zKUU?H(arv_<;6yHCH@eeUBTD4hN@|q zq8?5^@XEt_l@=bAVOT5&`$bi$(;p_2jk*GMUw8+X0#_Oi|kSV%xAgG{#{MQ@~V z-R=(Am;O6Cb-?J>msdv>eAb24?GYhh!DtS9lIM_;*~TQRUe)*gY=E z+nv2Sn$Q$dn@}H=L^nh=leAY@5ENU}0({rtZm11I;)EDx%l6`1M!*LyI)sa+y4z~o zK~cs{etJ3S6~Fz;EJ|Kl`No6twx!66C@o;6eMpIib$HFhz+%X#b9+rcU>#8*yHK>UpSz_ zH#c8^2P-gTA=J3(8{|9rpyNJmQNs<}uk?p#wSMA5^z`^r)yCLHs6V69b?~>13J$I; z8qSY0<8XZc40ip_`j4(9KcSROkSK#7?`a?nXqPZy?$d!$6bRk$cS3EODfK|wT67(K z`il>B`xBi$T-2w(qkI-VZb#{QdJI#zLYi04i$2IE;%Zk2$Z_tK_F!0@GrGN`H>;qgk{(Gf+>y>tM;Lh`-A1);eO{H|G^^9j7QVb8GP0>AYYywVNpSSnLM`1N#|fGb{W zHDGR>IqyNxeeMrLTfOalb53eSfabB|K1~6s*J{e}OB_^a`Z)kc3t2`2G<%r++u6#L z-Z5V9uMX{33}^RC7uxHR!#iYdCw1IK^w+;%DFXOPl@Y{yIoVqIMR1Q3Vbtv-zwlOEyQma3fsODvWk-TwALqVh>0n%^t zr7g>aF<$<^SbOWBxVo;vHz5fGCpf`E2o~I3g1ZNI_r_g9a1ZVf9D=*ML*wr5PUF(t zljnKAJ5ygx)y$o`{~^`qoZe^cwb%MB`^6mpi}|{0O|x>bve;Cp{M$IO(Y%!zufQiH zjJ|NR;Ung?rc2x*2;!+x+*|`VYt$v&aloKYmW_ z2nRT9sL6cl^!^U|yAR)!y!{jgg13`#G^Qar7Kei+0!>GIAr_dtykji(h@r-(+n4N5 zj1vPruymoIrVL89QxF3KKdN-$G$lh4dhS&xhoND0lgoCe3i6|u_tL~E@+IpTj8XQ@NICymaXI(!fCgCfM_CL< zobf~+hkaJ5=`gax%$`4@hhS|1N)kelJqcqf{)$mnkrm-<7wkqSkKk0R9$FMGdz|rf zUbx=z;N-Cg?Tl!HJzW(Oh`Z$vIgmMwo^wk2*qEHDs{N1hW6S2t&2YL%g2JuYG({@} z%2Upkm$9@sLQC>vu<7iwfx4^IKRaIfJwV~L-qeYs2AF1$vsU`={#<&$G&N}LipN0b zc6_~kS*M45Yl!TD=Pu8%eqL)B0xNz{(uIzS%-xr&7|x#Os>fd~>ATdGYAwIS&mhgy zZ%i^}PCjC@d58;i!p}(j%Gc@fRf{t8Cs|&2Z}IReKXFZ3z%);)eIHu(p_(IPfgX3$0tsr$ zK*Qlhild6Ysi^hLs!Z_s+S`RBQeZgvWaM4FVT8Mcr4L4L!xhAzLc>CHN2Gqqk2klT z;Ny+PO3hN>PdhF4b1^5RH_NlW$#~AOf|NFBv*hbSuS&z7+aF#-XHpxS^f?zoOjvwy zoZ>weT5?j|d~PHVv{YZ%{@JOUyKFmtc0Lx25qXx3%2*y1i7m{UcF276tp69J|C+DX z1zQQ;$IHk!kv;Ns4P71H>D#mK(W{yF=KTr(Td*2 zems-OuPrY5ZlxDDRMPvz0Wh7Kwkt7CgyoWaJX_=4%u(9f`G|jH*rpK^9_^motT!x< z%RVLe+)sk~S4mcf2d&$8w(Fu(7okT|E%syqe+@;!_jVangyG!(H>LxRY(MV)$>Bey z193I1(n71}#Y8WM>`Mmd>FHIc0@onsts>t8`>p)3PdY{0^=GG8!mlTg`|-7v{+e^m zr>nKhEwIs?gOZ{dU5lZauwYMypx46l)vdCk{4+SXRSdB^G%I!;)Nw}ld7UmTPH!1I z9O5a%PZu_n-Ww7}zEF6G40+C3Avi+Oy>q9LWYU|+@E7G$%Gxz?jGO&#?bQKo_aQiwAKwVQF1adB9yGfZC5GcBj z!JtuE&#$>duW8pDPjhu_2^IBYoqsnU?f)*=fCS!Pab&5+LVB}e^bS*5TWDs?DfMIM zPxic|vJy^?=kz!NpAD|e){>%U_m2mGlMxJ zxbjmg-jpcp)~N;0%1pP;)OY5Tg+L24N_T>AhcSr=^>i~6{NLl5iqc|G14-&k(rWV; zR<1XQ=FF65?d{CV?Jds_8$Bi?#7jNnUIoPil&Kamza;@VYX^p2a;G(E=X-+976zv-L@q=w8s zJx~c%mX(7W)6=Uh%ttf+O-DvTM`Le&gv;#L<$t!eV7LhY*`;WL4YYL5ltH^lix3?B z&;YwzHl$L$(jpTL#DonQYLS`ELXEhq+3tD2mAPz30TT00xV!Dge8VHq_I7lv;{$66 zyu=q%Y$ii*c+fE)e)xzHjoS~gvy{lGHSw9jXXOW{k_@f<5v_hd=CAY6smzL65~gE) z0gFQezPk_vCNEZHVs7!$l~8u?=-=5KMGZ$=JT(9*FHacqLUy%_<=>*?%g_{ioZ<5l z3m-&>=!e_~w%s}s=l#A}up>OWoOz8VPSZpO372t4lA`f9smrE*llV&&-}B1a{OxaE z+yXK*?)r9Yk(sTz7P@~A$g*kRt^dJpzLG^kiirGQMHhY-d{+=)byTJe{L`<1M5wJ0 z!odT0NfNkP2ku>z5@0Q5UuNf&y|x#Jo5xYq5(JZGWLV~QDofVeRu8VBqCMBAgJ;JK zm&Nk@^7Re5)xlDi^52&iCpGwcixpUL`YYEMZO=l5txCS*`~9IIfRcy*f*s}aB2GM8h|})z)USms5@tA=y`S%p7?q=~ zAL$HO1qpxp8GA|R^4R|KC3}D`xs^@1ADRr^_B_mA^CiRXnNkq3=$Fv)8WG}E|AS3Y z>`ja(1M<@!&uCA2FhBcj0rQJ2(m;&4GOxU)@n+!%1cjgmP4=L zu*~#k?!n>(H<>k|e-uRU(Lo?eAAsDaGsHm}oZnoq%b?ik z51JCkmK~>Of-_@hc5Dp&-Dt$`b2BnN)}*ArT~-Hpd(Pdq6ozKnME79MNJ(q!PY*tb zX`E`twzM`O^7V-0gW+CRRg9o_8Dei-Pm0_#p=F=dSOoXCfYa)*V7wm9L-UWi1zeOw zRn;fI)AQ@}x4%{9fBa}DmE@#OK~>fh55~)gbNd^52b9I~C!2jeg8yb60uEE808UC) zHkF}Viqj3-*1lz)`z)_xflBx@xv7WecZ?ym$HK#oI(^=H*mMt{QH+h+5>2)s^I>)d zkAR>0J^LV@p$t{sjq9dYfrlOXs^2X2_R8zzc~!<)4X&J!GC_o>L3p=d+1|jBd_f** z*P7e$F8}PD7CQ2@VO3OH^)d3c7{h<{KiV7M0hj-q8Cfa(WELnXaE0+ zn)|9l#)!7A!Jp*3?DTq_{uRrfhW|hCbELZ8>WZi-_!C*{ucx;GvM&MV%AMM3!l4Fe zCuTV=;UYD)w#20cs1xoF?+f1ebY_+hn`%hFJT`flS)k|}t9VQ zehfU;3caKy;Noprnom=eZZih+*)evO8385iK7_62koR2G66aCRAeHwdx$qcqo66YL2ezNxF=cqoE8zw`@IeN+J%w&t zGK;(Aq?R)t3(7CdIz>0AM@TAGMRD>=V^aO_s#q_T#A9Z}PH`ECe#n5{Awu-rNM< zFr_JdU61@jpYtM`ny{NZ9^uVYVlML;n^^)}A8l^ZiGn9Ij%2+b4alRGSz|T%F5SNV zkyBWi6jQE@jmr>Ikf1v~E%iKeC2V6HB8XBuQOWSB_76%Z+sMhJUEjZeeTWdgGzB=W zyqH%-T34}|ZunYnhK#2^E*mCR@3_J>K(3a=54l<4vHmq58J%Pf^wJhp+$K(L^iU6I zNj;WWq_6&{;~HfhAb6lCLu&go;RL>8S*airx7}hVjFfjARK&)_iSLQ5_MfM(-xGUh zG7qa(xQbG_P3`Kl3-N5{Rh#g8tSyeT#jYUXry2ItzIRe`xsv0lER7n(@+? z=<40F6I#4`Se{2=%{MbeOt$_N_Ylwd-s0klfTD8mt%>z^aB!ts4cck&at#8bPC^H( z`ou<{F}$PRN#Zp!Aj8r!0A+>UZ2DjSzR9*zV{qY$^4j!Lj>GK35*84BjY*iNBCagDSBq$6KF`&xZhx6P!4^sH?`yw?Mj|wq;W=y zeaCv7`r|8b_&|>VK0?Cag&dgu)BRd1?aREjn#V_lO-4*!zSr>x z03c6ZnFcTiaPQ5;grq6Izf zZ{NFJdwf47y{DtXe71Yk?vbzteJ-7+DCYvMcOVf}iDsZkHAsEmqq{0$GXuI`q>n;N zKmG}1Q%E|v2XBuGv#V3&7PuB_tA1^o^7FQ!2*t+VQ}}v+`@;QlEl)+>no=CU$OSd7Ea`YBx)-``8;!Cj+>Q)h6(YiZuTB+SyQ&tmoQe%Hq*xTSS% zyZhyyYwLOGgJAIBm(G8LY%Vg}pb&$({O(Wk@IplyZfureVQ-19?kI5vPp=V5&#cGI z`Lhp?U-z1$6EV`_aKo9D?rxSk-TNB5Dtls(N6tJ?vXKc^#qo-Rdd5ues^QXmY2^#R z?|qZZ)Y*`w+l@XBh}H!PhSWgPF?xPW1@pU13Lm{-(%-mTH}dpAo(QIp5VQIP84kcK zPzZA@?3TTdffP2Oa=g$`AjdA4`JLf8tQsQ{5cH4D5TE(4T!6oh!fmcU+8G1FyFnDD zm079Nh2x0vjVMJR`+tG)##*wOU()b)M}+4wEuv)f=c=~P_IZhin!}Ok?(+jC2$;Z= z9D;R}1vMJ`&Xyh13N$d(GlALIYTu>S^+-{ILLLLKN{V)9z9LDTm7)oT>kqx%0(6p` zGrZvPuZLK~qGTt4Yr*`G2#cPz$1Ny-qohS@BlEk_6|40COQ>Hh=e1-MA2$u|(VyhV zCt!ZVmdqm-^wirai8fR|T)ua^39`LlA< z#&-`7y=v3JszC%Jpxf-<9kIO(pYLg&C$s%- zg1@r!#iQ-6QCHpzDmv2*<|f|lTuPLW-ht6Y?7!t19`j~?sHUF=H{Z{_+;ilCe8R-q z+G6$bwC&_=haVfxMzO$DqaD_v8`h<}>ydkRD~O;ew&`B0d{+&4?Cj&0DF+;XgI9iL zE?DK6E>vuZ{9X0!7dnbJK0*914{R+s&{xvNJWnSed)-6tHprf?Y3kgojhc#gAY*fqCY0*sEs_ML+nQ~dDDT_4_|IcNXT49*O5 z{Dxazd^N6|Uo7<@u0GtgVz=j;Q)5;22g`DTv>r(>&|NRrx)z*mUaQD&j;TgD@oZFSGQg&8w6}R6X=zFXqBS4BPWCT zw}(ZGqUHJs?S8J13>VUZ|0yLksuY%*t7^Nq~Z>DCz^3(i^H%f?0NNjE4##<*oKEUJpK zA(q(lmNjL}rUmTK7}Erc+V#C6c&464&t0Ef0tMqjkKTGl%*|`hCempD$%c^?R{+cq zd;n|mUH>zzelZpGLc{pG5&G&aqu`Wv*^g)UuMpW+1&1;c4>E!oavRjI2Fow&>-P*C zm8))hV;%9Rq&07-+BCewVG+^rK$>*BJeOF|jaBrL)sL(5(9fkGa00?qDxlpjiFpv8 zzQpzinp%Zd>GG7JzOmCaM#>uWoKYM)&mU9e)<$w5?Dm#@C>bDPZ-47q*x4PywHwui zJ=Rz8HBP$gmQl2w6Pmr6+&Z}n`28tyqADAX2_?zHVLlv^!*tOb+*d_-UJeiT zKo2dgPAB`_P{j5L_jIGtHv2wzss*R287^=kiS)`V(^R7UAtE)g+msvX&5R3UJ?tkU zz}+;R%uXVGjfo_$?9P;*m0a@0<@=TtU3R4-EyK8!74oCPm9J*j5ALuZ+((ywl^O#> z%_^~LI#OOIjDI}!F-^bTV==2e3cTwr=j)7Z)(`_DE648Hy-*ayo|JB0Wr;ef5>1(m z8mx3D&u2dI`TXHMD^r%xdsxX__X|@Rf3zs_%z0fNExsD=0;z1_T9lCvALdP@{xdAy z7X#;dRd&Gf9HE@PESIO-e>iBo2zKJ($oYA~{|v8*|C!Xi&)>B_rNVsh>w+a4!&1IN zvmqQS*FG}$y!Y-i50fRSrGw5+a(=N~U)=)nwo?6$!Sqw4&%>lr8UhNm?s=Dt=x(q4 z^0#L1c~m*=5g6_c>>*iE*U~rla`AY~zZ7vFW;%c6(>9t(?-o4Pw)aZcv*~p@2ZhT? zmSOjaGS8K9TinBE&DB5K%1)%(zIXfW5O;iT9Zv9@C|aZLCKw%_c2zCAO0%i2iu>yU zb0`=v@=EHJ<|H8#Z+M`+K0CD;h=CRq9N*Z3*@*NK6~HURIw1vH9L>(*TAstoj`W$2 zcLs6n#Czp0N31EMkKoZ1ADox-+NcYt+-h$IJ>N)U?F1$P^R6EBU=7l^cL>X`Yg_TW z_0rkCT$=(6;MPjfdGPT(Ey8$<^a_!F_4Ye-YvWyuhY+8pk5Uw0nFH?HS`;88kVuq1 zz{_)~l0s7or=8|pAd{vFv>pO6jKQ#d+$AerB}+CrJ<}b`W32&myM5N&AcwUhEAFRH z5EU8|{XS-vnsjcL)}8O(H-al}>8B*Jr`};VE^AUIj{NNpD+|DP$uYmxu^=k>o!j!Z zKrzavYxLWDJ5qNsIK#g#y%gGJpa~@cP}@)jHBnrO0{X23@ifsH)~Aq#9D=MIJ*2CT z_&EjC4m9G5aT_)wd01^MY*m@9bnVIAjb#j!&ct z)6!qR@)YJPpT5*nH2Rc0Uwu)G!NPse4f$46mJ*1_*UIqVadG%-*45os?cPns75D|= z&s2cY>lfj4Kj2+n0UKE`*pj}oAYpQA%rNq;JaR+}^HN1X%QU#fa^Cy3DlGC2z5)`m z5aS2uFR}A;uE^9%wnp@NClAJ8y1~yACQW+Ed7=i{gaHr_edJARnHt^slbpwc+k;<+ zMrQdnG1ATn$Td^b?2%dptgBjb4p#R)Z?}dy6RC@&BuMz@0t_S#Mhc*jtcLOW4R#cT zSoX^0v%+3!v{uBnouXvw+>x*RIF=?E5IBtwMDf-CZi^9 z$(K;ysx^3$rD8v)k$OCV7}wgWoVZ;VuJ_wd zA^rIw^`^`OLl1M#I+t~i-fyd+s27P*D-sJHL|a*YKp}c$8ZCq9%BI5Ud0e*h-^V}B-xt#=M_uz^lZxsFEnkKVZj>xWRG)T` z-6AS43l`eGKFujNuq^)Q&@MkA_{2P?Tg6M}_6|RxK^`k0-sjl?dOnwPVqD?6g%ESw z+P7d{0HosL=9C9V81!1So?oN+{&-zPhhD;9U{K2G`}Wbbz!a%2KH~@Vw}A72_ImgR zt*^LQQbE?F!c(gh_Xo$uo;#z;yI?8-UVD>$uA+LYt$5N~NOEJUT6%4|DieDp8=QN+ z)vnCiJL@C9Q7gBYa*!K(EOUCcd3AET6|YN)ZhwDUT*yTL{e|EWSs9~fu-?F{8QGGY z7*eOX`xKTBd!PIpNF*4rH_7*Iw>NILfvArHGU14Ukg90esS)Be;5WSmvcSNH+5CBC zdSpk4X5`c)s$6~dor?|2dRAGUy$JTSyvNTAsBT5jCvNF?a*Ih`*;@r-03a5xGOX_i z9t|tn30j`+cyA9rKfQMPHfrxyn*y7#;U#v$itN92Yn2ql43%oAuaF{`HimekvV0%WBDjhU}O}9EOPd{@#Los4w-NEWJz(m zD_(0&ok&NVkbawSkBO2jNn?V7jX^g_7iGh8*#~w{3sIs4oYgy>(?%^I(GXQ;ganB! zJ-NCnsj#;uAc-aPr+yU@55}_v_PS!2dV3o|*u-c8v3J-RbnNAvAIID4mj8aWI084p zezu$*@8Nj@Urq@_MO>>TBX4l;IbkuZ;V61(5Z~@YsJ&yqO_TWUY|!c$OTU}bl2qgE z#&vGwV;9!W{;am+uZ~GLVuNp!Zg448YLJ0eY3BZ-g}QWRt{)+x+z>p4%=j?pFcUrUGoD!@W50QNm;=x~ zBVvEkQwA5hbkd%!bL$AZcPz<%#f6zvq1z#4YU5W@pjVE)6<}o{fYPBqod8uI9)&^M zWz282@Pto7t~@S%edCP@+nlX7pu^Nd?>8X*jMAKOSlpcMOdPH`23^dLC~V5}@@4MW zYT+r}{rj2iN%u#p5a(`{l+l|mjViT9JCY2A)BfvG6OGRd4vR1*4WsgI&fl%1$f<2K zB?E`fQ~wO}0cQub=m>Imy3}Q5nSR1zK9$e6xC}T}3k(Lz~z`+Z#!k$dUVt!AM-3 z+}CK}iz6Mw?Q$aoOo(z0)-oAwWHtqw{bcRFegB#q=?%%RO+D^1JM?}Ln<^`(;@g!a zjUy-tyLwD9Cf?Dbd&ZAe)qAfwShmM%pVC&3Bud#y#9}oyrEods1CK{HZ|EwAVIzi9 zOJh-p2XX0_Fx zT~|<%wRly{?l)*T{a!^muk;X;xzC=lb8Wsj>l4n)5nT1%Vu9*8#o8Tv!dzQFG>|Xb z{Uc|ugIa?bihBA>r|u~qQ=PG}YTRO)OS ztQudx+4R4z;zre%5*<9|4CJ1cnrdl2py${t&NhyjYfD@n^-EO$9{%8R%OvkWEky*S zfi8B}yz5X^8~OPaPDX6;f}Q|0b37btHQ#e~^Zk4v#_6dSXQ+^OQMBVqfysx2Yy(^4 z^LH>8=(P>CdtCk6nc?b?2+v)k5jAd!+C0mXUHD?7*xch}+&lf`e;%FJ3&&c2CiaW~Ir9vWx~zbQ9`}SQ z(sQ_d2G*e2iOtaKNk2xFUvKyy@S#l`uZddr*s#l5qcpF+2x(Ke9+|f9wPC9d+a7vmResez`bG{&TAhm7Jo!t+z6WIvHoB zyHER#p^rPu()`8n+PapCkns-s*TjO@d@|fq8-ug*m)Mtw5tWa!rjpgMs+sp}c$p7M zDzvSMK`KiVHDAtdT87GIF@OC&8S&YCu~O^xx&^H#hyb{E+%FWFnPXgNDj^dBN!Lui zDr!rFAPENJiSeFah>d#IN(zheAR( zw;iXmD;VNsyW(Z%bp<|EhlAU;T!WSlXj^;>>CeDUfM}V3c+ER)u8bVFHCAMGH$Dp< z^qS%`$k;cbZV_4uRrh6z`iU$F|4&;-EjA_m3dR@{*t04;4oW-G}27*V~skpQm!eoFIfhJhPssh*krf;IWsr zL=OAYZ!2=Wp~xle=5)PyDB<$NrDD#IT}=`d&mD|qjypK$Gq>geXZ@U{T*1SQhgy40 z3`~23(eKp2XU&BM(%!>zzR{`ywzgXkXwrLEYGsFa7;7$|OS>jGo;p!MNk_PD?sdrf ztd39GBi97Hjz9cl{0wK`qHh%wGwe6q7n?$Lytd)0BGx(GX}s$W0m^R>SFS|5bbkmwa{`jUB# zi{IXf)27L7;`Wa5^9FtV*gKLkC3N6~iPWaS4GSr1sr7^+y8Lpx!+9D@L}8XdRMxGv ztSvi=e!GR(Jgw)cp?BdW{6|Gr<1qsRw6%6Sl)C~Fow{t?J6hYFLTq+BXn!W-2gQ6( zrud7kjuMgbum!<-2+jQgcp;Ie`m@z)O&izXsUE4ce2aYwXx3p zwB)fcWeLrf&Zin0!m=}8*_PLh%=)ET9=?GxflB1LzuA$&c+xpW&wFl0&cywiO}OuS zI?{Vf+z<=F&gf+?v>>8L>28F)ISXw;ElysZV4{rayttn46X)R8SUH|1G+I7k$P)dz z-&y-eg=Ynz( z*|HapMo>IYh zbi0F}lN3VpM7=4L5<;lCf?Wy;jqz}s{PcEd(CJ>1Em=qdK!sSQj{9KCgvs~$iD;oEDaif5kI zDduB9Lj<4)!M9jFnjWNCmNTNR1CcLjIy8BHFx@P;L&-u@%gqA^T>jKdKeD*R7gkKm zs#(&@sx-wprUp*9ga=dwd^SD@R#8iEd8sWHt(s2d7C7SR`;cIX`S801;D2k<@QZb6 zw_K6-(D}Q@!Kg{V0-IFSaUNB~1?I6F4^pNie=)yBlcXn)(+Ma2(1nHfN`M`Gep4S4 zn=-<;r4d*xa2xE;;k>HAysGVnUP%kM?HXlvO<72y4*#=P z4Z-3dzGh%QKd%FsoY#&{=#lQGCjD#-$92>HtmjrO3}=E=91KPHyftHd6W&;PS(83C z$C^PARBY7xFAqO6rIGvIkRH1}v#xUEb$^_R33QodQdz6>cQd}vZFW+O{?_yn22$?a#8#0g?h#e1cN5+zW14KvD*8VxnR8Uc(l#IA@f3vJ4_RRT zBk@qc6*PdYX2GZI__=)Jbq8~jMx!e-ugkKlb!H3K8?jVLMw)wUvq-HHSWL-5|dfB!m!o{Rlm`JG8vjGgfBsSyepsS(Z9n^BG#*n3|XuU6nzF^mswe z{TB<%m%6ilg^=bXHA3bt#AR4P&v$NY^?hOi=Clw|B6oM9fbMI8wY9(lTK&_fcO@P) z#B)(?!^JWeQ>d~JF;S4K%+YQ zKQLAsD2F%gGCo5x-q$b*p8K)jQulP?){59sNT05*dxU|Be2t1{T<0;qIB`i%$wngO zaN241KcW}+SM(U9sI;QLwfH($HAk%@JEA$5W+%gv_-t^fCQ+6|>lj)-^_WPBiW8fC zrk!_^V4WYHb9ez3j!@GLdM{JcC%fVT@hI`wl$iCv6sF%R!W^wasF`aYW9Dv_8yR$} zI$IsP*bc?N-;a&IYK0hPEKCoHD{(c?@$~Mof%SVQJ#VZJx?rw;&hXrAxD^`GLyqZh z$30{lmXn%)_Gh#uE}iLiW|^*KFL4!|EPUr+hyE~ic0{ii)q&7?29NQ#1RGOZx)!_f ze?XK!0PCtmP`ITfwm-sn{G2T`t!PZMjkYqN*BlcAQFqL~@bN!x3=?ptXS3UwE|AJy zOt`sRPQ+8(t&a8}a%ru>Zzq3}oJ$P`n?{4cv+w;jMDbgfY&w?Sa|f z9eDXolc#UN79)F>Tnqn-LFPDwfsHhh2|30YRU#2|6;Z16VsBB&FIVBAcnG92Ff#uY z(m)6*i-OxWmemDAim|-C0pjRBLj>du-$`daRm^e*HqKa&Dm{rC<3)byd!0?eW}k== zn!#Cqsi_d7z|$9QXhr5uW)t2^4?Aw+!YvW#^pwvu>ko%DTohA-0jqiu7n?ONVd!fl zcMH^s$~OP(7#OWTVTE~0&JcTq@9ay?(;wE|DASW61*y;;AjYaX1|kD7a+ zf{wWeIbPEUirvcNX!OX4^lqC!nzOxfv|{V1!cF}~t5`WNk})ZJAA>)j%!mS76@PBj z9v0>I&|T`RI&7v=Z%WEO0oh)rg*zOuh8}7AoHDs1sBVNhD!Cm~q@{WBcPB&4%G~`I zD0Bpqi;8VXe`(8V?r6}+bYtP=Zugk9_{zRgWW!Ma(XHgMf4IR(YZR618vrc{x%-et z3I}(#xH-m^^LQu?3#yY3F;%hhTh-Vn?l6&y!?T8OwfU3#lzIwd{#!Q+|lSe`qAbS}A$cSu>%Qv(oc%sJbbz z&jt9^;!f!VQ*0)|0^|NxsHO=F)v$%!^P`K+#rFey{6aHXT(T_eQ;U2gHvv=NQKd0sa`l@u__1TT1X%KlY> zx|4tmi*sZ^E{ak5dC8>UffLoi^q1pkT%P|kr zRNY-#I~*!&OPY;8IDlIH0;n+);=hbL|4PSSTR+)7?|FTH*;^zaLB!`L?o^(T!eWRJQD{VqIJb%9#< zYr!M@3fdPPHeCcyDA_$t$TIqJ9^hx^_+vB@g#dx!@%{60V+N=_&>6{}+BzLvhp9f|E1@BFMThT{R!c4HO)^rP^7*8SH^?~0q_SA$ruMkF9#=+IZXbFl)rtwp%74PK= z6GKVcQ!8L|?opr4xqTXr7lF(wFwH+EURtF-k1t(SGs+gSGrBB&-#B5<3SQ1=So2el zHstj<%^Me>K2)APCAkNS@Kg2KTYV4_d}5}6C>2B1dM)>S1T!{nyPak5=qN5GHgogz zD0C~Q*~FS`CvLGI>t*uex{(KF@u$RlM1=Xp70w-?uxB1Ez5jN~ttDY=gZ{kHDGyvK zZs_7;_VZ)V{&A>27Pg|o?q;iBPLNXZ6~a(8=B_+NdR5G9?m10M*lib)3YLbax3BMs zRS+X_GV&PFZVrPaDc z_HdV&igapyYo-2BO4r9CIZwIj!KFG&pEr^LIc7~jPF679=-Qg_{e-Gr&zs*Y_Dv`- z*t}%J4w`LKfIT_h)6*U^Ne zK)Ze1vlaDD7^MZO{`Q#F?%n85Q%q&-5?kD7leMmd?}~}mM-wv7MTN{9&mB#eO(Ubq z{=$?mE?@b3cZgs$n}Wk7SJ<@Z@P{Nnghhf`iC$>MCmYHWvdHQct8LymeDvwRn1Tdf zOJlFKhN`DX?6tjd)M`#o^if73N2ELt2jY*;$b9YNzrDqC3iQa@1g6B#_NeNFUwPPH zMG;6eC&n3GP1-BDWfXCn|M3p@XZG8ios%HuaqryYIHJ$CdzHrUvjZ%OQD7xsrKqc53x=; zd^z%sD=_>*#NJ2UJwh@-6*!PI9e zfO%?pH;rRzcP>u-dRWeU1SYg=q(=A;W$F;SK8)xdo6dt5U(_0V<`VR2Secz5C(AI{ z-#$7+v+Fq2!1Fovel*(Tr|RU7gzm{8zFwvo5eEmjXTR57fqqvpjWi|T&oixlEB*95 zuv`l*$+~A>_b{kIyBNA(clV>oA28@Hi?Ny5$3$w3N!u3|oGP_5d&olZLRm$2ljJ>9 zwEdP4WxQv$w_QhKb0T-@+eNp;??Fs?Cw%{BU^ox0GS=bEMy zN8%UrbuM?WHEvfF<6+2*6OSl{`ZK3jwEx-wtA9!3tAa}bROs(KQS6WM2rR?G%rRyr z2*$}tlBB1jpN{DXTrB!UG9tr`ZynB(<*lL#%zod9!!gRiLvUu~83{>M0E<={@h^_l z!wS;HyLK62vK0Z|AKbtxpZ)H2*KC+i$ZYr*H;UUB7yGjvEd79@mlcPnLZ3HBpg;N( zrN(F{1^4U4JoU!GsckI0ow$luZMTRS*1A1I@xz5wnZuX%a9=+A!}vL#F7@mR!6lg? zoQov$5-eA}d0b`+4F#qG9d#Dvy}xy__k2{Tvsshd>)nObRQRa-Lb7J5JF=*Wqv*XQ zX>s*s!x!b|S)W4Fg)rx3(mtd?c%clD__hdl{aL`GQR|z}yPF<{cPAk2S*IZ;D)R?g zk{7GZQv$$oB`r66+{Vhs%&+<|K$GXT$~zzXfyw=F@U*C#dpgqD;;zmlm(pxOW_9qk zvudACTXuLEHQL@49*&EueOa%>zCmC8egMs~1A%B;b?uQXsEc%q#hHbt3x`-sAjJr9 z^OHXOJ(uz`v9jIfKzD1+-psq>)Gu3>E%wj@zvjEnIhP2|xntK@pXW1BZ1c%zWm`dAKb>8#!zH25H7=yy&&4H*lP58}yl$ z9lx2GrtI4f)498wsN*Y}(M#h~>$lzI(fCT73pgl=%SWj-9>5+(5^@0y$=D^%P9L1| zANme4w)c48qR*Su9r*hk)m2_{7mBd;!>YpGIi zoTFdiOlh{@8Yg4cv~=4#lX<;E#2YH@8y6$Lcee^<&P?S3`)Gc%#_wsLN=|(M!OML23DkE`TE6_s$$O?< z6FAHorzxV_Dd_oz7Qm<%sP!K%aRA9+7+XMm9%bT>nlpm2b^O$Ki*hrC-O}U+qw-l4 zTqB_RqigH>cjtm_NnW&bbQT0K{>q5|vvR*?+B0*fR@bh#PCRn~NlL-b=tkzlJp zB+v;j&H zxn4VwhmgBVc%zX%EWD1%6XD6r;O42ZD@@a7M~f;gngQnx-WeI)I1|(F3LhWcv!{`D zddXKpWEVZ8cX5t>bSc#)xtaHmff;XRmc`?x0u_LDlqUJlIu0=eJS@)T zmDH3T>oEJ_21|aqB{uH#i?Pd;Qj0&dON4UxlQ}oHb0hh1?^-F%_Q@zi=87Zwj{r`( zwib@WlVtt2#^$4;wfDtQi>)KeI?5qRzL&I{hM5-(d$!z+a#V;ml!*cL0J4LP{wIxG z>$7q4wu=>Mxg}0?&F2_4`WquOxm-v##HpMNBVg^H(mz*%x!G(nw$Y#Ps;_MOi@L&h*+Y_wT>920k;u4urLV$G1W zKhMF52KKh4%W_8Uf?`G|PI10^x5D$9pyTuEjBs&%n!1ieKj6P&{7VYyVwse3-)R;! zhZoy>bMQ6ohkYSDXdu;&n`?KKfTYlqHy@3^i)#M-X50Cg_*w(9+&ubrE6)6bWRe>8 z9RaCOk#^JPl&WAn)h5+N&Tzh)rza18m9@bWsbb2jB?dt+7UIQT;<_7$Ez=B>+1kc| z24H_m{0l~tvPMz++XP6fUd^$k3 z(#`RJ?sHq4NX|#XD!!7CSh&P=BR|*f8NptbYYQMZAIHB+4j`NJ2e!+ZE*J~I4pDN* zZT?K9V~(_5Yq_j>TEMg-@vIkqMs&Pq>toe440PACBmDREfNh7E1`oVVn}(CdQ)$0_ z48rg{Nr0Io+_L%%bZZjSBD?p&`OEdRrX;;kRIu`*&!X2LfUc2729Bn`l(tT7c7VU2 zg#P+6syI|F?WnKf)lmziL_#eXsQ2#)C+BYkiUiO$Q?gPe02UZH;#(xzmTzT+%v4i^ z{Nq$SG}89+_+Av|B+9J#Z=Q7! z>1Uzvd*k$_cv63~L^(VvM^fLS%;!-13i`gzwhNr4Nie4S;i8&|CUARV`oC9Wq{$Pg z*1ty-H;y-axUAq&SBqqkN1#EBf1mT&&#cqN%5S6)N>0P<^pybEW${$z%c2rnbpS#J zu7E@e>^ZxHd_&GjhDmz{W=Y29cS+`rYO=%$hPiWUQ~}27l+B37w|b3}j4OEap6?2? z*sg4ezkYz7N;)n0+uaKI@-cr!?v-AafQw%Kj^4IP>{lHg^kC~z=DotHm$HsYD>Y}- zT;rUlces`I$Ik2s2-EDw)sn+UaZfPa3GN-)U9@txvEMzuRpOr~~wNc9D$CmPM?>_5BcuDZ-h^ZYIb;_s>FGc?LGMFA8w%AKIcbmMSqlo zErm=?DV}}*E@p7i4t@G50?-&v_^*ALmd6rj(>;(R^0ggyiqTsR)a5TuFpG27P|TJ7 z@@#|S6}>+H$T=y#GxJ-~?n)0XAzDypqf!0+qOc z-R<<9U5X#}{{Y~ZPpJrYyh$z;BhY{;Z9rz<+lc^Mg>hyuJ7Y6%IA{tb@0_j)2|3tCnTfu(+Zn zTL=L{@Q~n=;L^Bza0nJ4!5tccOXC_Gg1fr~*Wm6>aCZyPxcfWg-gzV6%$s@BAHSOJ zKKpE`TD5AOs?Kb;GyjR1Jg(b8&(&@?o6iD9^jah9&R>TZ`Z|v6vk5T$8=!!8#O*m(8vTJyLG86V0&sxVVh3+zT*xr6D zD0nrZ-+3C@rFzOX_qg>i(}7p{|_o2*Z6q<5M#EH4g3-GTTYoJ zR;v-7quV#w$LL1qn^XsJ1mk3sUupOW#jzEqEmJWLoMYp53Aef^Tm5;}4gSB-Rg_vz zxILQt;@mvehbNl>eGtE9xiCy?!7-(X8h@0 z(U1$RwhZL!q?$kXHc60Vkh-PZ&hx9{y&FoejkzPain_f@ue_2${}tMlOuQX*x4nk+ zOF^eLK;#3Kgg7%~r)(oK$#nVlKy2WYq@03&qfa!!klmgB5fRqoY zkzgV|9PB867)nHpVntjNyy*B?Y0B5X(R9CrGmFK?SxRHhK$U=9u)IN-5uw2eYU7>l z@_N_+wSYN}=WCz5+N^Eu{#4=E-eJkx>?HB3)*Xpm28h?LrLZIRUhdpnCJ&2_a_88d zF)l9WC~^(b{?>jH7==Ow*b(RYTU-TuqvA)f_)UaOZUurn8BeBq6VtN87beoZXi9wVnZYc%J0H5(s zTKMiCw6N32qX9aJo{k6#eOXdraS;*D-?M4s{%rJ&cw~DkxrGRxHa;>}9>>k-We@F; zGakGV7M!C!68H!?!PxYm&C1ff@A8ZGK>xV|u7eCB2H)^le z&#F%^RR-4AF1L5Qdp-E+%{Sh@kx;8+2gr5Qi^>uwdU?M3H2v&gpQ9EjrJeWfPH#G^ z%Tv*{{QjmTC>Yt^$dE7f?vkl4r#? z^L*3p*FO&6ptt>3&Lvxm^KbFEu`bhXmx_hKJwa45pV1V3LfQJrpUd3>p$!0?0`cS$ zX}*w#<7*TxwiUyl=lbXBASjU60(5<9GF{~+m*;}S@HAw}uQ4OimO z7Xez-$?u$~hXu5@?M%nA)RKlSJ$zu2hv&CQiLHu_A3~uTFwbn>Z@T<~Uqy$^;3?#X z{L7KP5`k-uxSO^Q{OJ9n#=%kU#9QyLJD)-SYsF|W#gHAM4`s=yW@Kg40#L%?V*F<^ zotiDbOOCIqT7_g|9U(M(w}Q`JT;l;5cOcL$gS{`IZ& z#9acvKiZWi)U@b7W`Jrq7Xm3|@$U>!#FWTGrH?GW#v%2;RR4*n;R#1eT(^3ISPN|v zs13f7OPvCZ7?nD()DN3KZ= z3@f+P9i0&CtJ~ZmH8+ASpwsW=hWXuz`0~}#sE(EqQ;VwWOy1k(qX%!}1)K`oEf&*( zoysO)>YjxzsdpR|H@{&Sc)$P*1%e@e1$4LjNLHQ5H<6Ja!l@RL@{5RpP82-W6Emat z&T4>OquaG7#efEtjmUM17P>W9p1XtD*{(}&FSf5(V2DD$7+m5mc)6`b7VN5J4$JVN zROkW@fr!)dVrZo({2s=!&H$gTq2^ruQQ>G*G@V&kQ+^X71gKMh{v6DmG=p6%AjRfk z@>n8+XoXPyLi}sSSC@7vlTjpStFz94?>Y$26SawhLTM#G`(6mi-O?Y^I)r zrtd&HID|_*2fZ2R3(JpP#x|M3Zrj^(!snPn(bRCugv{%csKN;b?W7O=tRKFq2=Y~C z$V*A9=Y-KjlPiG8BduL3V$fcrOz2V@qsc;!Nb~nGO8a2^58s0w)9XjZ?HUFwKdi}+ z)$U__(1CsM3&tHNCEq>QGs$;JmyJ#v2m3zweIa~!sAK>3Z?IebFgD$x=3rEzFbkCC z#S$uX;hslhKS2EGuEcFfy&uIYA>{_ONF^nkn_i1XjKn!qw6MaDv2^e3c=gAsjLHz>yPK=(3o(dFc?d_xOJ>D{? zXJsZLj>+>e$)M=?`3J+LoS>u?)4kl;P_6=0P2tOxYcawDq?c(>U0Hq@QA*A8`;G?# zsizG|Uu!W0nBSoPBDM7;K)x&zS>}IrAWV8p z0pBj_DnefQCGx?ty zDyeIA&Ic6HtXvZc&M!;t-E&mNogPm>`gVE6A6huf=OC(|-RVeNJ7o9#c((a(VcxB6 zOwJs(5B$`9Y|34Hs*9g&eTr%B%+Id)pTNA)aDZP3dY-JF&#Jn4pS|RO{J8oG5@-pj z0rm5Dc9#5WyD}TnKo&(w#tMve%{U|8v&hJW7IdAA)ab3ES9ifZDf>i+8Fe4OGe zfT~qt^kErV?&E-`!of6tbS#0KzvUdRFq^#4^bcj&Cf;w7SXtR%`LUmFq_BJJRROXV zbhb!rXhX63Pz!%k#l9UiLisDAB@wM}n4It4Mdt%t_PLWO-N5m2fgl}fzV4{|1t~hRU#FEDz)H3Ncg*&e z83anv-^0m%A$A5Eo(KImN(b_ydTX-u!D1M3B~1ucoQ z(I-d0tHrw9O6T6vjh_D(Edb+Te@?dByGthw+_`xvHH2JLE3I-gvPAu+cNpU0UyBsl zXOx@bsM0j$E5^Fp9anM+AQ8HJL3--5bkk?Yd!%gcP?euH3*{hC+oxQ~)RlI#G*cbk zsfK@(=8iCQ1G3!2YNJ4zSITI>aRXRHCK1T6XNJ5vH$)j`VTQ`dbwiFv5nk@qfUKc7=U?iRC0$dxrjxZ$;^sfH z#e_)3dBXyES2u;!jEQ)1F>}JMGtOEyw4rmc@Jh9Z-t2Atm(JCj?+Qg?n-rxA%i{Ul^au35sJAg>5 zc)#E`Q@Zxc>}~Fx+Siz#CK)PfzXCg%B>|y*m9`&mP;$%9Nw;HMNAUDZqAQMx4}UtO zajrPAP?)&wXf>dO-ajM1Tt^v=fkfFU@44%|QeXrLkvYA8Wtd7m|4D|F!No#0F1S@g zt#2V!PoQy^90nPp>E>+1u)x~s2D#cQk#RTCpKNW6_e#=GJ3Tf&nIX=jhiU0B#s0$m zjb}W}bIpm)R30rGLcsVSkluTgJZj)CHKvteZP{UlpDx@qb%yhj9Y6As)A{5le_`1n%r>!nk#rzO?%3 zOj_aXWZ~TOcu51roEE#$TUyNSFQb3mLkWIuXo*#4$H_ja4d$Jc0jd+`{%0@o%!~fl z)GwO~74QLq6kcy9mJ4AS=uBaDKuw-*TsflqATr{0qZ*T#Cwyg z2)i5cm06w(MpHvST>0`lALk6@&j1IwM|Y*D`SfPRr6R6NOuLoT1^()(R^A4pkGSHw zjXG~ArS_pzRfW8pE)=%OA=Gv7;Y%KG0ZGWolFtL-VYsZLGq9MYWWdA$8r8Y2>aV5U z<7|M;?h~-81h|R&@s;&~E|6V@=AiN?=q0TSi@3)E@%SBq4Y@F&0m#mF+nP&O#~xr& zhzrWyRsCde66Q(J3NxcGa596=!g)z7`1qu~-Q^^tnBL8=^;mw9dbv;iHpTlb?f(lGtwEQ!Xs4CyD=)FtPwTMTaDiDRn=)VNncH(Ld z%!GcD8TKc`7S+=?bpYkQGK%w3G`yJ1%-842?##Bb4E3G)xDCo$UPM2w0C?v_#dM#q zVkVoe=3R>0-Hgu`mf_iO8I|7>5O?7bb#S^xeRerX*bw1{{Gm}7o~z*O`@`#HnJ39L z9_VuRtxOd#Uj#sUJh8b~^2my?UXlhh*~etQB(!mlE)DR%nrTXc#i?mODq1E71xsmP z=o(90Pksr7j6Cmk~|OdCoJdBE2_~nEArn% zlhu>7z@EGX5>bJ8#Q;oci0q0BVM^e1G-o=rdY|2@H))n<)LG6w27&|Uwej#5D@58k z0jiIWK=af5d^_&g0By>r%`{+`B_Xj_C3)42L2-GVlZXb?@*KHS?8WYNNvENsC)o$7 zGPf#5TbZ{lt*c|nkaB;3=4_1BbBmc??A3Y8Il*tgQ1senNlEb|=MkQ=4_@cg_52+Hf^{-LL(BBS0v-QGvtp7{+}PJX;j&RG{Dcr%fzG46eAe+cbZ z$lIjI_qAs*rIJs%OS50w4@g`CDK;*S3)x;z^f)h>ul}-ng7aD<&t~|KEE{F*!mM^n z+MU%%``+xp*{D?(yTjgN@`}L{mVD)M_IsWJ+1JblF>IFEIW`Lb_xBtM0*RL{lsvrt z;PkG(-+%s7$p8nZ;(sC;AU~M=G=rs3V@_+?*JAx)r|h+b7@h#Xt(wVfDgz-0s#u_b z1aDn-aR@gB$K{OHJVYCx_Z=q#sSk!Lrv*R357>38xs!kg(9`7bHC2TeFc`oP{dzV; z3^Ft_V6q6cPiIZ8H<4>Pbkqj^Ci! zDSAZen)@+;8}pdE*BCTA<}Yf?%d=owl_WxWELX1@Kc~!OyRm;k@bhC}3Y(bZ;jpHX z=NOM`3WATGN_#$Dz6rL^h8T;*T<#5npbz&~Q8#!eIHDYQo)h$6>#r{|6L%0qkTqx# z3L>4qG{ft{DV4?lUZ+eVl&rhE?XjNP6fCi`0KTe+TN~{O#>nNAzS(aOw1_ zbNrPV9(l~2_l(B(>}G%rKiMi)@L30D=5j(dh|Fde8iJ;;3-E@*^p&kt zy>)CW61-e+_&Am*o{^D?%wJP&b@C?5q#ngMF4FFn$)1;Lr%mr>_TMYAL|aG00x zgam}hpQrok^kM@eZOj>i&&=<)sE%@&I1Lu>2=e-`JnB;gp{2>*ncd8LD@%hPhf6@t z*HzbM=o8p5I(qELg@kNGCcUlY)|CYC@8_x$RhCNt`!RD|z&NtL8masuE`2-+{;glK zNzfMs4hs6e1q1^N0DVFr-VpDi7a4XNCIRuB)$UuzaspRU8D%T}%gI?(=aMh4HOz7I zv%lXjqPQS>Lzf-(C%KV}q*d#ye=H86u-touwD*?@E?@JEw&JcGUPvcaU2_Z!Q;Qt* z&RuSVHXSvlw-^C`*S}PulJDKpIA@`w zf^A2fM;jWWkJvD>N?b$^0ykp|*U6*qzB`^($@E958MT+3(c?83Br&(JK4HnNF55>_ z5+2`q7nwufJwJYs`bT5F}Z6Fu6-ji`Hr^( zf1g#rSoeN59Hj~HIWm4GG;FfWML^ykGMMl+#b?t7eb?)VnVbmc>4KN%mjWN$Pau|BmPu?@kn{%L;m9;qA) zCRp;vn<7KCICGjf^X{6()Y-7qrD}e)BcA1ZhYiE3#u3Wi$PIGsL9sXkwHmOL0+^AM z0{i<*Uf8TFG@14oS5MFHL@!}~z>}Xejd+=lG+((2I*JE$u&z*^wp?7ISGcZVMq#<< zkW)mZMTr7!M`-$`$nV^WH5(#Smgn2sJEa?fmctaE{JqyNG`;#3SL}Y_ocr3 z@8LhAvD9ya0|Nv54rCx9e?KN_sIJ6>jrshFG?8sreg3MbXdXMf!Qb~V6Q|$)Pd`Yg zr1d>ersQX*$ZYB>1l$Vh(%G@f;c^tgWU44_@P5dBUiJZD}6~;uS(Nq2c!NljV%FBE%p5o2G(%Dw0a6A=X5;&tjmI3#+X*B6 zdBQqj5!{3X4yrgkrWnPS{z9fZHqbE)n|3d0f?5y^g3@aw7gkEONTHr2#=6F}^(JUrbKPM_*pH39i^WV#=@=K9Egg;4Eje2RxHat9@ z%+Mq3H=Q4Q8N+N@A)D-w__G2*Pw&d#uJ?aDo4a-w3b-0WGw+_T>^*SiEQ8tWDNQW@ zAhl0pBOW-LAvv8T+Uz;|0jnIz8{%Ej$L3%=hSddscY?~sni9jg?c{k2;(^dn^PC{` zFXdMxD|D2;^j?-x|D=p1BS}_K<`q+lMSd|Es%?m?iksb8e!#G|?f&hweKt)V3`XMs zm4lTO)Y`&k2=dwL)O-S*ZxHG0ytPD2^FJ61m(yL42_uaZ7y-qb4d7 z8ucm96mJU(%1G_9f5a0E)Ldsz-e?t%R9x@fFc^&`RwWfrA1Ep3 z1Djcs_jyG?wH}AlnJJ?x#%UY3CX2bQm+gO6QH39tWfTOF+ zYA`#5d@{v?f}j|@JEARlZ;eACp_BN9eh^tytT~uN+0XKK-M!bPY zH7A;uF&RR^AhEthWOC%~@cp0q5;ph}=`dcbvxL-llrE``QOP?pvR$pQw*DKEJznDf=@xW9X1GTG%Rh%ew18?+u4~yfqXnR%6nvyY4nXD_$XC= zD}|HWp1N%duJ8aXf4q~f-qjZ8xtTaj6ptoYGrCUZd5IVIvgYjJs6}kB8xfU}RoPtk zp|XB6-}(J-S&?Ce8z_6JrpMhYERNMlc5&qH6h@CEV|`-fmBb9!oD2U0G#;ETN>P88G{kY)ubKaOYm@R zwl318!QY_nO_XFmt-hr* zlB?tNn7bRGtw16mPLbC?Bi5c@u)UOqkACcdNG%I(SB9S@N^D~YE_U^A-2KGku%Xyd z;IJZ+AEpQIhkNvG_e4skb;hap_qMVHpC4kS@Xh*?Szw<@s{nh{De!TV3nFmBMe(SV z!dHz>SMTc#p>;l=(9U|gRzj0Ghh6C#J>$?$kOtsAvp(x2UBB5@@9|Y7u&C2Ev@Q39X?7|M#WzEKo3o@C-Js}4Qw|rQG zewtA+im3U9)QuKhQz%lMsB8a4VaY`h9b2W6>w&+Bwro zja+e@U`*|5S9a_6UQ(;~QdDJvV=WoK_NDh6dKO;9u?FE_wba`-SF6b*% z5?nIf{SF@DyC-;qu<&PqKA*14dt~vnXr(hvLQIUIMiuL8K*NZo*W%z>AwpJ-CN1q* z-6NV16-6*k)DTkuheabsF^qW9+>OIKpXiZgxgT`ck@~(|H8-+yXgYR!#Q|_-2RZ%K z(MoD^hjXo92~(X7iPl9C_qM^}SoE`#(I;5XQ=La|tNVVH>+=nQpP+NC%Mk2NiRG=p z6`;>Hk{^zHsL3^UxnUS$)xmqjkt12d-ZdD|{%hC?QvBDlwvUymSzFTm%sgCmXIvh} zd?zP39x0F6gvF?OgCMX&p-q3R(Uoh{ul$WHu>tXKJZ>QZDC=3hbJYi$)ChrN&OiN? zC&a})I1Z(g8-_yfq055#m|%?}A;T0QY)mYNbEk^#j;=cmD-WS(bkq5>S5>s<9i$7> zfoeQnAo)8Z!I3Ti;-T$&V z+DK85a`qS6oD?#>Ejc?to&2J7rOTWf9QV1YK5=5E3RE2_BNs-XpU*YHRg){NjY?C zyFJJ{-7j^42$&7-Jr=K9u=yS=CP$u__)T&*R=SQq*BHVE`En`RhXnKL&_5{@$_a?> z-rs;|T%+fcDn8hahj6X0n`5A2HYm1*`Mr{JxY&nSsC^JNz#e~5{N5`AzAg{~_ZS?O zDCDwd_NSnXdquhDK9uj~`t_-b;7E^>=cv{G$UEF@lNAqjWxlq>+_Ph1!M1Yx@PQwi z=9vaiUOwxwJH4@AcU1T9tK;miKsn~!2-wAJ<;AajWCP|dwh5Y)j?%9ms+^DOEHKOr z@6M8eClv-?(FuF*ex{v6|Yj*)@5IwLx5dnY_X>(ybl*j7|+p>(% z1V>Mf#~(PC`a_fi^I47AwYZC%Dg+Lpm^hcSuMQ*SgijK8Mvq2RKiQ7zz41@B zv;^!RsqNBpU{dj&(?fU91XW_fQn#)x?B$l` zb`vN=uGFTu6!;b-9*!d3ZcCt5|Z ze|_=+%7+6L781sFa@S@!vZ@AeM{hJhzZRv})L?9GGH16*O%+Ht5)<8YzvZI(Q{Plq za*3fVhejc0xyn+VQbBva7-12seAz%FA&ZyGwj;yq&qE4ODByh zr}Hsus&mBMUb7^c4SO&D;LAIUd^DSZCqy@}7A%+o3A&4iaAq#cVKC$xFeMF<#-QW% zaXzb>n;zq!3|O{(K9X|&;HasF)S=6zmv3x?xSF`gM7j{?nTDv{cY{qBTwYFWzi+f? z6s`cmO(NlTRYUy!fui>b5$zv8VMcP1Fp3!) zDc%}JKNZ^NwB6P4bdT>TA)9nHB&@P6PaSB>%aHqlW@mr~r9G|CXeM;Jz-d}`0tkLG z<4%>Efd)5PI$Nim17-d1b5p|muZHM~bW5+;*mrt#d8<@!ytWMI>p+GQKZ{B;TWz_6 zIg8gmZcyS&jHIm%Y_x>FBbVdR5c|msfR-QchO}xU)$Gfx_ZG!FFW(N3sLN&!=N#y= zmr#CBz28Fr%=Sh0qMyT`(OJf)u6V0hEyY_8{+lVZ2^6UAE7#JS`6yPbdZ|Ec+sLfp zXq~ZDc{LzOUdENy;_vVxp3rvHftRV6I&<}prUBU>DqXMPF~QT@!yZc$|{SqXf=yK zxt(sKAlNb6RfV=3cr^XwRFrS_30ysQLMT8ZY=OVN+LW6#c}PWH7W%NQJYm3ZNz=?< zYV48f!iS%XJX&rStM_5)Na-)182N{Yo=Oi&9`Lm%uD&qRoL1Z%GSc>_^_2(dbndh$ z_pN1zqNoSG9ZHoiZB6rUGyg$(vn;m9dA7gQ?PfYS{B0noT4TX;ZHz08| z^;%pLpb4x_982**zJ1PA{59`Zso~4 z$ho;n*0K9AWv4?dX|el7;D$R6_h53Sc6@>}P;i@+rZohfRVl~;YB*XjR#T!2_p3y~ z2&ZJNAe<6XNF_PMvMW#%oD_yzQFCy=J_QnZ=;J$lfO=+BU%vcR^5BcgDTQ}4MBU#x zQS*So0f11$+b6Y(*4woP+On(wnw|PrRR><;qofFEmxqY ztJ+_hqa$BgxT#zXsu`ZL&pa9UZyBAIcOJVsTkt01+;6iY@v!j@T>DHs2s-hN4Ge*e zQ4cPyPALlP%TfI}$;LzvmprU1?m>w>@Pm3tx_2j($`rrLl@DkbB4=OV$U)}UU9_{o z&dYtgjOVw`8$mTIG~U)9tj+vqKwaql2de?o=bJ@li%}O{<{ab!+Q5yiO@s?J{peUk zc|3^K`ofUXkK=hI#Fyrz7#*G0Fv+W^IYJs2pBJrK9zoH~a34@xp0Cv$>`3a$))%7m zB<^_0U%hSB#R4__WjRqe1(=swB!C)pUI7ihH^m=HQ|rSDUmP9phDe@vSABZ~y~unu z+FI?yRU2-YZdEAV42M^T9A9Z;z$|W;a7ku$x<@B*yfWb2Z0nW275I> zgUW&AR zqn$wT7K`MledFYGGaG#s{iV}Z36YXkVV^}A|BeSh*o*-kyo8p@qzJkAPsE-*zX&yM zaNphZf?(I7yM(0Nc_h$5$mP=;lYXfja;iw^S%vMcu(q=qA|iVFd-uZNclDvDcSgSx zYZ1QxBuith5)?98kgL?FHJvgA)<@$bz_XSnrsD1zA%|4Az3RHnNFGb4Q=rDK=W#5@ zI{HX2B2^`>!-T>EQI2M_j=Ba!PXI+5N$_cbJt#0xhFOB`V}E~o=9e3c*9LxFHDSX;xB70KBu7 z%ro!1iS|1UBACiu#9gsUhe9!uvS$k{$ssKOrhy-?U+dE6v1L^M)c}pQ+gwKXXKs%L z-e=Q-i^7BgC4;Ctk7nV{=4pW~Qy zpFRj#^<0b94c<(q3$_y?s*brlJ{)hBPZ9V!rWH;X|nD>OX`FI#+y{ zCkU`SkrksH#UnP{J~7_ytGBA&nPuv;Tqykv0uGN9aCjzEwU^MK6|cf1zqbrkRb`(jgz^8zpMJslI89=eyUyGg_P!FpZm3Vt&y&lG}=?LKv8@SSzZG3X6R=lm#Kui zDVrgNor59o2vl3m8E#C7U)fE3t_tR?L6LDQd8MmLIajg}h+aJw-;z)~t*fvG8FEuk$3=&9UxxRVgK8ccC7j;IRTpO0Z9aniF zA!rEM=$kTj#y^P>IE5Fe;3Fz}LSc8s$7_>lUzE5O*5)U=lxp!K{iy#W_2y1K%z3FJ zgVhRkm&mn3!iV#|Mb49|v^|etxfHO+B^kOPme4u<=wxOyJcPA6^7|lel$^J3!pKlLfQgUdvv7q4HOgtB}8;5^Oy$?`RFS2)=ug#!H z?(D&WD8Yyzpira!$?MI)4wa3r{F7Mbl#s%Wuwp38)K{tzgtL>ms-uk{^x<}{lQ*MH z<>95l%Ojku%BTH|{6i1nr8(P)C3c#*^u{MH#9C=#Qw^ackJebBnN?I)9^v-sH+=gW zsC6gY;(3W?czutbIRLGJ-Zy#g)cboNo%<~+t>(E^4@;teNuQ4#7*v) zMqYBp733Z|JL+$y0s7?7No+*o5}6p_Dbk@!pjE$RxApaRqJ}_!a;UZGlisZs1xPI+ z1a=le`?HVrPcaYIh_cwfrx;^C8t@Z3Sy0L5rKSwn+FHP1F9j5t{FtKw=}7K%BRg|T zbh7wJ6ciFAW+?ND4aP?q*jZce*xZjet#2^ib3I6Ks}gj?sSQ9Ui%PJ!a|};}qwuzW z=ULzgGq*{y@~)KXA8&(bK@)xDRtTxifO`(m3Yr{wAWY@HdXfEPnZ$wE?n`((jy)FF z>cv`>zCPPgrqq1S_*46mzA)ZBxTRW5>G~xwBb@PoCpXk&mLSw~Bz51dLb|RzL92;k znibdgBs*L?9K1}gwiXq^K!uH1)Q~8)z5)P#y)o}e zY;b>hl5=w*+}WpbK4k|WAStE92vEF=){`^7gtyeq6ct?DL0gUYk{2S0=L-Oe8 z4gXo15w@^qlbrgnygrs~`Ojf}Q*|8=PWKi7Yv2VbQnu2iw&Bo=54YBQ9S^#)R0BdL zNvL2D8FmI|vv-8?`qUPHY7W2rdrmJK`Hl_RJ+tE5yCOSOiOJfNeviL0u{)Iqp+@@RFCYWbC#p+L8cSWi8Yl~VPKz9Y?3E8UvXfyrIVG=DVE}Op_p|hpq40e`iuY(BML9|E8 zFzYuQ@{{uRgE|<9&@|(#w9LBJyi6ceA-BO zSk0>xzP^(-O>9P0nf5#*e7-YPK0352cd99iXw`@zLOpVG?={kS6^Vl>N=%&#o6+g? z&7K2a=AgyHo{blj_;d6uu$?UZCLYPxAL%Yw)5(9`y>~`^@(_Rt?==#)4n4=T{d*Tn z($5qRvJ-3I+(ux-n^(?JL33ItlsLNKVXJ887{_4d1RglY44lD3@`#9_$cQkLjzE$o zo0B2hp|%5C?Fx5fu8DD3m8)MRU(8U6*V=**6YJk&BCHrZ1yzXTFs3ZZYq-9mqY8*3 zJ+wnKR%2mRuL_+;qDj91-0c@`CDXKEnZr!zPZ>YSTO+IMOV7()H~pP*&JAlE?}7 z;b$BlsoVsP9k3GhGZ04m>#S9@;oE(IwDFI?t{bKUxg_I~&Z9xfG7lUDS0Hy4Fw*qe z#THv%HG6FIRe+>`&G%CoM9=$kxJ^THor;G9lhX$rhvUn%jhX2U6L_xM9(kuy9$0_% z9+EtikG>5)0e{L=+ZXK#62D%(&L6R;GL+A}&zyQYFEfv(JYlNsp!F5?L0Xxm%oe_V z@&$B^^~=<`j=NcIaM{Wo!@<^mpY{V6I@^5$r)dBq>XwbkP|{ZR!#94B4G#Rw(gy#> zfi2K-xj$TJ@;5?m*GjtZI}YWDpPC@f1iD2}S^l;|T^yf&a7f+6@ymHDeQ^Bim_-q4 zD+b(4>79?Q@;3Aml3WjHaTB3nM}1_}rSG(2qMMd~U6nJUx{V(K@W*hIJHa~X#R{eR zwNE}m2X!>#DEpACSx|at!20l-IEx@g8?m{yIWQMv=JLC93Z}qpVR~7P%4K zM5)*c6mMeKRw{}+D<}g*6MyhrIxH)V7&AZC9#uuDgNTy7NrhaK&E9uACC0JC z;@6_@B+B%V{-`cEc$}DGr+XL@UwK>#epYw&o}c#U@K4SOaWjh9T-%=;x(b_y{L*P9 zGv+uuZKQD1zrh!{`X!7;Vqy6EQ;zPTo9)8|+e;%Qw%tNe%55}wd91LnTf6ozoP$xpo{)!}7`$6~Af-h#Mu1sa^y@S!9OHAu+FC!D= z$?^JJ$BK&WIhI*$|H~a$UnUh1J0iODe=EU1b3x&CuQ3Nz1|=diqD`J27;7W68L~sv)Ywlk1 zt7y&^hVJd5DO>fm%Y7&N+KZ$)@nwx#>*yiHSRK34bn4AEc6>$kEc_Zwr;mFz(PGzj zlBo-&>BK4IG?wJpd{lgzF?q1#ofrl*^YOU#%!mE~bl2crv8Z~ed-V;yoC-DE6KFWF zlnH6So*rT)?x!&*zsDpkfX~jnMmWcY^F77+9UbvW|Dwog4_)(N^P1glV@^=N9=Z4! z^KoUSwSSOEMb)#7!zaJxj3_Nh56&!s-t&U{(IeeIIXH091el#o_bQN20vMx_`ug1# z_;|CEPVHAt%ujIVMi3P}g~`1xVc~lIlZE+pOC>Iq$Aya9nTiT6rD$(v?RBk)mDV8E z@A?apo9St!k-dfCRyVV&I*XSY=oP#10kdpl2c?(A(@YnQo}Et%56R2{+K=fgn_EHi z*!2j9x>PV99D8!SZ8XaXK>Km@ZSR8RjmWKt^Oo#ITz-t!?#p(D$oKG75Rq}zADbpJ zgLVj~OZs=FblAf1oYz4MZArpRvS;F3S5mC5jwkX@7i?*3M%7NufqfVCHc!6*VO8&o ztUNChyjgPu)>Brs&&r~D+B^bQd$H1ql<$XX_ig= zmzvo(XX20ukQaPBrhN@zy{=VpP^h=2)VW_mJaJl=l9fx^Qxw}IJ<3O%C4w3<)rb7- z3?}1o!z$wK&0y*li5q2KOQeS*vqK9=jNJRs&H7lzLDZ?2|)3SZ^OQXuGd*LM>aa%{iUvNHz?@7Y94mK~YN%q>mmA^LyO&R}>zn z`y%Hw&cS_Ja)4(Ah%lDGB!nts?9(nXpa|*-VU*hmC`mB*BX!3atw?wVp?tg}GeR9F2>cwgZX~|<=W(y+olA0f zHM))~6GDT7Mb@6C!)|8 zI;P{Jxt_)cEPBn=tYbLO0iFA07B_dQxu@l1D1IPjI(PDbtH4M)L)oTZ>pixhAaPfR z_-%vW_JWR%fBq5qk%en)oELRzj$LK&cDea5srJLghfb$GmVWjqF0vU1zq4w@1r(Vm9!<*vNp_CPA12wtDxVowBN(%gc@ zHx63Eb1z8a#JZ}jXG7>NmRdaFT%BEyFr-z?b;VA3o0g2d=#%eeMti4Dj?4w#lCCXR z#Mf`Tr<8f*yj0oOxWDjxpt?-mcX-$h<~vS*OezE2z0|qugMEbhiOW=_9W3l!r^?eC z4iDIIJh;w?b!KY~X+aq0P%7Q`TZ+t|I0ghZm>-XkrJ0xA{RM9tYrnO8dr?`mirI2< zFnTt|$lp;a=;|dtu6py4B4`bc@66b|9b>(%imRaJ^4}LHQ0|!`}tU)_okp zlo0RLZW6grQa;OBj4|mKD&#oGavc`uC?3&28$7_J*jMFT5Z_?rfRMh3H7K>IuztX= zL=klLc*MHY;lt*hAIT$m^uKtQo@>6uW7Kj@CYMNA!dq**zM-Q#GCyV5`nZqmTGohD zX#~bUZ|;uU3)*JkO?>h~|EzDd*&V-Z@O~tK@i43N;ix?KmIk{_^AmVGn9YI5h6|+} zG{o$+KniWWBz6GSJo4|FH$R8~dS>5EQ4$)dpqza2$hZ{IPquIR1xV=P88%~U9juR! zk;d~IR59zj>YIaHC+J2HSG&BT>wL7b1v44ey|rd7Cy3Vv@xD(mSuf|nH+J-LRF&L( z5NOb&_bYpReRRvd*(-OPZ4sI<+pDcRn3Y2fs{sYtBiz>WL6V3hewx%K{Gax|J1VLt zNEbygkU=s^4k|fkL=hOtsN@_5CFh(3i4sT2FbIr{WXVy|kaLinB8`4;zN+d@(eJ@cZ_2raQ|ct7YbDuQw=XblctR{yM61+x zKhCO(^}eXVMAu;K{RiddYC6dgz0kHVeh2I-QEt#A8O!in+uK`HK9Fc1@O{I}zPS>! zF@xNw$IBn%agaRBJo`EQ=c7pvh#8`2TT7DFVt}^mu*h<@QP=4Xp`X_>4 zjYqB|g%2Z;F)>E|B0WE^UYo{-P(BuH+Kc(aW7K#%FIqyEV1FXqt7`W$sZP}|JTbOo zs9XU#)Vw*R!aWZ+WBQ}SP3M_PesyH=Hl$6A>xEm^eJ%crqbYBvwJdRT)7cO26Ow$- zmPTH=HIeGi3BKoy1`?v*27fa+j@_i~CIzR?-%|I)S8}1$9GM(Z(Vc2B9(8Up7SZD` za~-CjmZH$bCl_WhSoTb<9jN!=lastW%Rk#7w@06EO`-4?ivmeob}Q)^Z`lRly-1Mj zzEfvFttEY);S{NbyFJxapW#(ycc`;+e*Un%?)ax`?A=mZv8hcKB9(&coCiUn*gh)! z5tRihr_kXP=yH*e#AgY~KuU8Qwgw9cTD^v-em_2(&FF^CXExz&432I$eU6<{KkrOy z8B?jdUD1Ft2zW($g5LnrJL`1l$LafF=01CRtRFp5n^H+2-b-8XIuKep?rh|Kp3w%r zYe999$jr>1n$ox_7Q!hq7B7;HHGvHtqol&-5+(j&vI&*knW}=6g5&{l!t6B^XLzmC4uc?W24)N6fKwedVq|9&F0uo zOQPyLfEfm;7@N)!eHHI*=>2{iI5|<5VQAg~Khk0r^Po$OdqwG2eLz0_(dAmvNs5hR z{;W=J8+Eq04rz$c?l-4x1iRk`$y=IBa(vuWrHUi#QSVcpE*iCs3hQMQ^GCN&$py9R z(T``op6y34FbOTtTdCpfqHfFx7@t zHXj&|Q++~T79OttenqvsynP@kGa&^KJ&3J^0zwVY=4f2Z?wyu0v0`l&Eg{yfAh9T< zZTnK+BawZl`s01?%YzWw1?np|!QCAZ#m&%!%q~*)C-RMcDAw~~JLM~Ml*6FLH?qlk!wT9xR_kY#~MRjUDDI!{8dAy$Fk(m>HI1wnKNqo<24Je`XYle7G zm;$lh5P!>sVOW=m-YHihaivgTTnAv*joS(@hEiIoGEXP$_EyWI4_fZ-nm0|#Rkc6P zXt?0l^*hq_MGi?$7V!s(YP3gfTL31ar^Obp*lyE{WJljShg-?+!tN60DiAGR6YE9B zX}%cX9x;I7^D8ZNVqd&}cd~7*Y@Wrnevf(~zQ=r}=K+{giJ^%M{B05UuJ46{?_r9~ z@2BLSJNU2N93|)8tEIOIbPT*tf+<_c@B@qy&Ympdb0uQ8Ov}c`R~k$7(PPv&n2a?3 zdF%r&21e9#m*W*64I1M)De>OLEBo&$*gxhjX|BA^oW5A&G{TTUQuA3{iuM}q-RG;U z29GNvGitWQua2iYE^{MM4ol^7nAE3nIswx&?wrC6B7!Oqb)&8ed zxuMV8X|};+-u}-AArAdcxUP_j<@B&kVIRhBQli*e|Gx`Dg9h`FFt%tYGmIP3VAOnI zGmqf_9H2+hLd@4D!Bu#`f1lNDwnH6o=s1D00Y~y@K-}_;en5vlBj>ol2(zNteYorV zhZ+Yjj;R+fh4MLo&`B*25u0umzZ}isl$HUY``Ovgv$Je~$R$d`w!W?exVbvs0=oC6 zlHmVIbpf!pu~x*N`z!?H6uz)Et&exhuDL@L>yQJa)ZJX!0*5zp>!Ltg$ZYWqoZB5U zrR8)?_tN9pzmd#9v}toC0t*@Gtn5PRNL?yt0t_{@qv|?p`cEVOgX#wWJ={F}f2gNu zzveO-7~G2f2f?g=$|DvowwE` z7pEG;mA8`TZUJ*d0?ZMh#FY3FH57+?%C!Wkcb?Ot;X=TnQkZlb_9T`4qe~bVv^5|Z z>9;8GfZ9)7Ka(T0)mAK_w$hpWMh=4XaWikwLm6m35vxVXL+x>*&Swu z0o;|$b?8vWHoWirbueWAKEV34phK(bT2hg#(Pv*A*Hu!0pwyoSc*aI1lc`$4O{%Yn zD6n(V+Kc60wqV`mw3#ls2HH$(y%Y_hz(MN;1y#6>TVQUJnNO_1`V~w2yM7;kqIm%=9@WN%I+wbi?lMk*KaSBJ@bm2{sOYt zsSmf0#GT)?YbHH1)#CZ7Xo63!MV38-MKRt(A$ZWdWzfw{ATp_SUW*xKLTqu(yS*%+ym$EfXPVvYf+S9H7hZ_*aH}efg}ZMpmH{c zxf*^18BMUy&sv`$9jp#E6%8%N{~OW)WB4bCrdexGnO8d+?=@!k$YGqF*B4pqdt z={~OuF6OX3ccS|9i&TOIVAGu)agffcL)`@j5beOI(E7R+EMX?Nd$&6?%Lv$9k$~96 z1K4d_&AXs!Jnp4${Pq?t`)zoxFmNQumB-q9QuvDlwqrI*p!vIhn`Z_hYt1_{r$ZJb zd**;JFoWHQfc2lG39^%&s2aon{*cI}ic-1Dyd_N@i5x3jpAGJgoO0zv>D&p%)Z<;7 zLM;;9f?D}Jy_T`R)B5#ZZ5=N2%3z#klyQ=o(3Ux!4a>{~&RRbkGniKY;_0k$%%3t$ zLLQFbW*!p@F}FbEhdYbIh3HugVVRDyMq3PQJ%d^`0tu`h3|TXzKks ze^P?QUEBqW1U}aJ-)NDx`s&X~+oRl;M6v5YGTx2M{udJ&Bitc<#}DDv+dWDyd{VuU zVp z6D7(1BW!E`wIsl2vMmnA>bui#g|2+w;qR8A(fiq83^G_PnqZl7OCEWU;5Av4CHlGE zhwDIRog6KnLyq9K&+ao>_bJ8r9DBsa@A>%&>gl6@n{>xF?*GbC3fF3LV?Z-~SCWWhiN=e# z(oT>wA@xpnJy^)jZqpdK>lgN7_i#=Y(1U*eh##zcOz*HtY(PQQYJ|CHB*Ev8H+NJr z8N!&P`*ymOGh6wTEn$Str@n%EfsfXN40It zrMa>93Kr*)9mC-@tD6K7d+7^iGuxfdPnLj9s^3 zYlS6Ap65i;5k7W|2KwOi*OF|vmdN_`=@|Z5w$oTuhtAW3Z;hI-YJbrURgjS}6F=Q} zcl|82D_;N~G1H2@F;!MWcHM-q%vClEhUjfIor_qU)%ND`p0%&Pp902^;Kt5Y+W@tK zM_LrazVn)25i|7oZXt#4^}P`$(NWX6`@ncOzyC!)k>@qrOJg?a8@#~Fk_T!2^Ag3I z0>`DA^78UQzH$B$^NwxyVx!z=ghZ4HH=0bZL4-gxy~-#zFJ>ySXgTc~$C&9+y#|t? zudm_co3xpwn(qW-5I$8tpaGlwYOk1#y0|y`!J!?bf92lAsV(3{Rulji)sYj7#s8s^ zn^yr)NYUzMWdIHH7Ti1ueAiKyeKW9|xBU-pjLPA>u1MT5Akw@|ukwJxqTzF;A`n1# z_$Z0Xu82@(lZ;F3cDkfOL;#5`3!!)V8^Ffg#OW_uDE&aXJ4Up9Kd&?-A%Gza`bRb? zUq69;SkY0eCBe{TfAM+@bW^7m6jnq0o})gY>1*b}m~fUfu-P~RV6x7wvU{a1448eA zz9&`;8X8)Izn%~4f;NRct!Q5_UD@p_2W~#y6_57o*LV4z*ZY}Wd%xb4np?Ngh#Pz# zmLZy>JekBatT=22adu((lAGk*u$`0BnbPw%__aj|8B9zO4(W7OpCM`FXYr@cFUD(o zR$<;fYNCDS>9Q+fVc;IeAsIA(adMYdhU6!v|pom}w4Z(y3&vZ_~ z?3sR(0er@SPoERU^x&zF%qZ3gx7k-jU4A%FF-%~KfaDlrNk2F5H+EbuM~(Dl!EGsh z$`3-7XP@1}G275oSBzJ4TdI76428g+eQMHzFe!y!-MM5q@}ZhI$aw>dWO}4DHaKB_=!LyF zzU6hYPj1IryWQ?>>eRwUUIm>|cB>-n{VU8rCG34J*H zqYE5L9}pN9Li~`ah?bI>%1~gUdaQJ3RDeBQ=<|kRYO_7T_SxKu5SR6QnyD!{ zQsotdpD3`H36%WMbp7?c+nM*WA5FaiSEUqcYx3wwMsh=$6k*Dh9JFgjp6$vDK{T!I z;f1GpY%F|)E%z3m?B_hd=#uqJoUQ+2X8R|=GHk>E0heq@4X*#SH8uJo(Z*!r-LvY0 z(o#0BbFuRcqn-S=1Ff@0(G_Q!rGX~5aWU@Ks*-6U3YtHC7uCtEPwAr@#%1THCA0P0 z+xoe{ZAgi&naLL>rzRSlzmlXp*j~=lx|W{vr5nu;NFLQ6VypGODAe(NL~scdw9j26 z&K;$Nx82{co$h!^zz+BR8T6}m&Zyl;J~unoTyv%quF1YUCgmB?8{)M3=>uq}m778V z0s|4XF0?e?4qKq$n{rc~L33s$=>X$umhse^>ai!s>usQqqozymqprW zloHrxn0&jq{q(+kzu^nd;bRYH1?uXxmg22k6=VXnrqjhF>3NL@H3AL+SEaKypj}SS z_7@QrB_F3~JwJKvRDFJ@n{G5^#9trnffFWiDDl`QC-6MXa^kd@3%SQJwucNMcQ_xR zMXr^GP)1@b)H${@dav)aPCL%9S4fU2-)Y$#Lv~8(DF0kd@IJG!8%UBGMr0>d?oIUj zMNHAw1wER(6nMm93aT+X*ZTs@F8{lk5G~XZ*AK}{&YWosrMm{O`ei(mR^;%K z?UIix%g2KyW|)Y$!-TS^y%TEji~Sr`Ttc3zO*~hE7nZJ!E*1?$uNYBj4_c)o%(O*F zC)g)YbY8CI#M!IGRqN-)L3<~g;s;&8Lor#)+xjTN7|yMgiB**#6Mu&G*-2?D3RCbK z3G-XeQ$2)cp1&Mu8s(^^d>#MBz;~r+X+XJRhn88R@+CcCoW?rZdmiZoI&4v2#0Mz(6W-K9(3ZGCRy%xIzmie;%fAR`QP|t>ofGKzC$E^ z7&nf^=s0@hlm3+9!M5BQ8`Mdd2IfciX?@wOE$vzP zZ}&Y`i()IIl_-j~e;<=UXek;sgN;r;;SF}go#DjcMCMRUr}l;`>K*s~ z_8eFV1GfIEWDL`KAn(m;8kVwoe5UD_I$Uel)S2@;$6>qcu4v-HjuWa!ud6tF^CL-C zN3X)}_n1QA8QU@w?2v?6rF?sn77>FEA{?B2-^07Rx^g^*bg6$%!qn!C^!Aka3s*Bj zga)*%SGUKY^G3P^nAPH~+zi$BnABsvEM!twq?XN+nW6VWA7DLLRrbMGIieMt@M3?N z&5qrQsN0L~FOlkR$rS(9&f-Z08oF!F9nS>%0%nghXOH_{QW^An4Fj{>iBiF$-%3+4 zo=2VMOL2*1IFd?(@)BMAvztRm;?iKWJ&mseX8Y4jy0QW&C*u)5LMDHEq;PREij zCsbEIt%l@M30EzcIt%7!$FQ^FF2MU|1mF<4F(KsIDNB6`m<5m2LU8%PVh%~Irr}fR z_{n5`Y4?b%?N!_fY|Mu30N$dgM%IbR|av{$g*jvhT)tQ+KM zZZj{RmbzMkfBPeIroc>PZ1nT_!}Q(-tYr(O;;1*J8@@X_$>9BpUtLarM#kQAwI#Yt zu~u2A9o5wbpq%6LQ&qlu*@1?bm)}}~ApB1triiz0v__Y+7WbMN03G_F{fMx2Ap&d} zN_uc7Rf{#1h8p`Dg+i)MUUd_>-rK_#Y<)X^6TlSk<59&)Z!YIuhpw{(2?I^E& zWhc%i?bZz(_^bqdV{ zOd7v4hqxRyXba%YwGia-GiHp_PeB`sr6fhb6JY9p7ljFO>MEgUz(H6mvuuKuSN5=ydhuVU>)t!D;7I2C+M z>8C{H+|N$fI52@t)*w9viX}xta!yy{ZxdKSH32t3#C&@q{#Jd(_c$T3V0g_#&=6@? z&hP8DRDi)E1nl`HA8eBA^^k6cbf6)u8%@zI_mD`2h^Vo1m&DL8VIC(Bjyb>^1E-L+ zn8fxM<5z%iLavdBzTkrKM;YHl69y%URCgth3UmLRFO02e2&~EAefU)SzKDsj@oURC zCVdgyn_&@s!dhq*Hx~Ce9q-$r5vz3~sfd2{YT=d80?-)EwXLtQ=6~e=F&mRh(S;HM zBVH^7ItqfoAmD4w0AY&bzrG2=lmnv#1Qz&-xz~vO`t#`rY}4ycbr2sQU%)M|ldpRS zg1j9f2Dm_=VMkJ8%C@dtI{$B4bOMtq;ysvzSUk;I0p6kt6e`eaHe65?UM$-RAOmPK z5p+oxQYcFKlH(o*8|_-v-ogTo$DY)Mh)|@>yjQfOk^(YNV)5-g%d!0qzjKO6FTXB7 zuLX{_>>4`IY0PyGV4z_spIaQCM@d>uzTzDZpmx9|7d99ViOnO-EQWYiWrK4!R18V_ zqj~d|@p5bNW2mTMa9fcAoKa}?2jI`Amwrgxx*#JRVO8n9NpSK0%hN;;F~gHQuf)SX zseMDgnlA)u-~<=}^Iw3}o?K}9ttMolAk+Ckt4#m090&e-}y_)QFHnYzZAdAc{O#$v?X{A1*qos zUno27b;t^eMyXG@eQMfhJLo&^)9NXnuu804{a_i@pdil99iMB&q}x6iR0(M5v|Q-R z->y3uHJgoLp9B0u|FrOLxrbwFUZ{bvO~WzEXdfqTJY`xBH@;E#CawqFFh@)?>}Zm< zHxX}pDBS9^ooE3h5ci7%))ss(lR<{QRpvovC^z)>Z4={IEq5@l!^1l$CEZ5k>Bv_C z*An~HhB`lb>3FozTx&43<^aD0CZb)WY>^r2TWHt3f;3NGvXgWZ@aeyJG&egfExfa2 za(N;p)pCg7+MBVHKn#9iH7(tp?>4MU+p3^FkTOtooSLb0IBfQ`9J;7G54`I9!m<3H zLtu>C;QX`OhL`V29Q^a75OW4Txd*pveUDtA<4~_Ffi~%6?YvQkb~%lbpBeFr`HeL7UGSrgEAg$%U_Ld#51K#z7W$5|yt1>K_6erBj zuICVKxmovJh5*NS$vtxKm266xUw0>vUB;(B%=*Ibo_uZti!LM_C7BM}{h1Rl`Kpb1 zcl@eP13&)z+A|r#l=jKHqdf3Mx)A(&#Oz14fc^Cz?V5l?>Vy)bVFHiyR>232jXM@- z*22|7FHLoqB~oAX#^9HEaoF+RZldrbGcEUBg!fT}C-KXIt=S{$ng^7?IU=3OURNC5 z@#3wES9`=ZtJ5qRUU=!J=Z;jTM znf0Hh6fj}AWWQ;&MECq4iPe{hb5S=*6gPDjCI$L=w9rR?)O0J%z&pZDa=1s{`6%Z? z9Nk+qJeRP#gwR_vZX>YN!SfN_3)4KEzt%(IXDeYr9sz7jxF$=y0=Vx4>e|!3u-AbF1aS99OZ(IBw_;Q? zTBFBoP=*UX$q((8lUDnH?*{Mrz+X5JGHPomzY-S8JY&s+W!3XMzL%bAG$jc#LG zfAAL~i%LJIU|K6mdwH;b23iTp5vfR6Z+8W-&ueye48mt*Kcr9(T;ygyv1OX};nC>0 zas|DO&$tvMOFh5y`^0N(U_ceS)rTh4=z-&9$1Rg>NZWx2Q9=Y z9V@;R~*2lw6R@SDmAtlD((hCn(c(MN&JY*{2hBMWSdrX(~C z_ksr19+1$e{9k}_L&sRjn||s@;ArF+0m4XbapGG~hRhoWlHRm>e+*;!l}<5_-*+Dg zabCWGk572wyLeSc$5P!gU_G3(^097x<+ zS#G#`tnye??EBr{JynZ7w(hr-CG1pXwORbnMOyEeoAKV_mhJmh#`J+kGeRB$don2I zbpMf)?YELM!o%Jo)e*16w>v$R9*nn}-61=tadovDB)Gr(Bzy`J<-c_QR*itq)&~Aa zsHjj272@?%-me=D%f{*fDRYyFiZ-*|n&{f{VEkTO!$PG_F6>KXmQw&C`P42v>DxEp zqS|!+>TtCoCW!T=&DL#Mt1N@bNx3i+JoZ#g*I5_o!xvpl zy(Unb(`&72ruP~7<1hAspJtN8>)8^DJhKJ&wsEN+ zj*69`UYaA+H8?>I_N!{S8j*9_VpJk6m!r28R%V*uSFm6oea44bF^jbZChZ=zW@(3Y zy(wsT0{LEbxe&6NOQ^(ZRl26FE3w>+w0onALZmFruU?{A2T1!zeQ05qyz z=lV~vC+BKI--rIX+JE_YwuNjSz?H=9D|0B;E7!xi)B2{w_n$CTF8p^N>$jh#XcqrTF3%5L zrQEPJ-)yLFIpEsOuxi#XWzH$XN1E+>y&xdQQbrgeyY%RkP*f4`gm!Jqj5 eP5dw4>QX8Lb3Z8}pz|vRaDiSa%M`va3iubFc161GW?;v(}n(j4{WmAZbY<1XvtcFfcF#5n+B=FfecpFtFFWZ=jw(38k-Ydj11p z`$a_l&GV1j8@<5i_t}ni z_6|&h|FgVP%F(K$TNnV;e?IRn=}#^4)^*0jq*x_bHkaSjop`8TaD+U#=)BtWvbaVd zcA?ndxHW6^I|)(b=Py$|Z$6_W4zK|ppWfDfvkerzyl~_C=~Tmh(^x)kzplh}a?@D$ zz$5B@VZ!12_RE|1&%atQiau(1{q<(_gB{GTPv5-nG5wG!_Iryr?=^{GG+wrTbB-gj zhw}0|a9;RJ{9pelh|=_DkDDw}6C{6Lmq+^2zU z&-H)mD+~?zeD);up&yf_|8~+G#d9Otkd)v3+BRJzSCOrJq32|w`gWbG_kDV7=&2Gk z6{L6*Z5JJI(0v8OZmau>Q0xo(?+eN5pm&*u+!l%Mx(Y;-j?L=CUp2K5mk2vA8v%;; zSE@wcF7gs+R2I#c8w(7XA8#caxSU_~+n$fQoWbF<*O%*9QM+||%qZa9ZQPpSkl^V6 zb7Fnh=)1}s3PRpK&+3E@?zA8Sibd5gV<;pq3nq!TXTP?_T;46o*CzbTn|#q){+kaQ`ZETv~S!n z_if{(;ytTI#~q$DwdsWZHUGU`nULQm>2?lTw3RlYE$4VI8BM)HEq<7gTgb2%>r9EB z-+=|nJW&@rk1JOhS=1zzLE+G(i51fcJ}3XD5q#iUG{EDiV7UdBqu$yLbjWb>`fXQY zwzFBW7~uX6j$gmcOxNW|h(fSA5!J}rku#e^yc^(PF)rC){iBoBc>eD2(f(8B-UIfY z9qdP9S`_;SduaJTgCJ8L?0}J_K##Iz4xPWgfBoy-(tyOcdQNQcfMiUX=UU zLnwmJ6$jm4JE5*QvrHp-TB(l(+E~jE|^q|5n zPrguh>vfR$!*tX4(*r< z!#L`0Ep)QAJ-`rSs%P#t2$=m${ep@LyvY)S(@nkr*ggJGbLf-rG2YU?J^}?p)k%#s z>$_C{$R2Z>q`m=UpPn~9py=~j@~YBsq@L`=i^0B(64;o0zIaI=!EAx}euZ}0bBG5d zL+Rl`?_j|==ErS!W-_TC>5o=hB_YiTQ#A;!P$lpAXA``Wkt%N{=9#JEaKEBKLeea` ziJ_a69H~v)F3FQhp7wDTe#TRE2*vVAx5y+RUJ6)c5}eHMwd*no)4Q*~BJi9Fq>VMr z1O&kk0%1akkM;Ai)2a!NYm0jT%CfnFi{I{yME;E7&uL9%;||GPWVvmd(y9b%hqC9Y zjq$j(AijA;8sk~f_h0ilrB+>HQhWS-aPNBW;F_4zg)Sdx-B$C7C_kZEhm%XFtXXP4 z^=5vFmr#sDq^6olx9!CR zU8ssG72ig9@+O?r(WQAT&e)xZb!WM(Z;-y+XYveq4?VXykU?Gg-M7zTWElmLjDUe- zp|~#e%#DIU=H^3*Pr`VGDtR$xssT}?iRzLgpP=_P5v!aZ-g+e6!cAAj+i&qe4AhYXPGH2NmJn6jASsGpi&#lTn zu8EXy-4-}&bedw0lfT_-zckL zN;dv3l5a2TbV1q`b``UE(}^z4)->OG`zx9;cG`&Xb|ipN*oQoC+lbnT&5W{@YFXPj zM!?1li>F#$x#h#|`8&gGNN;_TMVIU!;!6@zYi!Tg{Ug*99+O0oAm_ z&ky&twE}HzD!;2!ARu}|0gFPQaJraxRW(i^6{)$}h{fAn38>6j7w7SQY#>dl{Vq!J zG*RpiIM{^zUR>x#G1XSpDH41GgX!sn!r*D^MVEU(ZKRIa zA*5--oiovcLAbtVC_}6&=f-1a@wMDbL_7mt<2T70U?e0LoQ~`5GwbQ=eZPAr|56ZG zXHB{R;4YgDCcMN^Qnq@d26dKJ#6<4_2#QaXp%pax;PtEQTLhn!yMTxRPF$_ItV8kL z(2`LwDd82lB6|?3?t0zV2qJq|Ve?7M7V6^Q3Q$4g%1Q;4AnaEB5L8B>*e-SRH;gm; z`H8Q>y20&wNPfR#bNi8^V;C;Xi2i||VE*-a3q~Md)+f~DT2FB1JIYC4U!{+=+YPE9 zZNryQ>yU+QPCrso%bYzoE2MPL=tjZjz|`4Ri7Gcnze8-LQ)lATTFV#pCfMaD*1M(^ zS#uDN zR}QxhP3Yp7gw)em>5a)dF*7>-1l>Q5)!_V=*1Jr6uQj0~$8c18Cu8uHz!eI+YQF3B zNP=Vl24w7kd9$tLpKuGlLe$`x%K8Qq>e4sd=P+}!%OCNI+h~5opT8V0?B6A>Lnu4B)Jz@yKK@Iw&HWz zTT`!hr-qCZo+Mt~yawUh6PcthI+$lqZX7kZ(*qAYnRSV=cE6`dmQ1Jo@fG=VeULX7 z3rv9+8Ra%g5ppZm(kbZ)i~vPBPk(qT=0p#n-l&OTT)4)N+idv}hjZ9S))jdv(Kwi5 z&i)(qdc=+~S5{hgN9(I&Hj0mc2eYc$&E-St4=%paJ(!t3ZqEO zQ4jy{^$82ZOpKn(Zl}j)i6)6w64pbravNwRgn%4kSdld*?gDD?9ZNh<(fSz1_dxqS zZ}^>+39sN9UO>nNh`}-i{a{4iLIBEYdo%jIv_KFkO@Y3lUnQRqj`Hd5!EyaD#7lD0 z#>#DTW@)6vxD%`_5=o~y#8%OU2FC$@Dku?psRbY#KgT>VG`2nkwdup+CpMOr(WlR* zZ=(N7jJ~vyo;8Z-g*q6a#ob1T&?LBRXtIA2&v$CNmz{hGoG$?LWUu;@9nn1g#$KLN zUEItGZ(0!F;jo1BONh{{P?}(gbII*puJYA}s|vLAKRQTKi!=#K_W=n(Vb5tsE%If{ zH{bIypNjXR!Wo;L=`jvAYqYBTJuI8vz1;t`FDOkefN9wC~(?MCCF1 z8~g6*kP`k-%al#G;hgTgccDjG!#ao5SDQB$pAQpf0Nf*lcuu|kyVHslJQF^=o8503 z@JD2{l>9kkT)Ad(V>f*)Jq`G7jUS`Ow=f-}G(4#dmDQ3T0Mh2;Z`W<{v}W+Opidc& zJ6d{dO9(ViPCM_rTrQ2_KIw~b$E!5lJO4<08|=EEXb@%;IJ(T5@w@o+;3_y7Hc?Yb zFI%Iz10=SSmNo0jS4OqZKgoN2_M4J%KZ_o?9|^Oc7^LhmfttEV`aOn@vuZ^(b& zs6fx+e@WKjd;h;AYZqv&Rz0oFnKCg?(COU-5%WQ1;Jw6f#?SUgN47~#m@Z(#IMAhw z+8B!?2!n93iiG2psC|!f2j}CJtz#Z-=sW0+nK+9iI*PRMtG!DjF^c_;AILlBz$WgC zx*dY@4&hK-7y4o)HPNSQ-1Ddx=FZPU-jO*R2vv<#y^=cu)Yng9t7CKPYKe~Ur$C_C zurR|r?8__EcW$4z>KoPU$*Hv`6sKNFEQD6kE43ojxfxEu!ZG738 z1%oLXiu8Pu5W=(*A`rW`xNie{~hM=z8zkJ^Fqk6sbz zCga5y?=L)Gj$PHyd_#~TZsEIK>mVH#>n_H@ev{*R8d2~arzaD=KaipXRpZlKuZFns z!I=LwqMg-asCP2-2Fl)$?^+0qxQk-S(C29IV9IpMX}Q>b>s3*~_O0Qch1q98;sO+F z-?Wq4ojc)UF-oD(6iyIiO^9c{Rf8tK zXhj@-pv7AmcxDkQimQpeWc}y%>8)&ZO?p3C1^=z~w5a_>C6wM>OqS@FNv%Q&1gbW8 z)i%?vSuXd)9p2bM(ZJ2{3t5ZYu-oIt3)*wgp7Iz)3yV+asO;be7js>t8Bb*sxGxRC zAiZZS=CnV=*tkEDW<=Nvc}bG~&!giIQru+9{)3+tve|i)cV8Vrt~^(XO2l)D62tWLiXFcH!C}BI zR;pA5RQ@2cXb@AN=^w+FeBSnWYeYF^2T`U5{T0BC8{gL4aPI)m`a4ITBaydcQguhO zhjC4`nrqSJCS6-^Ps5Z)?SZbzN35NgSG?V(^ zKA%s}y41vX7TN~i$Os$%89Z^N9l~JA&O-Cd(B~$OELcex)MV@KYVzjOYls~ zZWP6rs6>#rFll6cXUO%R_N*Ll>Da+_lwMTKygSRBk$Cb6B5>4vy#BZlXFWT2d0)gU ziC|gnIf2vl!Rn>3gA4DWfZ!DvDC_LLevO}usblz@>=2CwA|5%Z`_7AU;atU%zC5L> zkQ1yzUxt{?j+X<9XM_8F{*b1D5Z~vmC`3~=f%|h+)CZ4i^^x4^9v38~YfPThb}BVV z9d*SXCHQK^6I|}O^mEj|=j`oZEybmJ^ETAtpd9$f_;vN{zd)C8gXwGlm=#*Awa7$MU*{2Dh27` zDMi?}xWAssge81kcWg5qZG^#7sqH|z?`+3^S7HCQTh&1ec1OO8;`)eCyi_QwK?l$i zl@kJy3tb7?=D9Aj>bMNjC^+P-Chtg&hB0JEZb&NR1r5cue>>xOdXR6A%K z>6#q}ANQ4B>8@im<>xaaNcr?1u))!^Hzq!zyGffTnAo)0%4-i!Pbg5&C&Z^aCU9O_ z;2G9|O2kWM7?*P@$EW%KwAkOXLz09is#NrvU#3ap=wNN8?bVR zB^I&a$Cu`N5;V)i7k&m7DJ{(GxDquzMmPhfRUUf3>VPh|rvXUYJ%qL}gRI$O+qKmA zDZOo{dDYZxsX85Btp%RhGY^NWUm&#a@O=>qTUUC1D_K*kj*{ckgmOnNiM}EJ6qVhx+T!^dk zUOq{&MtVoR;Ss>cm9{2}yED82PBsW3DYP*4!R~b_PnGtA|A))FK2wFe@x5c^l<)gm zjE0NoHD2Y-{!n~4a*v&Y|IP8#vhyXj%bDJ%Fe8yAK2iX0iJwanL*Q zJG-@8jJKFKUO@`#tW5Z*v@Xg1tX~iGtSF}X+(3BIxL!^#hT|`p)hkqI79{y8fBbwh z+aOn*ECpJAvkNKxVl~Q$*(==;t#9^*!KeiMQ1VIgo95NaR6TctbaKu_Mlc}k+fsd( z_KQHee3uzb8wtdb?OI)6bD$4D_2?RaR4QP%Ku&hcpXk{RLrX}D)enm%Mi_ib#g!LGTDgKEu-;J*n`>$Q>k4h6jz%B8rnEx#C`6+EAidq zr5nzt*wV%XmYgsfslZ$nJ`BS#xCHdk3`gSQ2->lZi|M~mq`gwGfHF+_LXmkG{7MJ4 z(S}IZv(|(-PqFQ_0wQKSmP7-`R+u+I#4N)xQ4)vJQy-#-gRuSA`SjG&J%;n9^I_SP z`6tYE-XW2`vOkAbsa{IV)s1J=x}s{9)FiGp;ubA-;_%v^3W9C)HQ}f8zitk4{US3| zJYK1L3fVd|(M$Msr;4W`TxCr5FxHG0LqxU?o1`fI{mz6z3*DjXH9Q;7c%h0d5X^L* zty=Gq$UqM`wDAUg)+Ow#^zrb~flVL;K2$&%k%Z8XCVMc4wQB4A=8$5`eyF`cCL>S{=1yU0)pR8e0nYP&5EpP&^H70E54iGz;?isg-$km|`^lU&V3C7cn&YkH9 zYigIL5uf`3i!Ay3jBMPwyt+|j3_9ED7;zJkSSN$3`Hdy#qVw%(?SaD;!1j(10&lq#RJG(t39q5*!JexBfcNJPv;qxlYZqymtk$uc)wghI<7 zRFA4jDhztlhDmO5^e4P(<;kx)l+9v6(o~SsZK1MlpRzWa``~dMA*577X|JXlX`}Wq zj!6ZO|CKAVq$!_))!&H!d`H17n@0qDh^H)l|D(oT5np0|Tpoo3e!>AD=%Mrif;8X< zMopTC`&##-1Rnf=ek^h#{5oz4{ibLoQSyqAeTb6tfVKSFm^t=3$R)JH>+Klc>Sz-ME?cz4 ztv03n%e8#jPJULBUWk7?glm;8K;Ff^Ab7TTg;1#L?xv`Y|jOP~B5aju_&pEsVP5*{0l^B1%}7VQ|mjvB&AVp(SoOU#rSi zo*W@J8$h-rz*0Osli@K-Wp*$Zu;>|=XRF28;ty|7CM439!25lv56oaDu_Z1y`Y1?) zJvB0&<6^Z)ZRX*b(cj0hn0>-k07P5tz^oh!n0zDiypPM0m{&#e$zn}RxcDgZ@z~d= zb&-lN?~A?UZ#k5|jbdULPT}7)+OPXcNrYm{wFYvftZqCRWZ}ivOhk9gLUU#Y4^SV8 zP+)I>)Jx=Ah=gn+q*feVaip23Mpuyt%O5{vf)BLy6l%mjtv$IJA>&*r^8@qrrSG(M z5qwRhPqP$woNuj1s0^bYTm#B-OYZR|LbABLOp-yNAug^Hp4w&@bRowP; zacEmGkTl|W=AU$E?#U}(JZAQc0-N}(!lA7O3zF>hbN#y+nOpw6EHul`iqUoH$5D*? zH#DjU8V2h%)OS-*LY2K zIRcQVSXZI(VaEllqd^4VE)!*m2tk?;iwsqqu1EskQ-Bc|_v1`;`4&Dz{50wvOB#(E z9lr$vDXomds==Wt?_9`TSiM~q_Uv)ig1?~yoQ8$b?@8Wf^%QQhlsBajk33{tz5^vE zGo@<2hs}J0%q79?g=@wVR1Ze1*I1)v3DE8gT^=K_1|CbnRlJ(pCIlKIjhkU0XBwJf zg`OBC7!4^W;y-8qhze`9=kh8#$u4yQ*|dH(6t@w2J;WH4=BjCv74&8}Ph&ju5`I5U(H4z z6)o3yb+cZQ#1)wp(}YM5A(PM*@r!s8OEdP|j}5%7sp&*9aGt*-=)cks#Pnybl!@@V04>lXWKT z%S~??+gb=RzHJ3-37oH^WQ)fmoRac$|Ul zCldPUJll(Jytpm(d-ZU+K@U30gYjycQYp&FieyZ)z)yg$B)>LsNn3kfN}W82Ihm6c$#LK9^xIO zK2}#|rQ$+XZMytTjEOnX@o#9jNm6Q^_n(lS0+EP+IM55ZYha&9pH%jgE!cl8N+&z1 zA45&R`=&PGLVD$lWZT=}QD{~OV1!fRMdCvJVvV#sRDz69$#DCjxNxc(SD^)|0#FYQ zp>QIee}51_SNz8lr2oqk^cwsNo2}i)!#uMe;!UqgAAJB~m9{z}Qv%10v4?xyR}%$s;@kYfG?GbFxu^%&uGZnF~!NL;*>Yhu|O4VGIRFCZt3cU z&s3O=?Q>~HVWPQH=6*-0@0xY6=%b%0reOfDVjJi!nb&F9{nrVFZq4_|75x-)9+aU) z$uq=wf|dy#3l{cKivR?Ov(5NMN@NJ->)gUDXH=E7O5dz_ce@L-T~+R`Y{sx=v!97R zk|B0AowZ3kr+0oA+v#cV2}mutKlSH~rRwg+J6D-@(HG&MzmeXumeUYi>H^Ru^5`Ng z5dDlVj5~}J<`0CIgS{Klg$44P!`3J1McwBJ9@;IxHT{MbdkR4^WKtE@K;@=dN+INK z#1IeQQ29l!$W~u(dtj?mVvk`7)yTLm`EP3RQ|MJ21XEV$QMZ#iT+hX`jG%mpt;01;9E(x`S%TDlM|)MT!6Z5zk1 zh4%c0M)bcKe%LDwMzZ?GXvJ1;bJOBiEVKCd1r8VF53BIXyzxpZzv0JMjgkA)iQFnv z{!^{_N}3hS2-7FL>qLHACdgg7^$++NJ998dS(G)o_N77wfT^y9-A8tO-rKlT26XEsrv&bY_AKvX zv9fL|FaQ-O{LfIKgLD!V=F2&phhNl9a@9^B40|gcH+Y7p8&7plpEB+TO@!tkL6tsBra1dYHG`yuXx6rArMrl$76{ zXLzZIcX?m|wD`s{oe+ZDTl&w=Cr8_?elLO=Qv<%Nc@Kxsqp>wUgY;d-mxJa4Jfzd;}GzTeQt*}u&2n(F@rmO<<0o9A_GV{CL( zf@T${lzn#*2@$8&|Ds!Or#}NT&5nOFP2oV^eO|v4ar|Fo2H$qNE*5q5`k;sqEL9MbJqu z8xt4042Jx$Ji##E#|)LM8@O zRrrSYSV_%sjOvHYZ{2{5%1?B=6*1#3#dN2;P;<8JTmFuKdhXPdl?a%3cYM&f=+3Xl{WP`8^jTd#Vz+y4?r6b4G`#Pd ze|O$ga}|D^pvs4S{|%;Lzg{t&pX?ogi@Ps;J)77i1x(RvytJ9N23&yo=XP`(T+Ti` zyFaBUv+-vdPO4CRj;Ripk4lyxD$q+iT$AdzsbL6ZQ%m&ku7*9eD(2q?;H-BP&mzE= zKqVdZT9($fg9y3qMt#H!nD^vko|^lHqZUkNUazYH#Sdj zF;dSF*I4uIh~f;{_zcmIajaTTZrvrc=pVn@DS`8nWpHrh(L<%!Ee2E%v;ipJ-7xAq z))N?VXfa^F&c+RPJ~^$2{}5ktb}MhFcJ4=OYSX$rhZCL-u1Rb29gX~aO9o}V;0n{t zTOKHKGJL?1eG9x6c`A=RC$?nF+b1HFybI50!jUd9Zr&!hIM;^A(|Sk04=*HDs{gaX zAI&vrQdhPReT<5=lJlDS>7$hOfFa4&!))il=MB07mCEC>%^cyUmASAe&w9^xgZ9<% z1#+kw$c%+a=YHcy6h39{tS(*8x1<`F8}S~`j`V!bu@&Wx{s;+!!b0Y4vfay%8`7Ys z$J355x2JFVk(SI#Y-|;TwvuT1^G$?%sw%*r4=!W3uR3a8o9EGK%k?}PD7x9PxBC3e zw~XaJKkffgot`ANBhMkfHx;2?gpcQRhP9U9w0_SxG!dP9@^WEMT$%RP(UaH@R^$h6 zkASWXziQrVsD=>?#{gq97NxJ%C%@^82Jn{YY65W0Qkhd4Cryg3Z=&$P82u-96m}(t1>f!i2ttPWv#MiBp+&k0busp5ynN zc&G5gi$0`+LWZ^2My-7|R#Oz-hyH9T#n>jAQsG7#V*Y2){p>eu$rMuvSM*7?K3#bK zTIZyNdz~Q%Eqisux~8GoM+Q;uye)N^Ny}1_YXJfbe_x3xh%4Fm#OzJyhQSPMs_=tU zaHXU9YtdW__&tqKIbGLEt7)K0{C7E-f_3h$2FvE^>s!?_T9JM+c z#k-fAq$Fa~Rtq*;gDpLnc7c`wQ-x199xyHI?=_a}pEx}6rOEF-pg2;yMgv3mS3PWM z3Ja&|=|-!<>9u9ZrQ*Q7WGHyBxV_6$)U>t6UTX*v%@cLA^BBG!mfZFbiW`b^;cM&6 z^`tUUpz>$s!7JClxHA@cH^}j+GV^Z68U9#D%Fm{^l5zAsMOVCgwL$fxG#)!rlciib zNc?D+jOOr65|Y!bRAO>f6xvhDx(hcrS`3E z(Xupq2sgTJ91$@23kX^6ua-mG6+Tg?9}5QT0B=hUkXiZnAI>|$#|e20{^xoEC{}Pk zo5x>dYcsQ}xv%$skb~AP%FJ(HD$NA~9OC%PG(t}0FmJ~5#KwPwD|Rl-U_n9-BPGeo z!So*95?9kM;X2{J@w?&8XuB$28I0mH$it8~LF0DJUZ~6Ba}}d4Q47&Z12X39;$>-g zZfD$iVlU>e$obs%n(r_cjghSmp*GBi%s@yzUD607m({|9K77&eM&eW?J05uDCil~1 z{2NsDT$RxmgiS?B-Ae!v`{L?7BTh}uq$@__`=wBh==mzUDDFzCe5RjrhHYy0Auj7Q zhKlP|HxC5~a{JvFGvd5`NbUjjk0JX;`wQ!$d#f`llH@7-Ju+p8lHL5yZmhXV zIxSAmasMsr#(sr}I{K`WZLP!=m5^m8OsJZZAhFZJ66MqG9Zo1bTyE1jl61gci*e}j zj1L_z{us)578~`G-+PG@I(LP?TB4;$)gWpKK%0XT0``b{M3ftY=eydltK<1>yAOnG zA&!C)JSJL8XP)p{%pNs^Jt^%$O~zz+N2Bno55%xrx4#--J=w6A;_*WxuWeDUfFZD{ z{w1OCjD&7jsk{AC4yB9o#R%z0dqG=8z))eH(MXo$#kS6{K;IO=QR5HUSkC|((tY0m z^*P(1q;DeU2X4%bykXUn7sKbtMlv!bW+F2x3_WCAO_((G<(gz-8nIChbdJV3l(L~i z$52ce(drEgvjUqx*4|tvB+fL>sj{c6i6S)`KQNkM; zESdkqkvSBmdr6m<$@k0*cn|3%!?Na%l=U%{j4C2NRuQJ z7aLuu0=Tyt3_o%D**;=TeEv11v@)I%HZjf!&xlPt;|(wSY)@tH2I_9A+a;ye3wdg) zG&WILJ7r0+uEwl1Ucm65P3kOcDf5EkNX1B%yy>wKVPPRPHxvOxhnn0mX@g;1bP~}$ zViYkjDrPnw^bVz=-g2vg7dSr=FQ%=4La;qq3Cm~h$SKjAnm@8N8>8p~AOP5mKXXQl zwWR0^3}`;q(HhLpn_@4xav#E*!~JKe7K)mMskWm_Sx8V+FwGoi_P?xP)r>_l$M-YL z^<4(fe5(w}vm6UMJD4IQHJFP|ul8RA<4cb6`&#?oKIFZ+eQE?tz6oz1yv3$xomywW zsTb~`#YAzDWiw=-cyFpNZK{s)WTk}X)|_pf$x@B;t`GFH^NQMW*Xm_;GL zSw;-p(C8AEx2cA{j@@(2yNGb2O-d?-mB3(cQD6Mva0r{*unG=vJ6UY{YtFR)av0+f zX|x**5KOO_p8s;A*}pI88)_p-O>v!Sy%CZZM%bJP*6l$X3!<&DR%(dT6`57tk--nS zdx&;aKo+Ae4L-9%mPYJc_Z&Rpb}VGvCNuC%vkJ5fqdfC@$`$Pa^t%o{N;H7 zPn)_za9sMV-wy$Z{Jjb6)ekbJd^&}VafGV6^Wg1;PwRR?3#JnZ4+4@bSuliAve0_RAs zo0pZapdB?f+vyHtL|xYdR`M@1U63WKvABxjW{nPh0c1 z%7K$Eynd*f9*^7V=Y61-xVTwLonVj5V(AFNUjzjVlH;Gu?^_J3OSpI`ZK1S6f=r(6 zFvTA1BaKezEX8U(u2-w8Z|9_z!n((T*vc<-GeO)nmCY*6rG&hr>Kz3oTGkL z7Q(4`h>oYtW01-_^CJ%rUakZcIgbqxbJ-)ZDSzWGcY!YayiNV&|LQ&ftnba0m;NUY zgcNl)bD31T{`9^aBpx-<9xH=%J9Y~6KlVpvDmo2s8RRSO8&GLVh!*Uq*StJ=mfi z6XLwu^CQCDZ?iYL)~XdafGmzFx_~W~UO&j>3(&ATlTSQT)~Y>})V@$XJ3h8aAu%^? zlw5KbgVH;Rh@|v3_<59iV|=nUb74;RWm)uGnPwL&2SQ{i>gX0%(!h{|NwZH{ zL+8_E|8`ch4##b3^*)v^0O<9AQ%TQ18!bC!+WwP|5(9`>vG(krX5ce7k=XKHpKQ)z z$dOtFiNDtnTTq6EPdyw#Go!jsR;J zg;Vf;UPpfcm0n0|K8aCvrfG4wt7O%n-Ro`^n#mO#38qn!>6#H6s`{E9?$O#6bhutf zY2Qzf5GcK=0&m}XCpNb8T78DZ{whBK0J@A4(g)a{I*-{V+MaOVAmRkX8?oBGy+VC5 zc+L;U&WXeZ_wM3IX|n-V_OJUkO1skaeouKyqEYl+488 z<4POs&_h*qmSEVGFuU`!2{Iz;M?Omc>X68}G>}{?u>RHDjwUAOv z2&9)e6)Duc&9)#pS@ah+jN{%WiRit{q*WiSIn#adVG1}EOboAFp#RxlUI0sVu;vJA zy*=o$M0>EWLd{|MY$r@9IF1C@`GxGh_AvP>E9K&>T8}Sh`5dcf?ZGkEnF)}Zh$q(m z0Ef=EiOvYtJ3>Has77Sae6f0sR+6HbcUQn5zNCqrgs7ud^9s#%?cN%)nnPU|=$knb zIwM?9Rc3}FWcrhc?PTo)kPQthG&{M`=UEJ zb)v0`#OJ*pg=XHlZqvZybu9j|UYkv7OR`OkY#h-R>kKJM!p;#|;khLPLLfS`vp#@` z0IbfD+)Wc>QACjNB?=&KpK;PqjRP`$w5=tc76w+*&0`3+Nn}EYyK&~{q@W? zngur62+gRBbcJ&@Ol|DfmYe<+kgR$)ON%2!x2fe+ho-kqE``1;9Ow$V!rDDxNMSuw zpwM%{oei>DmZUQ7%J1cdb2-9Z<%r3x;NZG)njIfk)K>Q~9_COE1_+p|{?x2KHw&`q zJDxv2x^qO27HS`-%Du3DHU87REdr(&w417Qr0SwDM#}|@k*k?^rQ~j$;_(gqp*Mmbve_CEmE0<=@L_d~~r9lBRO4r0sI{wn@<_@R*60c}X@?LvazcpX1RbXVN1eM%&E#)+9oQuX_7v~bQRb|c{&y)Y) z6-|UEtbZ^pIU?c$1qY+7WTj<34V9pg%8lmR`l5a5qoayQsz0;iIX>q(Vp0p6$nYx$ z&W1eEeYF`!Cr(p3YSVrWC#(BY#gMTUP!*>8JY)M+6!&Zqjrmm3;T@K)OzvuwbO=j&MWL{i(KczaIAY}59#8e`ROY^TR&IBR~q zj($b?sbPSXZMwp{IUJt!I#iHUtFXL6l)D>@jL?s%CU{&W10G>;2^ICF z`GAf)2+|_*>pEpB4o15SQmqe{>mx}tjCKXAtjdG2e~m^?ft#gZ0dtNp(-2^LJ40P0 z9R9MD!A`oAN!Qi)nRkkk3&EKWPAlu=P+sp%s0eUToOPGf1+UEnTR*PlO_!u&?b`Tg z*w$GMW=N0pL6y>`h6WJU7EEi?*LN*#PD=b))f-&*#VwZ#lOiBta_^mqcRG6d_$Zr$HhXVa*zvs8;CHW^y*BYc+;J~UjLB-W559L5z3$Xv4kQ^_okMkOIsI9#M(GNv z1o(5xi{#%gLvcR*PHVnSL@`i`v-&Y~FK^#U2~TQhzO?9k-wJq%|JRd0V4_6+dLRhb zXU6@%o)bbQ{4WV}FsGPY)~sOp2CfguMA|p~ENFW<7-!%U<_+i8yTx6b|EcOW~{=*J|dYs`d|8%9T z3cd}>I-94%6H~y`DcdTA?wDE#@C;auOG1d4VbAH&a?-u6xC=(kTD!+=Ns!CY` z7ox-8DfjG~9$~eVV5&<~Uw&Dlz>h3zS8k`GlvTDY%#*~DHk{^JWxdGZa1`-D1XSW! z;spI zDDYKti;f3-YbdxIx6$PUmW^FTwfOD4Gn6NF#SQ?9uyU{vPai(M0j(4|ctg4lV&!Zz zXWm+}*TCV^L}yFg@W`GE!8|QXdGgCsU^cO-dWPXfjo92jLeo9i?p5&y(4Oe&O$Pu1 zT~MT4s|-fKRx~X}&l)FZ2sqPg`$^CJdzluEqot!ID?5SUOKo@T$>Z$P=A#yM=AamV zM0UCyX7z|&*(xaLeiU*qm1CEgnuZaP(~Fhn+x(Eth8vQR!`bYlM$w@=xD|4laGN@Z zmi;9xTXSx8)!42oSpiYa5F!rrAFM*{$(@?LVFLL#7l)R*R;F_3hg^n|PY2EofATCE zi=Wd}E}7Z+8>qJRaz*f6@X3=NG?FepkX*P#@(_K4GjXPzGZi_^>nusQ zpsVF<;Y&S0mmwlz^Ca`%-%v}K+4j6Vs!w?*@qh95R?&5AOO~i**^Gcz+YGcz+YYxnlCed^xoTerI2>(PJu$dP*~b7icUG3SiXc`RG%Nox{3 zf5d0@=2QnRulmpO2z`N001+Af&#&;T&1UL;jVVnNH5!VG43s>{clJy$XPs$Hyu$sC zh3t>r2btmP7~1VQjr6haw1-_~9Ejq_uc;Vp3qoe8ZJcoR*y`d=rL-3wEY_!%N7lUL08ll;x^3+D&__>IyCTs~pIsd(@E@N8pPsL_ z4Fpa{ZGtOlvbuPa6-WhRNXn- z8`%G`xCt3sVzplZ{qTzEnxeH)v*&}pcKGHx7j**fcWENj1}+rB_!qpWeIEBA4H(*?X%q>C*uN6nAk-W$c{{YTKk6(5JW1kT`37&m ze+usZnDqWWnYs}O{$yr8j^BY9e0Q*5MTYqrH7a*L5B%$BfPt9y{bw`zZ{o@AeI=Mu zskgNn*{zPTR>-^`q(1|XkxdBML0cUyR~8V`1nM=$Ql;IjkOTYvFlWxE$%Pz_#qV;m z^NTkO2_$~Gm%~q;#YAVJr{Y(N#i)wFR0Q2l7omG4nr^lcOgAj3R(9^Hd zTYNT3jgP*ckZ21g34;(6jbwE$v1O zot?jFO_@Uu5s^^Xy`Y!*$Z2QZC=VKuOxPpxEk2J_w*=|}VCH(GK_;6Mu13Yea@Jma zgHC$|Y(2I0!=tJw;j302%v~TAB&ercr%{Q_%Am!;D<~H=U8k;57Is&?x_an^+C*YX zU7KpRUha_oJ$#tSzHkz`4pfB@eYhLFn6bBx%dMPMXAO1E)~6CFY6gqQ7& z%W_M|Z_bA0_8o}qck+Iv)HDNrtdMn?E;*vVkL<&%x?x@vkBENyjpU}}?}fRRoD9hU zKMX%jRUy)KTTMO@ndRPODM%ctgph)!|H2*yr>&iVjgg6Z?S+w;Sc3CyJju&VfoWhA zcSt_e}0hoiI$hN=-4 zHT{vk%f1GWi%>Y-v@>lkx3*=_p{i8mu+bdCP-qTFETdQIl2fxtvCeDJ<4Q|(yTz>|BC~1^~u{C5JG~{mVE>ZG1*?jYY&!Py; z>XS~r!^^NG%o$e4`C<}7`Pk5Gs@PIh7LiZ6!>nS6(Ok^x8I0ZrF1xD7YoM1!ymQA7 zv>Re7O>J<{R1N4{jiFQMQ^tfG@^I@7g;f)JRbXy%o&kNv6c~zPywz$=1WAemUlPtq+=kKB4+r#>bE8!mxZW1+Z`0>rG$qV# zbFwiX_sFz`977>Z{g zlp^I;@~*q`qj|HX%cuz$v{N!U-R};(COApX}o?UaF5LQvF(_<_zR?L577Hj^~kC35)n78l@tvNe?CVN zOdw7h3h|qAxEflwPB19?gBcA{#14cxP6iTbQ;SnnQ|Fvv^^UI}im@))`3_w}HJoAP zxtXC=RRHuVf{x>Db0P}cbz+O~yRA>0tqxmy^#eQLU~hMuS=TVqoW2bYGwxG6R~0|8 zyaq5_aAJpZdKc|(y<+NYMnSz0zM`{)*cqJG%8S-WqMX+Zz2GI%h3?bpp<)3P5s1NI z>Ppu#m8^WpdnhVP=m6$6*G*{0D>S|Wc>tmIu#{uvHs2NS(FmD#_^b_QhPX(^X-f(( z-rdhP2Q@<CP9NIFV@OXB+s3X8w)R)2Z-xxeZiwQ%`96pa?Q*`cedoTEbg(4jWVCLY>+w-i z_p53L_*-E3;(2F>oah2$vf@(0Tl@c{?J^^Bi>x%B~ZJprW?!Ai1!0->a6#K89 z^T*Dy3(dKB=H#)og@d&22^^7GTFlZSEh9hdveNn&_OH(=#f&$53LVs()=D^E=G;0p z0X-o{H}tO;?;9#K{MEsOc1Nv?^Oj5dhJ?%!%h#?@_WZRCpJyTE!*)dEY14rYb<32c z5*DiDK%oKi$(%w|$m`^w&g3!W{BYI;-Cvsp5%PjljZ7Hc>)z$bx^pQGVbzO&ZTRv+ z7ns|jh1@UBTO)Sg)tSj%JT!-@30Yl_=iPJ!D}m~la6PK#h9$;Z9j;|6~=!9on7_6%aQQt!9FAi)0 z<=2-C=JG9H!dd5-9+N3AGLpZ#UfXdPHcx~PF%QxQX3)N*_MXTgiOg#~Npa=|0sY_s zof#iB4hDUH!Tpv!ix8~VP@N6ov5`;ERgp*q$GX1aP9}%~9Tzd^a*|&Oi7qpU16E?3 zBVmR{H*ejxlF8jv(R%!>Yt(a{V;kk&@D#_?w<7lFv%xB?I~7!!!~5KP;jUaQFy??= z(I+&6AbQQq*X5F&uOdjM)Y(a-*VtH${jI9YEd!I z&zKCgKw(M}a6RM%6I{!InKi;?x|}<|rC#CHQB0~_C{1V_X!v1b_;j-#l}d}*U?llo zqDoKbopaV8;?_+Bf>ENg&lXQyeS&$QPLwmtw`?n1s-Eg_A&}%y^GiF1KwxZ)8OSW>YGD}SitURCT;LNPn9R7KXsJ;9hn4re;1{a zq^;8ieyRW$#?+ZH9X!w81oY8BdU)9ul8KPO2^!Oj6LL%7CeV?eX-U!;RT|AVYzV9w zH$35C!$`F3oj*C0t*|$-PTLUk(Z5Z2a)wjTbHR!65;ak@T)&z#iqdHbC)GLV+{dSa zdlqSF2pua7*^y#m%)$J}5{WMNx?6lE?uH1Mo!@ACNf4)golXEpeIzyUtJwI8Ua0Zg z)vPBvTyqZ4R%QM%nI9i_yO8fHC>CNY4a%RgH=`sUNtj&eAe+$m4r=xl1!Ky;cpMQ0 zDt>3RKHVUW*#D5q9V2f?Jh8LaQ@_$Wh!$QpUq%0&U?zYLQOLwda_d$0V8=9^(1<|& z!`3}q8m$9gu@SMFWR+U)aXoy)#r`>K+DmCX%V;BsgrneOMbh_hhiK`jVQ`L_R+`;= zkq(c`KIk^C*p5>TI+J3`#p%RS}oD(RO};_JOKdS8KwWqjv+-riw-Z_RDRdBQ-AQfO8zPAAiDjRg`NL8_wOg~ z@oRKz(|k?`6S#L_PNn-h+ZO{6?odMp0tL^A%D@|EeylL(3WGs$J4clj0=x1}&=zV* zbvrng!9J;4jpK0EXVq7Tx)Z$1eIQq$)2hcGbHfE{iUaUOiPU_<{DSab+o=hYJ&VhH zLS5x3Z5;DhY&Z7qXC%5zYN>S^A>WZ-y#wQf>`5+?&hP<^F=5kAeZpy0vL1k$ zx_O$CL$sl|(~&~u3v4a2?wMFbo zS|`4`g^mHMyVlVALVQX?H^~JY7G(@mgiOBi@?8KBB_|P)+2EmVxUPiR0 z6d$$0n2^xLR{L?4UoNVb808!BpdyWC{%lYzH8mc`yX2*s+@Oy3nL!D|0G>1#N~iQs zb@mLL5{kSi$h?KZM^u|3{h?w+`*(Q-Uw7jx`qCXaSXX^NZVLRYZyAw|yZ*qikaK&D zRo>sE{^UfIY!fFdHG^2{?}q^YNnG1Gme-F(!g(!wq}qMDaySD|XYft_fGPy5Xm>(W znPp~awmw>UA%T!T{H?`D;yd%rJdofI<>tLjC8E2uw`c^(P;GT7{Q*jomCZ#3%L(o+ zBAd*5h*z`Ng#CRz2Zc9;?2P=m>qp%-@8P2Yqa=(>X_$o-eqfSxo_wE_D&M%ZSydko|!%xx)C8uh%{tC8|Kocf@w`RUB5<`~mg>W^*R z^q4KS(QU72lJrX)3@u*lSK&Atmd9zKXjxbJzaFnfA)$dNVW>PwjxdK%1&$OlA< z?`44nhS`{W;Ng(=7OukSO4qqn17-=uST8uNzlXbW>X6UxuHXl-OPegw+26#8ILn6o ze^4iuXO9UR=&S7CH)@!TG}Gcr64Fn4L}UkVkzbGCG`AjMV~Se&f@J{ZPnMASIU?F6 zZ|27h8^N!*%0?UBZ=o&N;T-{rgaP8@_rpD4o`}?vVQXYURd?zQ+yS!+y*X+yGJxA{ zN4kH80GRgqEH^~X<%YcCnX%$p_b#VmFN}VQd9R(!I5BNgg1_sRU>t3zVr{W2Xv-#a zqKeo%os?TirId=nU^AJ@OAT;S0ISR{A-!{K7S9B5tb+?akHf^I(vyZEQS*4bz0mNC zjY};KKR7+dI$_ghDU7=q`iHhbr+MRuVOo3=*lHl|G;%v;eON&ibZ3dVc^!!7%%a!z zB~J@I4(3Jv^?dV*)e<*n=jWHSOf39MQW#^E|CC4X5il!kaxZmiFqG%(RCFD}J4e?Who2ot(+9309z;y>dpczHx>&=_KsQ~lPsQ;P%8>I>xgrt6~; z6XVwM#9IiO0WAIENaMs-l+WCmozx%Wy4di0CSpLk$gE9|HT7S1d)i)!?+sSpAsv;nL8eFGw_nN<8`D@ zm#2|VZ!p!99I2yZ(Pp_SK+v`PK8ag=}{`K`>gFy>l5EYk%T;w5X>J(@pcU=4jGY%S8ixXT=qJ{06$W z(A~r{ywT*ZMf9^0o@J4_jQItvtbeE& z-<`Eg2v{vYecHV_lpev9LSSj`2+l@7n=C9v9+&AFi8-9Rt6Z7tm)-JIUICk~t<2f^ zWZ}9gxrO0@zUGLN>rl<3Qp%BV6}E)=Vh-kl#EhJ>I#$*e+EF4dUkqiPjUgw8hzO%e zlb)GAK_Xdm;xrWc{l>*z$FLrIBu5tpHmp~&F-SjbM?&QasnDeCcu{+w$VjaL}j8vfp&3}~j)aF8+ zEH_Q%C_<5~Kx@uTx+M>d`CCax+Xt=fJycoQS{y#^RE0Q44Rzr9tzhQgZb~18p zR?y5~$uz|sKukwax(*5w3O3TRQR#I*M7vKpxGDDyH12e^v?C)E0r^o$Tl=y?0EjE6 zP8SxnvUGn$MDX+{gSb`;Y*~?*9gwY>4@DKA1;V)etc=$Ic>%p@ou5{k}uL1+?A1UAkdN+Ah)z=1@$bc0GLp=?@hvRThNsNO8u(Lhb&sD4A3zE`yR= zS~o2q>H=bNAk2#S#aXtvv2L6UL7Y)euW|p;0({A=DqW$W=36o6OK9ACj$JIq5~H4#kp|9NHwdxeu@B?`GsR=G3I$u; z{V(FpU-#Q4mgPErWboAhsaBAc1Wn$lp{em4>sWtmxr_?Y_jKPS;hh{v$0;?KO2WDe zR2)`M7K3ZUyi6}yda`up8O-wvr8;4k{OuL~LR!|-Wf~#m1^|4rqa)R2P&h(d{M0J; zx$`I&I5wsvfo&6Sw23}e4RBY#J%Vp>FVSkka3|pdOQ})M+k!kc*a*E+dJg(Aef`CG9HA=m)ZHKAMvqOK&wpK#o;;Ly|Rc6=Q;T3kmP*3O1Xs3Ea` zM}pSL7^vVyTl6_(m$5Zec2|tP&ZyKRLR5W1a+!qz$fV0zlA!NfUnfy`52kCn-v>6`jSaQ{nzgu1&#A(%?P?w z&C84CVqH*JQop)l!$9_!nvNfS8gO*vDEr9*_b$Huw`4@iU7d5MVsVehJps|MLVb%4 z1AA8GfD&UuK>C%T-;M5g-`qt|O;+YDbkZwF@arLLEagGh=9s%y#0wqMDHJ|e7E6vv zG``gwTbL@%n;u8EZT`eu>y`pmI(jOYlR6We(K>|^;jkvfrifofHoCK0U1Mpyw7LxF%Bn?{5BMBylLoBMz|Ssd zRG)+8kHD+Ww+LoO*}vSPoL>99J~N6QiD%7)Lmm9EkNJV5QE^mOMNm-p;rS6COfX#c zocJYSzK)>>Wst!24^Nk-e?dErA3#k(=9l86aGfpz9FE>;(oT(M z;?x*}SZ;krCktDP#5Qe01V8r6Wt30A@0cd>KbRd677%3(2#kmPMC3O;8BpAP{ug6@ zqb#dOJT{5L+(Bas%pxScF(5E{;3e+1Dx_M+X=@Z$!IEYww6x=K_{_Yl35cB)hSalW ziTrtU$Ct0TMI|B{Wk0~{Vz&FDnRf4nl-Q=M2YF|G->+k!w4dTbp*?!hBNK&5sw>Hv z4S4PxJsk1U^dY?VOnESBz!itvWnk*fPnd6!hCM;&3F@IQ{S@Es_moJH|jHRa+Z`E zG5hKvAjUSjhbr=t(M~*4>@Y+dvIpUsz3MNn@>c@(JI3q4&=%`vnzg+KmWHXvpqsL%Vo3r+f%>+K?91+D@9-5%vUS5H#MY7mj3@86B~(f`~>V7m}*N!4TsSBz9j@_(EGHU$+V; z8NKA|CGZIVSuUxlhELY90rU9!ao*)8D|`4P^n(if)Lu@PAfXof;!0KRea=*a2> zrr0`J=8K#oM+LJB-1~WWSc;?(%<%FjZ^=;5GT2wY9xiZJM2wKRf*V)*Zy8}-;72Vmv7oGsa= z_H}f(p-nLyVH+24ok~7ajpW2olIS&7&~PPtZojF;c@5@{Ym79@w^=gyQc)m~=S05n ztnt}B(16AHfW+g4K2^Wg>6pH%viacwQz3=R%Yyd>y5;NHkDogp*>LQ*I9Ro&^h^MYzjOSaW$c1hBsa_*e6maO8C4Dj3CgbUx z@`&;*htf68jm$eC%D#^ziRYKR+iKzVbD0~1o;zQKhc0Uo27PKaEm=2H#7w+$$H3_1 z;9#-G&oe>nDPW%P7C$^cEeN?b$9V11d6t( z1F1qa*WuO!XFF8+ENo@Uo5xd9!S#w!1rDwCbtxQm5um?6j1Vx#T# z4O8ivRKp>AHOUQJ6I`CALg97_VFVLH;%P_oSdoo+hohi) zr(J4PZ$yL*3X@Aq!Ndd*uK4ehR2VRU2+K=jVwTT+`L4sh{3O47e1}70r$yl0z9;o= zm+^Hoing?vYO4tY)eqElmxT zAo9pM)9VN`fUU>JrTT$laHDpq8e+J0?1F;kCyx;4;SPGg!n6|7sD+W{@=Az+z0=^VD!58Tr%^X%a#qkkItS0O&23r_-WPy{$%%^ zD93F`L1OrmR!HF37L(Bzd7RbK*l!56=XGO-hY8;Q1_tX{&*$S3C5jF}-V&aKwth1l zu0;d~KSsntBh8zyn~J4+5!q^C3{W{>Lu6++MWiWG3r|FjV?A(tef=b?hS=9at)*Uu zJu?i#=+%YM{I&3cs^riZgpzStwZPqtdWkcX!_9n~tII6Ro!Pr32qReHY;SI@cYQXO zY}V zb~Wdk^vRJo_LM7q4SN7y#oTJyXRfid&@30(IqEdM=_FNHSX>Iqq`Noc@b_jGxfY^3 zIbKx>uRI(PxK{50>obPq%NVKX0d1JxtCKx7X;g!DD@Xl| z?Z`4098T3;7<)|1D=1?dl7*z{a6V32(3nVYN2j3$s!l|76~KUkagy}HUWP8m_Rhj$ z5PFA%K=bZGuV+z0#(C3?vl^t&&uiKlXjrcvz8vsY?&-s-KE*gR%@`QvqhUEWclW>` zoO|4h-Qy!nHJ{LbalS_;V!Y6vX)0|#n@xQ^;?gPyX!qVcq5&N7^OnBRSMQG>giw?n zP8`AHJEe~7;VVM@@Rux86JYkR2GX3DbOoaWzj@DGba{E&?LA@A@B`|o-i3TOC$Zm~ z{QJ*ME*FXS_Tuh#$ES{(xEVBXv{9iGC@5}%(K}29J-$im^S9GkU~PsnJG#}pJkHuS za8+kO3s|U*J`oXWtgRj0;9LA35}#GeUrR}YMV}r&?u%+_y9+WrSTrSCMtciQ7Tj1_ zpfBnJ;u@!Td~)Kl++Va+f$d(Ul{NM@`>n8(;Cf9(E9!c_O+;jXGG5?i00eDh-}Cvw z&h&zjzqd8`4k1o0$rm@Mj2$B7+e?Mi|A9+jdu2zu&UK-h?Ngrlic_5l^&%Ts<-nF4 zlcLIGeM%uO1UojYZ0cqd{MbT@$^AeJI9AdK-epZk$o`h;H8-i7?z_DiV6UKK-RU)5 zM~O_k1<8dN-EFYb0m;%`ZaDEZDwv$r!+{?IIFsWS9q7TfuN;Er;=-XMB$&W+VR{sdo9i@>r$^V65uR-}zQ=t+sCZ)KX)FL#Kgr!x+ z`w*g_o1g2Np|nXxvQle7dAZdh*(N8PJZoO6baqH?Os1|-a{F+>gyRy^`|87L%xnuihcx);7^2x)pIsefuA=}Kz+A&=zo)QeM|K5W`*{s2VXCttinBC9hIJwd%%ti2`%O1-8#faIU)Hq+QYj-tWxuwxtPxP_; zzDh$$w=E>}sWV`VMB)H_=j(D!7(R+vTug(7Xij`6%r`YWG`R2wJ2vRuStS)uXFYK2 zp%vx(9@kb0jrLP1m>Cz?t*Azn`AI93in~_@$@`!hAZ^&~vjAD=5Tb7&$8;hc75ITI zTwh5N%*_?6Oo^S$c&z+jtZF|rNRn0^hczO%K!^p~HZbWRmW8RnKT7}|Wm6_ZUBNhD zaTKQs{Cp%k?OvuWzAbAwf4rFdW_ZK8H7j+hHe_f9e48Fle3j}7%(Yn;(oOxX;*k_v z_+1tso|eX_owkN5!(lx4aSF|$jiKy?mY^uGke2sQr&QF-VS4t8jgy-J zOdF6;QGKj^?qiJ;eK)>FKWm57g}|Iogta?F5d5mfC)aXnecA=K&Esydr7Dn*(}9iw z|3^dFou+*4oiti~wf%c=E{_x@*4d|cx>%|ZuFcE#vgxFy`{F?*SUp+U!H%3_j>U)w z+2#3pckx@$VSiHePo=t22K&&}f?oj;NJW{-(o+b^nP()PFzP4ie0!}~ErDa$Kx0i8i zYhHf^^O#HvbORbgehlAKwHC8ox?tDECN0H%M_KJSx@>9pt7ibiK_RM1k#WPD_%@ypAmmWdR3~rB+N$08kn=M|p zY&AmN9>wFwBMRX{_zUTvteWaPD?q`ub!}fH!zXGVt7reQ_$J)hdzT03xdl$$HwtUw z>szE(2f7KJIi8{kC(QBp(IM~+kNfo;X-7X6I z5?1vtW{Nini_Kfz`e1NZ>?uG?chL66Qhi4F>lGeaxoKqrQ^0O05hG1`wO2(*+*DEY zy>KODmc)9=)y-haaE`F5erNT+#O@qrL8m`G5{{mPHH~gxN2;q->+PXJyF?i<*a99Q zJm_CFQ(MoAemMQQyqN{49QASJG8EZ7-V_0ZWm%GGdEp+g?YZ93v|Mq#hLLxoT&K<1 z{}i24e^mb4pCBoP>#p1UTdn#p$m>+<#lq@D7O!v>*6ppK^&VN`7vRr;^#8PPbzk-T zEhg3d2!K{%#_975=5h=v&{>{p%x(kz(i@;DfeoE3>>jiYs3EOv{iz~lqcyU$Wk9sUb4`Cn6g7KSJ?f zqiOsf7Zg0+<w^ErGAf@8e+g<^b=kp z=bPd&4Q4`JV|Wp$ZE#q(ycnKHk;x%nD?M=pxb>vgxvO>*!_FyjYmw07*T@~QeUB(o zkf{_R&OH<7XEbuP&MTP>Res8wIA2VAW;4bHQLJW}b&FE8Gg^+_bLUD6>F*ND9jM4F z*x#wD=xZY3_{R!@+iVk1%1_!9a7(9L*aZcX&gM)vo!mruB+7 z?_e;5USehu;YBfwp{0T()C0Bze1|%#;}77Ku~RJPhwT&4r%TCfGosq{&gf@^+%zs3 z+z@2x(di4@%Fu^OQ6fkpS|$bfT-T@`ZuBV{_G-Ki4mO17=N?q!x-YtZO zB}&h24*?s&qgpijDxTW1!C_N~pBPlQpF$p7bZ8Ezh2TdFvcepSjH^@V0=+oVr90SShKRFhnZ1i1jw9c?@PuRK zh%qDkjHD;%?T#I&2u(KMQDL((K&p5^;C9RYEbsoJq{H=uilQT($4XU_Gm=z%`8p@3USuw>lKR)|~LPeNANZCG;AIwta{n%LUTN z!dR#cmvmq~L4y`8;wRfRVvqYc<|KNKX6vY6#rIwq;!ovNbo53@eMGkC)97|Pb;GIl zsr3X{`t~`}c+@L_{_snkzkqqy`&bWJ)U$p>2Kz7;#gX;SlIH5wM87ph8UTWCn}KVO zHh{&_v?s6aCKm|HNx(lzr47|$#QDd)nZnd)=u=iHMTRL9sH)wn^Ra&pQ+A8G*r)Z( z2Ry}+a$oPYuhByc(q!rh(4~c@vy5AxTIafb?9-U)r8!DwjZv}hdJ)fJTZeFz4#$$( za-c66fCw@XnXn%adDK_TAHM;LdN{CrohNfh%|l~+nXZh33yC=ieXEYd0dQ@A zs}r{n2kgPsXn!a&rRYMQ;K0A!jcKw#w@WD z?J!#gGyff0hsgIp-7Uk}PD(AYRBd@&T~OisS7=?o<=fw2UAkI&i7x)196-I~`Iezmn#hTLX&&J5D8gQoRysV~e!4GAL1}u);DiRS z7Xgb{JDfh82%^^F`+1Cq8CO+ldLpjyrECy+H^-)L#^Uq+ov{9B2Xy}9jWGFUdZK}Z ztM?SG8X~mxLN=uwdJMYkmJHqeHl)fMJCU~}sCE2P!}(?_yZa9G^G#Zi!4iOQPb~I@ zDtD+RxMX}nIC|aR$hYY=@N?c2O7Dr}go(@QWw|D+zF0EOa&l16_e>CIFgZj9bo?@A zlmXY#7HqQ-#r)EiPK{PUb+jR`*AVcm)zvUPrkAo@AUCw_)Qs{tPy4;#5qMAsCH|98 z7xe#&PR!$wACFuaC8v*T;;yIkyPqJCd``?qzpj|nJR7a-y3VC>m zZhNOSin7CC7)#oQAc%xlAh<7JRlC=G4+#BUn=2EiRSc)NR&V5@8cI3C9&`(=hE) zA6G>6;72`yuh9zw11mqgYyb{gStKHSK-*8~3M7@WzFv<|0D4D;r0SNWa!*;?)!Uq0 zm6&5wx|+so&Ebf~xJ2B0_XMK6;>AT5N^P@EOpY)mCNcgsjXaNXPCxbE>vnDKlwOxg zi7Jc z!>NYj27`U)o_Wk*=_<Ep8mjG2}aqU(GlpayBATU0{R(^R8@{SJ#>!G%`l-P zoy}v(;$w=x>JgKh4yt64K!%k~r#k})n1~4i{W@K`|ArR6lgj%a>3KE&vz`~>*%alE z7T}+>y}__RZSMlDs?J_Cq3tq#5KgVi`H^H3tBpM02|Cjq*zDm97KO^Be^1&=XC}bl ztTijMe(?<~z&N4aT;fZCbMz5piUrXMK`j`SueKev=V40 zA`;_g$e@bvL7tiE)hiFLZ;+s9*55)orP;6u#SIOoH0YhO-;J7{#vHS33K@#oU&g$6 zmV2wPxGg!>$gH$hO0QU9)}*EF7AwAy%%rR+(hE-!K&<1#lcSzsSY95x<#S75du4W? zrrzlmr-z(7@N8jyr~ja%s0gPKHOQ8`%aIr0B=1a-^tDcAoWq~mtk1Fa+h#23kOP4K)M*^hixd6NA1Na30-y2U%b%B?2^@_p*34458eDu&<=86M%E zlfT7UupU)i z^_x*s$2}W4u(wQQTlf8k3=+0Y!r2wYL+4X=8c$!HD*d$x1+6ZzRDvwkJDlfcStLxy z!pfLiTs}S$g~s;XY3H*TvYm)-_flNq&ZW#+kKYWCD~&f8_F9Cyhs$2QNj84SsQ47w3R;g1<}kHBe2SPH}g@ zL>tdz-g4f>Z^BJZFTyrud2xZfi^W8Gn$#6CNJx@&mdrJ&SXTNZFmJ{^ItrX(ZAR+Y z(uNzr2l}LaGo<7!ruqeA=)+s8?v^S^+Gdh-3g=_8!;Ph_OSxHE`90S6+7{NQ^LF1H zrq@rcqnK6ra*M_a7hT?^A~@3!7$SmVy6ev7C+}ybo{yhVc&N$Zm|h*@GPmHg0<`pQ zYNN!kg0uP@HV72vB{Po7f{l>u(#Vh8H`iN>IOId*)PWwR0mH&?F%eu6A0jBsDo%@= zS(1NnrCoHL)&cuVhwzWu%;M_-=g#0=jRNWA$sdF}?CyLG`9;g_=g=i)q=(Rlk~@9G zs9VXI)X$%UBd?Ngz9s%E{fW1}gjIN}L&260Putj(o+b?rWQx{_yfek zFhY~}iiHM&6Ir_1|D&7gS3aWWK}R5>1oGWJ{m%ryr(5#|Fc9$k5kzO>Li{nnHxM6=>*L8+sg2r6V<|HHa4LylSta-oVK*&AW<1pC86N(*nG+PL?>7KVP zdvSOx8A?g4su?1jmv3~|hV|ke6`#9GY^31#SX_e7JSgepD-p_laT6ual=iSEqGkGP z7ekf79D#v&G9aPK=8(ukfdEYKM)%b~9yeqwA|a^WvoyY=%!@p!sH8D>wZ39?Cl+SC zk8UciV~`H)Y^F+M`(@T`*vW(gm`Rxe{dQKgEl1V6Nkrc9Ra{U!Hh!i_;!mHxeGUpP0=7S>#KvkPeJ#W@gqkSU;Hyko=w`Yj zxgnPRrBc6;NVs!ptoALKt7D1~g0;TwrI&eGbrHu#mqhE?8*|v4cYT|O(_=Ak!qBHd z0P+R*ISgp{^2vPO>Jdmgmb=F0ixPC2Z(>3fzo@-FO!TM6Z=~_K0)_URL-Vl3dF{!M zI8k!3rM#2*LAi6GR_d&_fwt~4ib0m93!HEjop{#A*s@rH8c^>7vr_oEgkaL)R8->N#a_8c8?cIp_^(>KKH)!Hy(NqGojOGGK6RJZFR|&yn0^}WeCTW4&SApDwTB>XrL*7pQg&WkG`^52i9~`0 zH|rH}mlCJ(r)||`@t}@J=Ka8G+{ajklc+}m4F}Fd{HBQB^jr{ZQL}I@WsTH}@no z18Diob!i+|Wd>W9-ElS@r=}WLjE`nIXtXbQ6QqkG&<4bInNxWs`?vDkxy2uLgKw7N zmuIPXI{K{5CUk3;E!yLIC?PcHQr2E{)qb^n|JbVyT(@0_9?2QUQhNzIi<{ZZwV0O8T2XR`&P z0f3h@*0NAPpJEO*yin1}?(3EEtK5c1N`z@k%5l>ckmrHd#xy3GQ;T&lUIZFyvh;DY zGA)H~vEnYBI$TGlJg%>lB`r+fG~A+~));*+m57Nr=i|dVGIN=qwN7Vv^phz9ejaA~ z6+3Y!qOYX`Tq((#Y@M{beQ~%;1Q<~M_R>hFs@mQ|^S*~7;G;JTA$KL83*KigaUK!3 zcmzU{03nFDYtELjwzwDC(eNva|tb?+p-eBC4z#4ZehyweRw6Seut_lt_c$h+DPK8-VWISDq_1 z9ZRLXQP=RV(98hMlUnTI1Uk6BeF4m-(i~eMA+R~O?vBzX2pZ2%){*$cskB<#W6+M} zsC!B1L9Q=YoZL=+OP^6X5hImz<7LpT5y^xr=*G&cDaCs1K~a}!5^cJYA%t&^uzxrA zCXM)$ri5twtm8hW?LZr$^S4289@N%jJrqOxfUkC6{Xppm=u*{Q?rV9y?+z0lETHD-%;TII3+#`=}xd)Sr2)(=tK=UOj1-eFffoU6x3D_BV?MyCH-Vu0?~ z@td?fT$PGR#M+7+M^^S>dN%f7%hIJqt7H?8|K$5)r0d{VHd?8ToMUYN`1g`~bb;e- z%(M<~EF?!Fl`R63dK)>+cFPRr+E7>#?9t}lDBiws`mwQUNE#?uATC)vdkgIgggH{| zH09!C8#ZJRc?co{~?|sc==~Et+IVYKY}Fcd{Y6hjzKW%h_z|v=hfZ z9C<>>^YjieiC`Xz`8|cXAi~L@(Hb#F#zm-c44rSiqUBhr!IwK+eXoEki~hECIG@8D ze(T$c{slRD_a+iV|f zZIKci-MQVIh02?2S4F%~N|@aeEs>#*x8i6W#TdJY7US^#l4~(HpQa7v{Fa%dn#>_= z!FdD3Hzt0~=#7|(w;j(JNd+Z`QdBH_sYtw7wm7!l zw|8$cf^2Wf;%8y0k9C@)rP2AD+LrrI@o*2HH$6RwwItRFqe0a zVjY^v@#Q04v@4OEAVy)S-~7N#cflZfU9%EWw$trLG-9;)YT|5h(Di04C*-v8^JAeL{^pVH7|5upvojdvg@e|>8*T|VAazIm@G7uS;8bGr`()3x|m&UWcm zW*EGxw^cS@*>AD0cdW#K+Cj5!AM2ZTqEhVn?#fD73J%7gv!;_Ctqw{gdI<=lfhT2R zHur)aorkl);V%O452_$Zs@v0F6@TbJjs2QZYY$J8d?I0Ul6)pZVY?9ML(t57i+3O*=hLI9_k`3 z?(d)(xk=L9ZB&_6H9SJxLOfNYWKI!?cU+5OU;wAHTDu+%u2#X!>Tt|f!ftHo&@j-X zahm^MAs4*!AAfg)hoeOdo^;%h_M~uWvK`z!Gjk`s-#nCO zZlQcaF>-AHbQYn*i5A7`)TcFzR{h0_^N`UWzxE8;=+B@@hZIT~s`xsR(L(9Sa^td# z758U1|45+HV)%Bc@Q9l9q^=4#3TZ+2Yg}z7%RffdA*kQS#ZPGRdkXePqp#n8x6AVR z%J=DyPM073Pk8(QL{|S0rB@*vDH2CI4{o8k>iPqYvnBM0Z4?OgA{xFrwQ#fg^L~&e za*O_0pmSV{4;*3fC$AyxCIG95|EWyI zd7CQhuPbUEzaCUENKKGmXrGa(B)TF3ny$s8(5{l@r@kudmNLkwTf-8D0`ITP9(pYu zDL9!;75Z2kb&2!ykb+#ek}l@QreM%ia9|<#pgUK&dQc4jA>4%rnZy1B;pvyGS9rbw z9&0s$E6s7ghjYpy{mIAbAexANm$fK2qOxDrD7$$ZQv_WY->A|a{UD1VG+S5=ea4J< zXY+gMJK$s6?6(Hp8VcEvvn8ub9HrAqts)~09u^opdKq9v(zQcKAh^2)5AJRO zg1fsG?(XhRaCdhnI01sY7VhruP^aGBz5DF$({GRdzV(B_7%W&-&sx+o?`z(3PDRYL z$VA{vg5$R!M&lVVm^khM8y;IahJP1uUkrHv@3i#)bQk~isrc`;Yntd(5sgHjJ>Y11 ziv4{hFF1_SxzFi8cHamM(F2jc?rv{TCkA*{x`van2zcp_>LdQ-;;$NwcxXK8)S-0ku zw>=XTwN+Cnaa68M404@*BDJ8bgy9~ES|3gGb7vh(3-BFl@3|5y*kN+bq!{NN|`{2QL_{XmrO}%bCX=QTm0H?By z$(rs)EO~1npNZ22dvL*bblUTPJ7m5oMnJ&gI^iAuufWX+S(rPHy(K|b{J++~1IYl*0^5;&d5p}}4Iro>Xd;qO?rEPI$4{v-}M*0osUKf`vcrj4=^6d=7(uwxAKTmS5HJ6Gzb+;W$L1UA;kNJJ z5@>(=b&>!(rp{zIryIye%(3215VK*2ax)X8koqzNw8( zTh7imQ=I8M^#01#|1=_ zZ_k#u`-p7&>SKw;c6mFBKYxo$D|#s>`$xDq$RGP#nr(4rzeeyNJkb12gbQ}r!X5KA z%4&&ib<`y8a08ogo%pMEU#Po70Wr2tKXu}-j>(?xH}?%S2(lC+7K|6>3gskNRjxXX z{eYJlwH(W_vFY`1KYZwpmfeda))>EiGn+Dl2!!~IpjkyRKlpBvM*U;^dDIEfHe(1i zhoR;20OEbQEkk(F7C9~;kg-Bvjw|vzV#}%!XuEGQBhwj1U*FVIGQ*bgk>K-_iw|=$ z@gX9_mgdOvQZDg%Kx#U8O%m00RFpXKi5x95(BwE+^9+iDA9aK3&oY!K4jJKMf-5Eh z%I;uN8Cd=at%3RQSV{f)5 zPU~Q8?x+k;gMapF&X$b}-wpK6}hYpzzxyJF*Ax``rtBTFq0p&SZSoXL$p>)Ybo2&BI4 zFS_AkguS@-QietOoHFHU^VNn|K(p6XRzkwbMQ^{@c-pJm(e$*+*%pYTl zxl-7`;Fyp<7TOpXb}-oUg%pae7t@eiQ80Yt5^+jdYJH%7 zet}kRSoS9;O=i?;4_hnw7(SvB9H7a}{y{0*Zf6A2sgrxQWK>vIU|7b$Yw@i_;Cb=n zQ8yybzU1BMdVQqd&(zFOCD+e*M6@R)<7LUGltF0_G!Xk-l-Xh~y2VXU%MtoJ<;g8* z5JE2B^uc&FRqXZr`a`ER2CSJoo10=B`0-IZ2Mv!Huc>oeaY;GU7!9Hb2m$I7YEGep z2v&QKR*rbYY6=T&$P@(F_g(&o1ipk6&k2`Qd! zujf?i?EKy)!epfKKne9~N<3mt?-?e2k@v1Q zea%~VH{#=svTuU5cSyYD^Vc?djedDNxZBBWWS7Z|Sq_r9i(ceEdH&vY&&ITT6!f{# z#-AXtK7NpgXVB{x+)ST-)qg1G{@N!0Huu!dBx?a% z1YStp!MU|3=9xOnzY|;>z*5RJ`iba^;o3m}4zCf^%?(x1W2TYyAWo&d0!TV$SVCb% zA|HX8N+Mytv<5Gv{bjM%`9q{9ukp?6PEhAfCYcJ7OqCq6kkPjUJSlPTKO)0l5q^zM zGTk!m<}NkD4xH~~oiwv;2F}fEK(o55sxH2)c+TXbfh+7sPP8>O6Z%LH302Jl<$?Sc zgOR8;v7&<(k+3ME(`LZ7oTG#3b`o*IyZ; zxVs^Bp)Y{ATpGT=&ospWMT-vp<@5q~OZR_Azd~Pj+z&V?{~@5jm5hl0DX;YZLA*_A z38siNXmGA&_Z(p2#AVG5N4Zaw7t%6g{m0t_e-e{8g9B=#;(woqc&1zA$>MDUf$qzc;33bnPTlKjBShOc3x@0G@s86mr;I;-*bT9;wwA4(mZ z3@oHE%QjW)MM@lE40!cw*(DGUiXYNTOC3u+sFWNbag4k6@O3~8MlP0q{zj}gxM+P) zwfFB$%W!Y|C4xoXQy2GrxyVH?1)oEvn6@F|4w~ZVH!Q`_>%CTI%Pa< z0&(8cJw3!sTA#rEmj+Kt6xk=)yL)F|;~G=Iekn%ymLr!i&4nUV2$^tPpnNO9bsTN7 zqT{*{Q)>3?A4P$6uj4V(Y(wlMx~Q!dqnh3l%4Kl ztbCm!h)&2W?d+`&qE_@rj^~ogMqJ`P7O#P{`<->rXlL|e+paelok!Kv6UB8NYUpOO zl8`#o1sZQF1VgGhbr5wn=eDvF8J`s5kxBaF4-b?`p5Dd&Mc5kc%J=7we_ZX`IL+Ac znGi@FOc9MWiRX7Azh#^~Zp;-PKdGv1_6ng z1kEO_~dTpuI~$Q>~4(Ax1WDIS@RTk~;_P z!D&(DIgz?f;Yay9tOeu)2SUjx6HTR-w9%eA0!_MH@6nYb;rev`bg9TdWXQUe zdx~;WS-MM}tjUotyum}*@DML~?`C&WE8I$hODSnIJCDO7@$SpUx97Q*{sB>~7Al}S zaed~)`GJbkzexU@#>HSsra{xGyM%r-wx6V1&Xn-zZ)oRYkfNO%8Dn)PeJuxg;DnO0 zXY!D`m<(>50rS_x8HKhDqY&1|6oSr>go^`kw}SUHw+z&YP8zkVSdSMq+z-NE4s^1o z+$0%XILCLcGmco@&3KK`a|AZR0XHz2KInQ&YqE~K!5ZNRouha12(A1v-xXLtJ?Zv= z6aoec#^v_7i{xXXw+}?bw(*Lw4vB@I(iQYz? zi#FK({pQ6p8#{*YV#3cY>1-iYHd}$+HJuqNc3&bgzxTSI zHdA4LZJch^E}ynBwgCEIcFke@`d-IMo0XHf&&1ni?~mr_Yw%8?r>m{TwyJsDBUp-M$w|gDwELSPUD$2? zii=Wr`rH}uPRR~Vjy%bf$iBiW-V(*kz1)Abb&fRoT*ha`x^Y)N8R`PtqdRe$%^m4X zd0qfLwJ2}eOZ)tbUTnJ8eb^jF3LF)@6w3mhdOpmpV<~2@?`+UK_>oofTnVOVbShYN zU%`ELqzTe-1Wf*+q6M80GEDp&D5eJC&1Q)@pHV5W3N*LUDP(`%;cDU$PG0@4;CVWb z-&7>oy#;@$5gTEAt>1DHI9k6nrg1vFg9S`9x~2tGC64;#N=?q=5STwj1{j)5{yaL$ z37iYxd!Es|0vRI;w^^G`mFEI|D(b4lW(O7?$2B9hBA^4PjNHbeX#@{7n{wS-(N3>N zhdc$%MM72Tj$bG9*ts`!TFC9CWPH6j+G7v_9u*;pkMps@mDXaD~Bmhox_D4es3JV|0ZFM6uNi^BYq~-924U{F2RnXTE?Id*KU_bCc z9sQeZ3?77ipd-dxEUHHsRntVAPDYB!=)xehv2A_vKx5OGYuMgpA`@*_e$gq1Fm{V0 zL37p0O@$PvS>?C)r32+J8)J{>zBl3tIk7L%xfg9qyya`rbmojAreApbm(4?Aq8jrg zK?=880)d<9h*sSgSm|b`7SqMPq=|O|ET$uLLfHd`$uvaiCszkz^L2PqE~kT4#u6K5 z_cGZ-^^seOz%hG$)c^;TX6VPngI(<#fEcOv&7rhX`U z&h2@z5j59@R}X({f!m^i1)!MaG70%NE0ma6;F(itR9t2jXR4mH>9*T3r!~^KA@H~g zpBv}9QLj;3Jj^*or(w%c;y#xb5pD+i*jLOqA$uY0m#$r7%MLq z9P@$u^%%0?V%`|NT~U6EfO_al!RD)l*(-M2y3w`VnW>eQsRPwnjf{nMfnVL(aOUya zBC2l>#XhE~%ZA6(3C;Ra>9hfailw*T!VWvsSS_7CWNaqqg;TOrk3HqsDA$%O3C!CA zl!1G1m_j~GyK`2Cnv$m>hS0-=XUQ~u{DvxzpP6_^+~ z%l{qumtNltdQOSc!JMF7CeuE5C6dv7!o z>&VHR|HOwtd*9i^c_Yyi)CRhdozva#w5D5KUgh3$?7b_t@!V>iiQ7rFX4);|fO6S} z-`y=4OA1~W*D~#hVmjk;pj5JT4KswL(!IIkbvPoX?PrPaPeCyj%`lkQCyJN8^%rw2m61kVUN5^2v8jLLdXiynXI;4M%&4$?xF!vMg4G7Pb>HT3k=vl94@?;*4b1Z6n17ua+WfJQD%=wruyP~as7Labfof!T6~*~6u?*@JdhY|M_|s-1j0l{vhH@9 z4Ly($Qq#%ymX+I)02^Ln^}}OqlDXoflX>Kn&zfXNvK`>*lbH5fcJA;C7vwK^O4|UV zX`l;BS27x2I%|pfOU+Sd5fUVC3Uk|u5U()WIwEtgbWZbEJrHwPY=>{3K_Sjgtj}a^ z%plI)3#5h%$q&{1{2VbR{SWX^Y*l(9poB4tpg)jlh3_L^b2qNFN04CMAwaM|M&vf0 zkcNpBcWT2}t_H&D+I{CE9@+q(JC0&{oEv*TJnw32z+3u)lUd@9@s1i{`?eQ%`ZZry zktS3}7w`RqId3)gH}zumg=bl)e!rd%+&bGTDq8s%)_7VDZ)*k(4^yUkGVkYK(6@q6^d>uMhF)g4IFGF(7|MWR-ag@DC8jX=b zY|mopa)U9pseRI}e=ueAoPX65NTUD{YW2`Z>*jJQcFxk!2DyFMaHYBT5F^5oXdJ*j z(JniCXH)0E?ez#r#t%MuP8uot`OseOslw0L$G{!L!JI;+qs1ArxS z4b@Nqp^5A|eztPB+P9;=ujlBR4lY&w^;nUy^e@b5wkAO8bx}|8pM0!L9PMN$Snn2E zxjHl2Qw_9d(wl=vZ2oYK7$?Z0vvjT4XrxO!9${da*F$ToAgT6+^mtmwX3aC3X;RA! zOnhHM6D1f?3J?2QeD5G8*QH-xc~?|*i{8fMbiGa7e*1@yn!N$#O)h@v&)bH!cs;mrB>`lqyF+`>Cx=1Bq}8foxnd!*(c^kxvgdm2v)iDt*&%z^Va$`J5M7B%cM=3IqpWf*_InU*x>-lF;2e9-ZZRYO>HDmnPWp>) zy@LivGNRT*{3^|o{h!#W)YDy>7YGCBUv|&Um1^QNI5&Jcd!CFN=3k3+Pdj&Mn_ZZY zJ4XEXW2$j()>xCBaeUg&Es3b)?inlpe3R`;TKxWd-x;4sBWnPLKla3EgY z8?hWI^E)v9sg6Bz|7u*SMV8=qZ@;}19*gl*Q5}hCU3ud}cU1Rw6jnCkh_th#3L@1Z%6&y?Jmcv5Pa6e^q#czR^OK;Lmcc1r< zKquj+NchPPa|2oeMni5 z-u+D|kWH}?#JX!UoilOoe+r%yfwc3&Cj8rH!5Vj{-sjD%){1jbsE7_W?x^hifXLo< zl+lCtRB$8D`lzWE&%KJ3*Vip$RLf_7DCfP#rncXbRjR<`sN+@g_fX_?XOL{6;E6kHwS+@+*!)^-UHjs z-=L1k$em9aX8vq<>NDd}N0+Si7B$9pOzt%aTmd0`lgzX2?G;_0*X)hH=d4Gaq{W_w z*acLB)y(Y$j^iQ-B^^w%bSrc)tugH!l0vS6yARYU(g0)s4QG=~r!f88_STh644%$W zF(BO`b3TzV^bMS~za~NWH`~rt4nVgJLZ|CQV(>V2al;fLg=`b`KRg=XpAKn6DK0V8 zH$KTD>bO~XOx{M&?)@u3qEza#75sN>$PD*isUeAdTRba1M=~LTwbJt)2MH6dCH38_ zKhs;qNZ>q}TH>Z%F5mu7jHv#VikR$2iMsy`&~b+GvQDD)0_7L_E)+A>l05s=PfQ4$+izKI~!$% z>Jx|YJ%FQ#pPKIlA>pJT{uoV{jH!t?qy9&=%mA3bCTy|jBx7_L_;)jy${`dQg=l*> zq91n0v7pp&&$SQ<#L$-pa^==p5BACnyss}{wx^hmWop7{+k*=D*kL4B{`XwTE`aub z!Icuq3$_zUGp}%@R2-#$;smE7nk?)6)kq;eP&0|R6Yu`-2>Q@fwHRfara^_cN zxDHrf<4Pp%@uYJNp7|pR%@c zPb7T~4PxP26)A-w%^R2rQtM2=5aH&tyt8E~(2u=2K-n;KJL?eNgJ%jl*Zd2jx}SJG zmUJ~*n5I(ptW8l7K5*R1Mr@bNQ6y)N5TA!O+k7wHa^f-xc8(0M#IGgrrf7Ej zXugP?JcWL%jsL0JQ$i)J+#HMgFk;qgS-*T^W8&IJ_tTN&G98zpEDWLW`j~8rK0>DNFSx;?l~m^sCH?&jkb6<77N`6@u~-?HaWNretn+Y+3^= zKu^6LWtJ)*6}56cmRQ*W(M!RFSe@_(NS150a*;dU-A_-(~T3$`K|7&#xQ2f^{zMO%o zq40$RpR#auEU7#?f?yZ$(l;?T#PUX|RhB9dQ1IwJ9rqY=)c@2+wHi0fgnT=wZPM}D zjhC%(@6}X)|{W~If(C}u4y z9^X=j*s>n%#J!m-ICFKo7vDxCdZkgU(9cb67-?mQo`!{!(}$LDVkri2L#Hbgb>Kh; z%sgc<&EMj+Io$HxK@&{e=Cu}BuIBdEQ#E`%h<_**5hC{h0n5 zo$BO3c>nS|?*;I{vlN}VF7uc?Y5 zgR3p5LDi~o=_#Yx%`YR2+?5gYg$csePF=n`$$zZL-|p5?{sRU0_vNE}q-DYFL|9?-B3KqD!+d|8M+01D|cotjrm05tQ2Y_FoxD?OsiowfOp&q-qm? z!0`P^)YO}9)>Ko?l;9PYVHd!qiSWJW!sv}>8z_R9kENvf{-q@Wo##Dil3mzt%;VUc&Qpg4(lg2Zq^Ilv&7C=50c)~6Fykb}j z*z_DC_#fNuleJ|P-=;d8HwnfPU!q%v!W)VYUY)k+K!o10JnCIxsipkAGpnr2t)dEG zaU6>~Y(0qV7Ix(AOWC%=Abqa#k)?`2W?#D4{?NiF{Zz2!;|M@awrxPZP|!M}qY`$n zRFwuRuY|Xy+F{e^i{1XN2unG8_3$W-adT{$5(AGK$YDPlLU}$KzTllZ)kHa(qjA@k zBe2OcL`lgv;!cjcNb*<9q-Rpm>O8MtZLkx zd~SZ5O2O4C>ApYsC#*~vY0tYLk8ePOzNt8q#+M@~IqT6m)$B|Xri2WWPL)<;?jcB0 zgXhSa;SIe2hcF?nJ}jj_xy*Vv9;00R{m`jXvNn4grcGr_M@Px`KBTF%xgfJ#Vz=Gs6wtK<|9tvk? z;WNZ&$~|CDW4>XB!GFQDZS7slQOiD%Qzn!CNx}3sNpb%u%HYWOX{=3PC@k;TqQ6nZs{S=NA;oR+*oFY?OGY7@o!Sp0-_;XgsSJoEI9)qGzv@kY)2Ufu?5iG^8>qK_=T>o3uokE&(B2jw=+Ie3c$2D5q$gGr= zqnSj5oLK#dC=<60_n+*y4TW)b!NnRReZ7n3nwT;dtpRKJA-_FTssdiFi7|%d*^)Q) zg>0G;Kkteojee4}?)Vb!*_;^WD%|UyG;opi0H5pKWedx@2;R)sB3lp7l194O)1)qg z1^@6wKDK0ogh`aR*BtB|lotf+cU&i(#u#gU8%}5syCG*<=X%T9p=9k9iP{4PA_Y-b zB->c@u~Td&fsjzwFJFK^dF0L?XJY@{r5xceG@6D_DyUWw3cd`G56AV=q-cEh9MSmX zu)eoY@y>8hVXE_y@z<}CMi|~Yn=fs`-&-)Xc<@;LG>XcVYeyskjpH@ znpy=fxyVoR*^o)jW7v0MZ!YEWq1@uCwN`~R(>1o(V?M!z{}0@pTP2{?;6ew|w6n27Hlz8diT3U6y!AtHzH8iS6`0O;x$% zZ5_8vvYPCtn&U5Fst4kzJlDSXKz#y?pndGD*-Tl@-zb%O<=;pk04va$G&Lf;kLSqP zmNG{XB2$E|SM`c!4H|$f7A@RP%*F42oYme_cSqjYtkbq`SIuLU3AhL8DfZZ6i7ZY?Q<#{RsT#RP#)d`-fX&adiHS4S)Y;29`Y-AgBFg#eM|ji z`IX%_DtBWDz&n&{41N3zZgvTIIF@i&-6UexZ9^_B)l%mbKw9l1H?{kg>8};i-3C`0 zlCK}uja)8~VJ4S#{EE$ZD43uR`X2!GydDjzKz?J}IvJn7yB6)U`jpvD0aY~At?SaP z<%f)QuNX>-D9`eg#j;YsK)C?bVob9*0)Lg+#B8nlNTanxaM8`BY)d`aF6RqU^wvSl zI90P191;67_FLJJTd7Yf-TNbmZ(t(@-yGP1>bRO;x>1P?{6*wreb4)L5&|os4L$ob zJd1@R>C|B$50CvJP*7wlVeC8M?IYb=wvQ+6&M0{VwC+XA7qTnqlxJ^p;eNK5#J@gY zh|_pWs;j%!YAC>)bIMEILL#-^m$Nvn@JW{JD)zgHJj}8+(@3qZ#|lr)$`}sM&GRy)Zn^qprEY>>0_Fb&noyC&rk&1!-8BC zZF+H(fjXRzJ?b;yVgR+h?oaZcbxYR!>Ms#93ban>=x|}*RKEMKWnCaC)b{9?`rPnO zzScD;O>`ctJ5E}gn%HldZw;l!7Hl2m$z-CpO*d4%XMCg_XtiHrOVSK{o~`|0XkJd( zwvAJoXXPA8a`*Pr3T2i+c5g7UJl{dhYWWD&B9%ow;$nE;rI5(Yo~=iL zsT~SOwu~SHKRwBctz0Et7OMhzmOf{x9`#eFV$tVM1nmc7yLd=#zt7 z7zNyc8&g3qD39tAo#$uY63)IjV!A+nh&v$WxN^DQO>dwCX4+m~CKRBWK2%r6%?#{) zJBzpK9WHvOQI)XDzL&f{Jm38ShD3gz8*7vvfbfY`H`&-Ew{|EfSBw|hp}!9n%3%?-`IQ9L+9 zfpfqr$H`|3xi%4P`XoWn{OX?UC;qvK4q=@LW@uYSg2XI|wM0>a4}Ro?^vg#RJ#|IC z^Urd^M5sBi-=xiNR+6E#rIU~c2OVf`~SYqerA+9q+LUj3Ls zN{>>AJzr88@E`{4{~_dcUVy!pf)bc-=V21m%IpVrrWZ_*yXRs@4~!Qs!Kqb02POP0 zkJM128FNx}L(U>|N7wT5ia1-b(%^AMa8v^ATm1|;_7-DlJco>N;z^+NbeS^{4B};w z$QTB+R69|Mjz&@U2XMM6r)Qy(%GJ5|eOQoN9BM<&;4&kUme#bF)Ji6OALG|15~nRw z98s6OC8w}sxP%!Y_Qqa*psI!;FZB};lMNQ1YbVs3&>XP4i5#=KLUJw8-zvm>ZLlWZ znRGSnX>H-~khxnO>^bqqZnMD+=nWP*FcdJ@7aA`Blw9VpB`Uxve!J+5yh;10xLayv zlynaSnsMk)g>b=_!e-qC)~21)@fqTaTR`7nz`R41t)J>1ink*;E_#)6dp@|^F;HU^ z#o=IF?hFk}KP4os4OuUdcU7p*PFHRSd{P1iFCy^v7N~9A7B<WQ#bKPi%t~l zVJN{jDu%<|^jZ58_*Qwd1*nnn=mZdkU?Lo{dm*dPB!7Qm4!O**u{vvy&`FsEW)+Iu zeEpiaQ1GkPF(UmDTF{LsBl;|2=hGlovc(PVL+NaLhEqD7jDA&ZDr(zWt z#IwlVU2z_GEV+DOdDS9rI2r%tpnEbw#XX;UQ=Cq`EcqN9)wi+Il~Ug2JsKw9)61`S z$tF+|q5yt8IN(khTDLI^TV#(eGwEh>84_BM28!H}WS8`)wIavAmNO}Y+Up;>MPWwg zZ?w@xaV!XCWqyAJ=xJZ<8U4~kU2lM9qOgEpKH>J=lh?ij}1)!!o8(ja=>+q#XXh6i&WE#~+HHJ^illQ`Ks@0e;%VUVx2 z{sC>Z*S1~LejcAGA03@*Jzx2&~nZ3rB$>3E%2* zJG&E;`--&}XL#Z;#l9E6HUt+0f5F^5C@`4Ec^^FNMYsGg|+28%;dYz>13GqR#sX@d>A);{ut7c(_Wkqtel*$M?( z%21oW3zj1%@hwLwPlZ}MhY~5#e>;k&a_4i2B9RaZJGfE1`y#P9&J4R4UXq?b{sU71 z<^8txT{mtM>tQskp1#+ClXPbyJvJS`I^_TH+yD4V@$fDF3e)IcjtJQQxWK=iLV*;= z^KY*=7^latEwF^y`v;^uT6I)Z)L8qsiYb$Qc&H|(;Um*>Bcto22W}niHQ?sesoe50 zW)NqNs6yhCqsW5Dw9o?3mvZt(p0T(5Lf=X=Q7lcY=I5~YZB>c=W*qbi<$N5^sEFUB zhF(r*7O-3*H2kgZT}bZSX?T~qRmT<9q*zKL(7?ujRlF_X=n|k}`}Pr8R4@&t{mMfs znP*iTcE2}$-wZNf80i%QZLA2AJ+*U~$vVB-zHi42DT-y@A&a^SyV+WRlJL=i?Hm(v zy*-VmgYa3X*j2=|==O@T8CLfkV4FBCrYd9EAY=gHuuc^t=ZieW6ll0j5Du1p=*aePSoOhy>>9@IM2%Wu z9ACLWngZYL2OXOjc0PjNaK$$MR{K(B9OY zCt!G(R;MmHRyOP$N$VW2mNjWpvO;W!3{kqb4mVIEX7a0`Xso_G8 z&{@xB#$~_^Kup{dQPO%xpvmWc(Y{mpp`d!!GXn=_{(1_}V`??<5RO^woH0{cNMGiV zKtoEJ7I5SQBZ{3gb@>Mb<@yme+#LQ|EN+&YzEj=Ek(X z$TotLi99}Hpouo%CITHH_e81x&}tl_?q5j ze~l*}Ax*#EzStCDmCGrT=Ho^@c{g>dF`uTEYJi!2G!~b#NDb$`X&sCEJi2Jl#2iWh ziy#quj=Y`o>HYmtB(b1%Mc+b$nz(b8oC=A2h!lG+f2H>b{!lX~qR2^}eBkQz9wymI zCt&3UA0~?p^)4xE42r#itFwTRlDpY7_~nFHnS8#4z+hvs{q?#36Fp`^Y0YY>o(M`F z+1b9_&I%SZ4)BU&Rdiylws8{T5Q!;L(y3e(rUceYIW?p&7#+tSOKoB}k8 z+I_D!ouBcO9`lE+rkH&%ti=KEa3s|NKeXUT^dhZhk}w3N$~w9z`3|0oQZ@`57v0j5 zq90glkElPw0XZCv-*e;{X^?RG5e-L;C^`6!h2q=rwbrVN@pwZxMlKr zG5AXQLbori4G<+-n^?5Hbs%fdUr0PBUC#G)rlARmHZm&lk808xtA^W}fmV-5Do!+D zUVkBAI$TYcRMDKRpCg}WBg<1MH+sIdMc(<^ppeH*^4VaCif zri{gQOn#E#(Vwj)%IKKkC;15xjb&qcw|l($;>o?^F<}H+OMmq;gGSTD-sNo9%PUl0 zT5iN!N4c@{#IG@SOIkX}Lw9d1<+!mmahcy_oR1-{@&EvB*)v?)uD(8@iM(US-zIgA zNys8<%g~G6AnF;NhAOM(i(pCVYCCOOirzK~tWuS{&~a;i!H$eMRfK&I)ms0wA78Kr~Fi<5|bN zEZ)=dAm3O#HMlY^N7Fat+TxA5Tu>;+8^oJwk&%SFY#;C5Nt%>=wd3ynEs?c!<`RZI zn>q9v|8q99)oyDRHYwkUO8OH91Fx*3`*Y1LVOj6vDy$7}O@O|k5X|R4<^GK?ZUn8M z{jTpDhOFnUAy6`-d6#2WD-A!z-ZCj&vja)O4`XR}kw=_+T*S$37~ZnoErk^z3DtzA znt6Msz?a;*W|$<4T|1g`Xy91S!1y8w5pUyYcbS93f{JRCOc9GoVH`!g5Pl-7cIA0r zuK28-OkLtsct|rL9WZ83hKBAC*wPJc@({y74dz})l>|6ngg0y(a@M!P~!1WBYH z*fri4`^>I5BKOgcBE22xZ8v>GZf*zD%Uf;lUm<<0fdR*NIX}*yQ$YP1>%%9x#Zn>= z$=(q^ye1*jwR8Z<48A77)L6ty+x>uJ2xi-_p3cJ8ww7A}oIdid^7 zd;$+FzC1TS5c0ouH2|d~s&K?w4w+CYwAa&U_#bxs&K{heJ(xo;G^Q*kHDa<}gF`6N zLOkcTG9Q;HNM**YQd@a=Q-Hk({DuLfQr#y#Q-mywKL3ZgcMh*CTK6@pf=b19Dt1z_ zZQFLTVw;szY}>YN+qP{Rz4qDX_T9JdIo%iiJl*5(xiH6^bFDGn@qWKiLFi1@$k5y= z!{UM(@iIFFO|sC|n3JAFbV*qNzO%aUa;Y?nd)5Ula zuBRW2h+kME7VohL_C;UJEIsNqI=xhYj-eNy+YD-M@czvM0^)t61!reOy$O?vmL^+~ z+GQ+I#fr-ORLFMY#XFE&CBSZh9mk4_s`Q|^Lu~JKee?dal?s#t2Jl%3@NByKc4wIn zF&9lbCAsdc+wYbGarRDIZG1-TUSHU$Lk6qr=!2i6#hY^B!7g_$}g<_U_ekrFIzuZ^AiDxrDfn&1)MXbEk3nWxzS3913H1ceNUBfcs)J z%IV-ti*@?CNgq~Kc4M2PQJe` zxy&v#B6HyUGw_vU%pD4XMf?CG@Jf-h9(%V#2^7KjX_jA5fY@x00UGsF=s7>9R!oqN zj!*VG`S?kVA>$rZTb6`h9=#3F7I4=9mv<~*lp^1^(G_66r$&Cu7g+m_sU`x0Ztmagm2{${Pa_-ib= zLvEiwPL^ekSCzXZ)NHOrRw)+;9q5${gmT@iDo^4MS+q{A49zQ`aZU+tG0Fl1%ALPudMUSYBSp zBD~~QxKQ3jSiN+SPAEKd*YNwzt#T34sG7d$!Ihw``G146y?M#`WHLW0t!DZWKBWHg zFO0^IiYHQxn@yL4oObhFmfWfwx*$qmlv7B5Q$`=2 zi5~l$zEH_geviOv5Snoymeqi1lD*oIUE^`I=nS8xy};n?-u(p-;4iUxWw3vgWnvn0 z>xj*z9bq8zus3xfH}-fa^qTT^WM~`7x$wrr=pGZ$eNj_^#x^MDROJGyB%IMAB6yEh z_8OUUI3_cVR1%y@W1eaBZeK>w)C@-Iov{z6d$OqQ`*4LHwlNwExoX*u1x9JGkW*Je8{VCc zkz@2F_UacF?nIUmwj#IQ6L#!lXKSu8+0*KSsX8zr%3>?C>(8HZXjc+Q{AKy<38Sa_ zayoeY2y}0~v8Q&lu2`?p&q{py5@}n5au=P9te}K$l`Po?V_6u}QqtX8x;k=d?sM!y z`Vx2Y+$9Kz-5+| zd+_Z)frD%Wr$?Kb+svoI8w5VR?|biH4dPy-Acx$*9A1(ccfF286JpduQ1UOD*e$@#s_>d(0SHap*1Ff+q@i&=~vdF>FS zrHK2FctU5qFzLymiU1@Qni$!a zryeN1UJuIjNh$Lc*{xjTu|L7U$4En<=x$jTuv^ww4 zw3AI>#@F@Ez1U0=Q_A=G^_3d*EBdC`@-cXSO>l*I_swt9Vfl&}`3Ksrwu8GEq#`3iK$b-->_FW|YPETSmzFR`rKGZj*=Rob$ftE zm-4x-#OUW|yFe2-vbJWslY|u8p#P|1^X=vUR`1hgx1BxFsxe2Jy9JRUhX}prqu!75 z58qjLEF_}dYo4>dx^Wiv{}x{7vE|{&Fj8KSmSH{Us}^H{X)Bp~VMU}%cTpB%m=++R z9|o;~aDHmMnVT8LoI66gV`wmCuU+#iRj7d+jA8WJwAM6SQ95hO&|;g-aQ*yQ^l<$9 zJUy56lOJJo$i%R1m#ycfmVJU1j3~9f48BPQ;a(=_Xy5^RT|V+CO@)N5o;Eg)=z>m* zD@3QP(ZGT@_PHDHNZq-7^$83XABZ#j-3i34A&tw$V*d-?1-!MM{TCPDzeBxZKH*?% zAXtQr(uSogHsQZ&qnYQNX4->~%&wJb{E52`=7URq%>QCf+Dr(I!8x2LK~z+8;Gp?P z)rw_*6UqUo;V5L~xDN>hQ!-QD&oClvyJ0{CMh=me&hKFzoRJe@P9_eeE~L{b)|Hb?EbSANq>SI)Zifc@=qn*am{fv^p?Ci7vbC| zHy0v3n@ffzbYGNJpvfp$Ss7Y43y{3mi{!s!siVc-WXs(9T&T2wPhR{V+E0q_P= z^C;(*KE^93g7FlPT(F&^Eu2@5p9@dyt-CNEUk$z)b>$4P-8ik zE+>Hi2<*j;_i)y&k$uR2pis8xKp=blXOp_b$I!SIhV=p?qOwGb$iI)FIBz3yX*Pnw zZJ8q>`uBFH{@-z8Li=ffl-_QSF=*p|LBB@!QG}Q_{Qts-3ybkxTL1NkTZDhUv0^eJ zOfjb`<(w!}H0#dj@bGYZSS^&5$)uhfcHC1}7$uQnuxr&^!9U35)MtK$HGlA(8H#WU zud0zY%5NjD50_gmcyOZfSGd7KVYhg( zj>*e-XSDbGGD%XEv1?96-vF&(_oYp{MF&207p>4qeN8iYTKr1r;Km~7gH$JQteYHu zE!BnWtAF%vL45|m98Uhgn%LM&r4?GNU$d=(?nxP(DVYsaTfMR0bSIVBHQ8QoPOR@d zOrtY&P;pR!Q_|tRUA^7*|1#2RkfKSl7Vb=|OYGoZx(>e^I>-cVgOfUF3#|g1e|=Sz z8C+$ov@>Cq7SDKjbbXo1_GJk`_&w@^Gtukt$R+~5{V*T5_c(@eEj@Ugptl}qHu;$D zvHw?f9F}JNIf&%0)xeBAZ52e2uHY=k!d2+4+R1UCDLi!69OrAW^}5XI5ag-!(zPXO zP=NwCP&pHZo38lecCdN2H8aj11{t?D7V(O$bdZT>Vut$^+oA02E&kq$q$pN=ZS zHLRARr3p-tbq3NX|9GDq4RC_wb&SsIx;XgE6T=-q(Ze4= z0jMZ@cY^o-Gp1Z#Jn8sy+r4ans=x<>+`^7;Q+>-7uH?N`^ztv z=2Z)>73^o3gf3IWbRoE5TF3S8V0@)Bj&@O={EFZgsM0SnMYja3q8X~#3s6`9-_L?$>3ZKj2JFGOkl>-d$Ya}02==A#` z-2j~U)kJdo>dh4VPGH6&q)HI(QM6YHtraA8zY=sH+{|N~w~icFNqoA821zQBTTvm07%_k?L*Dna^4FIe%sloE%9c6LI%v zg&+3$6<)^xkM{hq~!4#-{@9-Jgjg8UngZ^ zi_MpUi%5Jx`Rs6ko=Q$z_NY8ciaglVu`Z^|>D&NW^w2sSWzwj=1Rcd=4K#p+N`x$u^)ghF>vN;QKeW?hzFdB0w2Oo5J0iQVGOg*`&xMnow!I2v)Dwl}1}@u9TzMVr zUS=e`O*C(il48un+^vGaUA#PzqUxN+v@VY3@?#8p;<2}Keq4V1zgw#|M|Rp+Z$ja_ zf3HU%Cl$`E(+vp#B80q*$?AM3%xQ*njTGv}_r@ejWjP~NpD9-{4*7Ij<1Dy@pCZQMt6>#5Bw3?rZH07#kIJFy;^ooAn0PeS_{G7IZEvtd_jGKNP1qQd6! zD#$y%kMwyMa~5b2c=LnKM@Zh~_p3;#L*|Fhixb7-%ZKdYCwgP;zhz5!ZHShGv`&_6f$6$$#$@syr z=uF>6<4@Ewrd7^V026n!c@@lmw5U`%o0?caW4A~GS)o9(RnKjpg@2UvF_=%oeX^yG zVo`-L^HRl&`KdhUS9iXTXgJBxWd>o1^=KHUx+)6BkbTp8QJ$%l;o&0-(3(m)@6wFR zg1^ucfc}dEc%q6&q0&rq?&CDTwT{|r2zSEzp9jcnTcZ;7#|9%|VL+xFUs|PAsw<4p z)1Ml70o&YR$cc;hU{$*mP^s1`a(;U~M2U%{yh!4u%dh>2#pj(+qa+gZGiZm7rGvVMsoE$0x1GvEF z(^JFQ?7pT~ru)j>l)LJsFjdL26HeD>3;4(KKiw)K?G5V z8mWpZkS-1`8zE9?=q&_lQk{80x4Mz9QdS$ZV?3U*82xzel0);8haVoAQ(l+Gva zBc5p#6M}gfSQt4=7?>D1vv`=`BK~6h2W%{z<9hntphD zuY1C+5OC9iy6&n2-qY`o1Qo0dYW8%)VgEJZ<=Z)6y6ylAo0=%Nld{qXAc%Tpm%ZeI z5JsB8Q!gToKl8hYmRQ$$<-S`C%>BVt>7Q-o=9dHf$i4&JOmUigj{5cUh$jsO093`56li=}Eez{6eXn_7&c!+$gBJZ!GYIE#DdW>|(pU_3*v~d^#V7VD&$xvy(KK;OyiM z36&|pIR+9DF?k1l9fbR z0%kDQqMweZOL?izm!s*w{6Zi_{6g!AdCz6BZ~LNW+3+3+*p&nHjQsiCXHg0xPM)6N z;GWwY*n8vZtQk#pwD^kDoFB;mrVEX^g)(4E8CQU1LuCxrjJ}!1+FXsu)i9>Y$qVVL zsy2q~KHEbZ_dypA?qeIW`B1ZJx6+0^7eL1UD2eXKI2R=j& zQ?4SC9qP@)CfqkS`TLK+fm`zVy1;xn*2qbxy?qw!M7G~1lSZuG>28c4UrGi7AdrtE zKf7~KmB9vGnWjQuu8A1Bqt0aDr@K1iIvXRFIX5%ltDwk522PE4W{5IT9&rzj{A;0p zbEpVTnbQDrkMgsWvI{^pF3M^@4}S?oV8KGgU#VdgG$JvjQvdj7lwlG9)c^%1+}cF; zGuykrhQRs!#)qtLcGoR^?|=!f={F^lDO2|Rq}d&Tp9rX5bf*+~lkq1Tlpqm|Khx~& z>`yKBa9>d{LeE(_^?U*hjO?OsD2MmUH7Pd<8!K!cIMzLoKMOjI_d7!{iH_L`utgvC zw3pK-`$CC>f)J3R!N7K|+(DHmsK#+;d>e)ern<#q$Q~vUO_-ewRNp2Y&u@6WH(60Q zuO6h%p3pa2Fn&tLb`p=KAKPLKk!hN4mEorO)gP}GQAWXycfW1$F93;9lyO6KPKc{e z{^+05hS9w0uCJSw$|#;4&=$&4`7-9{!qip!dva;Pe)_| zQ>HPn=qDq_Dof_E=CcC95d@VVfV;Hu!5Wuodb%Rp$_q=mT*u?lmWGaM*O(Pa9+!mq zkHESA&%)(bQ?DeaR7Ryw9{$u1>F{>hYlt(@)9p+$YO0(!gT?7EGy1p^}US zLI68#sxsd%jA3r&&Cz!n0Z74na8xr&ggrb&$1?&*Lep8L;2%G#K#Wb7@^$(Q{LeK8 z9*K0oULg>-ccu(aasXQd0ZFt%bS&<)<&BixN!jzaOqTK#igLlDOlI=FOuD=RUvsls z;1VR+@_C8m?veZA|AG14z9&Ua{vfR@GWi)2Xu|Hon13u;J3f+$v-(S7MW@4Ts}3(? z+}hr>Z42VZb?x*&*8niiCQ+l9%-7)ZV`hT9($W);n1a;nf8Rj^GP{7{!pr+<>MfI* zBKO(!rvb=hTGUCFEYsF~@<(e1 z_S9`0hvmy1_4gPkb4{#vUXb{KwpgKQN;8>)T6c{2B~b*h@y_aecc5()SSV_)m^^#f zM6c9#H9ql2EVB%@c=?v>2a_T)-BJ=d$}!Nk{`G%rTbuodwl#Yg62+aaoLp-IGc%HP z?IwkPwG`@8$zOOg?g}#%XHE#BDm@?il$AJi!zZKPNqu1BUr*3~(}?$YMpInr_uN)a znAY405)2B8)e2BrHPDief0`zgiZ!g><+lz|Aw%|GT(3p-drXW>HiZ zLJW>%m^Q+>Lv(u0g_pH2P99^SF#M7XE;l5^|9M@MzLl2fhw#q*_)iDpZ$Xh;A|KBv zYfUS)&Zk(1g`X2E_}~j~ktU`a5I85!q!4c{It8*_o~YENWO)_}z8t*E^sUmAOQc$) z8oLfc;=mVcl7yA94uXPGMGCJ z=cX%5$PStcE1`AZRk@NYDI1ys+Oc36jQ*Bst#P&1dX^)R>hmyI5{yFRfuih>%Mhgk z_mkbVJ6>RAT41)V{!Ggd(TZO_2?uN+-< zw7PnJ9k_OyDf~kJ=){zg- z%ON=r_Q9Mat#WtrG^Ej5D1_9!$2ytbJmEkeVo~>lk-+*#-Vn9ElUa=E7nS8zgTK`z z`}3u!297);?FrY_&mlBZG09L8hHVaj2)w~qCXSGckRO+TU3@Ev>FpiYt9m?N5(=xZ?H!2n*0@cU%lVh7Py2s@#`It7wLiY*kwtqPsK-i+^?E$w4+=^5Og^e6O4AFa z#C8LFDZTAZ=1A8oE01b&`b!sknLUi^mMKZpGDesnVhST| zD1%Ssa4WgS@ayZc@Mw>m|VKx3OL^Fv&7 z!w=zTj{ING6{Ur1zUq(ikjgyeM+n|WLQD*W0tzKINzdo8rtDrf5qzU;sp2yygCC-b z7lh$lF4w4*tCorxx|Bx^%OMv_|f#jw(<}dOVL?PX{5K!`N2SKGc_A(xW>*5XnvCBcKLJl}gP-_**IeVUfo?cUHL*oxm++ zmFGHDKAF_Yv|%`8228X~-`KLs zN=RP#NPR6u(UFKmEFrL;5_;u0)}Jz5)mPtdY*FDVfYtwS!aKMia7SL+231w zF&BZ4*P#vhpLiQzb;zSmyp1Dsi2o*=T(ECHs$TgY-B0(AMORWpyE8PzDj#T)7i$L_ zETIdN{VEyor{Cc8F+;vhkT2cnMd070nU*q;O<8?@LS(2QUSB%>8+PmkVn_PQJ4-FY zIpp2TP(wIj`2j9MCXw#rF=8Qke9B`uf|?Wt5q*h{LuJHYh1JhCZ}*`m|I51afi+-8 zP<&yNMagNSw|`^RlidwW8_RNE_A0$`aOLbD<1TO~42agI1HIHxRiswi->nQ2vM#ya zzkkb!qRO$7LBE0GCp#N0j$qc8n1tpyW7Rxa+u9vmm2V>VpE)bj6$>{7%wbM9@SsYb zWJ`qaty~~epR|HC9kpv1Z?}cwRPDzr>ITlAlE4bSnX?)ak9+Osh#- z4yKX}HDrC_L~4XFSgM#mw@Cv2QW=QV+^xo&EoAK=duO}FQO46$61)G>pwy^s%~N%*0_CV*or!?6rEBoHQbxwP$|x z698I6p{7)&ayckLZB%;x%XGEs=m3(mVct$G{Rm3~XjM^1=GUrK*p^25$s*EofLWBh-dN>l=vs!B}>c zd-n%KK+|@xoo~ACBQ^k+n@F8*C(Ii;<$fuPc^N9{|2A^gTRc(5?F)OrweC1k!W*`!;!AtNy#Vl3onJyi=?&AERx%5QPx;Q9ds3X zD5ZYBjZd@yxCVP0YS!lEHE=brs(c_HWj3Lq+J_T~Qs2obQ3GA%>eN1nGwRb&vxg5KF%vYMPT>8ZUNB z_CpnVvU?)+Ia8B0u6&Ei5exh;F2LhK4@w4UZ@>lg6!Oh%@+(mxo#zo!rkC+p*ORW3 zG+14sBi;;}-I0OHc$e(G1FD8d0iwX%ov6a9L)fm`#QJ2beo1;VYY;3eGR2Ak0`j4i zQO{jv_!_3KNa#2Nd!ZhucBs8$<|^`>g-`8?(mF)a`2qF-M-A7Z%-~hhqf`^dz)OC( zqJba8+Glf*Z%LnNyU&bf6V*7CB0m|TPZq?B9EPsF)1>Jqo%$#nx~SzO&f)dqM|ua+ z+kv5HIkzW%VGf8t@hGNDWB zEuwLTOnuF@Ns%E)F8Q|IW|SGxnxaD|{O6b1EV++ksrE$R3bZCtgZ|HnaNZGF5n21$y8rq5W^s&`O*=!3sA){ zeq?``)J}YO$-OH%7)M%&w z!eTJ>Mu(x9Dv+J}5NfBVvQEh)?D;Ity4#<0kRwL?h(W~3(L%QjQrdl-y-I0fL1Esu zBLTA-Lx#ziPx(djbxZxBG0}(3w$c^@qIJiZ9diZKX=T>Sn=@s=vKLe#2dgX9O{ZlNMX67b+;~P6Djw*nlL(i8PGKbXQp7D_gNH`K{HftyCRdGQ1j6dyYaPWODke$=*I!+kd(^lZd$3&shE* z4uCs`c2uI%+P!%p9tGf*-*t5-R>U38R6@PFneHSgcjXyhFzp&<%RI5fPr)XP4G*I* z)HdBg-My+Q%k4Qlb4A@P_e_^s2}@`EtmNF9x;9qQ*K&drT^kKG$Gd4@lEp*HB$vxI z3gLP}W0Hr5lvUC*Fwr9CMy_auEv^8FmBCKB_CN0dGll`-5YTOy+0?4IiZ6x=ZX(|& z9Vto{&OAy7we%uBftjS&D37RH2Lbf}v|nX80Olmd8HZU}%IVqf6_3j5K6h}rA`w5pM_s5R6f_~Rq|rdX zxs@n>{}}93cXA~j6eXkgtOb>Y;&>KR@o4=|IOIE?#}OvlzykQTi}QEH@BHBMJ%J=> z=YysOA-_XIBzQb5F`yrH3_?0YBRax5`mx%`LvvA3g*c!>$+Zy>;v3tx;N_}&vXvOG z?#81wGBVhoG99M4k2X17Bmf-0Uv?l(SnCXJL>)LDo>R8q;RZ&H8RyP=2@guk&Cc(v)D3s?Nng z;7BC>{#4oX+Hd9A?s?;UOL%XnnOi7yx4rJYsQ#Fv8HNhRRBy2UC-jQrwO=R}+^XJ* zcj*J#v*?owPUbadq0)m^C;G4TqJy}nIgZZ;f-`bT3 zy0BYbapF!D-%OgTAjOhR+-K6HBKa{1%)cw<31+LcAQZTnU??xjwplc9no1PJWMzD9 zU>aF=GNnnJ-XjOasvf&kUj_d<>Z107_{>-c3OJ`=t+-XVk6eq7coIvvV-db1B~&{V4H z%%dI)DA$eSBSOaPf#Xc2pErl%{Z!NRh2FeW-W3SrC5G1d*Czgwfz}JH^Va3rN*9Uu z$sGPad_6GRMyjT1Gv3{!DqCbDnM#6P$GKywRU1M8hshq9%CKG=@| z)XtRD`EQ=wipSF)U>)3WduZ=aDb`k_Xk+K+_t$y zB3J+R0XG+16%rN@$gReooeFBMwu$-ut8v`;t;QUO?YMt0*l52sP^mi(8SuXKiYEUl ziW=4RhHPZ`%3vS|<~-#@pXlLmz6C)pFlEp&78^0Q$Uy4`itcHwbjBH&^ma88CdJ_?aCaO)SMqv@*9@2ln` z{b269)zhI5*mH?2Xe0TO(*i{XpslcYLdtQm!^nA%&JKEjE#~u%%+G#l2^9X#p88*P zf4LP=`+vOb+MB~AmVFM;Hp;2Z`hfB$75+Ny`k5X)qy6Y^B`&+g_bzHIVw(OmYTHo&$A;rXQa%-+J%1IH{_i>rHp_g<|Cp-uv}I zt*4`LSCJfqoxu^LHB5BQW)6<@*eu%>Rn)Q=q6xRC2|9=E)_}z9_098DnOdAaHW>DH zZ*nxGoc(rFaPLNSh0O%M0PX&8Dz7hQ0AjDjg62r(<%VIc7CQc%!H>s;AU)MRaoDk| z5QeAk@`GrF!IRCZQEFGhQNK(G5;6pbXmzR!|9)HOhcKMMG8lAVIUb+cZ{MXDVCI9C z--P;C_;(iIJ>+}!>SoEP$=B7zGRsT>leOVv|9KCpQ;O8g=|P8VXu@D}&hSZ-M>u-+ zW3eN#X6)0Uu{%-za1F26F#B(-8vrYTYoxAy)0acCmhvslLE%P?GpoZ1aCi1PaW4kb zxArPalX-{kHc7R92y65_ccTXTk)i%~Oil|^wjUJmxXGbJH}DyS&oo{780lo@s5=(% z3#5)Jd`}`L*>5xx=zlJS<^%oD{3=?}QbFKp^@i`~)rw4)O#Bh_z_73nCy-9uliyDw zm)J*Z*>Hw>=hjC0Kif-0s~PrdB$iawAT1lCBYLJnFG)<0n0S)^zqfuLxB?mBQZyIC zx)(5-b*k;B0SV6s&+2wLfq!X)z{>x(-(vsLP*C&pCI9sZ_?TE4$bWAkQ-aflm)mCJ z7&CmUA@j&i61R?^w8CgSqbvH$)r{!T+Hoh95R zb_IO2q^>(~O^4AeTZTX=;x=Qj`ZyQ15pi=p((zC?4Hf2D=j#Ic5WK@#s;Oybm(j&q zbZhUnLy$UcE8&zw;TsUW{Qze5q8E|7I7iaE4V4T}4BkzJrM=Hk*7X!LWUNIR7So`Y zDaKq7LZFmALf>7sI5@k-ft<(l9QfdFSGN&ix!H=kRcxub+LHdF^2vNlQpO&Bv~_uu zqMP_xy`OOGv4hJ>3tLz_-zO>N$!zMV8>aaF_DOMJ3#%)*rZr^(#zd8>z%QF6!3^uh zt0XV1Yaky+bN}v)zjl@HeGg?YNr6y%OywZ($isEU5l_wrmF+<-v-iTOwo2u{5$AIx z>*HJ6LCRp&r!p_VS-1SC{22xoZ8UY-IA-hlw&;XfLYo;gqh);Tl-WHDr>bsC@tC(3 zIx6i^vwI7I74S6{3F+fNs}!lfaaEj^DwKQ7O_<<+ktMW6rD5ulGWM7PvNnFCkA9ar zTolUclDk+xL5*F|YqBGy!Woo9X)Mu^$kE>^=k1J&!X=>)W`W>i#Tll;MO0(tv>J&w z8`7WlBNN>p6-_S zM4@c*=@%7(w=2h*Omi$0*R{Ivh4tHWr5nk9BhP*atVs}Mrd$@pv(J9S9LOIADAhMM z4r+{E`8H-awR}F0B`q; zFm5jzQ?5!_SxL39*66Ra`(OK^2L(7ArDHiHJA3A_O>gIZl9BK%xW)X|kaP>3(59mS z?%V!3itn;y5a*R##(NW(QkZUmpJN~7qh>(lCbO`Krqt2!SNv_>jLrBT$jvxIQbyD6 zkz=A!J2-yH@!4~*(XD@mAdbAw2-V8LHGqo%`U?~v!_nX|C8eH`nNO5E06pr;&gntn zbMtB}Em>f?Qn*Q&5d(rSr=~?o^g!vPT z-WGH_XX+6nuEW6NL%XMRb)hD0J|1BVEDnDnvg7pJhBDmy zR7j?6UQu{EwO4?VpoI7~9i!-gUj1Njyp}98ZPEQ@0+a70$w--ok*!;cQK~v+r_L5# zlZKnea6Is%YoJ~%i(8V1JyYdl>JGB$`C$0Igx3>E<*%lEkp@M)zRt3Z`bcR6O@I4M z*~&0A&nCj0YN=wQv`?VydjgttnOtFWtZIyGOOrKJ9P4v7!cL#!z+z4+;slutU_N?r zo=)jz{ey!Hty1r4p_<7H(!D;p&JS_J+(03RiDN(^^O&yc$Fp^x*1!L7=K7Eg?Za90&3rzs!B<`T?=tfQ)Y~60 zBjC8PJXT;jZ2*+w(vtNGm~}3w-nQqF9s~!d5~a)*K*UaD^cvu-wW@@@V39Q}jA8i| z;FHq6E{r9g5d93F2h$SrkSpm=d@AqLuM~KtK6q#I`{hVn!<-O@P1tVSM7_>TjiKmh$~a7ut3U(JVE4U( z+H)o0#zR0ZG)A3z7!wzgcJH*)n@pWejPLuxr$Si9 zi`h~oAu)AJcGH(1mbfFOutnnfu0$*t_JD3=@X#1HIi86IQVXLCjL!)z;9XjidJ^yG zd9qKd8BxmMaBg3jA;RA%8>W8D0kR8>zlyW$BXOqHA4WMI`RsS&ZcOq5FOu6SUg-2H z1`#`OCK@$-=2)mLjQ+Shn4*HUJ)@Sm{F>Pr;V$XjdIq1E4CFr zH9}Kv&h_W-Ne>i-Y_r$y$Xb>c7n9kn!*AHs1i?cbed zRUG8<_4KY{$WfzVaqoEZSc-=g@ylVT#q)*em;Wxw4!o`(wQn&OZVw{N1SZQM#*p1F zbvt5h9(3M$Y+ZoQqYHmuIrz0pMLNHZ^yTR<7J`PXg z%z=E{ZRboh>>GG>OyHkHdE-%wAUlgEv-Q010W8cO?@?Ejhl8E0S>m(57wa!2vJOu~ z&q&xj^{OR$;j4~>c4^-?r=B-P6)EJs5XMJJnD4+;Gf4Fl$7C5wb=>XyZ_zn?SOfN= zsAes`z-2Npg^50-!pcy4(myu{^Q0zzCpXYGBTSJN=7iQ6zeI6ktQwLox=2@Zbj0;M z)U7G-t%?zS#VA%-aE@*?4$yO4w3Lahojs@3=SgR*n~r@EWRPy{U#V!Hd}zPU*mE2S zFa+8d{g6Ix(q|QI$7#Xc9S09esVAq&&Uq=+Cf==fq)+n4wY+T|kIaZWnaP17xt;DC zEBh2XTczk15zGK4JL>+q)CA5SZF9n1C2ZSayaYQ0PDU2~VLc|oSv4;2pG_UfG1Vbo-wix1tx29kg zW&t;&jgf_nL?>4-HOiSclgIx8v@)g9+pk>}TU`#`FGR`N1`}CC(Z8(fn2dM!PUx#r zL{~5=+4;LZZzpZ+?hwnueO&a;h<}uLaPCeIG|*QVhL4jPW>iTjVq5*1&{`3B z5R4}VW3#o-1O+&&SC3mmIux;8cd1*Sbde!nT>Z`R82o`_jwrmH0(~Ia+s+Mn_t?Kc z6O2^pacr@Y42q1yTLUJ69A_?aeU7;kz@7J=8m*dROr}^rerU&IZvC3XFwewSVW`Z~ z#w}E!lr0qa&Mix%n)Fv8W#C)4k5rL5_Z$gh;n3xURPp)nBKw}*b(kRe2PhG|Os-?$ zTr6Iuo--roqcc;HVpP`4$F^L#77Js?mb+FiBRs?baO1P_;H;#`L+mIgH5qxs#{)a5 zbK|jj!JS#g1mLuUk1|vV!6+-HV}HmTjQ`sJqYP|~LD!N;hLi+#PRq-5Y;Y%10uo8K zQs_-K;VD@f$GhWf{6beeIV%2ee*Brk$Wsc9I)!3sy!7EpUw9CevR&r-omjrV9eX|W z$60EE5boL_W)3#@T9T_pb14Qy<(5R@V)iE!<)4c&#jMTV710p+hEUz5H*zJ3c!}sS zUMq}Rpu2Z07yhSC74n@H>^J~S{Qy{xgW3I=3A`;gXir30O)jB_?u%67lYA)&{m2V& zl{@LjZCMzIN*Aa3Q4xEJSk~elQz0LKk*fJ2Uz^NoS>9s6fhytHayQzdS;=Cx*%6JGM;w~pFCGnR%%A*_9pG=Lz3?nty7CX+L*BE= zoCbkCrYnIIQl*?-G)C4(p$s)LLOD(2y9h{+J3WZhwFg$A&k^7E5P>k_MdjH$-NDg& z6)-F#XUVZYw7O(lI_KTzdOjDO(JicjZtdSPnX6M63h-4hNNcL#5A?20>UR2Ar) za-<;Avc35|xXtcx5>t(yq(}Fz|BYyT;pg)i%@nkGveN$rhrRcuH2sg@Fd>5f4IFj~ zZmAnQ{s%43LxG?_jSR7hZz%coqx`u+fUYRAC8jrR1{1SY`Ang$#!sO^bJp+_0SoNX z_?)y$pv&?0j9(;p3hLx?ym@*5Nn!eiK=MO*Tsbugtw95B7)4Zk6;Wj#IHo+eG-eItt!^25> z=4Vt86BF~`DRX^Z%0@?=j0N)}E^{vps9jFf_~02mlPlvydG*G?pY%<4#;k`@iG#PZ z*)8g>v+Dy^I*q@jky#rnj$Gh0+z@dTuo;&o5k0>1TZ12PVJuj(1Wp76>DgK!s({K~ zOF`zojUu2w{;n^RfzzF$Z*Ap3D;VRhH|yvl@e(Ydbut?rMstIY@=Rbv-*7( z%WB)BD$>wth@rt6jJz>b4QGy+~m1<6y7wNVjkj$p27vFU8ppNfQ2%#~he#p3_!T;)Jz9nBg`bR!;EH0Omh@#zHbD==a!0#?}yBQwXs*%U12@y$ZpLLlZ4`5 z>8(bt^kkMm8T|FMV`qjKQ~ugT*F5e$s6zi=M`J>SRm{O%7a|G|5l>~cetljETwD4f zFRnqoPuA4J_@aR_d@eVpuU4x)VBD}MRlC8k58I1-_s#_W2W{sV99g5N>&Zkj$;5Uh zw$-t1+qUhAIk9a|Y}*stwyoRqo%8LpPu+b`x9YAxUDfHT?$k^S zbcPX=3nNzZd9SJgVwgqNJvIUF6j+0&IkW!juWpWPHIKTSF5`QvUWUvD3)d<%JW?$(dp z*CWUjPelq`i-X$6b4zcn&J^5GJy(s7;eLmAf=Rc)l{UX`KJ2(=5k5X)c9w!*QG*IU{^JPyWAuAYmW_LiCWR&}+Ou71V=ii$H97 z*?wg)d1Hhi7y9eZ$*;8*l9Aq+#9)AC=YoMEx6N92%>twK6xvpx_2UyiXodO3Z4~C( zg1td-*D2IaQ>+QC$dFc8?wAf`EKL|{Y)1!n2`n)Y5fo!=^avhU#_~6|y5MS(LG)=u z0B)c)m<&PDuJg+9N6J6csjs0`U`{hEw>Zqn+L1c8#)mYV1pyMD>4x%mLykfN-|9aOUe86w_|9$%R2p|t{aKtKWef&FAf|uJ0Wb1lyLm)mU+{>ufWPYYttZY|I0|qQ zQv^7PX(2QXoWz`7NV=I@$WfQ_PMytC-Y{)P`WqQX&2Bc`M0u$_Z1XeYYf<-&NXtgcbx|_F7e?Fv%9d=L$bb8>l)?L9BeS zu@+&!sTzlZ@XVrjCqAqBe1+YU@q0u=r(Z zC7V6-uJ#hy6XI(uq(E_aq)<}$J#ae1lZ3xyLUMyO>UlD{w(Wtp{Q0$eKug69zH;n+ zGUeyOb7UZ-$#k{-ma6P^0ZU<6M_(?g*5T6`Z^MSzxQ3nsIQ6pH#@_kcQF1$)+pxL1 z-DV)=D3y3fi~M^c*NgWr{NKg1P@`6mY#6S12O%rzE{hX&e8#V&E$dXzO~9<244I)f za~hihXR}?UAD*xb8GU#6~a6cbu((YMBG#@x`!toZQ?OlSJ5oY>1sBYsu zWf}lV;4XoOeg6P*b-?q0e>qj8Hi~-hSf9nYR=bG!14OdY&#kLnsSPsO>y-gTr6#-8 zt%N3tJ&Prw+aFI6ZRT)^I@*G92M0@x4ji~!=IFCl!aMT)qBKy2mw}#kc%-R4yDAQh z6J!1MUPQ_&13|G@>UBMe!FaL2uk6wiEzXpY53%o-fGaTK&7FdtSudn^$oc(6O*kl` zGx>g`+Mu>}tNhI+py>3NsSFebxeTSwyf;A+-dJju* zZoV)NA-+0qquytV1m1uPfma>FYfA>u*?L`F(!wdtI@gX&Zu0wz?L@O zoCZg7olHiMg7EKxZsqyr-8vK#U{QM|5FObM`)EBgkG$l_d!NK5k78z9)8u$Ten(S~ zyK_oDV&mt6;p2GRZ5tQz%@wR!hD5b=`4=^*BOVSqO9MJ_Ub@4+Q$|KJ6La4vcPLui zjh*A;g4gzqBv!lJ>;>PCadgp_L}Nu3dfrY$dc~^Dof=zw16D3+3l8-{$4rj2Ew5DB zoIVSF&8*x?2t6A?mcO;Q3YmY`;`}7Wq;dJ8Q5}@&ay6tRDdL5TR4Jx9qSCdSLMje^ zY{0sHU9LZDFoghZnIFurgDAP8=k&2nHPTAjx@3TKsxTJ337x@U&Sz%+ro`#eIT0F2 zx#-1AHI6#lY1A^P{hXXXo~~Sdr}ya-dDF+#*HI_FZO>7U1q{!%r0!2-Zq*)SJdq7P zSop>DsUtkmN&1TNLZ<>E(&JiP^WixdUfGgazzI}6<|Y)U(gc2t{lK@xg!1J>{s`3> zv?bQiYCO5d(S7!s>wT(f4KbXR>Tj4%38pAtAkI=;3}B3lf*EXs7{9t}sqM9-+GEiQ*y@RSh@TtH>^kUOk$MsrAQ)`9!!y$vui&DLE2hIZYh zCE*T&2D~xS0C`7Mx(qyRJR{E{9y?b9o(2`Rw5K-9W7+kt*twP9>83CiF`09HmpA76 zRv(!_L0W0)^r2;m7_&2ph;fsHyjzD}?{)mbXoVunwD)gWkCfD@$~lsD#8m`Y_BLzC zBsQ0P-+M^&!*0u#mPk-z#>z)4ku_+l4N=Mt?%S_@J#`-N<9`clX!VaCO4bT} z)pm6+E0!%{-zIs1_E-GO^3e~d0M-VwdmvFr4;yn8Agx}@E9}P1@RJqd={fI1dDqLK z_nE^F&f1~A0n|}C3mT0ab~_eq$MjXj5N!Q-lH!Wz>v0moM?evEpv~vZZ1f^VJMa6r zI=h(%YhD-MMi=A`3Z#{6kZ3-ER9qX8$6)rwWxv8z+0WP%>w7lUZOf3j00%y^gln&Y zX!cJQ=wDYNz)}767=fK{nNSW6HD*g9LJl~?^gYCTZE1;B_*=7DV>D=p_&%p2!+{T$ ztX`U{Vk33_{IHHLe`6lKsbahpYae#8ab?_p7yVqZ65+5X4!Iow2=b7lYm`TK&cnr+ zcg9w_$|^v@vl@NAluh~bxZVmbq`#oFe148poY4F$R{>@;>zJXP+(N+#&XcOpP?9B8ZV)FmkurnBDjI{eiSKvtVHDFk)Xi}dfmq|wExh%@H2 zJihws)!K*;CHI+Df$(9!Vow*KX0^cMsH=LNYS zP2HOc-|0(Una3+V9lrC^NY6-L z*yEGRgg|GCuz#U<_ey==fP1B_)}mPnoeC;Af=g}acnK2sard34&ukbFoix4A zvqT+AtA>*SR}p8{{pm|D&AaL6DngH7cHT+>6=Bz91n?*(#yZZ`Z$j2TvmTx`{}4b> zj)KxUyKE8@nVM@tTXRZ~t7I_GHNsX^0Iy3&I@q z7jz!j7_88xU}?P%F8&r*wRTMp(PD-&nhhQ$d;mK(%ldZjY=bVi`#q7mh>TezRk3D* z#GppmTENmd@fY_swX?>Ed1Axj+;ml&YLw`{^7oh_g%8<)`2qCdEjf@1**98(s+kmL z6s<)AtYC5CO~>K5BSH>&2R{yNo!y&jk)q>5)G@W$)DUU`wmY_u15pPclZ$ifK9tmk z=h@YCI{!c&lZi5T3~+OYbj9P6KAOa%_;c*h1lX#Md|7>`TE9jn-ZU-Bp1LfI_jZW= zhca3|ZygdZ@^p*q%mPaU;_}bhC4ge~H*Fat?Wt{j>yLvQCIQ>d%-T`};4-PbC^0V8 zN8l3{sO%?c)>pYI@6?>Q@g=Vtyv#DhQ19F1MfvLd;@D6xMBdFGlk}Wd3v$mK_FJdp zbu};lB-WbJF_|o)8(%*W!`%%ms4X_)1ijoNko1@et|Xhj3>S*VKc=7dln#KhJqo7ed7vOaeFWH)!g&PIZW#~1Te`VstpH7H+aZHlEIH@(nU}wj!O$u<#aOb|b@`03y{&BiX68BuntavAAg&4^9l<9?AwH0#2J}&C}!*2*FfdNHN}NnSXNJcNeFn z=&66nY)}^FBxchN>d3+UoUPmlQeW?ATHB9XWJ;T!*KQl-tS`rEwYxWBfZqTsxU6cu z82xxcwAE-#VUa;OwRX(GuRN}orLr%pI()-u(v)E-+?qv+FTnc|d{LaaI~IurNZD4r zygem;z15g*DS^O0z`9{Uf7TwL;X0%)Z@6-M)5XnxO@3>Wh&qui;Sco1m+0jF%#eaV zvfuwyyjqiW`oflC=QTz_X3OIp`kNEBl6yg!=eBHnh-PAJt)^_sbPBvOxXG5VFA!^T zg1+NPWIr(0=GvvK^7ftP%@mN~@LlL2C-(DF%yq(ww=om<7(XH5Epu$h+-sndG?JL} zHDc#FQ=?oz!uHk=9p`YKI8MNABeV$VUD5ejL{&n!%vZ6wfx0MqhO|MO48MPqv^kei zRmJ#yK}in)w#G@|qo;{0O+>gyBmR&ihF>&;npZT9+>12?z1|}eizuF%wjMJ$y~(d5@Qdvhwu~g_bUET=|a<#@g2|E)mvJlVl!X$!BR_S zj}Y+^-q3GP9+|?GG>`=h;UKdThM7DDpsPrMo8-!EO0$x-kQIezR0lP0f? zMYZFMAIr%?1RAlJq_&P z#_~>}lOj`QFl8h?o-57X?{nw)4!U=#syjy97ncvwgRFi=t?dgXTjWjch7zIxt{t@| zmNT?({Z!8c!O_8Jep2x9|D?XJd{U%`)$B}=tl)byQ~cynT*%!XSR0L)XO0p+`yx;y zlz?kH!edqXPwIPoY^A4wax+YYImE9{6BT!#2Z`sY$ds2J`nM94J)`Wf5Pb0xkp!D> zjOmeMA*IZYvO-F?ypyDvS$I|&x@gWC+P6UQd*;n{Yt?aPm=#3rMHFXBO!^Q)=ka7wOO-Bq5Y?fDdL-L6B!l|clIAq)Ut=|dW<#; zSQxHE{Uvu?>Am0@+bOt1_)=DXl@GsUtC*}d`VHW z7K?r?37*w}lo-$bAr@fh40vUI@1P|-coin>)r6`Ry#3)8cpON`nl4{#1^7A8f=BBp zy`nObuvACO5q5K76+k$!FZ5EZ`3sNUEB!y&1t+O&^{|maeLWVhgRp>WYaZ3h##_Y8$19~t0=rk8} zT9oDFy7x$saTM3dn@wi$R4E^B22k~gbFn~pn@qvB&o~Ch54GD1P~GY5`@&E*!fu9# z$`ul415n~~)?(2m0;cdyN!4kuP;b-2Rgf4)%MH20=~!uJuV2TIL4>vKNDE9TQ?b+> zm`)*BRCMS~Mi9$;SnauFyB-hZzF9v*4Nl$nl`>TRfu32R<;o6Pz7j1%si?M*g0psC<_ma+5Ag8VXu5pE-=Gj zL0W=EYQ0Z<2|{}H+jp@>Zea#)Y%P`kor`y{rR0tX;J4^C2d#*`b?lc1kTA_y$p12w zn=8Volw(r8ZZte#W|5NA<_F!uP`blSQ*chzhJK@5H9P?c zI9?9UNh>5AvaWgD4xdEtR=zx)RckYbGrH{|8fiVQL6OL!Xx90S|^Ml_(M z{%&7&sEnI-Ey1HhyyBtFZQ`cs3-k)NJo;rsvl6Ye)5S-MD?&uL zz?}a%Go39?4=dM`U)ftJqGJDdzjxbdNEo9Ss?I&tXaZwQEh*1Mf&di$QLKX1tg!R9 zg&j9vT5GgKM#~$q^FY)~X~KSWh9l)smk#;<41N8*lGVpeL*i~oX9JD`dK?C?G*2H& z0}dfN&k0=!%hv=3b@6S1&vwn56E|aT2B;4$nMA$CALg*sR*%leCbtO=5z=-BQajwI zFtWa~5sE@zF{9Igmv0EuGGZj8!_Z!S%6S_}tZvF!v83!k>3#@DEbfp}65<$AVWiXj zu89tdMGr2oHL?FP5d2G;%qQ?m3)7h_-g(x*LwmqM{RtQD2J z1aZv+mN>t&lu7DVRs>c}NIhd%jwg;p{ss=sOQ$$A0Z~%gH!P~j*)z*tx)W5bg+Qz8e0=9?36Y`HP zZjMx{iTXteScalGC`oJfLlz->W=5P`?sZ89#tg?6jb62ch2j@r$~~wJlDyhnfh@FF zC6=fqffDfcr<+4t!>exB^VHF11@DlRqjwbR8wiHiBiHhv_lfduBeKc}(rrIR4;!43 z7_y~hAPX%aY;gJMw1Oi|XThdWL?3;9-pBqby_2jR&4N9aNBGdzZd1RquoI2;cvgP? zj(ad`RM>uhK>oZP<4BQnYq#{~_G9q#{n-A1$@yi8r+F{<0r{9^UXR{w{{svDaHy4` z+&yb<0fha7_$T0M0NWDeKIah94BS4Wn6(DR%=dV`T1dU>CPu?l9j2;W;fkdoDF9q`#G8ovVvt^dx8VXCazBpd z9>Gn5&Uh zH({lXliF@+OXjTI(a-`vKzsJ1?myoBuMZ)3E=TmB@yFl!`yiwE$2tJ1DR?JoaQG}`uGMWbo4pWqbkCycxj%7s=%Lx+5@K}IDz7DCUk@In%e!FUVi#s_a)2J^ zk{-5d$@$UNG>lilfTgLv(tO4ibZlSEj_7x*(6-3ghY#mSo2@n#59R(0+#3+pZr0$dB6L_wZ@%k+ zTS)3)17C5teYFR2?Wnd#RXe1;P>h%;>U->0K%^no2LanG2RIFkRzET17l1{kOijGs zF-etDFENA|EG=9K^Sz~AHz|kTV1#8%rms+l>d=9pypd>4W<1dv z6Q>m;whphGrm$JG$syO;AK%(1kkFU5D4=Qjy&Wy2n$2jHHMM#3E`65hw`|S>N9fC6 zaPAc1M3LJ?@?(F!#T|MGL7&k$EO9I7raf_<0_#Xmx8tp6d$XwxDMopUi&W{u<_C0& z1;C+J`QSw~a7CYH|Jd1W%s!o!iCmOPQ7W~JhMhtBE#C-}yFy!PSXo-Be)a*dsyf3F zW`NO2W6nWe!Kt;*kLnDSElg6Yfs~CQijUt|W@ z7wH+ejzL~Ay0vIQNclv}kVJ{97{=BU``xFuyK1&^D3VNvFLb&N$I9GtI|okjbUJfH zoLDa*;wOTbbUB&FKYKJ8WeXDlEx17_PM7MlX((t4zZpvTPC^yXJ^Dfx#;Kl2e}x>M zTFj{+2x-?tj?&WR4&U6IrZnS3+cJMUX34WF(I=A7stgD)wRfYFj5@k}imE!C*lh6QY&z za!t#FK(7Vf+{^M-jZ7#QT;XZ!j{co4t9ut7|_=jkux3KSn0B$f* zwmdQX)(gB(R#9Jv*cT&+SqnLoxddveCEXvRI6(U)!|>s>y=lNljvARxoItwLcDYq1;Fi}=wO5D;%YB10(CS#_zsticDn zDCgb*H^w~n1dj!sk=qiR`k&*{3(Z%npd6FERM<0*87YsJ2s;|P%oyi~Z_dP@J^}mM z1S4q~d6fA_62J5M+cK~nU3QJ@Xk9Wl_BSL(F@8^PuCY+?8}n6xa3xk4k5-IoezWfd z%tIE*day*55_GhW!q79ghVLvU!gj-^cd-0G zWe1?LTL>Oga-`H#zwf)BDv_{Ga&}M^E#LYysK;VkbQwy4Aud)SLhBvrrP$-#6oJ=n?*)oFEPZvxl`TU?52$rCHH?&X6y!|j^ z!m>Hk@9@Uy?HpINP0ZjdJ%pw*y+=Zge6Buo9w7yrE*vJXc+ZrN9Ko}l-N7v!4F~)4sW35B3g|ueN*Ig|H4A>x7DaQ$qJBD@~N%B%4B7*auAG}Z~CEC;{ zVqnUPyAHqo60Fm}R4A<@*}K)=LVt$Ji2*6tg;#=y;jd++%)>MGl&;eg?w`^WA9@r= zIq0kGJhwAkrc1@vex2Ab8b~O~Mu<-G`1#1YSu3_Xu}c41(3yV4YE{kVlfJ_N9G(@X z3r&%UQ_;J0(t+rFu=(E_7+X;pofNxH>@$_Q&>ogM!1_r#jT?iPp@=z+?cj;RRXEwT zauJ}h+F#^frndjH5x|6Zx*hDkb3%2x0^95L@&#!xS@0P(rr4jW$;gF6%9umv7e{v& zFn8_1CS1oSZ7ALMv1&)7^Uj$Un?N4f@pHtY$U!sf3KCfJ%5||rdC*qo`@K+<|4p0B zH=cBr`)c>>!}FiA=;=$1z|Gu$7$P#|3P}IG#SxC%I+K0pjHcNz3cvfAh;#FB(}~R! z9^XgZ*zUSGM@Jb>dvVL$1#$w_4IjaBoTr?4p8{=KLg)2l?*5klwsW7l+yp&cx)f!1B*V1KU50hSa=wfpRv9M^CP7OTC7x-vgM=Tk?G5(WZaop>;Vu=*FEw3h|qj|;I^ zCo3e3s3nWxM-c@NhxZy=1E3v_6Yy!Zb(HrxUY~eW$9RqZsc0p6f=*cL_BxL-#8f{u zKQ)$TGWWlVyX!`X{7Y{@gq!ka0JZ9E62@G@0 z?D=Ynv^CsZc?wwqf%nX!n6gp6k}>^H_|ZMIekRMbGY>&| zX9Y5Xmj73=^#cS7AGE>b6EB&<}Cr^6V)M!Ut#dUOo^gd=7%CD|1i1W?9F9w z`SiN37515+SQqpZ6WZB;2_aJJH8*w=7i+-3y3v%X8cV{G{$4w;+ND3p9~lK22fUwO zsWe;O`QiZ-+0s@84W#phd-7d3B?G{CFqXo&HzC#UbENx>gZ$-2oOql9rF-ZLD0ud- z?2~zz2=a@8mZLm77)f5Tcbs15=uu6+g#hf&b8s?x%v_l?*PKit_?<-fpEf92#mbyh zjs#Y!k3(*8(8;g!SGk7j2Ba-*EF@kkKei6me%M}W_U5lsUPVl;SN|K%ZMzvXJ$hAi z<-A@EFI%7}6UD8~1uD~qw$!+&YSOgq3C3yBfM7ZT2)p|RH3*5fe)g;jdts&|7bspJ z?D?W2zpREVXCgUWBM`woS*;M4vayC*R^M8(+=5GyKnfg25&mZ!cXZ#?ep1VG|gsA18&5G5Spus5B6T>5Y!@W$CBzx9_$NEp)c%P^!lrWV#KAVGLpM{kQSamriB|T?3(&l3F_E{b;jYO1aYO9pj)1O!sonyO z;B|tFzsCDqByL7szQL{YOk-ogSnSF9zSAof&3oi0m!*+nV`orA|op+32GECB=IO$Yb*hBF)?JQlsep9yEev z#746+$M|HLZ#=`SjWW$>0sNlXY&liQIyacl^q7vH{MTZoVxq9h7|s&z91@H39g3jW{e-A zu`af5!D^wgjJ!(Y42NP^9C^Bb3y(gkzN%7q6e25@>pxsW$+jE;0^o|0!S}>5bQK5S zfh!vyrBDew+LuIZJB2KP7!}@lVg-;BtJmS1DI;G-_j#roL!mlT*4yx9CL_H$p%_zP zFNBxqcyI-|f(cM(kIuTHjRXK~AE+g5>QV~2n$@Vxn8jquc^F!xu=&Xtx=n&@vgldOWcSRP4wFyS8~c>9VIB zR)aW@XpQ%i;-no;(PH~1mIj~*^!w~s%Fjkqt4~z596?{OK|{r;B||9+LV23gDB*~$ zT|_UbL#kcVFNutoJ+QXAy~4 z2&Fg(X8(*q7^!oW-+*nJo|Zkq)GvnQgd^!9O<>^)n(p<0Yvj+$qpRc-dyCc-L_+#{ z?e42DNE>t?-E&kzk1Eb{kJtQz;+0K_ z5)b8QopJsC4Q$7+giB4Z1;}kXoeG@JwHLxN5EYpLz(wBmBh|=<7$d{F(EE)UrFNdt zj3Buyr3n<&>Y}97BCNA&oHKC>a{^~c!}u*^lBmqyny>HeK`-FNP$ z2|L}r(%Za9aQkUublJXAnvCGvqFf`ncv^!m?Rz7I+M|o!q|fzqY*FX0}lEl(^i$DwpLJumO4574SKQ37<@R_ zlB{~xRf(>0XeVZ{RU0@Eng61~dH5Dlm41?U@W4F&& zTkD$5AM_151iE{Y^BR+d4_Rf0@z{PJ^BVxSTiD4yqDmR8uEi$u2=r#(Jz~LJFWTCI zm(MI57MJVMvuwFN+WH(P_`wIoVp3tmJr@w9BDW?x(lFM4&GG8RKMR@N-cY$~pa^9d zZsS4NTV1Ipo_ReR)1{&I+&OeRp3`ieW9M$^Co6i1*$CY2^~YL`Zrcd@PBOmwwX^moVX6 zUaEecM|-`@kgUu;>mckTkp7$2wja(*rr)ok1cMM!QJuybfe1-j^U}b%6+7&)E0**( zF>VaaPkL>AY-1yuq4bL0h9qH7~PeR*qNBNW8BmpUS{y++z4C%s(EZsoM!l%>J1ilmrp&?T|fi$sGuhWUd zE9Sjndyq|u`31C#1EEU+j%j9)EMoZP!pi}oao78fYSQ8atGlceDux1 za^r<^L!%J7_-5P&JKV|8vA0|=H8!;tr}>y8u%%^Jz>#dm8_Yq5!=8I2x=ek}zsh}E?!iW+hY2#{z?sOtXBWDvL)=;DgNK-I- z?Zqztb0Zz?=Adeaq!)_e?Z}dDr#D(Kzx57+Q$k!N)?YRp z^dG^Eg>8PkyCQ{8r$ijJb$g#z<+Z)O$D+O@kFj!)(H+qR=~>axy-0Fiv;yaLOE|(O zCJMcG5m=(sCdO@v_v<@yq}3T{i8l~RNc0cb+%p)vig&)TNFu1(a3KAe+jYx#S3;cg z(dzZr5yU=_)GHAI)2|kvwN?&zRJ{{n>b z)Rg?`5OuJ$5IiUREX7t%Y?z(;kmVk(p`mhQ2v(vg24833saY<*w!oqHq&%f)v`d>u zR&U(gUkUJW&in`drXxzo^OQAv1AVw=iUI}lt#+OgS5WCQ0{Nv|l69x-MlO|5N{#t! zg8EeMvHAJ)52eBRc$KnHG8HIrncrh!_WVTd3vBMs>anPYlh76W8Q@w-V-;bW9F36S z(nb2Rr4-|X(z?6r@@=M;lbzqe6-{(XJD|u$!nD*}ooQgQG7VSaVO&Lyb(PELVZx5$ z2;iC-7-FZc^^;@81&rxy`W>QRum^b_)(UfUMXl|SK#WAGM8Cw7P^*Uv&vR7^&}q%x%R$rCn#+Y0q(r@0)(Vb5jN-8rng_wrtZeZ91&Ow;T)qs>+B>xfBh&ia~sh#`lCtq(5 zRH2t@GuI_YudgIb8O@<<+SW~dV76yRN>S-*q8rA>HurL08K6m=j#_ldEvnM@ZhJLc z`(Ac%&&Nu2C`2zV#2v&_*81<{`E5yo0-DfVetk!!9m8oPLD=|34&ITdwB1DwV7(KDTuD15ix$2Fsq<9cCyHVp4K@`uQpeAu8tH8|IUa&SdExVGb zm5JX00&vP#dp}o0tmESP2q;QtN<)`^fH);XYY4-d7(SStdZ>cFSV2G90NJg@bn^<0 zzud){`B}zv4LLlFtvvZN)J~FTsv;aks;D;z&}A#dkSIj(_8;(G=*u5Gr3aV|`*Nrw zp67W9Q^0Qq95I$Ldo9vb8C=nO*>4Tv-#i<#V1%yYn`OU-p}9pJWZs}JHRNjsCNj}_ z$0*Q<9U{{v+Pz}+vH46;J!f3uv`!VR*(z(X3^?!Ue0yTQ=~9!v4xukfUTeZ}zVoPk zH$R31W60fFrKZY~O?mN=F?MV$Ic-*n%mT`(mW+gvX&gAjf#P%7<3I0J1K91~-S+{J z=_|5fob0oi&#Vd@C4h%AP*9EAuAB$Qc^iklt($1%CjrrEl?et?K*rAU%`}tMgOc%O z1(ir`l#;967WM*S!LfwITiGXqKc}Mt!KJ~v`|U@y)I^JHVx{z&c=V#tLQ*rD#8gQZ z#)JSw?Pe^13++RaTI=WRgg-fTqLs1pM(*mP0cW01YCrCzpks~XNFSRDO>3e4RPI;Q zDK$mht&P`fL9HW-W)PQI5LFFDVPDUQe)PirVAUAwWhu}&R!h9z@0lURmMM5NWF z*8{2hclP8UkNx&5hd?2>kz?ZRlRH^={L87f-Q@^`SF@I%Q#1$F9B#g#Y4^6r_GGlR zBnry9T?L;Y+U_izLKG?`9?8FuXsKd0`R)fn^_jXTFIV)w7&&*k4(Dat2JEB8%lB}d zWpcy}Ll}+2*411at~`MW%5}X(z{LgC7c5)Sdh#H5iV~nXrQ*FsgU#|;r?a2)GuU!< z#aFeH>dmYMc&!+8ttNI8QrTk7B?@^MOrIQJgjoNO7(1GSy20TH`MH}+^o$xBlC!R9 z*OE$8tMG{pCx63L!@234bU+d*MF-Jw`;*C}ce)(8IP##P=uY6vR~o7JNZj6OIzW3s z+9U;ja;m%{NHqoi9f%4Xx9b~+&jmlzX@h@Dq(t83(D6!bjL2QYQ0pXbjNmQgM9J3z z4t<_q*eiiL)#7Pb^C|_-aW*;ZhhXbA2@z@yV?~aUL#0YH`=>Dj3M`5~UGT}oqKh{UIby#Tv-E2pkproLo4^c*jKTLz9VJu3I0_}RA_zHQXp|?^U$Xe#- z6{k(xME91*aBm+Ak-S!5^zNUFJUgvuYftla3cpKbCN;g&M>F!PD8FPH?G#=)S}B0^ zYK9O1Nl&q3`q(rc8Lr9&)D`CBAjC>7%kqHZZ-WzJJmDVzE9Q+HZyn1U63mrabwNR1 zS;O6EU;gi+<|an6KNoIz2_zW8(df+IHJc{Xj2O`8gBLIVoa7O~1-93Az zfxyCgO-Qj!Hjnoyu}JQig0Eu27=(A;>^?t79F#8x0VpCD<2txzgK~InnE#q}?P2DY zzR}x=4Z^I)jBiPW#Um)5!~cRY7yv|H1ir=U?z_3T zQiJ=4Ko>X)JzMH_W|yAHJ*pO zVKZv-m9~w0>SOfWtWx??)y(bG2z)5$V;1u8k&Ubuvu4Vhl`lf!x@7q=sSx_F2A{2Y z2>8I9%rSFg z$c>6O$~6-uzK_fltEtJidwqG&&ufN?7w4_uCzf-J+!c%5nh4E!HQI=qkU~Syob;3P zs#u32K}P;)KR8)}76#!R|LMcJ?1|LAx#;o-i(( zdkaK3?bLWsFrU6mbv?dSM;6|vyIW&cNWAw9o7n6T=48yw#OKJBjV$S$(UNSoZGDNU zf0sZ@GhST$qRFu-Xw73!OBjc9`KebTZqbS2$)I^+M-WP}ck_=g84H_T2 z??Cu}$+maq^u2#)0sg;BxY@oFg(${MIO~x$dfuEN?yy2s#WO2@c%wn~t{>F$ZuO~! zT}}Gb=1j73<-&|D(%7PFKhGjGE0(BZ7_$8R5vi?;Q*FbUrTGF3L)kOaZwTtsV5G#Y z^mO`+uxU9>o&%oP1S_}YLwx&vy!CkV4w_(GNVLbsXh}2n7isfj@!lp$352mtdY3!O zFb`A#H@JA0H{3;`l3TJ%0tNLyiC1|7`91FGn z)zGQqXxJ9g&!W2|{_GlB08`kZ@IfqhRy`gd0tSVFks}#SdS|s)SdcT%+$Rg?iYw_W zLt*9qtswXT*E*0}L{IZa>@!|-2nh+|?%k*U5bbYgc!4tt22}Chr#$wMN{@C8mJKFz zRg}po*Q`aKkrmIG{rT!~?SI{f!DJqYS7qs?K&dKuM|GH~nZF-)g(#D2;(3IchCYSF z?ve}sm{Ksi-iBIe;};X18f>d(-gh77jF5J(-8h^t_*llct@zRq1hOb~|Jp?!_^==n z){#H_EqnWXUduHqeITCrGi`MAPTx!A^rW;-*0}P`_hZ{ADII}91%t<%I(m);V4{c* zF|eZCO!k$ds(#M+6oKeIq@HD*8clvzPt$;HY#lX*gq2XuoP*Hr2rC3L^?5c zDw#ZXDCxK83`S*kuQ@{J0?wC5p1#7E#_g@dubiMSaff}Mf&A?<7adP08;6eSe?U%~ zX?!=l6z@c?##h2E@pKUFUZr9el*Q3~Ijccs@jLFUn*#n;OaWtBchS*Zg|1hWG_VOC zPxFB7m%Y;S)WB!J5#l#8eWj!cfoFxO8nTfj`hazNBZVp>%g%VaJTY@7xHo5jOsN1y{@uZhXu3%cyHh(tC7ylsY%$_Ehlb4_^m$fI7iVm}@4q z_Lk-N6}ulcpeIbdz+Vx zII**HY3a?!8mRDyw65S7cr|T7(#1O_%_auj>gu;=FX9m-)W>9X)d=>kk*U*pYQ)dh zw)Vn4Y^T%f&SIqfB&ecAI`N|XV>$K8U#=y{L3)I9=ut)stA#ditIdeC_%WpSPG6sn z5@FK^O3Wl(vnlcO4c_u1lpcb^fkR_gplo6Yp+K)W0%^*k(HG3N@gZ}TpxF%%)0{LG z6T5!~*oOJebS#tXA%K*p@Xo|=S{V1($6(?YF=ZTzE3#|El*?M`a|yn!>43!Jvjyx@ zft~v5ZtQ?TK-1fVwF<#jdYXooFS;5FU(#s^J$7Nf>@uLKW5B?x>tsbP2c8Lh3Dhne z1?&z$TRx^g=S1lY^l!U>vb^GR1_|pL9D8#!@JejFIuX|fw&4~}xi3Yq|B0mPKno(# zv=y5N>sm&vwCKfiaKxUq(gw4`BAsM^dzeGaU!|A?Ar`1fwC7AqZ9}IBRo|-`)BY z{)2U0l^pRW4Zj*4$yHH5pJc(;^U*x1@*%k8ERcxBOUtLdEy`dfpCU-xI5kMyILEeo zw&^0#W;?Hnhr#uTuf5~O$Q}gE)kdBp43?YU^M2j6SDa76&E)+ z1sYXaulXI4t)jez>s7nM{tB#SGEKIC0G>`J%ELfw@_Zj2=f%tX)aNDC>n3pf;}1_U zXTA;PScd6x?@@QNYFewi46UVu$@1qn%r@?Jo_gK&)O5O9|BFW^*{5uJKSrN9#< z<9?lKcedBr>~ove4x zv|-NXO(mIx>@vJk0tlOYHMUJ`M|oALWK7UFRd?DWl0 z;N#k939s2OtCmB@sYu&9Z(kcQl=UueACLH`F_xexhi+S_J{ghx6$6g&F8wn!pjWkor(-@zqd%>D(hg3FN2pg=^T+r z%{Rft?0zU;+#FN%tC*!U={x9lW-y4&Dx(G*%i*NC!u8bB;D`B8#-8$&R1QaTs;i3# z+yWvD5*?VeLfn4Z{D?~&mKvB*K&f=VZ5_qZowj?6Q}C{|J|jdC()g7}p_Mx1u)R#L zlYuzWp`c=#x122fN#JrIc8|$PoZgosxX$4G(!ArCy5oim)a>%7Lk=hHKQ)iY-@@@70-jzB7 zU1ASfv4E`WlI_u-`L6jFFL1JOV)lVs`v(>h8sGUDE;VrJawv5oB;V?B&};W$-T5&# z_GA5=Po~a1|LQ6qp9i|~v`AKW?Hqw;mpDP#GO*qpUM0N|wn=SSs9oW;{CLC*i63{iAzl+JnR zJ2`oB6g7TPq5r-kk@R1uv%o%`%+yG6&LfsSZ=!F{yFPjMAAdu{xH(HR0`rm1G6Y)J zOVyN?R6Ra6-RsKPKcG5Gd8Z;}vX#l0L-z}iJ;3A`iJ;EQ45*e+6qvZCXBT^Z4fg7S zmVB%NksG8e{vHQee$leFtW}o})DwEWEP>aS;_BTP0V}QnWeCD8$P1<1KCq*?X1&&4 zgV_`F*PH{~^Z*JsXp~f0onPalGZnO&>BNs_zn~lJ97nZgGd_5=u9IOZ7hWw7T%Rbx z4sE*Uk@a3&kA6XS)cAVD{BcpE5LKpEb~DL$q{y89a{34vc8^y7=v%O(=J-ph#Ol(4 zSxTFO#zqUj7nFFa_(nd}#*HQmD(N-mtFNi^KmASFmmi$Iem7u_@i_wv6y-qL zyRC5W7_c4523&iac6a|D(oUmLWOJrLX zYVRF7AG715Mc#A7BDjHWvo;^*N8DsWm-_f)t_nXC$7kz;G*_QV=-eMS2>H@ykY7G#7Noy`b5+dFR^;Sk=$J=AaP2eicZG z#Vp|6?(7~rTg{6TJx}H5)H_EZc}nyu+<;cZS*!;T+YX^GvwVbR6~XKC0#n9EaO-RS zv^`BsFrfrgJf`B`%E-Uf`bC#!M5cT$fRHXzU=Jxw%0P)I?n$+;lwF$vlPQ)i;p(0e zW=;0cHdL6EJ1Ud0O99T6X(#G^a4?=Y3qPBW;5!MdKCA-N(SY^)=Tcy4q5m^tEtAzi zlsu`wU~GIxHyFX+%lufVetaPHpt0r??PhaqKM3VbAuygh=nNY`YQw|sSAqu5k&{`bUiWRlTsq)s|ize36 zFeR@&P`Y>APx;dim z)&QBp*Z^twUWu?F#KCrDTFx>(IU*>u+G&EUhwNWAAu+jJ*T_jW2lDkJb1nE( z@H4qZGJ2=!ZNd%Mqzj^%L|(YVbbt7ib#ru0;jR2Sc5^uWh~BAX{B2fsX_Uy*SaryzN7Sm8z#nAGL2d zJ^2yuDE|*II+-2ob)4%!Ef&fBlp|3taMZx%@)a!G$;R}Kytc7SL20y+2pP)%5<+i% z=5Yac$~;ej&*%EF9#GYit3Xf{wK=q z=xoAHI+*M2h(aNz8tZ$+C(3f3+2t}K^FVP=Ma-3)$l|L;Va);T-ZN_=as^J7ngvYa zRT8L0a>M)R&KBz`eSO*?bS%L&8h6#KYkD41ydVSIoucT_W-0-`-NSYUEI(j&$7M!w z^+zc70Vj{}bqD8G<0{OoyV_0wy4FMMNazg_=0iEHfP<}K6T+sC^ngNDnqik?LP5U? z@jAf3ZQL8qU6RY=N&SN7FJUrQNq~HJ+L0w5L$9Nm`<7JkFn|`Pdqxcz-NUFo3ZmdN zFVst17KvjWO*FRQnbeR+i_3a zVLa5t^5eY;SgX&HIOMN>hJa@YxlVtyV1R7zvKIdsv5tr{4{zj&n_U?xu=VLX{I3sl);3Q^>kDE090kFXX z50PVhFH@YiUqKGaO~aHIV+hiD;pZ7iTa#C4RHTvA;f>OiesoZk8`UB1uR^0^X+1b; z-7b^8`UalJS(8s@&AVIETsS)F&1XcEZIsP6(}QXiDnTxCl zCwgo2_$RL<$RU+_R9xe8!@Ai6=u$=z)=IN0QVaVc?O1zKRlrnXuc4;S+Oj39V3Qau zs(OkxCoY(wQ`vIeNO(UFsMgUjB65U5O7W%XSZ!_fc4~co;d^pJiCB`SBPJ%KWV#gl zoc)P(p@rr5j2LhWS5%wsY$}B-e`E4)Y-jz@!0HCrP92fHDSa{v40?2sv!fc08`8_v z^7izbkXfx}h~Mn8Pm{gAC*PW~M5gG18xw_dBv_J_PM%}c=i~$Gw{S*k1z^fSp1Vl&Oy``~>yj~Rghu{ooNRO`<)99$K9HO=9=^b@X?1U5V@4cx;t|q+d z$X=NSh2+fb&2%ajE{e5Iyh`*}=h4rMnxZdf8CyAHrrtF_dywl5Q(Y*9&f85^=Xt@; zbws|Fy`5ujwvu?a$-yin)G7@AT^F4}F3o(&-5!hbO4$lUNNb=Z)U>4i+!}p;!g&E}nQX8I{2H5j7`Asm@Z15(7x?>>MQc&5l& zOIt|foSRVdxfs3fY(oj~yBW4FI|HOhrg;|HGYteynrhiRSD=2=!9a;@cQD`dm_N7D z6h5%CTSum7PzC1jg@}{b7&?6rF|9bqlj3-BAI0QFS)u+Uqp)&g0|R5d5|0 z=!=8lc)S=Ta}yyf7>J--xJ2g1d4gL(^_PE1ypi*kr_H=C`D330xdQhK&BLh^3-5!P ze63l{=NN>?Z;dQDUD15jUOg{+y`MXO>}Jtnc&#`%{zKX5z3K`1)#bN$G2UUq=y3ce>^~YodAlQ}08J7e z&TpM8GbdtZK1VNnpWzW;__7?8_-xxiiZdmwqfbpmMU081e_rX%pydyhR;W1kgm|1b z_N#T6aCi6xVXO2Z9V;%^qtqX zJn@_l(~uG|B~KQAVH4=SsUi1vE(`t}U63$at!|8FS)1D^J z9v$=f}3LJecR(i>v z%4l)nS;Z(M@7$83+3UyNi^i8}Ck(2y`3WoYAh{5`nJ_>0e7v=85SsfI!PKrOX0P9? z!Ig#Iy=mZX`Fw=xjRa?|1aNmTB2KG{6&|ND7HCv>id|YGZ{GXSdJ)$DaHzKdx51 z`$|j7pu08V1l1BAxNw@;9MLyuJ?1RAN56chKQ4^+&-gxo_P3M#|D9ZTmGyrl7f55q zo}*A9f%>LhS6qCLe+n08qE9->mz3G;Jipmo(g7D29&%lceXUwoN!y%@zZmb zzmP~|E8OCEOZv)rQrngU`hwSpAjR)Ii_|19#Bl)C&(gdLtK8Hb_Tu!|-s7|ORB z@e?p7wX5eCyFDWf_jDRt`a3`N1M>(b3CS9`bUeW zD&u1=6^xY*zP``;3h;_Kl4hH7r@MnfA&JyIy(|++$sJx`@%T3$Oh4vO%1BZ3Y1?pl z@JYX%y`4_03noIxNM1Z9I2Gw!z8JYTxzg%QKj=!IvMawy{r?gH-oN1LLi>WEwz#c6 zb?=cX_BwEzRB4H4$5{79!)~Fk4F_~&F)vnLisJE(go&E)ie%v`!3Oa z2XmB?I9pvj3xGQwtJzWAZqVTI;>qaC57hYH-T0m$|2`%wp;)>8(Q?U3<&VJQr=!R` zjyTilFK8 zN6<#ZS^)=0w3*;esvS->ZJ*s>IlJyK5J*pp@Cxj`SozBcrz zfP?m$R0?FlWXo7Z8)lr8Afo>TJI9Gos+G{@r%Ffx^n(&9J)CqC_o3E67kOX`9M>$f zJgf~rNn#q!$P>L9XNXTEVXLyr3B3=3a>dV#e2FE2?%kXFxWn+NGg;K?u;U~bx`lPa z&2Ed_CBfjnPUOq&S>*aWBW&m}f!v)@S_M10gy(+P6$@>8eGTL>Ii zz4rH<#WkTITGy(80b?e6`f3R~Q?D@M%oX%zcWa})PF&$k?0NcXR?HU^y9#iG2uj#@ zY1ws&bynFmFOS&VzY&txkVVO3=6ip^e&GpQRS}t>NVyO4)zaiiH1f#j`;@6&el+!# zk{wP6jVw|U5 z{+^Z*&Dl0Jz&@b)c!pLzuWf<2PCjHBkf?JEW~#CIYqLY}u0UqI-8pldrv)C#VgR$NhR^Y?lkSfgaeY%lRhI{S z!VcyynlDnJBNpqqqzh4g$T~h^GS$TUi_YJ@Cxmz+(O5CJ^xv=XCW7Q1nO(#2-l*Q@ zH~4mhQ6OF{@e=fH38aLDEj$Fwck{!-&r2rAmx}0?a@jx|G}Jm z5`a(#^fsu;D$b~Tms2~p3-bT2a;GGT^Pv2To?XS)9i3?H9DJOcHyo?`adm|7;6 z*FvbfO0C{T;08Ih?T4DEXaQktxo12y*ua!Iq%~?~fvL?Hl-2+4PcntFHX7*cgz;ax z)3`}~d~Pc@&3uK)esQt?CX}b^p2(JdLK@~h>3^W)FN2gO2;L%o^o9tE!fI**{9=V% zY+0$M#HaXu(}5GHT%ShFUcDkfmJk+D0)A$EiAezXYAss?JshD={gX%uTX#p(V0690 zkL0`F)mXL~bvxDFjb6lrQy&Z+mGybzZihI)7yi#V{r_BWJCKa}DBS~VX-0@DLt z?sT%yytdC4HoD15uJ(Yl8uCehQdK(b3lwLliztf6GNc@uIGUEx8vXFyvn?tX;#d}P z9R6|$u|eP~sFFZwp)c8JzPoMoBWKPC<}}3SY4>_8qTi@y`q7g7sVNL#lDt$yveE__ z(BiE9wT>iqN{i4@cW#yIM-4=r-t~>2R5pa49%SKI&A#1;w>0=RhT&gTnWAY#;`by2 z;qd1&J9?n4q)1~7O%m(0zAhcHM}_6}@R3g$q9r?Gc2}@rBzuvAT2(EmX`Df=;YJ4EtTD@CqNLnGo-d6|%jz7wzbxU#7>Q$y%j$%{fyO{HE4v(gLdoSjw1 zTF`sXj=Vj@!OtFQU*~A;n!$SIh&6u%OI@liQ$fAA)+!n+n-5v&QE|b!k%$!hZEPZV zH9`3_%~eLjrW$A1BPkT}o9!rA)8|m!8fWCf_&>RXm)OTK{!d5Z5+rdZrf!q@d6UuV;g)t$ zUT^xo=!1|o+Tuk2BXzJV$uNrbf8i_)T$;PwK8i>{^zpXgU+r2+g})F|uhR=us&hqk zg)hp`5ND?KKeyvCa~1r_Srl9Skof;WPuy;$JEa=5N2|#ST=Bp1Q}-yqOA{=SG)A3} zA-e_1(9^#7?{L3yWi5jfojKrfVe;ah>8xtNHw&@jX?2K)$v|I!{O~XApPzMI;nka0 z@+i$tpH2d~rP8!k%K7y2L1O;OB7}8>7t;X zWCqceEvBx}$Y77W*!^aUGeAnkt@%M8>MK_77{AH@!YE|ApI6KyZ5mXjb8W;Px3@`kE)N zVP9X_(^1w(TjLb3`{QzOC%R>5d;yJpKHY(2Gn3;*f)?EHJV{(}=So3g*6qySrDRk* z+$HemSNkA{Xy*mLemcJi`pf7*pPU8KQ4GU4jXFa2Q}#h;BQ%(# zH(lR(>j+f^wXl293M;Ov9`J__;{f7QdNGZFy_NjJKEGJ@L`G*=}$_)1@LoC zL?4Fv@FUjP`p>WstI4F5#`U8aJ$lO&kHCr~@@Xut7@{Tg^J@zakXJMxE7CB|l#!{$ zFRLqcrYES0vB_}&z3->=3BK6FGCDW|UMKhx*g{*!*$=a;l6h*?pzw^^NX{`XfV(E9 zITh28Y51+&T3AkAy$1Y$Q+Maj=EulpBhW@RrajzAiIHo5+>=(=Rn_<7P6M|Ltm?o{ z*^Z?#Oa4<&e$I@!B~>X}^q9R{!XNHQ8_$AlhOadj?X)|z&)ibkzJ$Wv_^jiz*?yA>jSWg^v!6z_b zax^!=QUx(UEV0__UZU4oaRac3KgaPv85TaABo6UyIp2$k%dh=OX?N!(p?Qn?%~Uds z_n^P1!&PkmXC!T46ET3QpfI$%5!cx-p4OXGE|XO0B^guXp8>92qyWm z_KwstHLb$NLprfa`yUGSHWS-;c^509Q>DoUT*DC#k z=X@>MAkLG{1Y$9er<-it0kNi?;55rLH*FnJ-W+cC8f+m;{JXLnvn{osmxlBH64v|F z>cV&{#Qc{FdHP?J-DdKCr|h=xP(vG>$U0#pu0qKI?Hv6K1RZ4!2RjWQ4cYTShxTL_9?$`CtTb>KC~gT}*a zr2%!flWLBNg^u>S>VCp7gWZb(zDYn?=`HV2uguoLV!`Xc#{G>1wDv-`2&GMf@5V_g z@e_fAMuvu$Se#F8-$d|AhlIKWMnx|VTj zxhij2W2q`^Hnqseb%>Fb;h>J6p~%R1wk*{`BlWIA#o;QkY=s4dl~qEX-j6tx5H9p< zf5-5{OSW6Lt-L6GTUHcoR8Uk()Sl<)-S7k7=$>c$RR*2W)sEd3s#uPGaPuPc;GBCg<+7=9Eg)ethrN z0?6##x+ga{Zp0XAXz(2}h)Bk2MC`Wij>H-=;*IE;dF|{0Kzx<%DLVuND-OFf4Lj}g z_^=6KTW-Vw{6m7dzZHpUJ_aG?_KN7udJSQDt-VF(oAvGE<`>C2Zwoj{A4pp%tY*I2 z>=TF_5v5Gzj4oWo`5gBnYM*ua+r(Pi=s5ivv;M#r8E&K^Y25ui!0|j(^GZy~nlEUN znz;bf5KVRJvrxIzVc3RbBu`W)$e2=|?QUmVH}3>U>2OXi_Xw)IzdQqA7{(O$M5h;c zPFDxwHRI7HUdG5?9OG)mDQDR z9lS~VfZ)kC{4sN5;r5iY4CG6S24oL!6yU~hB8ll4Q0 zJUB3%_cEI&T^BSlK**aoS%utrp3qNYzfMoQ1NGe?q}E>(>TRIz(t*Dv^Hv_OGzCr5 z(1mD3OFXCccutql;1MKCZ}RH3tmdxf zYMNmwfV;Xalit=K6v+rEv4o&`qc0N>Jh_QNsgyuzD_^t(CU@~Rhg8qzxH%vyY~95< zUaa|k*rQt|lEpl@{2{Os$ZG3SB<949LeF|Q*`SX8K!M=E$cosl6$ks4NA85ggEQG1 zyXDB%<&H74B%^C?hFAYE9^eQtUi58Ih)TRNWH-kqk7>xg$e ztAWXc-O49EwVmGdsM#v^5$WosmQcO~Dr23-w+;6*+1}qNwCh!R44II|x7qw;ckO5| zKB=p8XvK-GVGD2hrv)#kiPnvTH6gZ(N3pTpMurhbT`I^VMZd|4sJ1feEt~+dSQvGe ztG~+-yDku!6nyK2t9n`}tAcO*OyCy0Bqze;AoN-S<7Tq2ZAqr{3UPwm7GG-0TmJ>I z5R2K9SWnEP0x%$)QK+43ax`U$RS`nF)pc9uEL-jlaVJ+$>?gZlc3^zH*AYwIm~NUu9x2HyuR?g^Shcj2hxxX3m1py%`scR(_*p>`FXxi<#wybD422e z>)9;hcfwezpG{Sa6K}~~;H;F*W_&)Z;LQFS>KPo!GbLVqZ}1pit%yToII+`jl1u2n z-Acv7WQzbVI^QoDX|y+Iuzxd#_RHuX?3q1$AZYgFEO1Q)*+acE?(T^GRz2`sx7nN) zUd})n%-BNFCXhsxH8IpjNa2Q)hh`jWxg7 z2VLL>-Z$xSdxe%xQ?e0oBvlu|q2HO;oHA#g-V|@h@~IElS%P&b728^lrM5Wv84cE7 zKd*ZG)+gR}r^g9iFISd6a77-MXbX}T^FB}m{iDurf@g5K=gJopRRBJAKE^jkV$JH^ z_wGYVA&qJFWgCPe_uwKr zm)Yyy+HRDZ(pwz_ZV#A4eKeQj_C8c(Rx2KOND}KXWit67jqS15+SA1P9-%j#+pQh4kvkex)Il{~>+uUF#W&GJPSBxH{#DMd2~}JEQIV8I zEKQu$W;&WV`6+wtA^-G~N*5PN3WnISU`$DPnG(r&?aq3D?cq9xJly&&dqfj=w8E6^4{ zHm`V}u6+w+)r&;ZpzAl?z%r~kx75GRaQjt(wTFt&)y-8SESOYI083J2>9tFju%t z#!QD>LtN;;TtMqv=DkJl-N_Lr;=YWZlN%Xr@!ScfHlfxZO-L9O>B+frdYKL+R>&-h zLT+Ts_c}pM(Wd-|BlE@nbo8I|AvhSNXdn3xN7@npM}JEUB$qgh9od}MbFU0>#laQ8 z$>`w8-tjAQ-@)(y9@f5EenR=RGJ$&>1EP)5Dvryh!t4M?vALBWfsL3VSfOEt{o!gI z7Cr@Vh?L55Jrh(&N(*8!e?s+FrPJNddQo!yJ*Ad~Lzmf`VR=UyfX(VJpjIC>H4bFO zhvf4gbIFTsGetgPugZ)vBK>J)bhb0jV|ZrQ-K9w3Z=PP_Ts)dCWX3XE>K`d@!`9f8 zNgBXUwDZkzR#@#-yM1>Dvya%KPPhxQW+z9YRe1U`S@NqdZEsh0+vN%a6RSqWf4^4i z=qs1aMC_6Kqx}QVHZvwUR{Q47kEJAlgd~C9z3zSN$&gbaZ_@J8sm9LXS}rC>X{pJA zh;{$kK6<(aMwI(WLq7L%I!>ux=9(pr*>v-vigNNR$BbB1k4VeHnp@?!rLgK~Y<@-* z_=fBEeHYD*^n{Ri9+NiP*sKH}@f2Yq-#k@%$Qw@fbfWssiL@6$zJ~6YdCg#K1xj=p zh_M_B)w4JxH*T3d7ew1f7EeP`R71U@Sz>aAd_$j!y_nCVk%$eK>%%(pbvaTKICI5v zmwJyXy*%#Dw1e9-@v@2-=QAL2?}0@rVM%BjpJ!M^*CfKVRA6#UV-%3HS?%UZQpI!8 zmw3&T>EW_NGpkB>Pt;pH%=jrp98_;a{)TIs{=)RT5NBG6gUdYk@N!d3R-{-Z(IfmS z);!$W+EVw8TniS?P-H~8{8}p!FMDqljSE4u{novnsQ7!aLs}O12ct!`Ie>)*>O)fd zi9PICEB zBey8c3z+SJMQ_s32l_Z_Bjm_EgB}LtGtEmUey>C^X`PMk9iq>9^gJ(_z8lEH-(AX4 z55>a`q@nI64rbbQX_Nc;*Z9Omor&oAK*`98qY>X-?al(+q)(Ll!K)xxX8qyi+fBkp zhBUdG$czVDMf|>~JOk*bEsH>DRetj|b8-W)T`35p#Ga3mWelrj%6GUH?oOW4=!0mW zs84U4_3Dt7mhhow>j68(!tJRIPYE!$9-GE2PT%+&$KpcJGoPn~_# zP60zvEM61xOzf_&;tn*zb>{9~T+pbfL=p^@_TxSa3Sx1AP*w-L13Td(bs6SIjuGU} zXL!9**!BeKZch5Teh7ASBqoSvZv`PHHu2p5vN9}B>q?}}-OrwD32Me!daxQ)@pShZ z^bz%_SRc?6KCYNL1)<-k>JLypu9cZ_r{vd^D_EEePkUM;U+wY*o&@#KVlpM<<+?Sj zC}b7GDo{R}cCBwOqFIh+^ma$VRB>!b0)GGC6;iY?0{|b&+{+>Fw|g|YVwa}vrS5w_ zcY%i7WQmK{=9*9H1v7Fbl%|hl$4y!1Kdis+3i`cxHR!fcI1fU zEsRAsf?uh7tD|D7R3VVZqMn&D)d!5dLzB=bxgz419=uisfVak5SFX9iFM`SCW+)e2W^Zm)g4|A9R6ehawQQ$^AH z>x~O*uiqbAW6WTgmiPPKe04^b2E2_q8CXsqM9t)1w=z@>Z(*nAX9(|fnJ7Fhz6>n| zJ#p9c&LB(o=d#+CYr?kYO5hH@;Sl=eadyeCXu`L8Md!fh;XitUqj2*Uul8l0NWorO z>56867*Ta>VW$k8c`zVSTg`k$a%7T^@2*(MiM4-ZuvKzH zO?)^2!}V~~B&9Cj6mY^JR_DzsvS)2`$U)XYE*M#VU+G%;f!z9ZOQh3tu`R&h_O@o})>_yk= zeZNIHtzV4FO;EHj=y97|8s8lp57TZm07JwckLRs)nUXAf0!nr*nS4(eb?y)hE;5Hs zui>l2TMhFHQAH`P9QrF$8+yiInHxn!jgKM8C-&++th;`dk=-?;?q$9)om{voek}uJtzi3|Nw-38Deo4$dZhJpXXbwS$ExtT(Q{n8fjw01=x5D`A|E}X*Z)cr zVRUij2rpdePVw*APgg7b7);8Eo0KU8muASk#`x^%%UIx;LUgK=quibHx8B4_v`~c4 zc}zD4`j72NXF|2{xpI5#H0s;aFIT5=SkR@i-x0EU^GjfW@%kGav%{E8DpFg{FB>Bj zfyw=CYNpFoW)m>NueQ`k+sRVRR@*-E?Jf3fF9ovw9L8P79vF}+=3{2XKNbZ87$%uI zv^G!TEp-qYMxE;lg;C1yyDnYX;+IFYK*Su(4HX%6IEG2Og?S zL)_loc5f(`#fI@!n?N@Rvu*dhSZ3(6&(Gv2+#2`Rw;%`hYWx~(o=`Tow1qbAZ;C1| zuTSC0JLs~u!%JimnicdpNssx0-E`TtKgyVN+Yub9-BwwOcv7wM=38y)y;;f^gh z2ag=xUMzk!F+I8?S<~hdRKpy)Jm9~27Rz;Y$%5Z#|9t+H-7Q{5TFq5`siBV0aaPTp z#ScN*!0ncRn}POlqu*JwsvKuxbT)%F^_=&_B*N&nijWU+ZP3?|20iPQIm*bT^82J6 z!>*?o3bP};p}nIimdW4ItUU^cj-z^NAd{1j5B3X4^4~K$SOZBhdT!A>!~KDn54bEL zMWDA>9^U%eNfN^=@eXXi`pKR5px{z1_eyRSbUS+8j>LVQopVUW==e>F{d!ule?Em5 zdbFB1#L21H<1X=I4#qR!0p~aM+4Kvewx-tW4?vJpiUV>a#vo14YNpKNNiN4Adp?=% zhNJ@*Q${_nC&uDJe&u7%ygnO)ja{-NYlb~o;}2S2*OnO0XD7Xr9Tb8yxf5A+AUmn; zoB8>6TO!T3twQs`9wGPbC)?VWZ5cHpB(AN8;-VkCgQ&WRuIg=4CLe$*_)Vpyl+yZr zE+LM``uax&c|&l>Vs(msUTB5Wiwm;m_ws^K-!2EEO%8ZlVOe=(w(+ElZSI9<%VpPN zVF*f=MWSM&47Ax}6W(L*{f;Rcv63}h-zKd31t^55{{SDF(7LumX+F00?}PJ9&9x*_ zERdO;00hol!>}ihm6q)q@{mw$+gP5yeTr-+2BO$OFqt;ta=KTY&A^Vv(}9AJ6O1s{Z}B&{OflFC@lQH4~hSW6o|U%zYX@n-z*1oVlX>Me+4lK M5n16fL0!N92QBf#UA&1W!wgLny9+7IzEo?(Xg`!QC!p`#F@z`?d1PSr^%7~uT zcLEm)4Hp%AGZ&ztlPR3JoxQCov$L_2si~c_g}uuWd^6y= z5bGa>#GFhGT`cYG$W<+EP2to{P3%maO$|9E5L;3Q|`5#Z(!;NT@!k}o4d zZ-s*+hm#insOp|_u;`(IJ4w`Xa$E!Ja!Lj!I>2OirEMIY? zw3uhxVlWUJa=<2QqM#@$z2~YZY!ZlQf7E|&1R>TH>UdxKn|BjUoxjrY#d7$f_|71$ zE(3*=bnQA2evnkDSHPNX%50r@{G|Fat|igj@R{P<_LD1Nw~nzVfQ zM<4%r*ZDLXEVSHe2=A67 zQFK5>!Ht@I@$iT;yTwdl$g3uwZzHbqt7e3DMUkUJc*y$eLiK9Gi!*Gcp!vOm8Gv*T zX6>8w_gw6P-6-iym!W4XSVFbI9ZPt2dIwkxo=SLyCEsvMoIJ8t47CWj9-S zqZ=0D=7yO1?Sd)R4@2V3FX6fM=}U zKD>J}F^#XvJRRtSeskVe+|05#?gdbjsW3b^YWHBbqFe^<5B`Gbmpjb*4(V|McGFFV zOh6?)GLOVN9376-bQmtC77i*t14QFz_wPazPxAUw?YlVV?-;Cttr|uKQfr9bPxF>K3gjpl2vOUvd%zKlyfeGKQ(@P9smegjC{c99J3@V`D0s&aX$?)4VU1*QjtR z3U8SCJ=I&Cxkh=@jL3r6lu^v!)^sB8IOjt0sYdd+*_VZ~YoBvo#``*Ko`KF|JjxJs z0e9d{dy(!^9w;9s=qlyQpR;rJ<>~qJ^rRroDwv4F2nR#m>$o308x&(ZLy@2d5>q6@ zJC1;~(M#Roo=LTgomIO~-7ZrjdrX28jVQ|HQjNQWGu^Jw4{&R{zc+7{iYd}$vTygt zgd4Y2bT^Y!p^XEnWWI*g>b@cQ3)Zew$8;7r#oSJ|9?2d)rpB&~_jOa@$vy8L`^a&}*(t zEjt2lO>>jFA32-PH|)wKI;WU?kgsV2ecMeF1o9)R$**}TA^kQV!ou^8rQ$@%q}R)y za=cQm?})Y$KIa87_pT`m&RbR7EQJql!ygBq8um{;PI#b+ebGAA#LnWAZ`Nu(?768H(;z`5(L>7ioj^q*_zauZE!jJGn_X%KQ5Qf?8Cjz zczMiM8D}5BlUb99Y?m)&kXVxeY^!xalET2r@Tl+GImfkFs^SB94Sh~GO1$evW;E9$ z;S5}cS6m@E?7sw=oti9yX3r`3@ggdxt(b~uH_1hyENNK@Sjsc4XvO^ zSYWM~STy3#=H8Z{&~RmJUR&8x=e28cZDsprm z(12Z51MIRo_Hfw|XLu%gJY2P;`|$)sI2|YO4|ygk{!Op_V2ct>AVa9vVLm;qbAQ~U z%f=Vb5U>00{uqqfu^&QboY`?zs;a^sL%0Z0V6f3-FW)p^-0~kXsv90`Hk7ia0HDPJN*E~ z2P@1%*fH}*k|txbW$}f&E82U|GRI9|#B4PP@v%&b&z&lETDw68;emdL2(BQB%VO=r zzzh4fu`%_lwjT&`7NBpY`e<#OOvsS$*eq(FYaPyDG@)ZF$(v00CjFzc%j{b#)Sroy zINc>g2&WiA%2~h62UlB2?75MCJW5=zIe2`xA75-Zzr=<$(D=IzzrVI+e`mfr!*=k& z2FFgN56MOt2qi3MCty#B$3x!FI)b|s~D_!Z2^!LK193pqrpVKwT z0LiDQ%TyKS9U=V|Bu`vwq_Ulmwk$eJQ1rUB;%T$ua{5>t*Am^$8<3p`Sh7e)N%b4f zBv^8MAz?qM3zoO8fuEbv71)m7V8{<95je{*e=ki6Bd))}kYCR0T*$~7JK7jkPuHv` zT$pSAVI2HxY2v4`MlrfPREfxHhPC2AAFrQXp5ML>mIOvl7(y?)`-SIGrEk*qwkkN> zOT^goE>884J>iKe8!tG|GJ-Wbkv-8kX-_W(ak+;52;2W*yxFMCo{O(?V|*Eq9?3ub zNvkizQXAoT!6ffgX#J#IE|L4EHS>6()v;SQ%JtAC6`(H!1oo9!ezRBFGp&EOIEYub zG~$v{jW1jIJK!So7FuCT#M5++eCF$eex!(4%0Z5<#NMIXI6b80q~~bW_8NX!Qul-z znw?53K!MH}_?gZye(X$ky^3iyZ;6%Z<2W#}fi>>rlwu+KaO?DNt%1)04gSjj`JSoz zqfiMumXl5;QfSKhX$*J_VzyFM$Q|%dpuz6MvN~<2oGV8il3JhnaL;-Z?Q>?aQ!+j! zlAQ&Sua1~%Vh!DJ=GiWppFZmD+wf3oul&(@dp@vpH264Uoj*_=ROd}nsYf5OPu^Ac zYO{Yg=#e!f=5v;VYO(WWexy)iRoU0O@9JF^kAkbi6!UOVw|JBb`+Q#fT{|plj%5f> zHTW1$J}DKN_9vd5%Y0;Z;_7+q=#12kMo-O|3z`t)#5ITZ@7Sc>e7Lc`Y$qZPpzk5h z+P6NRW1XRb>}Fczd2l?Py9tO2TQNedp%O(}rFBEe4a+4&5YS@Z$jthIR#m_S<05j% zm}jkPvT=0aX~z0h7+*yMSdgduq`LAz$US)e4XaiSx=6v6c>eK|v5ucDl|NsNP-8+mA9D(hNreUDJ3yyWa!>q?c2dG@ z4%gP3=Vyb-)}bq8To-Gm$mRO2?R;V<=@6)Fuhgd=@_hoR-~|}MHDCl7>8{%Y2o~cu z10SgvF5klL>`&$EtMk|oaXwo9@`CAVP0F^M1;Td}SoE=X_WIdcL_Hrq{l33{!@in2 z9l-L-2R+bTr?E=P37y1LJh=KY9^N}w2O~B5ok}94Tpa6%bWFTw=iYVf;=-nJX3}+Y z&5AK5Vp`(pLjr{Vz><%vGF< zV!3@FJQXe{rkzdhs%ov)SM*&NcJhOHk112vB+H+tiITu)c!ELN`RJ8}+dS+~5Xxe4 z;yf!9$L)3`k>p;us;!h}`JKz~gT-XcuUvNhpHs&k+OR6T<7*vxx#ISoPY`_17|1+E z7TKHc#2)+xOoPjGL$|T)X1bKUj@(4I=Q&=tfCaNvQnMJ^H2R6J0F`+|;EHt}P_uv2 zD=?OlUkkFKxW#obZTavB4&IkTpLS*cRdm$<{>EnLhH?MwSDbaQd(p+1l3CG1<1C36 zyXMw~jxZ1*1wx;t9t7iqh`gKOZ1%P1;fv3zIKhg4kM?0zsG+L2QOX>SEkBozPN2m? zT;gMn3LK@fcJgv&!9r`@Hlz;;S;NqDlS6YSn;B+e7+CD6L-T5o@uAW`>|TcuasRjY&Sfo5N9^ zn8Zn0ua=%3J4 zu`}U-CC>tKCG-y8Y4&%X^<#|__tiTSCwQ>btgqJX?>F?E@u<(9C|VRBad4}VGNR8j z1Z~q4QR&sjNApaG7FTkNsWke?_T3h4ScIYEio*my>{LHxNI>{gF2|=vZSwZfZKqvp zXIkKyCIjLGtAvVEhOreVeGLh;n)(-v^L*hr2}-0K=#{0=bJpk*cnywQJU41?$=j(P zN!en!&0(ay=c;!uFZ6jibA)a}i`zmc80}j?TXw}7?r5J+X^nMB^+Ai2(}{$0v|HbB zO%|_W(@r(}D?56_$a+lEQnwzL!jiprW(ua2%$CpI)hI9cmtSJ=RoRABE+v^U%a(JO zy`(Po$96a{!DH~&~2acM9d4$K%kTiJv8(@u;$5tSn~>8cz+K$p`9%= zd9yw6xMfB~e}I(S3}~A&B}rU8VU89NX?vo%UVJjj?sDcQ|GBcEgU6qIfzPVHVUOFDN=R8n)&G5 z<91EHzS$Hqn^+W2tlS8QJ57iQypz~MQ7NnA)M@Cc43lSNA1oJ& zJH0l#ed|1oa3!P)Y{c~(`y|UbswX+3ZGJZOnt5}yyy&I7UAc(|=|xzFY$$Q{Z#<_W z*N7&R!KI=A+s2YvOyL{57o`lZz7!Rd&#=DAh$DusTu2Uq&-jh=jQuVzOjLlO+unMM z!K8GxS{w(e$%1U%d~md3DL!HevCA2v@*r<71oak_XyHb0lu>7Fl`5 zUuVd?W#6-+qSF0zm2Gf84b_nBk4+rT#IiipjqFXXiF?_ZwwEg0S5gMe=m6?|;yL0U zeV`o7uQw3;f_(0t%L{fIVT>&+ZnWIt2{%6Ra9E9zZ-8}6N%c8nE7tU z2Ao>Ve)%ZGtJxql>u$B4<*#W=H?74#Xs)}7$5lemmCr&s>jHz(7Utf}Vr4gtr#OiO zI4FyOHTOKl&RikXntS-groz?s(djdW+rQvR_fpD69M@A1sxI(_e{ zvJR~Y(8pqkqt>LsC8UMXbIx}pgac%=VpSE0+nbiM72)yVI@h#sDj|Dk;te40Z(@~A zYj)~gutpyD@iem&dHv9+)mJF#kA-NsI$S106(a4KzQh&HqXUzYqnnuaKPiaYT&;cxN} zX50S8N15FEUS>aNnvt@{!WYP<5 zGrI2G%!Hv-fQKFW4<`Naqtf88v@8d&dAh1V^C`o4U2x)bKy5#J|AAmW|D6Pn>vWqD zznQ`!G&DYLp>*P1rO-SpY;0AjlBJS}kWRUt0MdP);d?C;z>MNsD*M66s?OxbK%`Os z%BEPF$%Tb2z{G4SZX*vES)Dr{ZjT|&%zyabc&d-IUU215k7>$R_3 zzc+PRV1@p!_Q2b_4GeBocF@&{QabBt*jTY)6=K7`NWNqOB=Nv;JW*aBD%4{ZXLviS=JLR$N zU?}IN*yj`+2Y4SUA7i2bvS;a+(?a@|Q?&c2An)c|6R}g^Sw%+JUrlme!}@TfFz~#D z`jgjx&%z_(4?#VqFaWnu%EE-6*06|obP^-;I2kA1Dm%NM(TJjg>)#HPkpYZ{>IBcQ z3d)G_CnKaCvGI>P-&8>BJ3Ecv_1q)xbG_V>H#A)gc1dbZ7^*ID>N;d}vwcHNu}eNq zMAGx1${B)g8IaCJEEJroCSz3eaD1sh1C>&%XV;!k67#5JHURq6TKdc2IwmO8HlYV zl^3s{qhRS(IA8VqW7(k2fRSC9&bVrc4St*ERqrR_>^Hx+)Ab278{P&apLFOVuN?C` zFZsD*HR@xQu2Lm%Vywt48Fs~%Wbx*#?~6=H=hXq~CBj=q#xDGz`nNxh z;-qVaZbMh3qO^>X8t==~mbB^it+8YwsA1Ey{52v~%i%f08y?;U(H&XQyVWYWSETH` zP9C!wO%Asqs}I@i_9^IH+K%FgWXAS8gXf->^by&%xE0PSh_iau(hW|Hpv362XFvz_ z{z7cAuqSbSW$#D2ci-r`Mn!QO*)WxkPc*f_1~Go-KiH1=(iFj~TZOcaBB+7Izd9!D zyeoa->N;dow0IH^wf&fZDbwZ5@`IV}HyN|{CyTOIuo~jECJ05I?||hDB-T*ts^Vpp zzJ*!7k81d`DeV4pKhXOII47Hp^gZ)Z9{aNT zWdmWT@Fq@pUi1jm9CzQV_Gocb(!b@Mv^+{JRVa@m5Etu%i*+Mf43J7tw2 zheyG@W9Fe_tM$&k6WVQYBs%%tm&r~r3PNkl3`om*8)YoI0UF-$&1d{33$5~AFr*sl zL^YJF8R9?EmD}fwe;CEH`_`~9HJ%UGy`Q+yES?%gj6F=)>k&y5B_bMhPa~y*h5RoO z@lTa;Z8zO(4B;R0<-cUdj%ZqV#D9JHhdTN51v~|*;J-D+Ieo(Sr|ch znxnAWpsh-qL43ASn}yK7$&qmHX-)C|>dY_~0ow;D|5eahv`cfwiOFXqTI1>QdM!`h zw6&Sw8}`a`&J<+>Y zynzW9Rkjzz&J7v9i54}Cw~AqfeacEwu(09z_mCk`47}&eG}ze7S3Y;B?krw3i36)^ zj9pp_{h>`6_LQc8*K8#@Y9@WNVPLUA7hSEm7g55A4^wF1?1cw^nYr-L%oibQ>?yhj z$dJuGpmubrt1ozqQi{{jn%do!T>E|4T!C3l58m`8F+*}*tDi%!Z_nV2+z(er)n308gP|A#)-yLxP8 zx9)47pY?AU%_yH5HBR#{eP1XU1@`shXvoB&kYCz8M!DlUm1l!C`dzm`#wS9

@Oe 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%0Avi1zYH{THdRqPmx$L&EHw8{c76^mhe3 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 SXo_y#fQ+P~M4`BW@BacW$Y)*v diff --git a/src/configs/logstash-bookmyshow.conf b/src/configs/logstash-bookmyshow.conf index 8ac9f37..35aaa56 100644 --- a/src/configs/logstash-bookmyshow.conf +++ b/src/configs/logstash-bookmyshow.conf @@ -5,7 +5,7 @@ input { jdbc_connection_string => "jdbc:mysql://localhost:3306/bookmyshow" jdbc_user => panda jdbc_password => "" - statement => "select sh.id, sh.language, sh.dimension , hall.name as hallName, mov.name as MovieName from Shows sh inner join Halls hall on sh.HallId=hall.id inner join Movies mov on sh.MovieId=mov.id;" + statement => "SELECT sh.id, sh.language, sh.dimension, hall.name AS hall, mov.name AS movie, GROUP_CONCAT(genres.name) AS genre FROM Shows sh INNER JOIN Halls hall ON sh.HallId = hall.id INNER JOIN Movies mov ON sh.MovieId = mov.id INNER JOIN GenreMovies gm ON gm.MovieId = mov.id INNER JOIN Genres genres ON gm.GenreId = genres.id GROUP BY sh.id;" } } output { diff --git a/src/controllers/shows.js b/src/controllers/shows.js index 9d38bfa..2815068 100644 --- a/src/controllers/shows.js +++ b/src/controllers/shows.js @@ -84,8 +84,8 @@ export const bookSeatForShow = async (req, res) => { */ export const searchShows = async (req, res) => { try { - const { dimension, language, query = "" } = req.query; - const elasticSearchResults = await searchShowsFromElastic({ dimension, language, query }); + const { dimension, language, genre, query = "" } = req.query; + const elasticSearchResults = await searchShowsFromElastic({ dimension, language, query, genre }); return res.status(200).send(elasticSearchResults); } catch (err) { console.log(err); diff --git a/src/services/shows.js b/src/services/shows.js index e11e942..193bb9a 100644 --- a/src/services/shows.js +++ b/src/services/shows.js @@ -66,7 +66,7 @@ export const getBookedSeats = async (showId, transaction = undefined) => { return bookedSeats; }; -export const searchShowsFromElastic = async ({ language, dimension, query }) => { +export const searchShowsFromElastic = async ({ language, dimension, genre, query }) => { const shouldConditions = []; if (language) { shouldConditions.push({ term: { "language.keyword": language } }); @@ -74,6 +74,14 @@ export const searchShowsFromElastic = async ({ language, dimension, query }) => if (dimension) { shouldConditions.push({ term: { "dimension.keyword": dimension } }); } + + if (genre) { + shouldConditions.push({ + wildcard: { + "genre.keyword": `*${genre}*`, + }, + }); + } const requestBody = { query: { bool: { @@ -106,5 +114,8 @@ export const searchShowsFromElastic = async ({ language, dimension, query }) => }; const response = await axios(requestConfig); - return response.data; + if (response.data.hits.total.value) { + return response.data.hits.hits.map((res) => res._source); + } + return []; }; From b7bf923b341e82fa0877778d8b1f2902007f4950 Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 11 Jun 2023 20:36:13 +0530 Subject: [PATCH 31/32] update readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f348e26..4d26dbd 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,9 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) - [x] JWT Auth - [x] Normalisation of database - [x] Locking the DB while bulk operation with transactions -- [ ] Indexing for better performance +- [x] Elastic Search for querying movies with filters and fuzzy search +- [x] Adding comments for a movie and retrieving with Mongo (for better write performance) +- [x] Caching of movie details endpoints with redis ### Example Query for the UI below From 70c842b2d135dd6e30afeab7e82c272f4ce4ce1c Mon Sep 17 00:00:00 2001 From: ashutoshPanda Date: Sun, 11 Jun 2023 20:40:25 +0530 Subject: [PATCH 32/32] update readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4d26dbd..6cdd320 100644 --- a/README.md +++ b/README.md @@ -13,11 +13,11 @@ POSTMAN DOCS - [here](https://documenter.getpostman.com/view/7984450/2s93m5zgVx) ### Checklist - [x] JWT Auth -- [x] Normalisation of database +- [x] Normalization of database - [x] Locking the DB while bulk operation with transactions -- [x] Elastic Search for querying movies with filters and fuzzy search +- [x] Elastic Search for querying movies with filters(language, genre and dimension like 3D, 4D etc..) and fuzzy search - [x] Adding comments for a movie and retrieving with Mongo (for better write performance) -- [x] Caching of movie details endpoints with redis +- [x] Caching of movie details endpoints with Redis ### Example Query for the UI below