From aedf8f1e2a29717ae386279ff91b2f67defa11df Mon Sep 17 00:00:00 2001 From: yisrael Date: Sun, 12 Mar 2023 14:17:41 +0200 Subject: [PATCH 001/150] routes to controlers functions and creating functions in th controler --- DL/event.controller.js | 30 ++++++++++++++++++++++++------ Routes/event.route.js | 9 +++++++-- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/DL/event.controller.js b/DL/event.controller.js index 493ef4b..d823d76 100644 --- a/DL/event.controller.js +++ b/DL/event.controller.js @@ -1,13 +1,31 @@ const {errMessage} = require("../errController"); const eventsData = require("./event.model"); -async function create (data) { - return await eventsData.create(data); -} -async function read (filter) { - return await eventsData.find(filter); -} + +const create = async (req,res)=>{ + const Event = req.body; + + const newEvent = new eventsData(Event); + + try { + await newEvent.save(); + res.status(201).json(newEvent); + } catch (error) { + res.status(409).json({ message: error.message}) + console.log(error); + } + } + + const read = async(req, res)=>{ + try { + const allEvents = await eventsData.find(); + + res.status(200).json(allEvents); + } catch (error) { + res.status(404).json({message: error.message}) + } + } async function readOne (filter) { const res = await eventsData.findOne(filter); diff --git a/Routes/event.route.js b/Routes/event.route.js index 0067785..95920a4 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -1,7 +1,12 @@ +import { create, read, readOne } from "../DL/event.controller"; + const express = require('express'), router = express.Router() -router.post('/event',async (req,res)=>{ -}) +router.post('/newEvent', create) +router.get('/home', read) +router.get('/searchEvent', read) +router.get('/viewEvent', readOne) + module.exports = router From 866166181af1b70d8975ccc2337a9e774d26d865 Mon Sep 17 00:00:00 2001 From: yisrael Date: Mon, 13 Mar 2023 17:46:37 +0200 Subject: [PATCH 002/150] deleted the callback in the db --- DL/db.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/DL/db.js b/DL/db.js index 7db9364..a291fbb 100644 --- a/DL/db.js +++ b/DL/db.js @@ -6,13 +6,9 @@ async function connect() { try { mongoose.connect( MONGO_URL, - { useNewUrlParser: true, useUnifiedTopology: true }, - (err) => { - if (err) throw "Error DB : " + err; - - console.log(`Connection Success`); - } - ); + { useNewUrlParser: true, useUnifiedTopology: true } + + ) } catch (error) { console.log(error); throw error; From f7623bd1b3f7a403f8abd6a755bc0a989a249517 Mon Sep 17 00:00:00 2001 From: matanel vatkin Date: Wed, 15 Mar 2023 13:25:23 +0200 Subject: [PATCH 003/150] test --- index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/index.js b/index.js index f07245d..a86c4b7 100644 --- a/index.js +++ b/index.js @@ -9,6 +9,7 @@ app.use(express.json()); app.use(cors()); app.use("/static",express.static("./upload")) + app.use("/api", mainRouter); From 47be6951bfe821e997cb965a6856b75c5a418e6e Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 15 Mar 2023 16:39:13 +0200 Subject: [PATCH 004/150] user layout --- BL/user.services.js | 20 +++++++++++++++++++- DL/user.controller.js | 0 DL/user.model.js | 0 Routes/index.js | 1 + Routes/user.route.js | 19 ++++++++++++++++++- 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 DL/user.controller.js create mode 100644 DL/user.model.js diff --git a/BL/user.services.js b/BL/user.services.js index c2e38ee..9a27aa4 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -1 +1,19 @@ -//phase 2 \ No newline at end of file +const userController = require('') + + + +async function findUser(filter) { + + } + +async function createUser(newUserData) { + + } + +async function deleteUser(_id) { + + } + +async function updatUser(_id) { + + } diff --git a/DL/user.controller.js b/DL/user.controller.js new file mode 100644 index 0000000..e69de29 diff --git a/DL/user.model.js b/DL/user.model.js new file mode 100644 index 0000000..e69de29 diff --git a/Routes/index.js b/Routes/index.js index 0fc3460..9ca8dbf 100644 --- a/Routes/index.js +++ b/Routes/index.js @@ -9,5 +9,6 @@ const settingRouter = require("./setting.route"); mainRouter.use("/event", eventRouter); mainRouter.use("/setting", settingRouter); mainRouter.use("/files", filesRouter); +mainRouter.use("/user", userRouter); module.exports = mainRouter; diff --git a/Routes/user.route.js b/Routes/user.route.js index c2e38ee..c571709 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -1 +1,18 @@ -//phase 2 \ No newline at end of file +const express = require("express"); +const userRouter = express.Router(); + +userRouter.get('', async (req, res) => { + +}); + +userRouter.post('', async (req, res) => { + +}); + +userRouter.delete('', async (req, res) => { + +}); + +userRouter.put('', async (req, res) => { + +}); From e0c011135c241166f234bb5aeb8442796fbb0569 Mon Sep 17 00:00:00 2001 From: yisrael Date: Thu, 16 Mar 2023 12:11:44 +0200 Subject: [PATCH 005/150] user layout --- BL/user.services.js | 30 +++++++++++++++--------------- DL/user.controller.js | 20 ++++++++++++++++++++ DL/user.model.js | 18 ++++++++++++++++++ Routes/index.js | 3 +-- Routes/user.route.js | 36 +++++++++++++++++++++++++++--------- 5 files changed, 81 insertions(+), 26 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 9a27aa4..3148728 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -1,19 +1,19 @@ -const userController = require('') - - - -async function findUser(filter) { - - } +const userController = require("../DL/user.controller"); async function createUser(newUserData) { - - } + const newUser = await userController.create(newUserData); + return { + status: "success", + newUser: newUser, + }; +} -async function deleteUser(_id) { - - } +async function findUserByEmail(email) { + const user = userController.find({email: email}); + return user; +} -async function updatUser(_id) { - - } +module.exports = { + createUser, + findUserByEmail, +} \ No newline at end of file diff --git a/DL/user.controller.js b/DL/user.controller.js index e69de29..b201d52 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -0,0 +1,20 @@ +const userData = require("./user.model"); +const { errorMsg } = require("../errController"); + + +async function create(data) { + return await userData.create(data); +}; + + +async function find(filter) { + const res = await userData.findOne(filter).populate('setting.settingData'); + if (!res) throw errorMsg.USER_NOT_FOUND; + return res; +}; + + +module.exports = { + create, + find, +} \ No newline at end of file diff --git a/DL/user.model.js b/DL/user.model.js index e69de29..2a6decc 100644 --- a/DL/user.model.js +++ b/DL/user.model.js @@ -0,0 +1,18 @@ +const mongoose = require("mongoose"); + + +const userSchema = new mongoose.Schema({ + fullName: { + type: String, + }, + phoneNumber: { + type: String, + }, + email: { + type: String, + }, +}) + +const users = mongoose.model("user", userSchema); + +module.exports = users; \ No newline at end of file diff --git a/Routes/index.js b/Routes/index.js index f053a2a..211bd37 100644 --- a/Routes/index.js +++ b/Routes/index.js @@ -6,10 +6,9 @@ const eventRouter = require("./event.route"); const settingRouter = require("./setting.route"); -// mainRouter.use("/user", userRouter); +mainRouter.use("/user", userRouter); mainRouter.use("/event", eventRouter); mainRouter.use("/setting", settingRouter); mainRouter.use("/files", filesRouter); -mainRouter.use("/user", userRouter); module.exports = mainRouter; diff --git a/Routes/user.route.js b/Routes/user.route.js index c571709..4aecc04 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -1,18 +1,36 @@ const express = require("express"); const userRouter = express.Router(); +const usetServices = require("../BL/user.services"); +const { sendError , errorMsg} = require("../errController"); -userRouter.get('', async (req, res) => { - -}); -userRouter.post('', async (req, res) => { +userRouter.get("/findUser", async (req, res) => { + try { + console.log(req.params.email); + const user = await usetServices.findUserByEmail(req.params.email); + res.status(200).send(user); + + } catch (err) { + sendError(res, err); + } + }); -}); -userRouter.delete('', async (req, res) => { +userRouter.post("/creatUser", async (req, res) => { + try { + const user = await usetServices.createUser(req.body); + res.status(400).send(user); + } catch (err) { + sendError(res, err); + } + }); -}); +// userRouter.delete('', async (req, res) => { -userRouter.put('', async (req, res) => { +// }); -}); +// userRouter.put('', async (req, res) => { + +// }); + +module.exports = userRouter; From 3461ccf0915ff4c0e11550b3d2fc4329fcb8a963 Mon Sep 17 00:00:00 2001 From: matanel vatkin Date: Sun, 19 Mar 2023 20:55:54 +0200 Subject: [PATCH 006/150] new schema event --- BL/event.services.js | 22 +--------------------- DL/event.model.js | 25 +++++++++++-------------- Routes/event.route.js | 1 + 3 files changed, 13 insertions(+), 35 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 1540e5e..75f6539 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -27,27 +27,7 @@ async function eventIsExists(id) { return await eventController.read({ id }); } -let eventData = [ - { - name: "fake-event", - summary: "fake-event description", - advertiser: { - name: "kobi", - tel: "052670403", - email: "kobikru@gmail.com", - }, - beginningTime: "19:00", - finishTime: "21:30", - place: "שילה", - - cardImageURL: - "https://cdn.pixabay.com/photo/2023/03/03/17/35/gray-cat-7828134_1280.jpg", - coverImageURL: - "https://cdn.pixabay.com/photo/2023/02/12/12/06/ocean-7784940_1280.jpg", - - payment: "free", - }, -]; + module.exports = { createNewEvent, diff --git a/DL/event.model.js b/DL/event.model.js index 475da01..254924b 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,10 +24,9 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, - date: { + date: [{ type: Date, - default: Date.now, - }, + }], beginningTime: { type: String, }, @@ -40,28 +39,31 @@ const eventSchema = new mongoose.Schema({ }, category: [ { - type: mongoose.Schema.Types.ObjectID, - ref: "setting", + type: string, + //require: true, }, ], targetAudience: [ { - type: mongoose.Schema.Types.ObjectID, - ref: "setting", + type: string, + //require: true, }, ], registrationPageURL: { type: String, - require: false, + // require: false, }, cardImageURL: { type: String, - require: true, + // require: true, }, coverImageURL: { type: String, // require: true, }, + type: { + type: String, + }, // gallery: [ // { // imageURL: { @@ -70,11 +72,6 @@ const eventSchema = new mongoose.Schema({ // }, // }, // ], - // type: { - // type: String, - // enum: ["one-time", "once-a-week", "once-a-month"], - // default: "one-time", - // }, // payment: { // type: String, // enum: ["free", "in-payment"], diff --git a/Routes/event.route.js b/Routes/event.route.js index d1e4026..60dcb27 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -29,6 +29,7 @@ eventRouter.get("/:eventID", async (req, res) => { eventRouter.post("/createvent", async (req, res) => { try { + console.log(req.body); const event = await eventService.createNewEvent(req.body); res.status(200).send(event); } catch (err) { From 45478286104377c1eb768d2ccd9383f18afcaf8a Mon Sep 17 00:00:00 2001 From: yisrael Date: Mon, 20 Mar 2023 15:45:08 +0200 Subject: [PATCH 007/150] created user in data --- BL/user.services.js | 6 +++--- DL/event.controller.js | 4 ++-- DL/event.model.js | 4 ++-- DL/user.controller.js | 4 ++-- Routes/user.route.js | 10 +++++----- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 3148728..44b1925 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -8,12 +8,12 @@ async function createUser(newUserData) { }; } -async function findUserByEmail(email) { - const user = userController.find({email: email}); +async function findUser(phoneNumber) { + const user = userController.find({phoneNumber: phoneNumber}); return user; } module.exports = { createUser, - findUserByEmail, + findUser, } \ No newline at end of file diff --git a/DL/event.controller.js b/DL/event.controller.js index d32f94a..f30a880 100644 --- a/DL/event.controller.js +++ b/DL/event.controller.js @@ -6,11 +6,11 @@ async function create(data) { } async function read(filter) { - return await eventsData.find(filter).populate('setting.settingData'); + return await eventsData.find(filter); } async function readOne(filter) { - const res = await eventsData.findOne(filter).populate('setting.settingData'); + const res = await eventsData.findOne(filter); if (!res) throw errMessage.EVENT_NOT_FOUND; return res; } diff --git a/DL/event.model.js b/DL/event.model.js index 254924b..61a0de8 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -39,13 +39,13 @@ const eventSchema = new mongoose.Schema({ }, category: [ { - type: string, + type: String, //require: true, }, ], targetAudience: [ { - type: string, + type: String, //require: true, }, ], diff --git a/DL/user.controller.js b/DL/user.controller.js index b201d52..02d588f 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -1,5 +1,5 @@ const userData = require("./user.model"); -const { errorMsg } = require("../errController"); +const { errMessage } = require("../errController"); async function create(data) { @@ -9,7 +9,7 @@ async function create(data) { async function find(filter) { const res = await userData.findOne(filter).populate('setting.settingData'); - if (!res) throw errorMsg.USER_NOT_FOUND; + if (!res) throw errMessage.USER_NOT_FOUND; return res; }; diff --git a/Routes/user.route.js b/Routes/user.route.js index 4aecc04..b1e0a0f 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -1,13 +1,13 @@ const express = require("express"); const userRouter = express.Router(); -const usetServices = require("../BL/user.services"); +const userServices = require("../BL/user.services"); const { sendError , errorMsg} = require("../errController"); userRouter.get("/findUser", async (req, res) => { try { - console.log(req.params.email); - const user = await usetServices.findUserByEmail(req.params.email); + console.log(req); + const user = await userServices.findUser(req); res.status(200).send(user); } catch (err) { @@ -18,8 +18,8 @@ userRouter.get("/findUser", async (req, res) => { userRouter.post("/creatUser", async (req, res) => { try { - const user = await usetServices.createUser(req.body); - res.status(400).send(user); + const user = await userServices.createUser(req.body); + res.status(200).send(user); } catch (err) { sendError(res, err); } From a303f0e51ee1e9c4c6f6d37bc623ed6aa7571f64 Mon Sep 17 00:00:00 2001 From: Naama Orlan Date: Tue, 21 Mar 2023 15:13:46 +0200 Subject: [PATCH 008/150] add populate to event.controller --- DL/event.controller.js | 43 ++++++++++++++++++++++++++++++++++++++++-- DL/event.model.js | 8 ++++---- DL/setting.model.js | 1 + index.js | 2 +- 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/DL/event.controller.js b/DL/event.controller.js index d32f94a..5f2490a 100644 --- a/DL/event.controller.js +++ b/DL/event.controller.js @@ -1,16 +1,55 @@ const { errMessage } = require("../errController"); const eventsData = require("./event.model"); +const settingData = require("./setting.model"); async function create(data) { return await eventsData.create(data); } async function read(filter) { - return await eventsData.find(filter).populate('setting.settingData'); + //return await eventsData.find(filter).populate('targetAudience'); + return await eventsData.find(filter).populate({ + path: 'targetAudience', + model: settingData, + select: 'settingData' + }) + .exec((err, events) => { + if (err) { + console.error(err); + } else { + console.log(events); + } + }); + } async function readOne(filter) { - const res = await eventsData.findOne(filter).populate('setting.settingData'); + const res = await eventsData.findOne(filter).populate({ + path: 'targetAudience', + model: settingData, + select: 'settingData' + }) + .exec((err, events) => { + if (err) { + console.error(err); + } else { + console.log(events); + } + }); + // path: 'targetAudience', + // populate: {path: 'settingData'} + // }); + // model: 'setting', + // select: 'icon name' + + // populate: { + // path: 'settingData', + // select: 'icon name', + // } +//}); + // model: 'Setting', + // select: 'icon name', + //}); if (!res) throw errMessage.EVENT_NOT_FOUND; return res; } diff --git a/DL/event.model.js b/DL/event.model.js index 475da01..ad89e71 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -40,14 +40,14 @@ const eventSchema = new mongoose.Schema({ }, category: [ { - type: mongoose.Schema.Types.ObjectID, - ref: "setting", + type: mongoose.Schema.Types.ObjectId, + ref: "setting.settingData", }, ], targetAudience: [ { - type: mongoose.Schema.Types.ObjectID, - ref: "setting", + type: mongoose.Schema.Types.ObjectId, + ref: "setting.settingData", }, ], registrationPageURL: { diff --git a/DL/setting.model.js b/DL/setting.model.js index a3574ce..e290f6a 100644 --- a/DL/setting.model.js +++ b/DL/setting.model.js @@ -13,6 +13,7 @@ const settingSchema = new mongoose.Schema ({ }, settingData : [ { + _id: mongoose.Schema.Types.ObjectId, icon: { type: String, require: true diff --git a/index.js b/index.js index f07245d..aa3bcfb 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,7 @@ require("./DL/db").connect(); const mainRouter = require("./Routes"); const express = require("express"); const app = express(); -const PORT = process.env.PORT || 2000; +const PORT = process.env.PORT || 5000; const cors = require("cors"); app.use(express.json()); app.use(cors()); From eca12d9d2a9ef9ace2aeb8d9162d0f56554fdb91 Mon Sep 17 00:00:00 2001 From: yisrael Date: Tue, 21 Mar 2023 18:38:12 +0200 Subject: [PATCH 009/150] working on login, not finished yet --- BL/user.services.js | 6 +++--- DL/user.controller.js | 18 +++++++++++++----- DL/user.model.js | 5 ++++- Routes/user.route.js | 24 +++++++++--------------- 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 44b1925..76b9808 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -8,9 +8,9 @@ async function createUser(newUserData) { }; } -async function findUser(phoneNumber) { - const user = userController.find({phoneNumber: phoneNumber}); - return user; +async function findUser(user) { + const foundUser = await userController.find(user); + return foundUser; } module.exports = { diff --git a/DL/user.controller.js b/DL/user.controller.js index 02d588f..a6dc84c 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -7,11 +7,19 @@ async function create(data) { }; -async function find(filter) { - const res = await userData.findOne(filter).populate('setting.settingData'); - if (!res) throw errMessage.USER_NOT_FOUND; - return res; -}; +async function find(user) { + const { fullName, password } = user; + try { + const foundUser = await userData.findOne({ fullName }); + if (foundUser && foundUser.password === password) { + return foundUser; + } else { + throw new Error('Invalid credentials'); + } + } catch (error) { + throw new Error('Error finding user'); + } +} module.exports = { diff --git a/DL/user.model.js b/DL/user.model.js index 2a6decc..8c26587 100644 --- a/DL/user.model.js +++ b/DL/user.model.js @@ -5,7 +5,10 @@ const userSchema = new mongoose.Schema({ fullName: { type: String, }, - phoneNumber: { + password: { + type: String, + }, + confirmPassword: { type: String, }, email: { diff --git a/Routes/user.route.js b/Routes/user.route.js index b1e0a0f..43d605b 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -4,18 +4,6 @@ const userServices = require("../BL/user.services"); const { sendError , errorMsg} = require("../errController"); -userRouter.get("/findUser", async (req, res) => { - try { - console.log(req); - const user = await userServices.findUser(req); - res.status(200).send(user); - - } catch (err) { - sendError(res, err); - } - }); - - userRouter.post("/creatUser", async (req, res) => { try { const user = await userServices.createUser(req.body); @@ -29,8 +17,14 @@ userRouter.post("/creatUser", async (req, res) => { // }); -// userRouter.put('', async (req, res) => { - -// }); +userRouter.post("/login", async (req, res) => { + try { + const { fullName, password } = req.body; + const user = await userServices.findUser({ fullName, password }); + res.status(200).send(user); + } catch (err) { + sendError(res, err); + } +}); module.exports = userRouter; From 0c8d8171e3b79ae31e0ec2a2d15c7f8db0e7f8b6 Mon Sep 17 00:00:00 2001 From: Naama Orlan Date: Wed, 22 Mar 2023 11:46:59 +0200 Subject: [PATCH 010/150] event.controller fix --- DL/event.controller.js | 42 ++---------------------------------------- 1 file changed, 2 insertions(+), 40 deletions(-) diff --git a/DL/event.controller.js b/DL/event.controller.js index 5f2490a..6d21333 100644 --- a/DL/event.controller.js +++ b/DL/event.controller.js @@ -7,49 +7,11 @@ async function create(data) { } async function read(filter) { - //return await eventsData.find(filter).populate('targetAudience'); - return await eventsData.find(filter).populate({ - path: 'targetAudience', - model: settingData, - select: 'settingData' - }) - .exec((err, events) => { - if (err) { - console.error(err); - } else { - console.log(events); - } - }); - + return await eventsData.find(filter); } async function readOne(filter) { - const res = await eventsData.findOne(filter).populate({ - path: 'targetAudience', - model: settingData, - select: 'settingData' - }) - .exec((err, events) => { - if (err) { - console.error(err); - } else { - console.log(events); - } - }); - // path: 'targetAudience', - // populate: {path: 'settingData'} - // }); - // model: 'setting', - // select: 'icon name' - - // populate: { - // path: 'settingData', - // select: 'icon name', - // } -//}); - // model: 'Setting', - // select: 'icon name', - //}); + const res = await eventsData.findOne(filter); if (!res) throw errMessage.EVENT_NOT_FOUND; return res; } From b5f58893c3452703d1982111a62c69573c209a66 Mon Sep 17 00:00:00 2001 From: matanel vatkin Date: Wed, 22 Mar 2023 11:54:25 +0200 Subject: [PATCH 011/150] changing schema and add dates function --- BL/event.services.js | 127 +++++++++- DL/event.model.js | 10 +- Routes/event.route.js | 3 +- package-lock.json | 574 +++++++++++++++++++++++++++++++++++++++++- package.json | 3 +- 5 files changed, 700 insertions(+), 17 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 75f6539..8810b4c 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -1,38 +1,145 @@ const eventController = require("../DL/event.controller"); async function createNewEvent(eventData) { - // productValidation(eventData); - // const exists = await eventIsExists(eventData.name); - // if (exists.length > 0) throw new Error("event id already exists"); + var dates = []; + var date = eventData.date.split("-"); + const days = eventData.day ? getDays(eventData.day) : null; + if(eventData.repeat==="שבועי") var repeat= 1; + else if(eventData.repeat==="דו חודשי") var repeat=7 + else if(eventData.repeat==="חודשי") var repeat=23 + switch (eventData.type) { + case " אירוע יומי": + dates = getDayliDates( + new Date(eventData.date), + new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) + ); + case "אירוע שבועי": + dates = getWeeklyDates( + new Date(eventData.date), + new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) + ); + case "חודשי": + dates = getMonthDates( + new Date(eventData.date), + new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) + ); + case "בהתאמה אישית": + dates = getPersonalDates( + new Date(eventData.date), + new Date( + `${date[0]}-${Number(date[1]) + 3}-${Number(date[2])}` + ), + days, + repeat + ); - const newEvent = await eventController.create(eventData); + // await eventController.create(eventData); + } + // const newEvent = await eventController.create(eventData); return { status: "success", - newEvent: newEvent, + newEvent: "ok", }; } +const getDays = (days) => { + const newDays = days.map((day) => { + switch (day) { + case "א": + return 0; + case "ב": + return 1; + case "ג": + return 2; + case "ד": + return 3; + case "ה": + return 4; + case "ו": + return 5; + case "ש": + return 6; + } + }); + return newDays; +}; +function getWeeklyDates(startDate, endDate) { + const dates = []; + let currentDate = new Date(startDate); + const endDateObj = new Date(endDate); + while (currentDate <= endDateObj) { + dates.push(new Date(currentDate)); + currentDate.setDate(currentDate.getDate() + 7); + } + + return dates; +} +function getDayliDates(startDate, endDate) { + const dates = []; + let currentDate = new Date(startDate); + const endDateObj = new Date(endDate); + + while (currentDate <= endDateObj) { + dates.push(new Date(currentDate)); + currentDate.setDate(currentDate.getDate() + 1); + } + + return dates; +} +function getPersonalDates(startDate, endDate, days, repeat=1) { + const dates = []; + let indexInWeek = 1; + let push =0; + let currentDate = new Date(startDate); + const endDateObj = new Date(endDate); + while (currentDate <= endDateObj) { + days.forEach((day) => { + if (push<2&&day === new Date(currentDate).getDay()){ + dates.push(new Date(currentDate)); + push++ + } + }); + if (indexInWeek < 7) { + currentDate.setDate(currentDate.getDate() + 1); + indexInWeek++ + } else { + currentDate.setDate(currentDate.getDate() + repeat); + indexInWeek = 0; + push = 0 + } + } + console.log(dates); + return dates; +} +function getMonthDates(startDate, endDate) { + const dates = []; + let currentDate = new Date(startDate); + const endDateObj = new Date(endDate); + + while (currentDate <= endDateObj) { + dates.push(new Date(currentDate)); + currentDate.setDate(currentDate.getDate() + 30); + } + return dates; +} async function findEvent(filter) { const event = eventController.read(filter); return event; } async function findEventByID(id) { - const event = eventController.readOne({_id:id}); + const event = eventController.readOne({ _id: id }); return event; } - async function eventIsExists(id) { return await eventController.read({ id }); } - - module.exports = { createNewEvent, findEvent, findEventByID, }; -// module.exports = { getAllEvents, getFilteredEvents } \ No newline at end of file +// module.exports = { getAllEvents, getFilteredEvents } diff --git a/DL/event.model.js b/DL/event.model.js index 61a0de8..08af893 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,9 +24,16 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, + isReapeated:{type:Boolean, default:false}, + repeatType: { + type: String, + }, date: [{ type: Date, }], + deletedDate:[{type:Date}], + days:[{type:Number}], + repeatSettings:{type:{type:String},repeatEnd:{type:String}}, beginningTime: { type: String, }, @@ -61,9 +68,6 @@ const eventSchema = new mongoose.Schema({ type: String, // require: true, }, - type: { - type: String, - }, // gallery: [ // { // imageURL: { diff --git a/Routes/event.route.js b/Routes/event.route.js index 60dcb27..9b55bd2 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -29,9 +29,8 @@ eventRouter.get("/:eventID", async (req, res) => { eventRouter.post("/createvent", async (req, res) => { try { - console.log(req.body); const event = await eventService.createNewEvent(req.body); - res.status(200).send(event); + res.send('ok'); } catch (err) { sendError(res, err); } diff --git a/package-lock.json b/package-lock.json index d1c220a..7a043c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,8 @@ "express": "^4.18.2", "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.0", - "multer": "^1.4.5-lts.1" + "multer": "^1.4.5-lts.1", + "nodemon": "^2.0.21" } }, "node_modules/@aws-crypto/ie11-detection": { @@ -1100,6 +1101,11 @@ "@types/webidl-conversions": "*" } }, + "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==" + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1112,6 +1118,18 @@ "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==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -1122,6 +1140,11 @@ "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==" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1141,6 +1164,14 @@ } ] }, + "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==", + "engines": { + "node": ">=8" + } + }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -1170,6 +1201,26 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, + "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==", + "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==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -1245,6 +1296,37 @@ "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==", + "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==" + }, "node_modules/concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -1432,6 +1514,17 @@ "url": "https://paypal.me/naturalintelligence" } }, + "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==", + "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", @@ -1465,6 +1558,19 @@ "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==", + "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", @@ -1483,6 +1589,17 @@ "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==", + "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", @@ -1494,6 +1611,14 @@ "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==", + "engines": { + "node": ">=4" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -1550,6 +1675,11 @@ } ] }, + "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==" + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1568,6 +1698,44 @@ "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==", + "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==", + "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==", + "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==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1693,6 +1861,17 @@ "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==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -1834,6 +2013,76 @@ "node": ">= 0.6" } }, + "node_modules/nodemon": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", + "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", + "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==", + "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==" + }, + "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==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "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==", + "engines": { + "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", @@ -1874,6 +2123,17 @@ "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==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -1891,6 +2151,11 @@ "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==" + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -1954,6 +2219,17 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "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", @@ -2069,6 +2345,25 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "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==", + "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==", + "bin": { + "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", @@ -2135,6 +2430,28 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, + "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==", + "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==", + "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", @@ -2143,6 +2460,17 @@ "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==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, "node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -2177,6 +2505,11 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -3173,6 +3506,11 @@ "@types/webidl-conversions": "*" } }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -3182,6 +3520,15 @@ "negotiator": "0.6.3" } }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -3192,11 +3539,21 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -3222,6 +3579,23 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, "bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -3271,6 +3645,26 @@ "get-intrinsic": "^1.0.2" } }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -3417,6 +3811,14 @@ "strnum": "^1.0.5" } }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, "finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -3441,6 +3843,12 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -3456,6 +3864,14 @@ "has-symbols": "^1.0.3" } }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3464,6 +3880,11 @@ "function-bind": "^1.1.1" } }, + "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==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -3494,6 +3915,11 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "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==" + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -3509,6 +3935,32 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3608,6 +4060,14 @@ "mime-db": "1.52.0" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -3715,6 +4175,56 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, + "nodemon": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", + "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3743,6 +4253,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -3757,6 +4272,11 @@ "ipaddr.js": "1.9.1" } }, + "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==" + }, "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -3807,6 +4327,14 @@ } } }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -3892,6 +4420,21 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "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==", + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -3946,11 +4489,35 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, "tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -3979,6 +4546,11 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 595d4f9..7feb783 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "express": "^4.18.2", "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.0", - "multer": "^1.4.5-lts.1" + "multer": "^1.4.5-lts.1", + "nodemon": "^2.0.21" } } From fd7f96b08bf9f9b133627c95416e118b5a3a60f3 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 22 Mar 2023 14:35:44 +0200 Subject: [PATCH 012/150] respons fas url string --- DL/event.model.js | 4 ++-- Routes/files.route.js | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/DL/event.model.js b/DL/event.model.js index 254924b..61a0de8 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -39,13 +39,13 @@ const eventSchema = new mongoose.Schema({ }, category: [ { - type: string, + type: String, //require: true, }, ], targetAudience: [ { - type: string, + type: String, //require: true, }, ], diff --git a/Routes/files.route.js b/Routes/files.route.js index 7289f58..fb76cb5 100644 --- a/Routes/files.route.js +++ b/Routes/files.route.js @@ -1,22 +1,22 @@ const express = require("express"); const filesRouter = express.Router(); -const multer = require('multer') -const upload = multer({ dest: "../upload/" }) -const fs =require("fs") +const multer = require("multer"); +const upload = multer({ dest: "../upload/" }); +const fs = require("fs"); const { sendError } = require("../errController"); +const url = "localhost:5000"; +filesRouter.post("/uploadFile", upload.single("card"), (req, res) => { + let fileType = req.file.mimetype.split("/")[1]; + let newFileName = req.file.filename + "." + fileType; + fs.rename( + `../upload/${req.file.filename}`, + `./upload/${newFileName}`, + function () { + res.send(`${url}/static/${newFileName}`); + } + ); +}); -filesRouter.post("/uploadFile", upload.single("card"),(req, res) => { - - let fileType= req.file.mimetype.split("/")[1]; - let newFileName = req.file.filename + "." + fileType; - - fs.rename(`../upload/${req.file.filename}`,`./upload/${newFileName}`,function(){ - - res.send("200") - }) - - }); - -module.exports = filesRouter \ No newline at end of file +module.exports = filesRouter; From c3d8c2e17e15ec014822e48762eda10316730d0a Mon Sep 17 00:00:00 2001 From: matanel vatkin Date: Wed, 22 Mar 2023 20:47:46 +0200 Subject: [PATCH 013/150] dates array --- BL/event.services.js | 165 ++++++++++++++++++++++++------------------- 1 file changed, 92 insertions(+), 73 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 8810b4c..fd3f40b 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -2,43 +2,58 @@ const eventController = require("../DL/event.controller"); async function createNewEvent(eventData) { var dates = []; - var date = eventData.date.split("-"); + let repeat = 1; const days = eventData.day ? getDays(eventData.day) : null; - if(eventData.repeat==="שבועי") var repeat= 1; - else if(eventData.repeat==="דו חודשי") var repeat=7 - else if(eventData.repeat==="חודשי") var repeat=23 switch (eventData.type) { case " אירוע יומי": - dates = getDayliDates( - new Date(eventData.date), - new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) - ); + repeat = 1; case "אירוע שבועי": - dates = getWeeklyDates( - new Date(eventData.date), - new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) - ); - case "חודשי": - dates = getMonthDates( - new Date(eventData.date), - new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) - ); + repeat = 7; case "בהתאמה אישית": - dates = getPersonalDates( - new Date(eventData.date), - new Date( - `${date[0]}-${Number(date[1]) + 3}-${Number(date[2])}` - ), - days, - repeat - ); + if (eventData.repeat === "שבועי") var personalrepeat = 1; + else if (eventData.repeat === "דו חודשי") var personalrepeat = 7; + else if (eventData.repeat === "חודשי") var personalrepeat = 23; + switch (eventData.repeatSettings.type) { + case "date": + dates = getDatesWithEndDate( + new Date(eventData.date), + new Date(eventData.repeatSettings.repeatEnd), + repeat, + days, + personalrepeat + ); - // await eventController.create(eventData); + case "occurrences": + dates = getDatesWithNumberOfOccurrences( + new Date(eventData.date), + eventData.repeatSettings.repeatEnd, + repeat, + days, + personalrepeat + ); + } + + // await eventController.create(evenctData); } // const newEvent = await eventController.create(eventData); return { - status: "success", - newEvent: "ok", + eventName: eventData.eventName, + summary: eventData.summary, + advertiser: eventData.advertiser, + isReapeated:!eventData.repeatType==='אירוע ללא חזרה', + repeatType: eventData.repeatType, + date: dates, + deletedDate:[], + days:days, + repeatSettings:{type:eventData.repeatSettings.type,repeatEnd:eventData.repeatSettings.repeatEnd}, + beginningTime: eventData.beginningTime, + finishTime: eventData.finishTime, + place: eventData.place, + category: eventData.category, + targetAudience: eventData.targetAudience, + registrationPageURL: eventData.registrationPageURL, + cardImageURL: eventData.cardImageURL, + coverImageURL: eventData.coverImageURL }; } const getDays = (days) => { @@ -62,64 +77,68 @@ const getDays = (days) => { }); return newDays; }; -function getWeeklyDates(startDate, endDate) { - const dates = []; - let currentDate = new Date(startDate); - const endDateObj = new Date(endDate); - while (currentDate <= endDateObj) { - dates.push(new Date(currentDate)); - currentDate.setDate(currentDate.getDate() + 7); - } - - return dates; -} -function getDayliDates(startDate, endDate) { +function getDatesWithEndDate(startDate, endDate, repeat, days, personalrepeat) { const dates = []; let currentDate = new Date(startDate); const endDateObj = new Date(endDate); - - while (currentDate <= endDateObj) { - dates.push(new Date(currentDate)); - currentDate.setDate(currentDate.getDate() + 1); - } - - return dates; -} -function getPersonalDates(startDate, endDate, days, repeat=1) { - const dates = []; - let indexInWeek = 1; - let push =0; - let currentDate = new Date(startDate); - const endDateObj = new Date(endDate); - while (currentDate <= endDateObj) { - days.forEach((day) => { - if (push<2&&day === new Date(currentDate).getDay()){ + if (!personalrepeat) { + while (currentDate <= endDateObj) { dates.push(new Date(currentDate)); - push++ - } - }); - if (indexInWeek < 7) { - currentDate.setDate(currentDate.getDate() + 1); - indexInWeek++ - } else { currentDate.setDate(currentDate.getDate() + repeat); - indexInWeek = 0; - push = 0 + } + } else { + let push = 0, + indexInWeek = 1; + while (currentDate <= endDateObj) { + days.forEach((day) => { + if (push < days.length && day === new Date(currentDate).getDay()) { + dates.push(new Date(currentDate)); + push++; + } + }); + if (indexInWeek < 7) { + currentDate.setDate(currentDate.getDate() + 1); + indexInWeek++; + } else { + currentDate.setDate(currentDate.getDate() + personalrepeat); + indexInWeek = 0; + push = 0; + } } } - console.log(dates); return dates; } -function getMonthDates(startDate, endDate) { +function getDatesWithNumberOfOccurrences(startDate, endDate, repeat, days, personalrepeat) { const dates = []; let currentDate = new Date(startDate); const endDateObj = new Date(endDate); - - while (currentDate <= endDateObj) { - dates.push(new Date(currentDate)); - currentDate.setDate(currentDate.getDate() + 30); + if (!personalrepeat) { + while (currentDate <= endDateObj && endDate > 0) { + dates.push(new Date(currentDate)); + currentDate.setDate(currentDate.getDate() + repeat); + endDate--; + } + } else { + let push = 0, + indexInWeek = 1; + while (currentDate <= endDateObj && endDate > 0) { + days.forEach((day) => { + if (push < days.length && day === new Date(currentDate).getDay()) { + dates.push(new Date(currentDate)); + endDate--; + push++; + } + }); + if (indexInWeek < 7) { + currentDate.setDate(currentDate.getDate() + 1); + indexInWeek++; + } else { + currentDate.setDate(currentDate.getDate() + personalrepeat); + indexInWeek = 0; + push = 0; + } + } } - return dates; } async function findEvent(filter) { From cc8d6feb106787429824c1ac244589fb253e9dc0 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Thu, 23 Mar 2023 09:56:33 +0200 Subject: [PATCH 014/150] new_schema --- BL/event.services.js | 29 +++++++++++++++++++---------- DL/event.model.js | 16 +++++++++------- Routes/event.route.js | 5 +---- Routes/files.route.js | 2 +- 4 files changed, 30 insertions(+), 22 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index fd3f40b..349c500 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -4,15 +4,15 @@ async function createNewEvent(eventData) { var dates = []; let repeat = 1; const days = eventData.day ? getDays(eventData.day) : null; - switch (eventData.type) { + switch (eventData.repeatType) { case " אירוע יומי": repeat = 1; case "אירוע שבועי": repeat = 7; case "בהתאמה אישית": - if (eventData.repeat === "שבועי") var personalrepeat = 1; - else if (eventData.repeat === "דו חודשי") var personalrepeat = 7; - else if (eventData.repeat === "חודשי") var personalrepeat = 23; + if (eventData.repeatType === "שבועי") var personalrepeat = 1; + else if (eventData.repeatType === "דו חודשי") var personalrepeat = 7; + else if (eventData.repeatType === "חודשי") var personalrepeat = 23; switch (eventData.repeatSettings.type) { case "date": dates = getDatesWithEndDate( @@ -40,12 +40,15 @@ async function createNewEvent(eventData) { eventName: eventData.eventName, summary: eventData.summary, advertiser: eventData.advertiser, - isReapeated:!eventData.repeatType==='אירוע ללא חזרה', + isReapeated: !eventData.repeatType === "אירוע ללא חזרה", repeatType: eventData.repeatType, date: dates, - deletedDate:[], - days:days, - repeatSettings:{type:eventData.repeatSettings.type,repeatEnd:eventData.repeatSettings.repeatEnd}, + deletedDate: [], + days: days, + // repeatSettings: { + // type: eventData.repeatSettings.type, + // repeatEnd: eventData.repeatSettings.repeatEnd, + // }, beginningTime: eventData.beginningTime, finishTime: eventData.finishTime, place: eventData.place, @@ -53,7 +56,7 @@ async function createNewEvent(eventData) { targetAudience: eventData.targetAudience, registrationPageURL: eventData.registrationPageURL, cardImageURL: eventData.cardImageURL, - coverImageURL: eventData.coverImageURL + coverImageURL: eventData.coverImageURL, }; } const getDays = (days) => { @@ -108,7 +111,13 @@ function getDatesWithEndDate(startDate, endDate, repeat, days, personalrepeat) { } return dates; } -function getDatesWithNumberOfOccurrences(startDate, endDate, repeat, days, personalrepeat) { +function getDatesWithNumberOfOccurrences( + startDate, + endDate, + repeat, + days, + personalrepeat +) { const dates = []; let currentDate = new Date(startDate); const endDateObj = new Date(endDate); diff --git a/DL/event.model.js b/DL/event.model.js index 08af893..d9fc2c1 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,16 +24,18 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, - isReapeated:{type:Boolean, default:false}, + isReapeated: { type: Boolean, default: false }, repeatType: { type: String, }, - date: [{ - type: Date, - }], - deletedDate:[{type:Date}], - days:[{type:Number}], - repeatSettings:{type:{type:String},repeatEnd:{type:String}}, + date: [ + { + type: Date, + }, + ], + deletedDate: [{ type: Date }], + days: [{ type: Number }], + // repeatSettings: { type: { type: String }, repeatEnd: { type: String } }, beginningTime: { type: String, }, diff --git a/Routes/event.route.js b/Routes/event.route.js index 9b55bd2..359c35d 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -19,18 +19,15 @@ eventRouter.get("/:eventID", async (req, res) => { console.log(req.params.eventID); const event = await eventService.findEventByID(req.params.eventID); res.status(200).send(event); - } catch (err) { sendError(res, err); } }); - - eventRouter.post("/createvent", async (req, res) => { try { const event = await eventService.createNewEvent(req.body); - res.send('ok'); + res.send(event); } catch (err) { sendError(res, err); } diff --git a/Routes/files.route.js b/Routes/files.route.js index fb76cb5..e3c019e 100644 --- a/Routes/files.route.js +++ b/Routes/files.route.js @@ -9,7 +9,7 @@ const url = "localhost:5000"; filesRouter.post("/uploadFile", upload.single("card"), (req, res) => { let fileType = req.file.mimetype.split("/")[1]; let newFileName = req.file.filename + "." + fileType; - + console.log(req.body); fs.rename( `../upload/${req.file.filename}`, `./upload/${newFileName}`, From 099e5e7fc5e9466d3b67ba4e3a938ff5ec431943 Mon Sep 17 00:00:00 2001 From: ShaharMarom2 <106477834+ShaharMarom2@users.noreply.github.com> Date: Thu, 23 Mar 2023 12:04:47 +0200 Subject: [PATCH 015/150] shahar --- DL/event.controller.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DL/event.controller.js b/DL/event.controller.js index d32f94a..59dba8d 100644 --- a/DL/event.controller.js +++ b/DL/event.controller.js @@ -1,12 +1,13 @@ const { errMessage } = require("../errController"); const eventsData = require("./event.model"); +const settingData = require("./setting.model") async function create(data) { return await eventsData.create(data); } async function read(filter) { - return await eventsData.find(filter).populate('setting.settingData'); + return await eventsData.find(filter).populate({path: 'category', model: settingData.settingData}) } async function readOne(filter) { From 54b44324d38eafbc575144904c9e6a6221107d19 Mon Sep 17 00:00:00 2001 From: ShaharMarom2 <106477834+ShaharMarom2@users.noreply.github.com> Date: Thu, 23 Mar 2023 17:22:56 +0200 Subject: [PATCH 016/150] shahar --- DL/db.js | 1 + DL/event.controller.js | 5 ++++- DL/event.model.js | 4 ++-- Routes/event.route.js | 2 +- index.js | 23 ++++++++++++++++++++++- 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/DL/db.js b/DL/db.js index 220f850..b47ba34 100644 --- a/DL/db.js +++ b/DL/db.js @@ -1,4 +1,5 @@ const mongoose = require("mongoose"); +mongoose.set('strictQuery', true) const MONGO_URL = process.env.MONGO_URL; async function connect() { diff --git a/DL/event.controller.js b/DL/event.controller.js index 6d21333..9a623b2 100644 --- a/DL/event.controller.js +++ b/DL/event.controller.js @@ -7,7 +7,10 @@ async function create(data) { } async function read(filter) { - return await eventsData.find(filter); + if(filter) { + return await eventsData.find(filter).exec() + } + return await eventsData.find({}) } async function readOne(filter) { diff --git a/DL/event.model.js b/DL/event.model.js index aea021a..af7295a 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,9 +24,9 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, - date: [{ + date: { type: Date, - }], + }, beginningTime: { type: String, }, diff --git a/Routes/event.route.js b/Routes/event.route.js index 60dcb27..6fb55d7 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -5,7 +5,7 @@ const { sendError } = require("../errController"); // router.post('/event',async (req,res)=>{ // }) -eventRouter.get("", async (req, res) => { +eventRouter.post("", async (req, res) => { try { const event = await eventService.findEvent(req.body ? req.body : {}); res.status(200).send(event); diff --git a/index.js b/index.js index 5201151..363b7e7 100644 --- a/index.js +++ b/index.js @@ -5,13 +5,34 @@ const express = require("express"); const app = express(); const PORT = process.env.PORT || 5000; const cors = require("cors"); + app.use(express.json()); app.use(cors()); app.use("/static",express.static("./upload")) - app.use("/api", mainRouter); +const events = require('./DL/event.model') +async function check(){ + console.log(await events.find({ + "category": { + "$in": [ + "641189cf3d762f6a181064ca" + ] + }, + "targetAudience": { + "$in": [ + "64118b289057ecc057ef8a3b" + ] + }, + "date": { + "$gte": "2023-03-23T14:41:13.130Z", + "$lte": "2023-03-23T21:59:59.130Z" + } + }).exec()) +} + +check() // app.get("/k",(req,res)=>{ // res.send("hello world") From 47c66bf40db03fb964e661e707364324bb06719f Mon Sep 17 00:00:00 2001 From: ShaharMarom2 <106477834+ShaharMarom2@users.noreply.github.com> Date: Thu, 23 Mar 2023 17:39:13 +0200 Subject: [PATCH 017/150] shahar --- index.js | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/index.js b/index.js index 363b7e7..86dee38 100644 --- a/index.js +++ b/index.js @@ -12,28 +12,6 @@ app.use("/static",express.static("./upload")) app.use("/api", mainRouter); -const events = require('./DL/event.model') -async function check(){ - console.log(await events.find({ - "category": { - "$in": [ - "641189cf3d762f6a181064ca" - ] - }, - "targetAudience": { - "$in": [ - "64118b289057ecc057ef8a3b" - ] - }, - "date": { - "$gte": "2023-03-23T14:41:13.130Z", - "$lte": "2023-03-23T21:59:59.130Z" - } - }).exec()) -} - -check() - // app.get("/k",(req,res)=>{ // res.send("hello world") // }); From 6b6582973f288a1244bdb8d2d258a939ba6ed46d Mon Sep 17 00:00:00 2001 From: ShaharMarom2 <106477834+ShaharMarom2@users.noreply.github.com> Date: Thu, 23 Mar 2023 17:47:24 +0200 Subject: [PATCH 018/150] shahar --- DL/event.model.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DL/event.model.js b/DL/event.model.js index af7295a..aea021a 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,9 +24,9 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, - date: { + date: [{ type: Date, - }, + }], beginningTime: { type: String, }, From 301e25cbb84acdcfb2fd247f94b43f1efa6814b6 Mon Sep 17 00:00:00 2001 From: yisrael Date: Thu, 23 Mar 2023 23:43:05 +0200 Subject: [PATCH 019/150] changed the user model and the user controler, installed bcrypt library --- DL/user.controller.js | 14 +- DL/user.model.js | 20 +- package-lock.json | 932 ++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 4 files changed, 960 insertions(+), 7 deletions(-) diff --git a/DL/user.controller.js b/DL/user.controller.js index a6dc84c..a8a71e0 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -1,5 +1,6 @@ const userData = require("./user.model"); const { errMessage } = require("../errController"); +const bcrypt = require('bcrypt') async function create(data) { @@ -11,13 +12,18 @@ async function find(user) { const { fullName, password } = user; try { const foundUser = await userData.findOne({ fullName }); - if (foundUser && foundUser.password === password) { - return foundUser; + if (foundUser) { + const isPasswordMatch = await bcrypt.compare(password, foundUser.password); + if (isPasswordMatch) { + return foundUser; + } else { + throw new Error('Invalid credentials'); + } } else { - throw new Error('Invalid credentials'); + throw new Error('User not found'); } } catch (error) { - throw new Error('Error finding user'); + throw new Error('Error finding User'); } } diff --git a/DL/user.model.js b/DL/user.model.js index 8c26587..4bad2d1 100644 --- a/DL/user.model.js +++ b/DL/user.model.js @@ -1,4 +1,5 @@ const mongoose = require("mongoose"); +const bcrypt = require("bcrypt"); const userSchema = new mongoose.Schema({ @@ -7,15 +8,28 @@ const userSchema = new mongoose.Schema({ }, password: { type: String, - }, - confirmPassword: { - type: String, + required: true, }, email: { type: String, }, }) +userSchema.pre("save", async function (next) { + const user = this; + if (!user.isModified("password")) { + return next(); + } + const salt = await bcrypt.genSalt(10); + const hash = await bcrypt.hash(user.password, salt); + user.password = hash; + next(); +}); + +// userSchema.methods.matchPassword = async function (enteredPassword) { +// return await bcrypt.compare(enteredPassword, this.password); +// }; + const users = mongoose.model("user", userSchema); module.exports = users; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d1c220a..078ba85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "bcrypt": "^5.1.0", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", @@ -1081,6 +1082,25 @@ "tslib": "^2.3.1" } }, + "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/node": { "version": "18.15.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz", @@ -1100,6 +1120,11 @@ "@types/webidl-conversions": "*" } }, + "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==" + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1112,16 +1137,91 @@ "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/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" }, + "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/are-we-there-yet/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/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==" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1141,6 +1241,19 @@ } ] }, + "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/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -1170,6 +1283,15 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -1245,6 +1367,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, "node_modules/concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -1259,6 +1402,11 @@ "typedarray": "^0.0.6" } }, + "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", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1316,6 +1464,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/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1333,6 +1486,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", @@ -1354,6 +1515,11 @@ "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", @@ -1465,11 +1631,57 @@ "node": ">= 0.6" } }, + "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/function-bind": { "version": "1.1.1", "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/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -1483,6 +1695,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/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1505,6 +1736,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", @@ -1520,6 +1756,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", @@ -1550,6 +1819,15 @@ } ] }, + "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", @@ -1568,6 +1846,14 @@ "node": ">= 0.10" } }, + "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/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1636,6 +1922,28 @@ "node": ">=10" } }, + "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", @@ -1693,6 +2001,17 @@ "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==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -1701,6 +2020,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", + "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": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -1834,6 +2184,74 @@ "node": ">= 0.6" } }, + "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.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/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/node-fetch/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/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/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", @@ -1861,6 +2279,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", @@ -1869,6 +2295,14 @@ "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-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -1954,6 +2388,20 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "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", @@ -2046,6 +2494,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", @@ -2069,6 +2522,11 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "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/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -2129,12 +2587,63 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "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/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/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/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -2235,6 +2744,19 @@ "node": ">=12" } }, + "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/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/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -3154,6 +3676,22 @@ "tslib": "^2.3.1" } }, + "@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==", + "requires": { + "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" + } + }, "@types/node": { "version": "18.15.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz", @@ -3173,6 +3711,11 @@ "@types/webidl-conversions": "*" } }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -3182,21 +3725,89 @@ "negotiator": "0.6.3" } }, + "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==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, "append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" }, + "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==" + }, + "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==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "bcrypt": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", + "integrity": "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==", + "requires": { + "@mapbox/node-pre-gyp": "^1.0.10", + "node-addon-api": "^5.0.0" + } + }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -3222,6 +3833,15 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -3271,6 +3891,21 @@ "get-intrinsic": "^1.0.2" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "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==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -3282,6 +3917,11 @@ "typedarray": "^0.0.6" } }, + "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==" + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -3327,6 +3967,11 @@ "ms": "2.0.0" } }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -3337,6 +3982,11 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, "dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", @@ -3355,6 +4005,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "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==" + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -3441,11 +4096,50 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "requires": { + "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" + } + }, "get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -3456,6 +4150,19 @@ "has-symbols": "^1.0.3" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "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" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3469,6 +4176,11 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -3481,6 +4193,30 @@ "toidentifier": "1.0.1" } }, + "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==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3494,6 +4230,15 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -3509,6 +4254,11 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "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==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3569,6 +4319,21 @@ "yallist": "^4.0.0" } }, + "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==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3608,11 +4373,43 @@ "mime-db": "1.52.0" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, + "minipass": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==" + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -3715,6 +4512,59 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, + "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-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "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==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3733,11 +4583,24 @@ "ee-first": "1.1.1" } }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "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==" + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -3807,6 +4670,14 @@ } } }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -3872,6 +4743,11 @@ "send": "0.18.0" } }, + "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==" + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -3892,6 +4768,11 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "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==" + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -3940,12 +4821,50 @@ } } }, + "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==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -4019,6 +4938,19 @@ "webidl-conversions": "^7.0.0" } }, + "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==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index 595d4f9..3588915 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "author": "", "license": "ISC", "dependencies": { + "bcrypt": "^5.1.0", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", From 401fe3c7a208c8e35bafd8837a4d93aa421c0cd3 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 22 Mar 2023 14:35:44 +0200 Subject: [PATCH 020/150] respons fas url string --- DL/event.model.js | 8 ++++---- Routes/files.route.js | 32 ++++++++++++++++---------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/DL/event.model.js b/DL/event.model.js index aea021a..61a0de8 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -39,14 +39,14 @@ const eventSchema = new mongoose.Schema({ }, category: [ { - type: mongoose.Schema.Types.ObjectId, - ref: "setting.settingData", + type: String, + //require: true, }, ], targetAudience: [ { - type: mongoose.Schema.Types.ObjectId, - ref: "setting.settingData", + type: String, + //require: true, }, ], registrationPageURL: { diff --git a/Routes/files.route.js b/Routes/files.route.js index 7289f58..fb76cb5 100644 --- a/Routes/files.route.js +++ b/Routes/files.route.js @@ -1,22 +1,22 @@ const express = require("express"); const filesRouter = express.Router(); -const multer = require('multer') -const upload = multer({ dest: "../upload/" }) -const fs =require("fs") +const multer = require("multer"); +const upload = multer({ dest: "../upload/" }); +const fs = require("fs"); const { sendError } = require("../errController"); +const url = "localhost:5000"; +filesRouter.post("/uploadFile", upload.single("card"), (req, res) => { + let fileType = req.file.mimetype.split("/")[1]; + let newFileName = req.file.filename + "." + fileType; + fs.rename( + `../upload/${req.file.filename}`, + `./upload/${newFileName}`, + function () { + res.send(`${url}/static/${newFileName}`); + } + ); +}); -filesRouter.post("/uploadFile", upload.single("card"),(req, res) => { - - let fileType= req.file.mimetype.split("/")[1]; - let newFileName = req.file.filename + "." + fileType; - - fs.rename(`../upload/${req.file.filename}`,`./upload/${newFileName}`,function(){ - - res.send("200") - }) - - }); - -module.exports = filesRouter \ No newline at end of file +module.exports = filesRouter; From 80ced4524210611ad773c151406dc999310207a6 Mon Sep 17 00:00:00 2001 From: matanel vatkin Date: Wed, 22 Mar 2023 11:54:25 +0200 Subject: [PATCH 021/150] changing schema and add dates function --- BL/event.services.js | 127 +++++++++- DL/event.model.js | 10 +- Routes/event.route.js | 3 +- package-lock.json | 547 +++++++----------------------------------- package.json | 3 +- 5 files changed, 216 insertions(+), 474 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 75f6539..8810b4c 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -1,38 +1,145 @@ const eventController = require("../DL/event.controller"); async function createNewEvent(eventData) { - // productValidation(eventData); - // const exists = await eventIsExists(eventData.name); - // if (exists.length > 0) throw new Error("event id already exists"); + var dates = []; + var date = eventData.date.split("-"); + const days = eventData.day ? getDays(eventData.day) : null; + if(eventData.repeat==="שבועי") var repeat= 1; + else if(eventData.repeat==="דו חודשי") var repeat=7 + else if(eventData.repeat==="חודשי") var repeat=23 + switch (eventData.type) { + case " אירוע יומי": + dates = getDayliDates( + new Date(eventData.date), + new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) + ); + case "אירוע שבועי": + dates = getWeeklyDates( + new Date(eventData.date), + new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) + ); + case "חודשי": + dates = getMonthDates( + new Date(eventData.date), + new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) + ); + case "בהתאמה אישית": + dates = getPersonalDates( + new Date(eventData.date), + new Date( + `${date[0]}-${Number(date[1]) + 3}-${Number(date[2])}` + ), + days, + repeat + ); - const newEvent = await eventController.create(eventData); + // await eventController.create(eventData); + } + // const newEvent = await eventController.create(eventData); return { status: "success", - newEvent: newEvent, + newEvent: "ok", }; } +const getDays = (days) => { + const newDays = days.map((day) => { + switch (day) { + case "א": + return 0; + case "ב": + return 1; + case "ג": + return 2; + case "ד": + return 3; + case "ה": + return 4; + case "ו": + return 5; + case "ש": + return 6; + } + }); + return newDays; +}; +function getWeeklyDates(startDate, endDate) { + const dates = []; + let currentDate = new Date(startDate); + const endDateObj = new Date(endDate); + while (currentDate <= endDateObj) { + dates.push(new Date(currentDate)); + currentDate.setDate(currentDate.getDate() + 7); + } + + return dates; +} +function getDayliDates(startDate, endDate) { + const dates = []; + let currentDate = new Date(startDate); + const endDateObj = new Date(endDate); + + while (currentDate <= endDateObj) { + dates.push(new Date(currentDate)); + currentDate.setDate(currentDate.getDate() + 1); + } + + return dates; +} +function getPersonalDates(startDate, endDate, days, repeat=1) { + const dates = []; + let indexInWeek = 1; + let push =0; + let currentDate = new Date(startDate); + const endDateObj = new Date(endDate); + while (currentDate <= endDateObj) { + days.forEach((day) => { + if (push<2&&day === new Date(currentDate).getDay()){ + dates.push(new Date(currentDate)); + push++ + } + }); + if (indexInWeek < 7) { + currentDate.setDate(currentDate.getDate() + 1); + indexInWeek++ + } else { + currentDate.setDate(currentDate.getDate() + repeat); + indexInWeek = 0; + push = 0 + } + } + console.log(dates); + return dates; +} +function getMonthDates(startDate, endDate) { + const dates = []; + let currentDate = new Date(startDate); + const endDateObj = new Date(endDate); + + while (currentDate <= endDateObj) { + dates.push(new Date(currentDate)); + currentDate.setDate(currentDate.getDate() + 30); + } + return dates; +} async function findEvent(filter) { const event = eventController.read(filter); return event; } async function findEventByID(id) { - const event = eventController.readOne({_id:id}); + const event = eventController.readOne({ _id: id }); return event; } - async function eventIsExists(id) { return await eventController.read({ id }); } - - module.exports = { createNewEvent, findEvent, findEventByID, }; -// module.exports = { getAllEvents, getFilteredEvents } \ No newline at end of file +// module.exports = { getAllEvents, getFilteredEvents } diff --git a/DL/event.model.js b/DL/event.model.js index 61a0de8..08af893 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,9 +24,16 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, + isReapeated:{type:Boolean, default:false}, + repeatType: { + type: String, + }, date: [{ type: Date, }], + deletedDate:[{type:Date}], + days:[{type:Number}], + repeatSettings:{type:{type:String},repeatEnd:{type:String}}, beginningTime: { type: String, }, @@ -61,9 +68,6 @@ const eventSchema = new mongoose.Schema({ type: String, // require: true, }, - type: { - type: String, - }, // gallery: [ // { // imageURL: { diff --git a/Routes/event.route.js b/Routes/event.route.js index 6fb55d7..5e12360 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -29,9 +29,8 @@ eventRouter.get("/:eventID", async (req, res) => { eventRouter.post("/createvent", async (req, res) => { try { - console.log(req.body); const event = await eventService.createNewEvent(req.body); - res.status(200).send(event); + res.send('ok'); } catch (err) { sendError(res, err); } diff --git a/package-lock.json b/package-lock.json index 078ba85..8656a4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,8 @@ "express": "^4.18.2", "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.0", - "multer": "^1.4.5-lts.1" + "multer": "^1.4.5-lts.1", + "nodemon": "^2.0.21" } }, "node_modules/@aws-crypto/ie11-detection": { @@ -1137,46 +1138,6 @@ "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/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -1241,19 +1202,6 @@ } ] }, - "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/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -1283,15 +1231,6 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, - "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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -1367,27 +1306,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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/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/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, "node_modules/concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -1598,6 +1516,17 @@ "url": "https://paypal.me/naturalintelligence" } }, + "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==", + "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", @@ -1631,33 +1560,6 @@ "node": ">= 0.6" } }, - "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/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1695,25 +1597,6 @@ "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/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1725,6 +1608,14 @@ "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==", + "engines": { + "node": ">=4" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -1819,15 +1710,6 @@ } ] }, - "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", @@ -1846,14 +1728,6 @@ "node": ">= 0.10" } }, - "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/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2184,74 +2058,6 @@ "node": ">= 0.6" } }, - "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.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/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/node-fetch/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/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/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", @@ -2308,6 +2114,17 @@ "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==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -2325,6 +2142,11 @@ "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==" + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -2388,20 +2210,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "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", @@ -2522,11 +2330,6 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, - "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/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -2617,33 +2420,6 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, - "node_modules/tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/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/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -2652,6 +2428,17 @@ "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==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, "node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -2686,6 +2473,11 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -3725,34 +3517,6 @@ "negotiator": "0.6.3" } }, - "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==", - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, "append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -3799,15 +3563,6 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "bcrypt": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", - "integrity": "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==", - "requires": { - "@mapbox/node-pre-gyp": "^1.0.10", - "node-addon-api": "^5.0.0" - } - }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -3833,15 +3588,6 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -3891,21 +3637,6 @@ "get-intrinsic": "^1.0.2" } }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, - "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==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -4072,6 +3803,14 @@ "strnum": "^1.0.5" } }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, "finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -4096,29 +3835,6 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4150,19 +3866,6 @@ "has-symbols": "^1.0.3" } }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "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" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4171,6 +3874,11 @@ "function-bind": "^1.1.1" } }, + "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==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -4230,15 +3938,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -4254,11 +3953,6 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, - "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==" - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -4512,59 +4206,6 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, - "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-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "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==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "requires": { - "abbrev": "1" - } - }, - "npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4606,6 +4247,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -4620,6 +4266,11 @@ "ipaddr.js": "1.9.1" } }, + "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==" + }, "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -4670,14 +4321,6 @@ } } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4768,11 +4411,6 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, - "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==" - }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -4845,31 +4483,19 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, - "tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, "tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -4898,6 +4524,11 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 3588915..079e71d 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "express": "^4.18.2", "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.0", - "multer": "^1.4.5-lts.1" + "multer": "^1.4.5-lts.1", + "nodemon": "^2.0.21" } } From d7d9b9edc4deeb0cd5acfbce767b5610530bc17f Mon Sep 17 00:00:00 2001 From: matanel vatkin Date: Wed, 22 Mar 2023 20:47:46 +0200 Subject: [PATCH 022/150] dates array --- BL/event.services.js | 165 ++++++++++++++++++++++++------------------- 1 file changed, 92 insertions(+), 73 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 8810b4c..fd3f40b 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -2,43 +2,58 @@ const eventController = require("../DL/event.controller"); async function createNewEvent(eventData) { var dates = []; - var date = eventData.date.split("-"); + let repeat = 1; const days = eventData.day ? getDays(eventData.day) : null; - if(eventData.repeat==="שבועי") var repeat= 1; - else if(eventData.repeat==="דו חודשי") var repeat=7 - else if(eventData.repeat==="חודשי") var repeat=23 switch (eventData.type) { case " אירוע יומי": - dates = getDayliDates( - new Date(eventData.date), - new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) - ); + repeat = 1; case "אירוע שבועי": - dates = getWeeklyDates( - new Date(eventData.date), - new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) - ); - case "חודשי": - dates = getMonthDates( - new Date(eventData.date), - new Date(`${date[0]}-${Number(date[1]) + 3}-${date[2]}`) - ); + repeat = 7; case "בהתאמה אישית": - dates = getPersonalDates( - new Date(eventData.date), - new Date( - `${date[0]}-${Number(date[1]) + 3}-${Number(date[2])}` - ), - days, - repeat - ); + if (eventData.repeat === "שבועי") var personalrepeat = 1; + else if (eventData.repeat === "דו חודשי") var personalrepeat = 7; + else if (eventData.repeat === "חודשי") var personalrepeat = 23; + switch (eventData.repeatSettings.type) { + case "date": + dates = getDatesWithEndDate( + new Date(eventData.date), + new Date(eventData.repeatSettings.repeatEnd), + repeat, + days, + personalrepeat + ); - // await eventController.create(eventData); + case "occurrences": + dates = getDatesWithNumberOfOccurrences( + new Date(eventData.date), + eventData.repeatSettings.repeatEnd, + repeat, + days, + personalrepeat + ); + } + + // await eventController.create(evenctData); } // const newEvent = await eventController.create(eventData); return { - status: "success", - newEvent: "ok", + eventName: eventData.eventName, + summary: eventData.summary, + advertiser: eventData.advertiser, + isReapeated:!eventData.repeatType==='אירוע ללא חזרה', + repeatType: eventData.repeatType, + date: dates, + deletedDate:[], + days:days, + repeatSettings:{type:eventData.repeatSettings.type,repeatEnd:eventData.repeatSettings.repeatEnd}, + beginningTime: eventData.beginningTime, + finishTime: eventData.finishTime, + place: eventData.place, + category: eventData.category, + targetAudience: eventData.targetAudience, + registrationPageURL: eventData.registrationPageURL, + cardImageURL: eventData.cardImageURL, + coverImageURL: eventData.coverImageURL }; } const getDays = (days) => { @@ -62,64 +77,68 @@ const getDays = (days) => { }); return newDays; }; -function getWeeklyDates(startDate, endDate) { - const dates = []; - let currentDate = new Date(startDate); - const endDateObj = new Date(endDate); - while (currentDate <= endDateObj) { - dates.push(new Date(currentDate)); - currentDate.setDate(currentDate.getDate() + 7); - } - - return dates; -} -function getDayliDates(startDate, endDate) { +function getDatesWithEndDate(startDate, endDate, repeat, days, personalrepeat) { const dates = []; let currentDate = new Date(startDate); const endDateObj = new Date(endDate); - - while (currentDate <= endDateObj) { - dates.push(new Date(currentDate)); - currentDate.setDate(currentDate.getDate() + 1); - } - - return dates; -} -function getPersonalDates(startDate, endDate, days, repeat=1) { - const dates = []; - let indexInWeek = 1; - let push =0; - let currentDate = new Date(startDate); - const endDateObj = new Date(endDate); - while (currentDate <= endDateObj) { - days.forEach((day) => { - if (push<2&&day === new Date(currentDate).getDay()){ + if (!personalrepeat) { + while (currentDate <= endDateObj) { dates.push(new Date(currentDate)); - push++ - } - }); - if (indexInWeek < 7) { - currentDate.setDate(currentDate.getDate() + 1); - indexInWeek++ - } else { currentDate.setDate(currentDate.getDate() + repeat); - indexInWeek = 0; - push = 0 + } + } else { + let push = 0, + indexInWeek = 1; + while (currentDate <= endDateObj) { + days.forEach((day) => { + if (push < days.length && day === new Date(currentDate).getDay()) { + dates.push(new Date(currentDate)); + push++; + } + }); + if (indexInWeek < 7) { + currentDate.setDate(currentDate.getDate() + 1); + indexInWeek++; + } else { + currentDate.setDate(currentDate.getDate() + personalrepeat); + indexInWeek = 0; + push = 0; + } } } - console.log(dates); return dates; } -function getMonthDates(startDate, endDate) { +function getDatesWithNumberOfOccurrences(startDate, endDate, repeat, days, personalrepeat) { const dates = []; let currentDate = new Date(startDate); const endDateObj = new Date(endDate); - - while (currentDate <= endDateObj) { - dates.push(new Date(currentDate)); - currentDate.setDate(currentDate.getDate() + 30); + if (!personalrepeat) { + while (currentDate <= endDateObj && endDate > 0) { + dates.push(new Date(currentDate)); + currentDate.setDate(currentDate.getDate() + repeat); + endDate--; + } + } else { + let push = 0, + indexInWeek = 1; + while (currentDate <= endDateObj && endDate > 0) { + days.forEach((day) => { + if (push < days.length && day === new Date(currentDate).getDay()) { + dates.push(new Date(currentDate)); + endDate--; + push++; + } + }); + if (indexInWeek < 7) { + currentDate.setDate(currentDate.getDate() + 1); + indexInWeek++; + } else { + currentDate.setDate(currentDate.getDate() + personalrepeat); + indexInWeek = 0; + push = 0; + } + } } - return dates; } async function findEvent(filter) { From 9438b57f7186cf5cedc12f6cfebd91d6b78d1bdc Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Mon, 27 Mar 2023 17:12:39 +0300 Subject: [PATCH 023/150] forgetPass --- BL/user.services.js | 36 ++++++++++++++++++++++++++++++++++++ Routes/user.route.js | 12 ++++++++++++ package-lock.json | 16 +++++++++++++++- package.json | 3 ++- 4 files changed, 65 insertions(+), 2 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 76b9808..6b381a0 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -1,4 +1,7 @@ const userController = require("../DL/user.controller"); +const nodemailer = require('nodemailer'); + + async function createUser(newUserData) { const newUser = await userController.create(newUserData); @@ -13,7 +16,40 @@ async function findUser(user) { return foundUser; } +async function forgetPassword(email, code) { + try { + const transporter = await nodemailer.createTransport({ + service: "gmail", + auth: { + user: "hereevent1@gmail.com", + pass: "jeelwvaploojnari" + } + }); + + const mailOptions = await { + from: 'hereevent1@gmail.com', + to: email, + subject: 'Forgot Password', + text: `Code to reset the password ${code}` + }; + + transporter.sendMail(mailOptions, function (error, info) { + if (error) { + console.log(error); + } else { + console.log('Email sent: ' + info.response); + } + }); + + } catch (error) { + throw { message: "something went wrong" } + + } + +} + module.exports = { createUser, findUser, + forgetPassword, } \ No newline at end of file diff --git a/Routes/user.route.js b/Routes/user.route.js index 43d605b..eab2e08 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -27,4 +27,16 @@ userRouter.post("/login", async (req, res) => { } }); +userRouter.post('/resetPass',async (req,res)=>{ + try { + const { email, code } = req.body; + // await userServices.forgetPassword(email,code); + console.log(email,code); + res.status(200).send("succses") + + } catch (error) { + res.status(500).send(error.message); + } +}) + module.exports = userRouter; diff --git a/package-lock.json b/package-lock.json index d1c220a..dfc9cfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,8 @@ "express": "^4.18.2", "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.0", - "multer": "^1.4.5-lts.1" + "multer": "^1.4.5-lts.1", + "nodemailer": "^6.9.1" } }, "node_modules/@aws-crypto/ie11-detection": { @@ -1834,6 +1835,14 @@ "node": ">= 0.6" } }, + "node_modules/nodemailer": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", + "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3715,6 +3724,11 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, + "nodemailer": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", + "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", diff --git a/package.json b/package.json index 595d4f9..937b054 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "express": "^4.18.2", "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.0", - "multer": "^1.4.5-lts.1" + "multer": "^1.4.5-lts.1", + "nodemailer": "^6.9.1" } } From 1aeb2d569ed00a40d95caf13c5cd10f6688deb47 Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Wed, 29 Mar 2023 13:43:45 +0300 Subject: [PATCH 024/150] mail_interfacing --- BL/user.services.js | 62 +++++++++++++++++++++++++++++++++++++++---- DL/user.controller.js | 5 ++++ Routes/user.route.js | 15 +++++++++-- 3 files changed, 75 insertions(+), 7 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 6b381a0..fc2d0b6 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -1,5 +1,6 @@ const userController = require("../DL/user.controller"); const nodemailer = require('nodemailer'); +const bcrypt = require('bcrypt') @@ -17,6 +18,44 @@ async function findUser(user) { } async function forgetPassword(email, code) { + const subject = 'Forget Password' + const html = ` +
+

איפוס סיסמא

+

Dear ${email},

+

קיבלנו את בקשתך לאפס את הסיסמה לחשבון שלך..

+

קוד איפוס הסיסמה שלך הוא:${code}

+

לאפס את הקוד אנא הזן קוד זה בטופס איפוס הסיסמה כדי להגדיר סיסמה חדשה.

+

אם לא ביקשת איפוס סיסמה, אנא התעלם מאימייל זה.

+

,תודה

+

HereEvent

+
` + await sendMail(email, subject, html) + +} + +async function sendEventDetailsToAdvertiser(email, eventDate) { + const {eventName,advertiser,date,beginningTime,finishTime,place} = eventDate; + const subject = 'פורסם אירוע חדש - hereEvent' + const html = ` +
+

פרטי אירוע חדש

+

אירוע חדש פורסם על ידך:

+
    +
  • שם האירוע: ${eventName}
  • +
  • מפרסם ${advertiser}
  • +
  • תאריך האירוע: ${date}
  • +
  • שעות האירוע: ${beginningTime}-${finishTime}
  • +
  • מיקום האירוע: ${place}
  • +
  • שינוי פרטי האירוע
  • + +
+
` + await sendMail(email, subject, html) + +} + +async function sendMail(email, subject, html) { try { const transporter = await nodemailer.createTransport({ service: "gmail", @@ -25,14 +64,12 @@ async function forgetPassword(email, code) { pass: "jeelwvaploojnari" } }); - const mailOptions = await { from: 'hereevent1@gmail.com', to: email, - subject: 'Forgot Password', - text: `Code to reset the password ${code}` + subject: subject, + html: html }; - transporter.sendMail(mailOptions, function (error, info) { if (error) { console.log(error); @@ -40,7 +77,7 @@ async function forgetPassword(email, code) { console.log('Email sent: ' + info.response); } }); - + } catch (error) { throw { message: "something went wrong" } @@ -48,8 +85,23 @@ async function forgetPassword(email, code) { } +async function updateUser(data) { + const { email, newData } = data; + return await userDL.update(email, newData); +} + +async function changePassword(email, newPassword) { + try { + const pass = bcrypt.hashSync(newPassword, 10) + updateUser({ email: email, newData: { password: pass } }) + } catch (error) { + throw { message: error.message } + } +} + module.exports = { createUser, findUser, forgetPassword, + changePassword } \ No newline at end of file diff --git a/DL/user.controller.js b/DL/user.controller.js index a8a71e0..a0a8f78 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -27,8 +27,13 @@ async function find(user) { } } +async function update(email, newData) { + return await userData.updateOne({ email: email}, newData) +} + module.exports = { create, find, + update } \ No newline at end of file diff --git a/Routes/user.route.js b/Routes/user.route.js index eab2e08..6f520ea 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -27,10 +27,10 @@ userRouter.post("/login", async (req, res) => { } }); -userRouter.post('/resetPass',async (req,res)=>{ +userRouter.post('/forgetPassword',async (req,res)=>{ try { const { email, code } = req.body; - // await userServices.forgetPassword(email,code); + await userServices.forgetPassword(email,code); console.log(email,code); res.status(200).send("succses") @@ -39,4 +39,15 @@ userRouter.post('/resetPass',async (req,res)=>{ } }) +userRouter.post('/resetPassword',async (req,res)=>{ + try { + const { email ,newPassword } = req.body; + // await userServices.changePassword(email,newPassword); + res.status(200).send("password change") + + } catch (error) { + res.status(500).send(error.message); + } +}) + module.exports = userRouter; From c763b70deae8e97fcbda7722a3486c181adf896d Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 29 Mar 2023 16:47:25 +0300 Subject: [PATCH 025/150] rgister and login aouthentication --- DL/user.controller.js | 16 +++++++++++++--- Routes/user.route.js | 4 ++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/DL/user.controller.js b/DL/user.controller.js index a8a71e0..6d0e46b 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -4,14 +4,24 @@ const bcrypt = require('bcrypt') async function create(data) { - return await userData.create(data); + try { + const findEmail = await userData.findOne({email:data.email}); + if (findEmail) { + throw new Error('Email alredy in use'); + } else { + return await userData.create(data); + } + } catch (error) { + throw error; + } + }; async function find(user) { - const { fullName, password } = user; + const { email, password } = user; try { - const foundUser = await userData.findOne({ fullName }); + const foundUser = await userData.findOne({ email }); if (foundUser) { const isPasswordMatch = await bcrypt.compare(password, foundUser.password); if (isPasswordMatch) { diff --git a/Routes/user.route.js b/Routes/user.route.js index 43d605b..2b05ecb 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -19,8 +19,8 @@ userRouter.post("/creatUser", async (req, res) => { userRouter.post("/login", async (req, res) => { try { - const { fullName, password } = req.body; - const user = await userServices.findUser({ fullName, password }); + const { email, password } = req.body; + const user = await userServices.findUser({ email, password }); res.status(200).send(user); } catch (err) { sendError(res, err); From 8fce77d62fe6418f63a95d7d4e49ed9b24103287 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 29 Mar 2023 18:24:12 +0300 Subject: [PATCH 026/150] values basic --- BL/event.services.js | 32 +-- DL/event.model.js | 8 +- Routes/event.route.js | 2 +- Routes/files.route.js | 61 ++++- package-lock.json | 246 ++++++++++++++++-- upload/1.jpg | Bin 0 -> 61900 bytes upload/Kobi_pic-29032023, 162817.jpg | Bin 0 -> 61900 bytes ...hot 2022-01-25 194503-28032023, 143541.png | Bin 0 -> 73904 bytes ...hot 2022-01-25 194503-29032023, 162817.png | Bin 0 -> 73904 bytes ...hot 2022-06-03 112919-28032023, 143541.png | Bin 0 -> 121369 bytes ...hot 2022-06-03 112919-29032023, 162817.png | Bin 0 -> 121369 bytes 11 files changed, 288 insertions(+), 61 deletions(-) create mode 100644 upload/1.jpg create mode 100644 upload/Kobi_pic-29032023, 162817.jpg create mode 100644 upload/Screenshot 2022-01-25 194503-28032023, 143541.png create mode 100644 upload/Screenshot 2022-01-25 194503-29032023, 162817.png create mode 100644 upload/Screenshot 2022-06-03 112919-28032023, 143541.png create mode 100644 upload/Screenshot 2022-06-03 112919-29032023, 162817.png diff --git a/BL/event.services.js b/BL/event.services.js index 349c500..041588e 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -12,7 +12,7 @@ async function createNewEvent(eventData) { case "בהתאמה אישית": if (eventData.repeatType === "שבועי") var personalrepeat = 1; else if (eventData.repeatType === "דו חודשי") var personalrepeat = 7; - else if (eventData.repeatType === "חודשי") var personalrepeat = 23; + // else if (eventData.repeatType === "חודשי") var personalrepeat = 23; switch (eventData.repeatSettings.type) { case "date": dates = getDatesWithEndDate( @@ -32,32 +32,10 @@ async function createNewEvent(eventData) { personalrepeat ); } - - // await eventController.create(evenctData); } - // const newEvent = await eventController.create(eventData); - return { - eventName: eventData.eventName, - summary: eventData.summary, - advertiser: eventData.advertiser, - isReapeated: !eventData.repeatType === "אירוע ללא חזרה", - repeatType: eventData.repeatType, - date: dates, - deletedDate: [], - days: days, - // repeatSettings: { - // type: eventData.repeatSettings.type, - // repeatEnd: eventData.repeatSettings.repeatEnd, - // }, - beginningTime: eventData.beginningTime, - finishTime: eventData.finishTime, - place: eventData.place, - category: eventData.category, - targetAudience: eventData.targetAudience, - registrationPageURL: eventData.registrationPageURL, - cardImageURL: eventData.cardImageURL, - coverImageURL: eventData.coverImageURL, - }; + eventData.date = dates; + const newEvent = await eventController.create(eventData); + return newEvent; } const getDays = (days) => { const newDays = days.map((day) => { @@ -170,4 +148,4 @@ module.exports = { findEventByID, }; -// module.exports = { getAllEvents, getFilteredEvents } +// module.exports = { getAllEvents, getFilteredEvents }; diff --git a/DL/event.model.js b/DL/event.model.js index 1018b33..4da5864 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,7 +24,7 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, - isReapeated: { type: Boolean, default: false }, + isRepeated: { type: Boolean, default: false }, repeatType: { type: String, }, @@ -46,14 +46,16 @@ const eventSchema = new mongoose.Schema({ type: String, // require: true, }, - category: [ + categories: [ { + // type: String, type: mongoose.Schema.Types.ObjectId, ref: "setting.settingData", }, ], - targetAudience: [ + audiences: [ { + // type: String, type: mongoose.Schema.Types.ObjectId, ref: "setting.settingData", }, diff --git a/Routes/event.route.js b/Routes/event.route.js index 1325d3d..359c35d 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -5,7 +5,7 @@ const { sendError } = require("../errController"); // router.post('/event',async (req,res)=>{ // }) -eventRouter.post("", async (req, res) => { +eventRouter.get("", async (req, res) => { try { const event = await eventService.findEvent(req.body ? req.body : {}); res.status(200).send(event); diff --git a/Routes/files.route.js b/Routes/files.route.js index e3c019e..2c39661 100644 --- a/Routes/files.route.js +++ b/Routes/files.route.js @@ -1,22 +1,59 @@ const express = require("express"); const filesRouter = express.Router(); const multer = require("multer"); -const upload = multer({ dest: "../upload/" }); const fs = require("fs"); const { sendError } = require("../errController"); const url = "localhost:5000"; +// const multiUpload = upload.fields([ +// { name: "cardImageURL", maxCount: 1 }, +// { name: "coverImageURL", maxCount: 1 }, +// { name: "gallery", maxCount: 5 }, +// ]); -filesRouter.post("/uploadFile", upload.single("card"), (req, res) => { - let fileType = req.file.mimetype.split("/")[1]; - let newFileName = req.file.filename + "." + fileType; - console.log(req.body); - fs.rename( - `../upload/${req.file.filename}`, - `./upload/${newFileName}`, - function () { - res.send(`${url}/static/${newFileName}`); - } - ); +const storage = multer.diskStorage({ + destination: (req, file, cb) => { + cb(null, "upload"); + }, + filename: (req, file, cb) => { + const { originalname } = file; + const { mimetype } = file; + const timeElapsed = Date.now(); + const today = new Date(timeElapsed); + cb( + null, + `${originalname.split(".")[0]}-${today + .toLocaleString() + .replace(/[-\/:]/g, "")}.${originalname.split(".")[1]}` + ); + }, }); +const upload = multer({ storage }); +// function buildStaticUrl(req, res) { +// let fileType = req.file.mimetype.split("/")[1]; +// let newFileName = req.file.filename + "." + fileType; +// +// console.log(req.body); +// fs.rename( +// `../upload/${req.file.filename}`, +// `./upload/${newFileName}`, +// function () { +// res.send(`${url}/static/${newFileName}`); +// } +// ); +// } + +filesRouter.post("/uploadFile", upload.array("file"), (req, res) => { + res.json({ status: "success" }); +}); + +// filesRouter.post("/uploadFile", multiUpload, (req, res) => { +// for (const key in req.files) { +// if (Object.hasOwnProperty.call(object, key)) { +// const element = object[key]; +// +// } +// } +// buildStaticUrl(req, res); +// }); module.exports = filesRouter; diff --git a/package-lock.json b/package-lock.json index 1e387ec..ad0591e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1324,15 +1324,6 @@ "node": ">=8" } }, - "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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -1408,6 +1399,32 @@ "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==", + "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/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -1710,6 +1727,19 @@ "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", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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", @@ -1922,6 +1952,25 @@ "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==", + "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==", + "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", @@ -1930,6 +1979,17 @@ "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2303,6 +2363,54 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "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==", + "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==" + }, + "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==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -2317,6 +2425,14 @@ "node": ">=6" } }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -2739,6 +2855,17 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, + "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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/tar": { "version": "6.1.13", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", @@ -4002,15 +4129,6 @@ "fill-range": "^7.0.1" } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -4060,6 +4178,21 @@ "get-intrinsic": "^1.0.2" } }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -4296,6 +4429,12 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4449,11 +4588,32 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, "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==" }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -4741,6 +4901,43 @@ } } }, + "nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -4749,6 +4946,11 @@ "abbrev": "1" } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, "npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -5073,6 +5275,14 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, "tar": { "version": "6.1.13", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", diff --git a/upload/1.jpg b/upload/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84faf6c4c4cbd2a56d1a104d97ae12c1806f383a GIT binary patch literal 61900 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 z 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 z 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 Qz3v`p>D?{*`^l^S0c460T>t<8 literal 0 HcmV?d00001 diff --git a/upload/Screenshot 2022-01-25 194503-29032023, 162817.png b/upload/Screenshot 2022-01-25 194503-29032023, 162817.png new file mode 100644 index 0000000000000000000000000000000000000000..56f4988261dca0280a196f15ddb457e1e4f6527e GIT binary patch literal 73904 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 Qz3v`p>D?{*`^l^S0c460T>t<8 literal 0 HcmV?d00001 diff --git a/upload/Screenshot 2022-06-03 112919-28032023, 143541.png b/upload/Screenshot 2022-06-03 112919-28032023, 143541.png new file mode 100644 index 0000000000000000000000000000000000000000..86fc31ba9a2563247b99573170e609eb52948991 GIT binary patch literal 121369 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 Date: Thu, 30 Mar 2023 13:16:22 +0300 Subject: [PATCH 027/150] dates almost ready --- BL/event.services.js | 92 ++--- DL/event.model.js | 2 +- Routes/event.route.js | 2 +- package-lock.json | 876 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 917 insertions(+), 55 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index fd3f40b..027bfcf 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -4,61 +4,41 @@ async function createNewEvent(eventData) { var dates = []; let repeat = 1; const days = eventData.day ? getDays(eventData.day) : null; - switch (eventData.type) { + switch (eventData.repeatType) { case " אירוע יומי": repeat = 1; case "אירוע שבועי": repeat = 7; - case "בהתאמה אישית": - if (eventData.repeat === "שבועי") var personalrepeat = 1; - else if (eventData.repeat === "דו חודשי") var personalrepeat = 7; - else if (eventData.repeat === "חודשי") var personalrepeat = 23; - switch (eventData.repeatSettings.type) { - case "date": - dates = getDatesWithEndDate( - new Date(eventData.date), - new Date(eventData.repeatSettings.repeatEnd), - repeat, - days, - personalrepeat - ); - - case "occurrences": - dates = getDatesWithNumberOfOccurrences( - new Date(eventData.date), - eventData.repeatSettings.repeatEnd, - repeat, - days, - personalrepeat - ); - } - - // await eventController.create(evenctData); + case "בהתאמה אישית": + if (eventData.personalRepeat === "שבועי") var personalrepeat = 1; + else if (eventData.personalRepeat === "דו חודשי") var personalrepeat = 7; + else if (eventData.personalRepeat === "ללא חזרה") var personalrepeat = 1; } - // const newEvent = await eventController.create(eventData); - return { - eventName: eventData.eventName, - summary: eventData.summary, - advertiser: eventData.advertiser, - isReapeated:!eventData.repeatType==='אירוע ללא חזרה', - repeatType: eventData.repeatType, - date: dates, - deletedDate:[], - days:days, - repeatSettings:{type:eventData.repeatSettings.type,repeatEnd:eventData.repeatSettings.repeatEnd}, - beginningTime: eventData.beginningTime, - finishTime: eventData.finishTime, - place: eventData.place, - category: eventData.category, - targetAudience: eventData.targetAudience, - registrationPageURL: eventData.registrationPageURL, - cardImageURL: eventData.cardImageURL, - coverImageURL: eventData.coverImageURL - }; + if (eventData.repeatSettings.type === "endDate"&&eventData.personalRepeat!=='ללא חזרה') { + dates = getDatesWithEndDate( + eventData.date, + new Date(eventData.repeatSettings.repeatEnd), + repeat, + days, + personalrepeat + ); + } else { + dates = getDatesWithNumberOfOccurrences( + new Date(eventData.date), + eventData.personalRepeat!=='ללא חזרה'?eventData.repeatSettings.repeatEnd:days.length, + repeat, + days, + personalrepeat + ); + } + eventData.date = dates; + eventData.days = days; + const newEvent = await eventController.create(eventData); + return newEvent; } const getDays = (days) => { const newDays = days.map((day) => { - switch (day) { + switch (day.name) { case "א": return 0; case "ב": @@ -82,6 +62,7 @@ function getDatesWithEndDate(startDate, endDate, repeat, days, personalrepeat) { let currentDate = new Date(startDate); const endDateObj = new Date(endDate); if (!personalrepeat) { + console.log(currentDate); while (currentDate <= endDateObj) { dates.push(new Date(currentDate)); currentDate.setDate(currentDate.getDate() + repeat); @@ -108,24 +89,29 @@ function getDatesWithEndDate(startDate, endDate, repeat, days, personalrepeat) { } return dates; } -function getDatesWithNumberOfOccurrences(startDate, endDate, repeat, days, personalrepeat) { +function getDatesWithNumberOfOccurrences( + startDate, + endNumber, + repeat, + days, + personalrepeat +) { const dates = []; let currentDate = new Date(startDate); - const endDateObj = new Date(endDate); if (!personalrepeat) { - while (currentDate <= endDateObj && endDate > 0) { + while (currentDate && endNumber > 0) { dates.push(new Date(currentDate)); currentDate.setDate(currentDate.getDate() + repeat); - endDate--; + endNumber--; } } else { let push = 0, indexInWeek = 1; - while (currentDate <= endDateObj && endDate > 0) { + while (currentDate && endNumber > 0) { days.forEach((day) => { if (push < days.length && day === new Date(currentDate).getDay()) { dates.push(new Date(currentDate)); - endDate--; + endNumber--; push++; } }); diff --git a/DL/event.model.js b/DL/event.model.js index 08af893..b17d7e6 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -32,7 +32,7 @@ const eventSchema = new mongoose.Schema({ type: Date, }], deletedDate:[{type:Date}], - days:[{type:Number}], + days:[], repeatSettings:{type:{type:String},repeatEnd:{type:String}}, beginningTime: { type: String, diff --git a/Routes/event.route.js b/Routes/event.route.js index 5e12360..15cd1d4 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -30,7 +30,7 @@ eventRouter.get("/:eventID", async (req, res) => { eventRouter.post("/createvent", async (req, res) => { try { const event = await eventService.createNewEvent(req.body); - res.send('ok'); + res.send(event); } catch (err) { sendError(res, err); } diff --git a/package-lock.json b/package-lock.json index 8656a4f..7cba211 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1138,6 +1138,58 @@ "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/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -1202,6 +1254,27 @@ } ] }, + "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", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -1231,6 +1304,26 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, + "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==", + "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==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -1306,6 +1399,53 @@ "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==", + "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/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/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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, "node_modules/concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -1560,6 +1700,46 @@ "node": ">= 0.6" } }, + "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", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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", @@ -1597,6 +1777,36 @@ "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", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "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", @@ -1710,6 +1920,20 @@ } ] }, + "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==" + }, + "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", @@ -1728,6 +1952,52 @@ "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==", + "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==", + "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==", + "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==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2058,6 +2328,130 @@ "node": ">= 0.6" } }, + "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.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/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/node-fetch/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/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "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==", + "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==" + }, + "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==", + "bin": { + "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", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "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", @@ -2210,6 +2604,31 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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", @@ -2330,6 +2749,30 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "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", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "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==", + "bin": { + "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", @@ -2420,6 +2863,55 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, + "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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/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/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==", + "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", @@ -2439,6 +2931,20 @@ "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==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -3517,6 +4023,43 @@ "negotiator": "0.6.3" } }, + "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==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -3563,6 +4106,20 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "bcrypt": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", + "integrity": "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==", + "requires": { + "@mapbox/node-pre-gyp": "^1.0.10", + "node-addon-api": "^5.0.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -3588,6 +4145,23 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, "bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -3637,6 +4211,36 @@ "get-intrinsic": "^1.0.2" } }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "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==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -3835,6 +4439,35 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -3866,6 +4499,27 @@ "has-symbols": "^1.0.3" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "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" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3938,6 +4592,20 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "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==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -3953,6 +4621,37 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "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==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -4206,6 +4905,101 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, + "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-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "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==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4321,6 +5115,22 @@ } } }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4411,6 +5221,26 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "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==" + }, + "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==", + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -4483,6 +5313,42 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "optional": true }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -4494,6 +5360,16 @@ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "requires": { "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "requires": { + "abbrev": "1" + } + } } }, "tr46": { From 2e1466a2fb4a0e3dde9e891f3723c3433ea5d251 Mon Sep 17 00:00:00 2001 From: yisrael Date: Mon, 3 Apr 2023 13:06:05 +0300 Subject: [PATCH 028/150] installed jsonWebToken and started working on login aouth --- Routes/user.route.js | 28 +++++++++++++++------- package-lock.json | 56 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 9 deletions(-) diff --git a/Routes/user.route.js b/Routes/user.route.js index 2b05ecb..11bdb9c 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -1,17 +1,18 @@ const express = require("express"); const userRouter = express.Router(); const userServices = require("../BL/user.services"); -const { sendError , errorMsg} = require("../errController"); +const jwt = require('jsonwebtoken'); +const { sendError, errorMsg } = require("../errController"); userRouter.post("/creatUser", async (req, res) => { - try { - const user = await userServices.createUser(req.body); - res.status(200).send(user); - } catch (err) { - sendError(res, err); - } - }); + try { + const user = await userServices.createUser(req.body); + res.status(200).send(user); + } catch (err) { + sendError(res, err); + } +}); // userRouter.delete('', async (req, res) => { @@ -21,10 +22,19 @@ userRouter.post("/login", async (req, res) => { try { const { email, password } = req.body; const user = await userServices.findUser({ email, password }); - res.status(200).send(user); + res.status(200).send(user) + + // if (user) { + // const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '1h' }); + // res.status(200).send({ user, token }); + // } else { + // res.status(401).send({ error: 'Invalid credentials' }); + // } + } catch (err) { sendError(res, err); } }); + module.exports = userRouter; diff --git a/package-lock.json b/package-lock.json index ad0591e..7cba211 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1990,6 +1990,14 @@ "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==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2893,6 +2901,17 @@ "node": ">=10" } }, + "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==", + "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", @@ -2912,6 +2931,20 @@ "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==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -4614,6 +4647,11 @@ "is-extglob": "^2.1.1" } }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -5303,6 +5341,14 @@ } } }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -5314,6 +5360,16 @@ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "requires": { "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "requires": { + "abbrev": "1" + } + } } }, "tr46": { From 478f264f3c19b0a8c5df369e14e4ff2e2bbc10f9 Mon Sep 17 00:00:00 2001 From: Naama Orlan Date: Sun, 16 Apr 2023 13:44:41 +0300 Subject: [PATCH 029/150] test --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 5201151..94c3a58 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,7 @@ require("./DL/db").connect(); const mainRouter = require("./Routes"); const express = require("express"); const app = express(); -const PORT = process.env.PORT || 5000; +const PORT = process.env.PORמפT || 5000; const cors = require("cors"); app.use(express.json()); app.use(cors()); From 7bd7d85ca1568e6f400534644875d87d36939a05 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 19 Apr 2023 11:29:30 +0300 Subject: [PATCH 030/150] before matanel --- Routes/event.route.js | 41 ++++- Routes/files.route.js | 34 ++-- package-lock.json | 153 ++++++++++++++---- package.json | 6 +- upload/1.jpg | Bin 61900 -> 0 bytes upload/Kobi_pic-29032023, 162817.jpg | Bin 61900 -> 0 bytes ...hot 2022-01-25 194503-28032023, 143541.png | Bin 73904 -> 0 bytes ...hot 2022-01-25 194503-29032023, 162817.png | Bin 73904 -> 0 bytes ...hot 2022-06-03 112919-28032023, 143541.png | Bin 121369 -> 0 bytes ...hot 2022-06-03 112919-29032023, 162817.png | Bin 121369 -> 0 bytes 10 files changed, 183 insertions(+), 51 deletions(-) delete mode 100644 upload/1.jpg delete mode 100644 upload/Kobi_pic-29032023, 162817.jpg delete mode 100644 upload/Screenshot 2022-01-25 194503-28032023, 143541.png delete mode 100644 upload/Screenshot 2022-01-25 194503-29032023, 162817.png delete mode 100644 upload/Screenshot 2022-06-03 112919-28032023, 143541.png delete mode 100644 upload/Screenshot 2022-06-03 112919-29032023, 162817.png diff --git a/Routes/event.route.js b/Routes/event.route.js index 359c35d..184b4e5 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -1,8 +1,47 @@ const express = require("express"); const eventRouter = express.Router(); const eventService = require("../BL/event.services"); +// const { sendError } = require("../errController"); +const multer = require("multer"); +const fs = require("fs"); + +const uuidv4 = require("uuid/v4"); const { sendError } = require("../errController"); +const url = "localhost:5000"; +const DIR = "upload"; +const storage = multer.diskStorage({ + destination: (req, file, cb) => { + cb(null, DIR); + }, + filename: (req, file, cb) => { + const { originalname } = file; + const { mimetype } = file; + const timeElapsed = Date.now(); + const today = new Date(timeElapsed); + cb( + null, + `${originalname.split(".")[0]}-${today + .toLocaleString() + .replace(/[-\/:]/g, "")}.${originalname.split(".")[1]}` + ); + }, +}); +const upload = multer({ + storage: storage, + fileFilter: (req, file, cb) => { + if ( + file.mimetype == "image/png" || + file.mimetype == "image/jpg" || + file.mimetype == "image/jpeg" + ) { + cb(null, true); + } else { + cb(null, false); + return cb(new Error("Only .png, .jpg and .jpeg format allowed!")); + } + }, +}); // router.post('/event',async (req,res)=>{ // }) eventRouter.get("", async (req, res) => { @@ -24,7 +63,7 @@ eventRouter.get("/:eventID", async (req, res) => { } }); -eventRouter.post("/createvent", async (req, res) => { +eventRouter.post("/createvent", upload.array, async (req, res) => { try { const event = await eventService.createNewEvent(req.body); res.send(event); diff --git a/Routes/files.route.js b/Routes/files.route.js index 2c39661..106db8b 100644 --- a/Routes/files.route.js +++ b/Routes/files.route.js @@ -2,8 +2,11 @@ const express = require("express"); const filesRouter = express.Router(); const multer = require("multer"); const fs = require("fs"); + +const uuidv4 = require("uuid/v4"); const { sendError } = require("../errController"); const url = "localhost:5000"; +const DIR = "upload"; // const multiUpload = upload.fields([ // { name: "cardImageURL", maxCount: 1 }, // { name: "coverImageURL", maxCount: 1 }, @@ -12,7 +15,7 @@ const url = "localhost:5000"; const storage = multer.diskStorage({ destination: (req, file, cb) => { - cb(null, "upload"); + cb(null, DIR); }, filename: (req, file, cb) => { const { originalname } = file; @@ -27,20 +30,21 @@ const storage = multer.diskStorage({ ); }, }); -const upload = multer({ storage }); -// function buildStaticUrl(req, res) { -// let fileType = req.file.mimetype.split("/")[1]; -// let newFileName = req.file.filename + "." + fileType; -// -// console.log(req.body); -// fs.rename( -// `../upload/${req.file.filename}`, -// `./upload/${newFileName}`, -// function () { -// res.send(`${url}/static/${newFileName}`); -// } -// ); -// } +const upload = multer({ + storage: storage, + fileFilter: (req, file, cb) => { + if ( + file.mimetype == "image/png" || + file.mimetype == "image/jpg" || + file.mimetype == "image/jpeg" + ) { + cb(null, true); + } else { + cb(null, false); + return cb(new Error("Only .png, .jpg and .jpeg format allowed!")); + } + }, +}); filesRouter.post("/uploadFile", upload.array("file"), (req, res) => { res.json({ status: "success" }); diff --git a/package-lock.json b/package-lock.json index 7cba211..7646fe9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,15 @@ "license": "ISC", "dependencies": { "bcrypt": "^5.1.0", + "body-parser": "^1.20.2", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", "jsonwebtoken": "^9.0.0", - "mongoose": "^6.10.0", + "mongoose": "^6.10.5", "multer": "^1.4.5-lts.1", - "nodemon": "^2.0.21" + "nodemon": "^2.0.21", + "uuid": "^3.4.0" } }, "node_modules/@aws-crypto/ie11-detection": { @@ -613,6 +615,15 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/middleware-retry/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==", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@aws-sdk/middleware-sdk-sts": { "version": "3.289.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.289.0.tgz", @@ -1276,12 +1287,12 @@ } }, "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==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -1289,7 +1300,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -1640,6 +1651,43 @@ "node": ">= 0.10.0" } }, + "node_modules/express/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/express/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/fast-xml-parser": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", @@ -2233,9 +2281,9 @@ } }, "node_modules/mongoose": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.0.tgz", - "integrity": "sha512-0zrKDEnmNscYyAyN94smo2LlJ63gaezKHpHM+KQ+6EiAgAnah5Kt3hQSYzOTQX/63YNdT1oJXiLlB5LqTdcjUw==", + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.5.tgz", + "integrity": "sha512-y4HL4/9EySec7L0gJ+pCm9heLSF45uIIvRS4fSeAFWDfe4vXW1vRZJwTz7OGkra3ZoSfRnFTo9bNZkuggDVlVA==", "dependencies": { "bson": "^4.7.0", "kareem": "2.5.1", @@ -2572,9 +2620,9 @@ } }, "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==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -3006,12 +3054,12 @@ } }, "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==", - "optional": true, + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "bin/uuid" } }, "node_modules/vary": { @@ -3603,6 +3651,14 @@ "@aws-sdk/util-retry": "3.289.0", "tslib": "^2.3.1", "uuid": "^8.3.2" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true + } } }, "@aws-sdk/middleware-sdk-sts": { @@ -4121,12 +4177,12 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "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==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -4134,7 +4190,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" } @@ -4396,6 +4452,38 @@ "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" + }, + "dependencies": { + "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==", + "requires": { + "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" + } + }, + "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==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } } }, "fast-xml-parser": { @@ -4833,9 +4921,9 @@ } }, "mongoose": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.0.tgz", - "integrity": "sha512-0zrKDEnmNscYyAyN94smo2LlJ63gaezKHpHM+KQ+6EiAgAnah5Kt3hQSYzOTQX/63YNdT1oJXiLlB5LqTdcjUw==", + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.5.tgz", + "integrity": "sha512-y4HL4/9EySec7L0gJ+pCm9heLSF45uIIvRS4fSeAFWDfe4vXW1vRZJwTz7OGkra3ZoSfRnFTo9bNZkuggDVlVA==", "requires": { "bson": "^4.7.0", "kareem": "2.5.1", @@ -5084,9 +5172,9 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "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==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -5421,10 +5509,9 @@ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "vary": { "version": "1.1.2", diff --git a/package.json b/package.json index 079e71d..9050edf 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,14 @@ "license": "ISC", "dependencies": { "bcrypt": "^5.1.0", + "body-parser": "^1.20.2", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", "jsonwebtoken": "^9.0.0", - "mongoose": "^6.10.0", + "mongoose": "^6.10.5", "multer": "^1.4.5-lts.1", - "nodemon": "^2.0.21" + "nodemon": "^2.0.21", + "uuid": "^3.4.0" } } diff --git a/upload/1.jpg b/upload/1.jpg deleted file mode 100644 index 84faf6c4c4cbd2a56d1a104d97ae12c1806f383a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61900 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 z 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 z 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 Qz3v`p>D?{*`^l^S0c460T>t<8 diff --git a/upload/Screenshot 2022-01-25 194503-29032023, 162817.png b/upload/Screenshot 2022-01-25 194503-29032023, 162817.png deleted file mode 100644 index 56f4988261dca0280a196f15ddb457e1e4f6527e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73904 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 Qz3v`p>D?{*`^l^S0c460T>t<8 diff --git a/upload/Screenshot 2022-06-03 112919-28032023, 143541.png b/upload/Screenshot 2022-06-03 112919-28032023, 143541.png deleted file mode 100644 index 86fc31ba9a2563247b99573170e609eb52948991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121369 zcmeFYWmH?;_caPFg;K0Y(c(c%aW7JeTPW^Ug1Z-oLUB!SF9dgYC{QG5k)Xw)KyY{Z zroX>D&wI!Hct74fMn=Xt<0R+owbx#2&bii!_z0B6c|raH1qB61UQS941qIy~1?4H~ zb9CgHzCYvv$S+h^HQ5g+m1D1Wkq2m&63P-NC^d0d_omN~$CyrXx~?cF#0-BwsPbxn zV-%D>1@cl78lR2!A22gDF48z216pm5N)dkFf-H<*{U~q_N`0TV^QuQP-<04h06fyS zW<+ZIluTBZ0k*R#b9yy&-{Hd4tz-bU!nSxW7-U5wv-nlUUV?uf`fb;*tg^D>_R6o* zy|l!kHRG@_!|1yG;-hBKm{w8QSjnx}wpXWo)4}q}6S{v51WDC+CmXDJ(GeV@|F83O z)c0^CR*dA6lZG-LNz5u9S9^I zS_q*eaj=$f1-wuZ{L=c7bSsEvX!^K?BR7|IaWaAU)o-BxskH2g;Q8MZ;J;3=S2#HBuxo zd@~ENsys-d8+X2sn^xiFc>4-M9c(|)@_x;KE|o8ABK5D)OYv0fLGE&2Ck!X0P5omk z;zQ@sWID`DKGOWefO)<~?R1nnqNfZUcFc0}S#@%!&vMj1B>ye;?aP0j1jiNo`ur&j zA}LFeOwmBn5sM(3E2J~BtO|ML&{ zINBuitFCMA!=caTA>bB>d5uZyaFBlO)X7#kufduJ9o!BvYZ4b<@JwqC{PFsp;CC#={$++!um`y=6<{Qw=Uk6@k z-aaq(`E}re|NMq7Z@C$ehpkp=AH5XHVP5!+bMz}0E`@;w;mAWKe2NUl2)4^f;D1vI zbYJTq(V#?eNkeBuk^Yw{B^Rr4ujK?~zX*FFFOzd$AJ#2tJ)&Yc;Qz@m4SFEBPAhJd zt@X7a+gbv>9&Y>B>{V5;_X6Y4d}_-rMu4uS5+3B-Y!-kr=irEY)X7ncUx`_<`V$P!tV|TkbP3jb+mld zOiZ+sh$6B!8;awBQg6Gm^4`6qi#gq?z&MHy!7aQV>IfsJpR$efnVC?e ze@)(v>OY~HB!VUQ3xg2mGY^VG%CwjgAjafdi;c8wNObn?M^f{km%zKH%-T)x?w5#O z{H$FR?XlOv3v68D&DU9JU(J~=*6>3|xzqAB+73A2M$4>hZ;Dj_z7*}o!( zRk4@frTK%=n61t;U%)Zf^tl_&k zKiR(@IDCw+{E3(@F;>5@T{Yts`$yvF#@uP@y)sKrKf+l4J5|CL^w9nsj$WDU6zp6* zzK)SAi4F{mb}`Wa?KFw3glO8`IJu!8Ey~!}|B5K8+o77@nR-7>`t9gIydP@;fQ=Zb zWBGjTt1Q>SyGix9t^f84VIH<8V&HN5 z?gU=fax^{1+fhuZ{9^3T>b7sYUleK>gb&X)o;I`>%Kadn;yD#|lNYe~zn+97RQfxU z5DO+yojdb4Xbx`g$l3}=H!GL}-UJ_?bHAU;PV{`Y{Q7;2o`+-YSHLR7lxuI&;a?sk zl|@FJfTm6m&l;2ff{b16#?-!ld6(fUOi`5bYHp0SV5wA+HnGgyr$-czPF`HB#DefO z_VrGe?Oj)eNb(4~zKdP_1AMV7z&N36`n}`Rf8vIrcc|=l40)#vrPhhACIH2@t8wn^ z!+{$kG})8!r@+{MOvm16I>DWlh(?KBea^i~PfG>+UV@-_%Bb5GSxxz1t*}{s)2C{&O<{!L*udvoun|VZowg5 z>G0a%j-6iF9%6!zJN9EkA8`o#crq9Z=T5dpcz=n~VHpp~^)Y9_Q=gFLe45e~6#z9m zYnH0xMY-@e6|}miE43OIJu>Rb0P8T-Gd+G~W`#1`=n7x+a+|*U*G6OyHHECv>rzgl ztf&(#V@l^EW1A=*%uS^}E?92qTQGj>$kNX{!tKTKX7;6+s^1p5oJ(KXqP8+kvK2cT z*`jn~;zW}(u5E!l8PgAQ*N=&gb*rtsBo4!{pQuG{4Wb=K(vknzy7($o*^(YSF_A$+ zUqiavSk(1}d-C2<8F;A4snDZ}&*vual0hQDu8eHT5chA208hob4SzqkcBKVa(RU|e zvUqIjzOBxfUTIu9Jd@6ET`6e&D23xfA!E-OT_}e}d(qTRO3Ob#hQuKKLUygu8RxWc z|NqB)36IIj5B3SdUDCkroVi7SpM=qkZe=5xXo<)q$XF!k33H17;kBy8Vucx30oK6)^|>}hkSYS%LgP8ljaF5`iJ z-crK3^iId`lq36hgbsf87r}fHWp}M*S4p-x^s?q-+5R0NwHlY*RjeP{R~{@zsJ<^; zCVP8GHWpw|wZLH>L?d=~>s$>h3hOnZE)AwN%!~VHEq2tn?LIvrAc&}cf3-3Rk*Jjb z?Kp@FiLP-n&@X;M=GYgWj!(pF+7ObaSzE4RjDTGf^$aMLyD?QGwKuC+P9g_{_VF`k zxTB&&=AkXxF6=q9i#N-Y_Q$Uc?s#;RR(<0crH2N?Ag#ok0a{So0kMT@lTsU zjUYYm1xsZtI>gGjA8MwCq;dKhu$zQi&DkteKSgJc1@p39b1}SWPvpA3WS(@fhGKH5 zndKc04_r8lkr0_!+KrD?B?)nPZ=y>8oHKcfKjf?TeEpunc7LX4Mq@|GW0dbBI!Exs zWhRJX^MLlo)eH;UWPDSZxW95Q=e27m-F|~XXL2Qt0;LqkmEOu9p70Vk1l1@N0vZf! zy39V>FWxAu>Ou;P83iyVA$=FZHE4i;Z*I$12?{-x113h~9u{AB151 z12C~^RJlUN|A}@DVE#;zvR51GcBI?YrqHFx*HO|iAgll=sEJA==bf~>I8d+?Vm zG+({=HbOo9AWH3syK|X+=$7%GPE@YsW z$wbi@q~OjJPsikrc`T3l4s&jB1^9)}07g26Gnqkv>`%QOw z%nsHD$07J0ONxHO5fo}9yMp0OaGY@Un>ho=44y)W$(=SGUc6w@wGemOw~=^z=TYQF z{oiJraAKk#3W*JVO@k3aRjW=(D$-jttE+x;_X2S&NPA1fko`L!Y+&Ux6y?Unfqw zSoHg?n$5mjJ_mQDqS05nz55Sl&p3<}oxpN=)$`{~#dq2&6%3x%NwL)_GR)I3{& z6A>&<&X8+dsst9&Ps22xkZBhRyT6yN^<4-n+f=4U&6YG0zbuAWBnx)tcvsr<0=br2&=EE!U z3j?vGUDn2iNN*z^smGIOC8j7}Kr7Thy33;p+#!IFP`_WiK5QC+xgc@2$$rTWt=xKt#QG_-q-X zTH9~!dBd@r%zwifK$`9`28te!h=3N!Q-h_66uycp7vq2F$>~TenpQxyj1HTZt7%L>ejN(s0rwdi8XL8;LyeY!gjKjW9Re&_s7IprjU~BiU!Zq7v zvn&NmfF+H}_wlm;?U#czRm!)@;BA1S!V_ujl3Aj0x7v&K;lT4HUil6Zi?Rz9w;w~} z^6S-!P7v%o0=`Vu#h(}vs{extCDRS!*^&$Zb=wFHCKr3+rPzipSePLn&YYHRSkoT4 zJKt;TZSeMHo*vm|XEbCRM4skRlrH-_X&a zu!Lwb*7r8T^8{;AA}L=nT3$o%%L|eZL*bNaOwi@aJvs?G%#qhu&)kM=eB;X~LGz=Sx{_oT zJnWtYCZ@np+{i&pj!qJg5CK5A{P*J2DqLH}xA1Vdb|Z*cNJmkg2TA7UYu%#c4`d&v z1HoN!nQRWDv4+m^*R6mo?c3XgSpdV_=1?5owC$ZiOjJri)U#-%+ZXXj>W#=XQIY4g ztGuP7z00l!#29R)PsfaH-%J->xH|84*4{4l+4tUd_{+ z|EjI9;0@_%#eU2w-8*qM<4LEZysG<^twcYST>M`ishG?%oa{c>T6_l`&;Cp%&=POJ z`e#sj=8vdA9p8?t*ojHp2>sa*_kUYEIGlYX@M`UBv);MCBZwggdpE3*j&vI5k>IDi zs<=i$W(vp)0M2<1UZO`u6XGmLRdULJxc`*&|25>=!7#vwd3vv{N!eKPji1y35;K){ z>37X5O?L~ubk5hF<%@yrCxtpm&5FceKsFJfUb@z;fDF*Z-~!+|Z8vS2F?S5$K@+$2 zG}Exd!K;E`2W%3aSP9W)yHn=2c&y9QD*CDLTfy;MlUj_RJPqMua% z!K3C=SRIPfbFWR&tE!FKnAe-c%*}LTq+qxK^vVN;Ig&MZ{aEgRZVg$~B@bGw)reDn z*J+w=Dwq#Ax~vI7UeneoZ|vN&07bek?=~{o?G6bmqD(KX%G0j5Hx4F10 zReSgiIl4G)TUF=Nz>w^(LtY*a6}69@7(?Rwyv01gJJ~1vHH{@YKGE@)f-D*0Vtt{i z{BJhX2oZDsO3F<0B9o7=nCuNF8M;U3cbk>`jFAe0b8d<5mGfKsppKGqR~GP*2SIg0 zqbzJJp^>LWP;Y^zfO7xgRwqr=5fIrX3o@1WZ_GaWo8j%fl$*Ad?-%iL1W5AnsHZl& z3|q#U#c3Y>4LTjFsdv7y5)FqYK*C<{Y|$_xBUo;Lt4F#RS0?2r$}U*ke1b<=wy{E( z{D3(DbL-2XWF04oCm&BY^4l0~L+p?hkOw?2~pw(AH&& zADrFO2_5)4(6j*GPfdfhi_VAQ+OPNG38UNjF;Tpx{d7AMTcVy_e$r)<+U)Rrfan^T0FDyMu zJSo4ydH^a-8*d6^-}^(Z_I^ccEX4);R;3*MKJ^I<4@U=v!prZ}ll=<{V&uPw9!>MD zn?Q`4-~g9&<{b$UgDy*U}HV(ZgBPf+|=Iry?!>Efy!E9|7CNcUiyMrNVB znTzM|j^8%B$xv8P3@ERhC6QM2p;&}jHQ()9j^BSrO6fYb->^=3G|BG^daHjRlj&sO z3U&KhajXrs?InG>lS^xAIviD7Ayyt_IF#L|n8^SRZbnN4sLLqy^{K?3J~j3ifd%DRU?xp8Q>n^@g9&=L+jFy*=VMS+=%0-K^-GTq%? zOu9Gad&PFvuYaRev2J2U(2)x1*Dl!j42cvzj;6~=a(mp?2Pqck3V#GX{sc;b%e9MX zgF!SKToY=qv``4;R`em@jIVqK9XGd*0`Dh8jOna!tJM^V>h_B@u;~`E>Ce#af!)={ z2c-#WssGf~YFTa%KKluFW06?sKwSzW`l&^ z_6Mf8EouoaH49WjlZ)JbGsfIc?r;QAMSKjfmm+@jF)HNJ{DZvf__V|!{FFS?3U{X* za%f{bshoG8M`Yto6U;ccSVIo`;v0FuKEes4QWp)$rxXO$K+chcSVm@u28Gb zVDx?x6>Xfo+;P&VTM&g85vF2*l}fF{9HF{z5pb&a@NKjV$F-6;M5-PvdetrlX( z@sF@O+v)U)9P6IkyR3Re`PCx&Nv%3gfv4KdS*@9=^%ayzee>y(tY^Lh$zC{`H}vgx zArjqCX?}Yg`{TCbx}l3;*(IROMke}Y;LTIvIYxU>1OQ3xo2cxYXbnf{lRN=Cy)Oja zN?J%!sgvC((A>0?0Lgl+-BdT+TpDt@(zs)$?iruiQXq9`!QknDQ_0`OwSJqD3FJL?2acma5~VT2?W!sV24ajp_a@BH^nRof z{{o;;5dN)vA45|`n;pBWjd9HC{xKzX4yid(iU_?M3v!^AC~-FH(P>51UPs!RhaIyxP63efDq?XgL_9-Way%Nt3Japj<0&exyti? z^F0$PD$5na){t27)s9|D79}ah8`yfnxiaSMV1!nq;S#Do42Vs4g~DM= zqkuhR4Js@jvB`!C{suHEN_2zFBC&Uo;sk8=Z}D#y+Ttb~=+&sR{a-HsHF2j|C@M|V zZ8xEIRt@1Lm>}i@b%u0Pxu>xm-p5D4#a(l%{S>8Gp&%sP5r?r#Tb~K zP|U7QA}%m&CSUeYRVr*(Su9U#bCQF&pgz4dBg8c&_ywj(L2Ce*mC?PNjN2OSCCXQ! z+4Yp`bowj0+kixvXi z_~WHp(oD~xZW$!kH4TBE=%N3^_Xu_sA^M+UG*2Dx#qcMbx|6q2X}a-XzvuOI!#ok9 zt&SfdROx@Ee^MG0n%+tZR+@27c&~{ue`-TH<55Qg#3td*z zGv{2`tnh1%UehXSzHe(&T`>kMYNeM!Zk)_jDxL4-U~M(H6b^EpYmpj7hi!j#HLGgK zWW4|suL|8UFT0t4^y|Lq`I2AWD7HXA)XR%VUyuJR+O0$~g2hF-hF(aw$(8{e$)YAC zeXElEn0q#Tz=l+=eU$&s%k9sE&0uZ1JFyB~nOlS$d+T z3l|EGUQyMoy1P1LPt*FnYm-(Bq(e}m`?BZhz^XWLef(O3YdsMn*Gfx{h+uyoKrY>I z97jKN%yQS_!hG3oGAOOFsA(CpH3-K)&9^L_3L>i{^6M)C)eM$0l*t<9fSLf{ZD<^Y zP_gziNqcmbVB)GZq1Pesy+i_cYW~meWNo$YKX!S*Leuju)9$S@p_gfHxXeK`f5TI^ zO*)UXas3Ck5-`>;c2As~XwtCT2imL&Le+7YrL36bbb!d(^CuI;sqrDaQ6;@ESP<5R zT(V8{C3j{qBUJyzKcVZ9XyLVN7L+t#1n&v$xJ^*~2l;}mP%1Q5cFnH0Ro#wb8XMZ? z+qkE{Di>r#v+g@UIiBY%3IA^!*EK=zdv6&~&_~p$o!xwN$kw@sb)lZJ`Ag;ipP zelzkb7h>Rs*8DW(bUG9Rfi z2E;|0yreGmJMl2gA9Ele*u425Q;K^_B*)S&cHQ>Z!7ox+*tTRstb3VPC8c;%<)6K7 zVb)_eK<12HtTaMC={)9A+i8-I)K)e#WD=9rEF@D131s#E^cPdMh2O*ll3@EA<>x+%A?n|S+Xk%DNnc~uwDMd&xR4G)Hxhy zBI@^0ep(uJ9ct^L?;5>l|C!`bjx08)sE9I=geYd@8oczk1-6b=gTdYe#kR(gDuaSv zz`_J;bE-7$%h+PVq)gCq)zxZMLyY&e zhG_Dv-4F9yr4GGq`GA*6GG4qwjS3y=LJ~tk=fC&eD4`K}vqf#3%cfII6Jvv}E-oEh zQx)3@-o>?~)3?PFWh&V&Uy`s%BH;|8m6tJz$9GB{)F5N| zu)rIeE~6yG52QZk*Hh>2#QnEuN^Yh0G-pRG#kPU`3R%|{mp?9GC7SF;ZF%oezx1MM z_g7$`fz>^-lzB8OuuGEwdIqDpDzH~j*cNp`#&dX`XbB<#Tr)4r%jA()h;)x(XSws@vdDshNnWRib5X{c{uz!vLI~J;(X{##H z&1z;h5-v?lc(;Z1sZ7{f;bGKl6qWKkudW@TIDmmr9F)Z|%2YE}_<|6nVX9RsBWtoK z+DPZ!7P21t3;BX2VsAT%60k&>GJBW72s^hUT*DBgtS#0-e;~3KOUpErQzY{hfMCMcEM;K94>Qg`KIo zx4#n}-jaM%ym~c>H-)q7Aj0VnrTQPqOY3)nmpR!1*SN7|69}0Z2LR?|+ItvpjWn#h>t-Pht^|XY1w#sV&62psxrTey;J&NKO zwQCZzSNzwBZ=RMH0zhT<$=0ByTEiT#@fqVJ zC>cx*Jj*0OEDulGFAX-zS$?b(oQ~+P=rkA6v^vk45G4*N}!$kG-1y(SxIj%Hpx#f5iHok6j#tu%1AnMpfhPff1u{d zv($XNWr7- z+|ufvrgSVt*IF9`Qh}{VJhCGZmXnzbE3&<1DU_9@STR?Y9X~~)f4H4s4$@U8LShR! zSh-Zs3%Z;i&%OzAZd$=c_C^VlPU0+QJ859ZLW$C$M%jnmG%+W!Acz>In`U15o5{Il z#?}0KfJ6>6;4>Y=FaZW8DUz?Q77M2h`VvUR3+E2N1?T;R$mFdX2Bk$5{BuBEH=fpjC~ zT8!;ZnmfZsbbR;lDm5ni4x@%K?h9d%s5d#^;GVMD9~f_K1(RP5N-|pE`qUr|6X1qo z=)RT>b1;*`T>E!IU{1O6<+l+g3GSApQ!nRQ9BvJd+N=mbGrh4OCL3)2Y9Bz^K%8-GO-cnCQN@DY)qMgZ5GE&ln5L88~T3Miumv94ytRqt7ix1?U?Z-fl0rH64O!M(rlee`GR39NH4F8qe&skbOekM{jIm3RJZLPW);I zJeZeqSNM}xO=v!`pC7Kx+&kD|OaV`C?hF#r^LRc({gl6mx=b{qeSt1%E_A!VSG2x} zo_Z#D$lu&4yi2RcSA0h?;pEQsMC@;$jQDB}-OaILe<%oa&L}RMcM;{vGcB=Df=AGC zBBT7YQFCTDxbrnA#4ZYi1M_f~I}n=ps*!lG6rr-J?O<%UII%ynI@>~H#rTL>J{Y7Y zte62_|EcPZnc7}*83tmLN0fnbeq06lSM={CmcJ5;9 z`!0gYMHs4>sHzE1Gx=C_2^!BuPNNODz=F!MfWcSBog;75hxev~n9YoImv0*DIxZLK zK?-RikDc^?<33yCE1FiVa@0C9Ddf&YEB%nkU||_bw4#qVqD%WgX(*-4YtSxsSNj>_)I~=0j9|-z zh9y;vSTXNHloHhWD0c(df;Gwq=Jra6lHj2fhxv6rE`#k8?DuSP6r3aqcWpA@Q@0I$ zReA9e$xLzP^W0tKWmPab^RE8cH+zX?DCPtY%h*oE;y>JHzI)ra^Pqt6%;i4{MlY29W%+{Qu%Yd9v3$4jjNeA zNm_T5THZtyV8rG1f7fpZMW-hcZbCoX`p{-jh-`S4;%Zbo0<{C z0fK%)!efyPX>rThR{@{4`a$uR6xL}8rjF`$l}_~C&ylWdB2n7eJPH%OrXgdR7M&z! z)fH6xCUdzlmX1ytVoSZh8~Gm&#$ClGnanVpXg(|)zSC1J%Z6O~zXL%Ctb5k9P+^Eo z45gSNz;~Bok4}ot#zTlAX3FkTll`-?rVN_jGCjqropP28)xTok8QuLZRYZwwF-Xlj zRB@W4CHbmY7!LybTAjB%n3@rKz~@53zlXe z6I#N&{PBO4!D?~oS~>r>AxbrebW5)H6!XRqd!E!@$){!{m6N!uqa3BFHhrm@NqI~y zLXs7{Qwpe=Fa-B+&+Mida54|(NGMdx2h8ig**o^uq{Njg`h&m&Jao!=j4SI}Ut9R& zK6)roX~m2VAe`xI@@Q02tRViT$Sw~~4j!C&EgsymEu<}P@jcTZe|tLrinuJuj-79Z z3FGRV| z6^`IU_o8lzM;A5pKT0&=aTFQu##2aI3!fJTC(#$I0Iun?{=_xvyRV2&4m2U_AjUOX z4-e*~N7Z{HNWv;J)Ghx~uGRn(Lz;R^&v7WvI$L~Q0W1<;cT-;oae zx6YX(me+|4p1Wl_07L#cg1r=3bfKN>KeqqzP9*j{+UazMR#7@Wef(Tcw8DRTb94EP z`@UwuQ7P%We%xqIR@R|U*!XHM`nZtaW&NxvwHQvrwR=x(r`IaL->Lq^fM5Svgx>n!KuVOH=yOsvsue#C-+h;b_gcU8s~E5JAH9T_|AHb$#SuX zFCWh{LN-R7jTDArj_~D=FJ;LQ)w^fHulZ!IzP>90cDpoT8mT<%^e>(vU6kBlG|_Lw zIi59J>*VPl!~!Yy)lQ^cgBN4*e*?^*1Tnens{@Cn3L=K{o&!7WBL?MENnav6n2zhY zV&$T`y58lB<#fxv#6a9Wp3U1ooR9(R_1D}smOsvfQ064A@8|7Cd$U0OgRh40iSs!#xtOq-7MhcS#U0{8ma*9UeAA?iJ)KuD6XEpe_o}K@`;1OM;?~d_sl0!lOh&PE- zVhYNBI*NKhf=+B+u-;!!w5c=VeS1kxPJX;JbWeDa*2Ysuf)?t zo)}XlL~syA|4^y5cglMf;BZPx`1RPo0nGalf;vw)@M*Dk zp9=Bb+MY)Neo#*I?sVE--mJo3N$R23x^Y#jtzpU(AtWsXK3jM1JQcY&9n;ij zm3zg%IzBlX%J;0Pkcr=Hj+1^Mh^#+9+q#>pYPOjJ%;jx|>d)uL+nH`2&AnMD$VJb^ z^D{BFjNzt1n!Cy@-)eOp3`sEK`u6kSyGEF@<^FU?&vpHLoWNd&(=X~tT~Y4+lWVu# zCiS3~_Y=e*{gLYr>4cEiT81}(lHh%+zp8m464cU>o9yZc@KZi>k$K^Ba{rC~^A1Q< zVd4JsrP;u)x=u~kYiZP$+p!Q`dRa3s63xQUas!e=Sf>@H>FkNw=X*EGNc}~+d*;gW zo{b!;f#1L9G{fm9d7O(nWqCPcXJ*&tCCw3aEOB5?E&pJd zNuR4T%>Jy!+CxbKYuTZ=f2s8-`^9}r9{xoZQ46X4VY!SIzCTat~#KH}pq8}QG%fH?5)qD-VrWu@jh7#4!~laWe$e4i^R z5;zsNbCIQ11hj?h_;|^62$cq2PdhKK90J(riO|nY3L^kaF<_lSu9t0s5z4PP+5o#dzNzD(R~t2rhEWRp7e)E+ z#cNH2{Ik@LLu!7)c|M(a)(1$*jx!xjwP((G?AXVzmBQvY#q#46CMH(b`X+KG0+&_u zGtTAtoL}=BTKiJ1_rleyoo&R3-G9P^&)+muK5VNjixawXR{2$H-ySDeTWnI$6A1ED zdn3@=T`uOgb}oQpqMky$`)Dd&)tUroBe)}DYTFb=QoefC4V4O(1@7$8k>e^ROR^YF zVF{y+pNv^zJ)B~}kJg(v?=F)(Ye$~rQVEjk_pb??Wq#Zf)QnX2!P{6CwXFMnczw({ zLn#uhrqY(Hq0I6qQFzl#^a}qX?VUF^p5JGW&R0Gvxy_Aru|@R9TG`!a5qk@+FUwlf ziyGT4r-p^cGJB>NF!ZnHkzF3D1_P_)St{I<@Agia$YcCgRE0SN9b_C-^!X=Ujz3F~ zCod|=X%B?>p^9f$l=NPS-MwBB*TUL$VO6bc@so-~FWZCyD8IK%nhzYzmoQiBy7i{G zZT^`>=kV8u=Z2X*1`69Wd`Gro?y0FesfS|G!|QP`Qjs8wc_S?v$@Ak0hbN<{e?Bsb z=u@^W7WDJXl~m0ngDrM-@{TS#dYlQX{gs3*=9Q}%$sRCE;0neJb!RebD}Yo}rA1nO z)*0YfpIw^J`oPS_z=@r}t>@C30QsbnmeTls9Q(>4@lv#8EB zQQBzu5HGrjEPS8!NB2fS#vFV&3E<-ceYeVL8)LBuQAJ^Y8#|117q}pVjId6| zR9Z*WW$gjnwKd*D%xs*62jIl0OyMV3zxV~W^d0a0nD>;2dlq)>XBB&uQTnn2aeGEw zEO$1HBphB?lq}}11RG{iLHwBK1JJHCZ>sgl{g7{S6@|WV&(?F_5sX~mL)$hVNSTlR zWNc?Zk)YSU0TF1&jH+EP!RZ$s%BU8486?2c7%Orih9g5ix1nr21wG zqN7RjJt%q3cT&rU{CKU#O!oLb?GiQlIcqFcZwJ%fNv)oCmN5082pOWzeL8h}e)0#7 z_Eeek6;+unkDpP`c^tKE*V(j)?6fe@r z!XdJsvJJ_bp3Y5-n#5_%2NF=8)tHQ3M|^hnMm-$&G}98GC^&l|V`kl|D*#TJO)`UL z*FDgPmNhPw`J-Dx%j~IN+49eOZ-#q!cJGYS1sb-lK@Dka@Ep0u}mG|Y=)iCid$AYctJ9oPQ2N1PNzrRbOl;R)im}5T@uzm5He7k&g+w#-i z$L*R1LdK@b4I!8m#a_Q1W$yXL%_%N;th8Hn({T z3hf37FLl6Pi1A8#=QgcHx;dM3QQ2u*b}Wn1j9%0~EooxeD3?Q)<%{Vj+w@E)2T!*I z%c(O=U~;`AFJ#tF5^$AN&4ALv!=U_cABNiGyF_MND4Vr#=qreI;LUQ1QB>R`j7o|% zYlUtp6OJmixWuYTY-U}MACZKO=-+CpFeU0U$v`9bOyW>{PNhmJQB&s9JFfM*x(>$UB~cn)gXX1bCF1!x5t2 zMVE1 zb>l!>s=u3u@@@A1CM-BuKAOMnV4W9{wFM$G>nENpZ*gCvh))}5N!D=!=yUPk-cZOm zLB9#FiIyij{{}QFgc{dNE9Y25AB6Y<-JX7aF3kk2*Y%V>uolre&|WM^Hm@eu`YKcrW?R%sjkS})&$qfNwt4US`K9eZ*445zJ6zz znnH~Ap4bcVNn%6`Kauyxlcl=M-5S>@Zx#Q^*HWRv$|DLCL0)MxEaQR=%UfeQbsOF9 zWmzO`I-~C!7cEA=XVGWY?2o>GDSIx5|6a90rGqv1dsbA#2En+#1(DL&z=Mq?2oR=P zD&A(a&s~^P*jVv!?qxQxvF5gfPvEcqiX*CMMs*4%JniwenGMVHlv}d(;~1~6Zs#3Z z#>v3#j~yV&U8(P!r3fOMNT~+Uy-4sQW9#5cz3D}k#*!f9x{wlgvnths-?VTl=$)$? z*Nny2w?evju4-ASIfp&ZZQ1I=&?9dT&L&XVetGtP_O1ExMRoB-W^o0-LJA{xhRAQ7 zl08M5)YS`(%(Gh(;@NzSAwRs+*{+3Vx#;i(a$?H{X1!Hy@q5YB{H*ZsP~5r++A3i% zhPMl?xiYD8zhQo)2KCSnUd$Qh0>rRmO=k*oh~*XablQ{QIDYbtb#M&`A;;!)&OJw{ zZ5*pfP5GAs2$F`^Cu>7ow4Sk(5N{6L5-$jHwb>gBmXt96w2w92uc|!YG_!Hd5+`P> zo4@T!c(>U{4a{++WRFzwG9#0QX(`!`B64ZR*T3hf-smhdI+u~-$p=vR;F`c;t}9rR z&A;5nW}BSK_sNw~v)|#Cof+CMZ;vY)Gb7GCkJc(}-!Jdh_Q!JgbNDZJZ&$BxIyV^F zEM8{!u$#TcVRD~4h>>=XU%f)CWKF7v#pf z^KhRW&KRVK6{0^V+Yh%&+kBj6^CYN^o_^@r1#|IGswhRr*$&$v5SHm=uH5fZ$J6c5 z5(%WH{eN;ygho^&DyeKR_iXKnN>gmcZ?ho67 zUtd_h`rNaUmwk{nf#C76Rl|BT&^Ki(BX&$lUb{>3*C-vI^Q;?pRYk=it2uRGRC1ql zlC*iznRz(b%a&r8;tVOLPIhjamaAr>Oq0nq>%%m2`!X5^4d{H4_&s7P1%wVGD=*eE zey#*$Yu1_9lA5;s`$FJrdkJZpkbcgo%82mLM5icc_iD__A2ZEoFmC$g=~qWgokw%= zCBbs|)3?GlxrbjwUk(3~L1UcYtHq|2rH`Qpf|ZyD2dx)L zVi%)z)HBHH`himnU&hE}ib%C3(h_FPnWRYANzXlh#Zx`c)%vrfGzg*|l$8AurMzwM z;E8fYDg1T2%(pn|iB<-oXYAg(Y>l@+P>VG=n(S*>QS3nBnc{QL=rjh4s$>0go}(^BF-Y%IlFgLdW{sdy^n@`py#0H2GCyS%*e zo9lLJXK9R^<}Khu6tZWlg1UbISpmd?-Y(#xZ(|g=YjKYzDZSqsOPrP<$-x6yznZ7O zA(Ep;_qG)z0S+}Lqs#)GbmJM*o*bg40>$I|r(C-_4vIZoIc&qhMHxL#dg{lJnw#q{ zi>a}p&oB`ny^+@X#ZfYLQ6-H52BzWWi$GQHifa3aMjgzmy0n#wg82ofzFO;b$qW>Q zHn0Pwm0?&m2miwx^?^*o!f0v%iKUz`Obhp&T*-c8x09-?RRgnla0HjVQLvJ2qOgxS z>+w(73uZo{69L2I0*YmB`-rNg!Dt)Gg`>07c8{Z|ScP-)s;BH(3p}p-XhHC@y=q6qc zxzmS|)t$-a;Pe~h=3lsfemtAhL9tq~w!4%w#zbJ0i{cD_vK9?wXt`kZxG`Ovcd7}= z^P`H%mniPp=pN3=`7WN=cRM@ra1yPEJv3Kib^p1YS-jaYw!3#j)>PMl^>_0Dsj1e{ z0B&b}lCM9uEs%fRN+d5M5gLonKQc7bk0^m0FN{24GkriuXrM^D*Kpf_`_AyxSPPYN zPdOhY6rM(!@OWtT9opEOdo6x@ClbBD$<+I8T)BYw$vS0lxHDZ^COJ15CSwD$U9-?!WCqI}G0`5ageWG~$VS=Gf&Z=9*+n36xbV7)kA z9Pan9)p6i`IhINjcg973$ti)JJY28tnqV6}@hk1RfAh(GSWRY*GHd{TNt|_KFAwDB z_RDN`w^{Tu+hh4&5fSljjQ5vt4T^XMmHv!lQCznflAA84{Zs;{tXTLEx;HD4*KaZ> z+VIoP+RPxu?EFJ;|Aoj1xAaFf?_9o*wch=1Y@TID_BICl_j++^KHhC8QMbh{|A)J` z{;I0&`o5(_x*McHK)Oqm?vRr1?rs&N8>BG8Y-ZPfxk^N?sOwpRDe1z}>juEZ<; za7@RlIrKi%E&lF&Q~m@z$>hq{k<&v*0{$c!uhZzuZEa5N9SfLTA%-?@udX8@w^&FC zpr-`oJJclAaiRU3_8QvbsUI^?*v1Vgzny_41>vYt{>o3)Gv7#8mLtoQEi+Te(*u{S zly-Kjvg(j6OwLh^89Py%CI&Iq>=P5zvih3Bg~REyNha)^D>&`v@JETlCIO z6@cfVAfNtNvxyQ(Fen(!&<0i6pGpb%{Dz7>M6cX zkO>tnc}1Ma-FQsrkX~la((GJ&|xZOS9iD5;A(9dH!@o zDk3osm<~Jf+55S|XVBqCsOK7+eF-`cdmKwM)>bs=#|lxOcIA=nq8K1lzGusaBk#K{ zTAMbQ`ZiW|ZeDj{M62XeM|N7WbVMw8Gb)xyMSp6_3Logz%)mMycXm&17d~puR3`r* zHz7q(8DLGgViu)MH65XB5Ym-Vb3sI*d%Q0O^K6+Y$5cV8Fy!xmtkil&-FW!POB69OgRQIWP% zz~dl`VETqF+@kqn^>oVVDh0g7I9uQ|I?A{4LdA8=uPPcan2)?x^drpR(iP^- zKXZ{!O*kABYGTnEECJ=A#hu$`GJiD@vW)o1jS`uvCf3rp0k&1jh;5;9;n6a$Ed+d5Ix3d60G=nA(_ zAgtFScPj&G&FJ?c8^3aajVY+OUN(JY-G+$Jd9jah<)cH5U7R8aUW@Qym;oPG#ttoh zMjc$a@5(dYIN7fMrW0hsqX&s2d&#@4HsQHQCd3(^*P1E}w5xFYt}T3sR14cQt?OBY z?Hz?5+RU(x{SZO&<2G7E#Bb_?oSdeTv4r)8ay{1e^7k_p_+LE~p&*r&FTY)OI2`?eygGw0M9 z`?yj+**ohr;oUK}p(5Pj&}kF(g0@Dy;lz$bs|Xn?q0!RPLzDKO+!HEI7BlCM!u&eL z-3TL9>`HXPk zom5T;2;zV(9Z9MestWxZRX5DdjuAvSf@7rxLj(N<@Ms7k7Ryeh8bJFB^@Hm_S!{8!$&L0TUwv0Z7~mnQC6`pb#B%VN+`ku@F} z54~LG7x0hfoD%qRhK47?V{9qS@jGYPwjPsH0(tpBw9c;D6n50EuK2G*lM~XjqwHD; zOO$elny5Dtrd=a2Ifah7-!mp9=OdWE zU0t>xrBaW5AD-0@!06m(w2$Y}MIZ}g)_Gr1_eQi0_+_aBQ_|AKbx5cOo!Z$KutWcD zHXuf|my$k2Vr3{GSH=_`TsM48k(H{Vb8D&kQ-v{5Yk&z;a$3|!k7dlxlh7+M zG0Z|TE(P^FXJLfNu~D~v*Hg3Zp&gVepBU?|v?{DBi!VY6#yna?OtkrC`U|~acZcs7 zH*bbiEx-%~M`Nz8r^DR}1vIuTa5dsM`ZoEj-KQYCQHyOZN@iDj_Yybgsz8;2&bz1m znmpxmHYf0ugYDKJc(ibi#g;h1tS{#y?l1#>(5YE3Y2vJ!i}0r~c;-|rq`vU3d?n>w zk&wHp`*3i^C8%cBy3x?kaI3{rI1>Ly#1_9hTG5ysFnudsZ`5Txu+QFy1XNvjb9-lV ze1rS>5>G`f1d^7YdLeSmJi~yCa#7ttD`j) zdij12lANt&OPC^+=hzvg=SMcEi#mNxivbo*hYzJE9&McN59W+>pOLr>=f1Uj3pz`& zFR=PvN(ykM9D?9KpIdCpN5@_cluq~!l8H%L47;Szd zR|-qCiqH?bOlSWz!f>I-PI_&ofo>W3bL=4DQ28PAaK1Wil(AG!W44-uy)<~;T$MUQ z-kkeL5_B*%U(D_rs~G(=Y^Q8#5w4DzlmYS!*#FZ5Fv^`7Q+eRW2-FpAk~pAc*p90n zF~CMgA@%9;3EsM)c$YJOq<-7eTHnvaor$(HaOwRH!;4g_cO7OD-gQ2JuG2G%h_#?C zv4CI|@+d`NKKd*LSWv#Hlw-Ey%Ses>VKHDp{HL@wCRlWx^Se9PMk5vPXj+>P&d+x< zEf@>Ml!i8eR(oWQZ65(L2a_rdpQoCThdIlge>zEiV<@vZP%s$mP6vXd$U$PK#*+^jX=nFX@mcBJ z1Ec+y@J`dp`@QnfZM^jYg6ekM<6@zeJI|BH8!FOsarDo7D|I;%_3*}!Bkp|W;)?D$ z;YhnRgJp+Fe+o!)^_P{KgLrErRB9^@-z3^^6r2h=ytsr%H+QrJ;9Nd<=e9ARYob`f z6SC$$%{zG_w8Y!dUf3TXb@1mq?-p@$l`w0G#5=g!2@%CSBXK|BLvKMhOFLVVEl%sqjp&GGs@4uytf~q-T-UOzTowNI0-x!Ap_Qc7l5D@?ipKb;fUHUfoZK zIAqA<7l(|#T#NCl`8X4gWyBd{cklMlo<%PzNSLhN)R(ZgJ0~&U8>$XSS=&0X zYB6O9O$9hw98KTL`A8{*6sQ)GeL)zk;#@UoXJnAF@$W!PRY>c6Z!vK!``h1-ujonl z@N}XX#b6+uFXGwd7bd9BnBx*I2P2-F(=e{}dT@)tEE`e5Pc3i+<=gx{?NgI=$ggRY zC^IzQKpYp56&BQ%wz>c^ehTtW^Y@Mb8Eme|tAu+!|6(sYK zF~DBYC-BL_k9RGoM=BSdzpV;pw{`khqjTF^Ja5zL4o?ZGepVH<8pc9yHwoLyGZ+Dv zFwa{^u?QVD5O^;U(bbXf`iS+8nSa$U84-!iPz+@$b|3@{f*VX$xizPxswA_P? z-=(JA5K+!w)!x}0{zU4;WNR}f8xUeBlWBd;y5W=Edu?^ZvEp&+eDRn!6qQMv6TGh+ z@4R&K7&0OW2qiv!B?;@>+p=RD=5ah{FFneQGbhA9&l6f5IP8wJ6vmo}CfC#!h1IDx z<+*8yvG^?`^GO-AraaiQSnT@(3d)V12})nm2E&z)P&i3QUNhAz3X~JXHLzC4HBs*N z+#DLHhWWgziiISZl-Y7coGc@I#4bQqz(JMN^hdaZhtXLmYBh0Z=kjPq|7=#cDPbsy*HPKz4^qe;CYQc9UOAVh{0n(q~* zkzomz=1;B_`lnDa`<_0gc4$&;+2uU7DjPCiT?aoiZBp3iYCZU$df7Mi&Or9qKplSctxk~T2UZtodsP4f#VW@yCV zLJDaKVMLD0?0TPz40z|sWe{E;^GwFQ3dh*zBf5M`ao84yadyy53iXdl4Fw4pOttg| zkJ1Mh(r(vKW|9+jJNt=tmVT$#Nem8S|1KCS*sYHSjB))d8PtJZwMFg5iu_fbEJBu@ z5&bf82+TcwTH5^-R8`3rt_e3)Rb~&ZMzpmQJ85$0L0J=&*9|n24WzhVM35?s2jU#w zmAOPp!}jzCG<_Pf8mU_!t7ih2u~)o!FJ;|!I1{{!{tPo05lUTEgwWYUc_4i@W2YyT`X| zh0sFhmJ&;406LS)w4f#0lna#cmVz)4fCL_w+jW=h%mC~}!?&n?|1LR@=$9|+5u#Od zTOfqP>$}x_Q|(>Hb(v&~q|I7NsYkqEaRUYUKsglTR}=cZU&q#8B;)@1xv9it9lUG^ zL}s$nN>1=z!RC!|TWQ3n+l{pS!oCXs;0p=ymA~ciVuGqng;y)=x|du?r{R0}UQOep z=Fk&^=>1;Z3ykpWLpB1&qRu}^3gU@Gn}i0NN8@8dky&g#i2I_p^Rn@CeGlHpr0f^w zMP=Ll&msj@%54tjIHIA935k&9<)JlM!9oClQj>Mc-`5{+fylXMmA-lQt%e>e-bgH9 zaIr6B!)HtQD9TX@FV-nB*vLBnNi>m<7j+OE4WEN)-ROYp>UyU5TT!9=l;^AzuQ9Q=L#0uhza^n5@iekz8o4+2yF8esukf73INgR}~Rm z;I*=zKUVcwjO6=H`(_N4+sPF3yYKr|gunbam3`N5m#Gnf@H8IPMfZ215`Lx{k2Byr z5PE^M0)i=6Ps@)609WJ%@L1auIv8*S3slcs?3|AVZ=z|(VY!m9%F zbKDQIX6Ef{(S>~tNOsMN9agk$*P6cijH7h9&2BLqxo(~GXZ93ZrT1xYJ~44VNr-8* zo^WgM&%K#G>GYT3`gNx@wz+rRcO8cZIy&tcOs@eCmslz8vxxsy&rej+EbwMX!k*4> zZ;AD<&e$n->mg;s$S9=0oYS=nSxAI<*`dN@Y*0p|AYY+lfPRCceFRY*l*Nw|kG>4~ zuei@Wx?d(Dn)JS_-}shF)+cjlJHbA*l%Q1du1_XpXAbv$S9M*gqPB^^noc`K>*cb@ zdJ4{s!M%QzyQR$v#XYO))e%4uA ziBNiiqC;-4_K{ErRQ_^Vm(3T5Ff~8Pma=sr+7E}$rSKlzOx+B|hWpscx0Eo#zvYN0 z9sEKO<)Fw&`CXw~4kM(zHl3L=E+tsHlZz9Z1pL)&Fi_n5vvYx{HBpJqOnJ4bWPHSC zXyuG6H4z5fJ7pw?wWtKc_GW%ay{ctO9-XWzT1x2IcEg;(78sdvc4uyOeWODD-q^rD4Wyfrs>No0&7` znVNO4DHTd?Pqd;8Gl%J@TBN^A5>?INPsJ2n+jbNAefiOSH5Z@86Kd$Pg*L+DQD6%(X?+$oRE^>OOO4(g=$ucmwkalwm06y|TBiG6g zFntxK-N*N1iRZSMH%&AnKb{lf%4__N^Nj&%F3&9S_)y%As~#Ioe$Uq*`0^RL+6zH zpDd5gb~*QhwzuoQdxnn+402P1tR5ISM;ODMUvZw|WX*G+Sj|=R2sU8%?dpJeGVXMt z6kT2g6&oGxM;;a{Lrz6y(~Tn{_F=l*bUQna2YQMNxHf|B>Tos_?8qKV`_cYaPie2ZOU;RrJ?jBH(O1iAgpth!W(CgW7fZc0!8M@90}lEg5_-}R{=`S zb>4EbATL2&y6g5AroQ++Hd<A0rG*#Z^!%ZPM_cG7B7Vc!`fj^ zCm5*=h%764e@HxQZrH|mjqk6BkE^ys2v>H%5b)B@=Z(ZPdgy*MQ*>Of%(#w3i^?jb z=Te^=;&8XBaskffEwo%CBxIz0aT3KFf7U5L`BSu2CzM9bf^0fv@0lb-AI*Nld2cJy zljP3?cJoXg_h-N}yUuc~qy2Qb(eXg>)zXbnpE+A%w^WSMQw55%%X-rs$|@J`POn@n zbq_vAsKx;g@zh=EK@E}RP@d5?k#p;5lVUj$x3|QPUfj$etTc6YeTQl9DwExDlM!M^ z^8HV{kz3yGr4pp#PH8d-M@87f4ext7^t@%5(t~cdBC2tTI;8lnI@A0K4=D!UcJN(N z?vr3JR)Jv@e=KMAE1qV84);7*6Yw0r34O-eIkcKKk=_?lT)X+u>*rc%_6XJ$%%V>d zcbx9tnON5kXTCXl8E*y7d-^PAx=8*8x#mk)s-A*{sJN%EsF#vnSsY2y9b1^4RfFmB zy){1K3uS!!lp@)O`jX5F2}`ua{)!zO8?t;$;Y0#1#MdMxJ+rtB31(*N2n+9rZ4uWG zR5G^~ly6y0dXCeOOI?5C_6>pZ48k+CEXw=&I^eGN@{K%-Wo*3M66gu5AT@6Uh-AAT zYMpglZJX{`RX^+f@Z%w5NL_ii9KgBbYusqk{F#wWtg@sX`uY0eD=QQRB#0d6EC$B5 zF;C3wuvKNRs|0`_=&8E!dF|B_&Jl-n=b{?M8d|6z7z1LUyYYZ-ZJm>3u?d5EM@&B@BY*wq(VOaN3+!kh@rLF`yqH4KPu^@)v32+Wf3pkG3$ z`K>x-erko)ahL;QC;5K+kkayzb|xY|-OHFnt)4))Q$Bh7hQ4;8R~I%_e6^miB;UPi z#|&*N5)@`X6*~h&B!2t-k0r%o(p5VfJMQZ!>*W$$`l?nPLTZh9)mkjCpSE8J2^7r$ z6dwo%fzH(AA%7a>@@LO&R(=BX`LvaC|4-G#ni-7O-2oV-@A_*@bRl8G0Tm{u_*+Mn zb%RlST70@`yij3%5g#@hp-bBxiAn40^sQWQqzyi;7GflsOl2|TXlv7K%0wfd=Tf&-)lP{e2i70T^y=AT5dGLaDb$V*#0_qzk%v`` z+&JrykTH}p3E7~?ctt&Dpq%_vYEb8~i#C#&Un%gs3F3RLAX&9>$U(bn+6)F*e%`F? zI8JQK%`kP)L2@MaaW1A~kaB@TjTn?gsS_`9fwM8tlCagKNA`!~XrFlMwExI2_BaJKumCqh z3%9I5d&+){Jrz8sSKg0yni}-cir2Nh5o+k*fK9mp?K(Gyun zAagEZAeG^us^fy?D)trH2^&E^G3UnE+x$bEXeotneA?-Eks6dKEF=|Yw`6+U-^{r> zoU~OX-TuGYe~*9jU@zGE$snF1*Y&1`kZjF#L$b@crWxhOB3vL)mqtnc8YPS=CdLx5 z0+Hj>cj{a!y$27}fewvVqfh!;fxAl0K*DWOumQk`yfs$_8?C0alXhz~r@l};b zxAWd_F?>#MKETYk@l9BTHQulN$f5F1Lx!`%qZYmqx;H29yA$9coc!!HatC#hCU3Rc zXUKTIeiEc(n$wz%nX(_^o?Y)}ZVm5fe?UKxD(R6)b;}gyFK(;WaesJnxe?1n7k*lp zx)}|x&%5evEK)D@i&}TT*CVDy{Ux~~%Ve%@^dIVRAm>41LD)N6lGp>2_SLXNoj7um zYkt`~w?z&!+>91SwuA`j8>TI!PoeH)5U$Ot!DgfC5rl41W$k-RrGznlWQFayrk%mpT0ET;Wr!59LBR40?YxDQw^ zkPNIJdTDTJtKm#!wIkx-);gRqPK~OYl!Lyct9SP19Vup;+QXR{=<6XsOsEea@%+t- z;O3X}YQ6>|>Pen*35wz+G{j$6{+6rZwgjw6l)@Znnr^u3T@Q zGkc_m)maCsYOx;O-j{f8V620m^n}btcKXwvUOu7+7R^Qz!<$O-{vZ4{G_XBT0$Qq( zUe`afzXSChDDHh2AI(lkn4VIgblNuSe3SsGa6Qx+zJZ(#X`|f&hcpADTL!J7 z)4yZ++vc^a!H`OcLqAr_SArpMI&)veV0BkIJhqJo%F-HxNHQ~;ikayv3B68#VNVpX zQztbc#s-9e zWy)aKo^zX1_8*RHZI_GEZJ-!>kIW(hqa`;7G|OH0A0J zG1{V4*%erJ@`As5a^!4p@lEyA;h$c!!y%m~?Ix~!MrvvD`_B-oxwN$Oq>hMWVB}?s z3KsHF{qKzE0~4WSy#z`iExpP>^oSET(vikIOtCuKkMT5WHB=odN?jSLtLpd3Dj2G5 zW^u5FN*GJ~j#rWPHKK?H_LHu48Ak?fHWWMX&^B=Q-;Pa~W}f)bE>C9HxRnEF_jpTLba>vDro z;F{f+AGel~3X!hSMN>F+Oc!%)U+4U4VV&$>joE16EoE>^v!3Uxx<9EORW-(yCZZn9 z)l0S2Gw3sUh}doAbi9Wu?;sl!Zh>a^O8en-BJ}(2(6jYnTp(Pa2}VIEtNuDfZeCd! z2~D^LgQ5IbYX0bLXnj8)wBTiz+Qa7c9_neD`Q(@kkIimqguCw!@w(u`HPKlZC8hoK zCxxw|CC$-@zvIV^HB{8(Yo;P8AXq();(IhL&R3* z-yV{@9~<*h3Ww1hlAVO+pTdvScl(3|_-6d7aR97aUc&K3wX(|r7YQqO{vTA{vy5{D zaM0iv??Z5w6w|Y#Tj+ZfH=SlJGX$Oe4UH1U?hfI5FJdJGDJP)nN|cF+^s!LT7d>x;8iCTG-rqguSb3tG@sDkJy)0=$VPWN6Qjg(RY}>il{`Exu;~n9%quPt>jM3nz zDlspxn|-_QR{)g1d_Is2fxy$x@aWZzRSvV}=^jVebUQvE?iXBnv?!WPqPEINu>%O(R2tdH|F$f;b>>NlqV^usoBMxorW?LfToVX>B{|2zvB8S3rh+BO^x%cu)am9UuUWD?U5^1Ag&pY+GIFHzD$T{1zlXOX6ABIg|d-?DjLXKp~2To#!Ne|qX zEu?2xWYKl3htCLF--`!ES)8wxYnv^Tv0R4_v!0}vkP~<5%|JDXlW?S)Vga^5_ywr7 zD^elH;gR-5e)4zzJR4|l(IXCrv#L<}Cz)u{rJN1kDV-N!eonctpTWx~e@p`{teemK zXUFMo%cVzIEcBU!oGzJKA2yxbZ{41M{PDZPa>XSJ>=#6w60betTy%o9d%S`ZcwWS{ z_VVF>qME|}xvrlM6PLf+gQ2(Az6XAU_t0&BZV{zchpE>R9c)kytXFOWE<+_^7HwrBcGvN!l zo30ovj_`V{_+RfCE%lQ1Kvf@;g?wCR#AoPt5ClaGWB<8IL-%Ww6)w45h|4Xb56z$wg=ZiWS>bK!Ki2tqR zN~ApVh=gHl(Y1Hj$&@T4iLURt@%t2q&WrqJ{oJf z?vCdh>Q;4wt|X$}t%RmI{oO`cSO&DM{VavbeszPtDf{{Y*HLs5JoY}sSmM03uT-uRF>r8 zCeJPB7RZz_fSzEy&aRYb%QJOeX<6HdP9yy5YS-Mj{qe%OMC=;xBtp~~4}D~UZg8dy z*2Q(s3+xI2w`MsvjH1*V=x2j^UW;k5ELhBSksgo0*+Ca-&DQ}w^6g+M&Io<^05E_;G?f&<}D~#%Exz|z8g@P#@h-b5|9kc z_?h&+4YalXa&EWHKWJAQjkK>D81Ra0WtLFm2}94wo~wvlc=ftc{2t)T2@<0oCa_qn zMv09xJ;=mPPd=@mGwX*E6?(fNtqS1w&aC;u%GlwDJz!WaR;k#}K;qU{+KBq2B$Vu@ zWcM{& zM&f#_ivD>?#`P)mfgUEmXCKB81-Cyll_c&+K?--#9*=c&`n^GgV?YD#KZ&QagH*Km z-IHtbuq1nGj4kVtgK~EnJ+X)mPxzgp=rt6nO$c1DIMC?foB3fiwVbr!ddM~8UXMQU z!JyOZtQj9FliUF|HeyNR7Vr;!9VeLYe7 zkhxub>%jO-q@Fo@LWJjPoaZM$(wzAST6Q9~sU4v(>LaNr z+?L>pj4?>k@+||{pVs$lOa5Vy8FdsWx9X6KP}$0g!D*4BE*zGVY&}Qi@G4ZxVJLXM z5Fequ%@uyQUObJ*+x4Dh2j07A#MxH1MfUEpNX$mZ8u>qQ5IBbcrbL7XK@xXpdTEIv zyZ{!?xj-K<&v8I)IT@3%-Kh#s+%w@z*4;I#3<`!{{3ZN`ni7#d-83t6xL~<&tXcRR&^S84y%60TjP&m zSg+ljy4SFAS(r2}JHT*~ZRA8Pp%e&?ul)I}T8pv`>r*J`p(uBOTmQ7{AyD(g`f!M~ z)#U2P9*$|}U?#s++dM!*E|ThM%GiS?>Xp7 zWA*L`17b}5ZqS4R?aJn!)AzB&wa1FAh(7)cn&l4Hm#`?`7E-jw3!@wG^D{5!h*~S; zVDGirXkRTWTUXO?WMmKL%8tAY=gEJc4hD*zGUD&zrhEhnpX?0&~GCG=CL7X zHbIODeHI``j`g8LP~!b6&D#+7^lB9LJ0HKqU^OHVHWJn2vH5}%kv82!M?s%Tc6VhxfLiT5L_!e?KeGpq7UB>6Eb4lb5VIk{_cg zD0qk7H?jLF(%q-|IX$BoY2d+^_>Aj_k*tNDz=*i2uytAC&_BgC*~0dq3c*WQ$UOYu z>lj+p@~-LOTY1yK%gPJh$lm4yi=%C|hyASnv#sZN>tB>NH&_Q+X7ILpS7PBKj-AVQ z>H-mi?0qX210;EKL=4n(^0%%J8fA8mWc-Wxe@lt~`9f&@^64fi`uVH@QiFUW-U$PV@|o-!pF0YeDeoOT zhcc|QKTn()ULEx|9sCs9VQ9KuSOpuM;U#8=N=6l_IWR2uPmLr6SZ2Yqn`LEoT{(Sn zDO^$!l^_1R0Yxc(upKLYJW^|&d3)V$j(Vt+KGcRg7pc~8zuKGHoVKi)dHVFa&eCVA zFN(A8h0XcTHKA{s^3cFAM{tcWEJ*1T?zJZ^FFmO#G&v{#cJaIP%C)@cbq6K&igmtm zu9mE4^XPX@<=YXWkWIjn<)uUR7)Y~%7CmJ=*_GQwP=s&M(7mWmQc7*IS#2>e-*Nvo z((jII)%!^BSXe1=E9hz?r=i~H!q2v!7RSI?w*mQjWax+3u7iAMZtf%9T`ugYpFRGn zF_QPrJ-8rIuY0K=$6gyOw|s4q%tdn0g^5kV1bXr@i?)u;-njHVzI&8$cZovFIk!1; z@1|??M5W=Gab%D=D~Ofe9&IM5ab9TTA?k}%UAkG7xY_r|OtWC6Ty)1i?YI-*I#S+*51n>(=hxuE&EYp_unT?_~pH63npaPOxSA| zp>M_ajPZU><%NA=Fvsy2*n!n;4nCScowto@4;eU6btg>N;4Ev zz2{fP17LK?-ocOy+6W|3?QANKm^KdQ3k{r2Xk*zwCYFn|7m?23a2E3DgjTcf6k3N; zI9zxZOv%7s}oHw$UZzP>lsLZ~&i<~_u?~c!P zBo=HXyT3Z=X&)QZf0q?p1%ZbV@}C3j884LzI3E?R0syN?P23l&6+l5z)To5QKK-a& zBGwU|Z;!pxg)V;w!;=?yu8*E!kB`gg1oSCOrqYrUlLIS^^9)>5WXxdeYHJHEDEQnj zb=wfgxVdrw?DNt8@`9uweDm_BNRCSkmPJ%+xpbQ90v2S^F`*^EJnf<5uTF!RE;9Nf z8vkXoqe_Dm2Dl&Mm3u>)7D*Mh9fiB;`MXl;Qv+-a{^arQDPY@lgrGK|6?Mg2lg_xz zzh#quzKmM^j(4_F;NmNksjK_Nizy~Ym+Q|Va%HdTOEq+b zQLi+=_3BGVE4|+iF*%=SojDk%UNvn_x0LKc=KS3Vn7BGlbG+v)8>S=>1Y8^er#X9@ zW+L?hKGsRwiJg^{+*Yj`GBU3em$(1R{}13u6IBxk`Q*`Kb_qqH0ZHd(jySWxVHKhj zU@Hhf({6!HmQV!~Lx*_yUwh_5vW)~>9qM8}{Es$t;eqzBx{!IY2-QeTWx;nD9B*-c zO-{c>ge$_uA|CMP5Bg5<^2~pqHEqKPos(Y`pbr_itc8PYycV*x?gm)N z#CBIlr5S*2>n~6FYG10i*r)5CzU;)s8fpq*&d2y}`~ecHhh(6{TW0~7CjQnxeop^S zvQCjLgATj_sj%+y83IKe!KNlAU4LAU?wuWQ@bGdfE63eMMI9cj(I*r;jc_nfTm|G& zkeiYwx4^&h^TpT5*iFMxU+K^_jX&oye+9tBJjakNCzlQy{K+norZc@eAGcK5s?v00 z`dylZ593{L2ktE1NNlJ!bQk3hRi(IOcXA{WPTK%R!VKalxc_W5?CYnZ5Q0eyfCP`t zPdexj15b;1<$bka#y8GxF-he!gW)gukC+Tk-dAtv)cUrKsiS4*y5Rx!w9H%vDTPvr z*y<_=*qoSfTy83}q^_5YWND&Zg>F_LF@>30I_MRQ(f%~$~FU)2tPqt`It znFo#ucpa%69Ua42|M^(cbK7nW4^Ihe8*MuwqF{hkY^TP(F6hGW*w{b?W$VOdnwP(B zMOl5;HsNtITS)B9$qWP3s(?*V3(bjL*+IpX@P$5o8a@iTej~2$t40WTyhdL>;MDGxg%888kVu^?6of7NXr8=VpavG^YKz#&_{aglKxi#^Ie#b-<*0 z&57M*oo>c@@`$fAKgQ(`gaZ(!O)P!jP<&B}3Bh&hG76|&uQ*qIA}}*e6{{ZerNiKYP(^tQ4sro z-nd%|rDMDEgWc2I@!{7T-{>B;m(wIf)ggGR?1Y7}2MxSEwi@ z2b+K1`ZwEUC

Wp4aO-oWKaGOL7AswtIOEI00w61Hj?e`NO`7LQO`L`7f%KdavhS z)`qgP>3Rfc0FWW8%RcR|Uya0GjoBEfw$lh_A0?qV2n3>IWaJ>lP$Cv466L@?(-0H& zCy7$=mvQrplEE4x@Iz?e7k3ozj1V{Sy_A_ut67j``}(x`bGjsoi$m7 zK)}cZfZS~v`=Iec9F*`MIjUhkx^@Ho8aT6v>LR5eJaJF^Z?HNf8i@%W9p?p-Z@}7J zx*DiSsIUxJNYn#v+q|(Mlmt9voSsTK`9I%AO<8vX8^ba?8$wCn?v`H!$+uJ7?aguw zO&~OP=4B+(q}?ephDqEVgT=Eg+l|BPwHyGLW6rb<(4D^?@m?g;>JXr5o`<*T{O1LH zc?%2qsoqj9@YiLr0JwjW=%(%+(Qhm8UXInH+c6eY>na4VyYPSoH@fp4pF} ze8OZ=ySXCsXnN~t=1(tni>~hnIp!gu1EjBotmX=#KzWpUFQQ`S2+@N+jbkUt^DXf%@p{DBiDlh<1?I* z&tBt*Y5D>s0e^l#uw3Xs00vjd=wR}RqyEQG9fTjHh$7_VSt-$9BI8Zt-YTcb(sohB zu{JGBM$^hg45=IeZHb(LeHqDJ+UEIxYhEwe40#!lA^FgivfC?<&=_kmmVHZZ6i9`8 z$x~%q;Q{C1PL~5)65`lN>kuk)s^kw|gsGKdQ>Fa_*qAJX>O+-vL$4i+!PVA?uWzSa zCG~`>k+Z`hUO;>QT-m<$Zaoy*ZWrRmoTO-EIP=xgZS^SBeOuqip%Q)(QVkm_$bX+o z3pXao=Y8>2>_{iD4I)%#0jv^0d?<1LCKkcKOSdRrLJ`T$y|S6(I_^L zoK5Ns^*H60v9)MDWpTYf6xsi^3;^F6>ll`>c!!$8ESpAP^-9f(WD=K%C3?#=^j3Qr z^C3=3nnoI5wrb40#XiJl4T1rNr3SDzwbJs?7L8KSRK&d z9Z`lqk!RFwfm%ZIilE(U<*D+4A=Pe%gd0dJp1QJBkSagu-%Xw{4cHtVO{ zDf%uPR=&_GUUbn2G;WX1R|8_Xbdx?T7+E$Ksv+_3tl!MBS0z82Ejb72$@wkgby@+A z0NN|k9z2?(fE6p_Z~6Z8Tg_(dG-DJO(Q1Fdz&3pWYv@YqqcZIjCWQ7MdHdfW3LmoG zpIUj`?&4nL!KEfxi#jGyOYD^DwlVROq0(S%;ni>m-kkoxoz9td8}jqLgk>|Q46ASs zc7;$4?(?~LI;$#Ny+AEt)TxuflaJNeaMY~+jJ5s{dkMJnR64?kfRKV`H6x!X)v8$!hb9@Y=!;J<~JA#Wd;@li9~m zlDS+y2b*T3#1`dfTdpD#BKF!Xm7@}Xu>VW)4mP&*Z5)_*0`zxo1m=spJ<)r1pbn(8 z{PCFk1X5x1V=BVSS;*_^xQla6+eje$o0_(Ecz5?lfV&L>*NBLIf{IcV<(P-eIarYz>93vD-(3n-(WaX*T+#^>LLSXUfsF5jYFEL zZf+X=E%IPEKq#PYFRZIuvCE#1?yP=PrLGsk34w_K{s#+Otn)Hloy8Ggc!Ul8V_Wl2N2@(7>kx`x`C$slhSK8S zRzk6zN=3EJj6DZviV=S(5g?OKPeL~UDq2D1*@%5ZqyH6k%vpF;z8SixJhVW7jx(Se z$*GW;-oYOn-KRIA5OIGOX?W_@Qn}NF;(qB>a+XWw9zWMbImW-co`JBd?|q;qP-#eS ztKAAaG;79)+ODQ&VVF*6)C#5w;xbta!D^T%PbwGqb!KECZ#12^p zPLn|Vdu(LLIaYh=5;MFxw|`E;(1?%wW?k2M0cS&%V+Ob}%iqA1Er@8UvD5JV*+anv zMr_)T{_Y3=*%bUsk!4l6K?u@DQT!?`Fhoyo7y?dn>vc9-;3wciJ@^Sk)?G7ox*NrE z$r9kZJ$@{`*_d*_ts8N_^_oIoz80t_QyX(}OZRMkLo8er2BI$fkj!ZI6)-XVUGs%y z)Icm{0oIP{yFzM;13-8MTeU9FJCE}i|#tfn8q$Ep_~c2~YB;*jiNvfd|}%##)g z>4At^P1ZrvPx)ffLj+iuI--B`0Tg!54n6-PTR;-nTwYVy2`DtC8=ZoPPQOGVWG)7_ zsrKb^R8rv3JwZGL8l4esr~PvH9hN48stoQYYIblrw(Od-a{p|pE-4y?A2?w!qdq<% zwq90&8`-_M`c}2joa>qJ475VvL%~mp8v_lC+yQAg{PIK2FOucCK<8lZM1c<2j(M~2 zqmLtA%v%F>Lk>&b^UX&6S0p^s`m*CBg4$-;^G65UbyWK&&cLB&+Th;5%4pDk=_uUc zv6siycHT&U)cW#@+PC3E5@F3Q_x~gAExY1snl{i7EChG=Ai>>XfU{HyO5IsH&FaW?{E|vlvfj+WU&_o;pHau_ zXL){z_tuJ)_8nN_r5l}p#ZnB?N1NRP^hbzvG+k7}%3G{ssO<|-I z>sv0j!yV%LDkKTJ{%|F{?L&jo9>9oim<|N&!rf@9v)~mHm9+ICqcQ!a7DDNU$W4vG9Hnk>-;F6QWvi0O< z-TcHxkJ9nPrp{!rQRR@ygiLjR%1#J!J9Y}mq}h3R&!AuXVVl6!aF<(S8+Ro_sojZ? zOQ`)Lsx@lv`8rkVwsJyLcCb!Gx6GTdET#9oKm%Np;5mUjk0~$fd|FVdNoC()i2C-3 z0a$Ss+vKS_yL+RO`G?CO8$%Y8ii=ZbYG~V=u$&v@9ab*;G4e+!UH`_sKg-w2<@QFi zPm^sHT8nZ(A(WMtj&&cWiPC>=X@r902mZ(`cz~f`gfyN}IzrqmU=F3@w4o&cT{Y3< zw{Ou3*<5bjlzBq9E>g;rnU-ro7EF2*QQvd^InHw)Neyb#sDe-(jj(<0#}M7OTXs_e z0^A+f5EqZxsS6{@OYsOv+;RBzBF@LEAz9}1IK~qr!dNz{)ur?9QqBlz?A`=5bsq+ZiB;&sYp=dQeT!x%$)*hb zW3!^jWr?o7s_(Z+xWe~9n=giH{YoSyN89Vjc^4q7dSEj5EXd26!nksI$=uBs)gv~r(5Xt_jPxHq?4MhAj7 zYK=gs*#pNhV*#KhL_!0A0s4d&&o`ri zx)_twq%RlM+=jc9$L9ytsANy&$LCKs=Dq-DtITlOyDRgvA;uoJ^Bv6N^O)*HNj$BO`n&lE3U<6}2K_2s=s;gLIx&!s;N6?HH-HtZ@WQ zHDy`K9ZsE`y)3ngpM~3%RAStY1xwUM<7M+8hx@iu{?u*yD1T2|A->vyvW7jpPqQVC zVgq)UcZik{bnXd+g;v@VhK*YJ#pow1oACVeuBJofW3A)$cN&dFS7qwTJiIQ=HZ1PL zOL8~kk!55^Gn@o^eS#`HPEzaM0GTt6-;t{^G`_yqC)lsbzjxNnl?u)}3r5>Ax<1Vc z(kGk9*WksxI^zlqHdn!*g1dtQ<5d?J^~-!rZTrFk%k{T+bHdB#jy=0+flc=(jmb6! zG2nHo>Mi-z+wLN#(E_QF_9#>c7+&PF)yAMt8IpxNvfAzvAa$xi1fK}qt*PCnRMP(J z{19PIK)HN{ZL&`&9GSt7cx9*Qm*$9lPDsoFmweVec&Z=yyxgZ*7>&9=oECz;K`)kk zh$o)`o_Rj2QW@T7_R)=-+#tmMfTz$f9d-C8`!G*1{ao)sw`}qy_}-&LCtHJA{@F)R zonWZy-XY)SbK9A$sF+Psp41Pt1&9``@@iV23S24p`i7?D=`};}MA?;H8_dR){H&66 zQ&IjRQ`*NzU{B_Kl@|>U5q;b|pI-ai@>c%hW&ca%EK}TW_7(A$ud{<)H2s~&0*^8` zFU8(pbSs-&v@CTGYts0&o`N zU~6N$A8B>pe##=Q{L~TlVd-@N`F&q&V#0GF6S`mY``_3x)gmj~@(khl~4%$))XO8@d+V867{0 zF8{3m8Go?E$#gS$2!z^9%G@tyGWGxiSPwM2tL&2*ud6-E)%0j?8E-p3_>H|-Q>3D&N{- ztIOFauRNl?nynEq09iwIG=u_+)hGIf`>Kt0MXNKBV;{brN7!w|Bvo@8oq1b1FO{n; za2t(2f;3xm1BFSCbYPwAk2#5xTvW2}07=FZDTw@MvRaT-W8~`IumOYAq7+Iq_1n&0 z+Zha*n7&Kl9m5b3P}w2hR;O8}ZAnXEH{NvESrul(5#Hsg%c46i=H0Nl%Px_-&jVW4 zvrOBhyIb+B>n5r1Il@Pcsy>yw7vwz!H`k{t?W?CD2tN{|d7l}=kBomXr#zpi(`?*3 zG4JA^MN{H`a@{PP?Pk0(?>ki-s?(_;{`Ly{e~DX#Sf^#;cploBzF?h=pIeKW78B^D z-N};kf0S-sa?g)1*GzeBE!MQ#k1_*5F%^BN;Ewl=FQ=W*Iqz3U z^~22o{C;r;db!b`kIyF!#{0rF=C^M9<6CA@mNu#ew~wACSM5qoCV!gYz4e&f58=k( zVP4k;Yj;GcQ@=;MiGYN;A%`puqOFLOHtK6`G1ps^{y#N-m)CZ*l4Nr}x!lGCdO23& z5T86q_;5iOx`dE428ic)XsA>}RmScC34v|`=&f#^hrE4Y@|148*uJ$Yv*=VxKBC0` zvK504`zN&Vo+xcNc`QBw`$X!^I6^f?mX9Zs_2OAL(UyK7*<8QxqQ&ZbIasZhP2mdH z7{t!JS^A*gUhg2e5nwdw5s9pK#h*n_nJmHGx%lp-v;RN?1YWg3fMAi$~l5qDO@p zuUh4|zTkO1Q!&M)jS(mIkqUk)yYGC9+1l5Liy_QembYN1>cpth?g<;J+IKZf5%D1{ z23c?%CtsA>+`U{{bV&e++Y^{$yj^G2S5x$p#{5NFMlS956O2c7o}~as(ambkzoO;{`k{T zJ7w)wWHEU)2q(}vSvqk+2%!oyvUH{kL^OD;qr7j>hpG1Y0PyuH)qiE&&<-i?ERHrh z;{PHLL3=-ec%LHZp?Nb`w0IeLnC1KJa}fkvrmRQUgzQJ**3{C8R^M$^4|QSMbUzP! zJn9_>8J-HaKjud*BG8<5`ozxlP!N0@la_`wZiR#+2>+(rsh45S@0i}_D`g-A{*7I& z&>f#UYH{k9mkbzK5?)A~)G@tK_w`Vd{$-bwmLFYMLO5r7>V?G*W5<#vw0Y1{@q(X5 zJ0V_Lf(j8|T}X={$JD=qNL0{TYjVW7ooagi+m2QZ2O-{h6`F4Mp5oN@-au_tlv8bzl-JXIH>dl8Fax3V+?Qg` z*h^#cbMJ`oY_@DFhB;iE49d>asP z;SiuNH;jM0Ba_bv7ku4W)BDi+(XiYGDEpZS{ufAz$<<#54S46=zODm4a_?BX4GD3< zZ|UC}q_R5S5pp?sc|@)G^E3Ju8vOwEBlsGV zdlH$&HfR|IEBDwpe3s&h$fdT~KQuu5_=322e(<9C$lj9INCb+i-8Y#-EsZ8MBUjnX{Rj_@w``t-Xx8Din+N@v0JC@d@al z?XKkhRB(znYM~?l8Fjl*P=%3qs`Eq})x|fnfsfGPDD?*ya=8fiLF3VxbLQdMJ}A7m zu)Kz+4y()EnA29royJz@k%jBI6OTswY5#D7Lo87$#T`kz_8t*I7;BbetYrit0|MW{ z?1P^v?R28lRN5CW>p~ocj1R4>I7wa#A2XTuRKn~AUVQ~(`K71 zA7Z&7jI!IIM9F^`e9gL>$|07#^|GINioL2hY4TU7T=-QLL&2+^CF3=&^M`whD7%WC|L)bHY25s-R1K`hR*pF*=AdWLtR`3)=BZn13@*tf)xk5D- z*3#@{H3QAM5=_L~#sCW(t5;*+o^Mi)FZ!PLa;LPTGns9>e*sgnPMK>U3W+W@Ww&}N z^OxvHOr&sqKG$2-^~R^WMrXECN)PT1PoiH&a$93V+-Ac+%6*IJ0QyIijlIFYZgJ_O zp)0W>i84-KDob0`B%Sbd22rT^Qf~b`&(CLLETkviIl#Jvw>}y77=#< z*{RR6u%cF(Zh+%+yqLIH_bBcCn~?d$Cd*j2{j9JMIAzEQI1$9YFR*_pIO%lo^}^99 zpt=~|_P})N>to56@dCdyZ5L}g_u0P9LNzG!vd+NpGP+7$9lfYBnfNG=k{JQG)p-!% zwx?^~q$wYWvV8~lMki~;v|Qz4+C4OH?Owlk}H;Ztm-a?2)0E>M3G1wSuBnt5N%b751?52Zuq zs)5TO74&Hhg&FHL^hHVS>}4O+&=Qxla+lG82?aUYdob5dOf#<0+D#mnEU8UTE1Tg# zzx!#xpN90(P>y#V)uRH}7=o{qy{uRRQoxmqCaRCGZO{_{GPlnvS)OL(UHdJnCbdrm_FCuA$lE=7D#bjBBUWT;j+!^*+H(?u8pPtI; z4#Gt$iM7t<ixAQa&WsWY?QCe>I1r@3aRsRb~gPp9mMJs}%&*9TGWQx^v>k@o~bjmNo=%1(W!cghlWt z1czE;wKu_foDW8Zn4Ih&n6R4tqSG_~{Gbte(qD>KXQ*?U6J_`A+3MpJZ^B?Qw+J|H zmuTt7m^PIkU0ixcr94@S5nSLpzxL~fKezQ&P9D-&8yITLQx8OG(LL4HYgjW5EDOJI zm8e=56;{xzf)ra}=Wa!Uv^#pHhYftt~cLVVb z-g%)cuq{^w-W_=Ez}LccmJ5lNp9Zhy6c47$Hf>2 zbt}^?fPBg^ffRpG;GdSHmq?x7^`+8^@z6qHVca+&1tAb}gQsEuc7X%Tq9^aJd;}RC zD#t{S2d^QW=wd3XfTo5e>E)=LynS*VT;m z-X-T~9+!54U~;cSC|EltvDIJBrpF$8Gl8b21aRbBp0Q34b6sHxaOA=sg?e@pTSmr! z7P=ENa+DkCdKVb|vHM}IG_-C9aHMV0WBiHqqVGDScc--{jl<<3GHk#rsfjUsq4O^P zvf;*2@VZ}KP?!>5LT=!h9B!v*qNm=Rz22(g#Fv_!NxjM+7(K9h0bTDbbT^jhj2n9k zU%opy*)zjTK>CfsGP>RL*ixOC`)VhZaVe2(4Pn^2^sZnTK@B>+thcf*q)i>9gBnn* zE|^Z&klzW;=bZ7*L^`%OpZOtrv?55ny4DacB32do*DK3&%|}~GZ#49lt3z%n22%d% zac_UN#K?m*ZPB)5>WfWt-vX&=vK4WEbeuQNdQ7!f=8MD&zBgZ>5cF}+7do=SLytiI ze36Rbh+!ekR&8b#_n>Dt=I+X=zP=G?w|&3v|2YPw_hFKIxV2KEDgo8jN=dElWl|Lh z1RQ@xyV&{oNdji`e9yFBumfqbLo3qAp**&h;iLaO+ylJMrm#%PR_I%Z^~ObjgK@dG zJchb8v)E?;z+&R3QKOm!?XVVYZioHvfsd8}N3_dX{zNzG-m0nF+XCM?NC?PJ*TCcp z%9+Y3!l_xmpqObQB{t)TrSyx0M6x311iviiN7TBAG6eH|IODQNJL1vq_!yQi>kgEQ z-%+aGI^Rsw{OlphI8o%(U%CzQ%dIVSHyUIyRN%uo^w`tSrY)$D5h+L>=Y?1TEE((= z^aLuvbO>nrGt#v72%sf+75-j9R^(Ac`fZJ?Lh&J{b)JWlDC~1-Xa^{xjwhiAC5B8^ zKHe(89y+qRT!0Ll|7om0II!09hlKJ1skBwx@X5BpM%Px=iMH{{?X#!#$EPtYEhL`*L0tlbraM2s!ZMOjr zNAc_4YNlJ?IwC?t8S>7P)@YD%um-l2q`5>iuHFsMoLhMh>G3_QT*Dh6&ACB zx}vj;k4a!p}|Dgm`93l)C7h*W^WFpw5;=J(d}zuS(&G;`i-3v=eQ?%3W_ zXQmj$5Mr!&j3=DPxa;R05V|)sc*jK;5PK`^Te0M$k|}|#v8~3Jq%T)oMDy=d2g{ht z1=)f7QmZ(PLeweM-uqYiZWg>3O}?0tV4Eb{y;oJd7{Xc~eWWvWP?z{*Pq9;+Ez9<=#WVY(&I84Ke=0^)vMK+Q>-B_wnLmBb z`_td!VuW*pT4uIO6psst5&VllJrC}rKfGns@Pr?E5&~hr*4$Sq3UCo4RK_X>zW_5_^pu6-h^JaZ?rBGnrRjKF2E~V+KaqOe(-vAKg=1Wj|uG3k2d)9L?)lFqY zhw4JIY{pg9PJ`nwQQXb#a@3XgyPn?LpMTe|S!_Wh;qjdomD%2dbN5j1>wCGRNtmj%k0oZ(l%Qtw9%4p9J*bTrfg^#`)Aa zm-^fUe?9-0R~m>A68*Tj##}YKSG-rg2kE-@?=i>1+^r7^flDU{6{yJOB@yo-w;&$w z{!y$p!dL!nmuqK~b~`R#`zwW`4bnZwY;nj-TqnEclWj~{US&e=M{Way;PY4$Jdari zcenPELKWexr{EXAl9d?4oiF(7xwq%pNW5hbmC(3Sx>C7PyZVo6P*7N^VWt?TsQ;?6 zy%Nr75ko_7;ezw}d5|#zZQ#9u4E*?P`9rYmu>n!-jK`-H8if@6qi@K|u+?zAzihej zMbfKbPb!RCHh#jhxokr2pF7mTc+Wk99Oo|ocQUQ5?gn!kH(&guWJvNw%mz|@QBKi& z1li0SY5C5zli_-{Os~$%YRGw-7&f1z!_ zMLzMctX`y+?_w|}bg|KIT0221^cFVADs3K=%HRL0A%p3x$ohr<-~VTpfMV_6@ii0jg*sC`mh5$5VQHQa<94|0rT5aqdf^LXN zTAm1HNp32W=aX*c&Q~1hmZU-U(R3FN~K+T34cSdv2F|Ol&CK@_wF_YNbmnPT|V@sXs0`t}w1K zZonuB5u~P@7E118b<>oij>=xr(oyi>On|;8;NO<|?*}J5L~`vPD{#X{`TmF`@jrV{ zP&S*x@_DLRsMYDU!en%9`bVhQo;z0u8{j6W8xN6W%j2SL0#WoyQtai6N_qB!j$~|? zz2=_hyg>ix$ed$!XoQdZ*$ts$-d!VH!i${9e{2HeQ?A=jfwI(3cGp9pvR+QDp#^4s zfX>a!UuIwMbG?M;xD>hVlLhnFpP0ME^$v|uKSR>fTO%j$M+c^)Ns3gj-xyXv7wzgiFT2Xw3C=|?spO^_oJ#Lowh$FphsLC1!l(`(V zl7VH?%)6BWEm>KacWk1&Uyk8Swpq!Xo5#2-K8TjT#5P{oMjDua!RL}kkLbfE_Np@^ z;!?$IFe?$&rG}F~+iL6Ih2Ad#HHD5Mg?{|+B@c5#K!DVlZA!h}iKg?RJNm*yCaAM% z7LY^a4OF$<*t@tcnV%^G-<5#ROE?<;_1q+9DN{@K=p9~@7Tca~{1In*6Z!eMUkzrG zb^%9D0)-lnaCU+Q5xSSX+pE_VU2yWA}SHuSeM$^=Zizg6vQ3h zhokXd5F)80JdpMvC7oqq+}{&RiW%VFnxXD2z4J z6N~0t|LjERp-_X>vlp7lUX9)bq&&z!Bhlm9O8zdnx^zS8X}4baE|0r&w;omLkexRB z+GSVo0a9MmLcP`fa^3g0R^@+2oRx8RF}kW@QGiAR&R8wpauXK2?=vTkU_HDH=>rnN zw87@B57qeR3p_9Ls`(H5bhZr|(*5G6xs?~PU8t}umExpK_KK5gLRXuyC zbE9R`?<{v<%*j{o)4pePE-3Vk{8R^p(t;K!yZwcxw#=Ryw6t4evdE3&fX#^KfG>uN z8mY&qc&M(TEkZ>*ip)Es9MerDr`ssoXM~D@h^govXg$Q^793}|XpghZEK8WQ!>0iP z>B>UWO+*30;3`qX+tqS-pktgn;eRP85Ha8RiFa=CNv1T@cAdIXH9GJ8mxZV7>96;z zQ*{_?-m(XqYK2KKmzNbHvA$HcU<2jie-s(g5{IJd*i{{otkgmDF-yb^e6{S}K-ADa zL0n~TL26#^N`Dk>4H5zoTBL`Nfr>n~b6WVCR>9s4jg&o2SQIe&!@P?F0y&GMyh&fg z-t5pZC=e%`5?>D^Gl9?V!1;IthG)z(Kg7g8AgkLD2Ah275?{t``(vNx5xZm&2*dZ7 z-)gw6jeQa)+Fyrc#LWgNsr%ni6#T)k@0XAlqEeXkDwki*4DztP^aU=WhWuHON<}tnjNW9{MQlXzeWRv!wZwvbE^D z-p5tKBd(`0s0<1f=r)}%2o&x9&tASI@5QM?)IMjK;CTw7VN?ih&Judi)u=2X4}$%= z(IwIIibUbDKpO86K<9@AZu81&ljxg4&ohXjBo0XaxIm-nbbro5h&S}#p^FUJJaT@p zdbgI(@Ph8QRB61l7Lm=8^qVzzQ38g;gZYp3}b?b0(CW81y#X4gwkdOZ{Z@A>DT zG`gg9rzmOjfu##~-ny$)K0nxs%Ij0+*Xkmb+46^yhth|#hw|N$-O^osY$5T~w{F%B z%O*kxO;X)_N#5Rqq^>61@G()#&z^7kt1r5NDo_cr{^Be-+>s%`?t3aUJTC%mhM{Vh zt(iFb6~L+LjD1A z%?pEh7JwrYN|0zPXcLQUapWoCxL6y{}!I+`9&XV%;hC8|y68%xh$^zIQ zTBMU54!(Wz{XB~*=pXyDqlqAwvQwO_y@u&Y0xM${o*tyn@(TRGr4RF?FWT_C%B_1g z#Tcm5tiNpSzmgX^%n8}sVTh5{nyXf{0)vPo{~D~R`P{vK!A;;zhGc(0SwY0QP6WXn zKJ`;81PAFyK8zAetqZ`ERtFh98-$Q)z}n_@iUr1G5n&$`f89x34cymHat1#cpyc62 zlRx9+9Ju3RZPAL@O@%~kcGCDooY8iD5JMG$I}X1@;@&lpUc}EKgJJb03V^L1@#5YH z_81)`JIhC5(Y-@X7SsG88KrT>NU47Me|Bl6P>9akyFqeuCa70A&v|SiM32tO?JXZ^ zD=$91?(SoGt8LZU!fkOIf*YHx%`EI?9+3LWSNLkW)dJMIF-avGQ1xE*-d{)!RMRSh zgbA%Kc*7sMCWU{;#E|dkq899~``rM&wq~2qWd1aoJkTB=9ZXPCSdvnB`?U*5-*vjE z*@N&19LH9d?mmfB;Ot>~$(Hk>#PjJU(U$GL50)S6DYAe^UqWO#i+k9+mFUdHQla+s ztL$12iH-K0q2>)39(nlX_5XUPsv(}n5<^k{S)(lA!n-^ck-WR+uGvZeLsskHp3)c8iN3HM|4GxX+ z=d~_ZQrlyBOOl@veglv4h&eMx^lEr&9RL1ET;Zl9>IzZteIB7G z;_N)}%r=wx`)LHkF?1P}u`2fg*kLkBHGOeTcFPMjQm_1O#Pw=y9+y$P|`{sT$~Ui;kMxI_rz{Uv;yDZ${OlVU%cr-V43wkLX3$j1k2K`2>j+5~EdQxNU`8()At z%fBNbguv{<7&u&$=Tpi0hf*UtjR4tV zm7hpr1TC8hs%J{CyB-dGWSd`r*I>1(;(w}){wFMj2Q9={0@-ojw`PhCyA(IX3zZd2 zh`M1LE_Z~m9Mixbas2x)j@kqTy(e=apzFVJqrVeT>VwR{2!iIOTKdGVQE7+P0wP#h z>(NxsUg7G7y!8IHr~eC_|6ejQ0fdnAKkG-4#})nm^Y^ndI4|2CTh$&F@P7z$f9IE1 z)LaIY&CL29`v4*=|7R$v=-$w+b@sjc8*TjG`1z*{-plsHp?Doq*8YD(&H)51gv-bN zpCUN_T$v-%5Zp95x-`)}agSL4U$#HwVw4Ny_n<5&o{bxGPtyN$TXfEOHPn0B{Wig2 z<^RJ3gScrs7*N>}#36qw-rk^B1+K~ecXJ35V`#d__HvO1chb$Hwkd(%w_;J{T!ooJ z+}o0u@c*xhqEkv7c-x4nv9e+Ak?pU8G(CL%grFtX;PLO+vr(b3EB>RvhxqJyinl%p!)3AMPt_vOYr@=9o2x z=2X4L8b-S@w|uos;p30PUYA_Ol&9mFiyrkD)DMU+KvaqTd+F2*d)jB4^|le2EI+OE zn=EZp{u}(rbIEUHT#jE(PfaC9ieUa7*{#o9oBCyg-qbknqkVY+SD{@8%M1IfD)Si) zofTx+mS*Vnx*xhCgfz;{BoTPiSntY(OHa)#`fW$q3k{%4N^7cvXRzTHr2{B!U>p?W zgPt8i@{0jAem{CNQ2)HbhEo^or#F9`!%n;yJO{G67{vWW0%wPWoE`k&pww^|Bk_H{ zc6yyB4L;ec9f$rkBPb(*dg&$of{^!j0`ZC`JpfE^kI^+f-wp3_Qj#lJEQI5`L@p8 zr7*mNdU!nanA6drUP;n3q@jl_@zago7906nmg?5!BLFwZ7p1e}`3sJ+Mn|yqDPJ+` zP)oz(0xWh&Y{xg^`P~!Y9<3x)q@hHQi&UYqTmNtIE?NzL%uLH%Y%ebsyIbeVUoA4% z)Tz>UTPZ!d*3HLToS+&qa7K#fIQM^=ezMyLd1h;gRvenWZ%GBL>{2N2BTl5E<+*t8B1Y5?5OSNP|DK?;D1XUo2zUT>3oIg|jWU#8RZx z+(f6ZT~DZQV^Dc9Ox#8eEuFDn3qe%X@>iLNDIndi&|t2kV4(!@W(b$^#{OMVKeNQ| z-ZZ@ZxQIfBTFnjlDrD%8$bsu88eLloxO~wI{ZGv40i~1sc?Dk;z86k#H2f4kUzpXh zeWYQOkvt3Q44s=5yJPQZ=ER>ZqNZq*QqU%SAO=DIf#vrF8dtlQALG}4yQNIz! zy(pD(MG5ZmHyP!R5VHGN-)t7LAR=Z>8GgtP-Ul_tz5rUmO6_qRxZ9Y&6ixS= z?BeN`Q0E!?tGW0!C3#V@Q&S?jCxT60dj~Xm`H6^yv~6zOl*=91P#HEl@$P88buXH5 zVA%NP*LhNy&!x~jq5k3>yrwqxb44Nyh9RHIn90qPLuh`pSaN%kXCd7{NSFdk!TtI6 ziL8#gnw6ZHlSCz<5%erL3E;z{virSpaN+|#Y00OWVC@WGX_@E3kEp4VY!Enp6^~Cj z9I>Pqx1At?xxEfBa)bMoo+u6r+F5c*AAKluTFDrO<+Qi8yeG2$wwxKRag z4P1BO(i8pIWMt86xx?4|LjReER^$Ecgu~Xsf|9~q>|?TnE9(4YT8y~PU9Mz5QAOf5 z=k1IW{luuypY&jRc&C*v4xBsRuXtr2-yPsgR*DdEr9zRj+XMHm5 zM`_JClaRE#NTC4ss4~#SJygU!ln7%>d;)ahSp*|UX%R;#rgJCBIL5PBEur9%Kq`J( zYXuX`_hSeZQBck#Gl?ESy+k)pfK|dW`tcZsv;A6B6 zsQ()}wSlu@-UW%lBP(N;{o1LOa-t%F5?Ns-)rRW9pkl|Dn`w|~MCahh(pJc9IV~`o z;S~mzQ7^>3{Mdc=iS2nwSB%*Q`KoWX;?R^Yr0i>4mj`EZ)rfd!BjIwF4>z^kmsR1V z4dr71*Quj1{vJjnJnO(7Sdm$(zreX$g3^GAgZd*KujOsW$(_Z}bysKpC& zH8~EV<@*y7J3O5N`JsWIhj;lkyyV))?Ez z%e!}-Cg>JUkSe4P@A7svJ%HwzUnkL(5}I|pC0lmZ(am2>9QY1MOHLZlaQWBsV#q1- zw9CrsH|1T-sF?KHX`xkf$7Qse2#N+vIp(t5$ytn1^w(=Xss!`6t32hbelbB4v8@Qa zC>%(|7KEY%1K+V;E%Xl0+%AhsGsY@5;y%cEA8k|vC<+>!o>2JJ`tZ>j?GasVGQ!Zj zr5MZl$1?^r4Y=^aN~Kd*OFYkQuqoWE$fwNTQyc;PSl!V{bm4JFkijQg%t6Q{0Ni|fi z$zZSHvVRn~sTaCP!p4bWVfwsfq@u^k{%%@o^&Ur=q<$P;Cay~%n%AHjF2)~jp>UDN z>m%{1UX?;TtKB8EwmzGWD+U|tTooLnY5(_oBI%(r4U}A6J-5=C57pM)gpT^zJ_>#4 zMCMHqg2?g^Yo^BF5qf=dtQvZAWo&=vjcI?k1EF3@zqOUfA$T}5Hg;jgC?0>wR<{2j zVe#P1DoL9uSNwx3?cylorzJ|eHlC-6<0_r$Ck1gS4ewM&8J1cg6&`e4wkv4X+n_g%q^k!O3{)~Z zfN%CVDh&-?u0Fb)^~@O(Vmzm`C?Q6`i+DgheoJ)^yYS1`^R~}0O zc*i?>Z36gO^zi*%a)q?x8Mh;aLSy0A-NGbTqqCD~*D^Y1{pmg2nyN9sk?p>*t3zzR zT-rfGyOqS9au(x#`HnV{3EL(d{-G0{sEc`z3O)%Eok)(2QYqi{#xm}U2b2e(|47{9 z2Jl$VUFtGEBSWD|(;}S@0`m%a9BeJeco$J-&zvh(kdeIID_&BxEqQ900K;sB4Oi6{ zsgKI6BIe9uzk5qR0L))+<&O4KWO@mDF=J~fKJGG)52QN88$_muTQI8`4~DDuuP-Ye zl-BNBTghe5uQ#$0tD@e^Ny#kvT>@|HaspFh)7Wt9ly8UeEU$JvIh<^8!jbaPiS;LC zh$o6LU$-$?-d>^3YmxD^=sDnH9N$`S289x8o|j-g{TBZs4m?R7_>%g41Cu#x$Mpx4@*sMNA-7;?@bH~*mB~)wK#4x zss?LT=wioANr1%d018#&Z$5*qu`t$p%h!GiBTv%zpgR6~J89k5Xw5>Rg<3~l4T^&K zjVlBsXe3ALH6?J9RmPg_Zq#Du?ctE@G?{F4^Ry*ls^ay7{0`P|!=#_IJGlk5h-I1G zOc&v`k7gw}e7AVea5;UA)pyNO*7eW8%i~qYW7nyPZ+ZgdSa}uK(0l3 zQ8-H02YfMjexMki!-VVbg9Wh-y~{*e!=8Y#iW#Afo&k0{2Rv(ahSb8jfpX06j{w z(Zjrkw$?ie(r97lP$+TIZ)6Xc%t)Lkl4qxKyj4uw++GAB8|MysrPraVIK{76;c^{K%x|lO)v|Fk7$#zmh z@OE86m8B7JJVo4>MD23scq|CaZXWeXiB1%|5Kk2iu(i~5oL#-^ zDcv%}x#fkL1vgoeqy;36lwb4&2L}ksVY~Zca0&7wx~6_7A&X&EyyDyz)ipfetV5G9ff2N#mTFCL3=A6YUWz7#|Xc6`%dU# zKBG25+`+d*w9m_lp?KKtcy(yLF?A>c?k3-L>GY!!1IPi;5n1}d`@dvEWxo!rN(cZP zZda#IoMa7QzRmqM->x;4<7*V+#}PysdF=9#QlORpOBklcJ45JWDW^LY@%eP@CsJUh zH$h5(6DV~oP+f$t+N2scalu7n2_$erX{3GQ!LF-+H>hgu-pJaM6$~p8-9dDsBmhT# z*#q^ZM}DVNc|`4LH=_kM1b(7tbmSs_vgGPemBGV-6C>cx@UYhzE4A1e;l`%CJ4~jQ zv(B|f5`lyp%BVzaV&A2_rjQGQ0n)7_Jy1* z7T2DB8vLjjwePRi59( zeQ@U9sJS~Y2SQH^3lVs%Vham2O}hVFmhl7rY$4!jZUQZQFM~pLYhJ>z0Q%l8MPS_-xXR zN74o&qx|SOf(r7y+Gt&-0*$F`%-BmLjhr#<11zbNi@SpKz}7vt*M+Gku(C*w(bbjp^3_D4~MY9$vDqBph?KQ#6zsF@I2CI**? zDtr?>An97G?xm>*pu5XL}4T0d&_EtlXdwZjm#EZbU**?F~+2 zmGqbEFU(lpH2hwq0LI~+@4OSX+~%{KE^QBy1QFj2c-7s&)elo14>aHrJF2?%PT8kD z@o|BDv+p259Gms`+ggmJn4`qeAr)8cKfgJzy=!G($tXc~d?aE}?RHZBgOkxk33VvV z`k@hJ;{RdqEra6xwsl|JC4>ZmdvKS=H35PXXx!Zi?iMt`-61$M?oLApZo%DxyVGcM zJO8!z+3VCk=i{yW z4PKdO7MnmtaO9@=GpovuPjtzh{VLY9g>;s<*lX`_#IJwOE@U(!x7STwdcu?+6lvkW4(Cdx&9l@j{ll<~4DzF&pfTpJg*2;NDl(`q6;j`G}?X zxt|+_Ecm(__(X#3NSt>ZIsC41);N%jSM;0cs$eo3nyaRoO5KjI+vu-S3=Fry0k~H` z`m4c->NgsR6y0Bs+bEI%*+5ikJ2_odd8bw3FBDN{nMM&Em{KGpJf%$1%Vs}Y z=ry)N7lRK|xCB}e<;`<-8&-=27nrn9l@{5seUC;KPuzE!9jWR7r}4<)CeZrGc#~DwZ z7LD~@JKv;I*kp->JV`lYV7IOrGiq2S+Zl#ks75xz!N%^Kd@RnQl0scJ$i!E*-L!{| zLsRv^Ck@*-qJ-RFZKvllXTCMxj3%Z0GIP#+uIfWr)LGg2rpz4WL;r$T<}#!IJ8vJj zFSKOk1_B|@%i__XR3R4aK z9|5(okxQyWsHb9(c|4u84(ARVfzc+ z=hUK~RzBR{<=#BGyw!O7?$zx=NXC>zv|#}K&2gkZ2bJX(-y5wn8dy!S73hDo@dc|A zxb$5oD$(o5eKWiClJpI_J@Z>>v+^J35m24Byo*MN->lU-)TSceF^(Sdd&?pephU)A z^4g0LU8`nVZ$9A9JJg;5*p52Y7jk?eWZT)N+u((`#^Gh!A3Jt)D5MutzlTHrHyosk zu7xQG_#=knaO@!?w+^zzLBEL&Y^&y>HCj`XXBU$73OHAQrbJn`v;;bN^&H6wE!#I~ig84)j%7q8D!y({9D;$~g*S*n+rm zYJ}=Ro>Vi^WqJ70WSGG0vkWA}4G4k#{L zaUP3`Mta0QH4;!~yRQ7k-Vc+6Y90>4_q;4f00rQP<0k6S_?g{&4J8dvueJ*w0${{9 zANEF+&U&p}kF@l8Lx4^JaFN$|c#993PQ86M?AZbZ9s&cMF00KU#YmUd`St#Ho2W=A zO+RNnV6%Fwu+RR?WQ+B-NX)rO-~H(qE!lbRiD}?-1}Et05p?hyTzj3aSv%s0pz%IN zDligUtf#I%bG^QWN@K9#4+pfI*qq6mFnaoB<xLQXLAgeSGV}eNiC#V0|I3?7RvUEV(Zapa|nj-gOU;r=9 z^B#rP16W9f-xDXnB)q3&oLRmLtrYsEEE5|17l<_?+skdVL4a=Z;ETt5(S3)<$LnrZ#BKhS z7Q6$BT=C{{at5(;ib5#oTcQ#N$v=j>)D7r;lo@Vz4J1mtL6^(x`;C~^B=zSK{>Z{B zO|5;1^SxYoYc0VSto{x{*(MCmEl{PxLGZe_t&UNqBoBef%`wR9`KMX`B7^_enUG-Losj zlS2Sn^UYNFvhg?sh1y$(;ShV1zjJH|Zx^VUS>TeG2&UQC#h1FPM&TJ?$JurGfdA-aD01|A0gTzT^u%Yd+Jk_u8?_x0 zCtQMd<~Z72PC=MgUjlE5A=cY3CKj3WRF!rajvR4VU@53*KsY&LO;TIw>wxxi(W5@@ z_7;_YcPDau2Q{wVhA3yztLoN`Mjvl%tmM)#BbF{VOKLDKs2k7(ZeP)ShqAT1hEg(} zE+6zvIt_IuE+EY=Y4G`;=vK8Z@_;3d>*kn{96B*^N3~%>6;)mNtK+(QXKDU{_{YJB zc(dq!N^U42wCD^x(8WU${@7tl5w1AHcQ#O+qZz3MXefX1Rvf1I+j--ICRSJ3h=?79 zF9rlhN0f?WcFjXkw<>|zDu#@1IWn=mssZHp0?&C4E!`SlQV4t%!@ zj>|j~zYbR8^hz4LWg7q4A)`s7dFEy|>|74$E8p%9c(j!r84a!d@s17@5!e*p};@x!t`#+zLzgO>_bbw5@?UiJfGKFfd ztmqUty1@{mD4%m?RoaSwX+S=@R)T**JopCYOtLnSV9+wZwqPgpyifr!hJn*NlS zWh3(@rg^ld+u;!xE}Q}GrCVpFSu0`4oI``0QPRWxNFht=j~eoeRA$w>;SI63R4;{1 zTxjI{Sd(h7?&gVOwe9hPVX;G&rO83`Z2-l|ncf8#7v?r#GNue;<|tQ9_g6|LD8hh+4wBK9^i}q{M$)#e!8# zr;&|mJnV>`9Oy)~G4fm)S0Y1}>+!xC6c);+%>uK19fvk9e^%5d1X_F_O`^OEfLyx~ zvrdJETOk62kHk8JqyXv@N89+Oc9n6kb61xe&u;$!&1f;LW93zuV6}W35l&TeMgyB- zR+H+oT)b`4XcBGVDbGtMw5NAl$CRyjWoSx7Q|Ick>{&}p0KUvkF3HehEmbaCq2yLz zrN_!~u}2f}UuRQ2nB{v_IAK~;&|6ji!dw&BE+rg@4--9vWQ2)aR zGfuxViO!K)5dOdo+n(q3ewl}U%3DFLv;44QnD#G~O@CJH{l6$0)%LC3-LQWUmzg+* zEz!vqc+$eS&f7LUT1dSH+7ZY_U=57d7ILmBvRE$^~~*)y)oH;Fj|Ku|KXbov+It&YB@-Cio7{3 z{{sy?^(JiXk|SL-41Dd{+btonUx-4s5`+D+7I_6lA-!inJ@e~8%{_ZYF!c8!4GZkr zpPVFPxPL`NgxX-Up+JYckm>Pi?-5Hfcbscu%G$Tt2X)PBJz~|Tt9z{)XXCL>9u4jA zTa1GZ{Li{5rIOmmY}|9FHBn!`VoV27OFPd+0&LcjE;rgX3@C8rOW(KD@vO=AtgW?0 z-Lp13IV0uHNaD+0Tro-x4wbWl^2*ZE2rz0qnJ`~ODXWpe#}8F8_er*!&z@TyIHE546o?}(4FW51jDKAnd1gQOpkw&s3|-^rD1 zwn1CCU0*%im*Vx^`HpCGK-}oCBmhHS()k84->#p0+}*`>dP z`rl-k9!#z_g8)+50bot4LN?~&j9YkpsZZO>XujMcbuq_Jh8_K8FAUe99{hcS5)y(X zsf=i}^dfMnMDqJA2R#CZf~t3Hx<9ImJbM`2clzYAw8DzzCqrqoU5VCuBh$kBTZ&?- zyDn61#Hl6*29CKl0^w(iy893W%Fd9-J8`oXvD7=TvJ8-uSW%Tk5R=}+(FY(W3FBm? zVUfNteqkYHAjcp*!F-~mzbzmuT-OXkl?7)OqSsC9v2XdvPfJa?CtA13(##Wxd8U^L z9I{6jGImW0pPA!pj|HrUY=A z9<)ivvH9Nu3SLau-Jtefdu3AfM{&MWm+=0DbXace*$udP4&jkF zGtD`7?31{B)`tW_y*2G`*xN5gVBB@ShPu8n+b7cpN!+z3%u-K0{%6gNnd#jhW8cC9 zO(7Y zt5}p%T*_1ke0w^ccH3M(XV7r1OYM4Tp762n{lU@xMWEgF#JZ<3?9G}0wymnz+p6nI zH0unY4p=6;Y{pIiSH?am>hCxv%3u5mnhI#f3Q*~vNU=Zn`28RN@Y*ptO?u0vQ*!@?{4`ej11@KQevMzAIa=dO`10RTI1WpQI*89adq_M!Bs_GD zSK;rAT<*0@Jd{*$KQVVCHW9w1!b^KY44V+t!8FT{>ia+=_@Hzr*omcIxf!jclnr~h zyo=97N<9QL-2Swz!G0)mH}HJoe@9gs>8Rh2`!?Lf(P-G%vyb~AHFz{2c7}~+Zj!^S zXdWOz6G)LPjm(6TiTHkoYh~MJ^hD752_E7wbsK!~MKfe=0oW!aKP^Fg;~mL!+qT+q z?a#X+wRG4UmLlCrXyFA=Sc0L{j=WtKX(mLLL=Hrj$^Bz(>j}~s8Jikghoc3ZpPOw! zWqi%*x&^q?rA{fXut7sO#gqNoMdiE((e+rP}l(j1wBiglNCnr(E$${m!gn+=6y z@&6kSR_*tLMZXMK=3wV%yvPItVE2@W0aPQ!hYf5vh~$;8&TDg0X;|^joh$^f?&2_w zy9aL05vCi@QI2guDC4_ugb+l+%fjbxX0o}5Td+Gw4lnt*FEXDLGgTVCeYn}?ZBzw< z0C7iw;LuJV`lAa1_pn*vjb?L4Z_8BEY^7Ca;3t}a3A#@EgJzg>rd)oRKk#dLs9aHe zWP;z)m?kk$D5$wXD4hi85k$~^!esxp0~lTC1mSFMbVxREWLZ6B8e~=^>AB+npWB&_ z$NLYOf$VLikLkmoN$qEeKUK{*!-7zi(;uu@wV%29Go%E6>9Glgd zhZoA|2i=+VLOF1mqflA?0oJYFqgk#7xU(tuB)P*iwbf=Y@&!fVg=eqYQWMTHCq>^R z=a{&j78fd@!UxX~4X3n*p0t8Mii;9+gB0U^v`%zH|IBsjSr`=??+Q*5_6btRq`klO zcHzwc2`U0BcRva^G@O0=n*~fZeud9iDv1ZnIJj13 z-@PKTt~TDPa=d{bb1F)KNq}6V+ZgtS5?w~uf2-n>&B6*#Ff}jJ53QST+pEiP(?{L+ zyxog?bT2u$NfU6xr+@&=O0&}KBfmU9NY4-PgP&_#Vn0H|~IlVIq~5N;f* zdik;rzY~jSJ}G{%>K(Z6{X@&4BIXt;CNy3CRWej#iX}CZ0q8BO_!2+5XPa*LEu+>8 z`uDnA`(UM9P1%4I;RW36@m%qo3zu!OcnOF3&GB!hUo5|9dS*S4=aPUW*8nA|I{}EN zWE4RpK%gCK&%w@uHZ0%Bzuo@>>HY-t`%Uuz2TMP)L0@YQrCiYSUCINwl@E);)zS0X z1Mv}qOhp1IU}N2Ni(V|bo;10j+Mgf+38GRK&eFv%a=Qf}9<#S$f3JwO?_cVLd51aN zdgziU9vS4mE ze&+Hqx((jt4nq8Yfulv2Pt?EVXEn#QIgvQyCfVc~0PavIg@sY3Eu%h0R0||a8 z^^0u_$7pMA2{r~n{Zd-HD^}nWYwNO^K*CySmlr!}Q7%An>TvazwhQaS(JDc-K4Blj zQT>{`A30KSRK=r5>L4F+Za!q;5GiDhX(WTj-cLme7AduEZM#7ybtgNhH@GR!-d#_p zG5!jx59{z{1%djw2Z+SKe|HskP(Eh5iRw~@8ypH!%A5c$m&;Afp%aIv+}PSLB$LzUJldDZc6%h;BzsOGPb-zJn48fXXDol(fL`t7vmxQ_ci)nqS0^oahXfUp z-8_daNM=fYF$~Dnt(o?^>k_{pSHzjBRK`9;TmFJiB)LzYN^lHvO9ZFC*0D+lKpJur>UD!`3No=v}-RSNInBPPq&YM*4@qmj)$A=94ph zR+tTK0))pc^Rv8FdZ02L247{rOZ7H&^=RP*0!opAMBW8?LwFa3?1}$ry@9E`KYzB zv;?2~l}vVQsT!iixEwy3CB;C&g_@}$&HF&Ll{}LasJszZ8__X&h-aZq~{p01z$N``Wx%{Lw z(R{}t1*}>(NC>sN`Q3tkWWt0>FtlD-jEIRj?%2V@L5lOueUH1mF(druYerYWhD$U;2QcJK`NTvDS2F z*lEFebrd}BH`FK}Wz9sI1t)R!)&f{Y(8$=2oKugPFAJ)DKHdfi?G&HS*RdZR5UV37 zB=`+cKI%+<*$}HEcXQ?t*}%7I_jiuk^JjX@YzQ8J3rMxj7QnR{Fbb`JU@aCW(7k;o z)QV@lNJ7W>h0Q^{|aJ=MmGMMH8N=OXE zT7>Gy5|`}wbg@K~UZb=_rV4`rE{F+Y)gQL;ZEMYGOuHH+ZKr0#2}=cs47uM<8&oG(i$a+kzL9 zWoayn23_Vvjm2(!*&^f0M>Ffouvr#7IIyx6Y`{3oSA9r>xdV`&2dOP9{hJ|A&3wXk zPBc7%FNw;e--tql0LAAd8d9n@DLIz%X-~=ZJB`QQ&N!mAR^nvj%OW1EJ6;=`EE z+#p;R+8Yn&X!?`nfRyJ6;nI}1T>h|sO7+r?Rfb~6y(eM#SX{3!J>+jR$JKq#5hvOs zT(OU6G)4S~d&Ii+o*iWu0>G^=VbGkaEPsS+u06_U$v`%HT*{S3j@#`+XysZHtT98s z<6k;0mZW@-ckYGdc~Ae)?ai^VrFEa$owj#$%D&XaI?yw>K9BvyYWW5CQr80kA|%Qc{Wj(=z& z_U@)1?Rg+tkMpuixwzo!3JP9z&Z6s5f4pP7i?ss~S+t*m-i&?)>^M$8lHi{YC9NBm ztq7iGgQ>N2fbJf5|DD%DNk zJuzO>{A-{y>+8h8neOyKEdlhP6hhjG;}xupkJvOy*18jBa`OjBb&kk-a2Rge ze!(0}0W)$AL3z%Rass61*cuwImbIEX3x`p2_T>}w(2TO!=_>_T8hr$XBU2m(jQ zwUbpt%wLaInntr{zKAY&mW)5f>g?Tt!@nd^RVx{|C5Egtj-Vuhob-ZSs(?BUl^KuC z9f7Jb-1igt6<1mPZ@m8P+M}Qon$OM?A(6-}Y#!bL7wO~{;x@5qxO->te_`^*jngm; z=vv0V?u@Wp%St3mi||yG=opD;T) z(XTU0n@}bztqE@#w9zgppd9_NkZz&C)78T_hdNaQYR%@Xj{fvmq0HcXhDSG$%1GGy zz-uGXwJp(g*}kmzf+{T73pj^a>ulsUfeov z7>9O#n0ffe;k&K)KhXF6Sv{T)$!MR};8z4tr!(=atmV*wFmLF? z0EPkYNi(ff07|<}g5xFr=~EAihSvZW0#m<5BiiEk#?JMJR_q^6=OlkjAbpsDbeo(b zDa2nOFABv6*pRE-82W{n?s(_@#Mw=eYSrBVi;8~$xPbM!#yg%yaFc9{%lBqy2My<| z@>#Xke>g6e<*B5S}Xz9_>#aB?@X2k2*}A_$SOGNn`pi z!5qwcW4KYkVk-i}_oV0Ep5T|1gzB7}H8!x5 zKpe}F2ZYDkAF(3Ntv)HlDU1oPL3L?TEa64Ch;=|~?I<<2wm+i95XzirO;U>h#^TY&b^URwjA^>1sCLwn)-<>mx_xh5UY6j`8x2t zoFX@hDQn2|_|%ORihM+FAyWxzsjS0^_ol3B9Vz51e1Q9MVLy~QKioL|`3E&Q|Fg@+ z%)6l($HXfy!;R9c-dMTEJ1ZhSVE?nh)ZkFDNw5NJoF?gWJ}Kp_bD%!5sMLEZ^Hm+% zm@+ZbD^AY?eLe+LrxvZHRT&zmEnQi!-?w84pSRDLk$pQ4yWmU4FGg46PKl}$VFML=$@IQ!o z2%O0-{eL6#04~hB8lznt=b#Y23I;Q5Ydlb!C_rg%H~5kA4{%jK>*=X}>PipDB`v?K*~?&V$NfBdLz?~E(0Jp|`Y zQnsEqYu&~x8wLI^$bRZy4X*6-lk=$+nzDHRcZMV|520!Q5bsh;S=#MqI*SU~kH?kR zJAYvH3@OFjrab$iu1bC`IcQ9ho`5oI@73576kQ(~w7nP@*tQq0w5IcA!1I^y)a0pD zjGe?dp^hW=G=1yfOnbI!9iznUGb+cy0V@M>av*qMsmx29KXW|C`|l~2E`RQyrmd=v zhItiR?-xrfYLYA0N8+um60y|=Jbp8l;&rhee;1dN;ReJ3mJi+!OchypVg52=5;k(L zE&7!DRwp^rQf(U4E>UIW^`o=c3TmAY#O1oOR=e zCoebahu@9|7g+#Pmw=DU>b-?LZu(!3{Fy3aa2|Z^n-e=v{9%VN86~(2=D?w7PdG*F zD!)IKUBSL1Igcy?iif$R#IVgom=PFlrXQKS94ks!I3cxPW(AN{!<@R+vf7@DZ#Q(~*!uU}$= ze80na=h4%11L)IBNRKWqJ<9BPcILaoWXws1YO{*P@BzTV07ZUx*6-J;r6evbydLQ@ zG5QH)?KXs8B)ES3E&X8zU8aj`^L*jbbN3wzin)RF|B~2brbAB-C%3b$@t(fzdt-tD zPzsVKz@fe>dE@Vn(fj76Gcz_34?j0*l$0iFk)&q-qIF@hDClg1RCWMAvgwD_ASsJi z%>|wLVcgOCWRJI5WHHGvTHhJt^U$KxLVgjZQZ-pJ&Xt(Wb_g58#KbMXu-?FqgTF!} z;}a<78#^Q8+pLJVFf-iDXPJoCG?JZjJF-ep2ECZzVJ@aTXTtlwkoehb<=4*#UKCsz##-^t3>^0L!C95!Hsimkz#@a*Y+awf?8 z@w`*~7!fB!_xb}tmw2IK%InwmY^u#yE-nFnm-VB-_~`bL6-PWyN%x%-@tC!YW~1+1ejkn=QfHjzS4cEJ{1lg7H5T1-X^FiY`Rg%N4EurD>f|YW-mMMik`OAM>Cq?`-9YKHy2Bn)Nk1uYPH*av$9xg!9|$U*-ZC7 zMf}Z`9eAXoF!$MhlgsJyZQ-}Hdu8Ub^^EY6RikheCr?H;cUe>B{C_m7B~4o3`{xt! zAjdXlIb@MZvo5cy=$)iDDs6I!qW2ey7S6A&HX>(b*9;(O9zfCCqoYudYbr${|9peGy;1ys0q@ zDbzRhf8|iQFLhP3-#+&I1v9Sv5ByY@67l-`O8E#oN+7SM)Vki#qbxM>ei^0zt0Olm zr8+(=&D!A~R1`aBE>EDJ5&Rlphf{GZVzt%`7)EKXjIlou{Z!L>+a)?-(=qp?S`3J_ zNfLJ(9mJXJUGYiJ^j|p$`ty)d;wL3nk)|p%mcP2Y>F8_ZAXHv#!|f+yf9}|c#&Q?X z?X5k(<2&byUr=L2UT$dV=vE%i=P0m!ll^XSXI)|Qnq1SOaZ-R}EHWXa$9-9_k`x>xJN;xpD} z!9`qy%O&gjOYL7t(oA|2X8=21Bhx=qpqDEBIJz9aQeCoP+4lfAm$N|6gJV@m?FZ-Y z=hh9rA0y)$ZEwY_Q{J4-Q$RUpUqmQkCDNeRv`Cq^rhVVrih{E6LuxKSYz#~x5noLk&@Kj3jsh`{&oyOdbv36=bSBGB4=O6P<*0lN)XXc`)=KA?&`UZjE zGXiY`V(Rz9b?yVyk56YoIP2Ml4sdXb&!0X>sMo_+qry-4#6Jfh)|#ZI5}Fl1e9?%`{tllCytgkuoiD459j+cIZtFx25NQMfRReGjcsrHzB%-(cVnIVf92Wh+4RT&>1OL_S^7E}|K zW=3Z@L{-oI%5!ljAuu}mUdCuU(fw;pUGxk<^yf9TOAiPnEVNvwhvRqy0lb-kq^@fL zjT3L1TGw;Fz6^6I%kllt++0{Of35Gex4k6uF}S|)o`g-4jy`>Gs6CEv>%D@GEjrex zFb|VDy~EMIwb&gb;ROn+RCOa+B?Uqp>VPr5Uxmj~=e?g6YCK&dQ;sFX^vh-#f~RiW9&E{p%x5?1(K5lHpMN@TvV6?R=Yw%fiGUIW1XEwXZA|p zMZMari+pG1QIphA=kRq_>f;clIz+`URomJH>)5+)Q#?l`4>Igb$8KPWzra1rRyb#y z2F+%a8Bq&TdAsJfpSN^mXI-q26mKrR3$S6s=I(+Y!l&}ezooY&g;u5p(&xn8kfIfe zO+Ufa73^ps{A>y`8{s1^ktvouO>j$zzPO#=^^YXInYDe}ZL{Beg=Fzz@Zds`a*^-l z&HEv5jb}CgYAW#tsHsr9LVi>Jx{(0Nc41;Qa+oMQTL=0yU`Td3H8i4>=zJbQsz4>l z4d0?OC+c^Lz2~N7Y|ocJ#y`}@O-m93ziS58FK_?2*Q*lgO6~YlAqtV+fAc+p6D6$< zFe7@)95tvuFG~|}~gmaEfKkD56_p4SBEWCx-QICIWNAZo=AHycm zro|Gr0=D3;If&w)yJxa&Fe83Qvt?fcS^ifOBekyht ze!XjSK=}SgA_cW{D9wUq*gQ*bAV=#^^*!0OTSlEP<{x{Hau5svhG}gFp0}G9jrN*3 zU#hI@#@o%ZVKUR8BJ@v#!VcnAAF%QRgyEq4-@bYPOjgHv87|;ns|8vqi*ye9z${g? z!@w-PH^z$ZHB;sBDMw)A1H{BrC@4qH=tjg?N7mU#DA-286qB9LqdjkCTfA&$*Pai* zVQo{v#p6?Sx9B1oF$jfZjk?+i8-X5$-VUAd`0zTL*FU;a#Qg1CI<6-X9)GyqD`Eg( zN&d;8{h%vz`JL+(WI^XnEIx+LwBshojn`X0O`$46aR zprdpzNg`o&@6-9n2yE6#;KijbZ5Q>C^&SUr8LlNgZ1OFYOAX@z-<@V|{0TE)W%ljv zZIR1VDO#9ai2VC^kX#w7h*n*as_5xurb-R5w6>?}loSxA46iqs*wRr;QHNLIta)@V zK`~%VSRH)B&%5HC_8kRuis|ibT^=4;32R-7XV|qdatGF|iFX}e!K!b0PNnENO9gUi zEXm6$`k>R-^rcL_7-8a~cJ#$<0G{LZS1bPyK9Sd`5op+z@xNgccU)wbnU|y}+F!c}^U*(vY=NjjVZhwk) zh=8$H<11`l>-x7ofR4D+m^>RY+qp$==#)J#+r6fjEHkF~wW;5$#d+*|NB`jM31&LS zPHbixHs#dLJA9UhpCov(IKA6lr-Q34_|~W$bl^_13qYBlx~jc=!TxIM=<`wT-Mg~z zZ9p6Mo5TUQplr5JP&ceHfpC>ImsbX|0y$wCZdGlRrC8Jg?HkfDc!6>%L_C6$tHMFe#b=53G=%_(M?o zc=pe`=fIpMw1hp`91;K=bFX6p3$-lq{lzLBz6See&uhuuC-XWs_bOYKJ+D~!1V?4b zG)Km|d3*8QA!y_H*^W>mhwTN9_TFSfG=WQ?e6~4J7*C> zv1w=U)T z`D|-F^BkuCe!FP&SA}BoJ7NKRZvXAjUiW~B&)c-)zrId9Z<7LGp=y_WJCK5!BE=T^3h}$>sQBfa)OmB42FzQ_C1vw^eVNDp%Kz!`8yCoif9S1! z=az-rMF2*bj(%(LXS&yI%BrS5|3H)YiQ8Db6S!^cYydYxOX9Vcl?pVlo_UQC} z3yh@(Sb8}pCg1KV9SiF)HXEVbLB_jVP|Z7K4jt=tt^K=Ypj}EAfqP?t^WxU)Mwa)% z=J&X!!@oAqH77z&7==QP-HzgJCq=h&XZWbUqT)zh&j_TMJPI)~J&OS-UG_weXH#g@ z{sZN~=+L&cTGq8aZeyrhjjpcff2i~^o+;scS%n=ueGzj!pK1I1Sf!tS!Jo(5|2}up zLN}el`ekk?{!bTL;n@+w_pY9d7XQd=&&Xi0NO(67zeL&iF}oRhwa;^og&h zm&3gHDaS*HESHyMI!9vH@h038>`MKxfWz3yWc8Ngk9 zWMbarSxhYGLbgmJIYAi$k47T))`bGQGBaSdU12eH8#4Q~Mki3sQQe~vW9cw@t`ebj z$_idz+vdjFy1ZDSt*F)Y^U^?}{yJg*5(08&-Es#qQ=N z(?}>{IWl#shH=fP-16&lvMSfbK&W+PB*H~ToKYQRx9X|;~G_3`kAe$!X>``9Ht4wlR z7(KkZYP7&End0>zQi68=owcw9>r2DHd@5?2lD~GfFdYJ`{Y&2MTld;m{8cd!IhO$W zOHx!#2M^Z9_NWIHhT!)RS<=48~(u!h(+=KmBg(EQz?(sto((d zrv;!8T2SP?`u~zw{M8?nX8%LijbJKNE)mJ|a)VTXzx9%u9&W?zb&DFWkASlaCz|&1 zV4fUA+HakJm|5PqHuzNO$J<~K^M*6{B2Y*YRVVC|4xs$PJ45H0x3{BkRf0IUHE6Br z#68hf2P{{OJH0!NlI?}b;G=S8O|=$)+%`VzGnjn7iG)OvMDb^9hD#|^lJHa2sA1~XRIChUH z|N9n}oah@3AFRGEo$Nw3x_=*7r0a(-?nfa`e6kGpu-uh;4e(=s`>8;b>nx*cIG7r6 z!CpItLOuEY zA?6#_Zf;4w9*iG|j!k-RDU@DK0`ufBtR<+dK`g+bvhFxN`O?=?K<{MdRI@Cj?(n5I zkmc=51?14GRB3lT4;Tjuq$)uTRe$TeG$P^3y2+dT*Ld9twj%Za)+!s-U@@6IwXJ(* zts!|Gyvw>=0ArUKWeUOKOY47h?tZxVRUM#ybU4fl%H>JfNO)k2p-VF(ldW@5uaRxE zN0jBN*k((IX7L?aTx4L~J+D3)1?v&OE;C+UjXgs>wfpWKJ!H*OuQtyG`lXWB zfNOX)&*_ToOhG*_3y>>FeFH+rC~LCue4d#*&lqlmO_lg-+|2g3II+YCTeTC(t=&m# zbp(Tx>rp_*K9Et&t;I29s?;b3#8(t5XWL-x%YBD&bS~e$=Mm`RF{JQhCXSgZnNQFg zj{jkXfG15;UyylT7$hi=`B_TmTOLJWWf!-r7P08>d_KwKHxL!NP<55kTpn+0D&-r$ zyfx?OqN-}xy7@m{i*lsC5r}Dy?F}3uI9}S{k~OXXBoGe;t$I`2pdpHCra!VymBvyo z`@$`*uCI8Ox_elwyE(hkUHn~y$gC-vWoL*s>qMU=sN}y<0TFbPiR+NUW<0{W5`M9& zEG3sVwv>Gqmnv$-J6E6A@)nn6CM!gc>?m%V`adthNy4<$ad<+Y(OwOYAtK@S*P}n= z_nV?K_$n^2+bCVyti9@pBJ3D%@x$!H^C&K-Fwl*@^X9`$!rhmz5ldgo6EtV<$KxR26>zrdVLXm0+fTL%{yv+^nJTBCDE^3XB6EAmCa_@^lh4mfe-`U+ zK>HuCRDr$`4g`@+3qk09>Nt5<%p0RE;oW&_SQ#pT0ZkE6F=`OX@LO9;KU&@pTzZ&# zsO9}7(@l0>#%C!QVbeJiw<9FA1bBy8_*^6kKMCAmn^()}Eh3^-46s(Ww!Oj5Gw?=m z4*46?;B)(7Ismu7@~{~t&W$Yu^&9f{trFlGnGF2}{kR~!Aj0c-*G5>DGw%5jG0dkh zKGUK1OLu3c=vTXced!bC>NbY? zHM-SK@jD$7ZsA(T6E;s?{hg8Y@1MEqL-&BbBR(EpBL!@^?TH~NRU;?~W0Bq<$c24+ zd9$%%xNXtqUK1XnHyS!7ZjPWLNX&4XxaFBo3Jyr#@=lGa;46V?b!=>fpYnj_OH^3< zq}Z|_Pn#>puRsIm59LT=h`#}xrl=OL)Q?*)8+$iTAL{6 z*8X9*abcQypmVG`^`okj=EmK-jTvepwkD_$dR@x%_fv_qJDF}#cr zJpGPz+hw!!^krC1V8l`drtY?94*kFlgFqKz;M6*tFYKOTA5_Wf3XNzZf;_ z^-Z@*7|>|H<@zjj^CkI$t7Alr_PL&Gwc6~#s@tzcR5{v0t9yp?gS6+?(TC3&N+F%?>_gr z{f9s7-aXybRn@&~t+nSSTbgKHLgHvwMJiB(H&gQiCV*u2NSh)xm5b)+r2CD5pU!Cj z3o=1wMbHATNOlG<<*Zci3>3I*0sncoX zR%>u_AXB{-hmC>^qM`E2;5aSZ=m^Gs*5hlmmFQ`-b?9mI9?M>zU__y$z{?xqs@J1( zmkgYUpAnnQErRL(AZ1RFJsdle8YT#XPpld2Nz`FA;0W;j@*Z^IL(6BGgjvt;_$O8K zD*XupN4yw}xFMuS1IGP^K^NuMeg&{4D0eJSJqgd*u!E9g0F~)?+NgXlVI#=*J%Grn zv|7IyIi_s&;#xXo&6ur#Ks_@yT{AA-z~DM(D#Us}+ST%BgF+dnT;DdPxQcI@u@%r@ zLUZX!rFF_maFOSe3VP62B@GMwi|sI^FHDyJ*6~b2q3K2;P`L}(DdvdBsccLBMJF^U zm{e9v*3tDF&SqXHr2>Oy7Ya5%P1M z45Z}H1fW_bVT(iHpQ8YEV-)8%DOS_3VXL(rkjm+ZLxi2)`FNfk zTWFY-oZvv%GG47U8OSICeFiKvR{ivupapUKiAI+4%nWu>( zimeYMGU^q#c9Pe*|7%Q`M=kfdv<)Zbe0i7^C`EF)t-oefz2H!hyzs~BpA+&v`;ybK z?$TaMj)&UAPyHM4l;b|Uw-E3^!V!V`Ho(ixQXy+0%{jKKsi-o?;WDP0rx4S%c%RK? zySlQ9dT?T*p5KUQJ z#_Z}j+{mg@6Aae&l%EU~_0SiPA{J_@$|dcXSn48uMtwK!TNk+MCRvJlX$;={1I`P9 zY+~HBPIh|#zcRIg3!I|@;E-*sIi0<4s@Q-_73@Ubz3<39t}-JrdKPoAFp3#1B zOu?x@r>mk;y{Pt}&_HY|>?wxB5WqGGo({5Ts0HeEuAJkj>}z@2M&vhP*(G65 zOjlE4r4~3ZDEssUqaBhvXd^ob9J8RQTd#%ktVzFEo=QtjSF}-p#byFu{?hjwK!Ijr zd6H=BzIb8P^FO)45`Cie^c?3AoTeBrN-di?>ALE|g{-_Ra}ACL7xf%p2Dr4TU6Agh zb^I4^|2Z|5^g^Oo2A#~=j6C(JMye}4Tf2+Jmw44}wQXZI7_Qqix5=*u=h)iF%e%;a zvS!ySl4>=D@J!H;rbOHJdTHACs9*Y26|Q7c%&R{7n(+?F92`l;d`qP-4AYK*y$=5G@l-Pz>ni^+B*g=iuSY*WB~yhE!M?mY2|Buq zF)(3-KO&{xH@c?LyO#vpfEH`5CE35Rw={VgxA3IDI+d7ZBY+W)!yIT=V`zQ|`;JzJ zzNS_O#TN#{B$e6Mmev;TqVVoTI|~P6NIaB}GmiUDUiHWT;MSxB6N>lN>TKQCYApkR zufwewrZvRv>b?hmNe*FzOLu`R-hx%?P=r^| zN7*h7nxS7DSm_7J>n@24RK_v&-9ZApgaVW(DSxuDo;^w4z<8858tjpoya)v*$@1^m z>|r-KE2L{Un9gtEoP8*^X!u`G#VdHBjo1i|m+t%TrjpE_ONbdMc=cU7m9Y4m* zOJl)=W69nZ%cC4e1F_7`WsLI06C*JamJ;6E>mNW zDR`fct}82ibt#&cox*xx@aWivUJj_@U>cNCuK~_5BfJ zSsS>>(=_}_-8t7BBl}U1OG(G}?7|M~^U+$V{h-7(`km>MTW;)Vq%(nhB*?RLW4K3< ze7?h61As!N=X`?B5vxL~q?ivhr61?od}h&WU$?;}!mvGFBVB5&MFq;sgX^{h^i9D{ z!w$ zqOIo|uPLpBQ~ja^$3(G(%}Uoa_=MBX#}Qd0wWc1iY}9*wA2oN_$Taoldc&%qp@}U~ zr{C=E-gCxU@q7y0$>G1U>p$kl`}&nK3|IP;Q>4IHlJ6qYR@-1%(7C@2j9@-^_^ngw zR8tGm-NV!!Vv4pWEKLq2g!3fcYJMB}T1&cDc^itiMDqPH2c^wqP@7P93x%&21MKT& zHx2iRj^;U*p5cygQrc7HGBy&%f#OdGw7w*=A+S?U2I1jUJ(V2AII$QeqOHshE^b-& zH!^_q9}u0Pa<(Qz$t@J4W`T7>*0ff_bBz#8WAM~9c-Sq68RjDL#$`i)|4s>fob{wG zrII}Kn%<^So>n^o?4PnFHK^z6;NgCs2`N!yGPe!pC3nB2xJnN45hPrks;9dHwfmta zMxs`=)@|a9dNu<%FA&9MUqmlq-77(aGk4I@HSdUV_FMV~6#k_c zbGLUj`7M-=?lJbm@){hN|I2~+a$IVC1DE1$SeFd>!HN7jgArE#$!QJ2cA8ixy4VJV z1kXGzaF5v7>(*XD@b>$q6>T3QvSr`cxnL2DtM#u`cQ^N1H(Bp$OJSLQiKT7o+E*&p z?uYb2trnNrTqM7%`A4OqOv2S=yXK7(efYB(l(ReS`o*~25|0h9@@hFPecu)HZFi-E zkd_x%FySs3&JnifW(p&dcRAVX5CqZ-u|9xAWRi*qw;njL?cuhnrEGa*D)6z?yz&a^ zww=={@0ep6mnnM5d>QF<1ES`9c<=`^l?GkhFBMCzwDgdhO3(|}zYFaCXcI;NS?`s^3uWk)Tp=dtvkC^T% zfqkzqma9{uqC>Vq7Pnc*DHJKCQ6uTiXp_QYzd}#_4)-O%<#mA)QO^PFT~5!JPH9Jq zbZil|dzD(79{rMbM)UQAAnB0`$a4)eU%t;%x)bs=_CHq5HTi{eYzXzuCe2vRE}K(8 zMp*!T6ll|R2WDd>Vo%pj#R5wM+@3Y8#{i*z&+9`(PjiqyB}l|`dleSUuuJ{Hd1Wri zk;|Sym_gB6sU6J29Wrm+wjMOB&FrH1d_v=Hf{%MZ7C44gFQLQEU*S)fuFVu4@mL1g zT_=)4RQg5q47ajMA_eF^Y`9O&>b1}uinA`}nUHbGc^mgjs^v`fM&lCERUKm0GC+RG zh%7da{+p*uJJ#+T66V3Fx9JL7amZ&^eR`kOH*W{e1z~5b$L4XBZ0)mk&AxOA7%{FF z`z5XAgB+&W zPcak}e(=tQ79|f2rj24F()vQMl4DGP1tNiSc%vIVDha9adf0kw55oJ{)UUgFio(Tys;a5GRk072Lbz^$(`cD-A< zv6ns>Xu`LQ8Ebq?9a0%5>ENn>O;Z@q90I$u*3Xey^WBKZ zphR3VZw&G@WoN9Wz3vqGdbW_uw9p7wk#>hvj@tNQuY2|QsN?u6&kr3`1ipqSF6U$jwJ-L8lvGQyF&fYu&VVF|kUQ4R}w_*U+^}QknmDfj{$j%}pL>jj>oL1C zmJO4mB1XfG1w2pEus*w^g+;>g>~GLKzpNu`CoQ*0t&Vt7!wxD7kx(QpEtgozPCZ@@ z13cBHhxCQ!U+7T)UttL4H}EFYf99;ldc1{lb%(g+qBCO+xa2!3o(^+d)Dr{25-Ndf zg{1+8jGOGolkYK%P-*gX-Sr(l;BrA2xIiImeCC7rbzwdfs~E&S=`FkbdoemF_z^x;+wO(qoPEi zf1Y~qqjC7%!k)-e$kHY3=Z^d8Fzwe*Bs1R@mxkZNe;sr8hGXDLg9Vq8BEXnVc4u{*TxjNh% zj3J;=bW>+1HW#|`&;tGy8(Zap(O`#~=557w9U3w*?(o*f7Hac6$ODE#TtG{0mnfuV}iT*n8-k zZVPq9_hev%WNC#9AG*XL)0!gOYM+I791iHR#ZE*Pu7BfQZ63-<+*-+Mi5d7g1Ng2) zBZ(d!xY>*{%Tn#uZGR-6lXIbqw->rZWwoTFUqXFwH!LE$Lx21s&Q{roE+D?GfJU%E zJ+Qh;RV>qsf_}7Rcu{qyOs8l1y|#h7cyPhRb&{pIa5KezN0}`g{)67KC*tkL!4^`M zdk-C=D&)^q54OVXngq5gHl5jwL#N6d%@LKwcn3!E7+mmG z%ye(vC-*;5!3?jjvnF_* zsF<&rD0Ua-0#iyutL`VB2phl7bc0PbVd`K7C~_2LPL2HTE77rbzXeL5Jk61kLTKY5la6eZK$ zMQbo*jbYW-{ARIv0sdbt!AU0xsn-+#G5;xCsTSqm8L^hHz1(a5iIZp-EbfHCBYnBgJTR+MZ}#Cl zP#J)fb-#bct`{C((f)fmYvM^J&;s_MF7#jZ1-Fs8IeisImJ90ZM5h;r@l681`4v_0 z0*!NhbwLP$xXDw(Ny>lGTC*%b65K zsjPdk+0I~x>Zkl;Q9CK|`%bid<4cZBlWk?ZmsF9meHF)FeOJ|fc)fj?988GSB|5u} zNxgoBS1=E`rFmAHTcWK5V+W}klR=jWT4|Cq;6u_#AC?XYID}8|YbI=YTZw?+DX!l@ z+7u<{n^d<12=^1B@CbZy`oM9$d&eokG?Nx?*&+uvk4c-fjPFr+6FTl`FkW1drmf^| zPb3--Vp;r3*F7Z*z6yswy@}+a<~C!8sW8^vwRZh+j>NZX|M)E|rg7Ghyqk9BC(>|d zXWxrc>(@$xk-P76?tbBH&^ZqlT?+mF)Hv?0s5GPPlzMfS6`*#Kt0&Ab-n_vy69>6X zPcZgjTq>}jw^RK3$yb&OoAEki?Aio0^s4z31`X=1mi)1OM9& zpJ#va81p((JY$CG2$4p*FO@7LvGQ9dAn0f&6Y&0tgo!h1HG1~39!^5s2K~6&! zbOR_*!eh3e%yG2uQ_>RA+#-`7(2>*(Vm?B}}aVJ)9spk-aD^%gAW+$b{?q7e%7bCADi_*e#qq~SYK_2 z+DaeHHW)wGwo`M7^|&w1F1UBatFlqzSUznTZ8Scp{B1(-jm`;9^Z*CN+(0hAvo)z{ zHgll$_D|BD=3k>W9FPs>^rZ0qN@eTY`AhFtciXJ1*5_$rVIaJ(hy!H%S+R868%+h~+>v$ZSjcsp^+h`>ZM^% zmYKc)xxUnSVE@BU)YI%?k87|XFh>5YJdX)l4sYhzn!gs3R$n z(rHvQ^`S6j33Qm}dhULT-B$&`I|3?P=_MysM)e$JlLYtk8TF|PA|6)ul0_Z1h6=u# zejn}Q8n9P!-n`}XZF}`y$K5g>u~2;G66NF1RV*Mv8n_PR$2BY$+K_5vb;3TyeetMq zgXt)iN_Xvu`R&3ydhjg%3s$Ge$AZJ2oWdqiveVJdXxndHe zHo&nso@MIo&5L><>}n{l#INTdw@|v}M;*Pl;v$^*8+4IM{NNg)#H8kg+ox!mhgx-|GYZKPVQD|g$E2wm7E{$ucK@H;7(aa{=s8>%Ru-O1Es3JY6)?V+o)VC~m0RY^Hh)cf)YehoMwzqu zzQal@*E;}cv1rcG_Y2Q&IwaVF&{V!iNNc5Z81el#9=3YIXL4B*Nz7-yk@| z{ZBGc(@%otWG#t$g)-UM(FWT$h`d5p{v0kJH1tE^4Les&@(V%Nu63iR6;9+ae%rQ^ zB#1h9sZDCVuWM_Fr2-#EXJwooK0^1>`e(ee@71Ad*$dYVb>aaq8tQJZbxM9EWmYP< zK+Buf4PkE`+vFSy^V5}2%M3;-m0>>?7N7q?_#^x7>)uZej&UTR?~`1LC;TZ72=+g) z&}+O|`d{>N4WKbYd0t2EN(46#dz!5^64FmyY=3tfgU;B*J`J@KFB?E~;)0@2f z!&d5VyP;~%1b~<@6IFBr-0=Xrgdhi(WJ0+ckmmJWjfn`SKM&uoJD3j* z9iTTj334wAZdN)_YAkd{o@oYXy6val5O^P}q!2Pj9&MT%ZN<`sj|wQJ=k5|&Y+8tK zEf_@_jM*}KnHf;rh?a~K-;nRdipdrjRB5Hk<7ZpY%Kn(j@a8A?g{)g<0g> znSueQ47veKFK3_%ZN~>=*p_#3A6iuh?Ad=6Y9%|{B%!V6@frIBUM1&6^4(VY9!F~F z#2otfczE(gJYVL)ZtD|@qmWE{i166-57w(DrFu>p);#G=StZ6$9dmatEL|{xRKbw6 z*gf|$!RWQT$jflst*_ZPMMjmLJN_` zbNA9hMsum+msTe5K&zx`UWVqHy9#i$1^sBkaC`0XiXBE+YjUqu#h~1m2p3<}BTuTM z0UU(&F8)}`BPZ%p5HZh0sTO*EXRA^RF|}&~i5hr^s^fORhVJDIl|Q2etJ}Eq0Q>4_ zw+YF%2}x7u$*-97JP~CPIG+eN1gHcumw;iIqkLs~I=#62*Zw4%u`f2M!AayGv3FG; zIjX7YJ(Tt<&jnbDPVHYPr7%&Zg;-F=+Pzpgsd$Abr|&u?~xgYPHE8y_4f?_MspYStMP#&FP{a1xALXL3TL zppct>y*;Qi{YvIyz>F99hVqXB-J*|00%`?rxyI1MZnf-UoOdjx#(HV@7__(Z;2m}S zbdm1nfsVYE)BthHIPUi$z`atrhA}YH|cYhABe9&v0cqPJ|H#Ffp_^HR4VHmm@9(Y^$|VxPJ{*)4 zEb1K|x|eQIVagKM?P9b98izGvIU=u-C@}(vWpC&hYS24@LCFB}hD_qh;c4*q)0g zziabqV(6rHweqW-Ai!o9D8c})c{gJ27>peqloNL#c)hgAgKwMX}Al5X|OE&kEu23NAF!6%qKvhN!sh6{b4+g4dVzr=2N~lP=H)5(gZzBE&6Di(`e1^=T2#<@zOoAJY1T`z9steh0pMu!)bPd>%7q# zcAuJWWu>AHf=zW}v1^<$nosU|A5LZ+91$s^ULCI3wRn+=qH)FCi62rQ_${O&Q%XN3W>a&&*;Z`ALWQP=UadPIW2Hx?4+ggd zO6CID8G!P5d8RWbK0Sw&pWGJFKR?j!tdoCwBhN;gvlz1_m2Fn=eMqit#c)`*x~MJ* zE2n3s3@hp2J2IK+O4+B-EV(o&A0PgC_YbC=imUfhQD+hhd3JQZUj7DbQ%HT{D&2$; zNE?bp4JvR>b0VI7oU~);H8HgK2C9K9&gE?pXiBzRgm#w_dLPYv?$@66CMU>Pwz-~4 zXjiZdne=DYl$Cv;URfy7&)O7I*c?-bNe;7r%;;LFJB_LJp&AdmFfyIfYfNH|bZ}%h z#hCfegvWQTm0ItZDSH;{u`5>9qaEZTQuafFJso&asfvXi)$crjgwIj~594ZH7+$bV zGtH3o#`l~Cx8`QQ|Ac@<`{Et@mq}?lsW_Jf501@;hr=y1-N7h=+VwsEHwt)VXJ%yw zSzWXr+E}vLVPDO3B02_yW;^m2ep4RZiN}nuBu(=bTdsM-b)-YCQkBO0%D~fy{v4ea z;}fze1!i%q#iXJ7F2bgW;vZYv5+zFW06xPq{6rag{g zEv>pTgDoW4;!vQd3`eUr=fmys{93Z&?&VC-iYV2J$GRoxy3RcLixbJ`9!)cn(zY*% z)*@*s{ypLht9H6plQwt{7m4CVGqDU}iv?tX&1XnIuH0j77ud+Kp$&!^>1q=i=@vvr zpD#}NXka$inBJIsA1)~VyUD=1KCr+$(U%z7(6R#BU#vr6?GU=EW0IcoJsQ)sNw>&! z_POk7*$rr6YrT@ysR?>`9>h1Q{K0wN6?mY~QJW)LA1lfHC!nJv>j;-<)q0f^JVfkC_03klP(wr_>LvSZz2l!Qot~AL9`>BWlm7!bs3okJ}P#uDEO{_}G$z zzKLx{H@;5`A!~&hYfDm4d`Qu;bl=OY2fpX4!n}alL?y|k37=rYW_Y_2@rY)%qB7^C zZ^`Khw?746>qRT48l7yoE(GJ3d0s zbmq9wR|Az|(5bTuD&9AX+K8)+LpU?0+ranXq2xc_HX=2blAN1qAuV<@5+Ag4MI6_Z zGuLwQe%b6a>8!cOZaA?y?XPhb^J)IBQ|F693zCmch=b&>GYcH>VEmE3B?W-<~aVleGL-;M@!&fgVO3B@s_$}V6@11>ek_2PfvKIru zzz~!Q)i8g{VMFkf8t-cvaiGQcS&6%s9rd zYjm&Jjp|ox?yxU|R>qr?Eg%0lEwoz(kfFp2xGrS~RABNTUtv$=&aG8t#Ih>5q@cPN z0X9{?NfgIyba1|FL*i}^XYbMn;ozP367)lyP+W%nv z4Vh^WMS6rs_#`rt1t%|JnO)B;@A&OE@M(% z;WapmVtuPJvhmHmgZ+!2@{g`{zMqk)#YG}?RXJvkIWRbpRlo0OwodPAiUilrfSr=tR zvFgF`Zr^m3{!EUyBPffy42Bx8uY=yODe;mY$>Ec&z0$WP)|Pvqz~)d6k74znmVK8S zF;RzZmM(%8yD3DEj6bb#=O#>$|CQ04lwl}70Ah{iUx>bB%Uq*Giv;^-sD`#nbcU`M z_TWzsP0ij--t1S*Za!ah_d2wJA3|vdlMy5oRD~u=l5L%#E`0+!FHxY=HaM7JEug1{ z|Dj5%o84Oj`1vK?@{1%5S$+ur8fj@AK5N4EtE^qRHA4dVMLxDp=qggD5Eg0|F_~zs zs`oQpGB9dM&8iu9p$Z*i7VZ&M09Z^>BKPaGOruQr?+dfC-?bcQqVj&cJ74;b4s3nf z9Z5+1v&|I3)p^XB`E_Kr43fD=XCi;?<_eZ!mdcdKR3GwqAGw|K-abzqj%&o)G?@!` zsk+%^7CVXWAq$4U1?ZMWEJm@7zw2Li_%!qJi%)PmCq)={XLU*G4gUBa$W9)}p#`Qk zgj1d%O>5PFh_|Q{QB{gjX*o!#MI{a&ynGGJ$|zyFdY_!ng()WZb2S8($#=l7F%`S) z772wlR;)B2Z`tTOHI6$AVUAV>{$Ax;N`kLEZ=_T++?}?&_+T_^QQSMX!1-z_PV7a9X7E&wlLtr_$cB7 zDeJ=tS@>tt-MD6tgc6CJ_yu=Mhsbfe1>o$X7HJ9k#yc&P47<-&w8L@EY$pd#4Q@} zGs&NxF|S`LvB{wkd61UOjyD+ho(@Q7k`aR4EMDlps;P+o29_I=Ag{qsbPVsXzOu)N@MymL0olS=wa09+bwU(DMB*^+OAjyv3 zc%mC&rB;Z{I4TT1UG;~iRsB|8hpNb$FuH#hFk%3D2S zp#^t30*|Pn_T20`MoNgYWP{Xhae}u)!DA`Ndw)n;2qHcF6LKc-V=fuzp(cn{xD;?hb2{uNNHi z&KNHB(_K=>bUm7%y_sPGsoh67d=^815=@{kI(%P(l%K|J4xxUAlzl0LtD?s?et@)$}#{|RBnEr!k$wq26y z8!?=9*=3UQ;b-La>YY)Vnitv_dUqn|Rj1wbXlQ5@N0%c7LQP0yEi7OcGtQG1ZOQxi0!_eT%!7S^ zFd|a@>RROdbfqa8UyffuCRIzj1EbF^qvUPg`@5Y0by_Sc_E9iXCM~TyDY(ae6n3Tk(jv3M(PUg2ZH)}hI92vCT1#*6O`W(;W#&&Qm3QK|0-fVcXs7Jr+$U&U&Q*Wu-MQFQ^g+$B)bt*hr_H9we7WaV zCf0g{FZ1J~O5pbZPkz1+uYBwWo(uV>VBwZgTT%^qDtAGPy>TA2#U~9y8vR1|XHGZW z_g^(N|72;A?Be4!^4_b~VJ=_L|A;{(w8|Leu`+{l?Y5J1Lg~LXJ2-m1)}6F8K8r`e zH5zj_%<;ReLb!04W%J9sYy)l=_A(=JzV?l$l);iuMEehjdtFNH;>hWqF#UtF?9e64 zl{3q)slJDc-)=|07Z;Uts68j9YA1Ic;1`4~?Ds};?;?@if8@DRJzt;aE#tDK^^P+wB`})}ELB)t@JhcB z&`>W**%&VpZ;Z-b%{p@?uUiJB3$F-V_R2q>KBKs^qS(wA)bUQSV)P}MFopDg$XFd~ z)pyX>_rdoN_Rlc{0Qx{Q;&3|}fy|3|#2>7T4Q%bsn*+{BOP$5>91&mXt3GN6XxQ<33;T z)b`49@%lI&8GZ=XWBK?NU9qapFWmwr>scqqNQd%a7uTKc{AE z=>(wkn`B#Nk+SZih5@kvWq>J8!v_jJ>Dg*LOGia*JGv6kvAjB}STG6NV%TkTJ~=lL zJ?%9U_Sq=zo_t6LHrZUy&u`^fJwiW3Rt->G5*8K<5+hlWh!r-A!eXy%*L)i}CA>LM z3VL=)tTyyau6^|s@F+M29z&u~jl;?vdtZowtj169o*ipBFLDUi+~Nu5-tY4;CpDYe zmho(m_;hyXn~7k#>}S%Z=ED`!8RQnYFh#5*_5;SE9EIC8+C8zHr zQpni94GMm%*zn3QwUMz~wBbMD5$*jQqqYfFCl41Fj>ztY+b#(1^nz?;r}zga0Uxp6m=;CkeB)9v zQs2XZXR7Dki3s|ZBQPUc2Hqn*)e6S&3Y`Jxd_iYDh$1b(`a7KWP`qmsG6!pr>I16k z9kD7tTwE6%e>KPrbq!tW9omP{h~OT~iTUhVqkZUv_C;Hs^=NU6oNydY@mZ^cWB5)x z%i6_frM78s72-NU&AQaQP+dK^GwmY<@DhX85ne5FXjPZ?oKmqxYJ#C zVwnWYE1~Bet}S#3oNnJB>lNO6=d%#XekLdL@ zA4%Xm9Prd4Ky(~3)dEN)$V?GaZ=MdE`-3$X43bYr2%YmU;`Tq8sD}{0tt{a6bPj>4<@*FS28hvC{p>@}~b$u8z_8vA1PF`rL$3m*O$a>mItZ&dX zZSk)ccMKS5D;_IQ9hv+RC9OY)omJY#J&h$ecrVdPVC1|7LMaG=A;Qe)mw05Fr@Q7@ zaiH{1_Js&1EeWxe(vFS!8imEeWK<2kC;CelItgn+3okhDSTgduPW3Y_Z$9BB1^3!cGztb8T! z@^XA1AxL}u*XHtFR7DYM?-@r#(T>DWY9Ba8mN!p2`Sx5%RblrIBp|&5ApS5S%Oo%< z%MmeiGU5?x7-X-IO*@~jWso5GPi-r$RlE=;a4r*a@QpSVsoode*;5HNHKVcW^Ko!0A)47A<99+yf| zE>Tk9{>^{=1b>Q*0+w)q45;A5%)m8GkW<=>d)3E&HVs=N7C||t{+T7GY_7ff*6 z{W#5*l2-U>%_VD@f)b7hnN|Oq;JY6_uUkFHM{JmvobZo?Fl%ApC5ONi|BOHInggIv zS-3^QXU^FuDpGr9>fW|dn73Exkt z42^Wn-{RC(y}f{*BCDQhEWIUHjmOj^f-U)5%BOBr3WPpjs2x4R4<4HpGNWCqApX{c zIC!|?abHbIWn}fxr8XFXwEF$6WBsYTfUkW4dWL|xJ7Dc=W(!&?-^Z%tKTUX!??e8# zTrn8=zCf7aEH&Y6slhwXA_zbM_M|ix)N_9@U`51CKBTpKsQ4}Laistr*>!ZO!GOo5 zYG6dgASB}m`qzr3_%_Bt_74anHY6jG81CtSC)=TTze#67`<@R-&;kez0wsEZa(=f) zXlB%_4uQvco(jZy(-Qx)y-f3wGV!Go;Lzt+(|c@g<1`yuq@g2XR? zCCZ3>ot0fP40jFl_Quv$EWuhYStF9oPZqx&0}L zI9{m;+&?yO_jVWOR7G40|O8ZHIce?)R zD6#$Krxnk?drB}m5(Jn+ZgpZCsnA1j!5<5u^{Y?$9?{?h%=bj9h3T_7B86Ij2o3=? zE%Dsg6aVxf%n{_`A@_GM{s=_ zg#2tPk;(`46xKI3Ru-BFMa}*#%B&LHpQ&mOUd95{JYc+c?6BvzzqGz)v2^j& z%C?a9MEx$y@{Zw8vc3wsEu(BQ`je^m)I(Hqk7JQh5LzKcm4SB|}Z9|^%qc80+>-m}wAQ0+a!Sst4euMj4j z-Y-B@3s95;&OjDWQw6cAPWjF@%QDJJ%Z!E7!mJ)CH?I8%%X?RI@OrtRUGeWWw#w3! z1WeUIrf$K*$&gJ6SO5Tb7dQr1vnXZ1mRA2L4rLqNq*b$iT8jC4+8`H_|Jms$*Hnmd z7Nq19aH!du2fvko;_QL6brhabz;=@-7emY3mi|7bTq<)i@M*KTNMi1Css3Ha{Dcci z$muZPQXu12EQUS!STp0)FKmi3p1X=y-fu+h@p0l9%rL29z|(a0e}S3QzwOPB0ICr) zmZccDt2KbZA{@-8rfvii&6#E-mejRR*URqJ+(I8rV*n=of?<{JDs6>C%8rwoLB?Mt9GW!)yrO|W%hIWBu7FULkA;93GT6-AUYyp_`9XwIqi!AHjg2< zCKK#j}O8duG-tJlh9Ny}?-^$Z=^(%{6*pTtXQ=&k)1-GkqLg869|%%yX& zkqXo!0l3;mGyzdIi}%HSQlWUS3eK~5?p+O@l_Nbl)#7^PgyFv-5T~lvHPwH}6jEXb zCwc*z9}Ydn@>h0RLobfMBEw-Bb)vmj=*=MPcnVgewEz39ZbD}uJ##?XE+j1;B1<@8 z#=La)Ddl^WApNLcX!iKcb+X)R>CBBMo03G0{?B#7oY;OnTxvJ)APhno1US@y%zA>) zGhq*28^*+$?{9=SOZ8@${}UW{82`R+O;rdJ9u^@Q`G8_M;F@{J>C23JYC%csGQ(%| z`MmnsB$6bjZlSb70yCe9_DF)LzuZQcOo=yHb723jng>aiUW{8MIcA zs*s^S;hv=NxEFgD|31U_L5KRwNQ zD91$YMVr*{DoKHY!~FM)-XacM2JF*4SNlR+zMsH~olYori>?M8}|&W3#gt zHp&$}N?oyb2cLG1J*Jzv@C~?b0d)pngY-jk4Qf(X_Bp@C@xWPM%9sQXaQ7na{=iAc zIc7LQ(&#T_|Lmy*)ZP;cy<;gGyu#{C$=4YmKA^S8*FDBOc6*kVpmD>Hd^g*7dP!sB z!!jC~LeQ__*l}^Zr3xP;Z8TZ?U|(S*T;;j=Ub2rn(P%WC1^d<*_$wSM}lBSkfN`^x${cy6+q^0=M^H8s4V^;H8UW zyS?k~(?{2LHR^7S2EJ~8Jy&N69A~E-FA|}{T*Zw9(q+b6AHdi4dizWk7a{Zw(XOuI zXPZ$3yiKXGx`_H2?D3Vi@WSGKvr=~<0Tnfy;T^*eB{F7O*w$9rQPqaK-8xql=}8)2 za5syvQI=ySeRqrJL>>Fb&)r)q?I!vUDJA+A`Fbzj4SeX3`AplYKV%egGnvDl&{*?= z0?nZR<&h`eChhktdsOY>KOxW8rzb{Q{6G9+=w>cc%Aa~h%Xx}_(%0cykP^i(D7$AZ zbNdBW8B>J+#=+^>{8}%d+^%VJjrm;9O{dNaTy)Yxln)?=YPN9Qkl?}H zrAcrI?i$?P-Q67;5AMM|xVw7@?!hh4IKkcRblCfoyU)4&U<}5nrdHLORlQct=Y1#l zM4DClMYfP`Ow%{{hOoE#nLa3c#DI?$MFc%w0IHh-f{{uJ=%)BQnP67nAiM}i`xAP; zHGe2tsu3rm2|aIAPxjIGLb)x^@XN^^ z!iA@8#)O6SdpwT#5*<*7uA_7-eDYcm$+;%*jVGchkyk#nH!V@#;4*N%SYxD?y0 zugin2z)erK)?)sFE+ZnW)JPo_KWvMv@VaaXej*$C7mQ(Ww_Rnve{grvzGQLyj^UIQ z+`?%fO#h=Kt=yt)A5&mQc=bmEK5~%?A>E*i>~gh~=sud+jo)Sgju%JsQnA2Qn7UjS z(1UOhL9dvIVIb7}aL}?5gG(HT>vd{5cW1A(5GbM~Gz~ql{xj#aw-0Pd1Mkd-yrUoG zt$apI{kLtyca}I4{1DxIc*SlN{bgOz-AQ&d+rT7h5!pF~Th|*uYIaOq7oyg39kuCU zWD29}h>IF`HLAxV(f#X~6nn@G95n1P5%&#+9?;N~)i| zLv&refp%Fk70VW{Fx?N)ZQ+AxU(=b_=rsRW%+E@H^~_ZTv_aq^)QnoZ`0AkjfD#0? zua(@Ye!d#O8yce#Md0LHdhQ+GMcNf|{Gj{{ZA{}ENcpb5@!Ug;(f0+5TvY3~8R=-%%XEl@qe)nt9~s4&h8mwFn66?)I7@MhAcIeLGz8&pjY*M_ z$(;Ai-G{YDGJ02|2INsuA}v&T_mz^RI5Jv^J=|Iizpt&H9o#$L zzTOFoFfSVaeY_h8uJ^j3?1}&J4vIt15q*}h)ll3XHrPw+YEbk-;Vqw@uE+$1-go!o z(y`KGJihSw^7ZLag1xZZbEQ3T?M@_%WS5{PO*#4G!|wF;u)+5l0WysK8_gdqvN^P) zWGAWI*?Wadmnb5#o6)g}hMYF5A&hDqO%MVio1lKj-rR&LNoB&Jg#S(VWU&<~97(Eh|-zMf|?#$^@$O}C4{ z&XzaA(Iz-74U=NdU@5>El1@_aaQYn1a67=w|F*rfMO=p&v9nd1xwk!T_@o(9FZ`*T z{*HKD==MPb*3$#(`BG6vrV7TnA+{HE2Yk!c!6v_x)?c(E6Wg`iUq&?8wP93GZ29eZ z`h6%D7lhRdeWQPxk-(LOHEfLFIr{svK77FjpZJGTaOSz+aSIZkP>x2}=hiWww*%$n z>&ZMJ%zjm$67~U~knKy+=%`+7I8@w0>?Xag9)+%3(%lv6iI>Yb7i4emn=rV+)USRs zgGdF1)@TnpE39k>de|5H-gYij=dR_Vk7)#37G{hJD{2GXA=Z<9!8#n5I}=`LOTWW#X%B+}Ug zwS5K8isst^xhRKk<0ML}!>@A$Voot($wnJQklP2Ve#6B=UD(kOtAk@)%B$9m#%<#g z$Y%~aP6)Q27ll`fGmQ|5bHRA~VK9#SozbO{5URdfH<5xacWMdZb#W`Qu==gCGyyZ7 z(A$J70{=-;rLzt9nohUM&D&%#d2*1E8+4>lFD>}Yk3dp^3rnm@R5O)0SFK+^X_U?W znV@zppjy5o!YSy)eU#vx@zHqAEu6WRS~D3gex*B!V_cYiOs*G-A+}6lmnpHTxAyd9 zl4HCxQ-8pyT;++8`2K)E{@fnQ#=5 z3+{3g!K9SZ^Yai6Hc?0~LeGf=+!_xjA1-Ih!D%T|wt7{s^&O$k9UED`;alq4Z?syT1kcw<&h3uBRr zHyWC8u_l`P!-7P2u@+r#&Z!O!ypbG3Lh{=<^SBTOGs=ao+#8mdJSa$=rUw^D%HIvk zT30R-)5UiAQbd!X_~!-mf-2Ak7Bl6w?l0SCS>%iINnmiSS`Qjo7;GP$h(k>8*x{K zyW;K(q*uH-Hm)9k$mI8h&t!lWB)c5`8n9pFpF-KV_=Bck$pW0dQ0i0o&|m%zfR4f~ zxiedW#u+wJg9`p*09Y+%uy?<`8)k)e0|z_#{+bdfR7i#(R>Qp<&=q(Xizci+!6mnzTBSt(zKH_RjdXiQ?uK`3U!H-$5#i*-)xPe>bs>*KcA?joXZx{c`mKCJ5*LN2On7Gq`HQpng4X~C7?<+lo$w3&4b4lSfgJWBDe>?f! zWh^qXr3N`74-l7Pb%!`}PP4>}$HiJ}tlIuW_l1HmNb6L)TsiG+>II}Nm5hIHzUFiK zy_}HsmcY^UDGk#>3xg6p{qESn#wdJbDtchP$)vldY{6P^Ah z(UiCmxGK!j3M@QO+IhQ%QFGLi;8OF7PWXeWIVzJ1H5Yb6`p-yZ%Y=)WwXj2 z+!ta^*j^u(g137`iC<{du_Iz8`Ec%)eT!>VjZ~6=f=XX9ZukVFElJ3uE2|2l3qTQ6 zSnX=F=*+pQq^yi@A#_Z#;vVBI&oYq$e1q`tu_wTJIpMW2W7hB}`i3D!$o6`qRIfZ# zbM5Cr{<0%#(3lE#U%fM*Lh}soAuAv5fJro%h^UhLZkp{8nzJ z-SR5V<8(L9#>v~FZ~(#c;Wv7c&7GKa|4#XP9A(}aWU_ZKxmDNHMX+M7$3LD=sB_M} zgtsDY?p=iYf{etM9Z=K|0;t*Jik^vNyG+I>>Xr zk9OrG$*t#|P(oLQoSE{IJ=$Iy()_fT5^q=2XAMwCh(r5tdhLhME5c`nUv|Kl2{48n z&--SHde$YhG7Jq3_bk-(DOa8&R z$b;{9*^DtQcM$L?39af@U-g_?SdK8_`(6ya5&)eMc!v+e_FXYnvhKkA>&Njk(4M}CKP&UzL=t>s7WvKR!mZQ}BmP z!;9+bgA`OL?RTKbb?;O%LS+{Zj7%(xRT+>VJ?YtAa5o{@m>WE?n1LJ(*9%EVevIuR zTP(KwfJjcS9zBR+((#$GSE>DFdUgq)(_zEQM`Q~oSXh5=-{ZHI{!pf?P*P=`;h+_q zd%^g)(RTa~Z=fZ6(E4HN7`LAK4VUFOC3ZKSHO8{g9dj+=#ha)F)1A%Pe3d;~s-Yx_F>=5MJXeBo22X{> zD$Pc8bIBzPMvC(2zkY$j)WB+gawUYRat$*xId_`fi1#8%vxhvja*sOSBT??$5Q(Ew zsYz%KXqe^B*&TJHBI>=Zp`cSLpG?0lxUv35ehJyS^rmj6y2&4(yJ%uFPDS)UR**6e zcFgS?;D0~Ymu6J|a#2=I)yiL+G%-tP^tsOq>1tq#6%MxK)2h+XjbSv@$yFLg;6lmM zy6JxRy9z~&EbPD^HttTxj>ayTkp+_cRPj7HNl*Fe&XME~MJ&v1^n^jBHL%lFBDSMb zcVEs&G2MBEtPdhS%kckFjA#y)SS_h=V53-AdQ)U<_|)!s4}t9lkb=A2p9CfbvT({) z2*SiAr144W@e_x$$bRs;kcw+O5M8DOgT>IL3P+3>203y@?%(ARh?$`_iT4ncb^4$R zlyf~{z2CLx@Q~#1-!r^@3!U56j5d|Q7qB_6^84Y^*dYLi^xWkHk$4$@d>cf@eo}Zn zZB=|9DeybK2bJNG3gHB#Hd^%{&EaJQTApuX9v;WYfy_ij;enDvR7;b?kB*y=?q+_M z0F|^}+YXUG#2w7zptAHtp~P^cQBcCl2&yyecqseU^2j^>tJ>%3G7&SGYCg^WrnJh~ zBCQ)lJ-%QfHf!je`O|6ZLkoTDRVG_|8AscE2mOwU(Da^x^rOk?6Nv7RVt6;RXMNhm zTNk_tw=C;X4 zl>_yQ(VA~15gTraT=p=AGyD3KDonfn=tc7Iv;K|PTU&Q=5S<=<9Cy>85+CP^FvL}m zhx*iut+jz_C^L&fLHwmdLyy^_C@x+D4pMGFIB()Qn+dUdxNpnnDRe>r0k_<@Thnhd zr1xO}rvt=_Vu00{YWF?Yr7-~-uiy$>MQp|Roi-g!P;wo8iV8PQBLTh@eQ;SKvE>_J zRG_!Wp8B`03iJ3x_KRhvZP8w)0_5bPB0e;ElTdweEriGy5JK;xO) z>PQQ5MxFB6E}VL-GhV0C>W@cFnbVZ_emMLUTG;$wQhvK@B=>)-qD;~lf2WH@jL#x( zcI+?8iq$PQ*fnB-^SLnei3@yw01dH<7o|NfC9+f$qJp*ZeQNTTva4>*iRKy6J4AKU zz*QmRDm(?*@`u~`H>w1A@7;P0TsIiqV-V({rBp>_1oRv5PTJ#OU3ifL>Ur+INob(9 z>*_`|Ft)+RbT-{ZH(BY;yjAS7 zYyaU)tLuTqoZO#QWng*OOJqH&M*0C5AUIvbMV@3ZI(mO68{S)fTp;daM32?gC8mvj zB(yYqmy!U)_3v=Lkhi)}ibE4o%!0nH_-Y`A6@HmyTaO5Sn6%D)=z(Zmi`ZI}@cxB6>3*+l4ojN5r$N=_D1M=gCEGM1 zGM$6@QA^6<+3@4fJyHaZUVCpH82$i0!roS(o)XOv7cWeVuvHNEsPzC+g`ry#YS_|tWm?^Of|GnJl&`Uo zcNHbXqm@Kh?7k}Q3U1Qu=87@}rELXP-W)zTe$4`1|!X4=M+6a@=1mROox;t|)lKN7V~p;^w-o@I033Kk2` zp+2>3n#mXIwMkF5u=oGAp>h;WeMbiIA6p?n0HP=m2I4%c!$-N z$uzv|iA5@X^}~a*j$eIqi+U{FsCq)EdET@Aah)??P>S1#R+$10THs*o4)ZsEE}fE8 za7jN##Abe_`TG`d8I*mMQ2e}r`)ROcl~z=JDV(?_FEY8OLcXfVVv-NpSH*+fPXG-( zZ)?kR5l_kd`=t$AZ*T^D+1%`C(^^fTkO!#dP3W;7&tV-4pVRS4MIi^DO~6Hks!|&z zsEZ8dRHGjWcsZ*QS0*S@aBhhznSku->R+_@u-B;Gm0nytd*`Zld3Y44%R1Ea)v#LB zt!rqk;hMBgM~#EVjjXIxUXDG1+&Q={Wb$Ng{QdDT6wtzAWvq4f&I|NKG>p&XLRe0x z|6P_&j&?wN!9JI8dTYsNV<-x2Na?8VCA#I)?SEnPL4eRerGwvk-xra+6N`qPy)~C- zqCG@7vMG?Xj|100e&n;J9c4UFX4E!9TlSpsNyGtUk+$yRuR?@nUd&@|EC;IP*wl7N zhY3Uxy)i0lY0ZFBY@^shmOazbIq~{C)6eA=^JD8AC<|R|sinb5Nod2Z@kUpN@ zc}rq+0#kgTlSG%8m@EGnRSMD308!MMr1L!MV*}zy8{J;wD>!Ij+hPAF_LPBjh z1;PYIwNUiDYM1P}nHZo(PIhg8^Yi*-k~gdsZ~#IS zizso)E`B7uQ7IX^GTRKCjx#Zr zFE)0$urRg6Z86_vz)~BG&Z?`!3QXW54#g`rCf+cU9xyE6r1zdJ`Zf-&e0A-yN%@Gv zB4Huri9h9d(A<{Pg=|su2IOFbLQ+S&v7M8t=RIu9E!wE2YIDv%vusV3FfGIH>Dx%9@`rL4|CQs^!B?e} z)!6I-@9(3lT=-NK>lM+f<{@pSgC%lAGlh2uh0;WWQjHRr;xK8|yEaC*Q!rW~HTva5 zvoS_6mfhD#_}XV0DX&_eNxx1_Oo)HX3wml2_nnDqgh05JfA0`dcFrPbLPfuPcr3~~ z?&|`%OT(RaG6DY9{=?mm?xiqNL6UjyhkOG5)bT(O#K@35-g7+W&JIhEYuwZ~Ae*14 zV)t}GnRmhN>@nFiQI{z=_$-iMZl%M&+7?Y+aJjo*srInjcwU4{Ih_<7HJgQe6Rx28 zu~LJVryRL)Wgc^U*v+jX-}Mu7K_X&t*i6za=IKzJP%iZ8VayvfL?)&>#J8|P+=|s2 zn*p2?njR4P1HdBTjl|=`h1*@o=_e`eq3-Y?DvnCLh=pY5r(5+=eprL&jaCaU>KSO5 zCdp#-A7^#AVS_b8f)kjw!z+>PbC5#pZsDLGvd*(V(zsD`eNHh5O$nMV1Wip zWmtl`97ymcT|!EvR*=AyB%nVmqNChqp+ea0a_dA~1d9iSCBL%q`3a@i8N=%F8LSbV zW(%WObk3y1X7GFqWc8}%);cjR`L!Ua6an%nuk@v;JJ<>QUX-A}DVx8&pKaaOSYv{J z&VYb!l{R^r;rE-e<_HXBMj=n+{+ba&7kQ|5D7z~(9!i0E6oUf%ku4zRE*4h3DhD4m)AH{a65^uferjEJD229C-wlf7W;B z2wtOH)kxB$c~f>IMq~`TQ8%=4hWo4QR&fm zkBC8SjRxL)gQBg;w!gsjX(<< z{0KFN0%2_(moq^DV&q@QXTQ)#C>gA^Dw1Q=uUE=AoQ6-yrB^i^3|n`@kC9m&pO$z7 z;>g-_O79^aZiobj2ve)7&IypR6w}hmVqosC9U*LWew>|L&Ntys7I7@MH1zfp-|1FaDv609cvqkw)cz&4xCz6Ydi>XaE!1*NLUl8(Z$>8 zy&|D_`$AsTCLRdnPoA8O$_PT*jtBwewoX&X266H0dW|p&pT-A*5zbmP_Qazj`U4`D zVS!Zb5ZM;t@81UYov0**_u1`p$&I`F!s&YNzJ0tR9#%u_OHrVu&HsjOfEVh^hkv~8m@d#TcRa1 z(14FEM)s_9x6&&LkhI1ZRG5UF^pc-<+h10HXeXXInHb1F#VJ?MroWb2IZ3AMoXGA- z@QeCL1RIeS5;mqFZKbs312mz~&2ECkPkiDqBFqKMlNLP~(^h;!0q&!>*9j%Gd0vI= z%fo+-|B5(WB$oaS6q>hS-A?eNY?a!7L1B1iwSK!uaK>&(vVpb(_?A_=;?b5UP(W-N zly=9*Gho=yff@S($0R$*LuWNV3;AMC>rDpR`6r!Nf2V#{Glg0|752zQ``j=UBT%qV zgoeV|Ua0F26QGCEW#I!4$n8D*Bt^swS`93Vndqa%{Z$%2JA#1+{t9U`HsG8L-_$$1 zPJtOC*X;XYRKE);JiZrGhC6a*`HSnwr|OTW-D9MtMv`DRm*N+4JsVI5?`GBWFX8xE z<1N0i$0rTo$xx9T}vClZ;@#dV#W2Wy3w2Bs}|amZ%X}gU{MMx!|iU2rjOroWVs=Tb&d+` zubwF6ocEvRAdlQ=4&(DCg3Gdl&lk6Lw+ZhE_Db69dy6fl$7-v99q%m`TLwqC0|MKa z?VF47D&K|Z3$*oDWncK|^Kj>vsSjG@+pPv)P9TML>6A~i!#I!_aVs_w_op8CS)JtI zEb4U*A>0`F8|sug+?@tq@jfmhpG~PtseR@Lz8N zAI2G6EHreS5iItyt>zB~p9#eu3eieKh=ncKQhGP%XBPJS81S(s| z=?5e4OOM#AbAW(un_p?{4T|T+8hh>r#1mT0 zfMSs$b>C8S@=mN6osu(Ht2LqcQq(wciSYh%KQwD;lQFQmT2Q@;NbpH~kkbho!FVN5%jcq+ei}LFn1xY?*SsqLL zwH_)CfZ`-RvyPr{H{7}=vREW+!Cv(7>Af1+$E5(9l0v6>1-wIDveoQUxN+pPh{UGT`fa6)Vb{!)Pg~zL1{(#~T1Ydbx#UR;^lSlRdA*s+J7E}DOH6Ux zU9pa;-o}L{v=6rgreN}{8c%ZZ@EcFcGm#$kZ|hrRFi3i4YAqEjOz}R5PgUK#Q??(-F*Fv_>7N)0!an})-wcr)@ER^51C#sd>3MQ8qe?u4H8TH6p z?V~D=Q2$sz(irUNfz9O7bfdYKCRgli56_b8^gFxfH>r5E)aFbIdjcio?$iII`3=QW zcBu|Lp+0v++H~)BQKph1u6GNlQ?rXCU`F%S-kMEmFl?N@=krw*U3=+z3Rpw8bbi<_LS6B znb~Wm2Mmmu?~^w4UhyXGVU9^$uZsj+rg31BC9>IDCNTpcGbRYTJxp}BFQ5?yl*sP8 z8+I-t=Lde>rw&(fh4knVbf+3dT{qbuKQoBll=hm5jXruCuO%9p^}d7%r{!g`72I2X zy#<|%b!4=IvAb-dg_Hr%a?&d%IEi7iFE3O)YY7QWowg^zKtAY`M>)jpjcB9vOsq) zAz*8w0z65uFCnCnt@V(vgbwb|18Z=JZN`6i1ll`(Jn!tHkLId8Ew3xG@%(Px)2b+> zb^I6h52%HaJYdZZuh-)Oeqy)BP#!RolTQM|QavGWn!S zbsnA3YjEY(Y+uHF4-HL5drHcQK0EP`WF>UzZNWo8AV6kDmKC``3+m&Va&D%h@#~zu z>nAl-Rk{XkLaKF5rf}F4x^hZ-I^2KY!CWKLC0%a)_&47xT;V@8*8PHB!kO+tgT6-< z2Vbug9sWwpx~l(k#hUSHrmMPhvaB&Eak6`&geb2BcSSNm+Qp}T&{WH)RTPVOaoeSm z!kY|nJ#f4K!1@(U1ZnaA?sFC;t`kE7uAc>_Ky}irRRQLeJJz{~>uFW~2a#5=YLw1* zUonq=K#qIP!FNIV!@@2$5IL%2Z|_0>2hazXfoRlE6EA6BV{*h%pYXua*vXlvsURIV{UfCaT}m4e;i8_JXi$>b zO$K1@iyr-F(kA4P4r>41Wo|U!NhP1XUP;C*L;QMi3F-C9?D7fbwn6`pyfaB1v{NDA zVKPhPYqctHzs}eSK5fXA!OuVSDPDiT$zt(EfQMy~b(M6!{Yo+6t4!{g7Z7q~u}^{h zSF=!ppb&8l0OFMF;%XCMY&L2M?hiS9sLRh;E?4;vlpI&7mt6tiEy%3x2n0Me+0G!n z>Kty$OFZvW|J7_9BmzGjwe*W$#8ZoX>Bk?BSTi#`6!CYT2pu$2)+@zhHfU4| z>`MXvX_NM31tqgPb`sk&y5*yQ=F*nh=g-~r9k#y#ibH?-UVp1>D2x+HVIzs1YB3SdJZBpCqL z^ysG<7$0Qx4&0V6x-TVQw1^O2amo7{-?Uy2;I)q>$h+VAe@j*V=tE~Il)WXR<4mr@ zE?aG9c3i`@s_-#gc^R8C32a`e?M2dQh-^@(vj98w4B@FlmZJQQ@1I=?jPudzFCqWG z)TMuvDnav`bKnA3q>dutKf!ZK8rNz$@ZYTpEb8OntnU^5Clmn}34Vs9;O2rtZJ9aKd1r{3ij15pxK|EBU!;1}EW2y2$%H&7Ks z1UEV7$^0pF0SGyF;;f(P`bY2(x{vi?O3yiutw94R9qUh=B5iAcoBV5W%ZP$%DL;!yurl3RS1Am5KEj-6}}6}E7y*p$64RM{7;YzCxxNx@q-s}z-#yD;JZ$Z zzE}RYFf%li_Oey{(}5`Ao7c|8N)#Y;s3=J)h|1c%@*P0Gt5kaa@Aelm1q5Ml6gQ~G76!!>j z5c+zBTc5tR+0IZ)rsw@FWiak=1=!3*Es?&$_^Js6ng_oB?qFIa-xs_YyzY!hG{Q&~ zSL|`&&j0#+L5RpwF@6Kt>kQR{M^M2(^p|oH6;dB_~~8|r8Jfxj0{ zvB9%a{;qQ#-G4?o|I>8k%P_lN`l4gN-~R;9G*vv$C6De4cp`FDb5P|_v|kAAt0ZMn z{+cU=o^tddG4`dme?q|$Q#Y{(x)|(YQ5B2+_hil3FK<=fy_R65c1GQ^STPs+<^H~S zIN@JS7>EEzGf`}Hf1cL625vWQk*=gTHHo5AMX;R7f_Z9)(>iv`gs3;By0`peh=I>qKJq2mv~ zTW?RqA1Qicg2v*$j0KdRH7~V$kwXWPCwuBS#{lfOa-A*cr31SL55w~ALx(V1o(4p& zAJaTnT*I3N^cAPxl&|22kuptuz%Q>81&a2jet);I$8gFu zWHf4y$jGtnaR+~xgAw$<%Up~2l9ka39$S%Ht&1J0*+?( zz4Iz+uGuU2q7c^^#p#^{w}xfhw;fXL=%o0HD8a5;O zqCc3j7#amH;@6hZjdoQbr9#c2|lsbnj_mHRA>i~C7j*U@ObEBWD>(NT!vqYXKw$`qQB&rqGt zET{Mqkkcw3bpJ0&k40*lj&_%gy__dmXupveM0xF< z!Or!G%@$X0=WCoBZs{8}@zA`p82~6(qJwPQ;VgAa#6V|5z}S zg%I|=%~vlJmm><3ij_S_GVaWW`uvHknvD_9pxYnT!vk)vlNDkWd|>9?*q4lXUA0g7 z)d(#%xJLbMo$Ui1!o2sVJaYa1ACQNhazOSt~P;p_=y&|0QU-j@c z&v?Zk5M)CE`-ijyXwIRsI28Z|VL;+RIaL6c2VY?y*!-wv?5UUS0}-@odt7M2CpiIq zd&*pNH8NXyDz*;=dCw2(A{@So2%;T+>VY6_38VG0bP1Z5O&npHPac5 zm9vl~SN2!BQS{tcQ)BsBmo}nkjP8S!50m!*UGv7mvR8rRN*43_IXDl z{J6Hvkp-hoLeQ zUYGI(v3>xpDW;ITQzv+UN;;%M#tf5J`d zuEe?b#gh-qEP0rK>?1hSU=>FxN8erfL5Gvk+>+(%*Im-n2qJ#MA6^tY?;jGu98qQ0k}4o03RVNLCEO z3Gd>uz5v8IyXa6hCt65+y{KzPwtze8wUJ8M`e)IKM=eh);9QdMBNfh|2H7~sku6^G zTEC~L!1JKU>tr}KI`=X2eC@t~afHP3%7<#|r3l{!`p;8G1NA$R{bGEZ;)9J3$~Jps z9>!|t@9lrV!TNB?vmuhVAoZkB^nSePQ%se5Ar_!|d5D0$ZTi`!Q~ z2$0sHa6|rlm}_x5f7ny{z&@R5`kj1pNVuWVB9^_UXmjW+9-MW$s5X39Tw?zeKC^&= z@9$s;uI?=-=57sO>a2L_|KTm`1Dm#>_b8C8;I6ZSTda|t=lI8wvY;jC-{ig;C@42e zBhCpmU%}`s`)02(`92|2q<@&>O9++ki*e-p7$L*p^_zT_$?L6KR+M znOIK=nGw44DD+{Y4V_HiS#B)uJEa9K*fzB{AaMo)P^{L+M5L~Z`e{UTb>Wns21tHV zZfx^2!9G(8tj93rX|{+Q`geL?z7r=pRasSYZM$atmC|tHmJdoUrX-BWQzNSwMV_QF zVvsV$=kP_+uoqM>R`8f|<1vkfsCC`_Z5gPgdCW5K)rD$AFm0jBRCv4_{_TAZV zQs(V>6iJIUqAe9`%>6wso6N6{A`ZSc+n858vqnR$DMsC15pKOku8K(TPd#VdKZcl^ z_!0*tw4bpEWL*!F71w-s5Dsb$C&m48kXXW@OThhM2-XVRVo2!Wwkn zkJ$UG-9!%`D;1sl?uHuu5cm=`|7p6Fguxk{6yzLKAhJipt3$|bH0TuH{O>DCt}2Bf z68`Vik8AgioPtOuv6NdyN5YrloH}`}Z#*b^e~yW`)wn;`Q`XbW_x7`2+>@>qlJuZ1YIyp7r|f#Jdf zo!(1TJC36_CwAb~87b1e$UGI1vN@8lgrL{t?ojDE8KX-@Fw=m4*M^0BxeFC%u?;Xp zUUh%Kd7GDT%+C)K%JIH;;?GK#F*<~s@G8q0ZCGVTsW*puv`gLmfpY6C$IpF(UF+IcIaqDRm} zY>tA#&Si~#yhlR`3Ql}LgH&%&!zihh#!GsVZ&ozju*^ge^jjZ6SoDFg&Fo{rtkn}U zI4y5kC(6|tc$#xw6iz$Mij$#o&l?J@Q-RZ5nOlHHdGct90{ytf-Nu8<0f6~!uwk$h zs%piOGyj5)k0tt?S*TFo%;ZK>Wk}*{Xo`C>{{K++$Wi9Rl^SLk`8VA^i|&OI8}Q0%x8DETQ{EfG`u}oEZyj#;GIgBE_Qh=cKmjN+y`cLQa+RGGynm)2+0u149MaKGfj^g2 zqmQdg`X1~y8w6XqH&Ln?_(NzYS6kD<*|w}B^0D1$;|1ckRXhG2^5F$cA4S8TLXY zRo2P_a2i?&w)D zL#M%G_x*vc*jQ?ve8j{eWn;*>S;F-~9xCp)l37sbF`)I8;4Udqe@Mq7rFo+KY1N8= z1J*&;z3X!@M0PAMg|v9u-TE*#JD0?qYB_sZms3hmuIGeTy5_M&(p<0)%1)F2<72J| zqBl5d)+6NvJl%VVmNuYZlOa>GWic^IO!S;ICJP_$Ly*;Ubqo@=_n3{mr52vy!m zXfA<>4+qeAG}acChFbAoKXcWVX#%i|dGl%HZ5PPO-4=Rr;Sn4Fvq-jI8vy)?)#Gj5@^TV9L<0XLp9;evXBsk@+g>OE)yM?h}&bZE;9 z#W;@@olbepx`Mt++Z5Q&Xz#8>RsyZ=%XOhq7cu_4_*YCVJ1)RtR=rcfbqpX-`8SNq z*lO6gQ#e&FBIe+blWE;iiM8HNP!VI7?Z326x0oN0ru8R%a;jpmtj1^%LoGRlZ{fD20vs`iYl2mDFoV7dX(?LD&~ zN7N{YQ&yyFOt1;lb7QUyqj()3mZ+xcb0HL`I5!kRYCa2g;pWvPWQ~s2A{Dso?ZC|$ z969&#Tw(WypAo5(KbaFDg_TvQIS+%GrVP47quCMHY{>>~BdsSs{z$LSb))WB_P>40 zb;f#r$MFq5T!P(6KNY_;)$P1K3m%4nAV;$|{2wdcGjh{I;pSS$*YTn%e5w>(&vVJn zmPzEs7tvCxMDrj*UHI^T4v&x;k?%4Ii@F`_w(3=#jd>i}bJ%NiN`xC-AW66Tk4L*} zy-$PeVRt_e^Yaf19F{KW3S}2mri~q=GgP%N?HF|9+>D{=GsJ0uL+(x{(YmRs2`=bv z8zUWYH~=TSjieXj6{akFX!e>3*(eFI^(W1e{*j;Gw6%N`EdsfdO1*G}XJ%e^ro?s; zPg(XQocY2xO?RQCdDQ=+T#I4kR7$vLX5DQ^B7Uoumxc6=>0#>f6cOUFl&FG&#tHz% zeFFdDdef8t#r38){r_^k=XWU>e{;P+n)}n1iKb4|Dcc-vpsfIL*Ajck|AM_Bsby1- zcmE}O56SUrvRPtJ65J0Zr36wYPxkp8m;&U(%E76sYGz87W8)?#yU599Ra2fyVp_5T zjhpnH0^fkm)1KZ*&*j`*bXX!%KEU+3>>d6&=kvsu`Qzp`@~Ao>hyj}eZ_}>S=G$9i zYX!?;XZ0b0-J7tdk^o+hYv=b3youpYRC0KvDI+FW74kKe%1Ol z+1@_V^8|K7L?6hBg60#Ns@eG7lGY|UO^Hb{)L9~9ePFv5jNQri=i&v6JV?Go860Ib ze&bSbE3}Fyp^G`WXD8dhb>&g*v`#@#aSG)J`DYvTju+D}Xt% zkyO#b;EazSQVeIMJrh0ro1l;U;{Kits3ufuF?e+AW2l!c<-Mh>fzcG&moA(@mI4WO zr3TU5=`pr-GZ|)!#u*7OGhNF#7uB5j^K@;7$#w&kAhxQiD!HcvQ|jXVqrgr>d31ye zVgkx%{*dp)=GpYe zcGX7$o_=VrnfKeHclW$yb&Ysu0`>$y5@<;Tr%LyAD5R29{>Q{yQ{GAbl#m^llrrev zSb=b)=JYAN@XavSQxv`pv7(TY(*HD`SHr3&Q?WGmuJori=6O4Il_y*g3O(SI zSSUzAX8mQ|wGxjL!r&M$pHMB0%^I(i(TGtAq0SOh_=+Q}V^}#Jq>{KqBCr2x#m6#Q zWP}8e4u(T$)&9s*`31wnUM(-m_@ZjP9CgK9$dw*$4s8za>PbN=V_s}#8||sr#N)t1 zpeQ+lS{0tjF0$cC^w{lhqn3;qcB7HXi8!_4;186dNcijHx@$|sTab$#`v7CQ2;mu5 zMDorWJS#nXbNBVK-`ptOhW4GR{8YQKH+GCTYi15(I1f7^-z0p#_t}V#RBXDZbjdA$ zh&gFyoO2=Hf2CVXQ*D1^CgSmCdj3J?i&2}N{b3`t1M+2-Py6r+QtPG{Vr^%zx;`SL zNi179=gh;|9t*5Oq04+o#IShyRQmAtCwgaxbXV8uXEIByxt8&ybHA>s$6t#9nqzVa z*_=T<1<2*AOg$eK*N=Y5G}tjjZl@A8RFt_g<1Pb@@DU-pE^@v*@ar@6EUemf7*fW0|c)d>6<#)X)5Z7yWGp&s1BXf_~YRhd)zHP~vRB z2jO#0$Kkpi-bDE!t)E?*(2_5rNo)onw9CIRrguZQ>h7!S@=7{&@0q6mX@(9FNf_%r_?9KN%zG&l z*g?NYUwSnBtcL|Rt~Sya_k|)rivzEec^i6E`pXlu?WWWI>Rc%|CK3HY`F%3%D(&DW z(J&E@54CO5wTTgqQ!5`UHxE4wwo)11nZ6bOPQgFRQj&3eKEipN3&IYH>EeiZxx3A` z<-u-}_lYy09aVIM8~?Q#kpulGiNF<~Lc|jcB(%KU%~CRin6QA*WnF6=lR2uRw~4@V z5W+`UuVNz%2jksj@fada6Vs#l@X0fXfy1I3=4JFt^M$|)t=p558O|#652XHI^`zMu zQ?M~fD61L^ks6Lx)uR*Zc(f`oh^luINHYD)x43XASYE5wJ|-tJjIp3rf?^DYu<>St1{es#<-i{(dU-P{wmf0bEl9g8==z01pfwB?sW) z9_lWv>*!;zxv%Z6TyRgMPu+sEL?`%raQbO}4uGibEDb2^V-LD`=D{0mEv zWSwjuHTvEQ@dqQC%FJ*0bxhXXCn43!tNGr`F`GZuxt&@kNXRG>tbSfEN?Rj)yu$7T z`wJFm4qbj8Khm4|a%x`O+NrO*UY3+RmoLg=o*6U^qZ!~4aoC=qb}|;H9Vrk}`l0YM zDcby(pa327f&k`Co53YG=QTMUmWleB-sLT&)7id24fIlLfY7ktm|gSN35zII$7@s` zHGX5>^jNDg2f;$Y3KY%Q?k{7-ar%;-EFF~HuY3BK-bNDze~nmkWtjKP#Ruzu@V{Ir zw0qkvrZ3WEfz*Vvw_Hq?-ce%RP*i2}G#~y-vFBnYVG!$DwIZ*2)4ijS z`FppJ%TQ%RECM4#Vaae{{5ziC)GJwjzb0?rt?4F)ckEwREbn&J)COFZz}+e8v7E^B zWDwj9cWy0_(JrUP1YJ5?>1SAba-w~)OlCa4G!PX;H&@3C^GP(&f`W#Q@QsT*6!h55Vo0o(RQmot3+g27$p>6i4=T*G?-{N6^6dg4lQQvM2O%XjoZz^o zY)$`&kL+c0C+y-|vYQ5RTnDS9Iih{()?cALn_)gHk zx)z&ei8RCFm_>em;WvkY`fi_0gP_$jPCCP)5c_~2oNnKPsM3nfuO!3I0+PnbRM}(K zCu{8I%8Ga?o&XDZO$lj*sR~Qe+7P5hJnQCdk^VRlQE6EA+cGR%7r`S`e>-I#+~w8Gmm|}} z?Uq@Aut0mqXf%VT_603b^?J$JP*4>C2dl>sF*;<{p;^5w{4r&O{K)#;XX2U4#kB1* z>8=w3cb!4EyldI?Jsl3ZAEqjZwhlKJS+ZZIWBW_W8-|d!SlJC%!CC)Pb5Qxl zt_u5+_O|tz=PLm|rS-PB)b;o7{WQg*liEk5%N|=xGMkeCf}l4T!Pq-R3R+D}C%K^t zDQyMd1OF_bG`uBOdLE^zf-}nbRzi4PZkPW)pIHu~&;kZqfxoz(#Tfs0Wn=x$V@kD# zGX}Tr&M%7ZbHC=)6nR(aCfchJao}0zRIMh9Nn%#g5bVm@w{=XfmC|#Nens0O72_a( zN&9*97p|O7=(9E3xZ)3Ueks4o%{f$LDi@QTtF22v$xq!k08ciQQM6boRxJitorFdF z-bD1O@fp(q?4o|j7Rt6!5!=2H8-pT!e`jPLZ8UaAk8lj%grfE1jmsGw!~Y3WiJl0$ zUjJxP;u`AY*+$JR^o>bHLvy|l2L^j)CHwxi@Z*@RJHW#%{k(dyh#+VNw>N;(RDUru zp;=mM!Kk^|jjMOYsYob&eL8-IQw#HOj_zjn)~O?G`}=zR)K~ADTZiC%TJx|OE}=(M zOW%G)hH*_&)k?(L;_;EV+t`kAq_O}fj_jc@X95UP#CzG)DJy0 zEvQA$`~HQuuDL~f;m#6%7bQ4=ZBXzLWn>p}l!MjH<@z)NT>)lJNK?SD4$MXrvm4J! ziTa@?<1sAezN&w)lQ>4rqvjN1G)i?mNBdW44xE)9GPkT0pQB~7Peqr2lXGk7{n*X;N}HimIdQvy)~$$ct!`!X?C z?OB%SGbIxLvF?Ebi2TuroG3q^nh~J_0#720H6n$=Snq~HB9%SSx}=9FL-*AW_zT3B zT-I#*d^Q}nn4E@h7h+!b$7R9Dw!N8}p1vAEtAPp}Gbz0v&*SQn^?W`@3YQ=D<>Gw2 zW^D9{I|_fu!H}c8LoFQG6Z0g`?QkIE%c*><{O(EJdqn`cvlwBGOW=_LS{=sD51ktS z2FP=Hhi*iQlozdEKzkYP5am-h1sGeOgvXA60zrN?d_2z4U#VS6tZ9h?fE*?zw*fU zB@>mQm{t;cdrKH!h-QXgBV+L(kQM~=EFEzh>N*KnCd+YI!Y~ zlF@4n;@INzc%GuXBy?jU>B$PsdU2NH&t%-HcV4&iTk00>efPIzm>L1upsB8PSB`uSO zE}BwGyPuhat>tanbaT34ep9>me(Fkw1;Na1=jRQN3kr#R<*i+Pk?vkJC3n@ZciwZ$ z$`*KB``N|X#@vpcqVo((A@XbW(^{QJ<7oHNd6nDLV-Wj{DgZk?jjQ;7FhY_rfS-9T zj&V~lj%Eys%h_lF*LV&Y)FHpC^95MWp$gM*D+nGDEz!0>_y2z1PD6#g$3<`pSZJh7 zDG`#W^!I(c-$_*o@sNDH_UuI_!Y64%5LF+$dcasNPd%ZGj<&rwN7c?pWO7l$Y@$j( zqF`9Q)(xb;!An?`NXTw;+`}z-0l&_CL=y0}D0D0Rk>i@@!q=zal_4Il3L|GVFfxi$ zpHId$b+1as2wyC{`f^xD30#x-Tv>&Y;w4Cmk?^(Nk;M6l-f!v5xNsD}1>I26m=!Z@ zlh9bQvrK#R_D#HDOkEQ__GyAc{TC&9@p_M%u=VS(w2d$(h_{3mKM-jqX=U4@2@k7M z`Cb;?BJ;RfxD)w5RyX)ybxW0QZdF3NB2aVuDz`E;*XG7&H3A{VsV<^Jm%_65q<|({ z+&D?E19wut$s$(-2I~ z40(!vFx0Y|Zd!v*>;r#xwm5ERtUJS`Y7W5m%;1RI}y&L1Q>WbASaOt1*9zM2u ze>S53YI|9!GOfp&c2t6ht5Zb~C3k^=`XAgF3=aca^$Sm7grG}oT~@xs6^FAml)daSdk!O$b1^yEN?zO#|9a_*QtPx}Y@x8)*- zWf*P{2u~?u)91gS=*^@E%Xs-SF)X1I6}(a=etA~lbSQ2B`iA&f+X znc6(poKWs6FX?X{0P^%~SUPBqyr6QF!`VC3%!6xqWu`{f@9w>rvr>Furnv;ZGx<&V zO^$wh&XtBwGBYD*0Bg)o5&s!CqF){U&bF7_ZqLTSO>SV-+xz6yXHH%gdTyz`iwgag zXoGz+Q7}I*+#PSz=HCZPGr#*EPvXEucFX--i=Og50CxLY56X>t&^0F@$_d`c+)vDD z3=T%Up^^5k8h_#6DVoC^gq++Z?PM6P`U3PlRGA45c>np|8Y37V z(1)V_TE>V&!4Lm8J&R`i&yZg(b z-yWWyPpMEg+kk=w{$$Nh&ra9!q@P~xJLASue@stbmegMiH+>(4Exoa+>$L{<=3DMZ zy&lbxCBwnPW7~pB|L{zFkKVNeK{ab(`7`?;^)O|9jkXf`nmVCp|6Q6B0)So9Xa*%~ zaYdZeSyVIYW+0xOhLLen&_Z;O8J1!?4C{a1GEwT60~W{ZnuA<4YY$X_&9j~u5%&LQ z40vgF3@P`gFb?5ag_SN%oAhV3S#Ut+-e=d=XFJLkBBx!UM5xd|y~LsL1D&J-o-}Ki zlyiLw@OwwmCS-5$@4Uqi*2cGi2~Q?ATMwfS=?|ou05P_>2mb4gimwh!bqBEyzeZWY z+6;hENHE>Y%DnqcWQEwd+LDX_bLqby=!0RUcWu|f0i+|br9Yj}0_+(8Ctd^px;EjX zd9K$sGK~@PjD9~zMwIYGRw|4l_`43#%m}mW%R!vvcP_< z#Z@~Se$k;X&G&f_^8Be@C4$a6g;nZe~1xa7t#{LDy*FSpHhvFr8Y-_FrKI9fUEL>Z^#!z z5BxgQ*apad2LG4Wk2&&YG2^9Znq5WSiOqJwbIpP@s#=$D8 z9`{~Lg~K&7{7*%#4;5903<)7NoWqk)^@JEH+!4y%umQkH|4L=!_OJjuPJz+<5&5J4 z)E5<1T8CY~+E5#pz#x9xtueCrJk9(K;G~!>gTVe42M|yDXP(t)-f_K<^T;90p({9C zFPhKI1;!T7q!dJ9yV&gnh%gNSc2|&c9QHTpH)swPYJJTNr{(2!yor>RYg{jYJ(ZyS z4To>bO#*e?eC?BixQh$*=^uWeA9I)n$eq#hd^|Ur#`aCTdEN6sPe5X-2%ky_`Yhb( z*%N3qaaAom%>|c}@<%1PXLSzO=tC-t9Y8Y4BW;j0PVjd2+GHsrsr7cqX950^nTH=kaXJP=EjVOYuwS8Lm(6D;1m0Dy8@Lihjqyn^XDO>0U+Um{KYxLu_yP9K=Q zUp_X6A&xj$pNRysx9C$XDPw=p=erSx{F!tc>5VR&;`;a23Yt@ng;aEtRlZ zHc-Lv9e`TV=v~Ipi8rtrG0E*ucgpV`ho`?ZZ`3M8>vD3~^Aa4QyL34C&a^+D(TJ8J z(Cms)V|~H&+-j-Kj}A@3a@pGzg_?hQ{6+KWQM7FYMbB`v7i1`95?MbfIk|GM$bNfF zOp~HpCHl*7C=pkMNJ@S_T}`kd|5&ro&Fys$Pmf07s($lKCJ~lA(PTEFV32D}OC|Tp zCSCk!$lMuR9TlQ>_8(VDpVHS~#dTA1QsyJwI`A>(Uu5kl3a+ZH4CCC=2cI{(&Ka$T z#VxnoMY84gcbp|3rWbP=T{%pLMd@=p(_t(p@n@m+ogRRKo7`_#S4Ri42a8OupVm2` zfrmW9$vkRu(WnGCoiLFxp8vG{S@|%mJlZYNoR~f?8 zC-vyy=~Lo)vl&RP3w(CMC`3pPJwlV3;|4sw+Ng;ZmX&6=lo%wXoXJqg8)@zBHOh;+ z49NZZINM%>pmZxoe%zV@RO|_(gUtx4KM=U8`u-Y2(x=2sx}-JB zbKLpVULNE%Ibu{pmL{nT7jQtf(Zh;@s#k6{1{Vhxvl$Z&@}}n%R@7B7E|G0YO?jDa zK#55#85xDq?gOOjt6~OPeFLGA0KPE<7+n%vhh>(GdnkdPniu}j;6UQ*Z$Ed?UW<2c13-~a$;8xT{FF^V^oTJe|z_`fsjg2mqB04iI|hP?2IhE z7~wiB_5D@^!aI<{X-u?Edwe-K;$ojbt5L(P*#Q%agY02c?Xj-8MHyklhVf1ry(>SS z_A2<=QdInBB$VIHez)kbe@l7b>f#D&fLauLB~<%H&J&dyrp5WU_;UM82GqS zk5PVxnI)XnU#2+8wcnMiHw>^9P0zJzZE*ek;^dsRUozq2uBN|gw%cYigJN>9KZ;w* zeNVjQ0k?HZ6hAs(34xRN2%|(pS}2H&|7#vBdax^F%Y_c(PD5@L55%l$$hRoAJF#v1 zXjLxjmYjdFx4<5LqA_BL)*x&W*4-je26tx!1Xx;;4UkhN10jsv{YU5zbIcO%vuAh^ z8ZkK~gr!L)eFURU>NVL`;h_X2;<)nJfywtb!9wm6gE)XG{)?N9m8a1(2NX$X2R88dZ4pae31VA?Ba|W6K|!393DDVpbMH z6LSkaM!XW)bP8)Tir^=rgZ?K9bJ}4jRme}~m2Vmr6PvjB*|@OOcVs_R2}7B7TwNNU zL|4o@dS`f(RpJOxt>j1{$; zUe)@1frk_FaU$f=Si2wG&iNI9kb*ry-JS_xfglIfly4i1`=jTu!5V_!pP~K4%k%VnY9rC2_ojMC2z7n@M9-Z}NZ2kuQjB~yn&=UFQTeK-wr(ezsFmK} zjo?ffX6peA-}->OQ!8zJd8a5&A#B8@gB#|d>mwioywq;C+@i5f)PO}{D~pRSEG>cG zrh&zT66VAbx={nq?}?zAvTkWpXT+S$vkpr@%5rH9E^DYTH_!0I3E;Xaj>A;*FDRUg&t z?w!if`73^&2e{T;V4FParRD}p?uJ>YvdaN^?827U6~=XI4nZ?>Og_bp%Y{$4EQa0o z*b^C>L^&V9m>8~^1|oTO*!ew-rB9bn9u87Pyj7=eRPht$X7q1b2ATi3S;Ts7F#(rf zVib1D`Cd?ts7ptd?fCSeiRENg&*uP=wNkuOcN z8yx^y`OYM>KYG{d?%u8XKaZH zFHyC?1^<#&Sc}%3=1*j}r&aGDXE|Qa%hRekDWd5rZqg>LdnWMh`a(Xzyt#zG5ZG0uNoXM_{_JoI#XcJD=h$B2OVpj2(hLz6SiBwluo5s$ z)&e8whb4ORPyliNZp^lIt8qmjL}CG1(m_I7ufl0f7On4WX&U@@HQR_3z8mP;_B zzg#5`3i9Z9h=wZNabUp#ejL-*_PVd2hX=qB@;pW&@I98i;$zsY(G0vtb8`o@9PA$41tNLR?>8%hx?dVm1xPH$aeSmBZjpD z-$ZaDTEg|*^V$A(cz1bA!l}uIM7D#h9l3&VvThqf9)hg7(uQ`v(yy-j(aE~M-5ceT z+%RKH2tO;jkXxCNr{ht+KKe=Drl<1NVuFR+2fpkQ%=RYFEa9%!xitXl?^3&r;Le1TE<5IVAxcCx*k49wOHrsYGwut(Mcsu&$pO& zkGhcqJIprxpDXV+iI;KV&YX4hP=&jd!FY7BDg}~L5$YgMw3cEB7`LVf(=J(8p!aZ& z{RUKzE3^oA7Rx1zw1RS2m?T0z+$mM^V=fGxgg4FA(drT^h_w8JbnJY#-Dn{oghMu% z9rf~OOuoFs-Rtv%nUHY7J0w~nF{l%J)gF}CIg5}-7VTfkA^*UOl->y@E2|88!K4ly z!^XkPa83wjzrc?ms-o+uXiqXM^~_`%I|p~fL+;lSIr@f1FYMaD=kDsshAA7GENNQ!?L9lWp}%@m+Mn9 zdD_0(Mrn#-=kznWybkDLOYVkSlCVgw?#tc3Vxx)g2TO>S%k?Od zDbC84E+3W1K+Y$ssk;y?N+ps->*l{=C z1&AerC5FDMwbfd$-(6|JO4&V69IRNW8TFSf#79%2O&i`8FO+8qQfD{L2ZM=lR1 zBnb3@O)QtE&aX2@8sj*8b2$Rz+Ba8Ed#uu9dyeo}C%YBHA{Of%(7T)Iee)r*tm$zD z1JO!?fV@jQFwk`67y##@LM&>!Q%!@#Y!Y;0y?05lu)~4bSQijtMs2-PZcZ#m)*7Kt z4cJRmEo*#iyMyIcH+{dlOWWbi458&8vvVtIg#z6-csf7`AJk_&FLTeYp_|wAYrC<_%8$$togQuupDvO;9BYXWl093R z9Sqh{ZXvolcYhy-Kl{2TU2(cNBNOBpUV?{r=yiQ=7W_2ZOTySVzx6~dH zVepl9=kYJ-q^xnNRO36?TToBrb=*OvE*+fdvnVZ!4glfYIz0h_K;M|FKBSTgRJbF^ zw?C|0!{qxFgDaG{=-jH2t@>eiZ@nI$paB!#7^{hQ060HtG$o5USvP^%4Ew=~#VJqj{$OlmY2w z+2wfVbQrjt0rL9nM47P1nKJ`3PNG{pzk4 zzRr5{U*n3`cEU8%x8}kIQLC^{etU{H<^X36c2m78xAwbK%iS=!@JJTTUz6^ zSpCHlIo2rvFCJrWmgHt;Ibp%Yl|a1bD$h2Jr|PVF%DP-#?2S|_c;sfnda1c|ey=|z z)w1_sGlijkE9tc2V0h@*^-RyxC6;kOZMKNN+Da%g$3eQU!Ve4@>r`Z~IrB4j`f6ob zIcnG7z)ywqBvrBSEcx?1b<~_UIcafZ&d6bc!7_f((8AgRlXQZ4&~rFA;$-P-l#`p5 zm6>DH4{$ERth*zUaF05N>>w#BBG#YHaA-pKCQ60K3~V4uL{R?b$}cYC4$)XyG{p^*^LW9 zTQryNBF*xvWLkf8jlJU&NS-g>u8lj{8;BU0G1f4s7OEwMZDvB^$u@RePm zV1SSCQ51K1g;bdm6OS?7h1_Vu%?WxJl&8Vae!R)y`d7O*n~cszCsn7FOudo7SZh4D zF2{Qv`pZl+G0P@P!=de+-UUBNcF&R;&*Ht|4O6_)UGTX#w04k(8qA!W+?r}Gam46; z>m)_E zA*R_Mi}+!C(eWlo0A$^_9>eb1r#CziyQwuZ%BgawKH(9oH;lxlRbW_g$wkb~^3&Vf z`}FM0@LH|ZxZ66o%t>izk2Y99F}uR}uE9Bek;AoccvSw-1n0gopj}ARjqSPM`Qd6n z1#=T`wZ~K+~u0LFDh!+nYe|W)UwF#m=p1im2UbO}z zs*lg7ZXTQ*-(6_OLM8iw=5#NZjR*TF@reahz{fAjN+@UV+SqyI=Wp$pH8hgN7YhkM z4JnA*^apoe!BrbSZOszml>3cT@V)feK(TAyY7N5G_tr7oou8e>?epBM^DsDuwzdI0e zrCw>{EWnhIx(!mWD;l@yMs!$Y+~q%=OQsp&D2T*xodP z#-vf$lvEOo2I%lzcozyy&M23?^rsh;`G@Y_#$PpNg6im;gGd^vXWgZbcdV#<(MtA+ z;ow-_M6+8CSy}aSXtN)$)|T7O-vF`k{#AsAhQ`?JY{bJZO09>!T{WiHPJL*}zN3`Mq<_|I&on9NeN2WhTqp9E-d3RDRuo>zhvbn9T& zzNTNhPeImKG_9NHI4CeC>wKD7uT^UPMb{y0iv4~$8|8SC@1QS3sE8?C_4>Hsen+g+ zo%`n!3Py6?M8cE}MXG@7iNCh;$7^;LwTk3%jQCsI68@t0Q`~9+*6ggtB&C3TF_WGgu9@zozG z%XNB+$GpZ)`YE9}Hxlj3JsI`H;$bL z3Fhvk4r)(^+-{ey%UuS2)f=HpZnt6e<hZzE_HeQ>F%v*G@(ev!7jV^eLD zP<$OtL2O)SNgI!`v548&#i{SrP~F+K`|+q7SktV`L_ss?^v%-UUFh_wq^d!0^x6Vx zeKT)$cR3VTe{xCGl#>*uk&rOPX`+z*jw>g_c?=7sTjcsWk_Uq_`My!&T|nbK|E!Dk z=u%1uX?qmvgNCfu`^A!=S?7)O-B?>akry5;T!s96i^+ooJM%GdRpx_|%ooO6g(f_X zpvl^^#(qU0i;AO8EOTP~c`M0miKRPd!$gvws#dbHv14YHndDTlE1j9EW43dvVeKj+ zzJZH%aFc5Fgca0(US<0O$6$XxQE_j6CkcUzwf+>)m1_80ddNq4dL!1c>53uCnl{{3 zthPdvk-5nAU1C4wdf&oXXDu0<3ZyE+j=7eBYthNMPM4mEL;GjJQZxArUNh&ci}*r! zJxOFEV2}NM4cPd(;ChYc`eX%7oNhIpq;cGn%;N=4BXG2sGbAXLYdmQD^Hqi_(04)0 zZf8H@Nw=ge+u21Fkc`^GQw~JfvSr(wvMf`jt-&wimi4LOs|(eGlDao$$pv*GDSFb= zLgy312VOP`i%oi;ClSL6LNCAtW+-K+bBW~=`^IfoMbv%xLDi~Eps7V(9%E_KzRV1o z6}R&?KjrZCot7PgVQ}OsL?sZJb$c!IWce*gH7-8R4eS#ucDC(xIR&KD!;@kSw;p{L zcWr^5>|Lm2zg9RsAwzEaLn!6jC1d+dr%fZe{B3;fW)3k3GAUITRErpI74Nefk zn%@}0RI^2M!G;hPJhUvaX)ZB$ZxQnivl2pmOD0=&t5*gYdKgCGS}t!(0)&bkiN5<_ zNZGw89zauNlDOCco&r5h%`s93eJ%7|=@u(&bk4+DXvg`v;*ZFp)ORDN!c}^a~MgIikaE~v7eX-7$epKS-fQ^8X?zqy7Un}%kC@-x@Rd!rKzkYL4F zB4*mb23ON^qS!$ndXu^%hipQpk=Yxlw(BWpJ*3O-5B?Hzmy~v`CrE%g z*arhH$z0l^cVbz#j*EKVQ;CwO=g={#DKT&jd~gv-&`6_POWzHSCaq8V*jMQPu^bw0!H_5M-t7FM=pdqYy}X4$2> zmG%-&n8J())-O4|dt`5oZ!KfYSw84WI@~J2qJX!);g22T6?jnkFh7t+(dVCcC>+B7 zTKQNIJFc~B*jva<$xbFgwX8)+G%%tXnGB&_tBz_7JnF@NP$gG&bHH-0WB9Cb!C&vS zm}X?~aPy{b*;1L*(``eI*lsmHpMaFhT2Yr$_S_t??kl#63nF3f!eRI36r8Kw{vfa0 zUBred;0ppDH*W%B=Bu9BrO-EE$QcM4;~ZV90|@}t<5qHcki+82NbLxT8L!h ziq);(yoM|0mboPG45n_XlGcdPy}Ze;xddlHMM4m(dasGml<#c3k%a%5Lvuq zY+d>c7aiiBr2cjp&Dn#H0z>J!2c;5XrEZnjz*m_k&A5S8E={8ocW<`uzm=V(8w~4G zQq*8-`)_5EZA2)F_EYdcva`o8!!rV@~hY*>3dgpFHTT_k5C^v=G)~;DYlF zx@CR;aRtRAV}D&wI!Hct74fMn=Xt<0R+owbx#2&bii!_z0B6c|raH1qB61UQS941qIy~1?4H~ zb9CgHzCYvv$S+h^HQ5g+m1D1Wkq2m&63P-NC^d0d_omN~$CyrXx~?cF#0-BwsPbxn zV-%D>1@cl78lR2!A22gDF48z216pm5N)dkFf-H<*{U~q_N`0TV^QuQP-<04h06fyS zW<+ZIluTBZ0k*R#b9yy&-{Hd4tz-bU!nSxW7-U5wv-nlUUV?uf`fb;*tg^D>_R6o* zy|l!kHRG@_!|1yG;-hBKm{w8QSjnx}wpXWo)4}q}6S{v51WDC+CmXDJ(GeV@|F83O z)c0^CR*dA6lZG-LNz5u9S9^I zS_q*eaj=$f1-wuZ{L=c7bSsEvX!^K?BR7|IaWaAU)o-BxskH2g;Q8MZ;J;3=S2#HBuxo zd@~ENsys-d8+X2sn^xiFc>4-M9c(|)@_x;KE|o8ABK5D)OYv0fLGE&2Ck!X0P5omk z;zQ@sWID`DKGOWefO)<~?R1nnqNfZUcFc0}S#@%!&vMj1B>ye;?aP0j1jiNo`ur&j zA}LFeOwmBn5sM(3E2J~BtO|ML&{ zINBuitFCMA!=caTA>bB>d5uZyaFBlO)X7#kufduJ9o!BvYZ4b<@JwqC{PFsp;CC#={$++!um`y=6<{Qw=Uk6@k z-aaq(`E}re|NMq7Z@C$ehpkp=AH5XHVP5!+bMz}0E`@;w;mAWKe2NUl2)4^f;D1vI zbYJTq(V#?eNkeBuk^Yw{B^Rr4ujK?~zX*FFFOzd$AJ#2tJ)&Yc;Qz@m4SFEBPAhJd zt@X7a+gbv>9&Y>B>{V5;_X6Y4d}_-rMu4uS5+3B-Y!-kr=irEY)X7ncUx`_<`V$P!tV|TkbP3jb+mld zOiZ+sh$6B!8;awBQg6Gm^4`6qi#gq?z&MHy!7aQV>IfsJpR$efnVC?e ze@)(v>OY~HB!VUQ3xg2mGY^VG%CwjgAjafdi;c8wNObn?M^f{km%zKH%-T)x?w5#O z{H$FR?XlOv3v68D&DU9JU(J~=*6>3|xzqAB+73A2M$4>hZ;Dj_z7*}o!( zRk4@frTK%=n61t;U%)Zf^tl_&k zKiR(@IDCw+{E3(@F;>5@T{Yts`$yvF#@uP@y)sKrKf+l4J5|CL^w9nsj$WDU6zp6* zzK)SAi4F{mb}`Wa?KFw3glO8`IJu!8Ey~!}|B5K8+o77@nR-7>`t9gIydP@;fQ=Zb zWBGjTt1Q>SyGix9t^f84VIH<8V&HN5 z?gU=fax^{1+fhuZ{9^3T>b7sYUleK>gb&X)o;I`>%Kadn;yD#|lNYe~zn+97RQfxU z5DO+yojdb4Xbx`g$l3}=H!GL}-UJ_?bHAU;PV{`Y{Q7;2o`+-YSHLR7lxuI&;a?sk zl|@FJfTm6m&l;2ff{b16#?-!ld6(fUOi`5bYHp0SV5wA+HnGgyr$-czPF`HB#DefO z_VrGe?Oj)eNb(4~zKdP_1AMV7z&N36`n}`Rf8vIrcc|=l40)#vrPhhACIH2@t8wn^ z!+{$kG})8!r@+{MOvm16I>DWlh(?KBea^i~PfG>+UV@-_%Bb5GSxxz1t*}{s)2C{&O<{!L*udvoun|VZowg5 z>G0a%j-6iF9%6!zJN9EkA8`o#crq9Z=T5dpcz=n~VHpp~^)Y9_Q=gFLe45e~6#z9m zYnH0xMY-@e6|}miE43OIJu>Rb0P8T-Gd+G~W`#1`=n7x+a+|*U*G6OyHHECv>rzgl ztf&(#V@l^EW1A=*%uS^}E?92qTQGj>$kNX{!tKTKX7;6+s^1p5oJ(KXqP8+kvK2cT z*`jn~;zW}(u5E!l8PgAQ*N=&gb*rtsBo4!{pQuG{4Wb=K(vknzy7($o*^(YSF_A$+ zUqiavSk(1}d-C2<8F;A4snDZ}&*vual0hQDu8eHT5chA208hob4SzqkcBKVa(RU|e zvUqIjzOBxfUTIu9Jd@6ET`6e&D23xfA!E-OT_}e}d(qTRO3Ob#hQuKKLUygu8RxWc z|NqB)36IIj5B3SdUDCkroVi7SpM=qkZe=5xXo<)q$XF!k33H17;kBy8Vucx30oK6)^|>}hkSYS%LgP8ljaF5`iJ z-crK3^iId`lq36hgbsf87r}fHWp}M*S4p-x^s?q-+5R0NwHlY*RjeP{R~{@zsJ<^; zCVP8GHWpw|wZLH>L?d=~>s$>h3hOnZE)AwN%!~VHEq2tn?LIvrAc&}cf3-3Rk*Jjb z?Kp@FiLP-n&@X;M=GYgWj!(pF+7ObaSzE4RjDTGf^$aMLyD?QGwKuC+P9g_{_VF`k zxTB&&=AkXxF6=q9i#N-Y_Q$Uc?s#;RR(<0crH2N?Ag#ok0a{So0kMT@lTsU zjUYYm1xsZtI>gGjA8MwCq;dKhu$zQi&DkteKSgJc1@p39b1}SWPvpA3WS(@fhGKH5 zndKc04_r8lkr0_!+KrD?B?)nPZ=y>8oHKcfKjf?TeEpunc7LX4Mq@|GW0dbBI!Exs zWhRJX^MLlo)eH;UWPDSZxW95Q=e27m-F|~XXL2Qt0;LqkmEOu9p70Vk1l1@N0vZf! zy39V>FWxAu>Ou;P83iyVA$=FZHE4i;Z*I$12?{-x113h~9u{AB151 z12C~^RJlUN|A}@DVE#;zvR51GcBI?YrqHFx*HO|iAgll=sEJA==bf~>I8d+?Vm zG+({=HbOo9AWH3syK|X+=$7%GPE@YsW z$wbi@q~OjJPsikrc`T3l4s&jB1^9)}07g26Gnqkv>`%QOw z%nsHD$07J0ONxHO5fo}9yMp0OaGY@Un>ho=44y)W$(=SGUc6w@wGemOw~=^z=TYQF z{oiJraAKk#3W*JVO@k3aRjW=(D$-jttE+x;_X2S&NPA1fko`L!Y+&Ux6y?Unfqw zSoHg?n$5mjJ_mQDqS05nz55Sl&p3<}oxpN=)$`{~#dq2&6%3x%NwL)_GR)I3{& z6A>&<&X8+dsst9&Ps22xkZBhRyT6yN^<4-n+f=4U&6YG0zbuAWBnx)tcvsr<0=br2&=EE!U z3j?vGUDn2iNN*z^smGIOC8j7}Kr7Thy33;p+#!IFP`_WiK5QC+xgc@2$$rTWt=xKt#QG_-q-X zTH9~!dBd@r%zwifK$`9`28te!h=3N!Q-h_66uycp7vq2F$>~TenpQxyj1HTZt7%L>ejN(s0rwdi8XL8;LyeY!gjKjW9Re&_s7IprjU~BiU!Zq7v zvn&NmfF+H}_wlm;?U#czRm!)@;BA1S!V_ujl3Aj0x7v&K;lT4HUil6Zi?Rz9w;w~} z^6S-!P7v%o0=`Vu#h(}vs{extCDRS!*^&$Zb=wFHCKr3+rPzipSePLn&YYHRSkoT4 zJKt;TZSeMHo*vm|XEbCRM4skRlrH-_X&a zu!Lwb*7r8T^8{;AA}L=nT3$o%%L|eZL*bNaOwi@aJvs?G%#qhu&)kM=eB;X~LGz=Sx{_oT zJnWtYCZ@np+{i&pj!qJg5CK5A{P*J2DqLH}xA1Vdb|Z*cNJmkg2TA7UYu%#c4`d&v z1HoN!nQRWDv4+m^*R6mo?c3XgSpdV_=1?5owC$ZiOjJri)U#-%+ZXXj>W#=XQIY4g ztGuP7z00l!#29R)PsfaH-%J->xH|84*4{4l+4tUd_{+ z|EjI9;0@_%#eU2w-8*qM<4LEZysG<^twcYST>M`ishG?%oa{c>T6_l`&;Cp%&=POJ z`e#sj=8vdA9p8?t*ojHp2>sa*_kUYEIGlYX@M`UBv);MCBZwggdpE3*j&vI5k>IDi zs<=i$W(vp)0M2<1UZO`u6XGmLRdULJxc`*&|25>=!7#vwd3vv{N!eKPji1y35;K){ z>37X5O?L~ubk5hF<%@yrCxtpm&5FceKsFJfUb@z;fDF*Z-~!+|Z8vS2F?S5$K@+$2 zG}Exd!K;E`2W%3aSP9W)yHn=2c&y9QD*CDLTfy;MlUj_RJPqMua% z!K3C=SRIPfbFWR&tE!FKnAe-c%*}LTq+qxK^vVN;Ig&MZ{aEgRZVg$~B@bGw)reDn z*J+w=Dwq#Ax~vI7UeneoZ|vN&07bek?=~{o?G6bmqD(KX%G0j5Hx4F10 zReSgiIl4G)TUF=Nz>w^(LtY*a6}69@7(?Rwyv01gJJ~1vHH{@YKGE@)f-D*0Vtt{i z{BJhX2oZDsO3F<0B9o7=nCuNF8M;U3cbk>`jFAe0b8d<5mGfKsppKGqR~GP*2SIg0 zqbzJJp^>LWP;Y^zfO7xgRwqr=5fIrX3o@1WZ_GaWo8j%fl$*Ad?-%iL1W5AnsHZl& z3|q#U#c3Y>4LTjFsdv7y5)FqYK*C<{Y|$_xBUo;Lt4F#RS0?2r$}U*ke1b<=wy{E( z{D3(DbL-2XWF04oCm&BY^4l0~L+p?hkOw?2~pw(AH&& zADrFO2_5)4(6j*GPfdfhi_VAQ+OPNG38UNjF;Tpx{d7AMTcVy_e$r)<+U)Rrfan^T0FDyMu zJSo4ydH^a-8*d6^-}^(Z_I^ccEX4);R;3*MKJ^I<4@U=v!prZ}ll=<{V&uPw9!>MD zn?Q`4-~g9&<{b$UgDy*U}HV(ZgBPf+|=Iry?!>Efy!E9|7CNcUiyMrNVB znTzM|j^8%B$xv8P3@ERhC6QM2p;&}jHQ()9j^BSrO6fYb->^=3G|BG^daHjRlj&sO z3U&KhajXrs?InG>lS^xAIviD7Ayyt_IF#L|n8^SRZbnN4sLLqy^{K?3J~j3ifd%DRU?xp8Q>n^@g9&=L+jFy*=VMS+=%0-K^-GTq%? zOu9Gad&PFvuYaRev2J2U(2)x1*Dl!j42cvzj;6~=a(mp?2Pqck3V#GX{sc;b%e9MX zgF!SKToY=qv``4;R`em@jIVqK9XGd*0`Dh8jOna!tJM^V>h_B@u;~`E>Ce#af!)={ z2c-#WssGf~YFTa%KKluFW06?sKwSzW`l&^ z_6Mf8EouoaH49WjlZ)JbGsfIc?r;QAMSKjfmm+@jF)HNJ{DZvf__V|!{FFS?3U{X* za%f{bshoG8M`Yto6U;ccSVIo`;v0FuKEes4QWp)$rxXO$K+chcSVm@u28Gb zVDx?x6>Xfo+;P&VTM&g85vF2*l}fF{9HF{z5pb&a@NKjV$F-6;M5-PvdetrlX( z@sF@O+v)U)9P6IkyR3Re`PCx&Nv%3gfv4KdS*@9=^%ayzee>y(tY^Lh$zC{`H}vgx zArjqCX?}Yg`{TCbx}l3;*(IROMke}Y;LTIvIYxU>1OQ3xo2cxYXbnf{lRN=Cy)Oja zN?J%!sgvC((A>0?0Lgl+-BdT+TpDt@(zs)$?iruiQXq9`!QknDQ_0`OwSJqD3FJL?2acma5~VT2?W!sV24ajp_a@BH^nRof z{{o;;5dN)vA45|`n;pBWjd9HC{xKzX4yid(iU_?M3v!^AC~-FH(P>51UPs!RhaIyxP63efDq?XgL_9-Way%Nt3Japj<0&exyti? z^F0$PD$5na){t27)s9|D79}ah8`yfnxiaSMV1!nq;S#Do42Vs4g~DM= zqkuhR4Js@jvB`!C{suHEN_2zFBC&Uo;sk8=Z}D#y+Ttb~=+&sR{a-HsHF2j|C@M|V zZ8xEIRt@1Lm>}i@b%u0Pxu>xm-p5D4#a(l%{S>8Gp&%sP5r?r#Tb~K zP|U7QA}%m&CSUeYRVr*(Su9U#bCQF&pgz4dBg8c&_ywj(L2Ce*mC?PNjN2OSCCXQ! z+4Yp`bowj0+kixvXi z_~WHp(oD~xZW$!kH4TBE=%N3^_Xu_sA^M+UG*2Dx#qcMbx|6q2X}a-XzvuOI!#ok9 zt&SfdROx@Ee^MG0n%+tZR+@27c&~{ue`-TH<55Qg#3td*z zGv{2`tnh1%UehXSzHe(&T`>kMYNeM!Zk)_jDxL4-U~M(H6b^EpYmpj7hi!j#HLGgK zWW4|suL|8UFT0t4^y|Lq`I2AWD7HXA)XR%VUyuJR+O0$~g2hF-hF(aw$(8{e$)YAC zeXElEn0q#Tz=l+=eU$&s%k9sE&0uZ1JFyB~nOlS$d+T z3l|EGUQyMoy1P1LPt*FnYm-(Bq(e}m`?BZhz^XWLef(O3YdsMn*Gfx{h+uyoKrY>I z97jKN%yQS_!hG3oGAOOFsA(CpH3-K)&9^L_3L>i{^6M)C)eM$0l*t<9fSLf{ZD<^Y zP_gziNqcmbVB)GZq1Pesy+i_cYW~meWNo$YKX!S*Leuju)9$S@p_gfHxXeK`f5TI^ zO*)UXas3Ck5-`>;c2As~XwtCT2imL&Le+7YrL36bbb!d(^CuI;sqrDaQ6;@ESP<5R zT(V8{C3j{qBUJyzKcVZ9XyLVN7L+t#1n&v$xJ^*~2l;}mP%1Q5cFnH0Ro#wb8XMZ? z+qkE{Di>r#v+g@UIiBY%3IA^!*EK=zdv6&~&_~p$o!xwN$kw@sb)lZJ`Ag;ipP zelzkb7h>Rs*8DW(bUG9Rfi z2E;|0yreGmJMl2gA9Ele*u425Q;K^_B*)S&cHQ>Z!7ox+*tTRstb3VPC8c;%<)6K7 zVb)_eK<12HtTaMC={)9A+i8-I)K)e#WD=9rEF@D131s#E^cPdMh2O*ll3@EA<>x+%A?n|S+Xk%DNnc~uwDMd&xR4G)Hxhy zBI@^0ep(uJ9ct^L?;5>l|C!`bjx08)sE9I=geYd@8oczk1-6b=gTdYe#kR(gDuaSv zz`_J;bE-7$%h+PVq)gCq)zxZMLyY&e zhG_Dv-4F9yr4GGq`GA*6GG4qwjS3y=LJ~tk=fC&eD4`K}vqf#3%cfII6Jvv}E-oEh zQx)3@-o>?~)3?PFWh&V&Uy`s%BH;|8m6tJz$9GB{)F5N| zu)rIeE~6yG52QZk*Hh>2#QnEuN^Yh0G-pRG#kPU`3R%|{mp?9GC7SF;ZF%oezx1MM z_g7$`fz>^-lzB8OuuGEwdIqDpDzH~j*cNp`#&dX`XbB<#Tr)4r%jA()h;)x(XSws@vdDshNnWRib5X{c{uz!vLI~J;(X{##H z&1z;h5-v?lc(;Z1sZ7{f;bGKl6qWKkudW@TIDmmr9F)Z|%2YE}_<|6nVX9RsBWtoK z+DPZ!7P21t3;BX2VsAT%60k&>GJBW72s^hUT*DBgtS#0-e;~3KOUpErQzY{hfMCMcEM;K94>Qg`KIo zx4#n}-jaM%ym~c>H-)q7Aj0VnrTQPqOY3)nmpR!1*SN7|69}0Z2LR?|+ItvpjWn#h>t-Pht^|XY1w#sV&62psxrTey;J&NKO zwQCZzSNzwBZ=RMH0zhT<$=0ByTEiT#@fqVJ zC>cx*Jj*0OEDulGFAX-zS$?b(oQ~+P=rkA6v^vk45G4*N}!$kG-1y(SxIj%Hpx#f5iHok6j#tu%1AnMpfhPff1u{d zv($XNWr7- z+|ufvrgSVt*IF9`Qh}{VJhCGZmXnzbE3&<1DU_9@STR?Y9X~~)f4H4s4$@U8LShR! zSh-Zs3%Z;i&%OzAZd$=c_C^VlPU0+QJ859ZLW$C$M%jnmG%+W!Acz>In`U15o5{Il z#?}0KfJ6>6;4>Y=FaZW8DUz?Q77M2h`VvUR3+E2N1?T;R$mFdX2Bk$5{BuBEH=fpjC~ zT8!;ZnmfZsbbR;lDm5ni4x@%K?h9d%s5d#^;GVMD9~f_K1(RP5N-|pE`qUr|6X1qo z=)RT>b1;*`T>E!IU{1O6<+l+g3GSApQ!nRQ9BvJd+N=mbGrh4OCL3)2Y9Bz^K%8-GO-cnCQN@DY)qMgZ5GE&ln5L88~T3Miumv94ytRqt7ix1?U?Z-fl0rH64O!M(rlee`GR39NH4F8qe&skbOekM{jIm3RJZLPW);I zJeZeqSNM}xO=v!`pC7Kx+&kD|OaV`C?hF#r^LRc({gl6mx=b{qeSt1%E_A!VSG2x} zo_Z#D$lu&4yi2RcSA0h?;pEQsMC@;$jQDB}-OaILe<%oa&L}RMcM;{vGcB=Df=AGC zBBT7YQFCTDxbrnA#4ZYi1M_f~I}n=ps*!lG6rr-J?O<%UII%ynI@>~H#rTL>J{Y7Y zte62_|EcPZnc7}*83tmLN0fnbeq06lSM={CmcJ5;9 z`!0gYMHs4>sHzE1Gx=C_2^!BuPNNODz=F!MfWcSBog;75hxev~n9YoImv0*DIxZLK zK?-RikDc^?<33yCE1FiVa@0C9Ddf&YEB%nkU||_bw4#qVqD%WgX(*-4YtSxsSNj>_)I~=0j9|-z zh9y;vSTXNHloHhWD0c(df;Gwq=Jra6lHj2fhxv6rE`#k8?DuSP6r3aqcWpA@Q@0I$ zReA9e$xLzP^W0tKWmPab^RE8cH+zX?DCPtY%h*oE;y>JHzI)ra^Pqt6%;i4{MlY29W%+{Qu%Yd9v3$4jjNeA zNm_T5THZtyV8rG1f7fpZMW-hcZbCoX`p{-jh-`S4;%Zbo0<{C z0fK%)!efyPX>rThR{@{4`a$uR6xL}8rjF`$l}_~C&ylWdB2n7eJPH%OrXgdR7M&z! z)fH6xCUdzlmX1ytVoSZh8~Gm&#$ClGnanVpXg(|)zSC1J%Z6O~zXL%Ctb5k9P+^Eo z45gSNz;~Bok4}ot#zTlAX3FkTll`-?rVN_jGCjqropP28)xTok8QuLZRYZwwF-Xlj zRB@W4CHbmY7!LybTAjB%n3@rKz~@53zlXe z6I#N&{PBO4!D?~oS~>r>AxbrebW5)H6!XRqd!E!@$){!{m6N!uqa3BFHhrm@NqI~y zLXs7{Qwpe=Fa-B+&+Mida54|(NGMdx2h8ig**o^uq{Njg`h&m&Jao!=j4SI}Ut9R& zK6)roX~m2VAe`xI@@Q02tRViT$Sw~~4j!C&EgsymEu<}P@jcTZe|tLrinuJuj-79Z z3FGRV| z6^`IU_o8lzM;A5pKT0&=aTFQu##2aI3!fJTC(#$I0Iun?{=_xvyRV2&4m2U_AjUOX z4-e*~N7Z{HNWv;J)Ghx~uGRn(Lz;R^&v7WvI$L~Q0W1<;cT-;oae zx6YX(me+|4p1Wl_07L#cg1r=3bfKN>KeqqzP9*j{+UazMR#7@Wef(Tcw8DRTb94EP z`@UwuQ7P%We%xqIR@R|U*!XHM`nZtaW&NxvwHQvrwR=x(r`IaL->Lq^fM5Svgx>n!KuVOH=yOsvsue#C-+h;b_gcU8s~E5JAH9T_|AHb$#SuX zFCWh{LN-R7jTDArj_~D=FJ;LQ)w^fHulZ!IzP>90cDpoT8mT<%^e>(vU6kBlG|_Lw zIi59J>*VPl!~!Yy)lQ^cgBN4*e*?^*1Tnens{@Cn3L=K{o&!7WBL?MENnav6n2zhY zV&$T`y58lB<#fxv#6a9Wp3U1ooR9(R_1D}smOsvfQ064A@8|7Cd$U0OgRh40iSs!#xtOq-7MhcS#U0{8ma*9UeAA?iJ)KuD6XEpe_o}K@`;1OM;?~d_sl0!lOh&PE- zVhYNBI*NKhf=+B+u-;!!w5c=VeS1kxPJX;JbWeDa*2Ysuf)?t zo)}XlL~syA|4^y5cglMf;BZPx`1RPo0nGalf;vw)@M*Dk zp9=Bb+MY)Neo#*I?sVE--mJo3N$R23x^Y#jtzpU(AtWsXK3jM1JQcY&9n;ij zm3zg%IzBlX%J;0Pkcr=Hj+1^Mh^#+9+q#>pYPOjJ%;jx|>d)uL+nH`2&AnMD$VJb^ z^D{BFjNzt1n!Cy@-)eOp3`sEK`u6kSyGEF@<^FU?&vpHLoWNd&(=X~tT~Y4+lWVu# zCiS3~_Y=e*{gLYr>4cEiT81}(lHh%+zp8m464cU>o9yZc@KZi>k$K^Ba{rC~^A1Q< zVd4JsrP;u)x=u~kYiZP$+p!Q`dRa3s63xQUas!e=Sf>@H>FkNw=X*EGNc}~+d*;gW zo{b!;f#1L9G{fm9d7O(nWqCPcXJ*&tCCw3aEOB5?E&pJd zNuR4T%>Jy!+CxbKYuTZ=f2s8-`^9}r9{xoZQ46X4VY!SIzCTat~#KH}pq8}QG%fH?5)qD-VrWu@jh7#4!~laWe$e4i^R z5;zsNbCIQ11hj?h_;|^62$cq2PdhKK90J(riO|nY3L^kaF<_lSu9t0s5z4PP+5o#dzNzD(R~t2rhEWRp7e)E+ z#cNH2{Ik@LLu!7)c|M(a)(1$*jx!xjwP((G?AXVzmBQvY#q#46CMH(b`X+KG0+&_u zGtTAtoL}=BTKiJ1_rleyoo&R3-G9P^&)+muK5VNjixawXR{2$H-ySDeTWnI$6A1ED zdn3@=T`uOgb}oQpqMky$`)Dd&)tUroBe)}DYTFb=QoefC4V4O(1@7$8k>e^ROR^YF zVF{y+pNv^zJ)B~}kJg(v?=F)(Ye$~rQVEjk_pb??Wq#Zf)QnX2!P{6CwXFMnczw({ zLn#uhrqY(Hq0I6qQFzl#^a}qX?VUF^p5JGW&R0Gvxy_Aru|@R9TG`!a5qk@+FUwlf ziyGT4r-p^cGJB>NF!ZnHkzF3D1_P_)St{I<@Agia$YcCgRE0SN9b_C-^!X=Ujz3F~ zCod|=X%B?>p^9f$l=NPS-MwBB*TUL$VO6bc@so-~FWZCyD8IK%nhzYzmoQiBy7i{G zZT^`>=kV8u=Z2X*1`69Wd`Gro?y0FesfS|G!|QP`Qjs8wc_S?v$@Ak0hbN<{e?Bsb z=u@^W7WDJXl~m0ngDrM-@{TS#dYlQX{gs3*=9Q}%$sRCE;0neJb!RebD}Yo}rA1nO z)*0YfpIw^J`oPS_z=@r}t>@C30QsbnmeTls9Q(>4@lv#8EB zQQBzu5HGrjEPS8!NB2fS#vFV&3E<-ceYeVL8)LBuQAJ^Y8#|117q}pVjId6| zR9Z*WW$gjnwKd*D%xs*62jIl0OyMV3zxV~W^d0a0nD>;2dlq)>XBB&uQTnn2aeGEw zEO$1HBphB?lq}}11RG{iLHwBK1JJHCZ>sgl{g7{S6@|WV&(?F_5sX~mL)$hVNSTlR zWNc?Zk)YSU0TF1&jH+EP!RZ$s%BU8486?2c7%Orih9g5ix1nr21wG zqN7RjJt%q3cT&rU{CKU#O!oLb?GiQlIcqFcZwJ%fNv)oCmN5082pOWzeL8h}e)0#7 z_Eeek6;+unkDpP`c^tKE*V(j)?6fe@r z!XdJsvJJ_bp3Y5-n#5_%2NF=8)tHQ3M|^hnMm-$&G}98GC^&l|V`kl|D*#TJO)`UL z*FDgPmNhPw`J-Dx%j~IN+49eOZ-#q!cJGYS1sb-lK@Dka@Ep0u}mG|Y=)iCid$AYctJ9oPQ2N1PNzrRbOl;R)im}5T@uzm5He7k&g+w#-i z$L*R1LdK@b4I!8m#a_Q1W$yXL%_%N;th8Hn({T z3hf37FLl6Pi1A8#=QgcHx;dM3QQ2u*b}Wn1j9%0~EooxeD3?Q)<%{Vj+w@E)2T!*I z%c(O=U~;`AFJ#tF5^$AN&4ALv!=U_cABNiGyF_MND4Vr#=qreI;LUQ1QB>R`j7o|% zYlUtp6OJmixWuYTY-U}MACZKO=-+CpFeU0U$v`9bOyW>{PNhmJQB&s9JFfM*x(>$UB~cn)gXX1bCF1!x5t2 zMVE1 zb>l!>s=u3u@@@A1CM-BuKAOMnV4W9{wFM$G>nENpZ*gCvh))}5N!D=!=yUPk-cZOm zLB9#FiIyij{{}QFgc{dNE9Y25AB6Y<-JX7aF3kk2*Y%V>uolre&|WM^Hm@eu`YKcrW?R%sjkS})&$qfNwt4US`K9eZ*445zJ6zz znnH~Ap4bcVNn%6`Kauyxlcl=M-5S>@Zx#Q^*HWRv$|DLCL0)MxEaQR=%UfeQbsOF9 zWmzO`I-~C!7cEA=XVGWY?2o>GDSIx5|6a90rGqv1dsbA#2En+#1(DL&z=Mq?2oR=P zD&A(a&s~^P*jVv!?qxQxvF5gfPvEcqiX*CMMs*4%JniwenGMVHlv}d(;~1~6Zs#3Z z#>v3#j~yV&U8(P!r3fOMNT~+Uy-4sQW9#5cz3D}k#*!f9x{wlgvnths-?VTl=$)$? z*Nny2w?evju4-ASIfp&ZZQ1I=&?9dT&L&XVetGtP_O1ExMRoB-W^o0-LJA{xhRAQ7 zl08M5)YS`(%(Gh(;@NzSAwRs+*{+3Vx#;i(a$?H{X1!Hy@q5YB{H*ZsP~5r++A3i% zhPMl?xiYD8zhQo)2KCSnUd$Qh0>rRmO=k*oh~*XablQ{QIDYbtb#M&`A;;!)&OJw{ zZ5*pfP5GAs2$F`^Cu>7ow4Sk(5N{6L5-$jHwb>gBmXt96w2w92uc|!YG_!Hd5+`P> zo4@T!c(>U{4a{++WRFzwG9#0QX(`!`B64ZR*T3hf-smhdI+u~-$p=vR;F`c;t}9rR z&A;5nW}BSK_sNw~v)|#Cof+CMZ;vY)Gb7GCkJc(}-!Jdh_Q!JgbNDZJZ&$BxIyV^F zEM8{!u$#TcVRD~4h>>=XU%f)CWKF7v#pf z^KhRW&KRVK6{0^V+Yh%&+kBj6^CYN^o_^@r1#|IGswhRr*$&$v5SHm=uH5fZ$J6c5 z5(%WH{eN;ygho^&DyeKR_iXKnN>gmcZ?ho67 zUtd_h`rNaUmwk{nf#C76Rl|BT&^Ki(BX&$lUb{>3*C-vI^Q;?pRYk=it2uRGRC1ql zlC*iznRz(b%a&r8;tVOLPIhjamaAr>Oq0nq>%%m2`!X5^4d{H4_&s7P1%wVGD=*eE zey#*$Yu1_9lA5;s`$FJrdkJZpkbcgo%82mLM5icc_iD__A2ZEoFmC$g=~qWgokw%= zCBbs|)3?GlxrbjwUk(3~L1UcYtHq|2rH`Qpf|ZyD2dx)L zVi%)z)HBHH`himnU&hE}ib%C3(h_FPnWRYANzXlh#Zx`c)%vrfGzg*|l$8AurMzwM z;E8fYDg1T2%(pn|iB<-oXYAg(Y>l@+P>VG=n(S*>QS3nBnc{QL=rjh4s$>0go}(^BF-Y%IlFgLdW{sdy^n@`py#0H2GCyS%*e zo9lLJXK9R^<}Khu6tZWlg1UbISpmd?-Y(#xZ(|g=YjKYzDZSqsOPrP<$-x6yznZ7O zA(Ep;_qG)z0S+}Lqs#)GbmJM*o*bg40>$I|r(C-_4vIZoIc&qhMHxL#dg{lJnw#q{ zi>a}p&oB`ny^+@X#ZfYLQ6-H52BzWWi$GQHifa3aMjgzmy0n#wg82ofzFO;b$qW>Q zHn0Pwm0?&m2miwx^?^*o!f0v%iKUz`Obhp&T*-c8x09-?RRgnla0HjVQLvJ2qOgxS z>+w(73uZo{69L2I0*YmB`-rNg!Dt)Gg`>07c8{Z|ScP-)s;BH(3p}p-XhHC@y=q6qc zxzmS|)t$-a;Pe~h=3lsfemtAhL9tq~w!4%w#zbJ0i{cD_vK9?wXt`kZxG`Ovcd7}= z^P`H%mniPp=pN3=`7WN=cRM@ra1yPEJv3Kib^p1YS-jaYw!3#j)>PMl^>_0Dsj1e{ z0B&b}lCM9uEs%fRN+d5M5gLonKQc7bk0^m0FN{24GkriuXrM^D*Kpf_`_AyxSPPYN zPdOhY6rM(!@OWtT9opEOdo6x@ClbBD$<+I8T)BYw$vS0lxHDZ^COJ15CSwD$U9-?!WCqI}G0`5ageWG~$VS=Gf&Z=9*+n36xbV7)kA z9Pan9)p6i`IhINjcg973$ti)JJY28tnqV6}@hk1RfAh(GSWRY*GHd{TNt|_KFAwDB z_RDN`w^{Tu+hh4&5fSljjQ5vt4T^XMmHv!lQCznflAA84{Zs;{tXTLEx;HD4*KaZ> z+VIoP+RPxu?EFJ;|Aoj1xAaFf?_9o*wch=1Y@TID_BICl_j++^KHhC8QMbh{|A)J` z{;I0&`o5(_x*McHK)Oqm?vRr1?rs&N8>BG8Y-ZPfxk^N?sOwpRDe1z}>juEZ<; za7@RlIrKi%E&lF&Q~m@z$>hq{k<&v*0{$c!uhZzuZEa5N9SfLTA%-?@udX8@w^&FC zpr-`oJJclAaiRU3_8QvbsUI^?*v1Vgzny_41>vYt{>o3)Gv7#8mLtoQEi+Te(*u{S zly-Kjvg(j6OwLh^89Py%CI&Iq>=P5zvih3Bg~REyNha)^D>&`v@JETlCIO z6@cfVAfNtNvxyQ(Fen(!&<0i6pGpb%{Dz7>M6cX zkO>tnc}1Ma-FQsrkX~la((GJ&|xZOS9iD5;A(9dH!@o zDk3osm<~Jf+55S|XVBqCsOK7+eF-`cdmKwM)>bs=#|lxOcIA=nq8K1lzGusaBk#K{ zTAMbQ`ZiW|ZeDj{M62XeM|N7WbVMw8Gb)xyMSp6_3Logz%)mMycXm&17d~puR3`r* zHz7q(8DLGgViu)MH65XB5Ym-Vb3sI*d%Q0O^K6+Y$5cV8Fy!xmtkil&-FW!POB69OgRQIWP% zz~dl`VETqF+@kqn^>oVVDh0g7I9uQ|I?A{4LdA8=uPPcan2)?x^drpR(iP^- zKXZ{!O*kABYGTnEECJ=A#hu$`GJiD@vW)o1jS`uvCf3rp0k&1jh;5;9;n6a$Ed+d5Ix3d60G=nA(_ zAgtFScPj&G&FJ?c8^3aajVY+OUN(JY-G+$Jd9jah<)cH5U7R8aUW@Qym;oPG#ttoh zMjc$a@5(dYIN7fMrW0hsqX&s2d&#@4HsQHQCd3(^*P1E}w5xFYt}T3sR14cQt?OBY z?Hz?5+RU(x{SZO&<2G7E#Bb_?oSdeTv4r)8ay{1e^7k_p_+LE~p&*r&FTY)OI2`?eygGw0M9 z`?yj+**ohr;oUK}p(5Pj&}kF(g0@Dy;lz$bs|Xn?q0!RPLzDKO+!HEI7BlCM!u&eL z-3TL9>`HXPk zom5T;2;zV(9Z9MestWxZRX5DdjuAvSf@7rxLj(N<@Ms7k7Ryeh8bJFB^@Hm_S!{8!$&L0TUwv0Z7~mnQC6`pb#B%VN+`ku@F} z54~LG7x0hfoD%qRhK47?V{9qS@jGYPwjPsH0(tpBw9c;D6n50EuK2G*lM~XjqwHD; zOO$elny5Dtrd=a2Ifah7-!mp9=OdWE zU0t>xrBaW5AD-0@!06m(w2$Y}MIZ}g)_Gr1_eQi0_+_aBQ_|AKbx5cOo!Z$KutWcD zHXuf|my$k2Vr3{GSH=_`TsM48k(H{Vb8D&kQ-v{5Yk&z;a$3|!k7dlxlh7+M zG0Z|TE(P^FXJLfNu~D~v*Hg3Zp&gVepBU?|v?{DBi!VY6#yna?OtkrC`U|~acZcs7 zH*bbiEx-%~M`Nz8r^DR}1vIuTa5dsM`ZoEj-KQYCQHyOZN@iDj_Yybgsz8;2&bz1m znmpxmHYf0ugYDKJc(ibi#g;h1tS{#y?l1#>(5YE3Y2vJ!i}0r~c;-|rq`vU3d?n>w zk&wHp`*3i^C8%cBy3x?kaI3{rI1>Ly#1_9hTG5ysFnudsZ`5Txu+QFy1XNvjb9-lV ze1rS>5>G`f1d^7YdLeSmJi~yCa#7ttD`j) zdij12lANt&OPC^+=hzvg=SMcEi#mNxivbo*hYzJE9&McN59W+>pOLr>=f1Uj3pz`& zFR=PvN(ykM9D?9KpIdCpN5@_cluq~!l8H%L47;Szd zR|-qCiqH?bOlSWz!f>I-PI_&ofo>W3bL=4DQ28PAaK1Wil(AG!W44-uy)<~;T$MUQ z-kkeL5_B*%U(D_rs~G(=Y^Q8#5w4DzlmYS!*#FZ5Fv^`7Q+eRW2-FpAk~pAc*p90n zF~CMgA@%9;3EsM)c$YJOq<-7eTHnvaor$(HaOwRH!;4g_cO7OD-gQ2JuG2G%h_#?C zv4CI|@+d`NKKd*LSWv#Hlw-Ey%Ses>VKHDp{HL@wCRlWx^Se9PMk5vPXj+>P&d+x< zEf@>Ml!i8eR(oWQZ65(L2a_rdpQoCThdIlge>zEiV<@vZP%s$mP6vXd$U$PK#*+^jX=nFX@mcBJ z1Ec+y@J`dp`@QnfZM^jYg6ekM<6@zeJI|BH8!FOsarDo7D|I;%_3*}!Bkp|W;)?D$ z;YhnRgJp+Fe+o!)^_P{KgLrErRB9^@-z3^^6r2h=ytsr%H+QrJ;9Nd<=e9ARYob`f z6SC$$%{zG_w8Y!dUf3TXb@1mq?-p@$l`w0G#5=g!2@%CSBXK|BLvKMhOFLVVEl%sqjp&GGs@4uytf~q-T-UOzTowNI0-x!Ap_Qc7l5D@?ipKb;fUHUfoZK zIAqA<7l(|#T#NCl`8X4gWyBd{cklMlo<%PzNSLhN)R(ZgJ0~&U8>$XSS=&0X zYB6O9O$9hw98KTL`A8{*6sQ)GeL)zk;#@UoXJnAF@$W!PRY>c6Z!vK!``h1-ujonl z@N}XX#b6+uFXGwd7bd9BnBx*I2P2-F(=e{}dT@)tEE`e5Pc3i+<=gx{?NgI=$ggRY zC^IzQKpYp56&BQ%wz>c^ehTtW^Y@Mb8Eme|tAu+!|6(sYK zF~DBYC-BL_k9RGoM=BSdzpV;pw{`khqjTF^Ja5zL4o?ZGepVH<8pc9yHwoLyGZ+Dv zFwa{^u?QVD5O^;U(bbXf`iS+8nSa$U84-!iPz+@$b|3@{f*VX$xizPxswA_P? z-=(JA5K+!w)!x}0{zU4;WNR}f8xUeBlWBd;y5W=Edu?^ZvEp&+eDRn!6qQMv6TGh+ z@4R&K7&0OW2qiv!B?;@>+p=RD=5ah{FFneQGbhA9&l6f5IP8wJ6vmo}CfC#!h1IDx z<+*8yvG^?`^GO-AraaiQSnT@(3d)V12})nm2E&z)P&i3QUNhAz3X~JXHLzC4HBs*N z+#DLHhWWgziiISZl-Y7coGc@I#4bQqz(JMN^hdaZhtXLmYBh0Z=kjPq|7=#cDPbsy*HPKz4^qe;CYQc9UOAVh{0n(q~* zkzomz=1;B_`lnDa`<_0gc4$&;+2uU7DjPCiT?aoiZBp3iYCZU$df7Mi&Or9qKplSctxk~T2UZtodsP4f#VW@yCV zLJDaKVMLD0?0TPz40z|sWe{E;^GwFQ3dh*zBf5M`ao84yadyy53iXdl4Fw4pOttg| zkJ1Mh(r(vKW|9+jJNt=tmVT$#Nem8S|1KCS*sYHSjB))d8PtJZwMFg5iu_fbEJBu@ z5&bf82+TcwTH5^-R8`3rt_e3)Rb~&ZMzpmQJ85$0L0J=&*9|n24WzhVM35?s2jU#w zmAOPp!}jzCG<_Pf8mU_!t7ih2u~)o!FJ;|!I1{{!{tPo05lUTEgwWYUc_4i@W2YyT`X| zh0sFhmJ&;406LS)w4f#0lna#cmVz)4fCL_w+jW=h%mC~}!?&n?|1LR@=$9|+5u#Od zTOfqP>$}x_Q|(>Hb(v&~q|I7NsYkqEaRUYUKsglTR}=cZU&q#8B;)@1xv9it9lUG^ zL}s$nN>1=z!RC!|TWQ3n+l{pS!oCXs;0p=ymA~ciVuGqng;y)=x|du?r{R0}UQOep z=Fk&^=>1;Z3ykpWLpB1&qRu}^3gU@Gn}i0NN8@8dky&g#i2I_p^Rn@CeGlHpr0f^w zMP=Ll&msj@%54tjIHIA935k&9<)JlM!9oClQj>Mc-`5{+fylXMmA-lQt%e>e-bgH9 zaIr6B!)HtQD9TX@FV-nB*vLBnNi>m<7j+OE4WEN)-ROYp>UyU5TT!9=l;^AzuQ9Q=L#0uhza^n5@iekz8o4+2yF8esukf73INgR}~Rm z;I*=zKUVcwjO6=H`(_N4+sPF3yYKr|gunbam3`N5m#Gnf@H8IPMfZ215`Lx{k2Byr z5PE^M0)i=6Ps@)609WJ%@L1auIv8*S3slcs?3|AVZ=z|(VY!m9%F zbKDQIX6Ef{(S>~tNOsMN9agk$*P6cijH7h9&2BLqxo(~GXZ93ZrT1xYJ~44VNr-8* zo^WgM&%K#G>GYT3`gNx@wz+rRcO8cZIy&tcOs@eCmslz8vxxsy&rej+EbwMX!k*4> zZ;AD<&e$n->mg;s$S9=0oYS=nSxAI<*`dN@Y*0p|AYY+lfPRCceFRY*l*Nw|kG>4~ zuei@Wx?d(Dn)JS_-}shF)+cjlJHbA*l%Q1du1_XpXAbv$S9M*gqPB^^noc`K>*cb@ zdJ4{s!M%QzyQR$v#XYO))e%4uA ziBNiiqC;-4_K{ErRQ_^Vm(3T5Ff~8Pma=sr+7E}$rSKlzOx+B|hWpscx0Eo#zvYN0 z9sEKO<)Fw&`CXw~4kM(zHl3L=E+tsHlZz9Z1pL)&Fi_n5vvYx{HBpJqOnJ4bWPHSC zXyuG6H4z5fJ7pw?wWtKc_GW%ay{ctO9-XWzT1x2IcEg;(78sdvc4uyOeWODD-q^rD4Wyfrs>No0&7` znVNO4DHTd?Pqd;8Gl%J@TBN^A5>?INPsJ2n+jbNAefiOSH5Z@86Kd$Pg*L+DQD6%(X?+$oRE^>OOO4(g=$ucmwkalwm06y|TBiG6g zFntxK-N*N1iRZSMH%&AnKb{lf%4__N^Nj&%F3&9S_)y%As~#Ioe$Uq*`0^RL+6zH zpDd5gb~*QhwzuoQdxnn+402P1tR5ISM;ODMUvZw|WX*G+Sj|=R2sU8%?dpJeGVXMt z6kT2g6&oGxM;;a{Lrz6y(~Tn{_F=l*bUQna2YQMNxHf|B>Tos_?8qKV`_cYaPie2ZOU;RrJ?jBH(O1iAgpth!W(CgW7fZc0!8M@90}lEg5_-}R{=`S zb>4EbATL2&y6g5AroQ++Hd<A0rG*#Z^!%ZPM_cG7B7Vc!`fj^ zCm5*=h%764e@HxQZrH|mjqk6BkE^ys2v>H%5b)B@=Z(ZPdgy*MQ*>Of%(#w3i^?jb z=Te^=;&8XBaskffEwo%CBxIz0aT3KFf7U5L`BSu2CzM9bf^0fv@0lb-AI*Nld2cJy zljP3?cJoXg_h-N}yUuc~qy2Qb(eXg>)zXbnpE+A%w^WSMQw55%%X-rs$|@J`POn@n zbq_vAsKx;g@zh=EK@E}RP@d5?k#p;5lVUj$x3|QPUfj$etTc6YeTQl9DwExDlM!M^ z^8HV{kz3yGr4pp#PH8d-M@87f4ext7^t@%5(t~cdBC2tTI;8lnI@A0K4=D!UcJN(N z?vr3JR)Jv@e=KMAE1qV84);7*6Yw0r34O-eIkcKKk=_?lT)X+u>*rc%_6XJ$%%V>d zcbx9tnON5kXTCXl8E*y7d-^PAx=8*8x#mk)s-A*{sJN%EsF#vnSsY2y9b1^4RfFmB zy){1K3uS!!lp@)O`jX5F2}`ua{)!zO8?t;$;Y0#1#MdMxJ+rtB31(*N2n+9rZ4uWG zR5G^~ly6y0dXCeOOI?5C_6>pZ48k+CEXw=&I^eGN@{K%-Wo*3M66gu5AT@6Uh-AAT zYMpglZJX{`RX^+f@Z%w5NL_ii9KgBbYusqk{F#wWtg@sX`uY0eD=QQRB#0d6EC$B5 zF;C3wuvKNRs|0`_=&8E!dF|B_&Jl-n=b{?M8d|6z7z1LUyYYZ-ZJm>3u?d5EM@&B@BY*wq(VOaN3+!kh@rLF`yqH4KPu^@)v32+Wf3pkG3$ z`K>x-erko)ahL;QC;5K+kkayzb|xY|-OHFnt)4))Q$Bh7hQ4;8R~I%_e6^miB;UPi z#|&*N5)@`X6*~h&B!2t-k0r%o(p5VfJMQZ!>*W$$`l?nPLTZh9)mkjCpSE8J2^7r$ z6dwo%fzH(AA%7a>@@LO&R(=BX`LvaC|4-G#ni-7O-2oV-@A_*@bRl8G0Tm{u_*+Mn zb%RlST70@`yij3%5g#@hp-bBxiAn40^sQWQqzyi;7GflsOl2|TXlv7K%0wfd=Tf&-)lP{e2i70T^y=AT5dGLaDb$V*#0_qzk%v`` z+&JrykTH}p3E7~?ctt&Dpq%_vYEb8~i#C#&Un%gs3F3RLAX&9>$U(bn+6)F*e%`F? zI8JQK%`kP)L2@MaaW1A~kaB@TjTn?gsS_`9fwM8tlCagKNA`!~XrFlMwExI2_BaJKumCqh z3%9I5d&+){Jrz8sSKg0yni}-cir2Nh5o+k*fK9mp?K(Gyun zAagEZAeG^us^fy?D)trH2^&E^G3UnE+x$bEXeotneA?-Eks6dKEF=|Yw`6+U-^{r> zoU~OX-TuGYe~*9jU@zGE$snF1*Y&1`kZjF#L$b@crWxhOB3vL)mqtnc8YPS=CdLx5 z0+Hj>cj{a!y$27}fewvVqfh!;fxAl0K*DWOumQk`yfs$_8?C0alXhz~r@l};b zxAWd_F?>#MKETYk@l9BTHQulN$f5F1Lx!`%qZYmqx;H29yA$9coc!!HatC#hCU3Rc zXUKTIeiEc(n$wz%nX(_^o?Y)}ZVm5fe?UKxD(R6)b;}gyFK(;WaesJnxe?1n7k*lp zx)}|x&%5evEK)D@i&}TT*CVDy{Ux~~%Ve%@^dIVRAm>41LD)N6lGp>2_SLXNoj7um zYkt`~w?z&!+>91SwuA`j8>TI!PoeH)5U$Ot!DgfC5rl41W$k-RrGznlWQFayrk%mpT0ET;Wr!59LBR40?YxDQw^ zkPNIJdTDTJtKm#!wIkx-);gRqPK~OYl!Lyct9SP19Vup;+QXR{=<6XsOsEea@%+t- z;O3X}YQ6>|>Pen*35wz+G{j$6{+6rZwgjw6l)@Znnr^u3T@Q zGkc_m)maCsYOx;O-j{f8V620m^n}btcKXwvUOu7+7R^Qz!<$O-{vZ4{G_XBT0$Qq( zUe`afzXSChDDHh2AI(lkn4VIgblNuSe3SsGa6Qx+zJZ(#X`|f&hcpADTL!J7 z)4yZ++vc^a!H`OcLqAr_SArpMI&)veV0BkIJhqJo%F-HxNHQ~;ikayv3B68#VNVpX zQztbc#s-9e zWy)aKo^zX1_8*RHZI_GEZJ-!>kIW(hqa`;7G|OH0A0J zG1{V4*%erJ@`As5a^!4p@lEyA;h$c!!y%m~?Ix~!MrvvD`_B-oxwN$Oq>hMWVB}?s z3KsHF{qKzE0~4WSy#z`iExpP>^oSET(vikIOtCuKkMT5WHB=odN?jSLtLpd3Dj2G5 zW^u5FN*GJ~j#rWPHKK?H_LHu48Ak?fHWWMX&^B=Q-;Pa~W}f)bE>C9HxRnEF_jpTLba>vDro z;F{f+AGel~3X!hSMN>F+Oc!%)U+4U4VV&$>joE16EoE>^v!3Uxx<9EORW-(yCZZn9 z)l0S2Gw3sUh}doAbi9Wu?;sl!Zh>a^O8en-BJ}(2(6jYnTp(Pa2}VIEtNuDfZeCd! z2~D^LgQ5IbYX0bLXnj8)wBTiz+Qa7c9_neD`Q(@kkIimqguCw!@w(u`HPKlZC8hoK zCxxw|CC$-@zvIV^HB{8(Yo;P8AXq();(IhL&R3* z-yV{@9~<*h3Ww1hlAVO+pTdvScl(3|_-6d7aR97aUc&K3wX(|r7YQqO{vTA{vy5{D zaM0iv??Z5w6w|Y#Tj+ZfH=SlJGX$Oe4UH1U?hfI5FJdJGDJP)nN|cF+^s!LT7d>x;8iCTG-rqguSb3tG@sDkJy)0=$VPWN6Qjg(RY}>il{`Exu;~n9%quPt>jM3nz zDlspxn|-_QR{)g1d_Is2fxy$x@aWZzRSvV}=^jVebUQvE?iXBnv?!WPqPEINu>%O(R2tdH|F$f;b>>NlqV^usoBMxorW?LfToVX>B{|2zvB8S3rh+BO^x%cu)am9UuUWD?U5^1Ag&pY+GIFHzD$T{1zlXOX6ABIg|d-?DjLXKp~2To#!Ne|qX zEu?2xWYKl3htCLF--`!ES)8wxYnv^Tv0R4_v!0}vkP~<5%|JDXlW?S)Vga^5_ywr7 zD^elH;gR-5e)4zzJR4|l(IXCrv#L<}Cz)u{rJN1kDV-N!eonctpTWx~e@p`{teemK zXUFMo%cVzIEcBU!oGzJKA2yxbZ{41M{PDZPa>XSJ>=#6w60betTy%o9d%S`ZcwWS{ z_VVF>qME|}xvrlM6PLf+gQ2(Az6XAU_t0&BZV{zchpE>R9c)kytXFOWE<+_^7HwrBcGvN!l zo30ovj_`V{_+RfCE%lQ1Kvf@;g?wCR#AoPt5ClaGWB<8IL-%Ww6)w45h|4Xb56z$wg=ZiWS>bK!Ki2tqR zN~ApVh=gHl(Y1Hj$&@T4iLURt@%t2q&WrqJ{oJf z?vCdh>Q;4wt|X$}t%RmI{oO`cSO&DM{VavbeszPtDf{{Y*HLs5JoY}sSmM03uT-uRF>r8 zCeJPB7RZz_fSzEy&aRYb%QJOeX<6HdP9yy5YS-Mj{qe%OMC=;xBtp~~4}D~UZg8dy z*2Q(s3+xI2w`MsvjH1*V=x2j^UW;k5ELhBSksgo0*+Ca-&DQ}w^6g+M&Io<^05E_;G?f&<}D~#%Exz|z8g@P#@h-b5|9kc z_?h&+4YalXa&EWHKWJAQjkK>D81Ra0WtLFm2}94wo~wvlc=ftc{2t)T2@<0oCa_qn zMv09xJ;=mPPd=@mGwX*E6?(fNtqS1w&aC;u%GlwDJz!WaR;k#}K;qU{+KBq2B$Vu@ zWcM{& zM&f#_ivD>?#`P)mfgUEmXCKB81-Cyll_c&+K?--#9*=c&`n^GgV?YD#KZ&QagH*Km z-IHtbuq1nGj4kVtgK~EnJ+X)mPxzgp=rt6nO$c1DIMC?foB3fiwVbr!ddM~8UXMQU z!JyOZtQj9FliUF|HeyNR7Vr;!9VeLYe7 zkhxub>%jO-q@Fo@LWJjPoaZM$(wzAST6Q9~sU4v(>LaNr z+?L>pj4?>k@+||{pVs$lOa5Vy8FdsWx9X6KP}$0g!D*4BE*zGVY&}Qi@G4ZxVJLXM z5Fequ%@uyQUObJ*+x4Dh2j07A#MxH1MfUEpNX$mZ8u>qQ5IBbcrbL7XK@xXpdTEIv zyZ{!?xj-K<&v8I)IT@3%-Kh#s+%w@z*4;I#3<`!{{3ZN`ni7#d-83t6xL~<&tXcRR&^S84y%60TjP&m zSg+ljy4SFAS(r2}JHT*~ZRA8Pp%e&?ul)I}T8pv`>r*J`p(uBOTmQ7{AyD(g`f!M~ z)#U2P9*$|}U?#s++dM!*E|ThM%GiS?>Xp7 zWA*L`17b}5ZqS4R?aJn!)AzB&wa1FAh(7)cn&l4Hm#`?`7E-jw3!@wG^D{5!h*~S; zVDGirXkRTWTUXO?WMmKL%8tAY=gEJc4hD*zGUD&zrhEhnpX?0&~GCG=CL7X zHbIODeHI``j`g8LP~!b6&D#+7^lB9LJ0HKqU^OHVHWJn2vH5}%kv82!M?s%Tc6VhxfLiT5L_!e?KeGpq7UB>6Eb4lb5VIk{_cg zD0qk7H?jLF(%q-|IX$BoY2d+^_>Aj_k*tNDz=*i2uytAC&_BgC*~0dq3c*WQ$UOYu z>lj+p@~-LOTY1yK%gPJh$lm4yi=%C|hyASnv#sZN>tB>NH&_Q+X7ILpS7PBKj-AVQ z>H-mi?0qX210;EKL=4n(^0%%J8fA8mWc-Wxe@lt~`9f&@^64fi`uVH@QiFUW-U$PV@|o-!pF0YeDeoOT zhcc|QKTn()ULEx|9sCs9VQ9KuSOpuM;U#8=N=6l_IWR2uPmLr6SZ2Yqn`LEoT{(Sn zDO^$!l^_1R0Yxc(upKLYJW^|&d3)V$j(Vt+KGcRg7pc~8zuKGHoVKi)dHVFa&eCVA zFN(A8h0XcTHKA{s^3cFAM{tcWEJ*1T?zJZ^FFmO#G&v{#cJaIP%C)@cbq6K&igmtm zu9mE4^XPX@<=YXWkWIjn<)uUR7)Y~%7CmJ=*_GQwP=s&M(7mWmQc7*IS#2>e-*Nvo z((jII)%!^BSXe1=E9hz?r=i~H!q2v!7RSI?w*mQjWax+3u7iAMZtf%9T`ugYpFRGn zF_QPrJ-8rIuY0K=$6gyOw|s4q%tdn0g^5kV1bXr@i?)u;-njHVzI&8$cZovFIk!1; z@1|??M5W=Gab%D=D~Ofe9&IM5ab9TTA?k}%UAkG7xY_r|OtWC6Ty)1i?YI-*I#S+*51n>(=hxuE&EYp_unT?_~pH63npaPOxSA| zp>M_ajPZU><%NA=Fvsy2*n!n;4nCScowto@4;eU6btg>N;4Ev zz2{fP17LK?-ocOy+6W|3?QANKm^KdQ3k{r2Xk*zwCYFn|7m?23a2E3DgjTcf6k3N; zI9zxZOv%7s}oHw$UZzP>lsLZ~&i<~_u?~c!P zBo=HXyT3Z=X&)QZf0q?p1%ZbV@}C3j884LzI3E?R0syN?P23l&6+l5z)To5QKK-a& zBGwU|Z;!pxg)V;w!;=?yu8*E!kB`gg1oSCOrqYrUlLIS^^9)>5WXxdeYHJHEDEQnj zb=wfgxVdrw?DNt8@`9uweDm_BNRCSkmPJ%+xpbQ90v2S^F`*^EJnf<5uTF!RE;9Nf z8vkXoqe_Dm2Dl&Mm3u>)7D*Mh9fiB;`MXl;Qv+-a{^arQDPY@lgrGK|6?Mg2lg_xz zzh#quzKmM^j(4_F;NmNksjK_Nizy~Ym+Q|Va%HdTOEq+b zQLi+=_3BGVE4|+iF*%=SojDk%UNvn_x0LKc=KS3Vn7BGlbG+v)8>S=>1Y8^er#X9@ zW+L?hKGsRwiJg^{+*Yj`GBU3em$(1R{}13u6IBxk`Q*`Kb_qqH0ZHd(jySWxVHKhj zU@Hhf({6!HmQV!~Lx*_yUwh_5vW)~>9qM8}{Es$t;eqzBx{!IY2-QeTWx;nD9B*-c zO-{c>ge$_uA|CMP5Bg5<^2~pqHEqKPos(Y`pbr_itc8PYycV*x?gm)N z#CBIlr5S*2>n~6FYG10i*r)5CzU;)s8fpq*&d2y}`~ecHhh(6{TW0~7CjQnxeop^S zvQCjLgATj_sj%+y83IKe!KNlAU4LAU?wuWQ@bGdfE63eMMI9cj(I*r;jc_nfTm|G& zkeiYwx4^&h^TpT5*iFMxU+K^_jX&oye+9tBJjakNCzlQy{K+norZc@eAGcK5s?v00 z`dylZ593{L2ktE1NNlJ!bQk3hRi(IOcXA{WPTK%R!VKalxc_W5?CYnZ5Q0eyfCP`t zPdexj15b;1<$bka#y8GxF-he!gW)gukC+Tk-dAtv)cUrKsiS4*y5Rx!w9H%vDTPvr z*y<_=*qoSfTy83}q^_5YWND&Zg>F_LF@>30I_MRQ(f%~$~FU)2tPqt`It znFo#ucpa%69Ua42|M^(cbK7nW4^Ihe8*MuwqF{hkY^TP(F6hGW*w{b?W$VOdnwP(B zMOl5;HsNtITS)B9$qWP3s(?*V3(bjL*+IpX@P$5o8a@iTej~2$t40WTyhdL>;MDGxg%888kVu^?6of7NXr8=VpavG^YKz#&_{aglKxi#^Ie#b-<*0 z&57M*oo>c@@`$fAKgQ(`gaZ(!O)P!jP<&B}3Bh&hG76|&uQ*qIA}}*e6{{ZerNiKYP(^tQ4sro z-nd%|rDMDEgWc2I@!{7T-{>B;m(wIf)ggGR?1Y7}2MxSEwi@ z2b+K1`ZwEUC

Wp4aO-oWKaGOL7AswtIOEI00w61Hj?e`NO`7LQO`L`7f%KdavhS z)`qgP>3Rfc0FWW8%RcR|Uya0GjoBEfw$lh_A0?qV2n3>IWaJ>lP$Cv466L@?(-0H& zCy7$=mvQrplEE4x@Iz?e7k3ozj1V{Sy_A_ut67j``}(x`bGjsoi$m7 zK)}cZfZS~v`=Iec9F*`MIjUhkx^@Ho8aT6v>LR5eJaJF^Z?HNf8i@%W9p?p-Z@}7J zx*DiSsIUxJNYn#v+q|(Mlmt9voSsTK`9I%AO<8vX8^ba?8$wCn?v`H!$+uJ7?aguw zO&~OP=4B+(q}?ephDqEVgT=Eg+l|BPwHyGLW6rb<(4D^?@m?g;>JXr5o`<*T{O1LH zc?%2qsoqj9@YiLr0JwjW=%(%+(Qhm8UXInH+c6eY>na4VyYPSoH@fp4pF} ze8OZ=ySXCsXnN~t=1(tni>~hnIp!gu1EjBotmX=#KzWpUFQQ`S2+@N+jbkUt^DXf%@p{DBiDlh<1?I* z&tBt*Y5D>s0e^l#uw3Xs00vjd=wR}RqyEQG9fTjHh$7_VSt-$9BI8Zt-YTcb(sohB zu{JGBM$^hg45=IeZHb(LeHqDJ+UEIxYhEwe40#!lA^FgivfC?<&=_kmmVHZZ6i9`8 z$x~%q;Q{C1PL~5)65`lN>kuk)s^kw|gsGKdQ>Fa_*qAJX>O+-vL$4i+!PVA?uWzSa zCG~`>k+Z`hUO;>QT-m<$Zaoy*ZWrRmoTO-EIP=xgZS^SBeOuqip%Q)(QVkm_$bX+o z3pXao=Y8>2>_{iD4I)%#0jv^0d?<1LCKkcKOSdRrLJ`T$y|S6(I_^L zoK5Ns^*H60v9)MDWpTYf6xsi^3;^F6>ll`>c!!$8ESpAP^-9f(WD=K%C3?#=^j3Qr z^C3=3nnoI5wrb40#XiJl4T1rNr3SDzwbJs?7L8KSRK&d z9Z`lqk!RFwfm%ZIilE(U<*D+4A=Pe%gd0dJp1QJBkSagu-%Xw{4cHtVO{ zDf%uPR=&_GUUbn2G;WX1R|8_Xbdx?T7+E$Ksv+_3tl!MBS0z82Ejb72$@wkgby@+A z0NN|k9z2?(fE6p_Z~6Z8Tg_(dG-DJO(Q1Fdz&3pWYv@YqqcZIjCWQ7MdHdfW3LmoG zpIUj`?&4nL!KEfxi#jGyOYD^DwlVROq0(S%;ni>m-kkoxoz9td8}jqLgk>|Q46ASs zc7;$4?(?~LI;$#Ny+AEt)TxuflaJNeaMY~+jJ5s{dkMJnR64?kfRKV`H6x!X)v8$!hb9@Y=!;J<~JA#Wd;@li9~m zlDS+y2b*T3#1`dfTdpD#BKF!Xm7@}Xu>VW)4mP&*Z5)_*0`zxo1m=spJ<)r1pbn(8 z{PCFk1X5x1V=BVSS;*_^xQla6+eje$o0_(Ecz5?lfV&L>*NBLIf{IcV<(P-eIarYz>93vD-(3n-(WaX*T+#^>LLSXUfsF5jYFEL zZf+X=E%IPEKq#PYFRZIuvCE#1?yP=PrLGsk34w_K{s#+Otn)Hloy8Ggc!Ul8V_Wl2N2@(7>kx`x`C$slhSK8S zRzk6zN=3EJj6DZviV=S(5g?OKPeL~UDq2D1*@%5ZqyH6k%vpF;z8SixJhVW7jx(Se z$*GW;-oYOn-KRIA5OIGOX?W_@Qn}NF;(qB>a+XWw9zWMbImW-co`JBd?|q;qP-#eS ztKAAaG;79)+ODQ&VVF*6)C#5w;xbta!D^T%PbwGqb!KECZ#12^p zPLn|Vdu(LLIaYh=5;MFxw|`E;(1?%wW?k2M0cS&%V+Ob}%iqA1Er@8UvD5JV*+anv zMr_)T{_Y3=*%bUsk!4l6K?u@DQT!?`Fhoyo7y?dn>vc9-;3wciJ@^Sk)?G7ox*NrE z$r9kZJ$@{`*_d*_ts8N_^_oIoz80t_QyX(}OZRMkLo8er2BI$fkj!ZI6)-XVUGs%y z)Icm{0oIP{yFzM;13-8MTeU9FJCE}i|#tfn8q$Ep_~c2~YB;*jiNvfd|}%##)g z>4At^P1ZrvPx)ffLj+iuI--B`0Tg!54n6-PTR;-nTwYVy2`DtC8=ZoPPQOGVWG)7_ zsrKb^R8rv3JwZGL8l4esr~PvH9hN48stoQYYIblrw(Od-a{p|pE-4y?A2?w!qdq<% zwq90&8`-_M`c}2joa>qJ475VvL%~mp8v_lC+yQAg{PIK2FOucCK<8lZM1c<2j(M~2 zqmLtA%v%F>Lk>&b^UX&6S0p^s`m*CBg4$-;^G65UbyWK&&cLB&+Th;5%4pDk=_uUc zv6siycHT&U)cW#@+PC3E5@F3Q_x~gAExY1snl{i7EChG=Ai>>XfU{HyO5IsH&FaW?{E|vlvfj+WU&_o;pHau_ zXL){z_tuJ)_8nN_r5l}p#ZnB?N1NRP^hbzvG+k7}%3G{ssO<|-I z>sv0j!yV%LDkKTJ{%|F{?L&jo9>9oim<|N&!rf@9v)~mHm9+ICqcQ!a7DDNU$W4vG9Hnk>-;F6QWvi0O< z-TcHxkJ9nPrp{!rQRR@ygiLjR%1#J!J9Y}mq}h3R&!AuXVVl6!aF<(S8+Ro_sojZ? zOQ`)Lsx@lv`8rkVwsJyLcCb!Gx6GTdET#9oKm%Np;5mUjk0~$fd|FVdNoC()i2C-3 z0a$Ss+vKS_yL+RO`G?CO8$%Y8ii=ZbYG~V=u$&v@9ab*;G4e+!UH`_sKg-w2<@QFi zPm^sHT8nZ(A(WMtj&&cWiPC>=X@r902mZ(`cz~f`gfyN}IzrqmU=F3@w4o&cT{Y3< zw{Ou3*<5bjlzBq9E>g;rnU-ro7EF2*QQvd^InHw)Neyb#sDe-(jj(<0#}M7OTXs_e z0^A+f5EqZxsS6{@OYsOv+;RBzBF@LEAz9}1IK~qr!dNz{)ur?9QqBlz?A`=5bsq+ZiB;&sYp=dQeT!x%$)*hb zW3!^jWr?o7s_(Z+xWe~9n=giH{YoSyN89Vjc^4q7dSEj5EXd26!nksI$=uBs)gv~r(5Xt_jPxHq?4MhAj7 zYK=gs*#pNhV*#KhL_!0A0s4d&&o`ri zx)_twq%RlM+=jc9$L9ytsANy&$LCKs=Dq-DtITlOyDRgvA;uoJ^Bv6N^O)*HNj$BO`n&lE3U<6}2K_2s=s;gLIx&!s;N6?HH-HtZ@WQ zHDy`K9ZsE`y)3ngpM~3%RAStY1xwUM<7M+8hx@iu{?u*yD1T2|A->vyvW7jpPqQVC zVgq)UcZik{bnXd+g;v@VhK*YJ#pow1oACVeuBJofW3A)$cN&dFS7qwTJiIQ=HZ1PL zOL8~kk!55^Gn@o^eS#`HPEzaM0GTt6-;t{^G`_yqC)lsbzjxNnl?u)}3r5>Ax<1Vc z(kGk9*WksxI^zlqHdn!*g1dtQ<5d?J^~-!rZTrFk%k{T+bHdB#jy=0+flc=(jmb6! zG2nHo>Mi-z+wLN#(E_QF_9#>c7+&PF)yAMt8IpxNvfAzvAa$xi1fK}qt*PCnRMP(J z{19PIK)HN{ZL&`&9GSt7cx9*Qm*$9lPDsoFmweVec&Z=yyxgZ*7>&9=oECz;K`)kk zh$o)`o_Rj2QW@T7_R)=-+#tmMfTz$f9d-C8`!G*1{ao)sw`}qy_}-&LCtHJA{@F)R zonWZy-XY)SbK9A$sF+Psp41Pt1&9``@@iV23S24p`i7?D=`};}MA?;H8_dR){H&66 zQ&IjRQ`*NzU{B_Kl@|>U5q;b|pI-ai@>c%hW&ca%EK}TW_7(A$ud{<)H2s~&0*^8` zFU8(pbSs-&v@CTGYts0&o`N zU~6N$A8B>pe##=Q{L~TlVd-@N`F&q&V#0GF6S`mY``_3x)gmj~@(khl~4%$))XO8@d+V867{0 zF8{3m8Go?E$#gS$2!z^9%G@tyGWGxiSPwM2tL&2*ud6-E)%0j?8E-p3_>H|-Q>3D&N{- ztIOFauRNl?nynEq09iwIG=u_+)hGIf`>Kt0MXNKBV;{brN7!w|Bvo@8oq1b1FO{n; za2t(2f;3xm1BFSCbYPwAk2#5xTvW2}07=FZDTw@MvRaT-W8~`IumOYAq7+Iq_1n&0 z+Zha*n7&Kl9m5b3P}w2hR;O8}ZAnXEH{NvESrul(5#Hsg%c46i=H0Nl%Px_-&jVW4 zvrOBhyIb+B>n5r1Il@Pcsy>yw7vwz!H`k{t?W?CD2tN{|d7l}=kBomXr#zpi(`?*3 zG4JA^MN{H`a@{PP?Pk0(?>ki-s?(_;{`Ly{e~DX#Sf^#;cploBzF?h=pIeKW78B^D z-N};kf0S-sa?g)1*GzeBE!MQ#k1_*5F%^BN;Ewl=FQ=W*Iqz3U z^~22o{C;r;db!b`kIyF!#{0rF=C^M9<6CA@mNu#ew~wACSM5qoCV!gYz4e&f58=k( zVP4k;Yj;GcQ@=;MiGYN;A%`puqOFLOHtK6`G1ps^{y#N-m)CZ*l4Nr}x!lGCdO23& z5T86q_;5iOx`dE428ic)XsA>}RmScC34v|`=&f#^hrE4Y@|148*uJ$Yv*=VxKBC0` zvK504`zN&Vo+xcNc`QBw`$X!^I6^f?mX9Zs_2OAL(UyK7*<8QxqQ&ZbIasZhP2mdH z7{t!JS^A*gUhg2e5nwdw5s9pK#h*n_nJmHGx%lp-v;RN?1YWg3fMAi$~l5qDO@p zuUh4|zTkO1Q!&M)jS(mIkqUk)yYGC9+1l5Liy_QembYN1>cpth?g<;J+IKZf5%D1{ z23c?%CtsA>+`U{{bV&e++Y^{$yj^G2S5x$p#{5NFMlS956O2c7o}~as(ambkzoO;{`k{T zJ7w)wWHEU)2q(}vSvqk+2%!oyvUH{kL^OD;qr7j>hpG1Y0PyuH)qiE&&<-i?ERHrh z;{PHLL3=-ec%LHZp?Nb`w0IeLnC1KJa}fkvrmRQUgzQJ**3{C8R^M$^4|QSMbUzP! zJn9_>8J-HaKjud*BG8<5`ozxlP!N0@la_`wZiR#+2>+(rsh45S@0i}_D`g-A{*7I& z&>f#UYH{k9mkbzK5?)A~)G@tK_w`Vd{$-bwmLFYMLO5r7>V?G*W5<#vw0Y1{@q(X5 zJ0V_Lf(j8|T}X={$JD=qNL0{TYjVW7ooagi+m2QZ2O-{h6`F4Mp5oN@-au_tlv8bzl-JXIH>dl8Fax3V+?Qg` z*h^#cbMJ`oY_@DFhB;iE49d>asP z;SiuNH;jM0Ba_bv7ku4W)BDi+(XiYGDEpZS{ufAz$<<#54S46=zODm4a_?BX4GD3< zZ|UC}q_R5S5pp?sc|@)G^E3Ju8vOwEBlsGV zdlH$&HfR|IEBDwpe3s&h$fdT~KQuu5_=322e(<9C$lj9INCb+i-8Y#-EsZ8MBUjnX{Rj_@w``t-Xx8Din+N@v0JC@d@al z?XKkhRB(znYM~?l8Fjl*P=%3qs`Eq})x|fnfsfGPDD?*ya=8fiLF3VxbLQdMJ}A7m zu)Kz+4y()EnA29royJz@k%jBI6OTswY5#D7Lo87$#T`kz_8t*I7;BbetYrit0|MW{ z?1P^v?R28lRN5CW>p~ocj1R4>I7wa#A2XTuRKn~AUVQ~(`K71 zA7Z&7jI!IIM9F^`e9gL>$|07#^|GINioL2hY4TU7T=-QLL&2+^CF3=&^M`whD7%WC|L)bHY25s-R1K`hR*pF*=AdWLtR`3)=BZn13@*tf)xk5D- z*3#@{H3QAM5=_L~#sCW(t5;*+o^Mi)FZ!PLa;LPTGns9>e*sgnPMK>U3W+W@Ww&}N z^OxvHOr&sqKG$2-^~R^WMrXECN)PT1PoiH&a$93V+-Ac+%6*IJ0QyIijlIFYZgJ_O zp)0W>i84-KDob0`B%Sbd22rT^Qf~b`&(CLLETkviIl#Jvw>}y77=#< z*{RR6u%cF(Zh+%+yqLIH_bBcCn~?d$Cd*j2{j9JMIAzEQI1$9YFR*_pIO%lo^}^99 zpt=~|_P})N>to56@dCdyZ5L}g_u0P9LNzG!vd+NpGP+7$9lfYBnfNG=k{JQG)p-!% zwx?^~q$wYWvV8~lMki~;v|Qz4+C4OH?Owlk}H;Ztm-a?2)0E>M3G1wSuBnt5N%b751?52Zuq zs)5TO74&Hhg&FHL^hHVS>}4O+&=Qxla+lG82?aUYdob5dOf#<0+D#mnEU8UTE1Tg# zzx!#xpN90(P>y#V)uRH}7=o{qy{uRRQoxmqCaRCGZO{_{GPlnvS)OL(UHdJnCbdrm_FCuA$lE=7D#bjBBUWT;j+!^*+H(?u8pPtI; z4#Gt$iM7t<ixAQa&WsWY?QCe>I1r@3aRsRb~gPp9mMJs}%&*9TGWQx^v>k@o~bjmNo=%1(W!cghlWt z1czE;wKu_foDW8Zn4Ih&n6R4tqSG_~{Gbte(qD>KXQ*?U6J_`A+3MpJZ^B?Qw+J|H zmuTt7m^PIkU0ixcr94@S5nSLpzxL~fKezQ&P9D-&8yITLQx8OG(LL4HYgjW5EDOJI zm8e=56;{xzf)ra}=Wa!Uv^#pHhYftt~cLVVb z-g%)cuq{^w-W_=Ez}LccmJ5lNp9Zhy6c47$Hf>2 zbt}^?fPBg^ffRpG;GdSHmq?x7^`+8^@z6qHVca+&1tAb}gQsEuc7X%Tq9^aJd;}RC zD#t{S2d^QW=wd3XfTo5e>E)=LynS*VT;m z-X-T~9+!54U~;cSC|EltvDIJBrpF$8Gl8b21aRbBp0Q34b6sHxaOA=sg?e@pTSmr! z7P=ENa+DkCdKVb|vHM}IG_-C9aHMV0WBiHqqVGDScc--{jl<<3GHk#rsfjUsq4O^P zvf;*2@VZ}KP?!>5LT=!h9B!v*qNm=Rz22(g#Fv_!NxjM+7(K9h0bTDbbT^jhj2n9k zU%opy*)zjTK>CfsGP>RL*ixOC`)VhZaVe2(4Pn^2^sZnTK@B>+thcf*q)i>9gBnn* zE|^Z&klzW;=bZ7*L^`%OpZOtrv?55ny4DacB32do*DK3&%|}~GZ#49lt3z%n22%d% zac_UN#K?m*ZPB)5>WfWt-vX&=vK4WEbeuQNdQ7!f=8MD&zBgZ>5cF}+7do=SLytiI ze36Rbh+!ekR&8b#_n>Dt=I+X=zP=G?w|&3v|2YPw_hFKIxV2KEDgo8jN=dElWl|Lh z1RQ@xyV&{oNdji`e9yFBumfqbLo3qAp**&h;iLaO+ylJMrm#%PR_I%Z^~ObjgK@dG zJchb8v)E?;z+&R3QKOm!?XVVYZioHvfsd8}N3_dX{zNzG-m0nF+XCM?NC?PJ*TCcp z%9+Y3!l_xmpqObQB{t)TrSyx0M6x311iviiN7TBAG6eH|IODQNJL1vq_!yQi>kgEQ z-%+aGI^Rsw{OlphI8o%(U%CzQ%dIVSHyUIyRN%uo^w`tSrY)$D5h+L>=Y?1TEE((= z^aLuvbO>nrGt#v72%sf+75-j9R^(Ac`fZJ?Lh&J{b)JWlDC~1-Xa^{xjwhiAC5B8^ zKHe(89y+qRT!0Ll|7om0II!09hlKJ1skBwx@X5BpM%Px=iMH{{?X#!#$EPtYEhL`*L0tlbraM2s!ZMOjr zNAc_4YNlJ?IwC?t8S>7P)@YD%um-l2q`5>iuHFsMoLhMh>G3_QT*Dh6&ACB zx}vj;k4a!p}|Dgm`93l)C7h*W^WFpw5;=J(d}zuS(&G;`i-3v=eQ?%3W_ zXQmj$5Mr!&j3=DPxa;R05V|)sc*jK;5PK`^Te0M$k|}|#v8~3Jq%T)oMDy=d2g{ht z1=)f7QmZ(PLeweM-uqYiZWg>3O}?0tV4Eb{y;oJd7{Xc~eWWvWP?z{*Pq9;+Ez9<=#WVY(&I84Ke=0^)vMK+Q>-B_wnLmBb z`_td!VuW*pT4uIO6psst5&VllJrC}rKfGns@Pr?E5&~hr*4$Sq3UCo4RK_X>zW_5_^pu6-h^JaZ?rBGnrRjKF2E~V+KaqOe(-vAKg=1Wj|uG3k2d)9L?)lFqY zhw4JIY{pg9PJ`nwQQXb#a@3XgyPn?LpMTe|S!_Wh;qjdomD%2dbN5j1>wCGRNtmj%k0oZ(l%Qtw9%4p9J*bTrfg^#`)Aa zm-^fUe?9-0R~m>A68*Tj##}YKSG-rg2kE-@?=i>1+^r7^flDU{6{yJOB@yo-w;&$w z{!y$p!dL!nmuqK~b~`R#`zwW`4bnZwY;nj-TqnEclWj~{US&e=M{Way;PY4$Jdari zcenPELKWexr{EXAl9d?4oiF(7xwq%pNW5hbmC(3Sx>C7PyZVo6P*7N^VWt?TsQ;?6 zy%Nr75ko_7;ezw}d5|#zZQ#9u4E*?P`9rYmu>n!-jK`-H8if@6qi@K|u+?zAzihej zMbfKbPb!RCHh#jhxokr2pF7mTc+Wk99Oo|ocQUQ5?gn!kH(&guWJvNw%mz|@QBKi& z1li0SY5C5zli_-{Os~$%YRGw-7&f1z!_ zMLzMctX`y+?_w|}bg|KIT0221^cFVADs3K=%HRL0A%p3x$ohr<-~VTpfMV_6@ii0jg*sC`mh5$5VQHQa<94|0rT5aqdf^LXN zTAm1HNp32W=aX*c&Q~1hmZU-U(R3FN~K+T34cSdv2F|Ol&CK@_wF_YNbmnPT|V@sXs0`t}w1K zZonuB5u~P@7E118b<>oij>=xr(oyi>On|;8;NO<|?*}J5L~`vPD{#X{`TmF`@jrV{ zP&S*x@_DLRsMYDU!en%9`bVhQo;z0u8{j6W8xN6W%j2SL0#WoyQtai6N_qB!j$~|? zz2=_hyg>ix$ed$!XoQdZ*$ts$-d!VH!i${9e{2HeQ?A=jfwI(3cGp9pvR+QDp#^4s zfX>a!UuIwMbG?M;xD>hVlLhnFpP0ME^$v|uKSR>fTO%j$M+c^)Ns3gj-xyXv7wzgiFT2Xw3C=|?spO^_oJ#Lowh$FphsLC1!l(`(V zl7VH?%)6BWEm>KacWk1&Uyk8Swpq!Xo5#2-K8TjT#5P{oMjDua!RL}kkLbfE_Np@^ z;!?$IFe?$&rG}F~+iL6Ih2Ad#HHD5Mg?{|+B@c5#K!DVlZA!h}iKg?RJNm*yCaAM% z7LY^a4OF$<*t@tcnV%^G-<5#ROE?<;_1q+9DN{@K=p9~@7Tca~{1In*6Z!eMUkzrG zb^%9D0)-lnaCU+Q5xSSX+pE_VU2yWA}SHuSeM$^=Zizg6vQ3h zhokXd5F)80JdpMvC7oqq+}{&RiW%VFnxXD2z4J z6N~0t|LjERp-_X>vlp7lUX9)bq&&z!Bhlm9O8zdnx^zS8X}4baE|0r&w;omLkexRB z+GSVo0a9MmLcP`fa^3g0R^@+2oRx8RF}kW@QGiAR&R8wpauXK2?=vTkU_HDH=>rnN zw87@B57qeR3p_9Ls`(H5bhZr|(*5G6xs?~PU8t}umExpK_KK5gLRXuyC zbE9R`?<{v<%*j{o)4pePE-3Vk{8R^p(t;K!yZwcxw#=Ryw6t4evdE3&fX#^KfG>uN z8mY&qc&M(TEkZ>*ip)Es9MerDr`ssoXM~D@h^govXg$Q^793}|XpghZEK8WQ!>0iP z>B>UWO+*30;3`qX+tqS-pktgn;eRP85Ha8RiFa=CNv1T@cAdIXH9GJ8mxZV7>96;z zQ*{_?-m(XqYK2KKmzNbHvA$HcU<2jie-s(g5{IJd*i{{otkgmDF-yb^e6{S}K-ADa zL0n~TL26#^N`Dk>4H5zoTBL`Nfr>n~b6WVCR>9s4jg&o2SQIe&!@P?F0y&GMyh&fg z-t5pZC=e%`5?>D^Gl9?V!1;IthG)z(Kg7g8AgkLD2Ah275?{t``(vNx5xZm&2*dZ7 z-)gw6jeQa)+Fyrc#LWgNsr%ni6#T)k@0XAlqEeXkDwki*4DztP^aU=WhWuHON<}tnjNW9{MQlXzeWRv!wZwvbE^D z-p5tKBd(`0s0<1f=r)}%2o&x9&tASI@5QM?)IMjK;CTw7VN?ih&Judi)u=2X4}$%= z(IwIIibUbDKpO86K<9@AZu81&ljxg4&ohXjBo0XaxIm-nbbro5h&S}#p^FUJJaT@p zdbgI(@Ph8QRB61l7Lm=8^qVzzQ38g;gZYp3}b?b0(CW81y#X4gwkdOZ{Z@A>DT zG`gg9rzmOjfu##~-ny$)K0nxs%Ij0+*Xkmb+46^yhth|#hw|N$-O^osY$5T~w{F%B z%O*kxO;X)_N#5Rqq^>61@G()#&z^7kt1r5NDo_cr{^Be-+>s%`?t3aUJTC%mhM{Vh zt(iFb6~L+LjD1A z%?pEh7JwrYN|0zPXcLQUapWoCxL6y{}!I+`9&XV%;hC8|y68%xh$^zIQ zTBMU54!(Wz{XB~*=pXyDqlqAwvQwO_y@u&Y0xM${o*tyn@(TRGr4RF?FWT_C%B_1g z#Tcm5tiNpSzmgX^%n8}sVTh5{nyXf{0)vPo{~D~R`P{vK!A;;zhGc(0SwY0QP6WXn zKJ`;81PAFyK8zAetqZ`ERtFh98-$Q)z}n_@iUr1G5n&$`f89x34cymHat1#cpyc62 zlRx9+9Ju3RZPAL@O@%~kcGCDooY8iD5JMG$I}X1@;@&lpUc}EKgJJb03V^L1@#5YH z_81)`JIhC5(Y-@X7SsG88KrT>NU47Me|Bl6P>9akyFqeuCa70A&v|SiM32tO?JXZ^ zD=$91?(SoGt8LZU!fkOIf*YHx%`EI?9+3LWSNLkW)dJMIF-avGQ1xE*-d{)!RMRSh zgbA%Kc*7sMCWU{;#E|dkq899~``rM&wq~2qWd1aoJkTB=9ZXPCSdvnB`?U*5-*vjE z*@N&19LH9d?mmfB;Ot>~$(Hk>#PjJU(U$GL50)S6DYAe^UqWO#i+k9+mFUdHQla+s ztL$12iH-K0q2>)39(nlX_5XUPsv(}n5<^k{S)(lA!n-^ck-WR+uGvZeLsskHp3)c8iN3HM|4GxX+ z=d~_ZQrlyBOOl@veglv4h&eMx^lEr&9RL1ET;Zl9>IzZteIB7G z;_N)}%r=wx`)LHkF?1P}u`2fg*kLkBHGOeTcFPMjQm_1O#Pw=y9+y$P|`{sT$~Ui;kMxI_rz{Uv;yDZ${OlVU%cr-V43wkLX3$j1k2K`2>j+5~EdQxNU`8()At z%fBNbguv{<7&u&$=Tpi0hf*UtjR4tV zm7hpr1TC8hs%J{CyB-dGWSd`r*I>1(;(w}){wFMj2Q9={0@-ojw`PhCyA(IX3zZd2 zh`M1LE_Z~m9Mixbas2x)j@kqTy(e=apzFVJqrVeT>VwR{2!iIOTKdGVQE7+P0wP#h z>(NxsUg7G7y!8IHr~eC_|6ejQ0fdnAKkG-4#})nm^Y^ndI4|2CTh$&F@P7z$f9IE1 z)LaIY&CL29`v4*=|7R$v=-$w+b@sjc8*TjG`1z*{-plsHp?Doq*8YD(&H)51gv-bN zpCUN_T$v-%5Zp95x-`)}agSL4U$#HwVw4Ny_n<5&o{bxGPtyN$TXfEOHPn0B{Wig2 z<^RJ3gScrs7*N>}#36qw-rk^B1+K~ecXJ35V`#d__HvO1chb$Hwkd(%w_;J{T!ooJ z+}o0u@c*xhqEkv7c-x4nv9e+Ak?pU8G(CL%grFtX;PLO+vr(b3EB>RvhxqJyinl%p!)3AMPt_vOYr@=9o2x z=2X4L8b-S@w|uos;p30PUYA_Ol&9mFiyrkD)DMU+KvaqTd+F2*d)jB4^|le2EI+OE zn=EZp{u}(rbIEUHT#jE(PfaC9ieUa7*{#o9oBCyg-qbknqkVY+SD{@8%M1IfD)Si) zofTx+mS*Vnx*xhCgfz;{BoTPiSntY(OHa)#`fW$q3k{%4N^7cvXRzTHr2{B!U>p?W zgPt8i@{0jAem{CNQ2)HbhEo^or#F9`!%n;yJO{G67{vWW0%wPWoE`k&pww^|Bk_H{ zc6yyB4L;ec9f$rkBPb(*dg&$of{^!j0`ZC`JpfE^kI^+f-wp3_Qj#lJEQI5`L@p8 zr7*mNdU!nanA6drUP;n3q@jl_@zago7906nmg?5!BLFwZ7p1e}`3sJ+Mn|yqDPJ+` zP)oz(0xWh&Y{xg^`P~!Y9<3x)q@hHQi&UYqTmNtIE?NzL%uLH%Y%ebsyIbeVUoA4% z)Tz>UTPZ!d*3HLToS+&qa7K#fIQM^=ezMyLd1h;gRvenWZ%GBL>{2N2BTl5E<+*t8B1Y5?5OSNP|DK?;D1XUo2zUT>3oIg|jWU#8RZx z+(f6ZT~DZQV^Dc9Ox#8eEuFDn3qe%X@>iLNDIndi&|t2kV4(!@W(b$^#{OMVKeNQ| z-ZZ@ZxQIfBTFnjlDrD%8$bsu88eLloxO~wI{ZGv40i~1sc?Dk;z86k#H2f4kUzpXh zeWYQOkvt3Q44s=5yJPQZ=ER>ZqNZq*QqU%SAO=DIf#vrF8dtlQALG}4yQNIz! zy(pD(MG5ZmHyP!R5VHGN-)t7LAR=Z>8GgtP-Ul_tz5rUmO6_qRxZ9Y&6ixS= z?BeN`Q0E!?tGW0!C3#V@Q&S?jCxT60dj~Xm`H6^yv~6zOl*=91P#HEl@$P88buXH5 zVA%NP*LhNy&!x~jq5k3>yrwqxb44Nyh9RHIn90qPLuh`pSaN%kXCd7{NSFdk!TtI6 ziL8#gnw6ZHlSCz<5%erL3E;z{virSpaN+|#Y00OWVC@WGX_@E3kEp4VY!Enp6^~Cj z9I>Pqx1At?xxEfBa)bMoo+u6r+F5c*AAKluTFDrO<+Qi8yeG2$wwxKRag z4P1BO(i8pIWMt86xx?4|LjReER^$Ecgu~Xsf|9~q>|?TnE9(4YT8y~PU9Mz5QAOf5 z=k1IW{luuypY&jRc&C*v4xBsRuXtr2-yPsgR*DdEr9zRj+XMHm5 zM`_JClaRE#NTC4ss4~#SJygU!ln7%>d;)ahSp*|UX%R;#rgJCBIL5PBEur9%Kq`J( zYXuX`_hSeZQBck#Gl?ESy+k)pfK|dW`tcZsv;A6B6 zsQ()}wSlu@-UW%lBP(N;{o1LOa-t%F5?Ns-)rRW9pkl|Dn`w|~MCahh(pJc9IV~`o z;S~mzQ7^>3{Mdc=iS2nwSB%*Q`KoWX;?R^Yr0i>4mj`EZ)rfd!BjIwF4>z^kmsR1V z4dr71*Quj1{vJjnJnO(7Sdm$(zreX$g3^GAgZd*KujOsW$(_Z}bysKpC& zH8~EV<@*y7J3O5N`JsWIhj;lkyyV))?Ez z%e!}-Cg>JUkSe4P@A7svJ%HwzUnkL(5}I|pC0lmZ(am2>9QY1MOHLZlaQWBsV#q1- zw9CrsH|1T-sF?KHX`xkf$7Qse2#N+vIp(t5$ytn1^w(=Xss!`6t32hbelbB4v8@Qa zC>%(|7KEY%1K+V;E%Xl0+%AhsGsY@5;y%cEA8k|vC<+>!o>2JJ`tZ>j?GasVGQ!Zj zr5MZl$1?^r4Y=^aN~Kd*OFYkQuqoWE$fwNTQyc;PSl!V{bm4JFkijQg%t6Q{0Ni|fi z$zZSHvVRn~sTaCP!p4bWVfwsfq@u^k{%%@o^&Ur=q<$P;Cay~%n%AHjF2)~jp>UDN z>m%{1UX?;TtKB8EwmzGWD+U|tTooLnY5(_oBI%(r4U}A6J-5=C57pM)gpT^zJ_>#4 zMCMHqg2?g^Yo^BF5qf=dtQvZAWo&=vjcI?k1EF3@zqOUfA$T}5Hg;jgC?0>wR<{2j zVe#P1DoL9uSNwx3?cylorzJ|eHlC-6<0_r$Ck1gS4ewM&8J1cg6&`e4wkv4X+n_g%q^k!O3{)~Z zfN%CVDh&-?u0Fb)^~@O(Vmzm`C?Q6`i+DgheoJ)^yYS1`^R~}0O zc*i?>Z36gO^zi*%a)q?x8Mh;aLSy0A-NGbTqqCD~*D^Y1{pmg2nyN9sk?p>*t3zzR zT-rfGyOqS9au(x#`HnV{3EL(d{-G0{sEc`z3O)%Eok)(2QYqi{#xm}U2b2e(|47{9 z2Jl$VUFtGEBSWD|(;}S@0`m%a9BeJeco$J-&zvh(kdeIID_&BxEqQ900K;sB4Oi6{ zsgKI6BIe9uzk5qR0L))+<&O4KWO@mDF=J~fKJGG)52QN88$_muTQI8`4~DDuuP-Ye zl-BNBTghe5uQ#$0tD@e^Ny#kvT>@|HaspFh)7Wt9ly8UeEU$JvIh<^8!jbaPiS;LC zh$o6LU$-$?-d>^3YmxD^=sDnH9N$`S289x8o|j-g{TBZs4m?R7_>%g41Cu#x$Mpx4@*sMNA-7;?@bH~*mB~)wK#4x zss?LT=wioANr1%d018#&Z$5*qu`t$p%h!GiBTv%zpgR6~J89k5Xw5>Rg<3~l4T^&K zjVlBsXe3ALH6?J9RmPg_Zq#Du?ctE@G?{F4^Ry*ls^ay7{0`P|!=#_IJGlk5h-I1G zOc&v`k7gw}e7AVea5;UA)pyNO*7eW8%i~qYW7nyPZ+ZgdSa}uK(0l3 zQ8-H02YfMjexMki!-VVbg9Wh-y~{*e!=8Y#iW#Afo&k0{2Rv(ahSb8jfpX06j{w z(Zjrkw$?ie(r97lP$+TIZ)6Xc%t)Lkl4qxKyj4uw++GAB8|MysrPraVIK{76;c^{K%x|lO)v|Fk7$#zmh z@OE86m8B7JJVo4>MD23scq|CaZXWeXiB1%|5Kk2iu(i~5oL#-^ zDcv%}x#fkL1vgoeqy;36lwb4&2L}ksVY~Zca0&7wx~6_7A&X&EyyDyz)ipfetV5G9ff2N#mTFCL3=A6YUWz7#|Xc6`%dU# zKBG25+`+d*w9m_lp?KKtcy(yLF?A>c?k3-L>GY!!1IPi;5n1}d`@dvEWxo!rN(cZP zZda#IoMa7QzRmqM->x;4<7*V+#}PysdF=9#QlORpOBklcJ45JWDW^LY@%eP@CsJUh zH$h5(6DV~oP+f$t+N2scalu7n2_$erX{3GQ!LF-+H>hgu-pJaM6$~p8-9dDsBmhT# z*#q^ZM}DVNc|`4LH=_kM1b(7tbmSs_vgGPemBGV-6C>cx@UYhzE4A1e;l`%CJ4~jQ zv(B|f5`lyp%BVzaV&A2_rjQGQ0n)7_Jy1* z7T2DB8vLjjwePRi59( zeQ@U9sJS~Y2SQH^3lVs%Vham2O}hVFmhl7rY$4!jZUQZQFM~pLYhJ>z0Q%l8MPS_-xXR zN74o&qx|SOf(r7y+Gt&-0*$F`%-BmLjhr#<11zbNi@SpKz}7vt*M+Gku(C*w(bbjp^3_D4~MY9$vDqBph?KQ#6zsF@I2CI**? zDtr?>An97G?xm>*pu5XL}4T0d&_EtlXdwZjm#EZbU**?F~+2 zmGqbEFU(lpH2hwq0LI~+@4OSX+~%{KE^QBy1QFj2c-7s&)elo14>aHrJF2?%PT8kD z@o|BDv+p259Gms`+ggmJn4`qeAr)8cKfgJzy=!G($tXc~d?aE}?RHZBgOkxk33VvV z`k@hJ;{RdqEra6xwsl|JC4>ZmdvKS=H35PXXx!Zi?iMt`-61$M?oLApZo%DxyVGcM zJO8!z+3VCk=i{yW z4PKdO7MnmtaO9@=GpovuPjtzh{VLY9g>;s<*lX`_#IJwOE@U(!x7STwdcu?+6lvkW4(Cdx&9l@j{ll<~4DzF&pfTpJg*2;NDl(`q6;j`G}?X zxt|+_Ecm(__(X#3NSt>ZIsC41);N%jSM;0cs$eo3nyaRoO5KjI+vu-S3=Fry0k~H` z`m4c->NgsR6y0Bs+bEI%*+5ikJ2_odd8bw3FBDN{nMM&Em{KGpJf%$1%Vs}Y z=ry)N7lRK|xCB}e<;`<-8&-=27nrn9l@{5seUC;KPuzE!9jWR7r}4<)CeZrGc#~DwZ z7LD~@JKv;I*kp->JV`lYV7IOrGiq2S+Zl#ks75xz!N%^Kd@RnQl0scJ$i!E*-L!{| zLsRv^Ck@*-qJ-RFZKvllXTCMxj3%Z0GIP#+uIfWr)LGg2rpz4WL;r$T<}#!IJ8vJj zFSKOk1_B|@%i__XR3R4aK z9|5(okxQyWsHb9(c|4u84(ARVfzc+ z=hUK~RzBR{<=#BGyw!O7?$zx=NXC>zv|#}K&2gkZ2bJX(-y5wn8dy!S73hDo@dc|A zxb$5oD$(o5eKWiClJpI_J@Z>>v+^J35m24Byo*MN->lU-)TSceF^(Sdd&?pephU)A z^4g0LU8`nVZ$9A9JJg;5*p52Y7jk?eWZT)N+u((`#^Gh!A3Jt)D5MutzlTHrHyosk zu7xQG_#=knaO@!?w+^zzLBEL&Y^&y>HCj`XXBU$73OHAQrbJn`v;;bN^&H6wE!#I~ig84)j%7q8D!y({9D;$~g*S*n+rm zYJ}=Ro>Vi^WqJ70WSGG0vkWA}4G4k#{L zaUP3`Mta0QH4;!~yRQ7k-Vc+6Y90>4_q;4f00rQP<0k6S_?g{&4J8dvueJ*w0${{9 zANEF+&U&p}kF@l8Lx4^JaFN$|c#993PQ86M?AZbZ9s&cMF00KU#YmUd`St#Ho2W=A zO+RNnV6%Fwu+RR?WQ+B-NX)rO-~H(qE!lbRiD}?-1}Et05p?hyTzj3aSv%s0pz%IN zDligUtf#I%bG^QWN@K9#4+pfI*qq6mFnaoB<xLQXLAgeSGV}eNiC#V0|I3?7RvUEV(Zapa|nj-gOU;r=9 z^B#rP16W9f-xDXnB)q3&oLRmLtrYsEEE5|17l<_?+skdVL4a=Z;ETt5(S3)<$LnrZ#BKhS z7Q6$BT=C{{at5(;ib5#oTcQ#N$v=j>)D7r;lo@Vz4J1mtL6^(x`;C~^B=zSK{>Z{B zO|5;1^SxYoYc0VSto{x{*(MCmEl{PxLGZe_t&UNqBoBef%`wR9`KMX`B7^_enUG-Losj zlS2Sn^UYNFvhg?sh1y$(;ShV1zjJH|Zx^VUS>TeG2&UQC#h1FPM&TJ?$JurGfdA-aD01|A0gTzT^u%Yd+Jk_u8?_x0 zCtQMd<~Z72PC=MgUjlE5A=cY3CKj3WRF!rajvR4VU@53*KsY&LO;TIw>wxxi(W5@@ z_7;_YcPDau2Q{wVhA3yztLoN`Mjvl%tmM)#BbF{VOKLDKs2k7(ZeP)ShqAT1hEg(} zE+6zvIt_IuE+EY=Y4G`;=vK8Z@_;3d>*kn{96B*^N3~%>6;)mNtK+(QXKDU{_{YJB zc(dq!N^U42wCD^x(8WU${@7tl5w1AHcQ#O+qZz3MXefX1Rvf1I+j--ICRSJ3h=?79 zF9rlhN0f?WcFjXkw<>|zDu#@1IWn=mssZHp0?&C4E!`SlQV4t%!@ zj>|j~zYbR8^hz4LWg7q4A)`s7dFEy|>|74$E8p%9c(j!r84a!d@s17@5!e*p};@x!t`#+zLzgO>_bbw5@?UiJfGKFfd ztmqUty1@{mD4%m?RoaSwX+S=@R)T**JopCYOtLnSV9+wZwqPgpyifr!hJn*NlS zWh3(@rg^ld+u;!xE}Q}GrCVpFSu0`4oI``0QPRWxNFht=j~eoeRA$w>;SI63R4;{1 zTxjI{Sd(h7?&gVOwe9hPVX;G&rO83`Z2-l|ncf8#7v?r#GNue;<|tQ9_g6|LD8hh+4wBK9^i}q{M$)#e!8# zr;&|mJnV>`9Oy)~G4fm)S0Y1}>+!xC6c);+%>uK19fvk9e^%5d1X_F_O`^OEfLyx~ zvrdJETOk62kHk8JqyXv@N89+Oc9n6kb61xe&u;$!&1f;LW93zuV6}W35l&TeMgyB- zR+H+oT)b`4XcBGVDbGtMw5NAl$CRyjWoSx7Q|Ick>{&}p0KUvkF3HehEmbaCq2yLz zrN_!~u}2f}UuRQ2nB{v_IAK~;&|6ji!dw&BE+rg@4--9vWQ2)aR zGfuxViO!K)5dOdo+n(q3ewl}U%3DFLv;44QnD#G~O@CJH{l6$0)%LC3-LQWUmzg+* zEz!vqc+$eS&f7LUT1dSH+7ZY_U=57d7ILmBvRE$^~~*)y)oH;Fj|Ku|KXbov+It&YB@-Cio7{3 z{{sy?^(JiXk|SL-41Dd{+btonUx-4s5`+D+7I_6lA-!inJ@e~8%{_ZYF!c8!4GZkr zpPVFPxPL`NgxX-Up+JYckm>Pi?-5Hfcbscu%G$Tt2X)PBJz~|Tt9z{)XXCL>9u4jA zTa1GZ{Li{5rIOmmY}|9FHBn!`VoV27OFPd+0&LcjE;rgX3@C8rOW(KD@vO=AtgW?0 z-Lp13IV0uHNaD+0Tro-x4wbWl^2*ZE2rz0qnJ`~ODXWpe#}8F8_er*!&z@TyIHE546o?}(4FW51jDKAnd1gQOpkw&s3|-^rD1 zwn1CCU0*%im*Vx^`HpCGK-}oCBmhHS()k84->#p0+}*`>dP z`rl-k9!#z_g8)+50bot4LN?~&j9YkpsZZO>XujMcbuq_Jh8_K8FAUe99{hcS5)y(X zsf=i}^dfMnMDqJA2R#CZf~t3Hx<9ImJbM`2clzYAw8DzzCqrqoU5VCuBh$kBTZ&?- zyDn61#Hl6*29CKl0^w(iy893W%Fd9-J8`oXvD7=TvJ8-uSW%Tk5R=}+(FY(W3FBm? zVUfNteqkYHAjcp*!F-~mzbzmuT-OXkl?7)OqSsC9v2XdvPfJa?CtA13(##Wxd8U^L z9I{6jGImW0pPA!pj|HrUY=A z9<)ivvH9Nu3SLau-Jtefdu3AfM{&MWm+=0DbXace*$udP4&jkF zGtD`7?31{B)`tW_y*2G`*xN5gVBB@ShPu8n+b7cpN!+z3%u-K0{%6gNnd#jhW8cC9 zO(7Y zt5}p%T*_1ke0w^ccH3M(XV7r1OYM4Tp762n{lU@xMWEgF#JZ<3?9G}0wymnz+p6nI zH0unY4p=6;Y{pIiSH?am>hCxv%3u5mnhI#f3Q*~vNU=Zn`28RN@Y*ptO?u0vQ*!@?{4`ej11@KQevMzAIa=dO`10RTI1WpQI*89adq_M!Bs_GD zSK;rAT<*0@Jd{*$KQVVCHW9w1!b^KY44V+t!8FT{>ia+=_@Hzr*omcIxf!jclnr~h zyo=97N<9QL-2Swz!G0)mH}HJoe@9gs>8Rh2`!?Lf(P-G%vyb~AHFz{2c7}~+Zj!^S zXdWOz6G)LPjm(6TiTHkoYh~MJ^hD752_E7wbsK!~MKfe=0oW!aKP^Fg;~mL!+qT+q z?a#X+wRG4UmLlCrXyFA=Sc0L{j=WtKX(mLLL=Hrj$^Bz(>j}~s8Jikghoc3ZpPOw! zWqi%*x&^q?rA{fXut7sO#gqNoMdiE((e+rP}l(j1wBiglNCnr(E$${m!gn+=6y z@&6kSR_*tLMZXMK=3wV%yvPItVE2@W0aPQ!hYf5vh~$;8&TDg0X;|^joh$^f?&2_w zy9aL05vCi@QI2guDC4_ugb+l+%fjbxX0o}5Td+Gw4lnt*FEXDLGgTVCeYn}?ZBzw< z0C7iw;LuJV`lAa1_pn*vjb?L4Z_8BEY^7Ca;3t}a3A#@EgJzg>rd)oRKk#dLs9aHe zWP;z)m?kk$D5$wXD4hi85k$~^!esxp0~lTC1mSFMbVxREWLZ6B8e~=^>AB+npWB&_ z$NLYOf$VLikLkmoN$qEeKUK{*!-7zi(;uu@wV%29Go%E6>9Glgd zhZoA|2i=+VLOF1mqflA?0oJYFqgk#7xU(tuB)P*iwbf=Y@&!fVg=eqYQWMTHCq>^R z=a{&j78fd@!UxX~4X3n*p0t8Mii;9+gB0U^v`%zH|IBsjSr`=??+Q*5_6btRq`klO zcHzwc2`U0BcRva^G@O0=n*~fZeud9iDv1ZnIJj13 z-@PKTt~TDPa=d{bb1F)KNq}6V+ZgtS5?w~uf2-n>&B6*#Ff}jJ53QST+pEiP(?{L+ zyxog?bT2u$NfU6xr+@&=O0&}KBfmU9NY4-PgP&_#Vn0H|~IlVIq~5N;f* zdik;rzY~jSJ}G{%>K(Z6{X@&4BIXt;CNy3CRWej#iX}CZ0q8BO_!2+5XPa*LEu+>8 z`uDnA`(UM9P1%4I;RW36@m%qo3zu!OcnOF3&GB!hUo5|9dS*S4=aPUW*8nA|I{}EN zWE4RpK%gCK&%w@uHZ0%Bzuo@>>HY-t`%Uuz2TMP)L0@YQrCiYSUCINwl@E);)zS0X z1Mv}qOhp1IU}N2Ni(V|bo;10j+Mgf+38GRK&eFv%a=Qf}9<#S$f3JwO?_cVLd51aN zdgziU9vS4mE ze&+Hqx((jt4nq8Yfulv2Pt?EVXEn#QIgvQyCfVc~0PavIg@sY3Eu%h0R0||a8 z^^0u_$7pMA2{r~n{Zd-HD^}nWYwNO^K*CySmlr!}Q7%An>TvazwhQaS(JDc-K4Blj zQT>{`A30KSRK=r5>L4F+Za!q;5GiDhX(WTj-cLme7AduEZM#7ybtgNhH@GR!-d#_p zG5!jx59{z{1%djw2Z+SKe|HskP(Eh5iRw~@8ypH!%A5c$m&;Afp%aIv+}PSLB$LzUJldDZc6%h;BzsOGPb-zJn48fXXDol(fL`t7vmxQ_ci)nqS0^oahXfUp z-8_daNM=fYF$~Dnt(o?^>k_{pSHzjBRK`9;TmFJiB)LzYN^lHvO9ZFC*0D+lKpJur>UD!`3No=v}-RSNInBPPq&YM*4@qmj)$A=94ph zR+tTK0))pc^Rv8FdZ02L247{rOZ7H&^=RP*0!opAMBW8?LwFa3?1}$ry@9E`KYzB zv;?2~l}vVQsT!iixEwy3CB;C&g_@}$&HF&Ll{}LasJszZ8__X&h-aZq~{p01z$N``Wx%{Lw z(R{}t1*}>(NC>sN`Q3tkWWt0>FtlD-jEIRj?%2V@L5lOueUH1mF(druYerYWhD$U;2QcJK`NTvDS2F z*lEFebrd}BH`FK}Wz9sI1t)R!)&f{Y(8$=2oKugPFAJ)DKHdfi?G&HS*RdZR5UV37 zB=`+cKI%+<*$}HEcXQ?t*}%7I_jiuk^JjX@YzQ8J3rMxj7QnR{Fbb`JU@aCW(7k;o z)QV@lNJ7W>h0Q^{|aJ=MmGMMH8N=OXE zT7>Gy5|`}wbg@K~UZb=_rV4`rE{F+Y)gQL;ZEMYGOuHH+ZKr0#2}=cs47uM<8&oG(i$a+kzL9 zWoayn23_Vvjm2(!*&^f0M>Ffouvr#7IIyx6Y`{3oSA9r>xdV`&2dOP9{hJ|A&3wXk zPBc7%FNw;e--tql0LAAd8d9n@DLIz%X-~=ZJB`QQ&N!mAR^nvj%OW1EJ6;=`EE z+#p;R+8Yn&X!?`nfRyJ6;nI}1T>h|sO7+r?Rfb~6y(eM#SX{3!J>+jR$JKq#5hvOs zT(OU6G)4S~d&Ii+o*iWu0>G^=VbGkaEPsS+u06_U$v`%HT*{S3j@#`+XysZHtT98s z<6k;0mZW@-ckYGdc~Ae)?ai^VrFEa$owj#$%D&XaI?yw>K9BvyYWW5CQr80kA|%Qc{Wj(=z& z_U@)1?Rg+tkMpuixwzo!3JP9z&Z6s5f4pP7i?ss~S+t*m-i&?)>^M$8lHi{YC9NBm ztq7iGgQ>N2fbJf5|DD%DNk zJuzO>{A-{y>+8h8neOyKEdlhP6hhjG;}xupkJvOy*18jBa`OjBb&kk-a2Rge ze!(0}0W)$AL3z%Rass61*cuwImbIEX3x`p2_T>}w(2TO!=_>_T8hr$XBU2m(jQ zwUbpt%wLaInntr{zKAY&mW)5f>g?Tt!@nd^RVx{|C5Egtj-Vuhob-ZSs(?BUl^KuC z9f7Jb-1igt6<1mPZ@m8P+M}Qon$OM?A(6-}Y#!bL7wO~{;x@5qxO->te_`^*jngm; z=vv0V?u@Wp%St3mi||yG=opD;T) z(XTU0n@}bztqE@#w9zgppd9_NkZz&C)78T_hdNaQYR%@Xj{fvmq0HcXhDSG$%1GGy zz-uGXwJp(g*}kmzf+{T73pj^a>ulsUfeov z7>9O#n0ffe;k&K)KhXF6Sv{T)$!MR};8z4tr!(=atmV*wFmLF? z0EPkYNi(ff07|<}g5xFr=~EAihSvZW0#m<5BiiEk#?JMJR_q^6=OlkjAbpsDbeo(b zDa2nOFABv6*pRE-82W{n?s(_@#Mw=eYSrBVi;8~$xPbM!#yg%yaFc9{%lBqy2My<| z@>#Xke>g6e<*B5S}Xz9_>#aB?@X2k2*}A_$SOGNn`pi z!5qwcW4KYkVk-i}_oV0Ep5T|1gzB7}H8!x5 zKpe}F2ZYDkAF(3Ntv)HlDU1oPL3L?TEa64Ch;=|~?I<<2wm+i95XzirO;U>h#^TY&b^URwjA^>1sCLwn)-<>mx_xh5UY6j`8x2t zoFX@hDQn2|_|%ORihM+FAyWxzsjS0^_ol3B9Vz51e1Q9MVLy~QKioL|`3E&Q|Fg@+ z%)6l($HXfy!;R9c-dMTEJ1ZhSVE?nh)ZkFDNw5NJoF?gWJ}Kp_bD%!5sMLEZ^Hm+% zm@+ZbD^AY?eLe+LrxvZHRT&zmEnQi!-?w84pSRDLk$pQ4yWmU4FGg46PKl}$VFML=$@IQ!o z2%O0-{eL6#04~hB8lznt=b#Y23I;Q5Ydlb!C_rg%H~5kA4{%jK>*=X}>PipDB`v?K*~?&V$NfBdLz?~E(0Jp|`Y zQnsEqYu&~x8wLI^$bRZy4X*6-lk=$+nzDHRcZMV|520!Q5bsh;S=#MqI*SU~kH?kR zJAYvH3@OFjrab$iu1bC`IcQ9ho`5oI@73576kQ(~w7nP@*tQq0w5IcA!1I^y)a0pD zjGe?dp^hW=G=1yfOnbI!9iznUGb+cy0V@M>av*qMsmx29KXW|C`|l~2E`RQyrmd=v zhItiR?-xrfYLYA0N8+um60y|=Jbp8l;&rhee;1dN;ReJ3mJi+!OchypVg52=5;k(L zE&7!DRwp^rQf(U4E>UIW^`o=c3TmAY#O1oOR=e zCoebahu@9|7g+#Pmw=DU>b-?LZu(!3{Fy3aa2|Z^n-e=v{9%VN86~(2=D?w7PdG*F zD!)IKUBSL1Igcy?iif$R#IVgom=PFlrXQKS94ks!I3cxPW(AN{!<@R+vf7@DZ#Q(~*!uU}$= ze80na=h4%11L)IBNRKWqJ<9BPcILaoWXws1YO{*P@BzTV07ZUx*6-J;r6evbydLQ@ zG5QH)?KXs8B)ES3E&X8zU8aj`^L*jbbN3wzin)RF|B~2brbAB-C%3b$@t(fzdt-tD zPzsVKz@fe>dE@Vn(fj76Gcz_34?j0*l$0iFk)&q-qIF@hDClg1RCWMAvgwD_ASsJi z%>|wLVcgOCWRJI5WHHGvTHhJt^U$KxLVgjZQZ-pJ&Xt(Wb_g58#KbMXu-?FqgTF!} z;}a<78#^Q8+pLJVFf-iDXPJoCG?JZjJF-ep2ECZzVJ@aTXTtlwkoehb<=4*#UKCsz##-^t3>^0L!C95!Hsimkz#@a*Y+awf?8 z@w`*~7!fB!_xb}tmw2IK%InwmY^u#yE-nFnm-VB-_~`bL6-PWyN%x%-@tC!YW~1+1ejkn=QfHjzS4cEJ{1lg7H5T1-X^FiY`Rg%N4EurD>f|YW-mMMik`OAM>Cq?`-9YKHy2Bn)Nk1uYPH*av$9xg!9|$U*-ZC7 zMf}Z`9eAXoF!$MhlgsJyZQ-}Hdu8Ub^^EY6RikheCr?H;cUe>B{C_m7B~4o3`{xt! zAjdXlIb@MZvo5cy=$)iDDs6I!qW2ey7S6A&HX>(b*9;(O9zfCCqoYudYbr${|9peGy;1ys0q@ zDbzRhf8|iQFLhP3-#+&I1v9Sv5ByY@67l-`O8E#oN+7SM)Vki#qbxM>ei^0zt0Olm zr8+(=&D!A~R1`aBE>EDJ5&Rlphf{GZVzt%`7)EKXjIlou{Z!L>+a)?-(=qp?S`3J_ zNfLJ(9mJXJUGYiJ^j|p$`ty)d;wL3nk)|p%mcP2Y>F8_ZAXHv#!|f+yf9}|c#&Q?X z?X5k(<2&byUr=L2UT$dV=vE%i=P0m!ll^XSXI)|Qnq1SOaZ-R}EHWXa$9-9_k`x>xJN;xpD} z!9`qy%O&gjOYL7t(oA|2X8=21Bhx=qpqDEBIJz9aQeCoP+4lfAm$N|6gJV@m?FZ-Y z=hh9rA0y)$ZEwY_Q{J4-Q$RUpUqmQkCDNeRv`Cq^rhVVrih{E6LuxKSYz#~x5noLk&@Kj3jsh`{&oyOdbv36=bSBGB4=O6P<*0lN)XXc`)=KA?&`UZjE zGXiY`V(Rz9b?yVyk56YoIP2Ml4sdXb&!0X>sMo_+qry-4#6Jfh)|#ZI5}Fl1e9?%`{tllCytgkuoiD459j+cIZtFx25NQMfRReGjcsrHzB%-(cVnIVf92Wh+4RT&>1OL_S^7E}|K zW=3Z@L{-oI%5!ljAuu}mUdCuU(fw;pUGxk<^yf9TOAiPnEVNvwhvRqy0lb-kq^@fL zjT3L1TGw;Fz6^6I%kllt++0{Of35Gex4k6uF}S|)o`g-4jy`>Gs6CEv>%D@GEjrex zFb|VDy~EMIwb&gb;ROn+RCOa+B?Uqp>VPr5Uxmj~=e?g6YCK&dQ;sFX^vh-#f~RiW9&E{p%x5?1(K5lHpMN@TvV6?R=Yw%fiGUIW1XEwXZA|p zMZMari+pG1QIphA=kRq_>f;clIz+`URomJH>)5+)Q#?l`4>Igb$8KPWzra1rRyb#y z2F+%a8Bq&TdAsJfpSN^mXI-q26mKrR3$S6s=I(+Y!l&}ezooY&g;u5p(&xn8kfIfe zO+Ufa73^ps{A>y`8{s1^ktvouO>j$zzPO#=^^YXInYDe}ZL{Beg=Fzz@Zds`a*^-l z&HEv5jb}CgYAW#tsHsr9LVi>Jx{(0Nc41;Qa+oMQTL=0yU`Td3H8i4>=zJbQsz4>l z4d0?OC+c^Lz2~N7Y|ocJ#y`}@O-m93ziS58FK_?2*Q*lgO6~YlAqtV+fAc+p6D6$< zFe7@)95tvuFG~|}~gmaEfKkD56_p4SBEWCx-QICIWNAZo=AHycm zro|Gr0=D3;If&w)yJxa&Fe83Qvt?fcS^ifOBekyht ze!XjSK=}SgA_cW{D9wUq*gQ*bAV=#^^*!0OTSlEP<{x{Hau5svhG}gFp0}G9jrN*3 zU#hI@#@o%ZVKUR8BJ@v#!VcnAAF%QRgyEq4-@bYPOjgHv87|;ns|8vqi*ye9z${g? z!@w-PH^z$ZHB;sBDMw)A1H{BrC@4qH=tjg?N7mU#DA-286qB9LqdjkCTfA&$*Pai* zVQo{v#p6?Sx9B1oF$jfZjk?+i8-X5$-VUAd`0zTL*FU;a#Qg1CI<6-X9)GyqD`Eg( zN&d;8{h%vz`JL+(WI^XnEIx+LwBshojn`X0O`$46aR zprdpzNg`o&@6-9n2yE6#;KijbZ5Q>C^&SUr8LlNgZ1OFYOAX@z-<@V|{0TE)W%ljv zZIR1VDO#9ai2VC^kX#w7h*n*as_5xurb-R5w6>?}loSxA46iqs*wRr;QHNLIta)@V zK`~%VSRH)B&%5HC_8kRuis|ibT^=4;32R-7XV|qdatGF|iFX}e!K!b0PNnENO9gUi zEXm6$`k>R-^rcL_7-8a~cJ#$<0G{LZS1bPyK9Sd`5op+z@xNgccU)wbnU|y}+F!c}^U*(vY=NjjVZhwk) zh=8$H<11`l>-x7ofR4D+m^>RY+qp$==#)J#+r6fjEHkF~wW;5$#d+*|NB`jM31&LS zPHbixHs#dLJA9UhpCov(IKA6lr-Q34_|~W$bl^_13qYBlx~jc=!TxIM=<`wT-Mg~z zZ9p6Mo5TUQplr5JP&ceHfpC>ImsbX|0y$wCZdGlRrC8Jg?HkfDc!6>%L_C6$tHMFe#b=53G=%_(M?o zc=pe`=fIpMw1hp`91;K=bFX6p3$-lq{lzLBz6See&uhuuC-XWs_bOYKJ+D~!1V?4b zG)Km|d3*8QA!y_H*^W>mhwTN9_TFSfG=WQ?e6~4J7*C> zv1w=U)T z`D|-F^BkuCe!FP&SA}BoJ7NKRZvXAjUiW~B&)c-)zrId9Z<7LGp=y_WJCK5!BE=T^3h}$>sQBfa)OmB42FzQ_C1vw^eVNDp%Kz!`8yCoif9S1! z=az-rMF2*bj(%(LXS&yI%BrS5|3H)YiQ8Db6S!^cYydYxOX9Vcl?pVlo_UQC} z3yh@(Sb8}pCg1KV9SiF)HXEVbLB_jVP|Z7K4jt=tt^K=Ypj}EAfqP?t^WxU)Mwa)% z=J&X!!@oAqH77z&7==QP-HzgJCq=h&XZWbUqT)zh&j_TMJPI)~J&OS-UG_weXH#g@ z{sZN~=+L&cTGq8aZeyrhjjpcff2i~^o+;scS%n=ueGzj!pK1I1Sf!tS!Jo(5|2}up zLN}el`ekk?{!bTL;n@+w_pY9d7XQd=&&Xi0NO(67zeL&iF}oRhwa;^og&h zm&3gHDaS*HESHyMI!9vH@h038>`MKxfWz3yWc8Ngk9 zWMbarSxhYGLbgmJIYAi$k47T))`bGQGBaSdU12eH8#4Q~Mki3sQQe~vW9cw@t`ebj z$_idz+vdjFy1ZDSt*F)Y^U^?}{yJg*5(08&-Es#qQ=N z(?}>{IWl#shH=fP-16&lvMSfbK&W+PB*H~ToKYQRx9X|;~G_3`kAe$!X>``9Ht4wlR z7(KkZYP7&End0>zQi68=owcw9>r2DHd@5?2lD~GfFdYJ`{Y&2MTld;m{8cd!IhO$W zOHx!#2M^Z9_NWIHhT!)RS<=48~(u!h(+=KmBg(EQz?(sto((d zrv;!8T2SP?`u~zw{M8?nX8%LijbJKNE)mJ|a)VTXzx9%u9&W?zb&DFWkASlaCz|&1 zV4fUA+HakJm|5PqHuzNO$J<~K^M*6{B2Y*YRVVC|4xs$PJ45H0x3{BkRf0IUHE6Br z#68hf2P{{OJH0!NlI?}b;G=S8O|=$)+%`VzGnjn7iG)OvMDb^9hD#|^lJHa2sA1~XRIChUH z|N9n}oah@3AFRGEo$Nw3x_=*7r0a(-?nfa`e6kGpu-uh;4e(=s`>8;b>nx*cIG7r6 z!CpItLOuEY zA?6#_Zf;4w9*iG|j!k-RDU@DK0`ufBtR<+dK`g+bvhFxN`O?=?K<{MdRI@Cj?(n5I zkmc=51?14GRB3lT4;Tjuq$)uTRe$TeG$P^3y2+dT*Ld9twj%Za)+!s-U@@6IwXJ(* zts!|Gyvw>=0ArUKWeUOKOY47h?tZxVRUM#ybU4fl%H>JfNO)k2p-VF(ldW@5uaRxE zN0jBN*k((IX7L?aTx4L~J+D3)1?v&OE;C+UjXgs>wfpWKJ!H*OuQtyG`lXWB zfNOX)&*_ToOhG*_3y>>FeFH+rC~LCue4d#*&lqlmO_lg-+|2g3II+YCTeTC(t=&m# zbp(Tx>rp_*K9Et&t;I29s?;b3#8(t5XWL-x%YBD&bS~e$=Mm`RF{JQhCXSgZnNQFg zj{jkXfG15;UyylT7$hi=`B_TmTOLJWWf!-r7P08>d_KwKHxL!NP<55kTpn+0D&-r$ zyfx?OqN-}xy7@m{i*lsC5r}Dy?F}3uI9}S{k~OXXBoGe;t$I`2pdpHCra!VymBvyo z`@$`*uCI8Ox_elwyE(hkUHn~y$gC-vWoL*s>qMU=sN}y<0TFbPiR+NUW<0{W5`M9& zEG3sVwv>Gqmnv$-J6E6A@)nn6CM!gc>?m%V`adthNy4<$ad<+Y(OwOYAtK@S*P}n= z_nV?K_$n^2+bCVyti9@pBJ3D%@x$!H^C&K-Fwl*@^X9`$!rhmz5ldgo6EtV<$KxR26>zrdVLXm0+fTL%{yv+^nJTBCDE^3XB6EAmCa_@^lh4mfe-`U+ zK>HuCRDr$`4g`@+3qk09>Nt5<%p0RE;oW&_SQ#pT0ZkE6F=`OX@LO9;KU&@pTzZ&# zsO9}7(@l0>#%C!QVbeJiw<9FA1bBy8_*^6kKMCAmn^()}Eh3^-46s(Ww!Oj5Gw?=m z4*46?;B)(7Ismu7@~{~t&W$Yu^&9f{trFlGnGF2}{kR~!Aj0c-*G5>DGw%5jG0dkh zKGUK1OLu3c=vTXced!bC>NbY? zHM-SK@jD$7ZsA(T6E;s?{hg8Y@1MEqL-&BbBR(EpBL!@^?TH~NRU;?~W0Bq<$c24+ zd9$%%xNXtqUK1XnHyS!7ZjPWLNX&4XxaFBo3Jyr#@=lGa;46V?b!=>fpYnj_OH^3< zq}Z|_Pn#>puRsIm59LT=h`#}xrl=OL)Q?*)8+$iTAL{6 z*8X9*abcQypmVG`^`okj=EmK-jTvepwkD_$dR@x%_fv_qJDF}#cr zJpGPz+hw!!^krC1V8l`drtY?94*kFlgFqKz;M6*tFYKOTA5_Wf3XNzZf;_ z^-Z@*7|>|H<@zjj^CkI$t7Alr_PL&Gwc6~#s@tzcR5{v0t9yp?gS6+?(TC3&N+F%?>_gr z{f9s7-aXybRn@&~t+nSSTbgKHLgHvwMJiB(H&gQiCV*u2NSh)xm5b)+r2CD5pU!Cj z3o=1wMbHATNOlG<<*Zci3>3I*0sncoX zR%>u_AXB{-hmC>^qM`E2;5aSZ=m^Gs*5hlmmFQ`-b?9mI9?M>zU__y$z{?xqs@J1( zmkgYUpAnnQErRL(AZ1RFJsdle8YT#XPpld2Nz`FA;0W;j@*Z^IL(6BGgjvt;_$O8K zD*XupN4yw}xFMuS1IGP^K^NuMeg&{4D0eJSJqgd*u!E9g0F~)?+NgXlVI#=*J%Grn zv|7IyIi_s&;#xXo&6ur#Ks_@yT{AA-z~DM(D#Us}+ST%BgF+dnT;DdPxQcI@u@%r@ zLUZX!rFF_maFOSe3VP62B@GMwi|sI^FHDyJ*6~b2q3K2;P`L}(DdvdBsccLBMJF^U zm{e9v*3tDF&SqXHr2>Oy7Ya5%P1M z45Z}H1fW_bVT(iHpQ8YEV-)8%DOS_3VXL(rkjm+ZLxi2)`FNfk zTWFY-oZvv%GG47U8OSICeFiKvR{ivupapUKiAI+4%nWu>( zimeYMGU^q#c9Pe*|7%Q`M=kfdv<)Zbe0i7^C`EF)t-oefz2H!hyzs~BpA+&v`;ybK z?$TaMj)&UAPyHM4l;b|Uw-E3^!V!V`Ho(ixQXy+0%{jKKsi-o?;WDP0rx4S%c%RK? zySlQ9dT?T*p5KUQJ z#_Z}j+{mg@6Aae&l%EU~_0SiPA{J_@$|dcXSn48uMtwK!TNk+MCRvJlX$;={1I`P9 zY+~HBPIh|#zcRIg3!I|@;E-*sIi0<4s@Q-_73@Ubz3<39t}-JrdKPoAFp3#1B zOu?x@r>mk;y{Pt}&_HY|>?wxB5WqGGo({5Ts0HeEuAJkj>}z@2M&vhP*(G65 zOjlE4r4~3ZDEssUqaBhvXd^ob9J8RQTd#%ktVzFEo=QtjSF}-p#byFu{?hjwK!Ijr zd6H=BzIb8P^FO)45`Cie^c?3AoTeBrN-di?>ALE|g{-_Ra}ACL7xf%p2Dr4TU6Agh zb^I4^|2Z|5^g^Oo2A#~=j6C(JMye}4Tf2+Jmw44}wQXZI7_Qqix5=*u=h)iF%e%;a zvS!ySl4>=D@J!H;rbOHJdTHACs9*Y26|Q7c%&R{7n(+?F92`l;d`qP-4AYK*y$=5G@l-Pz>ni^+B*g=iuSY*WB~yhE!M?mY2|Buq zF)(3-KO&{xH@c?LyO#vpfEH`5CE35Rw={VgxA3IDI+d7ZBY+W)!yIT=V`zQ|`;JzJ zzNS_O#TN#{B$e6Mmev;TqVVoTI|~P6NIaB}GmiUDUiHWT;MSxB6N>lN>TKQCYApkR zufwewrZvRv>b?hmNe*FzOLu`R-hx%?P=r^| zN7*h7nxS7DSm_7J>n@24RK_v&-9ZApgaVW(DSxuDo;^w4z<8858tjpoya)v*$@1^m z>|r-KE2L{Un9gtEoP8*^X!u`G#VdHBjo1i|m+t%TrjpE_ONbdMc=cU7m9Y4m* zOJl)=W69nZ%cC4e1F_7`WsLI06C*JamJ;6E>mNW zDR`fct}82ibt#&cox*xx@aWivUJj_@U>cNCuK~_5BfJ zSsS>>(=_}_-8t7BBl}U1OG(G}?7|M~^U+$V{h-7(`km>MTW;)Vq%(nhB*?RLW4K3< ze7?h61As!N=X`?B5vxL~q?ivhr61?od}h&WU$?;}!mvGFBVB5&MFq;sgX^{h^i9D{ z!w$ zqOIo|uPLpBQ~ja^$3(G(%}Uoa_=MBX#}Qd0wWc1iY}9*wA2oN_$Taoldc&%qp@}U~ zr{C=E-gCxU@q7y0$>G1U>p$kl`}&nK3|IP;Q>4IHlJ6qYR@-1%(7C@2j9@-^_^ngw zR8tGm-NV!!Vv4pWEKLq2g!3fcYJMB}T1&cDc^itiMDqPH2c^wqP@7P93x%&21MKT& zHx2iRj^;U*p5cygQrc7HGBy&%f#OdGw7w*=A+S?U2I1jUJ(V2AII$QeqOHshE^b-& zH!^_q9}u0Pa<(Qz$t@J4W`T7>*0ff_bBz#8WAM~9c-Sq68RjDL#$`i)|4s>fob{wG zrII}Kn%<^So>n^o?4PnFHK^z6;NgCs2`N!yGPe!pC3nB2xJnN45hPrks;9dHwfmta zMxs`=)@|a9dNu<%FA&9MUqmlq-77(aGk4I@HSdUV_FMV~6#k_c zbGLUj`7M-=?lJbm@){hN|I2~+a$IVC1DE1$SeFd>!HN7jgArE#$!QJ2cA8ixy4VJV z1kXGzaF5v7>(*XD@b>$q6>T3QvSr`cxnL2DtM#u`cQ^N1H(Bp$OJSLQiKT7o+E*&p z?uYb2trnNrTqM7%`A4OqOv2S=yXK7(efYB(l(ReS`o*~25|0h9@@hFPecu)HZFi-E zkd_x%FySs3&JnifW(p&dcRAVX5CqZ-u|9xAWRi*qw;njL?cuhnrEGa*D)6z?yz&a^ zww=={@0ep6mnnM5d>QF<1ES`9c<=`^l?GkhFBMCzwDgdhO3(|}zYFaCXcI;NS?`s^3uWk)Tp=dtvkC^T% zfqkzqma9{uqC>Vq7Pnc*DHJKCQ6uTiXp_QYzd}#_4)-O%<#mA)QO^PFT~5!JPH9Jq zbZil|dzD(79{rMbM)UQAAnB0`$a4)eU%t;%x)bs=_CHq5HTi{eYzXzuCe2vRE}K(8 zMp*!T6ll|R2WDd>Vo%pj#R5wM+@3Y8#{i*z&+9`(PjiqyB}l|`dleSUuuJ{Hd1Wri zk;|Sym_gB6sU6J29Wrm+wjMOB&FrH1d_v=Hf{%MZ7C44gFQLQEU*S)fuFVu4@mL1g zT_=)4RQg5q47ajMA_eF^Y`9O&>b1}uinA`}nUHbGc^mgjs^v`fM&lCERUKm0GC+RG zh%7da{+p*uJJ#+T66V3Fx9JL7amZ&^eR`kOH*W{e1z~5b$L4XBZ0)mk&AxOA7%{FF z`z5XAgB+&W zPcak}e(=tQ79|f2rj24F()vQMl4DGP1tNiSc%vIVDha9adf0kw55oJ{)UUgFio(Tys;a5GRk072Lbz^$(`cD-A< zv6ns>Xu`LQ8Ebq?9a0%5>ENn>O;Z@q90I$u*3Xey^WBKZ zphR3VZw&G@WoN9Wz3vqGdbW_uw9p7wk#>hvj@tNQuY2|QsN?u6&kr3`1ipqSF6U$jwJ-L8lvGQyF&fYu&VVF|kUQ4R}w_*U+^}QknmDfj{$j%}pL>jj>oL1C zmJO4mB1XfG1w2pEus*w^g+;>g>~GLKzpNu`CoQ*0t&Vt7!wxD7kx(QpEtgozPCZ@@ z13cBHhxCQ!U+7T)UttL4H}EFYf99;ldc1{lb%(g+qBCO+xa2!3o(^+d)Dr{25-Ndf zg{1+8jGOGolkYK%P-*gX-Sr(l;BrA2xIiImeCC7rbzwdfs~E&S=`FkbdoemF_z^x;+wO(qoPEi zf1Y~qqjC7%!k)-e$kHY3=Z^d8Fzwe*Bs1R@mxkZNe;sr8hGXDLg9Vq8BEXnVc4u{*TxjNh% zj3J;=bW>+1HW#|`&;tGy8(Zap(O`#~=557w9U3w*?(o*f7Hac6$ODE#TtG{0mnfuV}iT*n8-k zZVPq9_hev%WNC#9AG*XL)0!gOYM+I791iHR#ZE*Pu7BfQZ63-<+*-+Mi5d7g1Ng2) zBZ(d!xY>*{%Tn#uZGR-6lXIbqw->rZWwoTFUqXFwH!LE$Lx21s&Q{roE+D?GfJU%E zJ+Qh;RV>qsf_}7Rcu{qyOs8l1y|#h7cyPhRb&{pIa5KezN0}`g{)67KC*tkL!4^`M zdk-C=D&)^q54OVXngq5gHl5jwL#N6d%@LKwcn3!E7+mmG z%ye(vC-*;5!3?jjvnF_* zsF<&rD0Ua-0#iyutL`VB2phl7bc0PbVd`K7C~_2LPL2HTE77rbzXeL5Jk61kLTKY5la6eZK$ zMQbo*jbYW-{ARIv0sdbt!AU0xsn-+#G5;xCsTSqm8L^hHz1(a5iIZp-EbfHCBYnBgJTR+MZ}#Cl zP#J)fb-#bct`{C((f)fmYvM^J&;s_MF7#jZ1-Fs8IeisImJ90ZM5h;r@l681`4v_0 z0*!NhbwLP$xXDw(Ny>lGTC*%b65K zsjPdk+0I~x>Zkl;Q9CK|`%bid<4cZBlWk?ZmsF9meHF)FeOJ|fc)fj?988GSB|5u} zNxgoBS1=E`rFmAHTcWK5V+W}klR=jWT4|Cq;6u_#AC?XYID}8|YbI=YTZw?+DX!l@ z+7u<{n^d<12=^1B@CbZy`oM9$d&eokG?Nx?*&+uvk4c-fjPFr+6FTl`FkW1drmf^| zPb3--Vp;r3*F7Z*z6yswy@}+a<~C!8sW8^vwRZh+j>NZX|M)E|rg7Ghyqk9BC(>|d zXWxrc>(@$xk-P76?tbBH&^ZqlT?+mF)Hv?0s5GPPlzMfS6`*#Kt0&Ab-n_vy69>6X zPcZgjTq>}jw^RK3$yb&OoAEki?Aio0^s4z31`X=1mi)1OM9& zpJ#va81p((JY$CG2$4p*FO@7LvGQ9dAn0f&6Y&0tgo!h1HG1~39!^5s2K~6&! zbOR_*!eh3e%yG2uQ_>RA+#-`7(2>*(Vm?B}}aVJ)9spk-aD^%gAW+$b{?q7e%7bCADi_*e#qq~SYK_2 z+DaeHHW)wGwo`M7^|&w1F1UBatFlqzSUznTZ8Scp{B1(-jm`;9^Z*CN+(0hAvo)z{ zHgll$_D|BD=3k>W9FPs>^rZ0qN@eTY`AhFtciXJ1*5_$rVIaJ(hy!H%S+R868%+h~+>v$ZSjcsp^+h`>ZM^% zmYKc)xxUnSVE@BU)YI%?k87|XFh>5YJdX)l4sYhzn!gs3R$n z(rHvQ^`S6j33Qm}dhULT-B$&`I|3?P=_MysM)e$JlLYtk8TF|PA|6)ul0_Z1h6=u# zejn}Q8n9P!-n`}XZF}`y$K5g>u~2;G66NF1RV*Mv8n_PR$2BY$+K_5vb;3TyeetMq zgXt)iN_Xvu`R&3ydhjg%3s$Ge$AZJ2oWdqiveVJdXxndHe zHo&nso@MIo&5L><>}n{l#INTdw@|v}M;*Pl;v$^*8+4IM{NNg)#H8kg+ox!mhgx-|GYZKPVQD|g$E2wm7E{$ucK@H;7(aa{=s8>%Ru-O1Es3JY6)?V+o)VC~m0RY^Hh)cf)YehoMwzqu zzQal@*E;}cv1rcG_Y2Q&IwaVF&{V!iNNc5Z81el#9=3YIXL4B*Nz7-yk@| z{ZBGc(@%otWG#t$g)-UM(FWT$h`d5p{v0kJH1tE^4Les&@(V%Nu63iR6;9+ae%rQ^ zB#1h9sZDCVuWM_Fr2-#EXJwooK0^1>`e(ee@71Ad*$dYVb>aaq8tQJZbxM9EWmYP< zK+Buf4PkE`+vFSy^V5}2%M3;-m0>>?7N7q?_#^x7>)uZej&UTR?~`1LC;TZ72=+g) z&}+O|`d{>N4WKbYd0t2EN(46#dz!5^64FmyY=3tfgU;B*J`J@KFB?E~;)0@2f z!&d5VyP;~%1b~<@6IFBr-0=Xrgdhi(WJ0+ckmmJWjfn`SKM&uoJD3j* z9iTTj334wAZdN)_YAkd{o@oYXy6val5O^P}q!2Pj9&MT%ZN<`sj|wQJ=k5|&Y+8tK zEf_@_jM*}KnHf;rh?a~K-;nRdipdrjRB5Hk<7ZpY%Kn(j@a8A?g{)g<0g> znSueQ47veKFK3_%ZN~>=*p_#3A6iuh?Ad=6Y9%|{B%!V6@frIBUM1&6^4(VY9!F~F z#2otfczE(gJYVL)ZtD|@qmWE{i166-57w(DrFu>p);#G=StZ6$9dmatEL|{xRKbw6 z*gf|$!RWQT$jflst*_ZPMMjmLJN_` zbNA9hMsum+msTe5K&zx`UWVqHy9#i$1^sBkaC`0XiXBE+YjUqu#h~1m2p3<}BTuTM z0UU(&F8)}`BPZ%p5HZh0sTO*EXRA^RF|}&~i5hr^s^fORhVJDIl|Q2etJ}Eq0Q>4_ zw+YF%2}x7u$*-97JP~CPIG+eN1gHcumw;iIqkLs~I=#62*Zw4%u`f2M!AayGv3FG; zIjX7YJ(Tt<&jnbDPVHYPr7%&Zg;-F=+Pzpgsd$Abr|&u?~xgYPHE8y_4f?_MspYStMP#&FP{a1xALXL3TL zppct>y*;Qi{YvIyz>F99hVqXB-J*|00%`?rxyI1MZnf-UoOdjx#(HV@7__(Z;2m}S zbdm1nfsVYE)BthHIPUi$z`atrhA}YH|cYhABe9&v0cqPJ|H#Ffp_^HR4VHmm@9(Y^$|VxPJ{*)4 zEb1K|x|eQIVagKM?P9b98izGvIU=u-C@}(vWpC&hYS24@LCFB}hD_qh;c4*q)0g zziabqV(6rHweqW-Ai!o9D8c})c{gJ27>peqloNL#c)hgAgKwMX}Al5X|OE&kEu23NAF!6%qKvhN!sh6{b4+g4dVzr=2N~lP=H)5(gZzBE&6Di(`e1^=T2#<@zOoAJY1T`z9steh0pMu!)bPd>%7q# zcAuJWWu>AHf=zW}v1^<$nosU|A5LZ+91$s^ULCI3wRn+=qH)FCi62rQ_${O&Q%XN3W>a&&*;Z`ALWQP=UadPIW2Hx?4+ggd zO6CID8G!P5d8RWbK0Sw&pWGJFKR?j!tdoCwBhN;gvlz1_m2Fn=eMqit#c)`*x~MJ* zE2n3s3@hp2J2IK+O4+B-EV(o&A0PgC_YbC=imUfhQD+hhd3JQZUj7DbQ%HT{D&2$; zNE?bp4JvR>b0VI7oU~);H8HgK2C9K9&gE?pXiBzRgm#w_dLPYv?$@66CMU>Pwz-~4 zXjiZdne=DYl$Cv;URfy7&)O7I*c?-bNe;7r%;;LFJB_LJp&AdmFfyIfYfNH|bZ}%h z#hCfegvWQTm0ItZDSH;{u`5>9qaEZTQuafFJso&asfvXi)$crjgwIj~594ZH7+$bV zGtH3o#`l~Cx8`QQ|Ac@<`{Et@mq}?lsW_Jf501@;hr=y1-N7h=+VwsEHwt)VXJ%yw zSzWXr+E}vLVPDO3B02_yW;^m2ep4RZiN}nuBu(=bTdsM-b)-YCQkBO0%D~fy{v4ea z;}fze1!i%q#iXJ7F2bgW;vZYv5+zFW06xPq{6rag{g zEv>pTgDoW4;!vQd3`eUr=fmys{93Z&?&VC-iYV2J$GRoxy3RcLixbJ`9!)cn(zY*% z)*@*s{ypLht9H6plQwt{7m4CVGqDU}iv?tX&1XnIuH0j77ud+Kp$&!^>1q=i=@vvr zpD#}NXka$inBJIsA1)~VyUD=1KCr+$(U%z7(6R#BU#vr6?GU=EW0IcoJsQ)sNw>&! z_POk7*$rr6YrT@ysR?>`9>h1Q{K0wN6?mY~QJW)LA1lfHC!nJv>j;-<)q0f^JVfkC_03klP(wr_>LvSZz2l!Qot~AL9`>BWlm7!bs3okJ}P#uDEO{_}G$z zzKLx{H@;5`A!~&hYfDm4d`Qu;bl=OY2fpX4!n}alL?y|k37=rYW_Y_2@rY)%qB7^C zZ^`Khw?746>qRT48l7yoE(GJ3d0s zbmq9wR|Az|(5bTuD&9AX+K8)+LpU?0+ranXq2xc_HX=2blAN1qAuV<@5+Ag4MI6_Z zGuLwQe%b6a>8!cOZaA?y?XPhb^J)IBQ|F693zCmch=b&>GYcH>VEmE3B?W-<~aVleGL-;M@!&fgVO3B@s_$}V6@11>ek_2PfvKIru zzz~!Q)i8g{VMFkf8t-cvaiGQcS&6%s9rd zYjm&Jjp|ox?yxU|R>qr?Eg%0lEwoz(kfFp2xGrS~RABNTUtv$=&aG8t#Ih>5q@cPN z0X9{?NfgIyba1|FL*i}^XYbMn;ozP367)lyP+W%nv z4Vh^WMS6rs_#`rt1t%|JnO)B;@A&OE@M(% z;WapmVtuPJvhmHmgZ+!2@{g`{zMqk)#YG}?RXJvkIWRbpRlo0OwodPAiUilrfSr=tR zvFgF`Zr^m3{!EUyBPffy42Bx8uY=yODe;mY$>Ec&z0$WP)|Pvqz~)d6k74znmVK8S zF;RzZmM(%8yD3DEj6bb#=O#>$|CQ04lwl}70Ah{iUx>bB%Uq*Giv;^-sD`#nbcU`M z_TWzsP0ij--t1S*Za!ah_d2wJA3|vdlMy5oRD~u=l5L%#E`0+!FHxY=HaM7JEug1{ z|Dj5%o84Oj`1vK?@{1%5S$+ur8fj@AK5N4EtE^qRHA4dVMLxDp=qggD5Eg0|F_~zs zs`oQpGB9dM&8iu9p$Z*i7VZ&M09Z^>BKPaGOruQr?+dfC-?bcQqVj&cJ74;b4s3nf z9Z5+1v&|I3)p^XB`E_Kr43fD=XCi;?<_eZ!mdcdKR3GwqAGw|K-abzqj%&o)G?@!` zsk+%^7CVXWAq$4U1?ZMWEJm@7zw2Li_%!qJi%)PmCq)={XLU*G4gUBa$W9)}p#`Qk zgj1d%O>5PFh_|Q{QB{gjX*o!#MI{a&ynGGJ$|zyFdY_!ng()WZb2S8($#=l7F%`S) z772wlR;)B2Z`tTOHI6$AVUAV>{$Ax;N`kLEZ=_T++?}?&_+T_^QQSMX!1-z_PV7a9X7E&wlLtr_$cB7 zDeJ=tS@>tt-MD6tgc6CJ_yu=Mhsbfe1>o$X7HJ9k#yc&P47<-&w8L@EY$pd#4Q@} zGs&NxF|S`LvB{wkd61UOjyD+ho(@Q7k`aR4EMDlps;P+o29_I=Ag{qsbPVsXzOu)N@MymL0olS=wa09+bwU(DMB*^+OAjyv3 zc%mC&rB;Z{I4TT1UG;~iRsB|8hpNb$FuH#hFk%3D2S zp#^t30*|Pn_T20`MoNgYWP{Xhae}u)!DA`Ndw)n;2qHcF6LKc-V=fuzp(cn{xD;?hb2{uNNHi z&KNHB(_K=>bUm7%y_sPGsoh67d=^815=@{kI(%P(l%K|J4xxUAlzl0LtD?s?et@)$}#{|RBnEr!k$wq26y z8!?=9*=3UQ;b-La>YY)Vnitv_dUqn|Rj1wbXlQ5@N0%c7LQP0yEi7OcGtQG1ZOQxi0!_eT%!7S^ zFd|a@>RROdbfqa8UyffuCRIzj1EbF^qvUPg`@5Y0by_Sc_E9iXCM~TyDY(ae6n3Tk(jv3M(PUg2ZH)}hI92vCT1#*6O`W(;W#&&Qm3QK|0-fVcXs7Jr+$U&U&Q*Wu-MQFQ^g+$B)bt*hr_H9we7WaV zCf0g{FZ1J~O5pbZPkz1+uYBwWo(uV>VBwZgTT%^qDtAGPy>TA2#U~9y8vR1|XHGZW z_g^(N|72;A?Be4!^4_b~VJ=_L|A;{(w8|Leu`+{l?Y5J1Lg~LXJ2-m1)}6F8K8r`e zH5zj_%<;ReLb!04W%J9sYy)l=_A(=JzV?l$l);iuMEehjdtFNH;>hWqF#UtF?9e64 zl{3q)slJDc-)=|07Z;Uts68j9YA1Ic;1`4~?Ds};?;?@if8@DRJzt;aE#tDK^^P+wB`})}ELB)t@JhcB z&`>W**%&VpZ;Z-b%{p@?uUiJB3$F-V_R2q>KBKs^qS(wA)bUQSV)P}MFopDg$XFd~ z)pyX>_rdoN_Rlc{0Qx{Q;&3|}fy|3|#2>7T4Q%bsn*+{BOP$5>91&mXt3GN6XxQ<33;T z)b`49@%lI&8GZ=XWBK?NU9qapFWmwr>scqqNQd%a7uTKc{AE z=>(wkn`B#Nk+SZih5@kvWq>J8!v_jJ>Dg*LOGia*JGv6kvAjB}STG6NV%TkTJ~=lL zJ?%9U_Sq=zo_t6LHrZUy&u`^fJwiW3Rt->G5*8K<5+hlWh!r-A!eXy%*L)i}CA>LM z3VL=)tTyyau6^|s@F+M29z&u~jl;?vdtZowtj169o*ipBFLDUi+~Nu5-tY4;CpDYe zmho(m_;hyXn~7k#>}S%Z=ED`!8RQnYFh#5*_5;SE9EIC8+C8zHr zQpni94GMm%*zn3QwUMz~wBbMD5$*jQqqYfFCl41Fj>ztY+b#(1^nz?;r}zga0Uxp6m=;CkeB)9v zQs2XZXR7Dki3s|ZBQPUc2Hqn*)e6S&3Y`Jxd_iYDh$1b(`a7KWP`qmsG6!pr>I16k z9kD7tTwE6%e>KPrbq!tW9omP{h~OT~iTUhVqkZUv_C;Hs^=NU6oNydY@mZ^cWB5)x z%i6_frM78s72-NU&AQaQP+dK^GwmY<@DhX85ne5FXjPZ?oKmqxYJ#C zVwnWYE1~Bet}S#3oNnJB>lNO6=d%#XekLdL@ zA4%Xm9Prd4Ky(~3)dEN)$V?GaZ=MdE`-3$X43bYr2%YmU;`Tq8sD}{0tt{a6bPj>4<@*FS28hvC{p>@}~b$u8z_8vA1PF`rL$3m*O$a>mItZ&dX zZSk)ccMKS5D;_IQ9hv+RC9OY)omJY#J&h$ecrVdPVC1|7LMaG=A;Qe)mw05Fr@Q7@ zaiH{1_Js&1EeWxe(vFS!8imEeWK<2kC;CelItgn+3okhDSTgduPW3Y_Z$9BB1^3!cGztb8T! z@^XA1AxL}u*XHtFR7DYM?-@r#(T>DWY9Ba8mN!p2`Sx5%RblrIBp|&5ApS5S%Oo%< z%MmeiGU5?x7-X-IO*@~jWso5GPi-r$RlE=;a4r*a@QpSVsoode*;5HNHKVcW^Ko!0A)47A<99+yf| zE>Tk9{>^{=1b>Q*0+w)q45;A5%)m8GkW<=>d)3E&HVs=N7C||t{+T7GY_7ff*6 z{W#5*l2-U>%_VD@f)b7hnN|Oq;JY6_uUkFHM{JmvobZo?Fl%ApC5ONi|BOHInggIv zS-3^QXU^FuDpGr9>fW|dn73Exkt z42^Wn-{RC(y}f{*BCDQhEWIUHjmOj^f-U)5%BOBr3WPpjs2x4R4<4HpGNWCqApX{c zIC!|?abHbIWn}fxr8XFXwEF$6WBsYTfUkW4dWL|xJ7Dc=W(!&?-^Z%tKTUX!??e8# zTrn8=zCf7aEH&Y6slhwXA_zbM_M|ix)N_9@U`51CKBTpKsQ4}Laistr*>!ZO!GOo5 zYG6dgASB}m`qzr3_%_Bt_74anHY6jG81CtSC)=TTze#67`<@R-&;kez0wsEZa(=f) zXlB%_4uQvco(jZy(-Qx)y-f3wGV!Go;Lzt+(|c@g<1`yuq@g2XR? zCCZ3>ot0fP40jFl_Quv$EWuhYStF9oPZqx&0}L zI9{m;+&?yO_jVWOR7G40|O8ZHIce?)R zD6#$Krxnk?drB}m5(Jn+ZgpZCsnA1j!5<5u^{Y?$9?{?h%=bj9h3T_7B86Ij2o3=? zE%Dsg6aVxf%n{_`A@_GM{s=_ zg#2tPk;(`46xKI3Ru-BFMa}*#%B&LHpQ&mOUd95{JYc+c?6BvzzqGz)v2^j& z%C?a9MEx$y@{Zw8vc3wsEu(BQ`je^m)I(Hqk7JQh5LzKcm4SB|}Z9|^%qc80+>-m}wAQ0+a!Sst4euMj4j z-Y-B@3s95;&OjDWQw6cAPWjF@%QDJJ%Z!E7!mJ)CH?I8%%X?RI@OrtRUGeWWw#w3! z1WeUIrf$K*$&gJ6SO5Tb7dQr1vnXZ1mRA2L4rLqNq*b$iT8jC4+8`H_|Jms$*Hnmd z7Nq19aH!du2fvko;_QL6brhabz;=@-7emY3mi|7bTq<)i@M*KTNMi1Css3Ha{Dcci z$muZPQXu12EQUS!STp0)FKmi3p1X=y-fu+h@p0l9%rL29z|(a0e}S3QzwOPB0ICr) zmZccDt2KbZA{@-8rfvii&6#E-mejRR*URqJ+(I8rV*n=of?<{JDs6>C%8rwoLB?Mt9GW!)yrO|W%hIWBu7FULkA;93GT6-AUYyp_`9XwIqi!AHjg2< zCKK#j}O8duG-tJlh9Ny}?-^$Z=^(%{6*pTtXQ=&k)1-GkqLg869|%%yX& zkqXo!0l3;mGyzdIi}%HSQlWUS3eK~5?p+O@l_Nbl)#7^PgyFv-5T~lvHPwH}6jEXb zCwc*z9}Ydn@>h0RLobfMBEw-Bb)vmj=*=MPcnVgewEz39ZbD}uJ##?XE+j1;B1<@8 z#=La)Ddl^WApNLcX!iKcb+X)R>CBBMo03G0{?B#7oY;OnTxvJ)APhno1US@y%zA>) zGhq*28^*+$?{9=SOZ8@${}UW{82`R+O;rdJ9u^@Q`G8_M;F@{J>C23JYC%csGQ(%| z`MmnsB$6bjZlSb70yCe9_DF)LzuZQcOo=yHb723jng>aiUW{8MIcA zs*s^S;hv=NxEFgD|31U_L5KRwNQ zD91$YMVr*{DoKHY!~FM)-XacM2JF*4SNlR+zMsH~olYori>?M8}|&W3#gt zHp&$}N?oyb2cLG1J*Jzv@C~?b0d)pngY-jk4Qf(X_Bp@C@xWPM%9sQXaQ7na{=iAc zIc7LQ(&#T_|Lmy*)ZP;cy<;gGyu#{C$=4YmKA^S8*FDBOc6*kVpmD>Hd^g*7dP!sB z!!jC~LeQ__*l}^Zr3xP;Z8TZ?U|(S*T;;j=Ub2rn(P%WC1^d<*_$wSM}lBSkfN`^x${cy6+q^0=M^H8s4V^;H8UW zyS?k~(?{2LHR^7S2EJ~8Jy&N69A~E-FA|}{T*Zw9(q+b6AHdi4dizWk7a{Zw(XOuI zXPZ$3yiKXGx`_H2?D3Vi@WSGKvr=~<0Tnfy;T^*eB{F7O*w$9rQPqaK-8xql=}8)2 za5syvQI=ySeRqrJL>>Fb&)r)q?I!vUDJA+A`Fbzj4SeX3`AplYKV%egGnvDl&{*?= z0?nZR<&h`eChhktdsOY>KOxW8rzb{Q{6G9+=w>cc%Aa~h%Xx}_(%0cykP^i(D7$AZ zbNdBW8B>J+#=+^>{8}%d+^%VJjrm;9O{dNaTy)Yxln)?=YPN9Qkl?}H zrAcrI?i$?P-Q67;5AMM|xVw7@?!hh4IKkcRblCfoyU)4&U<}5nrdHLORlQct=Y1#l zM4DClMYfP`Ow%{{hOoE#nLa3c#DI?$MFc%w0IHh-f{{uJ=%)BQnP67nAiM}i`xAP; zHGe2tsu3rm2|aIAPxjIGLb)x^@XN^^ z!iA@8#)O6SdpwT#5*<*7uA_7-eDYcm$+;%*jVGchkyk#nH!V@#;4*N%SYxD?y0 zugin2z)erK)?)sFE+ZnW)JPo_KWvMv@VaaXej*$C7mQ(Ww_Rnve{grvzGQLyj^UIQ z+`?%fO#h=Kt=yt)A5&mQc=bmEK5~%?A>E*i>~gh~=sud+jo)Sgju%JsQnA2Qn7UjS z(1UOhL9dvIVIb7}aL}?5gG(HT>vd{5cW1A(5GbM~Gz~ql{xj#aw-0Pd1Mkd-yrUoG zt$apI{kLtyca}I4{1DxIc*SlN{bgOz-AQ&d+rT7h5!pF~Th|*uYIaOq7oyg39kuCU zWD29}h>IF`HLAxV(f#X~6nn@G95n1P5%&#+9?;N~)i| zLv&refp%Fk70VW{Fx?N)ZQ+AxU(=b_=rsRW%+E@H^~_ZTv_aq^)QnoZ`0AkjfD#0? zua(@Ye!d#O8yce#Md0LHdhQ+GMcNf|{Gj{{ZA{}ENcpb5@!Ug;(f0+5TvY3~8R=-%%XEl@qe)nt9~s4&h8mwFn66?)I7@MhAcIeLGz8&pjY*M_ z$(;Ai-G{YDGJ02|2INsuA}v&T_mz^RI5Jv^J=|Iizpt&H9o#$L zzTOFoFfSVaeY_h8uJ^j3?1}&J4vIt15q*}h)ll3XHrPw+YEbk-;Vqw@uE+$1-go!o z(y`KGJihSw^7ZLag1xZZbEQ3T?M@_%WS5{PO*#4G!|wF;u)+5l0WysK8_gdqvN^P) zWGAWI*?Wadmnb5#o6)g}hMYF5A&hDqO%MVio1lKj-rR&LNoB&Jg#S(VWU&<~97(Eh|-zMf|?#$^@$O}C4{ z&XzaA(Iz-74U=NdU@5>El1@_aaQYn1a67=w|F*rfMO=p&v9nd1xwk!T_@o(9FZ`*T z{*HKD==MPb*3$#(`BG6vrV7TnA+{HE2Yk!c!6v_x)?c(E6Wg`iUq&?8wP93GZ29eZ z`h6%D7lhRdeWQPxk-(LOHEfLFIr{svK77FjpZJGTaOSz+aSIZkP>x2}=hiWww*%$n z>&ZMJ%zjm$67~U~knKy+=%`+7I8@w0>?Xag9)+%3(%lv6iI>Yb7i4emn=rV+)USRs zgGdF1)@TnpE39k>de|5H-gYij=dR_Vk7)#37G{hJD{2GXA=Z<9!8#n5I}=`LOTWW#X%B+}Ug zwS5K8isst^xhRKk<0ML}!>@A$Voot($wnJQklP2Ve#6B=UD(kOtAk@)%B$9m#%<#g z$Y%~aP6)Q27ll`fGmQ|5bHRA~VK9#SozbO{5URdfH<5xacWMdZb#W`Qu==gCGyyZ7 z(A$J70{=-;rLzt9nohUM&D&%#d2*1E8+4>lFD>}Yk3dp^3rnm@R5O)0SFK+^X_U?W znV@zppjy5o!YSy)eU#vx@zHqAEu6WRS~D3gex*B!V_cYiOs*G-A+}6lmnpHTxAyd9 zl4HCxQ-8pyT;++8`2K)E{@fnQ#=5 z3+{3g!K9SZ^Yai6Hc?0~LeGf=+!_xjA1-Ih!D%T|wt7{s^&O$k9UED`;alq4Z?syT1kcw<&h3uBRr zHyWC8u_l`P!-7P2u@+r#&Z!O!ypbG3Lh{=<^SBTOGs=ao+#8mdJSa$=rUw^D%HIvk zT30R-)5UiAQbd!X_~!-mf-2Ak7Bl6w?l0SCS>%iINnmiSS`Qjo7;GP$h(k>8*x{K zyW;K(q*uH-Hm)9k$mI8h&t!lWB)c5`8n9pFpF-KV_=Bck$pW0dQ0i0o&|m%zfR4f~ zxiedW#u+wJg9`p*09Y+%uy?<`8)k)e0|z_#{+bdfR7i#(R>Qp<&=q(Xizci+!6mnzTBSt(zKH_RjdXiQ?uK`3U!H-$5#i*-)xPe>bs>*KcA?joXZx{c`mKCJ5*LN2On7Gq`HQpng4X~C7?<+lo$w3&4b4lSfgJWBDe>?f! zWh^qXr3N`74-l7Pb%!`}PP4>}$HiJ}tlIuW_l1HmNb6L)TsiG+>II}Nm5hIHzUFiK zy_}HsmcY^UDGk#>3xg6p{qESn#wdJbDtchP$)vldY{6P^Ah z(UiCmxGK!j3M@QO+IhQ%QFGLi;8OF7PWXeWIVzJ1H5Yb6`p-yZ%Y=)WwXj2 z+!ta^*j^u(g137`iC<{du_Iz8`Ec%)eT!>VjZ~6=f=XX9ZukVFElJ3uE2|2l3qTQ6 zSnX=F=*+pQq^yi@A#_Z#;vVBI&oYq$e1q`tu_wTJIpMW2W7hB}`i3D!$o6`qRIfZ# zbM5Cr{<0%#(3lE#U%fM*Lh}soAuAv5fJro%h^UhLZkp{8nzJ z-SR5V<8(L9#>v~FZ~(#c;Wv7c&7GKa|4#XP9A(}aWU_ZKxmDNHMX+M7$3LD=sB_M} zgtsDY?p=iYf{etM9Z=K|0;t*Jik^vNyG+I>>Xr zk9OrG$*t#|P(oLQoSE{IJ=$Iy()_fT5^q=2XAMwCh(r5tdhLhME5c`nUv|Kl2{48n z&--SHde$YhG7Jq3_bk-(DOa8&R z$b;{9*^DtQcM$L?39af@U-g_?SdK8_`(6ya5&)eMc!v+e_FXYnvhKkA>&Njk(4M}CKP&UzL=t>s7WvKR!mZQ}BmP z!;9+bgA`OL?RTKbb?;O%LS+{Zj7%(xRT+>VJ?YtAa5o{@m>WE?n1LJ(*9%EVevIuR zTP(KwfJjcS9zBR+((#$GSE>DFdUgq)(_zEQM`Q~oSXh5=-{ZHI{!pf?P*P=`;h+_q zd%^g)(RTa~Z=fZ6(E4HN7`LAK4VUFOC3ZKSHO8{g9dj+=#ha)F)1A%Pe3d;~s-Yx_F>=5MJXeBo22X{> zD$Pc8bIBzPMvC(2zkY$j)WB+gawUYRat$*xId_`fi1#8%vxhvja*sOSBT??$5Q(Ew zsYz%KXqe^B*&TJHBI>=Zp`cSLpG?0lxUv35ehJyS^rmj6y2&4(yJ%uFPDS)UR**6e zcFgS?;D0~Ymu6J|a#2=I)yiL+G%-tP^tsOq>1tq#6%MxK)2h+XjbSv@$yFLg;6lmM zy6JxRy9z~&EbPD^HttTxj>ayTkp+_cRPj7HNl*Fe&XME~MJ&v1^n^jBHL%lFBDSMb zcVEs&G2MBEtPdhS%kckFjA#y)SS_h=V53-AdQ)U<_|)!s4}t9lkb=A2p9CfbvT({) z2*SiAr144W@e_x$$bRs;kcw+O5M8DOgT>IL3P+3>203y@?%(ARh?$`_iT4ncb^4$R zlyf~{z2CLx@Q~#1-!r^@3!U56j5d|Q7qB_6^84Y^*dYLi^xWkHk$4$@d>cf@eo}Zn zZB=|9DeybK2bJNG3gHB#Hd^%{&EaJQTApuX9v;WYfy_ij;enDvR7;b?kB*y=?q+_M z0F|^}+YXUG#2w7zptAHtp~P^cQBcCl2&yyecqseU^2j^>tJ>%3G7&SGYCg^WrnJh~ zBCQ)lJ-%QfHf!je`O|6ZLkoTDRVG_|8AscE2mOwU(Da^x^rOk?6Nv7RVt6;RXMNhm zTNk_tw=C;X4 zl>_yQ(VA~15gTraT=p=AGyD3KDonfn=tc7Iv;K|PTU&Q=5S<=<9Cy>85+CP^FvL}m zhx*iut+jz_C^L&fLHwmdLyy^_C@x+D4pMGFIB()Qn+dUdxNpnnDRe>r0k_<@Thnhd zr1xO}rvt=_Vu00{YWF?Yr7-~-uiy$>MQp|Roi-g!P;wo8iV8PQBLTh@eQ;SKvE>_J zRG_!Wp8B`03iJ3x_KRhvZP8w)0_5bPB0e;ElTdweEriGy5JK;xO) z>PQQ5MxFB6E}VL-GhV0C>W@cFnbVZ_emMLUTG;$wQhvK@B=>)-qD;~lf2WH@jL#x( zcI+?8iq$PQ*fnB-^SLnei3@yw01dH<7o|NfC9+f$qJp*ZeQNTTva4>*iRKy6J4AKU zz*QmRDm(?*@`u~`H>w1A@7;P0TsIiqV-V({rBp>_1oRv5PTJ#OU3ifL>Ur+INob(9 z>*_`|Ft)+RbT-{ZH(BY;yjAS7 zYyaU)tLuTqoZO#QWng*OOJqH&M*0C5AUIvbMV@3ZI(mO68{S)fTp;daM32?gC8mvj zB(yYqmy!U)_3v=Lkhi)}ibE4o%!0nH_-Y`A6@HmyTaO5Sn6%D)=z(Zmi`ZI}@cxB6>3*+l4ojN5r$N=_D1M=gCEGM1 zGM$6@QA^6<+3@4fJyHaZUVCpH82$i0!roS(o)XOv7cWeVuvHNEsPzC+g`ry#YS_|tWm?^Of|GnJl&`Uo zcNHbXqm@Kh?7k}Q3U1Qu=87@}rELXP-W)zTe$4`1|!X4=M+6a@=1mROox;t|)lKN7V~p;^w-o@I033Kk2` zp+2>3n#mXIwMkF5u=oGAp>h;WeMbiIA6p?n0HP=m2I4%c!$-N z$uzv|iA5@X^}~a*j$eIqi+U{FsCq)EdET@Aah)??P>S1#R+$10THs*o4)ZsEE}fE8 za7jN##Abe_`TG`d8I*mMQ2e}r`)ROcl~z=JDV(?_FEY8OLcXfVVv-NpSH*+fPXG-( zZ)?kR5l_kd`=t$AZ*T^D+1%`C(^^fTkO!#dP3W;7&tV-4pVRS4MIi^DO~6Hks!|&z zsEZ8dRHGjWcsZ*QS0*S@aBhhznSku->R+_@u-B;Gm0nytd*`Zld3Y44%R1Ea)v#LB zt!rqk;hMBgM~#EVjjXIxUXDG1+&Q={Wb$Ng{QdDT6wtzAWvq4f&I|NKG>p&XLRe0x z|6P_&j&?wN!9JI8dTYsNV<-x2Na?8VCA#I)?SEnPL4eRerGwvk-xra+6N`qPy)~C- zqCG@7vMG?Xj|100e&n;J9c4UFX4E!9TlSpsNyGtUk+$yRuR?@nUd&@|EC;IP*wl7N zhY3Uxy)i0lY0ZFBY@^shmOazbIq~{C)6eA=^JD8AC<|R|sinb5Nod2Z@kUpN@ zc}rq+0#kgTlSG%8m@EGnRSMD308!MMr1L!MV*}zy8{J;wD>!Ij+hPAF_LPBjh z1;PYIwNUiDYM1P}nHZo(PIhg8^Yi*-k~gdsZ~#IS zizso)E`B7uQ7IX^GTRKCjx#Zr zFE)0$urRg6Z86_vz)~BG&Z?`!3QXW54#g`rCf+cU9xyE6r1zdJ`Zf-&e0A-yN%@Gv zB4Huri9h9d(A<{Pg=|su2IOFbLQ+S&v7M8t=RIu9E!wE2YIDv%vusV3FfGIH>Dx%9@`rL4|CQs^!B?e} z)!6I-@9(3lT=-NK>lM+f<{@pSgC%lAGlh2uh0;WWQjHRr;xK8|yEaC*Q!rW~HTva5 zvoS_6mfhD#_}XV0DX&_eNxx1_Oo)HX3wml2_nnDqgh05JfA0`dcFrPbLPfuPcr3~~ z?&|`%OT(RaG6DY9{=?mm?xiqNL6UjyhkOG5)bT(O#K@35-g7+W&JIhEYuwZ~Ae*14 zV)t}GnRmhN>@nFiQI{z=_$-iMZl%M&+7?Y+aJjo*srInjcwU4{Ih_<7HJgQe6Rx28 zu~LJVryRL)Wgc^U*v+jX-}Mu7K_X&t*i6za=IKzJP%iZ8VayvfL?)&>#J8|P+=|s2 zn*p2?njR4P1HdBTjl|=`h1*@o=_e`eq3-Y?DvnCLh=pY5r(5+=eprL&jaCaU>KSO5 zCdp#-A7^#AVS_b8f)kjw!z+>PbC5#pZsDLGvd*(V(zsD`eNHh5O$nMV1Wip zWmtl`97ymcT|!EvR*=AyB%nVmqNChqp+ea0a_dA~1d9iSCBL%q`3a@i8N=%F8LSbV zW(%WObk3y1X7GFqWc8}%);cjR`L!Ua6an%nuk@v;JJ<>QUX-A}DVx8&pKaaOSYv{J z&VYb!l{R^r;rE-e<_HXBMj=n+{+ba&7kQ|5D7z~(9!i0E6oUf%ku4zRE*4h3DhD4m)AH{a65^uferjEJD229C-wlf7W;B z2wtOH)kxB$c~f>IMq~`TQ8%=4hWo4QR&fm zkBC8SjRxL)gQBg;w!gsjX(<< z{0KFN0%2_(moq^DV&q@QXTQ)#C>gA^Dw1Q=uUE=AoQ6-yrB^i^3|n`@kC9m&pO$z7 z;>g-_O79^aZiobj2ve)7&IypR6w}hmVqosC9U*LWew>|L&Ntys7I7@MH1zfp-|1FaDv609cvqkw)cz&4xCz6Ydi>XaE!1*NLUl8(Z$>8 zy&|D_`$AsTCLRdnPoA8O$_PT*jtBwewoX&X266H0dW|p&pT-A*5zbmP_Qazj`U4`D zVS!Zb5ZM;t@81UYov0**_u1`p$&I`F!s&YNzJ0tR9#%u_OHrVu&HsjOfEVh^hkv~8m@d#TcRa1 z(14FEM)s_9x6&&LkhI1ZRG5UF^pc-<+h10HXeXXInHb1F#VJ?MroWb2IZ3AMoXGA- z@QeCL1RIeS5;mqFZKbs312mz~&2ECkPkiDqBFqKMlNLP~(^h;!0q&!>*9j%Gd0vI= z%fo+-|B5(WB$oaS6q>hS-A?eNY?a!7L1B1iwSK!uaK>&(vVpb(_?A_=;?b5UP(W-N zly=9*Gho=yff@S($0R$*LuWNV3;AMC>rDpR`6r!Nf2V#{Glg0|752zQ``j=UBT%qV zgoeV|Ua0F26QGCEW#I!4$n8D*Bt^swS`93Vndqa%{Z$%2JA#1+{t9U`HsG8L-_$$1 zPJtOC*X;XYRKE);JiZrGhC6a*`HSnwr|OTW-D9MtMv`DRm*N+4JsVI5?`GBWFX8xE z<1N0i$0rTo$xx9T}vClZ;@#dV#W2Wy3w2Bs}|amZ%X}gU{MMx!|iU2rjOroWVs=Tb&d+` zubwF6ocEvRAdlQ=4&(DCg3Gdl&lk6Lw+ZhE_Db69dy6fl$7-v99q%m`TLwqC0|MKa z?VF47D&K|Z3$*oDWncK|^Kj>vsSjG@+pPv)P9TML>6A~i!#I!_aVs_w_op8CS)JtI zEb4U*A>0`F8|sug+?@tq@jfmhpG~PtseR@Lz8N zAI2G6EHreS5iItyt>zB~p9#eu3eieKh=ncKQhGP%XBPJS81S(s| z=?5e4OOM#AbAW(un_p?{4T|T+8hh>r#1mT0 zfMSs$b>C8S@=mN6osu(Ht2LqcQq(wciSYh%KQwD;lQFQmT2Q@;NbpH~kkbho!FVN5%jcq+ei}LFn1xY?*SsqLL zwH_)CfZ`-RvyPr{H{7}=vREW+!Cv(7>Af1+$E5(9l0v6>1-wIDveoQUxN+pPh{UGT`fa6)Vb{!)Pg~zL1{(#~T1Ydbx#UR;^lSlRdA*s+J7E}DOH6Ux zU9pa;-o}L{v=6rgreN}{8c%ZZ@EcFcGm#$kZ|hrRFi3i4YAqEjOz}R5PgUK#Q??(-F*Fv_>7N)0!an})-wcr)@ER^51C#sd>3MQ8qe?u4H8TH6p z?V~D=Q2$sz(irUNfz9O7bfdYKCRgli56_b8^gFxfH>r5E)aFbIdjcio?$iII`3=QW zcBu|Lp+0v++H~)BQKph1u6GNlQ?rXCU`F%S-kMEmFl?N@=krw*U3=+z3Rpw8bbi<_LS6B znb~Wm2Mmmu?~^w4UhyXGVU9^$uZsj+rg31BC9>IDCNTpcGbRYTJxp}BFQ5?yl*sP8 z8+I-t=Lde>rw&(fh4knVbf+3dT{qbuKQoBll=hm5jXruCuO%9p^}d7%r{!g`72I2X zy#<|%b!4=IvAb-dg_Hr%a?&d%IEi7iFE3O)YY7QWowg^zKtAY`M>)jpjcB9vOsq) zAz*8w0z65uFCnCnt@V(vgbwb|18Z=JZN`6i1ll`(Jn!tHkLId8Ew3xG@%(Px)2b+> zb^I6h52%HaJYdZZuh-)Oeqy)BP#!RolTQM|QavGWn!S zbsnA3YjEY(Y+uHF4-HL5drHcQK0EP`WF>UzZNWo8AV6kDmKC``3+m&Va&D%h@#~zu z>nAl-Rk{XkLaKF5rf}F4x^hZ-I^2KY!CWKLC0%a)_&47xT;V@8*8PHB!kO+tgT6-< z2Vbug9sWwpx~l(k#hUSHrmMPhvaB&Eak6`&geb2BcSSNm+Qp}T&{WH)RTPVOaoeSm z!kY|nJ#f4K!1@(U1ZnaA?sFC;t`kE7uAc>_Ky}irRRQLeJJz{~>uFW~2a#5=YLw1* zUonq=K#qIP!FNIV!@@2$5IL%2Z|_0>2hazXfoRlE6EA6BV{*h%pYXua*vXlvsURIV{UfCaT}m4e;i8_JXi$>b zO$K1@iyr-F(kA4P4r>41Wo|U!NhP1XUP;C*L;QMi3F-C9?D7fbwn6`pyfaB1v{NDA zVKPhPYqctHzs}eSK5fXA!OuVSDPDiT$zt(EfQMy~b(M6!{Yo+6t4!{g7Z7q~u}^{h zSF=!ppb&8l0OFMF;%XCMY&L2M?hiS9sLRh;E?4;vlpI&7mt6tiEy%3x2n0Me+0G!n z>Kty$OFZvW|J7_9BmzGjwe*W$#8ZoX>Bk?BSTi#`6!CYT2pu$2)+@zhHfU4| z>`MXvX_NM31tqgPb`sk&y5*yQ=F*nh=g-~r9k#y#ibH?-UVp1>D2x+HVIzs1YB3SdJZBpCqL z^ysG<7$0Qx4&0V6x-TVQw1^O2amo7{-?Uy2;I)q>$h+VAe@j*V=tE~Il)WXR<4mr@ zE?aG9c3i`@s_-#gc^R8C32a`e?M2dQh-^@(vj98w4B@FlmZJQQ@1I=?jPudzFCqWG z)TMuvDnav`bKnA3q>dutKf!ZK8rNz$@ZYTpEb8OntnU^5Clmn}34Vs9;O2rtZJ9aKd1r{3ij15pxK|EBU!;1}EW2y2$%H&7Ks z1UEV7$^0pF0SGyF;;f(P`bY2(x{vi?O3yiutw94R9qUh=B5iAcoBV5W%ZP$%DL;!yurl3RS1Am5KEj-6}}6}E7y*p$64RM{7;YzCxxNx@q-s}z-#yD;JZ$Z zzE}RYFf%li_Oey{(}5`Ao7c|8N)#Y;s3=J)h|1c%@*P0Gt5kaa@Aelm1q5Ml6gQ~G76!!>j z5c+zBTc5tR+0IZ)rsw@FWiak=1=!3*Es?&$_^Js6ng_oB?qFIa-xs_YyzY!hG{Q&~ zSL|`&&j0#+L5RpwF@6Kt>kQR{M^M2(^p|oH6;dB_~~8|r8Jfxj0{ zvB9%a{;qQ#-G4?o|I>8k%P_lN`l4gN-~R;9G*vv$C6De4cp`FDb5P|_v|kAAt0ZMn z{+cU=o^tddG4`dme?q|$Q#Y{(x)|(YQ5B2+_hil3FK<=fy_R65c1GQ^STPs+<^H~S zIN@JS7>EEzGf`}Hf1cL625vWQk*=gTHHo5AMX;R7f_Z9)(>iv`gs3;By0`peh=I>qKJq2mv~ zTW?RqA1Qicg2v*$j0KdRH7~V$kwXWPCwuBS#{lfOa-A*cr31SL55w~ALx(V1o(4p& zAJaTnT*I3N^cAPxl&|22kuptuz%Q>81&a2jet);I$8gFu zWHf4y$jGtnaR+~xgAw$<%Up~2l9ka39$S%Ht&1J0*+?( zz4Iz+uGuU2q7c^^#p#^{w}xfhw;fXL=%o0HD8a5;O zqCc3j7#amH;@6hZjdoQbr9#c2|lsbnj_mHRA>i~C7j*U@ObEBWD>(NT!vqYXKw$`qQB&rqGt zET{Mqkkcw3bpJ0&k40*lj&_%gy__dmXupveM0xF< z!Or!G%@$X0=WCoBZs{8}@zA`p82~6(qJwPQ;VgAa#6V|5z}S zg%I|=%~vlJmm><3ij_S_GVaWW`uvHknvD_9pxYnT!vk)vlNDkWd|>9?*q4lXUA0g7 z)d(#%xJLbMo$Ui1!o2sVJaYa1ACQNhazOSt~P;p_=y&|0QU-j@c z&v?Zk5M)CE`-ijyXwIRsI28Z|VL;+RIaL6c2VY?y*!-wv?5UUS0}-@odt7M2CpiIq zd&*pNH8NXyDz*;=dCw2(A{@So2%;T+>VY6_38VG0bP1Z5O&npHPac5 zm9vl~SN2!BQS{tcQ)BsBmo}nkjP8S!50m!*UGv7mvR8rRN*43_IXDl z{J6Hvkp-hoLeQ zUYGI(v3>xpDW;ITQzv+UN;;%M#tf5J`d zuEe?b#gh-qEP0rK>?1hSU=>FxN8erfL5Gvk+>+(%*Im-n2qJ#MA6^tY?;jGu98qQ0k}4o03RVNLCEO z3Gd>uz5v8IyXa6hCt65+y{KzPwtze8wUJ8M`e)IKM=eh);9QdMBNfh|2H7~sku6^G zTEC~L!1JKU>tr}KI`=X2eC@t~afHP3%7<#|r3l{!`p;8G1NA$R{bGEZ;)9J3$~Jps z9>!|t@9lrV!TNB?vmuhVAoZkB^nSePQ%se5Ar_!|d5D0$ZTi`!Q~ z2$0sHa6|rlm}_x5f7ny{z&@R5`kj1pNVuWVB9^_UXmjW+9-MW$s5X39Tw?zeKC^&= z@9$s;uI?=-=57sO>a2L_|KTm`1Dm#>_b8C8;I6ZSTda|t=lI8wvY;jC-{ig;C@42e zBhCpmU%}`s`)02(`92|2q<@&>O9++ki*e-p7$L*p^_zT_$?L6KR+M znOIK=nGw44DD+{Y4V_HiS#B)uJEa9K*fzB{AaMo)P^{L+M5L~Z`e{UTb>Wns21tHV zZfx^2!9G(8tj93rX|{+Q`geL?z7r=pRasSYZM$atmC|tHmJdoUrX-BWQzNSwMV_QF zVvsV$=kP_+uoqM>R`8f|<1vkfsCC`_Z5gPgdCW5K)rD$AFm0jBRCv4_{_TAZV zQs(V>6iJIUqAe9`%>6wso6N6{A`ZSc+n858vqnR$DMsC15pKOku8K(TPd#VdKZcl^ z_!0*tw4bpEWL*!F71w-s5Dsb$C&m48kXXW@OThhM2-XVRVo2!Wwkn zkJ$UG-9!%`D;1sl?uHuu5cm=`|7p6Fguxk{6yzLKAhJipt3$|bH0TuH{O>DCt}2Bf z68`Vik8AgioPtOuv6NdyN5YrloH}`}Z#*b^e~yW`)wn;`Q`XbW_x7`2+>@>qlJuZ1YIyp7r|f#Jdf zo!(1TJC36_CwAb~87b1e$UGI1vN@8lgrL{t?ojDE8KX-@Fw=m4*M^0BxeFC%u?;Xp zUUh%Kd7GDT%+C)K%JIH;;?GK#F*<~s@G8q0ZCGVTsW*puv`gLmfpY6C$IpF(UF+IcIaqDRm} zY>tA#&Si~#yhlR`3Ql}LgH&%&!zihh#!GsVZ&ozju*^ge^jjZ6SoDFg&Fo{rtkn}U zI4y5kC(6|tc$#xw6iz$Mij$#o&l?J@Q-RZ5nOlHHdGct90{ytf-Nu8<0f6~!uwk$h zs%piOGyj5)k0tt?S*TFo%;ZK>Wk}*{Xo`C>{{K++$Wi9Rl^SLk`8VA^i|&OI8}Q0%x8DETQ{EfG`u}oEZyj#;GIgBE_Qh=cKmjN+y`cLQa+RGGynm)2+0u149MaKGfj^g2 zqmQdg`X1~y8w6XqH&Ln?_(NzYS6kD<*|w}B^0D1$;|1ckRXhG2^5F$cA4S8TLXY zRo2P_a2i?&w)D zL#M%G_x*vc*jQ?ve8j{eWn;*>S;F-~9xCp)l37sbF`)I8;4Udqe@Mq7rFo+KY1N8= z1J*&;z3X!@M0PAMg|v9u-TE*#JD0?qYB_sZms3hmuIGeTy5_M&(p<0)%1)F2<72J| zqBl5d)+6NvJl%VVmNuYZlOa>GWic^IO!S;ICJP_$Ly*;Ubqo@=_n3{mr52vy!m zXfA<>4+qeAG}acChFbAoKXcWVX#%i|dGl%HZ5PPO-4=Rr;Sn4Fvq-jI8vy)?)#Gj5@^TV9L<0XLp9;evXBsk@+g>OE)yM?h}&bZE;9 z#W;@@olbepx`Mt++Z5Q&Xz#8>RsyZ=%XOhq7cu_4_*YCVJ1)RtR=rcfbqpX-`8SNq z*lO6gQ#e&FBIe+blWE;iiM8HNP!VI7?Z326x0oN0ru8R%a;jpmtj1^%LoGRlZ{fD20vs`iYl2mDFoV7dX(?LD&~ zN7N{YQ&yyFOt1;lb7QUyqj()3mZ+xcb0HL`I5!kRYCa2g;pWvPWQ~s2A{Dso?ZC|$ z969&#Tw(WypAo5(KbaFDg_TvQIS+%GrVP47quCMHY{>>~BdsSs{z$LSb))WB_P>40 zb;f#r$MFq5T!P(6KNY_;)$P1K3m%4nAV;$|{2wdcGjh{I;pSS$*YTn%e5w>(&vVJn zmPzEs7tvCxMDrj*UHI^T4v&x;k?%4Ii@F`_w(3=#jd>i}bJ%NiN`xC-AW66Tk4L*} zy-$PeVRt_e^Yaf19F{KW3S}2mri~q=GgP%N?HF|9+>D{=GsJ0uL+(x{(YmRs2`=bv z8zUWYH~=TSjieXj6{akFX!e>3*(eFI^(W1e{*j;Gw6%N`EdsfdO1*G}XJ%e^ro?s; zPg(XQocY2xO?RQCdDQ=+T#I4kR7$vLX5DQ^B7Uoumxc6=>0#>f6cOUFl&FG&#tHz% zeFFdDdef8t#r38){r_^k=XWU>e{;P+n)}n1iKb4|Dcc-vpsfIL*Ajck|AM_Bsby1- zcmE}O56SUrvRPtJ65J0Zr36wYPxkp8m;&U(%E76sYGz87W8)?#yU599Ra2fyVp_5T zjhpnH0^fkm)1KZ*&*j`*bXX!%KEU+3>>d6&=kvsu`Qzp`@~Ao>hyj}eZ_}>S=G$9i zYX!?;XZ0b0-J7tdk^o+hYv=b3youpYRC0KvDI+FW74kKe%1Ol z+1@_V^8|K7L?6hBg60#Ns@eG7lGY|UO^Hb{)L9~9ePFv5jNQri=i&v6JV?Go860Ib ze&bSbE3}Fyp^G`WXD8dhb>&g*v`#@#aSG)J`DYvTju+D}Xt% zkyO#b;EazSQVeIMJrh0ro1l;U;{Kits3ufuF?e+AW2l!c<-Mh>fzcG&moA(@mI4WO zr3TU5=`pr-GZ|)!#u*7OGhNF#7uB5j^K@;7$#w&kAhxQiD!HcvQ|jXVqrgr>d31ye zVgkx%{*dp)=GpYe zcGX7$o_=VrnfKeHclW$yb&Ysu0`>$y5@<;Tr%LyAD5R29{>Q{yQ{GAbl#m^llrrev zSb=b)=JYAN@XavSQxv`pv7(TY(*HD`SHr3&Q?WGmuJori=6O4Il_y*g3O(SI zSSUzAX8mQ|wGxjL!r&M$pHMB0%^I(i(TGtAq0SOh_=+Q}V^}#Jq>{KqBCr2x#m6#Q zWP}8e4u(T$)&9s*`31wnUM(-m_@ZjP9CgK9$dw*$4s8za>PbN=V_s}#8||sr#N)t1 zpeQ+lS{0tjF0$cC^w{lhqn3;qcB7HXi8!_4;186dNcijHx@$|sTab$#`v7CQ2;mu5 zMDorWJS#nXbNBVK-`ptOhW4GR{8YQKH+GCTYi15(I1f7^-z0p#_t}V#RBXDZbjdA$ zh&gFyoO2=Hf2CVXQ*D1^CgSmCdj3J?i&2}N{b3`t1M+2-Py6r+QtPG{Vr^%zx;`SL zNi179=gh;|9t*5Oq04+o#IShyRQmAtCwgaxbXV8uXEIByxt8&ybHA>s$6t#9nqzVa z*_=T<1<2*AOg$eK*N=Y5G}tjjZl@A8RFt_g<1Pb@@DU-pE^@v*@ar@6EUemf7*fW0|c)d>6<#)X)5Z7yWGp&s1BXf_~YRhd)zHP~vRB z2jO#0$Kkpi-bDE!t)E?*(2_5rNo)onw9CIRrguZQ>h7!S@=7{&@0q6mX@(9FNf_%r_?9KN%zG&l z*g?NYUwSnBtcL|Rt~Sya_k|)rivzEec^i6E`pXlu?WWWI>Rc%|CK3HY`F%3%D(&DW z(J&E@54CO5wTTgqQ!5`UHxE4wwo)11nZ6bOPQgFRQj&3eKEipN3&IYH>EeiZxx3A` z<-u-}_lYy09aVIM8~?Q#kpulGiNF<~Lc|jcB(%KU%~CRin6QA*WnF6=lR2uRw~4@V z5W+`UuVNz%2jksj@fada6Vs#l@X0fXfy1I3=4JFt^M$|)t=p558O|#652XHI^`zMu zQ?M~fD61L^ks6Lx)uR*Zc(f`oh^luINHYD)x43XASYE5wJ|-tJjIp3rf?^DYu<>St1{es#<-i{(dU-P{wmf0bEl9g8==z01pfwB?sW) z9_lWv>*!;zxv%Z6TyRgMPu+sEL?`%raQbO}4uGibEDb2^V-LD`=D{0mEv zWSwjuHTvEQ@dqQC%FJ*0bxhXXCn43!tNGr`F`GZuxt&@kNXRG>tbSfEN?Rj)yu$7T z`wJFm4qbj8Khm4|a%x`O+NrO*UY3+RmoLg=o*6U^qZ!~4aoC=qb}|;H9Vrk}`l0YM zDcby(pa327f&k`Co53YG=QTMUmWleB-sLT&)7id24fIlLfY7ktm|gSN35zII$7@s` zHGX5>^jNDg2f;$Y3KY%Q?k{7-ar%;-EFF~HuY3BK-bNDze~nmkWtjKP#Ruzu@V{Ir zw0qkvrZ3WEfz*Vvw_Hq?-ce%RP*i2}G#~y-vFBnYVG!$DwIZ*2)4ijS z`FppJ%TQ%RECM4#Vaae{{5ziC)GJwjzb0?rt?4F)ckEwREbn&J)COFZz}+e8v7E^B zWDwj9cWy0_(JrUP1YJ5?>1SAba-w~)OlCa4G!PX;H&@3C^GP(&f`W#Q@QsT*6!h55Vo0o(RQmot3+g27$p>6i4=T*G?-{N6^6dg4lQQvM2O%XjoZz^o zY)$`&kL+c0C+y-|vYQ5RTnDS9Iih{()?cALn_)gHk zx)z&ei8RCFm_>em;WvkY`fi_0gP_$jPCCP)5c_~2oNnKPsM3nfuO!3I0+PnbRM}(K zCu{8I%8Ga?o&XDZO$lj*sR~Qe+7P5hJnQCdk^VRlQE6EA+cGR%7r`S`e>-I#+~w8Gmm|}} z?Uq@Aut0mqXf%VT_603b^?J$JP*4>C2dl>sF*;<{p;^5w{4r&O{K)#;XX2U4#kB1* z>8=w3cb!4EyldI?Jsl3ZAEqjZwhlKJS+ZZIWBW_W8-|d!SlJC%!CC)Pb5Qxl zt_u5+_O|tz=PLm|rS-PB)b;o7{WQg*liEk5%N|=xGMkeCf}l4T!Pq-R3R+D}C%K^t zDQyMd1OF_bG`uBOdLE^zf-}nbRzi4PZkPW)pIHu~&;kZqfxoz(#Tfs0Wn=x$V@kD# zGX}Tr&M%7ZbHC=)6nR(aCfchJao}0zRIMh9Nn%#g5bVm@w{=XfmC|#Nens0O72_a( zN&9*97p|O7=(9E3xZ)3Ueks4o%{f$LDi@QTtF22v$xq!k08ciQQM6boRxJitorFdF z-bD1O@fp(q?4o|j7Rt6!5!=2H8-pT!e`jPLZ8UaAk8lj%grfE1jmsGw!~Y3WiJl0$ zUjJxP;u`AY*+$JR^o>bHLvy|l2L^j)CHwxi@Z*@RJHW#%{k(dyh#+VNw>N;(RDUru zp;=mM!Kk^|jjMOYsYob&eL8-IQw#HOj_zjn)~O?G`}=zR)K~ADTZiC%TJx|OE}=(M zOW%G)hH*_&)k?(L;_;EV+t`kAq_O}fj_jc@X95UP#CzG)DJy0 zEvQA$`~HQuuDL~f;m#6%7bQ4=ZBXzLWn>p}l!MjH<@z)NT>)lJNK?SD4$MXrvm4J! ziTa@?<1sAezN&w)lQ>4rqvjN1G)i?mNBdW44xE)9GPkT0pQB~7Peqr2lXGk7{n*X;N}HimIdQvy)~$$ct!`!X?C z?OB%SGbIxLvF?Ebi2TuroG3q^nh~J_0#720H6n$=Snq~HB9%SSx}=9FL-*AW_zT3B zT-I#*d^Q}nn4E@h7h+!b$7R9Dw!N8}p1vAEtAPp}Gbz0v&*SQn^?W`@3YQ=D<>Gw2 zW^D9{I|_fu!H}c8LoFQG6Z0g`?QkIE%c*><{O(EJdqn`cvlwBGOW=_LS{=sD51ktS z2FP=Hhi*iQlozdEKzkYP5am-h1sGeOgvXA60zrN?d_2z4U#VS6tZ9h?fE*?zw*fU zB@>mQm{t;cdrKH!h-QXgBV+L(kQM~=EFEzh>N*KnCd+YI!Y~ zlF@4n;@INzc%GuXBy?jU>B$PsdU2NH&t%-HcV4&iTk00>efPIzm>L1upsB8PSB`uSO zE}BwGyPuhat>tanbaT34ep9>me(Fkw1;Na1=jRQN3kr#R<*i+Pk?vkJC3n@ZciwZ$ z$`*KB``N|X#@vpcqVo((A@XbW(^{QJ<7oHNd6nDLV-Wj{DgZk?jjQ;7FhY_rfS-9T zj&V~lj%Eys%h_lF*LV&Y)FHpC^95MWp$gM*D+nGDEz!0>_y2z1PD6#g$3<`pSZJh7 zDG`#W^!I(c-$_*o@sNDH_UuI_!Y64%5LF+$dcasNPd%ZGj<&rwN7c?pWO7l$Y@$j( zqF`9Q)(xb;!An?`NXTw;+`}z-0l&_CL=y0}D0D0Rk>i@@!q=zal_4Il3L|GVFfxi$ zpHId$b+1as2wyC{`f^xD30#x-Tv>&Y;w4Cmk?^(Nk;M6l-f!v5xNsD}1>I26m=!Z@ zlh9bQvrK#R_D#HDOkEQ__GyAc{TC&9@p_M%u=VS(w2d$(h_{3mKM-jqX=U4@2@k7M z`Cb;?BJ;RfxD)w5RyX)ybxW0QZdF3NB2aVuDz`E;*XG7&H3A{VsV<^Jm%_65q<|({ z+&D?E19wut$s$(-2I~ z40(!vFx0Y|Zd!v*>;r#xwm5ERtUJS`Y7W5m%;1RI}y&L1Q>WbASaOt1*9zM2u ze>S53YI|9!GOfp&c2t6ht5Zb~C3k^=`XAgF3=aca^$Sm7grG}oT~@xs6^FAml)daSdk!O$b1^yEN?zO#|9a_*QtPx}Y@x8)*- zWf*P{2u~?u)91gS=*^@E%Xs-SF)X1I6}(a=etA~lbSQ2B`iA&f+X znc6(poKWs6FX?X{0P^%~SUPBqyr6QF!`VC3%!6xqWu`{f@9w>rvr>Furnv;ZGx<&V zO^$wh&XtBwGBYD*0Bg)o5&s!CqF){U&bF7_ZqLTSO>SV-+xz6yXHH%gdTyz`iwgag zXoGz+Q7}I*+#PSz=HCZPGr#*EPvXEucFX--i=Og50CxLY56X>t&^0F@$_d`c+)vDD z3=T%Up^^5k8h_#6DVoC^gq++Z?PM6P`U3PlRGA45c>np|8Y37V z(1)V_TE>V&!4Lm8J&R`i&yZg(b z-yWWyPpMEg+kk=w{$$Nh&ra9!q@P~xJLASue@stbmegMiH+>(4Exoa+>$L{<=3DMZ zy&lbxCBwnPW7~pB|L{zFkKVNeK{ab(`7`?;^)O|9jkXf`nmVCp|6Q6B0)So9Xa*%~ zaYdZeSyVIYW+0xOhLLen&_Z;O8J1!?4C{a1GEwT60~W{ZnuA<4YY$X_&9j~u5%&LQ z40vgF3@P`gFb?5ag_SN%oAhV3S#Ut+-e=d=XFJLkBBx!UM5xd|y~LsL1D&J-o-}Ki zlyiLw@OwwmCS-5$@4Uqi*2cGi2~Q?ATMwfS=?|ou05P_>2mb4gimwh!bqBEyzeZWY z+6;hENHE>Y%DnqcWQEwd+LDX_bLqby=!0RUcWu|f0i+|br9Yj}0_+(8Ctd^px;EjX zd9K$sGK~@PjD9~zMwIYGRw|4l_`43#%m}mW%R!vvcP_< z#Z@~Se$k;X&G&f_^8Be@C4$a6g;nZe~1xa7t#{LDy*FSpHhvFr8Y-_FrKI9fUEL>Z^#!z z5BxgQ*apad2LG4Wk2&&YG2^9Znq5WSiOqJwbIpP@s#=$D8 z9`{~Lg~K&7{7*%#4;5903<)7NoWqk)^@JEH+!4y%umQkH|4L=!_OJjuPJz+<5&5J4 z)E5<1T8CY~+E5#pz#x9xtueCrJk9(K;G~!>gTVe42M|yDXP(t)-f_K<^T;90p({9C zFPhKI1;!T7q!dJ9yV&gnh%gNSc2|&c9QHTpH)swPYJJTNr{(2!yor>RYg{jYJ(ZyS z4To>bO#*e?eC?BixQh$*=^uWeA9I)n$eq#hd^|Ur#`aCTdEN6sPe5X-2%ky_`Yhb( z*%N3qaaAom%>|c}@<%1PXLSzO=tC-t9Y8Y4BW;j0PVjd2+GHsrsr7cqX950^nTH=kaXJP=EjVOYuwS8Lm(6D;1m0Dy8@Lihjqyn^XDO>0U+Um{KYxLu_yP9K=Q zUp_X6A&xj$pNRysx9C$XDPw=p=erSx{F!tc>5VR&;`;a23Yt@ng;aEtRlZ zHc-Lv9e`TV=v~Ipi8rtrG0E*ucgpV`ho`?ZZ`3M8>vD3~^Aa4QyL34C&a^+D(TJ8J z(Cms)V|~H&+-j-Kj}A@3a@pGzg_?hQ{6+KWQM7FYMbB`v7i1`95?MbfIk|GM$bNfF zOp~HpCHl*7C=pkMNJ@S_T}`kd|5&ro&Fys$Pmf07s($lKCJ~lA(PTEFV32D}OC|Tp zCSCk!$lMuR9TlQ>_8(VDpVHS~#dTA1QsyJwI`A>(Uu5kl3a+ZH4CCC=2cI{(&Ka$T z#VxnoMY84gcbp|3rWbP=T{%pLMd@=p(_t(p@n@m+ogRRKo7`_#S4Ri42a8OupVm2` zfrmW9$vkRu(WnGCoiLFxp8vG{S@|%mJlZYNoR~f?8 zC-vyy=~Lo)vl&RP3w(CMC`3pPJwlV3;|4sw+Ng;ZmX&6=lo%wXoXJqg8)@zBHOh;+ z49NZZINM%>pmZxoe%zV@RO|_(gUtx4KM=U8`u-Y2(x=2sx}-JB zbKLpVULNE%Ibu{pmL{nT7jQtf(Zh;@s#k6{1{Vhxvl$Z&@}}n%R@7B7E|G0YO?jDa zK#55#85xDq?gOOjt6~OPeFLGA0KPE<7+n%vhh>(GdnkdPniu}j;6UQ*Z$Ed?UW<2c13-~a$;8xT{FF^V^oTJe|z_`fsjg2mqB04iI|hP?2IhE z7~wiB_5D@^!aI<{X-u?Edwe-K;$ojbt5L(P*#Q%agY02c?Xj-8MHyklhVf1ry(>SS z_A2<=QdInBB$VIHez)kbe@l7b>f#D&fLauLB~<%H&J&dyrp5WU_;UM82GqS zk5PVxnI)XnU#2+8wcnMiHw>^9P0zJzZE*ek;^dsRUozq2uBN|gw%cYigJN>9KZ;w* zeNVjQ0k?HZ6hAs(34xRN2%|(pS}2H&|7#vBdax^F%Y_c(PD5@L55%l$$hRoAJF#v1 zXjLxjmYjdFx4<5LqA_BL)*x&W*4-je26tx!1Xx;;4UkhN10jsv{YU5zbIcO%vuAh^ z8ZkK~gr!L)eFURU>NVL`;h_X2;<)nJfywtb!9wm6gE)XG{)?N9m8a1(2NX$X2R88dZ4pae31VA?Ba|W6K|!393DDVpbMH z6LSkaM!XW)bP8)Tir^=rgZ?K9bJ}4jRme}~m2Vmr6PvjB*|@OOcVs_R2}7B7TwNNU zL|4o@dS`f(RpJOxt>j1{$; zUe)@1frk_FaU$f=Si2wG&iNI9kb*ry-JS_xfglIfly4i1`=jTu!5V_!pP~K4%k%VnY9rC2_ojMC2z7n@M9-Z}NZ2kuQjB~yn&=UFQTeK-wr(ezsFmK} zjo?ffX6peA-}->OQ!8zJd8a5&A#B8@gB#|d>mwioywq;C+@i5f)PO}{D~pRSEG>cG zrh&zT66VAbx={nq?}?zAvTkWpXT+S$vkpr@%5rH9E^DYTH_!0I3E;Xaj>A;*FDRUg&t z?w!if`73^&2e{T;V4FParRD}p?uJ>YvdaN^?827U6~=XI4nZ?>Og_bp%Y{$4EQa0o z*b^C>L^&V9m>8~^1|oTO*!ew-rB9bn9u87Pyj7=eRPht$X7q1b2ATi3S;Ts7F#(rf zVib1D`Cd?ts7ptd?fCSeiRENg&*uP=wNkuOcN z8yx^y`OYM>KYG{d?%u8XKaZH zFHyC?1^<#&Sc}%3=1*j}r&aGDXE|Qa%hRekDWd5rZqg>LdnWMh`a(Xzyt#zG5ZG0uNoXM_{_JoI#XcJD=h$B2OVpj2(hLz6SiBwluo5s$ z)&e8whb4ORPyliNZp^lIt8qmjL}CG1(m_I7ufl0f7On4WX&U@@HQR_3z8mP;_B zzg#5`3i9Z9h=wZNabUp#ejL-*_PVd2hX=qB@;pW&@I98i;$zsY(G0vtb8`o@9PA$41tNLR?>8%hx?dVm1xPH$aeSmBZjpD z-$ZaDTEg|*^V$A(cz1bA!l}uIM7D#h9l3&VvThqf9)hg7(uQ`v(yy-j(aE~M-5ceT z+%RKH2tO;jkXxCNr{ht+KKe=Drl<1NVuFR+2fpkQ%=RYFEa9%!xitXl?^3&r;Le1TE<5IVAxcCx*k49wOHrsYGwut(Mcsu&$pO& zkGhcqJIprxpDXV+iI;KV&YX4hP=&jd!FY7BDg}~L5$YgMw3cEB7`LVf(=J(8p!aZ& z{RUKzE3^oA7Rx1zw1RS2m?T0z+$mM^V=fGxgg4FA(drT^h_w8JbnJY#-Dn{oghMu% z9rf~OOuoFs-Rtv%nUHY7J0w~nF{l%J)gF}CIg5}-7VTfkA^*UOl->y@E2|88!K4ly z!^XkPa83wjzrc?ms-o+uXiqXM^~_`%I|p~fL+;lSIr@f1FYMaD=kDsshAA7GENNQ!?L9lWp}%@m+Mn9 zdD_0(Mrn#-=kznWybkDLOYVkSlCVgw?#tc3Vxx)g2TO>S%k?Od zDbC84E+3W1K+Y$ssk;y?N+ps->*l{=C z1&AerC5FDMwbfd$-(6|JO4&V69IRNW8TFSf#79%2O&i`8FO+8qQfD{L2ZM=lR1 zBnb3@O)QtE&aX2@8sj*8b2$Rz+Ba8Ed#uu9dyeo}C%YBHA{Of%(7T)Iee)r*tm$zD z1JO!?fV@jQFwk`67y##@LM&>!Q%!@#Y!Y;0y?05lu)~4bSQijtMs2-PZcZ#m)*7Kt z4cJRmEo*#iyMyIcH+{dlOWWbi458&8vvVtIg#z6-csf7`AJk_&FLTeYp_|wAYrC<_%8$$togQuupDvO;9BYXWl093R z9Sqh{ZXvolcYhy-Kl{2TU2(cNBNOBpUV?{r=yiQ=7W_2ZOTySVzx6~dH zVepl9=kYJ-q^xnNRO36?TToBrb=*OvE*+fdvnVZ!4glfYIz0h_K;M|FKBSTgRJbF^ zw?C|0!{qxFgDaG{=-jH2t@>eiZ@nI$paB!#7^{hQ060HtG$o5USvP^%4Ew=~#VJqj{$OlmY2w z+2wfVbQrjt0rL9nM47P1nKJ`3PNG{pzk4 zzRr5{U*n3`cEU8%x8}kIQLC^{etU{H<^X36c2m78xAwbK%iS=!@JJTTUz6^ zSpCHlIo2rvFCJrWmgHt;Ibp%Yl|a1bD$h2Jr|PVF%DP-#?2S|_c;sfnda1c|ey=|z z)w1_sGlijkE9tc2V0h@*^-RyxC6;kOZMKNN+Da%g$3eQU!Ve4@>r`Z~IrB4j`f6ob zIcnG7z)ywqBvrBSEcx?1b<~_UIcafZ&d6bc!7_f((8AgRlXQZ4&~rFA;$-P-l#`p5 zm6>DH4{$ERth*zUaF05N>>w#BBG#YHaA-pKCQ60K3~V4uL{R?b$}cYC4$)XyG{p^*^LW9 zTQryNBF*xvWLkf8jlJU&NS-g>u8lj{8;BU0G1f4s7OEwMZDvB^$u@RePm zV1SSCQ51K1g;bdm6OS?7h1_Vu%?WxJl&8Vae!R)y`d7O*n~cszCsn7FOudo7SZh4D zF2{Qv`pZl+G0P@P!=de+-UUBNcF&R;&*Ht|4O6_)UGTX#w04k(8qA!W+?r}Gam46; z>m)_E zA*R_Mi}+!C(eWlo0A$^_9>eb1r#CziyQwuZ%BgawKH(9oH;lxlRbW_g$wkb~^3&Vf z`}FM0@LH|ZxZ66o%t>izk2Y99F}uR}uE9Bek;AoccvSw-1n0gopj}ARjqSPM`Qd6n z1#=T`wZ~K+~u0LFDh!+nYe|W)UwF#m=p1im2UbO}z zs*lg7ZXTQ*-(6_OLM8iw=5#NZjR*TF@reahz{fAjN+@UV+SqyI=Wp$pH8hgN7YhkM z4JnA*^apoe!BrbSZOszml>3cT@V)feK(TAyY7N5G_tr7oou8e>?epBM^DsDuwzdI0e zrCw>{EWnhIx(!mWD;l@yMs!$Y+~q%=OQsp&D2T*xodP z#-vf$lvEOo2I%lzcozyy&M23?^rsh;`G@Y_#$PpNg6im;gGd^vXWgZbcdV#<(MtA+ z;ow-_M6+8CSy}aSXtN)$)|T7O-vF`k{#AsAhQ`?JY{bJZO09>!T{WiHPJL*}zN3`Mq<_|I&on9NeN2WhTqp9E-d3RDRuo>zhvbn9T& zzNTNhPeImKG_9NHI4CeC>wKD7uT^UPMb{y0iv4~$8|8SC@1QS3sE8?C_4>Hsen+g+ zo%`n!3Py6?M8cE}MXG@7iNCh;$7^;LwTk3%jQCsI68@t0Q`~9+*6ggtB&C3TF_WGgu9@zozG z%XNB+$GpZ)`YE9}Hxlj3JsI`H;$bL z3Fhvk4r)(^+-{ey%UuS2)f=HpZnt6e<hZzE_HeQ>F%v*G@(ev!7jV^eLD zP<$OtL2O)SNgI!`v548&#i{SrP~F+K`|+q7SktV`L_ss?^v%-UUFh_wq^d!0^x6Vx zeKT)$cR3VTe{xCGl#>*uk&rOPX`+z*jw>g_c?=7sTjcsWk_Uq_`My!&T|nbK|E!Dk z=u%1uX?qmvgNCfu`^A!=S?7)O-B?>akry5;T!s96i^+ooJM%GdRpx_|%ooO6g(f_X zpvl^^#(qU0i;AO8EOTP~c`M0miKRPd!$gvws#dbHv14YHndDTlE1j9EW43dvVeKj+ zzJZH%aFc5Fgca0(US<0O$6$XxQE_j6CkcUzwf+>)m1_80ddNq4dL!1c>53uCnl{{3 zthPdvk-5nAU1C4wdf&oXXDu0<3ZyE+j=7eBYthNMPM4mEL;GjJQZxArUNh&ci}*r! zJxOFEV2}NM4cPd(;ChYc`eX%7oNhIpq;cGn%;N=4BXG2sGbAXLYdmQD^Hqi_(04)0 zZf8H@Nw=ge+u21Fkc`^GQw~JfvSr(wvMf`jt-&wimi4LOs|(eGlDao$$pv*GDSFb= zLgy312VOP`i%oi;ClSL6LNCAtW+-K+bBW~=`^IfoMbv%xLDi~Eps7V(9%E_KzRV1o z6}R&?KjrZCot7PgVQ}OsL?sZJb$c!IWce*gH7-8R4eS#ucDC(xIR&KD!;@kSw;p{L zcWr^5>|Lm2zg9RsAwzEaLn!6jC1d+dr%fZe{B3;fW)3k3GAUITRErpI74Nefk zn%@}0RI^2M!G;hPJhUvaX)ZB$ZxQnivl2pmOD0=&t5*gYdKgCGS}t!(0)&bkiN5<_ zNZGw89zauNlDOCco&r5h%`s93eJ%7|=@u(&bk4+DXvg`v;*ZFp)ORDN!c}^a~MgIikaE~v7eX-7$epKS-fQ^8X?zqy7Un}%kC@-x@Rd!rKzkYL4F zB4*mb23ON^qS!$ndXu^%hipQpk=Yxlw(BWpJ*3O-5B?Hzmy~v`CrE%g z*arhH$z0l^cVbz#j*EKVQ;CwO=g={#DKT&jd~gv-&`6_POWzHSCaq8V*jMQPu^bw0!H_5M-t7FM=pdqYy}X4$2> zmG%-&n8J())-O4|dt`5oZ!KfYSw84WI@~J2qJX!);g22T6?jnkFh7t+(dVCcC>+B7 zTKQNIJFc~B*jva<$xbFgwX8)+G%%tXnGB&_tBz_7JnF@NP$gG&bHH-0WB9Cb!C&vS zm}X?~aPy{b*;1L*(``eI*lsmHpMaFhT2Yr$_S_t??kl#63nF3f!eRI36r8Kw{vfa0 zUBred;0ppDH*W%B=Bu9BrO-EE$QcM4;~ZV90|@}t<5qHcki+82NbLxT8L!h ziq);(yoM|0mboPG45n_XlGcdPy}Ze;xddlHMM4m(dasGml<#c3k%a%5Lvuq zY+d>c7aiiBr2cjp&Dn#H0z>J!2c;5XrEZnjz*m_k&A5S8E={8ocW<`uzm=V(8w~4G zQq*8-`)_5EZA2)F_EYdcva`o8!!rV@~hY*>3dgpFHTT_k5C^v=G)~;DYlF zx@CR;aRtRAV} Date: Wed, 19 Apr 2023 15:35:05 +0300 Subject: [PATCH 031/150] i set the token in the user services --- BL/event.services.js | 5 +---- BL/user.services.js | 13 ++++++++++++- Routes/user.route.js | 9 --------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 475743b..8cd2343 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -146,7 +146,4 @@ module.exports = { createNewEvent, findEvent, findEventByID, -}; - - module.exports = { getAllEvents, getFilteredEvents } - +}; \ No newline at end of file diff --git a/BL/user.services.js b/BL/user.services.js index 76b9808..4ccaa72 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -1,4 +1,5 @@ const userController = require("../DL/user.controller"); +const jwt = require('jsonwebtoken'); async function createUser(newUserData) { const newUser = await userController.create(newUserData); @@ -10,7 +11,17 @@ async function createUser(newUserData) { async function findUser(user) { const foundUser = await userController.find(user); - return foundUser; + if (foundUser) { + try { + const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '10h' }); + return { user: foundUser, token }; + } catch (err) { + console.error('Error generating Token:', err); + return { error: 'Error generating JWT token' }; + } + } else { + return { error: 'Invalid credentials' }; + } } module.exports = { diff --git a/Routes/user.route.js b/Routes/user.route.js index 11bdb9c..7202831 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -1,7 +1,6 @@ const express = require("express"); const userRouter = express.Router(); const userServices = require("../BL/user.services"); -const jwt = require('jsonwebtoken'); const { sendError, errorMsg } = require("../errController"); @@ -23,14 +22,6 @@ userRouter.post("/login", async (req, res) => { const { email, password } = req.body; const user = await userServices.findUser({ email, password }); res.status(200).send(user) - - // if (user) { - // const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '1h' }); - // res.status(200).send({ user, token }); - // } else { - // res.status(401).send({ error: 'Invalid credentials' }); - // } - } catch (err) { sendError(res, err); } From 8135891b3c2a8f7521570e5d8bdfbd1c7352b446 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 19 Apr 2023 16:24:07 +0300 Subject: [PATCH 032/150] formdata --- BL/event.services.js | 16 ++++++++++------ Routes/event.route.js | 9 ++++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 475743b..8329ed9 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -9,12 +9,15 @@ async function createNewEvent(eventData) { repeat = 1; case "אירוע שבועי": repeat = 7; - case "בהתאמה אישית": + case "בהתאמה אישית": if (eventData.personalRepeat === "שבועי") var personalrepeat = 1; - else if (eventData.personalRepeat === "דו חודשי") var personalrepeat = 7; + else if (eventData.personalRepeat === "דו חודשי") var personalrepeat = 7; else if (eventData.personalRepeat === "ללא חזרה") var personalrepeat = 1; } - if (eventData.repeatSettings.type === "endDate"&&eventData.personalRepeat!=='ללא חזרה') { + if ( + eventData.repeatSettings.type === "endDate" && + eventData.personalRepeat !== "ללא חזרה" + ) { dates = getDatesWithEndDate( eventData.date, new Date(eventData.repeatSettings.repeatEnd), @@ -25,7 +28,9 @@ async function createNewEvent(eventData) { } else { dates = getDatesWithNumberOfOccurrences( new Date(eventData.date), - eventData.personalRepeat!=='ללא חזרה'?eventData.repeatSettings.repeatEnd:days.length, + eventData.personalRepeat !== "ללא חזרה" + ? eventData.repeatSettings.repeatEnd + : days.length, repeat, days, personalrepeat @@ -148,5 +153,4 @@ module.exports = { findEventByID, }; - module.exports = { getAllEvents, getFilteredEvents } - +// diff --git a/Routes/event.route.js b/Routes/event.route.js index 184b4e5..e25111d 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -7,6 +7,7 @@ const fs = require("fs"); const uuidv4 = require("uuid/v4"); const { sendError } = require("../errController"); +const { log } = require("console"); const url = "localhost:5000"; const DIR = "upload"; @@ -42,6 +43,11 @@ const upload = multer({ } }, }); +const multiUpload = upload.fields([ + { name: "cardImageURL", maxCount: 1 }, + { name: "coverImageURL", maxCount: 1 }, + { name: "gallery", maxCount: 5 }, +]); // router.post('/event',async (req,res)=>{ // }) eventRouter.get("", async (req, res) => { @@ -63,8 +69,9 @@ eventRouter.get("/:eventID", async (req, res) => { } }); -eventRouter.post("/createvent", upload.array, async (req, res) => { +eventRouter.post("/createvent", multiUpload, async (req, res) => { try { + console.log(req.body); const event = await eventService.createNewEvent(req.body); res.send(event); } catch (err) { From 5027ddab5e7a6f90fefe8f54a50611c72af39c77 Mon Sep 17 00:00:00 2001 From: yisrael Date: Mon, 1 May 2023 14:20:45 +0300 Subject: [PATCH 033/150] finshed verify token and checking if expired --- BL/user.services.js | 22 +++++++++++++++++++++- DL/user.controller.js | 15 +++++++++++++++ Routes/user.route.js | 15 +++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/BL/user.services.js b/BL/user.services.js index 4ccaa72..51591ef 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -13,7 +13,7 @@ async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { try { - const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '10h' }); + const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '15m' }); return { user: foundUser, token }; } catch (err) { console.error('Error generating Token:', err); @@ -24,7 +24,27 @@ async function findUser(user) { } } + +async function verifyToken(token) { + try { + const decoded = jwt.verify(token, process.env.JWT_SECRET); + if(decoded) { + const email = decoded.email; + const verifyedUser = await userController.findEmail(email); + return verifyedUser; + } + } catch (err) { + if(err.name === 'TokenExpiredError'){ + console.error('token not valid', err.name); + return { error: 'token is expired' } + }else{ + return err; + } + } +} + module.exports = { createUser, findUser, + verifyToken, } \ No newline at end of file diff --git a/DL/user.controller.js b/DL/user.controller.js index 6d0e46b..d7d8c9d 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -38,7 +38,22 @@ async function find(user) { } +async function findEmail(email) { + try { + const foundUser = await userData.findOne({email}); + if (foundUser) { + return foundUser + } else { + throw new Error('Email not found'); + } + } catch (error) { + throw new Error('Error finding Email'); + } +} + + module.exports = { create, find, + findEmail, } \ No newline at end of file diff --git a/Routes/user.route.js b/Routes/user.route.js index 7202831..9afd3ba 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -28,4 +28,19 @@ userRouter.post("/login", async (req, res) => { }); +userRouter.post("/verify", async (req, res) => { + try { + const token = req.body.aoutherizetion; + const verifyUser = await userServices.verifyToken(token); + if (verifyUser===true){ + res.status(200).send(verifyUser) + }else{ + return res.status(401) + } + } catch (err) { + sendError(res, err); + } +}); + + module.exports = userRouter; From f7c4f05da210268f2802f60d7cea5236cc5dab05 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 3 May 2023 00:45:40 +0300 Subject: [PATCH 034/150] function findEventsNextNow --- BL/event.services.js | 8 ++++++++ Routes/event.route.js | 11 +++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 8cd2343..475d8db 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -133,6 +133,13 @@ async function findEvent(filter) { return event; } +async function findEventsNextNow() { + + const dateNow = new Date() + const events =await eventController.read({date:{$gte:dateNow}}) + return events; +} + async function findEventByID(id) { const event = eventController.readOne({ _id: id }); return event; @@ -146,4 +153,5 @@ module.exports = { createNewEvent, findEvent, findEventByID, + findEventsNextNow }; \ No newline at end of file diff --git a/Routes/event.route.js b/Routes/event.route.js index 359c35d..e00eafc 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -3,8 +3,6 @@ const eventRouter = express.Router(); const eventService = require("../BL/event.services"); const { sendError } = require("../errController"); -// router.post('/event',async (req,res)=>{ -// }) eventRouter.get("", async (req, res) => { try { const event = await eventService.findEvent(req.body ? req.body : {}); @@ -14,6 +12,15 @@ eventRouter.get("", async (req, res) => { } }); +eventRouter.get("/now", async (req, res) => { + try { + const event = await eventService.findEventsNextNow(); + res.status(200).send(event); + } catch (err) { + sendError(res, err); + } +}); + eventRouter.get("/:eventID", async (req, res) => { try { console.log(req.params.eventID); From c5f78ca3465ba7c618df7239e356be826b54b542 Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 3 May 2023 11:21:54 +0300 Subject: [PATCH 035/150] mongoose update and routing change to post from get --- BL/user.services.js | 2 +- Routes/event.route.js | 2 +- package-lock.json | 2020 ++++++++++++++++++++--------------------- package.json | 2 +- 4 files changed, 1006 insertions(+), 1020 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 51591ef..a8ae661 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -13,7 +13,7 @@ async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { try { - const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '15m' }); + const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '1h' }); return { user: foundUser, token }; } catch (err) { console.error('Error generating Token:', err); diff --git a/Routes/event.route.js b/Routes/event.route.js index 359c35d..1325d3d 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -5,7 +5,7 @@ const { sendError } = require("../errController"); // router.post('/event',async (req,res)=>{ // }) -eventRouter.get("", async (req, res) => { +eventRouter.post("", async (req, res) => { try { const event = await eventService.findEvent(req.body ? req.body : {}); res.status(200).send(event); diff --git a/package-lock.json b/package-lock.json index 7cba211..2690f70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "dotenv": "^16.0.3", "express": "^4.18.2", "jsonwebtoken": "^9.0.0", - "mongoose": "^6.10.0", + "mongoose": "6.10", "multer": "^1.4.5-lts.1", "nodemon": "^2.0.21" } @@ -106,507 +106,502 @@ "optional": true }, "node_modules/@aws-sdk/abort-controller": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.289.0.tgz", - "integrity": "sha512-Xakz8EeTl0Q3KaWRdCaRQrrYxBAkQGj6eeT+DVmMLMz4gzTcSHwvfR5tVBIPHk4+IjboJJKM5l1xAZ90AGFPAQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz", + "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.289.0.tgz", - "integrity": "sha512-rerSVZadAQu34Dxhsx+tpUdhru8Dpu/oW/ABJnVBZMbs5kXtl3wgWw8vRPiE0jFfjeA+dPZRXfuBzDulzsMcsg==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.325.0.tgz", + "integrity": "sha512-YSH1W88rDxYYxTbVOlM+32nSNlCyGHOU6dxlIsItwbqINFmM/GRSS77fmRFugZfDavMlm3f0Zoi6OfUIdorSFQ==", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.289.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sts": "3.325.0", + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/credential-provider-node": "3.325.0", + "@aws-sdk/fetch-http-handler": "3.310.0", + "@aws-sdk/hash-node": "3.310.0", + "@aws-sdk/invalid-dependency": "3.310.0", + "@aws-sdk/middleware-content-length": "3.325.0", + "@aws-sdk/middleware-endpoint": "3.325.0", + "@aws-sdk/middleware-host-header": "3.325.0", + "@aws-sdk/middleware-logger": "3.325.0", + "@aws-sdk/middleware-recursion-detection": "3.325.0", + "@aws-sdk/middleware-retry": "3.325.0", + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/middleware-signing": "3.325.0", + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/middleware-user-agent": "3.325.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/node-http-handler": "3.321.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/smithy-client": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "@aws-sdk/util-body-length-browser": "3.310.0", + "@aws-sdk/util-body-length-node": "3.310.0", + "@aws-sdk/util-defaults-mode-browser": "3.325.0", + "@aws-sdk/util-defaults-mode-node": "3.325.0", + "@aws-sdk/util-endpoints": "3.319.0", + "@aws-sdk/util-retry": "3.310.0", + "@aws-sdk/util-user-agent-browser": "3.310.0", + "@aws-sdk/util-user-agent-node": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.289.0.tgz", - "integrity": "sha512-GIpxPaEwqXC+P8wH+G4mIDnxYFJ+2SyYTrnoxb4OUH+gAkU6tybgvsv0fy+jsVD6GAWPdfU1AYk2ZjofdFiHeA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.325.0.tgz", + "integrity": "sha512-ajxL7cVtK0OPQz37hnKDbL6hPBNv3+sTgyZ+RTuBxjS3MKh/TVu/yXfrL+hfFFMijk494b7CctgRZrTABEvWdw==", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/fetch-http-handler": "3.310.0", + "@aws-sdk/hash-node": "3.310.0", + "@aws-sdk/invalid-dependency": "3.310.0", + "@aws-sdk/middleware-content-length": "3.325.0", + "@aws-sdk/middleware-endpoint": "3.325.0", + "@aws-sdk/middleware-host-header": "3.325.0", + "@aws-sdk/middleware-logger": "3.325.0", + "@aws-sdk/middleware-recursion-detection": "3.325.0", + "@aws-sdk/middleware-retry": "3.325.0", + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/middleware-user-agent": "3.325.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/node-http-handler": "3.321.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/smithy-client": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "@aws-sdk/util-body-length-browser": "3.310.0", + "@aws-sdk/util-body-length-node": "3.310.0", + "@aws-sdk/util-defaults-mode-browser": "3.325.0", + "@aws-sdk/util-defaults-mode-node": "3.325.0", + "@aws-sdk/util-endpoints": "3.319.0", + "@aws-sdk/util-retry": "3.310.0", + "@aws-sdk/util-user-agent-browser": "3.310.0", + "@aws-sdk/util-user-agent-node": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.289.0.tgz", - "integrity": "sha512-+09EK4aWdNjF+5+nK6Dmlwx3es8NTkyABTOj9H4eKB90rXQVX8PjoaFhK/b+NcNKDxgb1E6k6evZEpAb8dYQHg==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.325.0.tgz", + "integrity": "sha512-D20mpgiZ5/O/CAR18F16h7hJlcmPvOjh6IcjtZexte0NhkSO4oV1MzgmXT/aWOo2zIeovPRzZTNULAH24sosNQ==", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/fetch-http-handler": "3.310.0", + "@aws-sdk/hash-node": "3.310.0", + "@aws-sdk/invalid-dependency": "3.310.0", + "@aws-sdk/middleware-content-length": "3.325.0", + "@aws-sdk/middleware-endpoint": "3.325.0", + "@aws-sdk/middleware-host-header": "3.325.0", + "@aws-sdk/middleware-logger": "3.325.0", + "@aws-sdk/middleware-recursion-detection": "3.325.0", + "@aws-sdk/middleware-retry": "3.325.0", + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/middleware-user-agent": "3.325.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/node-http-handler": "3.321.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/smithy-client": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "@aws-sdk/util-body-length-browser": "3.310.0", + "@aws-sdk/util-body-length-node": "3.310.0", + "@aws-sdk/util-defaults-mode-browser": "3.325.0", + "@aws-sdk/util-defaults-mode-node": "3.325.0", + "@aws-sdk/util-endpoints": "3.319.0", + "@aws-sdk/util-retry": "3.310.0", + "@aws-sdk/util-user-agent-browser": "3.310.0", + "@aws-sdk/util-user-agent-node": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.289.0.tgz", - "integrity": "sha512-n+8zDCzk0NvCIXX3MGS8RV/+/MkJso0jkqkPOgPcS8Kf7Zbjlx8FyeGQ5LS7HjhCDk+jExH/s9h1kd3sL1pHQA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.325.0.tgz", + "integrity": "sha512-5ZOScg5EvyLV59mDUxSbL9x10cUbZsoSqvNETGLruyXILHaRHa8WS00wffcDA/dRzKIk9xQwJNwplcWnpT8WUw==", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-sdk-sts": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/credential-provider-node": "3.325.0", + "@aws-sdk/fetch-http-handler": "3.310.0", + "@aws-sdk/hash-node": "3.310.0", + "@aws-sdk/invalid-dependency": "3.310.0", + "@aws-sdk/middleware-content-length": "3.325.0", + "@aws-sdk/middleware-endpoint": "3.325.0", + "@aws-sdk/middleware-host-header": "3.325.0", + "@aws-sdk/middleware-logger": "3.325.0", + "@aws-sdk/middleware-recursion-detection": "3.325.0", + "@aws-sdk/middleware-retry": "3.325.0", + "@aws-sdk/middleware-sdk-sts": "3.325.0", + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/middleware-signing": "3.325.0", + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/middleware-user-agent": "3.325.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/node-http-handler": "3.321.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/smithy-client": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "@aws-sdk/util-body-length-browser": "3.310.0", + "@aws-sdk/util-body-length-node": "3.310.0", + "@aws-sdk/util-defaults-mode-browser": "3.325.0", + "@aws-sdk/util-defaults-mode-node": "3.325.0", + "@aws-sdk/util-endpoints": "3.319.0", + "@aws-sdk/util-retry": "3.310.0", + "@aws-sdk/util-user-agent-browser": "3.310.0", + "@aws-sdk/util-user-agent-node": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", "fast-xml-parser": "4.1.2", - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/config-resolver": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.289.0.tgz", - "integrity": "sha512-QYrBJeFJwx9wL73xMJgSTS6zY5SQh0tbZXpVlSZcNDuOufsu5zdcZZCOp0I20yGf8zxKX59u7O73OUlppkk+Wg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz", + "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==", "optional": true, "dependencies": { - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-config-provider": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.289.0.tgz", - "integrity": "sha512-RrK15OhL6UR8QKD415hggKfl8wcsMBqafcw/uYDESlvuAQVIi7hLgf5/2Onbhbc+m3huTBHY9e1D1n7u9hf9Bw==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.325.0.tgz", + "integrity": "sha512-5tTBLfzPu3r/0PNXle9sy6B9gTTtbg8hB9aSON7Xs1XSUDD3MjDQ8HVwIvqtTSTipyXRq8UbEmrWWuZwywinIg==", "optional": true, "dependencies": { - "@aws-sdk/client-cognito-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/client-cognito-identity": "3.325.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.289.0.tgz", - "integrity": "sha512-h4yNEW2ZJATKVxL0Bvz/WWXUmBr+AhsTyjUNge734306lXNG5/FM7zYp2v6dSQWt02WwBXyfkP3lr+A0n4rHyA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz", + "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.289.0.tgz", - "integrity": "sha512-SIl+iLQpDR6HA9CKTebui7NLop5GxnCkufbM3tbSqrQcPcEfYLOwXpu5gpKO2unQzRykCoyRVia1lr7Pc9Hgdg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz", + "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==", "optional": true, "dependencies": { - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.289.0.tgz", - "integrity": "sha512-kvNUn3v4FTRRiqCOXl46v51VTGOM76j5Szcrhkk9qeFW6zt4iFodp6tQ4ynDtDxYxOvjuEfm3ii1YN5nkI1uKA==", - "optional": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.325.0.tgz", + "integrity": "sha512-jvNEHU4zEBbtvf2JqiC2ENb0Y55BurA5X6KVBP1vA3mvn7+zIGH9qD1nAkpvrRelzuorbC5Ey7AmZshR+AugTg==", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.310.0", + "@aws-sdk/credential-provider-imds": "3.310.0", + "@aws-sdk/credential-provider-process": "3.310.0", + "@aws-sdk/credential-provider-sso": "3.325.0", + "@aws-sdk/credential-provider-web-identity": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.289.0.tgz", - "integrity": "sha512-05CYPGnk5cDiOQDIaXNVibNOwQdI34MDiL17YkSfPv779A+uq4vqg/aBfL41BDJjr1gSGgyvVhlcUdBKnlp93Q==", - "optional": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-ini": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.325.0.tgz", + "integrity": "sha512-SG3F3yywnSzYcG5diErez9ukG8tToQIksedL/pM/gYFJ1zKYH560VJRc7Rkt0yjnl2cPFewazvPoDLBN/5Azbw==", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.310.0", + "@aws-sdk/credential-provider-imds": "3.310.0", + "@aws-sdk/credential-provider-ini": "3.325.0", + "@aws-sdk/credential-provider-process": "3.310.0", + "@aws-sdk/credential-provider-sso": "3.325.0", + "@aws-sdk/credential-provider-web-identity": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.289.0.tgz", - "integrity": "sha512-t39CJHj1/f2DcRbEUSJ1ixwDsgaElDpJPynn59MOdNnrSh5bYuYmkrum/GYXYSsk+HoSK21JvwgvjnrkA9WZKQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz", + "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.289.0.tgz", - "integrity": "sha512-8+DjOqj5JCpVdT4EJtdfis6OioAdiDKM1mvgDTG8R43MSThc+RGfzqaDJQdM+8+hzkYhxYfyI9XB0H+X3rDNsA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.325.0.tgz", + "integrity": "sha512-Te7jxJwjVGJAPWN3jCq2xcYrX8d4WkZFIqSIWSmrHqGKgWPc8+QgUkpRQkHaM+4NeNBJadRG1XbJNfu22gjDWA==", "optional": true, "dependencies": { - "@aws-sdk/client-sso": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/token-providers": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sso": "3.325.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/token-providers": "3.325.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.289.0.tgz", - "integrity": "sha512-jZ9hQvr0I7Z2DekDtZytViYn7zNNJG06N0CinAJzzvreAQ1I61rU7mhaWc05jhBSdeA3f82XoDAgxqY4xIh9pQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz", + "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.289.0.tgz", - "integrity": "sha512-kXNhi0s0oZ8k2cv3D5350glKutV4Lgg/hVBAAU/AnjFl5JFiZZKFpTs3N8p0MLCESipL2uCws7R0UU7uy8sKIQ==", - "optional": true, - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.289.0", - "@aws-sdk/client-sso": "3.289.0", - "@aws-sdk/client-sts": "3.289.0", - "@aws-sdk/credential-provider-cognito-identity": "3.289.0", - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-ini": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.325.0.tgz", + "integrity": "sha512-PUs8Na+RVnzpX+ZXCA85Im5OMdBuHfLN7FjFCuMuGDqOFFNNTQkqsXZ5RaSOKAYaKafY4e/dTd/zvxzB4o3ijg==", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.325.0", + "@aws-sdk/client-sso": "3.325.0", + "@aws-sdk/client-sts": "3.325.0", + "@aws-sdk/credential-provider-cognito-identity": "3.325.0", + "@aws-sdk/credential-provider-env": "3.310.0", + "@aws-sdk/credential-provider-imds": "3.310.0", + "@aws-sdk/credential-provider-ini": "3.325.0", + "@aws-sdk/credential-provider-node": "3.325.0", + "@aws-sdk/credential-provider-process": "3.310.0", + "@aws-sdk/credential-provider-sso": "3.325.0", + "@aws-sdk/credential-provider-web-identity": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.289.0.tgz", - "integrity": "sha512-tksh2GnDV1JaI+NO9x+pgyB3VNwjnUdtoMcFGmTDm1TrcPNj0FLX2hLiunlVG7fFMfGLXC2aco0sUra5/5US9Q==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz", + "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/querystring-builder": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/querystring-builder": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/hash-node": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.289.0.tgz", - "integrity": "sha512-fL7Pt4LU+tluHn0+BSIFVD2ZVJ5fuXvd1hQt4aTYrgkna1RR5v55Hdy2rNrp/syrkyE+Wv92S3hgZ7ZTBeXFZA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz", + "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-buffer-from": "3.208.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-buffer-from": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/invalid-dependency": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.289.0.tgz", - "integrity": "sha512-VpXadvpqXFUA8gBH6TAAJzsKfEQ4IvsiD7d9b2B+jw1YtaPFTqEEuDjN6ngpad8PCPCNWl8CI6oBCdMOK+L48A==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz", + "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/is-array-buffer": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", - "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", + "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-content-length": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.289.0.tgz", - "integrity": "sha512-D7vGeuaAzKiq0aFPwme1Xy4x69Jn4v0YJ3Xa4J+keNep0yZ9LfU5KSngqsxeTefCqS+2tdaArkBN2VdexmPagw==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.325.0.tgz", + "integrity": "sha512-t38VBKCpNqSKqSu0OfWMJs7cwaRHFGQxIF9lV8JMCM/2lyUpN4JcfuzSTK+MFN2eDZEHp5DiNg8w07GXXusRYg==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.289.0.tgz", - "integrity": "sha512-nxaQFOG1IurwCHWP22RxgTFZdILsdBg6wbg4GeFpNBtE3bi0zIUYKrUhpdRr/pZyGAboD1oD9iQtxuGb/M6f+w==", - "optional": true, - "dependencies": { - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.325.0.tgz", + "integrity": "sha512-3CavuOHCKiWUnCtzrUFbhbEP26qIgzzRs5C3vpOJhDUhugBubIWgPGGRLpbnIro+P4XJPwM3pMziNzhKVuSDlQ==", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.289.0.tgz", - "integrity": "sha512-yFBOKvKBnITO08JCx+65vXPe9Uo4gZuth/ka9v5swa4wtV8AP+kkOwFrNxSi2iAFLJ4Mg21vGQceeL0bErF6KQ==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.325.0.tgz", + "integrity": "sha512-IN28gsxcRy4J+FxxCHvzb2NORBx8uMA+h9QYS4BBZfpKVYIZh+mudHgYcdNHWlKXmlTGjhWBNWTeByhzuSKAiA==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.289.0.tgz", - "integrity": "sha512-c5W7AlOdoyTXRoNl2yOVkhbTjp8tX0z65GDb3+/1yYcv+GRtz67WMZscWMQJwEfdCLdDE2GtBe+t2xyFGnmJvA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.325.0.tgz", + "integrity": "sha512-S8rWgTpN2b/+UDDm+yZMFM6rw1zwO8KT0GAIQbAhB96shyD5eKen/UfihCTB7YMvbD2piebymwJTvxv6bn1VqQ==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.289.0.tgz", - "integrity": "sha512-r2NrfnTG0UZRXeFjoyapAake7b1rUo6SC52/UV4Pdm8cHoYMmljnaGLjiAfzt6vWv6cSVCJq1r28Ne4slAoMAg==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.325.0.tgz", + "integrity": "sha512-2l1ABF7KePsoKz8KaNvD2uxo1zHqkFHK4PL/wW/FbcwOcE08f0R7qX++st/bPpVjXX/j/5vWTnNNgJOIOrZhyw==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-retry": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.289.0.tgz", - "integrity": "sha512-Su+iGv5mrFjVCXJmjohX00o3HzkwnhY0TDhIltgolB6ZfOqy3Dfopjj21OWtqY9VYCUiLGC4KRfeb2feyrz5BA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.325.0.tgz", + "integrity": "sha512-oQM5AI3vkNQuCakBMgdohOcvRnVYcBBlv+KzCCj07ue9gk0x2dHOZY2pqTQ2CYilRqS/X1PtLogJXoyHP5Wvwg==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/service-error-classification": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-middleware": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "tslib": "^2.3.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/service-error-classification": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "@aws-sdk/util-retry": "3.310.0", + "tslib": "^2.5.0", "uuid": "^8.3.2" }, "engines": { @@ -614,440 +609,438 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.289.0.tgz", - "integrity": "sha512-9WzUVPEqJcvggGCk9JHXnwhj7fjuMXE/JM3gx7eMSStJCcK+3BARZ1RZnggUN4vN9iTSzdA+r0OpC1XnUGKB2g==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.325.0.tgz", + "integrity": "sha512-deRK1ZuNueQ6OOTEhBZ9bLmjPema/N3cwbtO+tDVwpi7MipjE4EZDXX8WL0xza5YLRnz9kxcHuyfL47vvKgO3A==", "optional": true, "dependencies": { - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/middleware-signing": "3.325.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-serde": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.289.0.tgz", - "integrity": "sha512-pygC+LsEBVAxOzfoxA9jgvqfO1PLivh8s2Yr/aNQOwx49fmTHMvPwRYUGDV38Du6bRYcKI6nxYqkbJFkQkRESQ==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.325.0.tgz", + "integrity": "sha512-QAZYaFfAw1a06Vg39JiYIq0kSJ6EuUPOiKfK/Goj0cBv78lrXWuKdf04UF3U8Rqk/4mamnsTqUSwf4NoKkF0hw==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.289.0.tgz", - "integrity": "sha512-9SLATNvibxg4hpr4ldU18LwB6AVzovONWeJLt49FKISz7ZwGF6WVJYUMWeScj4+Z51Gozi7+pUIaFn7i6N3UbA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.325.0.tgz", + "integrity": "sha512-SOwPwaCE3vSCGwFzkIlnOUSkeCUzKTyIQnFVjlQkqGuMxMX/iDaQQGaX+HUbuGIuULCEQqjZH4dLKZcor8eVZw==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/signature-v4": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-stack": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.289.0.tgz", - "integrity": "sha512-3rWx+UkV//dv/cLIrXmzIa+FZcn6n76JevGHYCTReiRpcvv+xECxgXH2crMYtzbu05WdxGYD6P0IP5tMwH0yXA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.325.0.tgz", + "integrity": "sha512-cZWehA4grGvX1IKlY9atJgD0bq3ew7YRJgY7GA6DSgsU7GrZ61Qvi+H7IuGx5AdeAwaTnbnTGN4qCaA2EfxNhA==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.289.0.tgz", - "integrity": "sha512-XPhB9mgko66BouyxA+7z7SjUaNHyr58Xe/OB8GII5R/JiR3A/lpc8+jm9gEEpjEI/HpF8jLFDnTMbgabVAHOeA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.325.0.tgz", + "integrity": "sha512-2aIdGId4o8eIStm1J1aWZwNDf6nvrwg5Nx7BomLAxKZ4lkH8knzXDtxaZR4ElcTsBlBcYxz2gbsrScMyKRDTGA==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-endpoints": "3.319.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/node-config-provider": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.289.0.tgz", - "integrity": "sha512-rR41c3Y7MYEP8TG9X1whHyrXEXOZzi4blSDqeJflwtNt3r3HvErGZiNBdVv368ycPPuu1YRSqTkgOYNCv02vlw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz", + "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/node-http-handler": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.289.0.tgz", - "integrity": "sha512-zKknSaOY2GNmqH/eoZndmQWoEKhYPV0qRZtAMxuS3DVI5fipBipNzbVBaXrHRjxARx7/VLWnvNArchRoHfOlmw==", + "version": "3.321.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.321.1.tgz", + "integrity": "sha512-DdQBrtFFDNtzphJIN3s93Vf+qd9LHSzH6WTQRrWoXhTDMHDzSI2Cn+c5KWfk89Nggp/n3+OTwUPQeCiBT5EBuw==", "optional": true, "dependencies": { - "@aws-sdk/abort-controller": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/querystring-builder": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/abort-controller": "3.310.0", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/querystring-builder": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/property-provider": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.289.0.tgz", - "integrity": "sha512-Raf4lTWPTmEGFV7Lkbfet2n/4Ybz5vQiiU45l56kgIQA88mLUuE4dshgNsM0Zb2rflsTaiN1JR2+RS/8lNtI8A==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz", + "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/protocol-http": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.289.0.tgz", - "integrity": "sha512-/2jOQ3MJZx1xk6BHEOW47ItGo1tgA9cP9a2saYneon05VIV6OuYefO5pG2G0nPnImTbff++N7aioXe5XKrnorw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz", + "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/querystring-builder": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.289.0.tgz", - "integrity": "sha512-llJCS8mAJfBYBjkKeriRmBuDr2jIozrMWhJOkz95SQGFsx1sKBPQMMOV6zunwhQux8bjtjf5wYiR1TM2jNUKqQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz", + "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-uri-escape": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/querystring-parser": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.289.0.tgz", - "integrity": "sha512-84zXKXIYtnTCrez/gGZIGuqfUJezzaOMm7BQwnOnq/sN21ou63jF3Q+tIMhLO/EvDcvmxEOlUXN1kfMQcjEjSw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz", + "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/service-error-classification": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.289.0.tgz", - "integrity": "sha512-+d1Vlb45Bs2gbTmXpRCGQrX4AQDETjA5sx1zLvq1NZGSnTX6LdroYPtXu3dRWJwDHHQpCMN/XfFN8jTw0IzBOg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz", + "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==", "optional": true, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.289.0.tgz", - "integrity": "sha512-XG9Pfn3itf3Z0p6nY6UuMVMhzZb+oX7L28oyby8REl8BAwfPkcziLxXlZsBHf6KcgYDG1R6z945hvIwZhJbjvA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz", + "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/signature-v4": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.289.0.tgz", - "integrity": "sha512-IQyYHx3zp7PHxFA17YDb6WVx8ejXDxrsnKspFXgZQyoZOPfReqWQs32dcJYXff/IdSzxjwOpwBFbmIt2vbdKnQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz", + "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==", "optional": true, "dependencies": { - "@aws-sdk/is-array-buffer": "3.201.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-hex-encoding": "3.201.0", - "@aws-sdk/util-middleware": "3.289.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/is-array-buffer": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-hex-encoding": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "@aws-sdk/util-uri-escape": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/smithy-client": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.289.0.tgz", - "integrity": "sha512-miPMdnv4Ivv8RN65LJ9dxzkQNHn9Tp9wzZJXwBcPqGdXyRlkWSuIOIIhhAqQoV9R9ByeshnCWBpwqlITIjNPVw==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.325.0.tgz", + "integrity": "sha512-sqDFuhjxd8+Q9qI8MmXe/g1/FgoViwetv14K+bpHK7pGlOIvDyT7TboDNClfgqSLdgTDCEaoC3JRSi9Y5RgbmA==", "optional": true, "dependencies": { - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.289.0.tgz", - "integrity": "sha512-fzvGIfJNoLR5g24ok8cRwc9AMLXoEOyfi+eHocAF6eyfe0NWlQtpsmLe7XXx5I9yZ51lclzV49rEz9ynp243RA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.325.0.tgz", + "integrity": "sha512-h/ecgqXaMwEkUWo+SZJNcOMWJkAknjonWWpK/vQ4uz+qE9rBqRugsIeIiey+Ij7zCtwh6WhtpfCpt5RbxRHe6g==", "optional": true, "dependencies": { - "@aws-sdk/client-sso-oidc": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sso-oidc": "3.325.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.289.0.tgz", - "integrity": "sha512-wwUC+VwoNlEkgDzK/aJG3+zeMcYRcYFQV4mbZaicYdp3v8hmkUkJUhyxuZYl/FmY46WG+DYv+/Y3NilgfsE+Wg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz", + "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/url-parser": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.289.0.tgz", - "integrity": "sha512-rbtW3O6UBX+eWR/+UiCDNFUVwN8hp82JPy+NGv3NeOvRjBsxkKmcH4UJTHDIeT+suqTDNEdV5nz438u3dHdHrQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz", + "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==", "optional": true, "dependencies": { - "@aws-sdk/querystring-parser": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/querystring-parser": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/util-base64": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz", - "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", + "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", "optional": true, "dependencies": { - "@aws-sdk/util-buffer-from": "3.208.0", - "tslib": "^2.3.1" + "@aws-sdk/util-buffer-from": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-body-length-browser": { - "version": "3.188.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", - "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", + "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/util-body-length-node": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", - "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", + "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-buffer-from": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz", - "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", + "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", "optional": true, "dependencies": { - "@aws-sdk/is-array-buffer": "3.201.0", - "tslib": "^2.3.1" + "@aws-sdk/is-array-buffer": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-config-provider": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", - "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", + "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.289.0.tgz", - "integrity": "sha512-sYrDwjX3s54cvGq69PJpP2vDpJ5BJXhg2KEHbK92Qr2AUqMUgidwZCw4oBaIqKDXcPIrjmhod31s3tTfYmtTMQ==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.325.0.tgz", + "integrity": "sha512-gcowpXTo8E8N3jxD2KW+csiicJ7HPkhWnpL925xgwe0oq091OpATsKFrBOL18h72VfRWf4FAsR9lVwxSQ78zSA==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", "bowser": "^2.11.0", - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.289.0.tgz", - "integrity": "sha512-PsP40+9peN7kpEmQ2GhEAGwUwD9F/R/BI/1kzjW0nbBsMrTnkUnlZlaitwpBX/OWNV/YZTdVAOvD50j/ACyXlg==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.325.0.tgz", + "integrity": "sha512-/5uoOrgNxoUxv3AwsdXjMA3f6KJA6fi69otA0RiINjilCdcbOxq5GI11AFEyRio/+e+imriX4+UYjsguUR+f4g==", "optional": true, "dependencies": { - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/credential-provider-imds": "3.310.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.289.0.tgz", - "integrity": "sha512-PmsgqL9jdNTz3p0eW83nZZGcngAdoIWidXCc32G5tIIYvJutdgkiObAaydtXaMgk5CRvjenngFf6Zg9JyVHOLQ==", + "version": "3.319.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.319.0.tgz", + "integrity": "sha512-3I64UMoYA2e2++oOUJXRcFtYLpLylnZFRltWfPo1B3dLlf+MIWat9djT+mMus+hW1ntLsvAIVu1hLVePJC0gvw==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-hex-encoding": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", - "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", + "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz", - "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", + "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-middleware": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.289.0.tgz", - "integrity": "sha512-hw3WHQU9Wk7a1H3x+JhwMA4ECCleeuNlob3fXSYJmXgvZyuWfpMYZi4iSkqoWGFAXYpAtZZLIu45iIcd7F296g==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz", + "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-retry": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.289.0.tgz", - "integrity": "sha512-noFn++ZKH11ExTBqUU/b9wsOjqxYlDnN/8xq+9oCsyBnEZztVgM/AM3WP5qBPRskk1WzDprID5fb5V87113Uug==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz", + "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==", "optional": true, "dependencies": { - "@aws-sdk/service-error-classification": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/service-error-classification": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@aws-sdk/util-uri-escape": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", - "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", + "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", "optional": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.289.0.tgz", - "integrity": "sha512-BDXYgNzzz2iNPTkl9MQf7pT4G80V6O6ICwJyH93a5EEdljl7oPrt8i4MS5S0BDAWx58LqjWtVw98GOZfy5BYhw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz", + "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.289.0", + "@aws-sdk/types": "3.310.0", "bowser": "^2.11.0", - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.289.0.tgz", - "integrity": "sha512-f32g9KS7pwO6FQ9N1CtqQPIS6jhvwv/y0+NHNoo9zLTBH0jol3+C2ELIE3N1wB6xvwhsdPqR3WuOiNiCiv8YAQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz", + "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==", "optional": true, "dependencies": { - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" @@ -1062,13 +1055,13 @@ } }, "node_modules/@aws-sdk/util-utf8": { - "version": "3.254.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz", - "integrity": "sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", + "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", "optional": true, "dependencies": { - "@aws-sdk/util-buffer-from": "3.208.0", - "tslib": "^2.3.1" + "@aws-sdk/util-buffer-from": "3.310.0", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" @@ -1103,9 +1096,9 @@ } }, "node_modules/@types/node": { - "version": "18.15.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz", - "integrity": "sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==" + "version": "18.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", + "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" }, "node_modules/@types/webidl-conversions": { "version": "7.0.0", @@ -2233,9 +2226,9 @@ } }, "node_modules/mongoose": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.0.tgz", - "integrity": "sha512-0zrKDEnmNscYyAyN94smo2LlJ63gaezKHpHM+KQ+6EiAgAnah5Kt3hQSYzOTQX/63YNdT1oJXiLlB5LqTdcjUw==", + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.5.tgz", + "integrity": "sha512-y4HL4/9EySec7L0gJ+pCm9heLSF45uIIvRS4fSeAFWDfe4vXW1vRZJwTz7OGkra3ZoSfRnFTo9bNZkuggDVlVA==", "dependencies": { "bson": "^4.7.0", "kareem": "2.5.1", @@ -3167,802 +3160,795 @@ } }, "@aws-sdk/abort-controller": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.289.0.tgz", - "integrity": "sha512-Xakz8EeTl0Q3KaWRdCaRQrrYxBAkQGj6eeT+DVmMLMz4gzTcSHwvfR5tVBIPHk4+IjboJJKM5l1xAZ90AGFPAQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz", + "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/client-cognito-identity": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.289.0.tgz", - "integrity": "sha512-rerSVZadAQu34Dxhsx+tpUdhru8Dpu/oW/ABJnVBZMbs5kXtl3wgWw8vRPiE0jFfjeA+dPZRXfuBzDulzsMcsg==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.325.0.tgz", + "integrity": "sha512-YSH1W88rDxYYxTbVOlM+32nSNlCyGHOU6dxlIsItwbqINFmM/GRSS77fmRFugZfDavMlm3f0Zoi6OfUIdorSFQ==", "optional": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.289.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sts": "3.325.0", + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/credential-provider-node": "3.325.0", + "@aws-sdk/fetch-http-handler": "3.310.0", + "@aws-sdk/hash-node": "3.310.0", + "@aws-sdk/invalid-dependency": "3.310.0", + "@aws-sdk/middleware-content-length": "3.325.0", + "@aws-sdk/middleware-endpoint": "3.325.0", + "@aws-sdk/middleware-host-header": "3.325.0", + "@aws-sdk/middleware-logger": "3.325.0", + "@aws-sdk/middleware-recursion-detection": "3.325.0", + "@aws-sdk/middleware-retry": "3.325.0", + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/middleware-signing": "3.325.0", + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/middleware-user-agent": "3.325.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/node-http-handler": "3.321.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/smithy-client": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "@aws-sdk/util-body-length-browser": "3.310.0", + "@aws-sdk/util-body-length-node": "3.310.0", + "@aws-sdk/util-defaults-mode-browser": "3.325.0", + "@aws-sdk/util-defaults-mode-node": "3.325.0", + "@aws-sdk/util-endpoints": "3.319.0", + "@aws-sdk/util-retry": "3.310.0", + "@aws-sdk/util-user-agent-browser": "3.310.0", + "@aws-sdk/util-user-agent-node": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/client-sso": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.289.0.tgz", - "integrity": "sha512-GIpxPaEwqXC+P8wH+G4mIDnxYFJ+2SyYTrnoxb4OUH+gAkU6tybgvsv0fy+jsVD6GAWPdfU1AYk2ZjofdFiHeA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.325.0.tgz", + "integrity": "sha512-ajxL7cVtK0OPQz37hnKDbL6hPBNv3+sTgyZ+RTuBxjS3MKh/TVu/yXfrL+hfFFMijk494b7CctgRZrTABEvWdw==", "optional": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/fetch-http-handler": "3.310.0", + "@aws-sdk/hash-node": "3.310.0", + "@aws-sdk/invalid-dependency": "3.310.0", + "@aws-sdk/middleware-content-length": "3.325.0", + "@aws-sdk/middleware-endpoint": "3.325.0", + "@aws-sdk/middleware-host-header": "3.325.0", + "@aws-sdk/middleware-logger": "3.325.0", + "@aws-sdk/middleware-recursion-detection": "3.325.0", + "@aws-sdk/middleware-retry": "3.325.0", + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/middleware-user-agent": "3.325.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/node-http-handler": "3.321.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/smithy-client": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "@aws-sdk/util-body-length-browser": "3.310.0", + "@aws-sdk/util-body-length-node": "3.310.0", + "@aws-sdk/util-defaults-mode-browser": "3.325.0", + "@aws-sdk/util-defaults-mode-node": "3.325.0", + "@aws-sdk/util-endpoints": "3.319.0", + "@aws-sdk/util-retry": "3.310.0", + "@aws-sdk/util-user-agent-browser": "3.310.0", + "@aws-sdk/util-user-agent-node": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/client-sso-oidc": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.289.0.tgz", - "integrity": "sha512-+09EK4aWdNjF+5+nK6Dmlwx3es8NTkyABTOj9H4eKB90rXQVX8PjoaFhK/b+NcNKDxgb1E6k6evZEpAb8dYQHg==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.325.0.tgz", + "integrity": "sha512-D20mpgiZ5/O/CAR18F16h7hJlcmPvOjh6IcjtZexte0NhkSO4oV1MzgmXT/aWOo2zIeovPRzZTNULAH24sosNQ==", "optional": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/fetch-http-handler": "3.310.0", + "@aws-sdk/hash-node": "3.310.0", + "@aws-sdk/invalid-dependency": "3.310.0", + "@aws-sdk/middleware-content-length": "3.325.0", + "@aws-sdk/middleware-endpoint": "3.325.0", + "@aws-sdk/middleware-host-header": "3.325.0", + "@aws-sdk/middleware-logger": "3.325.0", + "@aws-sdk/middleware-recursion-detection": "3.325.0", + "@aws-sdk/middleware-retry": "3.325.0", + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/middleware-user-agent": "3.325.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/node-http-handler": "3.321.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/smithy-client": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "@aws-sdk/util-body-length-browser": "3.310.0", + "@aws-sdk/util-body-length-node": "3.310.0", + "@aws-sdk/util-defaults-mode-browser": "3.325.0", + "@aws-sdk/util-defaults-mode-node": "3.325.0", + "@aws-sdk/util-endpoints": "3.319.0", + "@aws-sdk/util-retry": "3.310.0", + "@aws-sdk/util-user-agent-browser": "3.310.0", + "@aws-sdk/util-user-agent-node": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/client-sts": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.289.0.tgz", - "integrity": "sha512-n+8zDCzk0NvCIXX3MGS8RV/+/MkJso0jkqkPOgPcS8Kf7Zbjlx8FyeGQ5LS7HjhCDk+jExH/s9h1kd3sL1pHQA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.325.0.tgz", + "integrity": "sha512-5ZOScg5EvyLV59mDUxSbL9x10cUbZsoSqvNETGLruyXILHaRHa8WS00wffcDA/dRzKIk9xQwJNwplcWnpT8WUw==", "optional": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-sdk-sts": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/credential-provider-node": "3.325.0", + "@aws-sdk/fetch-http-handler": "3.310.0", + "@aws-sdk/hash-node": "3.310.0", + "@aws-sdk/invalid-dependency": "3.310.0", + "@aws-sdk/middleware-content-length": "3.325.0", + "@aws-sdk/middleware-endpoint": "3.325.0", + "@aws-sdk/middleware-host-header": "3.325.0", + "@aws-sdk/middleware-logger": "3.325.0", + "@aws-sdk/middleware-recursion-detection": "3.325.0", + "@aws-sdk/middleware-retry": "3.325.0", + "@aws-sdk/middleware-sdk-sts": "3.325.0", + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/middleware-signing": "3.325.0", + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/middleware-user-agent": "3.325.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/node-http-handler": "3.321.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/smithy-client": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "@aws-sdk/util-body-length-browser": "3.310.0", + "@aws-sdk/util-body-length-node": "3.310.0", + "@aws-sdk/util-defaults-mode-browser": "3.325.0", + "@aws-sdk/util-defaults-mode-node": "3.325.0", + "@aws-sdk/util-endpoints": "3.319.0", + "@aws-sdk/util-retry": "3.310.0", + "@aws-sdk/util-user-agent-browser": "3.310.0", + "@aws-sdk/util-user-agent-node": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", "fast-xml-parser": "4.1.2", - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/config-resolver": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.289.0.tgz", - "integrity": "sha512-QYrBJeFJwx9wL73xMJgSTS6zY5SQh0tbZXpVlSZcNDuOufsu5zdcZZCOp0I20yGf8zxKX59u7O73OUlppkk+Wg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz", + "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==", "optional": true, "requires": { - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-config-provider": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.289.0.tgz", - "integrity": "sha512-RrK15OhL6UR8QKD415hggKfl8wcsMBqafcw/uYDESlvuAQVIi7hLgf5/2Onbhbc+m3huTBHY9e1D1n7u9hf9Bw==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.325.0.tgz", + "integrity": "sha512-5tTBLfzPu3r/0PNXle9sy6B9gTTtbg8hB9aSON7Xs1XSUDD3MjDQ8HVwIvqtTSTipyXRq8UbEmrWWuZwywinIg==", "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/client-cognito-identity": "3.325.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-env": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.289.0.tgz", - "integrity": "sha512-h4yNEW2ZJATKVxL0Bvz/WWXUmBr+AhsTyjUNge734306lXNG5/FM7zYp2v6dSQWt02WwBXyfkP3lr+A0n4rHyA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz", + "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-imds": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.289.0.tgz", - "integrity": "sha512-SIl+iLQpDR6HA9CKTebui7NLop5GxnCkufbM3tbSqrQcPcEfYLOwXpu5gpKO2unQzRykCoyRVia1lr7Pc9Hgdg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz", + "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==", "optional": true, "requires": { - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-ini": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.289.0.tgz", - "integrity": "sha512-kvNUn3v4FTRRiqCOXl46v51VTGOM76j5Szcrhkk9qeFW6zt4iFodp6tQ4ynDtDxYxOvjuEfm3ii1YN5nkI1uKA==", - "optional": true, - "requires": { - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.325.0.tgz", + "integrity": "sha512-jvNEHU4zEBbtvf2JqiC2ENb0Y55BurA5X6KVBP1vA3mvn7+zIGH9qD1nAkpvrRelzuorbC5Ey7AmZshR+AugTg==", + "optional": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.310.0", + "@aws-sdk/credential-provider-imds": "3.310.0", + "@aws-sdk/credential-provider-process": "3.310.0", + "@aws-sdk/credential-provider-sso": "3.325.0", + "@aws-sdk/credential-provider-web-identity": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-node": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.289.0.tgz", - "integrity": "sha512-05CYPGnk5cDiOQDIaXNVibNOwQdI34MDiL17YkSfPv779A+uq4vqg/aBfL41BDJjr1gSGgyvVhlcUdBKnlp93Q==", - "optional": true, - "requires": { - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-ini": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.325.0.tgz", + "integrity": "sha512-SG3F3yywnSzYcG5diErez9ukG8tToQIksedL/pM/gYFJ1zKYH560VJRc7Rkt0yjnl2cPFewazvPoDLBN/5Azbw==", + "optional": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.310.0", + "@aws-sdk/credential-provider-imds": "3.310.0", + "@aws-sdk/credential-provider-ini": "3.325.0", + "@aws-sdk/credential-provider-process": "3.310.0", + "@aws-sdk/credential-provider-sso": "3.325.0", + "@aws-sdk/credential-provider-web-identity": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-process": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.289.0.tgz", - "integrity": "sha512-t39CJHj1/f2DcRbEUSJ1ixwDsgaElDpJPynn59MOdNnrSh5bYuYmkrum/GYXYSsk+HoSK21JvwgvjnrkA9WZKQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz", + "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-sso": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.289.0.tgz", - "integrity": "sha512-8+DjOqj5JCpVdT4EJtdfis6OioAdiDKM1mvgDTG8R43MSThc+RGfzqaDJQdM+8+hzkYhxYfyI9XB0H+X3rDNsA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.325.0.tgz", + "integrity": "sha512-Te7jxJwjVGJAPWN3jCq2xcYrX8d4WkZFIqSIWSmrHqGKgWPc8+QgUkpRQkHaM+4NeNBJadRG1XbJNfu22gjDWA==", "optional": true, "requires": { - "@aws-sdk/client-sso": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/token-providers": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sso": "3.325.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/token-providers": "3.325.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.289.0.tgz", - "integrity": "sha512-jZ9hQvr0I7Z2DekDtZytViYn7zNNJG06N0CinAJzzvreAQ1I61rU7mhaWc05jhBSdeA3f82XoDAgxqY4xIh9pQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz", + "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-providers": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.289.0.tgz", - "integrity": "sha512-kXNhi0s0oZ8k2cv3D5350glKutV4Lgg/hVBAAU/AnjFl5JFiZZKFpTs3N8p0MLCESipL2uCws7R0UU7uy8sKIQ==", - "optional": true, - "requires": { - "@aws-sdk/client-cognito-identity": "3.289.0", - "@aws-sdk/client-sso": "3.289.0", - "@aws-sdk/client-sts": "3.289.0", - "@aws-sdk/credential-provider-cognito-identity": "3.289.0", - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-ini": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.325.0.tgz", + "integrity": "sha512-PUs8Na+RVnzpX+ZXCA85Im5OMdBuHfLN7FjFCuMuGDqOFFNNTQkqsXZ5RaSOKAYaKafY4e/dTd/zvxzB4o3ijg==", + "optional": true, + "requires": { + "@aws-sdk/client-cognito-identity": "3.325.0", + "@aws-sdk/client-sso": "3.325.0", + "@aws-sdk/client-sts": "3.325.0", + "@aws-sdk/credential-provider-cognito-identity": "3.325.0", + "@aws-sdk/credential-provider-env": "3.310.0", + "@aws-sdk/credential-provider-imds": "3.310.0", + "@aws-sdk/credential-provider-ini": "3.325.0", + "@aws-sdk/credential-provider-node": "3.325.0", + "@aws-sdk/credential-provider-process": "3.310.0", + "@aws-sdk/credential-provider-sso": "3.325.0", + "@aws-sdk/credential-provider-web-identity": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/fetch-http-handler": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.289.0.tgz", - "integrity": "sha512-tksh2GnDV1JaI+NO9x+pgyB3VNwjnUdtoMcFGmTDm1TrcPNj0FLX2hLiunlVG7fFMfGLXC2aco0sUra5/5US9Q==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz", + "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/querystring-builder": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/querystring-builder": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-base64": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/hash-node": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.289.0.tgz", - "integrity": "sha512-fL7Pt4LU+tluHn0+BSIFVD2ZVJ5fuXvd1hQt4aTYrgkna1RR5v55Hdy2rNrp/syrkyE+Wv92S3hgZ7ZTBeXFZA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz", + "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-buffer-from": "3.208.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-buffer-from": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/invalid-dependency": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.289.0.tgz", - "integrity": "sha512-VpXadvpqXFUA8gBH6TAAJzsKfEQ4IvsiD7d9b2B+jw1YtaPFTqEEuDjN6ngpad8PCPCNWl8CI6oBCdMOK+L48A==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz", + "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/is-array-buffer": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", - "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", + "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-content-length": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.289.0.tgz", - "integrity": "sha512-D7vGeuaAzKiq0aFPwme1Xy4x69Jn4v0YJ3Xa4J+keNep0yZ9LfU5KSngqsxeTefCqS+2tdaArkBN2VdexmPagw==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.325.0.tgz", + "integrity": "sha512-t38VBKCpNqSKqSu0OfWMJs7cwaRHFGQxIF9lV8JMCM/2lyUpN4JcfuzSTK+MFN2eDZEHp5DiNg8w07GXXusRYg==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-endpoint": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.289.0.tgz", - "integrity": "sha512-nxaQFOG1IurwCHWP22RxgTFZdILsdBg6wbg4GeFpNBtE3bi0zIUYKrUhpdRr/pZyGAboD1oD9iQtxuGb/M6f+w==", - "optional": true, - "requires": { - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.325.0.tgz", + "integrity": "sha512-3CavuOHCKiWUnCtzrUFbhbEP26qIgzzRs5C3vpOJhDUhugBubIWgPGGRLpbnIro+P4XJPwM3pMziNzhKVuSDlQ==", + "optional": true, + "requires": { + "@aws-sdk/middleware-serde": "3.325.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/url-parser": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-host-header": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.289.0.tgz", - "integrity": "sha512-yFBOKvKBnITO08JCx+65vXPe9Uo4gZuth/ka9v5swa4wtV8AP+kkOwFrNxSi2iAFLJ4Mg21vGQceeL0bErF6KQ==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.325.0.tgz", + "integrity": "sha512-IN28gsxcRy4J+FxxCHvzb2NORBx8uMA+h9QYS4BBZfpKVYIZh+mudHgYcdNHWlKXmlTGjhWBNWTeByhzuSKAiA==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-logger": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.289.0.tgz", - "integrity": "sha512-c5W7AlOdoyTXRoNl2yOVkhbTjp8tX0z65GDb3+/1yYcv+GRtz67WMZscWMQJwEfdCLdDE2GtBe+t2xyFGnmJvA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.325.0.tgz", + "integrity": "sha512-S8rWgTpN2b/+UDDm+yZMFM6rw1zwO8KT0GAIQbAhB96shyD5eKen/UfihCTB7YMvbD2piebymwJTvxv6bn1VqQ==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-recursion-detection": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.289.0.tgz", - "integrity": "sha512-r2NrfnTG0UZRXeFjoyapAake7b1rUo6SC52/UV4Pdm8cHoYMmljnaGLjiAfzt6vWv6cSVCJq1r28Ne4slAoMAg==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.325.0.tgz", + "integrity": "sha512-2l1ABF7KePsoKz8KaNvD2uxo1zHqkFHK4PL/wW/FbcwOcE08f0R7qX++st/bPpVjXX/j/5vWTnNNgJOIOrZhyw==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-retry": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.289.0.tgz", - "integrity": "sha512-Su+iGv5mrFjVCXJmjohX00o3HzkwnhY0TDhIltgolB6ZfOqy3Dfopjj21OWtqY9VYCUiLGC4KRfeb2feyrz5BA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.325.0.tgz", + "integrity": "sha512-oQM5AI3vkNQuCakBMgdohOcvRnVYcBBlv+KzCCj07ue9gk0x2dHOZY2pqTQ2CYilRqS/X1PtLogJXoyHP5Wvwg==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/service-error-classification": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-middleware": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "tslib": "^2.3.1", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/service-error-classification": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "@aws-sdk/util-retry": "3.310.0", + "tslib": "^2.5.0", "uuid": "^8.3.2" } }, "@aws-sdk/middleware-sdk-sts": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.289.0.tgz", - "integrity": "sha512-9WzUVPEqJcvggGCk9JHXnwhj7fjuMXE/JM3gx7eMSStJCcK+3BARZ1RZnggUN4vN9iTSzdA+r0OpC1XnUGKB2g==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.325.0.tgz", + "integrity": "sha512-deRK1ZuNueQ6OOTEhBZ9bLmjPema/N3cwbtO+tDVwpi7MipjE4EZDXX8WL0xza5YLRnz9kxcHuyfL47vvKgO3A==", "optional": true, "requires": { - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/middleware-signing": "3.325.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-serde": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.289.0.tgz", - "integrity": "sha512-pygC+LsEBVAxOzfoxA9jgvqfO1PLivh8s2Yr/aNQOwx49fmTHMvPwRYUGDV38Du6bRYcKI6nxYqkbJFkQkRESQ==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.325.0.tgz", + "integrity": "sha512-QAZYaFfAw1a06Vg39JiYIq0kSJ6EuUPOiKfK/Goj0cBv78lrXWuKdf04UF3U8Rqk/4mamnsTqUSwf4NoKkF0hw==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-signing": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.289.0.tgz", - "integrity": "sha512-9SLATNvibxg4hpr4ldU18LwB6AVzovONWeJLt49FKISz7ZwGF6WVJYUMWeScj4+Z51Gozi7+pUIaFn7i6N3UbA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.325.0.tgz", + "integrity": "sha512-SOwPwaCE3vSCGwFzkIlnOUSkeCUzKTyIQnFVjlQkqGuMxMX/iDaQQGaX+HUbuGIuULCEQqjZH4dLKZcor8eVZw==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/signature-v4": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-stack": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.289.0.tgz", - "integrity": "sha512-3rWx+UkV//dv/cLIrXmzIa+FZcn6n76JevGHYCTReiRpcvv+xECxgXH2crMYtzbu05WdxGYD6P0IP5tMwH0yXA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.325.0.tgz", + "integrity": "sha512-cZWehA4grGvX1IKlY9atJgD0bq3ew7YRJgY7GA6DSgsU7GrZ61Qvi+H7IuGx5AdeAwaTnbnTGN4qCaA2EfxNhA==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/middleware-user-agent": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.289.0.tgz", - "integrity": "sha512-XPhB9mgko66BouyxA+7z7SjUaNHyr58Xe/OB8GII5R/JiR3A/lpc8+jm9gEEpjEI/HpF8jLFDnTMbgabVAHOeA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.325.0.tgz", + "integrity": "sha512-2aIdGId4o8eIStm1J1aWZwNDf6nvrwg5Nx7BomLAxKZ4lkH8knzXDtxaZR4ElcTsBlBcYxz2gbsrScMyKRDTGA==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-endpoints": "3.319.0", + "tslib": "^2.5.0" } }, "@aws-sdk/node-config-provider": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.289.0.tgz", - "integrity": "sha512-rR41c3Y7MYEP8TG9X1whHyrXEXOZzi4blSDqeJflwtNt3r3HvErGZiNBdVv368ycPPuu1YRSqTkgOYNCv02vlw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz", + "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/node-http-handler": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.289.0.tgz", - "integrity": "sha512-zKknSaOY2GNmqH/eoZndmQWoEKhYPV0qRZtAMxuS3DVI5fipBipNzbVBaXrHRjxARx7/VLWnvNArchRoHfOlmw==", + "version": "3.321.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.321.1.tgz", + "integrity": "sha512-DdQBrtFFDNtzphJIN3s93Vf+qd9LHSzH6WTQRrWoXhTDMHDzSI2Cn+c5KWfk89Nggp/n3+OTwUPQeCiBT5EBuw==", "optional": true, "requires": { - "@aws-sdk/abort-controller": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/querystring-builder": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/abort-controller": "3.310.0", + "@aws-sdk/protocol-http": "3.310.0", + "@aws-sdk/querystring-builder": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/property-provider": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.289.0.tgz", - "integrity": "sha512-Raf4lTWPTmEGFV7Lkbfet2n/4Ybz5vQiiU45l56kgIQA88mLUuE4dshgNsM0Zb2rflsTaiN1JR2+RS/8lNtI8A==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz", + "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/protocol-http": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.289.0.tgz", - "integrity": "sha512-/2jOQ3MJZx1xk6BHEOW47ItGo1tgA9cP9a2saYneon05VIV6OuYefO5pG2G0nPnImTbff++N7aioXe5XKrnorw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz", + "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/querystring-builder": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.289.0.tgz", - "integrity": "sha512-llJCS8mAJfBYBjkKeriRmBuDr2jIozrMWhJOkz95SQGFsx1sKBPQMMOV6zunwhQux8bjtjf5wYiR1TM2jNUKqQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz", + "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-uri-escape": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/querystring-parser": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.289.0.tgz", - "integrity": "sha512-84zXKXIYtnTCrez/gGZIGuqfUJezzaOMm7BQwnOnq/sN21ou63jF3Q+tIMhLO/EvDcvmxEOlUXN1kfMQcjEjSw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz", + "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/service-error-classification": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.289.0.tgz", - "integrity": "sha512-+d1Vlb45Bs2gbTmXpRCGQrX4AQDETjA5sx1zLvq1NZGSnTX6LdroYPtXu3dRWJwDHHQpCMN/XfFN8jTw0IzBOg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz", + "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==", "optional": true }, "@aws-sdk/shared-ini-file-loader": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.289.0.tgz", - "integrity": "sha512-XG9Pfn3itf3Z0p6nY6UuMVMhzZb+oX7L28oyby8REl8BAwfPkcziLxXlZsBHf6KcgYDG1R6z945hvIwZhJbjvA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz", + "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/signature-v4": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.289.0.tgz", - "integrity": "sha512-IQyYHx3zp7PHxFA17YDb6WVx8ejXDxrsnKspFXgZQyoZOPfReqWQs32dcJYXff/IdSzxjwOpwBFbmIt2vbdKnQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz", + "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==", "optional": true, "requires": { - "@aws-sdk/is-array-buffer": "3.201.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-hex-encoding": "3.201.0", - "@aws-sdk/util-middleware": "3.289.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/is-array-buffer": "3.310.0", + "@aws-sdk/types": "3.310.0", + "@aws-sdk/util-hex-encoding": "3.310.0", + "@aws-sdk/util-middleware": "3.310.0", + "@aws-sdk/util-uri-escape": "3.310.0", + "@aws-sdk/util-utf8": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/smithy-client": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.289.0.tgz", - "integrity": "sha512-miPMdnv4Ivv8RN65LJ9dxzkQNHn9Tp9wzZJXwBcPqGdXyRlkWSuIOIIhhAqQoV9R9ByeshnCWBpwqlITIjNPVw==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.325.0.tgz", + "integrity": "sha512-sqDFuhjxd8+Q9qI8MmXe/g1/FgoViwetv14K+bpHK7pGlOIvDyT7TboDNClfgqSLdgTDCEaoC3JRSi9Y5RgbmA==", "optional": true, "requires": { - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/middleware-stack": "3.325.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/token-providers": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.289.0.tgz", - "integrity": "sha512-fzvGIfJNoLR5g24ok8cRwc9AMLXoEOyfi+eHocAF6eyfe0NWlQtpsmLe7XXx5I9yZ51lclzV49rEz9ynp243RA==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.325.0.tgz", + "integrity": "sha512-h/ecgqXaMwEkUWo+SZJNcOMWJkAknjonWWpK/vQ4uz+qE9rBqRugsIeIiey+Ij7zCtwh6WhtpfCpt5RbxRHe6g==", "optional": true, "requires": { - "@aws-sdk/client-sso-oidc": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sso-oidc": "3.325.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/shared-ini-file-loader": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/types": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.289.0.tgz", - "integrity": "sha512-wwUC+VwoNlEkgDzK/aJG3+zeMcYRcYFQV4mbZaicYdp3v8hmkUkJUhyxuZYl/FmY46WG+DYv+/Y3NilgfsE+Wg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz", + "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/url-parser": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.289.0.tgz", - "integrity": "sha512-rbtW3O6UBX+eWR/+UiCDNFUVwN8hp82JPy+NGv3NeOvRjBsxkKmcH4UJTHDIeT+suqTDNEdV5nz438u3dHdHrQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz", + "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==", "optional": true, "requires": { - "@aws-sdk/querystring-parser": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/querystring-parser": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/util-base64": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz", - "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", + "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", "optional": true, "requires": { - "@aws-sdk/util-buffer-from": "3.208.0", - "tslib": "^2.3.1" + "@aws-sdk/util-buffer-from": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/util-body-length-browser": { - "version": "3.188.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", - "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", + "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-body-length-node": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", - "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", + "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-buffer-from": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz", - "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", + "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", "optional": true, "requires": { - "@aws-sdk/is-array-buffer": "3.201.0", - "tslib": "^2.3.1" + "@aws-sdk/is-array-buffer": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/util-config-provider": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", - "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", + "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-defaults-mode-browser": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.289.0.tgz", - "integrity": "sha512-sYrDwjX3s54cvGq69PJpP2vDpJ5BJXhg2KEHbK92Qr2AUqMUgidwZCw4oBaIqKDXcPIrjmhod31s3tTfYmtTMQ==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.325.0.tgz", + "integrity": "sha512-gcowpXTo8E8N3jxD2KW+csiicJ7HPkhWnpL925xgwe0oq091OpATsKFrBOL18h72VfRWf4FAsR9lVwxSQ78zSA==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", "bowser": "^2.11.0", - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-defaults-mode-node": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.289.0.tgz", - "integrity": "sha512-PsP40+9peN7kpEmQ2GhEAGwUwD9F/R/BI/1kzjW0nbBsMrTnkUnlZlaitwpBX/OWNV/YZTdVAOvD50j/ACyXlg==", + "version": "3.325.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.325.0.tgz", + "integrity": "sha512-/5uoOrgNxoUxv3AwsdXjMA3f6KJA6fi69otA0RiINjilCdcbOxq5GI11AFEyRio/+e+imriX4+UYjsguUR+f4g==", "optional": true, "requires": { - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/config-resolver": "3.310.0", + "@aws-sdk/credential-provider-imds": "3.310.0", + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/property-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/util-endpoints": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.289.0.tgz", - "integrity": "sha512-PmsgqL9jdNTz3p0eW83nZZGcngAdoIWidXCc32G5tIIYvJutdgkiObAaydtXaMgk5CRvjenngFf6Zg9JyVHOLQ==", + "version": "3.319.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.319.0.tgz", + "integrity": "sha512-3I64UMoYA2e2++oOUJXRcFtYLpLylnZFRltWfPo1B3dLlf+MIWat9djT+mMus+hW1ntLsvAIVu1hLVePJC0gvw==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/util-hex-encoding": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", - "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", + "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-locate-window": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz", - "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", + "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-middleware": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.289.0.tgz", - "integrity": "sha512-hw3WHQU9Wk7a1H3x+JhwMA4ECCleeuNlob3fXSYJmXgvZyuWfpMYZi4iSkqoWGFAXYpAtZZLIu45iIcd7F296g==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz", + "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-retry": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.289.0.tgz", - "integrity": "sha512-noFn++ZKH11ExTBqUU/b9wsOjqxYlDnN/8xq+9oCsyBnEZztVgM/AM3WP5qBPRskk1WzDprID5fb5V87113Uug==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz", + "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==", "optional": true, "requires": { - "@aws-sdk/service-error-classification": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/service-error-classification": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/util-uri-escape": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", - "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", + "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", "optional": true, "requires": { - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-user-agent-browser": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.289.0.tgz", - "integrity": "sha512-BDXYgNzzz2iNPTkl9MQf7pT4G80V6O6ICwJyH93a5EEdljl7oPrt8i4MS5S0BDAWx58LqjWtVw98GOZfy5BYhw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz", + "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==", "optional": true, "requires": { - "@aws-sdk/types": "3.289.0", + "@aws-sdk/types": "3.310.0", "bowser": "^2.11.0", - "tslib": "^2.3.1" + "tslib": "^2.5.0" } }, "@aws-sdk/util-user-agent-node": { - "version": "3.289.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.289.0.tgz", - "integrity": "sha512-f32g9KS7pwO6FQ9N1CtqQPIS6jhvwv/y0+NHNoo9zLTBH0jol3+C2ELIE3N1wB6xvwhsdPqR3WuOiNiCiv8YAQ==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz", + "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==", "optional": true, "requires": { - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" + "@aws-sdk/node-config-provider": "3.310.0", + "@aws-sdk/types": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/util-utf8": { - "version": "3.254.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz", - "integrity": "sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", + "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", "optional": true, "requires": { - "@aws-sdk/util-buffer-from": "3.208.0", - "tslib": "^2.3.1" + "@aws-sdk/util-buffer-from": "3.310.0", + "tslib": "^2.5.0" } }, "@aws-sdk/util-utf8-browser": { @@ -3991,9 +3977,9 @@ } }, "@types/node": { - "version": "18.15.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz", - "integrity": "sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==" + "version": "18.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", + "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" }, "@types/webidl-conversions": { "version": "7.0.0", @@ -4833,9 +4819,9 @@ } }, "mongoose": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.0.tgz", - "integrity": "sha512-0zrKDEnmNscYyAyN94smo2LlJ63gaezKHpHM+KQ+6EiAgAnah5Kt3hQSYzOTQX/63YNdT1oJXiLlB5LqTdcjUw==", + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.5.tgz", + "integrity": "sha512-y4HL4/9EySec7L0gJ+pCm9heLSF45uIIvRS4fSeAFWDfe4vXW1vRZJwTz7OGkra3ZoSfRnFTo9bNZkuggDVlVA==", "requires": { "bson": "^4.7.0", "kareem": "2.5.1", diff --git a/package.json b/package.json index 079e71d..98fab00 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "dotenv": "^16.0.3", "express": "^4.18.2", "jsonwebtoken": "^9.0.0", - "mongoose": "^6.10.0", + "mongoose": "6.10", "multer": "^1.4.5-lts.1", "nodemon": "^2.0.21" } From 4f06fd3e5475b79a8cc7cf41815db5a4fabcd052 Mon Sep 17 00:00:00 2001 From: hadarna Date: Wed, 3 May 2023 11:53:57 +0300 Subject: [PATCH 036/150] favourite --- BL/user.services.js | 34 ++++++++++++++++++++++++++++++++++ DL/user.controller.js | 19 +++++++++++++++++++ DL/user.model.js | 12 +++++++++++- Routes/user.route.js | 27 +++++++++++++++++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) diff --git a/BL/user.services.js b/BL/user.services.js index 76b9808..6e1068d 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -13,7 +13,41 @@ async function findUser(user) { return foundUser; } + +// async function addFavourite(idEvent, idUser){ +// const allFavourites= await userController.readOne({_id:idUser}, "favourites -_id") +// console.log("check", allFavourites) +// const ifFav= (allFavourites.favourites).filter((f)=>f._id==idEvent ); +// console.log("isFav", ifFav) +// if(ifFav.length==0){ +// console.log("inside") +// await userController.update({_id:idUser}, {$push: {favourites:{idEvent}}}); +// } +// else{ +// await userController.update({_id:idUser},{"favourites.id":idEvent},{ +// $set:{ +// "favourites.$.isFavourite":true +// } +// })} +// const updateUser= await userController.readOne({_id:idUser}); +// console.log(updateUser); +// return updateUser; +// } + +// async function removeFavourite(idEvent, idUser){ +// await userController.update({_id:idUser},{"favourites[_id]":idEvent},{ +// $set:{ +// "favourites.$.isFavourite":false +// } +// }) +// console.log(userController.read()) + +// } + + module.exports = { createUser, findUser, + // addFavourite, + // removeFavourite } \ No newline at end of file diff --git a/DL/user.controller.js b/DL/user.controller.js index 6d0e46b..057cf17 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -37,8 +37,27 @@ async function find(user) { } } +async function read(filter, proj){ + return await userData.find({filter}, proj); +} + +async function readOne (filter, proj){ + let res= await read(filter, proj); + return res[0] + +} + +async function update(filter, newData){ + return await userData.updateOne(filter, newData) + +} + + module.exports = { create, find, + read, + readOne, + update } \ No newline at end of file diff --git a/DL/user.model.js b/DL/user.model.js index 4bad2d1..60c37ae 100644 --- a/DL/user.model.js +++ b/DL/user.model.js @@ -1,6 +1,6 @@ const mongoose = require("mongoose"); const bcrypt = require("bcrypt"); - +require("./event.model") const userSchema = new mongoose.Schema({ fullName: { @@ -13,6 +13,16 @@ const userSchema = new mongoose.Schema({ email: { type: String, }, + // favourites: + // [{ + // id: { + // type: mongoose.Schema.Types.ObjectId, + // ref: "events"} + // , + // isFavourite: { + // type: Boolean, + // default: true} + // }] }) userSchema.pre("save", async function (next) { diff --git a/Routes/user.route.js b/Routes/user.route.js index 11bdb9c..ce42f66 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -31,10 +31,37 @@ userRouter.post("/login", async (req, res) => { // res.status(401).send({ error: 'Invalid credentials' }); // } + + } catch (err) { sendError(res, err); } }); +// userRouter.put("/addFavou", async(req,res)=>{ +// try{ +// console.log(req.body); +// await userServices.addFavourite(req.body.idEvent, req.body.idUser) +// res.send ("success") +// } +// catch(err){ +// console.log(err) +// } +// }) + + +// userRouter.put("/removeFavou", async(req,res)=>{ +// try{ +// console.log(req.body); +// await userServices.removeFavourite(req.body.idEvent, req.body.idUser) +// res.send ("success") +// } +// catch(err){ +// console.log(err) +// } +// }) + + + module.exports = userRouter; From 2e635d027745e0d0d874a583956d88691c6775da Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 3 May 2023 12:50:55 +0300 Subject: [PATCH 037/150] function findEventsNextNow add sort --- BL/event.services.js | 12 +++++++++--- Routes/event.route.js | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 475d8db..fa3f9a2 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -1,4 +1,5 @@ const eventController = require("../DL/event.controller"); +const eventModel = require("../DL/event.model") async function createNewEvent(eventData) { var dates = []; @@ -133,10 +134,15 @@ async function findEvent(filter) { return event; } -async function findEventsNextNow() { +async function findEventsNextNow(p) { - const dateNow = new Date() - const events =await eventController.read({date:{$gte:dateNow}}) +const dateNow = new Date() +// const page = p ||"0" +// const limit= 2 + + // const events =await eventController.read({date:{$gte:dateNow}}).limit(2).skip(0) + const events = await eventModel.find({date:{$gte:dateNow}})//.limit(limit).skip(limit*page) + events.sort((a,b) => (a.date[0] > b.date[0]) ? 1 : ((b.date[0] > a.date[0])?-1:0)) return events; } diff --git a/Routes/event.route.js b/Routes/event.route.js index e00eafc..10225b4 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -12,7 +12,7 @@ eventRouter.get("", async (req, res) => { } }); -eventRouter.get("/now", async (req, res) => { +eventRouter.get("/home", async (req, res) => { try { const event = await eventService.findEventsNextNow(); res.status(200).send(event); From 7bea8ba3a81f83dcb597aa7712c6459e0ed9ad38 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 3 May 2023 13:03:45 +0300 Subject: [PATCH 038/150] before big merge --- BL/event.services.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index afd947b..ac66b98 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -15,7 +15,7 @@ async function createNewEvent(eventData) { else if (eventData.personalRepeat === "ללא חזרה") var personalrepeat = 1; } if ( - eventData.repeatSettings.type === "endDate" && + eventData.repeatSettings?.type === "endDate" && eventData.personalRepeat !== "ללא חזרה" ) { dates = getDatesWithEndDate( @@ -68,7 +68,7 @@ function getDatesWithEndDate(startDate, endDate, repeat, days, personalrepeat) { let currentDate = new Date(startDate); const endDateObj = new Date(endDate); if (!personalrepeat) { - console.log(currentDate); + console.log("currentDate", currentDate); while (currentDate <= endDateObj) { dates.push(new Date(currentDate)); currentDate.setDate(currentDate.getDate() + repeat); From 4ad6863f0d521d25de15d2259a96fce23efad1c7 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 3 May 2023 13:03:52 +0300 Subject: [PATCH 039/150] before big merged --- .gitignore | 5 +++- Routes/event.route.js | 43 +++++++++++++++++++++++++++---- Routes/setting.route.js | 56 ++++++++++++++++++++--------------------- index.js | 2 +- 4 files changed, 71 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index 1dcef2d..c2afc18 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ node_modules -.env \ No newline at end of file +.env + +./upload +upload diff --git a/Routes/event.route.js b/Routes/event.route.js index e25111d..92a16cc 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -8,7 +8,7 @@ const fs = require("fs"); const uuidv4 = require("uuid/v4"); const { sendError } = require("../errController"); const { log } = require("console"); -const url = "localhost:5000"; +const URL = "localhost:5000"; const DIR = "upload"; const storage = multer.diskStorage({ @@ -24,7 +24,7 @@ const storage = multer.diskStorage({ null, `${originalname.split(".")[0]}-${today .toLocaleString() - .replace(/[-\/:]/g, "")}.${originalname.split(".")[1]}` + .replace(/[-\/:,\s]/g, "")}.${mimetype.split("/")[1]}` ); }, }); @@ -37,6 +37,7 @@ const upload = multer({ file.mimetype == "image/jpeg" ) { cb(null, true); + return `${URL}/${DIR}/${file.path}`; } else { cb(null, false); return cb(new Error("Only .png, .jpg and .jpeg format allowed!")); @@ -61,7 +62,7 @@ eventRouter.get("", async (req, res) => { eventRouter.get("/:eventID", async (req, res) => { try { - console.log(req.params.eventID); + console.log("req.params.eventID", req.params.eventID); const event = await eventService.findEventByID(req.params.eventID); res.status(200).send(event); } catch (err) { @@ -71,12 +72,44 @@ eventRouter.get("/:eventID", async (req, res) => { eventRouter.post("/createvent", multiUpload, async (req, res) => { try { - console.log(req.body); - const event = await eventService.createNewEvent(req.body); + console.log("hello"); + const { cardImageURL, coverImageURL, gallery } = req.files; + const dataEvent = JSON.parse(req.body.values); + console.dir(dataEvent); + // console.log({ carImageURL: cardImageURL[0].path }); + + // console.log("dataEvent", dataEvent); + if (cardImageURL) { + dataEvent.cardImageURL = `${URL}/${DIR}/${cardImageURL[0].filename}`; + } + if (coverImageURL) { + dataEvent.coverImageURL = `${URL}/${DIR}/${coverImageURL[0].filename}`; + } + if (gallery) { + dataEvent.gallery = gallery.map( + (file) => `${URL}/${DIR}/${file.filename}` + ); + } + console.log({ dataEvent }); + const event = await eventService.createNewEvent(dataEvent); res.send(event); + //TODO: send to email function } catch (err) { sendError(res, err); } }); +// eventRouter.post("/createvent", multiUpload, async (req, res) => { +// try { +// const newFile = req.files.filename; +// const dataEvent = req.body.event; +// console.log("req.files", req.files); +// console.log(newFile); +// const event = await eventService.createNewEvent(dataEvent); +// res.send(event); +// } catch (err) { +// sendError(res, err); +// } +// }); + module.exports = eventRouter; diff --git a/Routes/setting.route.js b/Routes/setting.route.js index 6adda7e..217be48 100644 --- a/Routes/setting.route.js +++ b/Routes/setting.route.js @@ -1,32 +1,32 @@ -const express = require('express'), -router = express.Router() -const { getSetting } = require('../BL/setting.services') +const express = require("express"), + router = express.Router(); +const { getSetting } = require("../BL/setting.services"); -router.get('', async (req,res)=>{ - try { - const data = await getSetting(req.body) - res.send(data) - } catch(err) { - console.log(err); - } -}) +router.get("", async (req, res) => { + try { + const data = await getSetting(req.body); + res.send(data); + } catch (err) { + console.log(err); + } +}); -router.get('/categories', async (req,res)=>{ - try { - const data = await getSetting({name: 'category'}) - res.send(data) - } catch(err) { - console.log(err); - } -}) +router.get("/categories", async (req, res) => { + try { + const data = await getSetting({ name: "category" }); + res.send(data); + } catch (err) { + console.log(err); + } +}); -router.get('/audiences', async (req,res)=>{ - try { - const data = await getSetting({name: 'audience'}) - res.send(data) - } catch(err) { - console.log(err); - } -}) +router.get("/audiences", async (req, res) => { + try { + const data = await getSetting({ name: "audience" }); + res.send(data); + } catch (err) { + console.log(err); + } +}); -module.exports = router +module.exports = router; diff --git a/index.js b/index.js index 86dee38..88b4137 100644 --- a/index.js +++ b/index.js @@ -8,7 +8,7 @@ const cors = require("cors"); app.use(express.json()); app.use(cors()); -app.use("/static",express.static("./upload")) +app.use("/upload", express.static("./upload")); app.use("/api", mainRouter); From 778ffca15914b5674c5a22d6206f8448b5df9dca Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 3 May 2023 13:43:24 +0300 Subject: [PATCH 040/150] after big merge --- package-lock.json | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 328c53c..2699981 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2415,14 +2415,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/nodemailer": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", - "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", @@ -5024,11 +5016,6 @@ } } }, - "nodemailer": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", - "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==" - }, "nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", From 71a6a821933993ffc01bd9899bd2328425180892 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 3 May 2023 13:43:45 +0300 Subject: [PATCH 041/150] after big merge --- package-lock.json | 14 ++++++++++++++ package.json | 1 + 2 files changed, 15 insertions(+) diff --git a/package-lock.json b/package-lock.json index 2699981..2e4ba0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.5", "multer": "^1.4.5-lts.1", + "nodemailer": "^6.9.1", "nodemon": "^2.0.21", "uuid": "^3.4.0" } @@ -2415,6 +2416,14 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/nodemailer": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", + "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", @@ -5016,6 +5025,11 @@ } } }, + "nodemailer": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", + "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==" + }, "nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", diff --git a/package.json b/package.json index 9050edf..ffad181 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.5", "multer": "^1.4.5-lts.1", + "nodemailer": "^6.9.1", "nodemon": "^2.0.21", "uuid": "^3.4.0" } From 4634e1b3bc7dc658d194f5831347bab08c5648b9 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 3 May 2023 14:17:50 +0300 Subject: [PATCH 042/150] function findEventsNextNow add sort2 --- BL/event.services.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BL/event.services.js b/BL/event.services.js index fa3f9a2..4e1350f 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -142,6 +142,8 @@ const dateNow = new Date() // const events =await eventController.read({date:{$gte:dateNow}}).limit(2).skip(0) const events = await eventModel.find({date:{$gte:dateNow}})//.limit(limit).skip(limit*page) + events.map(v=>v.date) + console.log(events); events.sort((a,b) => (a.date[0] > b.date[0]) ? 1 : ((b.date[0] > a.date[0])?-1:0)) return events; } From 53d77caaf6b03bc4505d4bdf5d977480dd126aa5 Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 3 May 2023 16:12:19 +0300 Subject: [PATCH 043/150] added filtered events by date and sort them out by most recent --- BL/event.services.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 8cd2343..e921e5c 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -1,4 +1,5 @@ const eventController = require("../DL/event.controller"); +const eventModel = require('../DL/event.model'); async function createNewEvent(eventData) { var dates = []; @@ -128,9 +129,20 @@ function getDatesWithNumberOfOccurrences( } return dates; } -async function findEvent(filter) { - const event = eventController.read(filter); - return event; + +async function findEvent() { + const currentDate = new Date(); + const filterdEvents = await eventModel.find({ date: { $gte: currentDate } }); + + const futureDates = filterdEvents.map((event) => { + const futureDates = event.date.filter((date) => new Date(date) >= currentDate); + event.date = futureDates.slice(0, 1); + return event; + }).filter((event) => event.date.length > 0); + + futureDates.sort((a, b) => a.date[0] > b.date[0] ? 1 : (b.date[0] > a.date[0] ? -1 : 0)); + + return futureDates; } async function findEventByID(id) { From 08a7715ca4b81b15b22b59138152d68c08c4dbd3 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 3 May 2023 16:36:06 +0300 Subject: [PATCH 044/150] function findEventsNextNow add limit&skip --- BL/event.services.js | 13 +++++++------ Routes/event.route.js | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 9b34df7..7e8756b 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -142,14 +142,15 @@ async function findEvent(filter) { async function findEventsNextNow(p) { const dateNow = new Date() -// const page = p ||"0" -// const limit= 2 +const page = p ||"0" +const limit= 10 // const events =await eventController.read({date:{$gte:dateNow}}).limit(2).skip(0) - const events = await eventModel.find({date:{$gte:dateNow}})//.limit(limit).skip(limit*page) - events.map(v=>v.date) - console.log(events); - events.sort((a,b) => (a.date[0] > b.date[0]) ? 1 : ((b.date[0] > a.date[0])?-1:0)) + const events = await eventModel.find({date:{$gte:dateNow}}).sort({date:1}).limit(limit).skip(limit*page) + // events.map(v=>{if (v.date.length<1) + // return v.date=v.date[0]}) + // console.log(events); + // events.sort((a,b) => (a.date[0] > b.date[0]) ? 1 : ((b.date[0] > a.date[0])?-1:0)) return events; } diff --git a/Routes/event.route.js b/Routes/event.route.js index 2935fa9..40d168c 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -60,7 +60,7 @@ eventRouter.post("", async (req, res) => { } }); -eventRouter.get("/home", async (req, res) => { +eventRouter.post("/home", async (req, res) => { try { const event = await eventService.findEventsNextNow(); res.status(200).send(event); From 1d77a38c5c966e1439d3682cefe4a0952f86b960 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 3 May 2023 20:25:57 +0300 Subject: [PATCH 045/150] multer without galery --- Routes/event.route.js | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index bb585f1..b6787f3 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -37,7 +37,7 @@ const upload = multer({ file.mimetype == "image/jpeg" ) { cb(null, true); - return `${URL}/${DIR}/${file.path}`; + return `${req.protocol}://${req.headers.host}/${DIR}/${file.path}`; } else { cb(null, false); return cb(new Error("Only .png, .jpg and .jpeg format allowed!")); @@ -49,8 +49,7 @@ const multiUpload = upload.fields([ { name: "coverImageURL", maxCount: 1 }, { name: "gallery", maxCount: 5 }, ]); -// router.post('/event',async (req,res)=>{ -// }) + eventRouter.post("", async (req, res) => { try { const event = await eventService.findEvent(req.body ? req.body : {}); @@ -76,18 +75,16 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { const { cardImageURL, coverImageURL, gallery } = req.files; const dataEvent = JSON.parse(req.body.values); console.dir(dataEvent); - // console.log({ carImageURL: cardImageURL[0].path }); - - // console.log("dataEvent", dataEvent); if (cardImageURL) { - dataEvent.cardImageURL = `${URL}/${DIR}/${cardImageURL[0].filename}`; + dataEvent.cardImageURL = `${req.protocol}://${req.headers.host}/${DIR}/${cardImageURL[0].filename}`; } if (coverImageURL) { - dataEvent.coverImageURL = `${URL}/${DIR}/${coverImageURL[0].filename}`; + dataEvent.coverImageURL = `${req.protocol}://${req.headers.host}/${DIR}/${coverImageURL[0].filename}`; } if (gallery) { dataEvent.gallery = gallery.map( - (file) => `${URL}/${DIR}/${file.filename}` + (file) => + `${req.protocol}://${req.headers.host}/${DIR}/${file.filename}` ); } console.log({ dataEvent }); @@ -99,17 +96,4 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { } }); -// eventRouter.post("/createvent", multiUpload, async (req, res) => { -// try { -// const newFile = req.files.filename; -// const dataEvent = req.body.event; -// console.log("req.files", req.files); -// console.log(newFile); -// const event = await eventService.createNewEvent(dataEvent); -// res.send(event); -// } catch (err) { -// sendError(res, err); -// } -// }); - module.exports = eventRouter; From 70a9bbcb1d65d65f711683388dd424cb970f9624 Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Thu, 4 May 2023 12:48:40 +0300 Subject: [PATCH 046/150] ab --- BL/emailInterface.js | 37 +++++++++++++++++++++ BL/event.services.js | 31 +++++++++++++++++ BL/user.services.js | 79 ++------------------------------------------ 3 files changed, 71 insertions(+), 76 deletions(-) create mode 100644 BL/emailInterface.js diff --git a/BL/emailInterface.js b/BL/emailInterface.js new file mode 100644 index 0000000..2cad7f8 --- /dev/null +++ b/BL/emailInterface.js @@ -0,0 +1,37 @@ +const nodemailer = require('nodemailer'); + + +async function sendMail(email, subject, html) { + try { + const transporter = await nodemailer.createTransport({ + service: "gmail", + auth: { + user: "hereevent1@gmail.com", + pass: "jeelwvaploojnari" + } + }); + const mailOptions = await { + from: 'hereevent1@gmail.com', + to: email, + subject: subject, + html: html + }; + transporter.sendMail(mailOptions, function (error, info) { + if (error) { + console.log(error); + } else { + console.log('Email sent: ' + info.response); + } + }); + + } catch (error) { + throw { message: "something went wrong" } + + } + + } + + module.exports = { + sendMail + }; + \ No newline at end of file diff --git a/BL/event.services.js b/BL/event.services.js index ac66b98..9752c8c 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -1,4 +1,5 @@ const eventController = require("../DL/event.controller"); +const mailInterface = require('./emailInterface') async function createNewEvent(eventData) { var dates = []; @@ -147,8 +148,38 @@ async function eventIsExists(id) { return await eventController.read({ id }); } +async function sendEventDetailsToAdvertiser(email, _id) { + const eventData =await findEventByID(_id); + const {eventName,summary,advertiser,isReapeated,categories,audiences,registrationPageURL,date,beginningTime,finishTime,place} = eventData; + const subject = 'פורסם אירוע חדש - hereEvent' + const html = ` +

` + //
  • שינוי פרטי האירוע
  • + + await mailInterface.sendMail(email, subject, html) + +} module.exports = { createNewEvent, findEvent, findEventByID, + sendEventDetailsToAdvertiser }; diff --git a/BL/user.services.js b/BL/user.services.js index a67fde5..86c3860 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -1,7 +1,7 @@ const userController = require("../DL/user.controller"); -const nodemailer = require('nodemailer'); const bcrypt = require('bcrypt') - +const eventService = require("../BL/event.services"); +const mailInterface = require('./emailInterface') const jwt = require('jsonwebtoken'); @@ -41,79 +41,7 @@ async function forgetPassword(email, code) {

    ,תודה

    HereEvent

    ` - await sendMail(email, subject, html) - -} - -async function sendEventDetailsToAdvertiser(email, eventDate) { - const {eventName,summary,advertiser,isReapeated,categories,audiences,registrationPageURL,date,beginningTime,finishTime,place} = eventDate; - const subject = 'פורסם אירוע חדש - hereEvent' - const html = ` -
    -

    פרטי אירוע חדש

    -

    אירוע חדש פורסם על ידך:

    -
      -
    • שם האירוע: ${eventName}
    • -
    • מפרסם: ${advertiser.name}
    • -
    • טלפון: ${advertiser.tel}
    • -
    • מייל: ${advertiser.email}
    • -
    • אירוע חוזר: ${isReapeated}
    • -
    • קטגוריות: ${categories}
    • -
    • קהל יעד: ${audiences}
    • -
    • תאריך האירוע: ${date}
    • -
    • שעות האירוע: ${beginningTime}-${finishTime}
    • -
    • מיקום האירוע: ${place}
    • -
    • פרטים נוספים על האירוע: ${summary}
    • -
    • דף הרשמה לאירוע: ${registrationPageURL}
    • - -
    -
    ` - //
  • שינוי פרטי האירוע
  • - - await sendMail(email, subject, html) - -} - -// const eventData = { -// eventName:"hi", -// summary:"dasasd", -// advertiser:{name:"abi",tel:"0543",email:"dasda@das"}, -// categories:["asd","das","lll"], -// audiences:["bbb","bfff","lll"], -// registrationPageURL:"https://www.youtube.com", -// date:[10/01/11,12/02/12], -// beginningTime:"12:00", -// finishTime:"13:00", -// place:"zxcvvv" -// } - -async function sendMail(email, subject, html) { - try { - const transporter = await nodemailer.createTransport({ - service: "gmail", - auth: { - user: "hereevent1@gmail.com", - pass: "jeelwvaploojnari" - } - }); - const mailOptions = await { - from: 'hereevent1@gmail.com', - to: email, - subject: subject, - html: html - }; - transporter.sendMail(mailOptions, function (error, info) { - if (error) { - console.log(error); - } else { - console.log('Email sent: ' + info.response); - } - }); - - } catch (error) { - throw { message: "something went wrong" } - - } + await mailInterface.sendMail(email, subject, html) } @@ -184,7 +112,6 @@ async function verifyToken(token) { module.exports = { createUser, findUser, - sendEventDetailsToAdvertiser, forgetPassword, changePassword, verifyToken, From c090839edff7bf702445e541f2f92c36eaa8de1e Mon Sep 17 00:00:00 2001 From: yisrael Date: Sun, 7 May 2023 21:23:51 +0300 Subject: [PATCH 047/150] =?UTF-8?q?added=20filtered=20events=20by=20date?= =?UTF-8?q?=20and=20sort=20them=20out=20by=20most=20recent=D7=AA=20started?= =?UTF-8?q?=20pagination?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BL/event.services.js | 45 +++++++++++++++++++++++++++++++------------ Routes/event.route.js | 8 +++++++- index.js | 2 +- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index d58aea8..e209d66 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -135,21 +135,42 @@ function getDatesWithNumberOfOccurrences( return dates; } -async function findEvent() { - const currentDate = new Date(); - const filterdEvents = await eventModel.find({ date: { $gte: currentDate } }); - - const futureDates = filterdEvents.map((event) => { - const futureDates = event.date.filter((date) => new Date(date) >= currentDate); - event.date = futureDates.slice(0, 1); - return event; - }).filter((event) => event.date.length > 0); - - futureDates.sort((a, b) => a.date[0] > b.date[0] ? 1 : (b.date[0] > a.date[0] ? -1 : 0)); - +async function findEvent(page, pageSize, currentDate, skipCount = 0) { + const filterdEvents = await eventModel + .find({ date: { $gte: currentDate } }) + .sort({ date: 1 }) + .skip(skipCount) + .limit(pageSize); + + const futureDates = filterdEvents + .map((event) => { + const futureDates = event.date.filter( + (date) => new Date(date) >= currentDate + ); + event.date = futureDates.slice(0, 1); + return event; + }).filter((event) => event.date.length > 0); + + futureDates.sort((a, b) => + a.date[0] > b.date[0] ? 1 : (b.date[0] > a.date[0] ? -1 : 0) + ); + return futureDates; } +// async function findEvent(page, pageSize) { +// const currentDate = new Date(); +// const skipCount = (page - 1) * pageSize; + +// const filteredEvents = await eventModel +// .find({ date: { $gte: currentDate } }) +// .sort({ date: 1 }) +// .skip(skipCount) +// .limit(pageSize); + +// return filteredEvents; +// } + async function findEventByID(id) { const event = eventController.readOne({ _id: id }); return event; diff --git a/Routes/event.route.js b/Routes/event.route.js index b6787f3..ac1e655 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -52,7 +52,13 @@ const multiUpload = upload.fields([ eventRouter.post("", async (req, res) => { try { - const event = await eventService.findEvent(req.body ? req.body : {}); + console.log(req.body.currentDate); + const page = parseInt(req.body.page) || 1; + const pageSize = req.body.pageSize; + const currentDate = req.body.currentDate || new Date(); + const skipCount = (page - 1) * pageSize; + console.log(`page Size: ${pageSize}`); + const event = await eventService.findEvent(page, pageSize, currentDate, skipCount); res.status(200).send(event); } catch (err) { sendError(res, err); diff --git a/index.js b/index.js index 84732e4..88b4137 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,7 @@ require("./DL/db").connect(); const mainRouter = require("./Routes"); const express = require("express"); const app = express(); -const PORT = process.env.PORמפT || 5000; +const PORT = process.env.PORT || 5000; const cors = require("cors"); app.use(express.json()); From 233e82a160a0ed5801c4d26d66486c8fe65f7d10 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 9 May 2023 22:56:43 +0300 Subject: [PATCH 048/150] page next --- BL/event.services.js | 10 +++++++++- Routes/event.route.js | 19 +++++-------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 9d9eefe..836750d 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -156,7 +156,15 @@ async function findEvent(page, pageSize, currentDate, skipCount = 0) { a.date[0] > b.date[0] ? 1 : (b.date[0] > a.date[0] ? -1 : 0) ); - return futureDates; + const results = {} + const endIndex = page * pageSize + + if(endIndex < await eventModel.find({ date: { $gte: currentDate } }).countDocuments().exec()){ + results.nextPage =page + 1 +} + +results.event = futureDates + return results; } // async function findEvent(page, pageSize) { diff --git a/Routes/event.route.js b/Routes/event.route.js index 92c27a2..2af3465 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -52,23 +52,14 @@ const multiUpload = upload.fields([ eventRouter.post("", async (req, res) => { try { - console.log(req.body.currentDate); + // console.log(req.body.currentDate); const page = parseInt(req.body.page) || 1; - const pageSize = req.body.pageSize; + const pageSize = req.body.pageSize || 20 ; // אמור להיות קבוע const currentDate = req.body.currentDate || new Date(); const skipCount = (page - 1) * pageSize; - console.log(`page Size: ${pageSize}`); - const event = await eventService.findEvent(page, pageSize, currentDate, skipCount); - res.status(200).send(event); - } catch (err) { - sendError(res, err); - } -}); - -eventRouter.post("/home", async (req, res) => { - try { - const event = await eventService.findEventsNextNow(); - res.status(200).send(event); + const data = await eventService.findEvent(page, pageSize, currentDate, skipCount); + res.status(200).send(data); + console.log(skipCount); } catch (err) { sendError(res, err); } From 252cafd21b587dafe1e245817b0115334bd28588 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 10 May 2023 00:57:37 +0300 Subject: [PATCH 049/150] minor changes --- DL/event.model.js | 18 ++++++++++-------- Routes/event.route.js | 1 - 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/DL/event.model.js b/DL/event.model.js index 04cfcc1..0c978d1 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,16 +24,18 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, - isReapeated:{type:Boolean, default:false}, + isReapeated: { type: Boolean, default: false }, repeatType: { type: String, }, - date: [{ - type: Date, - }], - deletedDate:[{type:Date}], - days:[], - repeatSettings:{type:{type:String},repeatEnd:{type:String}}, + date: [ + { + type: Date, + }, + ], + deletedDate: [{ type: Date }], + days: [], + repeatSettings: { type: { type: String }, repeatEnd: { type: String } }, beginningTime: { type: String, @@ -72,7 +74,7 @@ const eventSchema = new mongoose.Schema({ // gallery: [ // { // imageURL: { - // type: String, + // type: Array, // require: false, // }, // }, diff --git a/Routes/event.route.js b/Routes/event.route.js index b6787f3..266face 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -71,7 +71,6 @@ eventRouter.get("/:eventID", async (req, res) => { eventRouter.post("/createvent", multiUpload, async (req, res) => { try { - console.log("hello"); const { cardImageURL, coverImageURL, gallery } = req.files; const dataEvent = JSON.parse(req.body.values); console.dir(dataEvent); From 6590f000b863702dbf350729484d2a9160626e88 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 10 May 2023 01:48:43 +0300 Subject: [PATCH 050/150] page next and search --- BL/event.services.js | 11 +++++++---- Routes/event.route.js | 7 +++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 836750d..5adeaa1 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -136,10 +136,13 @@ function getDatesWithNumberOfOccurrences( return dates; } -async function findEvent(page, pageSize, currentDate, skipCount = 0) { + + + +async function findEvent(page, pageSize, currentDate, search, skipCount = 0) { const filterdEvents = await eventModel - .find({ date: { $gte: currentDate } }) - .sort({ date: 1 }) + .find({date: { $gte: currentDate },$or: [{ place: { $regex: search, $options: "i" } },{ eventName: { $regex: search, $options: "i" } } ]}) + .sort({ date: 1 }) .skip(skipCount) .limit(pageSize); @@ -159,7 +162,7 @@ async function findEvent(page, pageSize, currentDate, skipCount = 0) { const results = {} const endIndex = page * pageSize - if(endIndex < await eventModel.find({ date: { $gte: currentDate } }).countDocuments().exec()){ + if(endIndex < await eventModel.find({date: { $gte: currentDate },$or: [{ place: { $regex: search, $options: "i" } },{ eventName: { $regex: search, $options: "i" } } ]}).countDocuments().exec()){ results.nextPage =page + 1 } diff --git a/Routes/event.route.js b/Routes/event.route.js index 2af3465..97d7002 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -52,14 +52,13 @@ const multiUpload = upload.fields([ eventRouter.post("", async (req, res) => { try { - // console.log(req.body.currentDate); + const search = req.body.search || "" ; const page = parseInt(req.body.page) || 1; - const pageSize = req.body.pageSize || 20 ; // אמור להיות קבוע + const pageSize = req.body.pageSize || 5 ; // אמור להיות קבוע וכרגע נשלח מהקליינט const currentDate = req.body.currentDate || new Date(); const skipCount = (page - 1) * pageSize; - const data = await eventService.findEvent(page, pageSize, currentDate, skipCount); + const data = await eventService.findEvent(page, pageSize, currentDate, search, skipCount); res.status(200).send(data); - console.log(skipCount); } catch (err) { sendError(res, err); } From 401088cd7403f80c203470d31bbfd31f16c2f149 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 10 May 2023 10:36:49 +0300 Subject: [PATCH 051/150] uload to server --- index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.js b/index.js index 88b4137..9c46962 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ const express = require("express"); const app = express(); const PORT = process.env.PORT || 5000; const cors = require("cors"); +const fs = require("fs"); app.use(express.json()); app.use(cors()); @@ -16,5 +17,6 @@ app.use("/api", mainRouter); // res.send("hello world") // }); app.listen(PORT, () => { + if (!fs.existsSync("./upload")) fs.mkdirSync("./upload"); console.log("Server is running : listening to port " + PORT); }); From f938d0d48dc4e38042c2ef64d663e789687677e2 Mon Sep 17 00:00:00 2001 From: yisrael Date: Thu, 11 May 2023 10:55:46 +0300 Subject: [PATCH 052/150] added filtering to findEventById to return one most updated date. --- BL/event.services.js | 25 ++++++++++++++----------- Routes/event.route.js | 3 ++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 5adeaa1..dd9df68 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -141,8 +141,8 @@ function getDatesWithNumberOfOccurrences( async function findEvent(page, pageSize, currentDate, search, skipCount = 0) { const filterdEvents = await eventModel - .find({date: { $gte: currentDate },$or: [{ place: { $regex: search, $options: "i" } },{ eventName: { $regex: search, $options: "i" } } ]}) - .sort({ date: 1 }) + .find({ date: { $gte: currentDate }, $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }] }) + .sort({ date: 1 }) .skip(skipCount) .limit(pageSize); @@ -161,12 +161,12 @@ async function findEvent(page, pageSize, currentDate, search, skipCount = 0) { const results = {} const endIndex = page * pageSize - - if(endIndex < await eventModel.find({date: { $gte: currentDate },$or: [{ place: { $regex: search, $options: "i" } },{ eventName: { $regex: search, $options: "i" } } ]}).countDocuments().exec()){ - results.nextPage =page + 1 -} -results.event = futureDates + if (endIndex < await eventModel.find({ date: { $gte: currentDate }, $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }] }).countDocuments().exec()) { + results.nextPage = page + 1 + } + + results.event = futureDates return results; } @@ -183,18 +183,21 @@ results.event = futureDates // return filteredEvents; // } -async function findEventByID(id) { - const event = eventController.readOne({ _id: id }); +async function findEventByID(id, currentDate) { + const event = await eventController.readOne({ _id: id }); + const futureDates = event.date.filter((date) => new Date(date) >= currentDate); + event.date = futureDates.slice(0, 1); return event; } + async function eventIsExists(id) { return await eventController.read({ id }); } async function sendEventDetailsToAdvertiser(email, _id) { - const eventData =await findEventByID(_id); - const {eventName,summary,advertiser,isReapeated,categories,audiences,registrationPageURL,date,beginningTime,finishTime,place} = eventData; + const eventData = await findEventByID(_id); + const { eventName, summary, advertiser, isReapeated, categories, audiences, registrationPageURL, date, beginningTime, finishTime, place } = eventData; const subject = 'פורסם אירוע חדש - hereEvent' const html = `
    diff --git a/Routes/event.route.js b/Routes/event.route.js index abb4f33..5b6136d 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -66,8 +66,9 @@ eventRouter.post("", async (req, res) => { eventRouter.get("/:eventID", async (req, res) => { try { + const currentDate = req.body.currentDate || new Date(); console.log("req.params.eventID", req.params.eventID); - const event = await eventService.findEventByID(req.params.eventID); + const event = await eventService.findEventByID(req.params.eventID, currentDate); res.status(200).send(event); } catch (err) { sendError(res, err); From f8ee74eb87868ed68cb3f2a68a4332874b5c5d7c Mon Sep 17 00:00:00 2001 From: Naama Orlan Date: Sun, 14 May 2023 11:26:34 +0300 Subject: [PATCH 053/150] add the payment to the event model --- DL/event.model.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/DL/event.model.js b/DL/event.model.js index 0c978d1..85e6922 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -71,6 +71,15 @@ const eventSchema = new mongoose.Schema({ type: String, // require: true, }, + payment: { + isFree :{ + type: Boolean, + default: true + }, + price: { + type: Number, + } + }, // gallery: [ // { // imageURL: { @@ -79,19 +88,6 @@ const eventSchema = new mongoose.Schema({ // }, // }, // ], - // payment: { - // type: String, - // enum: ["free", "in-payment"], - // default: "free", - // details: [ - // { - // cardType: String, - // price: Number, - // require: false, - // }, - // ], - // require: false, - // }, // status: { // type: String, // enum: ["published", "waiting-for-approval", "invalid", "deleted"], From 74a575f207b19dd437f0988f58cdb9237c71a0e4 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Sun, 14 May 2023 23:34:00 +0300 Subject: [PATCH 054/150] search whith addfields --- BL/event.services.js | 51 +++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index dd9df68..d4efbc1 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -137,27 +137,27 @@ function getDatesWithNumberOfOccurrences( } +function pagination (filterModel, page, pageSize){ + filterModel.skip((page - 1) * pageSize).limit(pageSize) + const results = {} + const endIndex = page * pageSize + + if (endIndex < filterModel.countDocuments().exec()) { + results.nextPage = page + 1 + } + results.event = filteredEvents + return results; +} async function findEvent(page, pageSize, currentDate, search, skipCount = 0) { - const filterdEvents = await eventModel - .find({ date: { $gte: currentDate }, $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }] }) - .sort({ date: 1 }) - .skip(skipCount) - .limit(pageSize); - - const futureDates = filterdEvents - .map((event) => { - const futureDates = event.date.filter( - (date) => new Date(date) >= currentDate - ); - event.date = futureDates.slice(0, 1); - return event; - }).filter((event) => event.date.length > 0); - - futureDates.sort((a, b) => - a.date[0] > b.date[0] ? 1 : (b.date[0] > a.date[0] ? -1 : 0) - ); + const filteredEvents = await eventModel.aggregate([ + { $match: { date: { $gte: currentDate }, $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }] } }, + { $addFields: { date: { $filter: { input: "$date", as: "date", cond: { $gte: ["$$date", currentDate] } } } } }, + { $sort: { date: 1 } }, + { $skip: skipCount }, + { $limit: pageSize } + ]); const results = {} const endIndex = page * pageSize @@ -166,23 +166,10 @@ async function findEvent(page, pageSize, currentDate, search, skipCount = 0) { results.nextPage = page + 1 } - results.event = futureDates + results.event = filteredEvents return results; } -// async function findEvent(page, pageSize) { -// const currentDate = new Date(); -// const skipCount = (page - 1) * pageSize; - -// const filteredEvents = await eventModel -// .find({ date: { $gte: currentDate } }) -// .sort({ date: 1 }) -// .skip(skipCount) -// .limit(pageSize); - -// return filteredEvents; -// } - async function findEventByID(id, currentDate) { const event = await eventController.readOne({ _id: id }); const futureDates = event.date.filter((date) => new Date(date) >= currentDate); From 2b8a2708c49ac33af87304ec746667e368984994 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Sun, 14 May 2023 23:35:42 +0300 Subject: [PATCH 055/150] search whith addfields2 --- BL/event.services.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index d4efbc1..d19d4dc 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -137,18 +137,18 @@ function getDatesWithNumberOfOccurrences( } -function pagination (filterModel, page, pageSize){ - filterModel.skip((page - 1) * pageSize).limit(pageSize) - const results = {} - const endIndex = page * pageSize - - if (endIndex < filterModel.countDocuments().exec()) { - results.nextPage = page + 1 - } - - results.event = filteredEvents - return results; -} +// function pagination (filterModel, page, pageSize){ +// filterModel.skip((page - 1) * pageSize).limit(pageSize) +// const results = {} +// const endIndex = page * pageSize + +// if (endIndex < filterModel.countDocuments().exec()) { +// results.nextPage = page + 1 +// } + +// results.event = filteredEvents +// return results; +// } async function findEvent(page, pageSize, currentDate, search, skipCount = 0) { const filteredEvents = await eventModel.aggregate([ From 540bf2f88ff32aa4bb26f5b883367b75b88f0913 Mon Sep 17 00:00:00 2001 From: yisrael Date: Mon, 15 May 2023 11:49:41 +0300 Subject: [PATCH 056/150] fixed verify token from route to servicess to controller --- BL/user.services.js | 4 +++- DL/user.controller.js | 3 ++- Routes/user.route.js | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 86c3860..ea6a9d9 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -17,7 +17,7 @@ async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { try { - const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '1h' }); + const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '1440h' }); return { user: foundUser, token }; } catch (err) { console.error('Error generating Token:', err); @@ -64,7 +64,9 @@ async function verifyToken(token) { const decoded = jwt.verify(token, process.env.JWT_SECRET); if(decoded) { const email = decoded.email; + console.log(`im email: ${email}`); const verifyedUser = await userController.findEmail(email); + console.log(`im verifyed user: ${verifyedUser}`); return verifyedUser; } } catch (err) { diff --git a/DL/user.controller.js b/DL/user.controller.js index 06f40ce..aade95e 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -75,5 +75,6 @@ async function update(filter, newData){ module.exports = { create, find, - update + update, + findEmail } \ No newline at end of file diff --git a/Routes/user.route.js b/Routes/user.route.js index 97f7000..b6fa68d 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -54,10 +54,10 @@ userRouter.post("/verify", async (req, res) => { try { const token = req.body.aoutherizetion; const verifyUser = await userServices.verifyToken(token); - if (verifyUser===true){ + if (verifyUser){ res.status(200).send(verifyUser) }else{ - return res.status(401) + return res.status(401).send({error: 'Token not valid'}); } } catch (err) { sendError(res, err); From 5fec430817d4e13b7485bb10fcc43c3a67160c3a Mon Sep 17 00:00:00 2001 From: yisrael Date: Mon, 15 May 2023 11:58:57 +0300 Subject: [PATCH 057/150] deleted logs in findEventBYId and in verifyToken --- BL/user.services.js | 2 -- Routes/event.route.js | 1 - 2 files changed, 3 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index ea6a9d9..232884c 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -64,9 +64,7 @@ async function verifyToken(token) { const decoded = jwt.verify(token, process.env.JWT_SECRET); if(decoded) { const email = decoded.email; - console.log(`im email: ${email}`); const verifyedUser = await userController.findEmail(email); - console.log(`im verifyed user: ${verifyedUser}`); return verifyedUser; } } catch (err) { diff --git a/Routes/event.route.js b/Routes/event.route.js index 5b6136d..ab2a6b1 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -67,7 +67,6 @@ eventRouter.post("", async (req, res) => { eventRouter.get("/:eventID", async (req, res) => { try { const currentDate = req.body.currentDate || new Date(); - console.log("req.params.eventID", req.params.eventID); const event = await eventService.findEventByID(req.params.eventID, currentDate); res.status(200).send(event); } catch (err) { From 43e45541b45c65a368b25a2938ea58bd7a81edc2 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 17 May 2023 09:36:56 +0300 Subject: [PATCH 058/150] fix currect date --- Routes/event.route.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index ab2a6b1..775396b 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -55,7 +55,9 @@ eventRouter.post("", async (req, res) => { const search = req.body.search || "" ; const page = parseInt(req.body.page) || 1; const pageSize = req.body.pageSize || 5 ; // אמור להיות קבוע וכרגע נשלח מהקליינט - const currentDate = req.body.currentDate || new Date(); + const DateNow = new Date(); + const currentDateDefault= DateNow.setHours(0,0,0,0); + const currentDate = req.body.currentDate || currentDateDefault const skipCount = (page - 1) * pageSize; const data = await eventService.findEvent(page, pageSize, currentDate, search, skipCount); res.status(200).send(data); From 1ec44594dcf31422dd244881e67e2778beb9d595 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 17 May 2023 09:42:30 +0300 Subject: [PATCH 059/150] fix falt servis --- Routes/event.route.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 775396b..ab2a6b1 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -55,9 +55,7 @@ eventRouter.post("", async (req, res) => { const search = req.body.search || "" ; const page = parseInt(req.body.page) || 1; const pageSize = req.body.pageSize || 5 ; // אמור להיות קבוע וכרגע נשלח מהקליינט - const DateNow = new Date(); - const currentDateDefault= DateNow.setHours(0,0,0,0); - const currentDate = req.body.currentDate || currentDateDefault + const currentDate = req.body.currentDate || new Date(); const skipCount = (page - 1) * pageSize; const data = await eventService.findEvent(page, pageSize, currentDate, search, skipCount); res.status(200).send(data); From e45cf6f72971cfa2d82a5227920f1c33ad381c93 Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 17 May 2023 13:34:47 +0300 Subject: [PATCH 060/150] added userType in schema --- BL/user.services.js | 6 +++++- DL/user.model.js | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/BL/user.services.js b/BL/user.services.js index 232884c..02c30c3 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -13,11 +13,14 @@ async function createUser(newUserData) { }; } + async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { try { - const token = jwt.sign({ email: user.email }, process.env.JWT_SECRET, { expiresIn: '1440h' }); + const token = jwt.sign({ email: user.email }, + process.env.JWT_SECRET, + { expiresIn: '1440h' }); return { user: foundUser, token }; } catch (err) { console.error('Error generating Token:', err); @@ -27,6 +30,7 @@ async function findUser(user) { return { error: 'Invalid credentials' }; } } + async function forgetPassword(email, code) { const subject = 'Forget Password' diff --git a/DL/user.model.js b/DL/user.model.js index 60c37ae..86450dc 100644 --- a/DL/user.model.js +++ b/DL/user.model.js @@ -13,6 +13,10 @@ const userSchema = new mongoose.Schema({ email: { type: String, }, + userType: { + type: String, + enum: ['admin', 'regular'], + }, // favourites: // [{ // id: { From c8e3a60411f112f6b4411876a45b380f4255ae20 Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 17 May 2023 15:42:00 +0300 Subject: [PATCH 061/150] added updating function to update event status to published --- BL/event.services.js | 8 +++++++- DL/event.model.js | 10 +++++----- Routes/event.route.js | 10 ++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index d19d4dc..b21a637 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -177,6 +177,11 @@ async function findEventByID(id, currentDate) { return event; } +async function updateStatusEvent(id, newData) { + const event = await eventController.update(id, newData); + return event; +} + async function eventIsExists(id) { return await eventController.read({ id }); @@ -215,5 +220,6 @@ module.exports = { createNewEvent, findEvent, findEventByID, - sendEventDetailsToAdvertiser + sendEventDetailsToAdvertiser, + updateStatusEvent }; diff --git a/DL/event.model.js b/DL/event.model.js index 85e6922..df45c12 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -88,11 +88,11 @@ const eventSchema = new mongoose.Schema({ // }, // }, // ], - // status: { - // type: String, - // enum: ["published", "waiting-for-approval", "invalid", "deleted"], - // default: "waiting-for-approval", - // }, + status: { + type: String, + enum: ["published", "waiting-for-approval", "invalid", "deleted"], + default: "waiting-for-approval", + }, }); const events = mongoose.model("event", eventSchema); diff --git a/Routes/event.route.js b/Routes/event.route.js index ab2a6b1..4d35e79 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -74,6 +74,16 @@ eventRouter.get("/:eventID", async (req, res) => { } }); + +eventRouter.put("/:eventID", async (req, res) => { + try { + const event = await eventService.updateStatusEvent(req.params.eventID, req.body); + res.status(200).send(event); + } catch (err) { + sendError(res, err); + } +}); + eventRouter.post("/createvent", multiUpload, async (req, res) => { try { const { cardImageURL, coverImageURL, gallery } = req.files; From e4e456e34707ad8a6b0a737b8e187886ac8d658e Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 17 May 2023 16:16:35 +0300 Subject: [PATCH 062/150] before merg --- DL/event.model.js | 2 +- Routes/event.route.js | 2 +- index.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DL/event.model.js b/DL/event.model.js index 04cfcc1..e4deea3 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -24,7 +24,7 @@ const eventSchema = new mongoose.Schema({ // require: true, }, }, - isReapeated:{type:Boolean, default:false}, + isReapeated: { type: Boolean, default: false }, repeatType: { type: String, }, diff --git a/Routes/event.route.js b/Routes/event.route.js index bb585f1..93a5346 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -72,7 +72,7 @@ eventRouter.get("/:eventID", async (req, res) => { eventRouter.post("/createvent", multiUpload, async (req, res) => { try { - console.log("hello"); + console.log(req.protocol+":\\\\"+req.headers.host); const { cardImageURL, coverImageURL, gallery } = req.files; const dataEvent = JSON.parse(req.body.values); console.dir(dataEvent); diff --git a/index.js b/index.js index 84732e4..88b4137 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,7 @@ require("./DL/db").connect(); const mainRouter = require("./Routes"); const express = require("express"); const app = express(); -const PORT = process.env.PORמפT || 5000; +const PORT = process.env.PORT || 5000; const cors = require("cors"); app.use(express.json()); From 051dda4aa2e296d73669562657c016fa5bda1073 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 17 May 2023 18:47:37 +0300 Subject: [PATCH 063/150] sending mail to admin --- DL/event.model.js | 16 ++++++++-------- Routes/event.route.js | 24 ++++++++++++++++++++---- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/DL/event.model.js b/DL/event.model.js index 85e6922..a726172 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -72,13 +72,13 @@ const eventSchema = new mongoose.Schema({ // require: true, }, payment: { - isFree :{ + isFree: { type: Boolean, - default: true + default: true, }, price: { type: Number, - } + }, }, // gallery: [ // { @@ -88,11 +88,11 @@ const eventSchema = new mongoose.Schema({ // }, // }, // ], - // status: { - // type: String, - // enum: ["published", "waiting-for-approval", "invalid", "deleted"], - // default: "waiting-for-approval", - // }, + status: { + type: String, + enum: ["published", "waiting-for-approval", "invalid", "deleted"], + default: "waiting-for-approval", + }, }); const events = mongoose.model("event", eventSchema); diff --git a/Routes/event.route.js b/Routes/event.route.js index 5b6136d..535dd88 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -4,10 +4,12 @@ const eventService = require("../BL/event.services"); // const { sendError } = require("../errController"); const multer = require("multer"); const fs = require("fs"); +const ADMIN_MAIL = process.env.ADMIN_MAIL; const uuidv4 = require("uuid/v4"); const { sendError } = require("../errController"); const { log } = require("console"); +const { sendMail } = require("../BL/emailInterface"); const URL = "localhost:5000"; const DIR = "upload"; @@ -52,12 +54,18 @@ const multiUpload = upload.fields([ eventRouter.post("", async (req, res) => { try { - const search = req.body.search || "" ; + const search = req.body.search || ""; const page = parseInt(req.body.page) || 1; - const pageSize = req.body.pageSize || 5 ; // אמור להיות קבוע וכרגע נשלח מהקליינט + const pageSize = req.body.pageSize || 5; // אמור להיות קבוע וכרגע נשלח מהקליינט const currentDate = req.body.currentDate || new Date(); const skipCount = (page - 1) * pageSize; - const data = await eventService.findEvent(page, pageSize, currentDate, search, skipCount); + const data = await eventService.findEvent( + page, + pageSize, + currentDate, + search, + skipCount + ); res.status(200).send(data); } catch (err) { sendError(res, err); @@ -68,7 +76,10 @@ eventRouter.get("/:eventID", async (req, res) => { try { const currentDate = req.body.currentDate || new Date(); console.log("req.params.eventID", req.params.eventID); - const event = await eventService.findEventByID(req.params.eventID, currentDate); + const event = await eventService.findEventByID( + req.params.eventID, + currentDate + ); res.status(200).send(event); } catch (err) { sendError(res, err); @@ -96,6 +107,11 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { const event = await eventService.createNewEvent(dataEvent); res.send(event); //TODO: send to email function + sendMail( + ADMIN_MAIL, + "אירוע חדש לאישור", + `https://server-vike.vercel.app/viewEvent/${event._id}` + ); } catch (err) { sendError(res, err); } From 86805a4ef883230055ae97328771b54fd4022460 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Sun, 21 May 2023 10:57:20 +0300 Subject: [PATCH 064/150] add save in cloud --- Routes/event.route.js | 30 +- index.js | 2 + package-lock.json | 1064 ++++++++++++++++++++++++++++++++++++++++- package.json | 1 + 4 files changed, 1083 insertions(+), 14 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 93a5346..446c50e 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -1,15 +1,17 @@ const express = require("express"); const eventRouter = express.Router(); const eventService = require("../BL/event.services"); -// const { sendError } = require("../errController"); const multer = require("multer"); const fs = require("fs"); - -const uuidv4 = require("uuid/v4"); +const cloudinary = require("cloudinary").v2; const { sendError } = require("../errController"); -const { log } = require("console"); const URL = "localhost:5000"; const DIR = "upload"; +cloudinary.config({ + cloud_name: process.env.CLOUD_NAME, + api_key: process.env.API_KEY, + api_secret: process.env.API_SECRET, +}); const storage = multer.diskStorage({ destination: (req, file, cb) => { @@ -72,22 +74,26 @@ eventRouter.get("/:eventID", async (req, res) => { eventRouter.post("/createvent", multiUpload, async (req, res) => { try { - console.log(req.protocol+":\\\\"+req.headers.host); const { cardImageURL, coverImageURL, gallery } = req.files; const dataEvent = JSON.parse(req.body.values); - console.dir(dataEvent); - // console.log({ carImageURL: cardImageURL[0].path }); - // console.log("dataEvent", dataEvent); if (cardImageURL) { - dataEvent.cardImageURL = `${URL}/${DIR}/${cardImageURL[0].filename}`; + const result = await cloudinary.uploader.upload(cardImageURL[0].path, { + folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/cardImageURL", + }); + dataEvent.cardImageURL = result.secure_url } if (coverImageURL) { - dataEvent.coverImageURL = `${URL}/${DIR}/${coverImageURL[0].filename}`; + const result = await cloudinary.uploader.upload(coverImageURL[0].path, { + folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/coverImageURL", + }); + dataEvent.coverImageURL = result.secure_url } if (gallery) { - dataEvent.gallery = gallery.map( - (file) => `${URL}/${DIR}/${file.filename}` + dataEvent.gallery = gallery.map(async file=> + await cloudinary.uploader.upload(file.path, { + folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/gallery", + }) ); } console.log({ dataEvent }); diff --git a/index.js b/index.js index 88b4137..115c4ca 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ const express = require("express"); const app = express(); const PORT = process.env.PORT || 5000; const cors = require("cors"); +const fs = require("fs"); app.use(express.json()); app.use(cors()); @@ -16,5 +17,6 @@ app.use("/api", mainRouter); // res.send("hello world") // }); app.listen(PORT, () => { + if(!fs.existsSync("./upload")) fs.mkdirSync("./upload"); console.log("Server is running : listening to port " + PORT); }); diff --git a/package-lock.json b/package-lock.json index 2e4ba0f..c32c837 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "dependencies": { "bcrypt": "^5.1.0", "body-parser": "^1.20.2", + "cloudinary": "^1.37.0", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", @@ -1110,6 +1111,15 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/@types/node": { "version": "18.16.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", @@ -1146,6 +1156,27 @@ "node": ">= 0.6" } }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "optional": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "optional": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -1238,6 +1269,18 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "optional": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1441,6 +1484,31 @@ "node": ">=10" } }, + "node_modules/cloudinary": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.37.0.tgz", + "integrity": "sha512-hCAb3kU2nqjaHxDHxh+bi691A6LEuF68A2jHvYR5wDhDxx5qNRJLYqABbmxP6TQJriJd0Tq309fZvzBXkTW6sw==", + "dependencies": { + "cloudinary-core": "2.13.0", + "core-js": "3.30.1", + "lodash": "4.17.21", + "q": "1.5.1" + }, + "engines": { + "node": ">=0.6" + }, + "optionalDependencies": { + "proxy-agent": "^5.0.0" + } + }, + "node_modules/cloudinary-core": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/cloudinary-core/-/cloudinary-core-2.13.0.tgz", + "integrity": "sha512-Nt0Q5I2FtenmJghtC4YZ3MZZbGg1wLm84SsxcuVwZ83OyJqG9CNIGp86CiI6iDv3QobaqBUpOT7vg+HqY5HxEA==", + "peerDependencies": { + "lodash": ">=4.0" + } + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -1505,6 +1573,16 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/core-js": { + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz", + "integrity": "sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -1522,6 +1600,15 @@ "node": ">= 0.10" } }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -1530,6 +1617,27 @@ "ms": "2.0.0" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "optional": true + }, + "node_modules/degenerator": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.4.tgz", + "integrity": "sha512-Z66uPeBfHZAHVmue3HPfyKu2Q0rC2cRxbTOsvmU/po5fvvcx27W4mIu9n0PUlQih4oUYvcG1BsbtVv8x7KDOSw==", + "optional": true, + "dependencies": { + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.17" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -1599,6 +1707,59 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "optional": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "optional": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "optional": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1685,6 +1846,12 @@ "node": ">= 0.8" } }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "optional": true + }, "node_modules/fast-xml-parser": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", @@ -1701,6 +1868,15 @@ "url": "https://paypal.me/naturalintelligence" } }, + "node_modules/file-uri-to-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", + "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1745,6 +1921,20 @@ "node": ">= 0.6" } }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -1785,6 +1975,43 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", + "optional": true, + "dependencies": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ftp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "optional": true + }, + "node_modules/ftp/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ftp/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "optional": true + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1822,6 +2049,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", + "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "data-uri-to-buffer": "3", + "debug": "4", + "file-uri-to-path": "2", + "fs-extra": "^8.1.0", + "ftp": "^0.3.10" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/get-uri/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/get-uri/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==", + "optional": true + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -1852,6 +2119,12 @@ "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==", + "optional": true + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1902,6 +2175,43 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-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==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-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==", + "optional": true + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -2048,6 +2358,15 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optional": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsonwebtoken": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", @@ -2095,6 +2414,19 @@ "node": ">=12.0.0" } }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "optional": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -2373,6 +2705,15 @@ "node": ">= 0.6" } }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "optional": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/node-addon-api": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", @@ -2540,6 +2881,86 @@ "wrappy": "1" } }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "optional": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pac-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", + "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4", + "get-uri": "3", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "5", + "pac-resolver": "^5.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "5" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pac-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==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pac-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==", + "optional": true + }, + "node_modules/pac-resolver": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", + "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", + "optional": true, + "dependencies": { + "degenerator": "^3.0.2", + "ip": "^1.1.5", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pac-resolver/node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "optional": true + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2572,6 +2993,15 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "optional": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -2589,6 +3019,69 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", + "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", + "optional": true, + "dependencies": { + "agent-base": "^6.0.0", + "debug": "4", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^5.0.0", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^5.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/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==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "optional": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/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==", + "optional": true + }, + "node_modules/proxy-agent/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + }, + "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==", + "optional": true + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -2602,6 +3095,15 @@ "node": ">=6" } }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -2844,8 +3346,54 @@ "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/socks-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==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-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==", + "optional": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/sparse-bitfield": { @@ -3015,6 +3563,18 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "optional": true }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "optional": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -3037,6 +3597,15 @@ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "optional": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -3075,6 +3644,22 @@ "node": ">= 0.8" } }, + "node_modules/vm2": { + "version": "3.9.19", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", + "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", + "optional": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "bin": { + "vm2": "bin/vm2" + }, + "engines": { + "node": ">=6.0" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -3103,11 +3688,29 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "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/xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -4044,6 +4647,12 @@ "tar": "^6.1.11" } }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true + }, "@types/node": { "version": "18.16.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", @@ -4077,6 +4686,18 @@ "negotiator": "0.6.3" } }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "optional": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "optional": true + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -4150,6 +4771,15 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "optional": true, + "requires": { + "tslib": "^2.0.1" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4285,6 +4915,24 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, + "cloudinary": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.37.0.tgz", + "integrity": "sha512-hCAb3kU2nqjaHxDHxh+bi691A6LEuF68A2jHvYR5wDhDxx5qNRJLYqABbmxP6TQJriJd0Tq309fZvzBXkTW6sw==", + "requires": { + "cloudinary-core": "2.13.0", + "core-js": "3.30.1", + "lodash": "4.17.21", + "proxy-agent": "^5.0.0", + "q": "1.5.1" + } + }, + "cloudinary-core": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/cloudinary-core/-/cloudinary-core-2.13.0.tgz", + "integrity": "sha512-Nt0Q5I2FtenmJghtC4YZ3MZZbGg1wLm84SsxcuVwZ83OyJqG9CNIGp86CiI6iDv3QobaqBUpOT7vg+HqY5HxEA==", + "requires": {} + }, "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -4334,6 +4982,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "core-js": { + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz", + "integrity": "sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==" + }, "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -4348,6 +5001,12 @@ "vary": "^1" } }, + "data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "optional": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -4356,6 +5015,24 @@ "ms": "2.0.0" } }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "optional": true + }, + "degenerator": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.4.tgz", + "integrity": "sha512-Z66uPeBfHZAHVmue3HPfyKu2Q0rC2cRxbTOsvmU/po5fvvcx27W4mIu9n0PUlQih4oUYvcG1BsbtVv8x7KDOSw==", + "optional": true, + "requires": { + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.17" + } + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -4409,6 +5086,37 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "optional": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "optional": true + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "optional": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "optional": true + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -4484,6 +5192,12 @@ } } }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "optional": true + }, "fast-xml-parser": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", @@ -4493,6 +5207,12 @@ "strnum": "^1.0.5" } }, + "file-uri-to-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", + "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", + "optional": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -4525,6 +5245,17 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "optional": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -4554,6 +5285,42 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", + "optional": true, + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "optional": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "optional": true + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4585,6 +5352,37 @@ "has-symbols": "^1.0.3" } }, + "get-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", + "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", + "optional": true, + "requires": { + "@tootallnate/once": "1", + "data-uri-to-buffer": "3", + "debug": "4", + "file-uri-to-path": "2", + "fs-extra": "^8.1.0", + "ftp": "^0.3.10" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + } + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4606,6 +5404,12 @@ "is-glob": "^4.0.1" } }, + "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==", + "optional": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4641,6 +5445,34 @@ "toidentifier": "1.0.1" } }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + } + } + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -4743,6 +5575,15 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, "jsonwebtoken": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", @@ -4785,6 +5626,16 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "optional": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -4991,6 +5842,12 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, + "netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "optional": true + }, "node-addon-api": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", @@ -5117,6 +5974,73 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "optional": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "pac-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", + "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", + "optional": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4", + "get-uri": "3", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "5", + "pac-resolver": "^5.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "5" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + } + } + }, + "pac-resolver": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", + "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", + "optional": true, + "requires": { + "degenerator": "^3.0.2", + "ip": "^1.1.5", + "netmask": "^2.0.2" + }, + "dependencies": { + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "optional": true + } + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -5137,6 +6061,12 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "optional": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -5151,6 +6081,60 @@ "ipaddr.js": "1.9.1" } }, + "proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", + "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", + "optional": true, + "requires": { + "agent-base": "^6.0.0", + "debug": "4", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^5.0.0", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^5.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "requires": { + "ms": "2.1.2" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "optional": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + } + } + }, + "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==", + "optional": true + }, "pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -5161,6 +6145,11 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + }, "qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -5346,6 +6335,40 @@ "smart-buffer": "^4.2.0" } }, + "socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "optional": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -5477,6 +6500,15 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "optional": true }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "optional": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -5496,6 +6528,12 @@ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "optional": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -5521,6 +6559,16 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, + "vm2": { + "version": "3.9.19", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", + "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", + "optional": true, + "requires": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + } + }, "webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -5543,11 +6591,23 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "optional": true + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "optional": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index ffad181..0851e4e 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "dependencies": { "bcrypt": "^5.1.0", "body-parser": "^1.20.2", + "cloudinary": "^1.37.0", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", From 23145ff5f8315b80a37f2b0a61f5e69d860a234a Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Sun, 21 May 2023 11:36:52 +0300 Subject: [PATCH 065/150] Update event.route.js --- Routes/event.route.js | 1 - 1 file changed, 1 deletion(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 84be6c8..51e80f0 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -4,7 +4,6 @@ const eventService = require("../BL/event.services"); const multer = require("multer"); const fs = require("fs"); const cloudinary = require("cloudinary").v2; -const { sendError } = require("../errController"); const ADMIN_MAIL = process.env.ADMIN_MAIL; const uuidv4 = require("uuid/v4"); const { sendError } = require("../errController"); From 887925ced720d1ae881046a54aaca5e49c001591 Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Mon, 22 May 2023 10:56:08 +0300 Subject: [PATCH 066/150] fixforgetpassword --- BL/user.services.js | 7 +++++-- DL/user.controller.js | 6 +++--- Routes/user.route.js | 24 ++++++++++++------------ 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 02c30c3..8cd5af9 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -51,13 +51,16 @@ async function forgetPassword(email, code) { async function updateUser(data) { const { email, newData } = data; - return await userDL.update(email, newData); + return await userController.update(email, newData); } async function changePassword(email, newPassword) { try { const pass = bcrypt.hashSync(newPassword, 10) - updateUser({ email: email, newData: { password: pass } }) + const changed = updateUser({ email: email, newData: { password: pass } }) + if (changed) { + return pass; + } } catch (error) { throw { message: error.message } } diff --git a/DL/user.controller.js b/DL/user.controller.js index aade95e..15a929d 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -65,10 +65,10 @@ async function readOne (filter, proj){ } -async function update(filter, newData){ - return await userData.updateOne(filter, newData) +// async function update(filter, newData){ +// return await userData.updateOne(filter, newData) -} +// } diff --git a/Routes/user.route.js b/Routes/user.route.js index b6fa68d..f1446e0 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -27,11 +27,10 @@ userRouter.post("/login", async (req, res) => { } }); -userRouter.post('/forgetPassword',async (req,res)=>{ +userRouter.post('/forgetPassword', async (req, res) => { try { const { email, code } = req.body; - await userServices.forgetPassword(email,code); - console.log(email,code); + await userServices.forgetPassword(email, code); res.status(200).send("succses") } catch (error) { @@ -39,12 +38,13 @@ userRouter.post('/forgetPassword',async (req,res)=>{ } }) -userRouter.post('/resetPassword',async (req,res)=>{ +userRouter.post('/resetPassword', async (req, res) => { try { - const { email ,newPassword } = req.body; - // await userServices.changePassword(email,newPassword); - res.status(200).send("password change") - + const { email, newPassword } = req.body; + const passHaschanged = await userServices.changePassword(email, newPassword); + if (passHaschanged) { + res.status(200).send("password change") + } } catch (error) { res.status(500).send(error.message); } @@ -54,10 +54,10 @@ userRouter.post("/verify", async (req, res) => { try { const token = req.body.aoutherizetion; const verifyUser = await userServices.verifyToken(token); - if (verifyUser){ - res.status(200).send(verifyUser) - }else{ - return res.status(401).send({error: 'Token not valid'}); + if (verifyUser) { + res.status(200).send(verifyUser) + } else { + return res.status(401).send({ error: 'Token not valid' }); } } catch (err) { sendError(res, err); From b82ac6fdb2c0e9b81f98404ff4c33e78c3b820e1 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 23 May 2023 22:46:31 +0300 Subject: [PATCH 067/150] fix begin date 2 --- BL/event.services.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/BL/event.services.js b/BL/event.services.js index d19d4dc..f6a1c96 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -2,9 +2,16 @@ const eventController = require("../DL/event.controller"); const mailInterface = require('./emailInterface') const eventModel = require('../DL/event.model'); +// $dateToString: { +// date: "$createdAt", +// format: "%Y-%m-%d %H:%M:%S", +// timezone: "+03" +// } + async function createNewEvent(eventData) { var dates = []; let repeat = 1; + console.log(eventData.date); const days = eventData.day ? getDays(eventData.day) : null; switch (eventData.repeatType) { case " אירוע יומי": From 853b6e972095c70fdbb176ba081c7fc56def17b3 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 24 May 2023 12:17:03 +0300 Subject: [PATCH 068/150] fixing files --- Routes/event.route.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 51e80f0..e7cbca8 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -111,7 +111,7 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/cardImageURL", }); dataEvent.cardImageURL = result.secure_url - } + }`` if (coverImageURL) { const result = await cloudinary.uploader.upload(coverImageURL[0].path, { folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/coverImageURL", From 2c91faae1782cfae8939db684d6fbfb4bd2101e7 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 24 May 2023 16:21:02 +0300 Subject: [PATCH 069/150] add crop in cloud --- Routes/event.route.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Routes/event.route.js b/Routes/event.route.js index e7cbca8..554fc43 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -109,12 +109,22 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { if (cardImageURL) { const result = await cloudinary.uploader.upload(cardImageURL[0].path, { folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/cardImageURL", + transformation: [ + {aspect_ratio: "1.0", crop: "fill"}, + {quality: "auto"}, + {fetch_format: "auto"} + ], }); dataEvent.cardImageURL = result.secure_url }`` if (coverImageURL) { const result = await cloudinary.uploader.upload(coverImageURL[0].path, { folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/coverImageURL", + transformation: [ + {aspect_ratio: "1.77778", crop: "fill"}, + {quality: "auto"}, + {fetch_format: "auto"} + ], }); dataEvent.coverImageURL = result.secure_url } From 14b506318666cb22e0cf96295bed277c59ce1d22 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 24 May 2023 16:23:40 +0300 Subject: [PATCH 070/150] before the real crop --- Routes/event.route.js | 33 +++- Routes/index.js | 3 +- Routes/linkCheck.route.js | 18 ++ package-lock.json | 347 ++++++++++++++++++++++++++++++++------ package.json | 2 + 5 files changed, 338 insertions(+), 65 deletions(-) create mode 100644 Routes/linkCheck.route.js diff --git a/Routes/event.route.js b/Routes/event.route.js index 51e80f0..f5ea16d 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -4,7 +4,8 @@ const eventService = require("../BL/event.services"); const multer = require("multer"); const fs = require("fs"); const cloudinary = require("cloudinary").v2; -const ADMIN_MAIL = process.env.ADMIN_MAIL; +const ADMIN_MAIL = "kobikru@gmail.com"; +// process.env.ADMIN_MAIL; const uuidv4 = require("uuid/v4"); const { sendError } = require("../errController"); const { log } = require("console"); @@ -108,26 +109,40 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { if (cardImageURL) { const result = await cloudinary.uploader.upload(cardImageURL[0].path, { - folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/cardImageURL", + folder: + dataEvent.advertiser.email + + "/" + + dataEvent.eventName + + "/cardImageURL", }); - dataEvent.cardImageURL = result.secure_url + dataEvent.cardImageURL = result.secure_url; } if (coverImageURL) { const result = await cloudinary.uploader.upload(coverImageURL[0].path, { - folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/coverImageURL", + folder: + dataEvent.advertiser.email + + "/" + + dataEvent.eventName + + "/coverImageURL", }); - dataEvent.coverImageURL = result.secure_url + dataEvent.coverImageURL = result.secure_url; } if (gallery) { - dataEvent.gallery = gallery.map(async file=> - await cloudinary.uploader.upload(file.path, { - folder: dataEvent.advertiser.email+"/"+dataEvent.eventName+"/gallery", - }) + dataEvent.gallery = gallery.map( + async (file) => + await cloudinary.uploader.upload(file.path, { + folder: + dataEvent.advertiser.email + + "/" + + dataEvent.eventName + + "/gallery", + }) ); } console.log({ dataEvent }); const event = await eventService.createNewEvent(dataEvent); res.send(event); + console.log(event); //TODO: send to email function sendMail( ADMIN_MAIL, diff --git a/Routes/index.js b/Routes/index.js index 211bd37..07eded0 100644 --- a/Routes/index.js +++ b/Routes/index.js @@ -2,13 +2,14 @@ const express = require("express"); const mainRouter = express.Router(); const userRouter = require("./user.route"); const filesRouter = require("./files.route"); +const linkRouter = require("./linkCheck.route"); const eventRouter = require("./event.route"); const settingRouter = require("./setting.route"); - mainRouter.use("/user", userRouter); mainRouter.use("/event", eventRouter); mainRouter.use("/setting", settingRouter); mainRouter.use("/files", filesRouter); +mainRouter.use("/linkcheck", linkRouter); module.exports = mainRouter; diff --git a/Routes/linkCheck.route.js b/Routes/linkCheck.route.js new file mode 100644 index 0000000..22437d8 --- /dev/null +++ b/Routes/linkCheck.route.js @@ -0,0 +1,18 @@ +const express = require("express"); +const linkRouter = express.Router(); +const axios = require("axios"); + +linkRouter.get("", async (req, res) => { + const url = req.query.q; // Retrieve the URL from the query parameters + + try { + const response = await axios.get(url); // Use axios to make the GET request + const status = response.status; + console.log(response.status); + res.json(status); + } catch (error) { + res.status(500).json({ error: "Failed to fetch the URL" }); + } +}); + +module.exports = linkRouter; diff --git a/package-lock.json b/package-lock.json index c32c837..1e93584 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "axios": "^1.4.0", "bcrypt": "^5.1.0", "body-parser": "^1.20.2", "cloudinary": "^1.37.0", @@ -21,6 +22,7 @@ "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.5", "multer": "^1.4.5-lts.1", + "node-fetch": "^3.3.1", "nodemailer": "^6.9.1", "nodemon": "^2.0.21", "uuid": "^3.4.0" @@ -1111,6 +1113,44 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@mapbox/node-pre-gyp/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/@mapbox/node-pre-gyp/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/@mapbox/node-pre-gyp/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/@mapbox/node-pre-gyp/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/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -1281,6 +1321,21 @@ "node": ">=4" } }, + "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/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", @@ -1517,6 +1572,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/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1638,6 +1704,14 @@ "node": ">= 6" } }, + "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", @@ -1868,6 +1942,28 @@ "url": "https://paypal.me/naturalintelligence" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/file-uri-to-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", @@ -1905,6 +2001,49 @@ "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/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2719,42 +2858,47 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", "dependencies": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "4.x || >=6.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/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/node-fetch/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/node-fetch/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" } }, "node_modules/nodemailer": { @@ -3079,8 +3223,7 @@ "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==", - "optional": true + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/pstree.remy": { "version": "1.1.8", @@ -3660,6 +3803,14 @@ "node": ">=6.0" } }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -4645,6 +4796,35 @@ "rimraf": "^3.0.2", "semver": "^7.3.5", "tar": "^6.1.11" + }, + "dependencies": { + "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==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "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==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } } }, "@tootallnate/once": { @@ -4780,6 +4960,21 @@ "tslib": "^2.0.1" } }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4938,6 +5133,14 @@ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5033,6 +5236,11 @@ "vm2": "^3.9.17" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -5207,6 +5415,15 @@ "strnum": "^1.0.5" } }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, "file-uri-to-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", @@ -5235,6 +5452,29 @@ "unpipe": "~1.0.0" } }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "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==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -5853,32 +6093,25 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", "requires": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "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==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" } } }, @@ -6132,8 +6365,7 @@ "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==", - "optional": true + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "pstree.remy": { "version": "1.1.8", @@ -6569,6 +6801,11 @@ "acorn-walk": "^8.2.0" } }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + }, "webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/package.json b/package.json index 0851e4e..5b074a6 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "author": "", "license": "ISC", "dependencies": { + "axios": "^1.4.0", "bcrypt": "^5.1.0", "body-parser": "^1.20.2", "cloudinary": "^1.37.0", @@ -20,6 +21,7 @@ "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.5", "multer": "^1.4.5-lts.1", + "node-fetch": "^3.3.1", "nodemailer": "^6.9.1", "nodemon": "^2.0.21", "uuid": "^3.4.0" From 986d0bfba52ccf44f65d71c9001f8d3ec813d635 Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Mon, 29 May 2023 10:21:25 +0300 Subject: [PATCH 071/150] mailToManagerAndadvister --- BL/event.services.js | 87 +++++++++++++++++++++++++++++------------- BL/setting.services.js | 36 ++++++++++++++++- Routes/event.route.js | 2 + 3 files changed, 98 insertions(+), 27 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index b21a637..687e924 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -1,6 +1,7 @@ const eventController = require("../DL/event.controller"); const mailInterface = require('./emailInterface') const eventModel = require('../DL/event.model'); +const settingService = require("../BL/setting.services"); async function createNewEvent(eventData) { var dates = []; @@ -170,17 +171,26 @@ async function findEvent(page, pageSize, currentDate, search, skipCount = 0) { return results; } -async function findEventByID(id, currentDate) { - const event = await eventController.readOne({ _id: id }); - const futureDates = event.date.filter((date) => new Date(date) >= currentDate); - event.date = futureDates.slice(0, 1); +async function findEventById(id) { + const event = await eventController.readOne({ _id: id }); return event; } +async function findEventByID(id, currentDate) { + const event = await eventController.readOne({ _id: id }); + const futureDates = event.date.filter((date) => new Date(date) >= currentDate); +event.date = futureDates.slice(0, 1); +return event; +} + async function updateStatusEvent(id, newData) { - const event = await eventController.update(id, newData); - return event; + const updateEvent = await eventController.update(id, newData); + const event = await findEventById(id); + console.log("eventtttt",event); + sendEventDetailsToAdvertiser(event.advertiser.email,event._id) + return updateEvent; } +// updateStatusEvent("6473a1ae47f64d0ea39712c4", { status: "published" }) async function eventIsExists(id) { @@ -188,38 +198,63 @@ async function eventIsExists(id) { } async function sendEventDetailsToAdvertiser(email, _id) { - const eventData = await findEventByID(_id); - const { eventName, summary, advertiser, isReapeated, categories, audiences, registrationPageURL, date, beginningTime, finishTime, place } = eventData; + const eventData = await findEventById(_id); + const { eventName, summary, advertiser, categories, audiences, registrationPageURL, date, beginningTime, finishTime, place,cardImageURL,coverImageURL } = eventData; + + const categoriesNames = await settingService.getCategorysNames(categories) + const audiencesNames = await settingService.getAudiencesNames(audiences) + const dateTimeString = await date.map(v=>new Date(v).toLocaleDateString('en-US')).join(', ') + + // const dateString = dateArray.join(', '); // Join the individual date strings with a separator (e.g., comma) + const subject = 'פורסם אירוע חדש - hereEvent' const html = ` -
    -

    פרטי אירוע חדש

    +
    +

    פרטי אירוע חדש

    +

    אירוע חדש פורסם על ידך:

    -
      -
    • שם האירוע: ${eventName}
    • -
    • מפרסם: ${advertiser.name}
    • -
    • טלפון: ${advertiser.tel}
    • -
    • מייל: ${advertiser.email}
    • -
    • אירוע חוזר: ${isReapeated}
    • -
    • קטגוריות: ${categories}
    • -
    • קהל יעד: ${audiences}
    • -
    • תאריך האירוע: ${date}
    • -
    • שעות האירוע: ${beginningTime}-${finishTime}
    • -
    • מיקום האירוע: ${place}
    • -
    • פרטים נוספים על האירוע: ${summary}
    • -
    • דף הרשמה לאירוע: ${registrationPageURL}
    • - -
    -
    ` +
    +

    ${eventName}

    +

    מפרסם: ${advertiser.name}

    +

    טלפון: ${advertiser.tel}

    +

    מייל: ${advertiser.email}

    +
    +
    +

    פרטים על האירוע:

    +

    קטגוריות: ${categoriesNames.join(', ')}

    +

    קהל יעד: ${audiencesNames.join(', ')}

    +

    תאריך האירוע: ${dateTimeString}

    +

    שעות האירוע: ${beginningTime}-${finishTime}

    +

    מיקום האירוע: ${place}

    +

    תיאור האירוע: ${summary}

    +

    דף הרשמה לאירוע: ${registrationPageURL}

    +
    +
    +

    תמונות:

    +
    + Image 1 + Image 2 +
    +
    +
    +
    ` + + //
  • אירוע חוזר: ${isReapeated}
  • //
  • שינוי פרטי האירוע
  • await mailInterface.sendMail(email, subject, html) } + +sendEventDetailsToAdvertiser('chatappsapir@gmail.com',"6474448a539c7a35b81cd23a") +// settingService.getCategorysNames(["641189cf3d762f6a181064c7","641189cf3d762f6a181064c8"]) + + module.exports = { createNewEvent, findEvent, findEventByID, + findEventById, sendEventDetailsToAdvertiser, updateStatusEvent }; diff --git a/BL/setting.services.js b/BL/setting.services.js index 4e6b2e0..380fd54 100644 --- a/BL/setting.services.js +++ b/BL/setting.services.js @@ -5,4 +5,38 @@ async function getSetting(filter) { return res } -module.exports = { getSetting } + + +async function getCategorysNames(arr) { + const categoryMapping = { + "641189cf3d762f6a181064c7": "כיף", + "641189cf3d762f6a181064c8": "הרצאות", + "641189cf3d762f6a181064c9": "אוכל", + "641189cf3d762f6a181064ca": "יצירה מקומית", + "641189cf3d762f6a181064cb": "מוזיקה" + }; + const categorysNames = []; + arr.map((category)=>( + categorysNames.push(categoryMapping[category]) + )) + return categorysNames; + + } + + async function getAudiencesNames(arr) { + const audienceMapping = { + "64118b289057ecc057ef8a38": "נשים", + "64118b289057ecc057ef8a39": "משפחות", + "64118b289057ecc057ef8a3a": "מבוגרים", + "64118b289057ecc057ef8a3b": "נוער", + "64118b289057ecc057ef8a3c": "ילדים" + }; + const audiencesNames = []; + arr.map((audience)=>( + audiencesNames.push(audienceMapping[audience]) + )) + return audiencesNames; +} + + +module.exports = { getSetting,getCategorysNames,getAudiencesNames } diff --git a/Routes/event.route.js b/Routes/event.route.js index 51e80f0..eddd872 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -129,6 +129,8 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { const event = await eventService.createNewEvent(dataEvent); res.send(event); //TODO: send to email function + // eventService.sendEventDetailsToAdvertiser(event.advertiser.email,event._id); + sendMail( ADMIN_MAIL, "אירוע חדש לאישור", From f4af4541745d6b3773166d3fa5c8906acb7fc6b8 Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Mon, 29 May 2023 10:35:38 +0300 Subject: [PATCH 072/150] mailToManagerAndadvister --- BL/event.services.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 687e924..81abf18 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -190,8 +190,6 @@ async function updateStatusEvent(id, newData) { sendEventDetailsToAdvertiser(event.advertiser.email,event._id) return updateEvent; } -// updateStatusEvent("6473a1ae47f64d0ea39712c4", { status: "published" }) - async function eventIsExists(id) { return await eventController.read({ id }); @@ -205,8 +203,6 @@ async function sendEventDetailsToAdvertiser(email, _id) { const audiencesNames = await settingService.getAudiencesNames(audiences) const dateTimeString = await date.map(v=>new Date(v).toLocaleDateString('en-US')).join(', ') - // const dateString = dateArray.join(', '); // Join the individual date strings with a separator (e.g., comma) - const subject = 'פורסם אירוע חדש - hereEvent' const html = `
    @@ -239,15 +235,10 @@ async function sendEventDetailsToAdvertiser(email, _id) {
    ` - //
  • אירוע חוזר: ${isReapeated}
  • - //
  • שינוי פרטי האירוע
  • - await mailInterface.sendMail(email, subject, html) } -sendEventDetailsToAdvertiser('chatappsapir@gmail.com',"6474448a539c7a35b81cd23a") -// settingService.getCategorysNames(["641189cf3d762f6a181064c7","641189cf3d762f6a181064c8"]) module.exports = { From 0d4361d8c73b2b5d541fe2b8269039ddadc10e32 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Sun, 4 Jun 2023 21:55:59 +0300 Subject: [PATCH 073/150] search after --- BL/event.services.js | 26 +++++++++++++++----------- Routes/event.route.js | 5 ++++- index.js | 6 ++++++ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index fec5607..8fc499b 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -1,17 +1,12 @@ const eventController = require("../DL/event.controller"); const mailInterface = require('./emailInterface') const eventModel = require('../DL/event.model'); - -// $dateToString: { -// date: "$createdAt", -// format: "%Y-%m-%d %H:%M:%S", -// timezone: "+03" -// } +const { query } = require("express"); async function createNewEvent(eventData) { + console.log(eventData.date, "- start", typeof(eventData.date)); var dates = []; let repeat = 1; - console.log(eventData.date); const days = eventData.day ? getDays(eventData.day) : null; switch (eventData.repeatType) { case " אירוע יומי": @@ -48,6 +43,8 @@ async function createNewEvent(eventData) { eventData.date = dates; eventData.days = days; + console.log(eventData.date, "- end"); + const newEvent = await eventController.create(eventData); return newEvent; } @@ -157,19 +154,26 @@ function getDatesWithNumberOfOccurrences( // return results; // } -async function findEvent(page, pageSize, currentDate, search, skipCount = 0) { + +// console.log(new Date(1685743303316),"last-date"); +// console.log(currentDate,"currentDate"); +async function findEvent(page, pageSize, currentDate, search, skipCount) { + const endDate = new Date("2023-06-04T17:50:59.109Z") + console.log(endDate,"last-date"); const filteredEvents = await eventModel.aggregate([ - { $match: { date: { $gte: currentDate }, $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }] } }, + { $match: { $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: currentDate , $lte : endDate } }}, { $addFields: { date: { $filter: { input: "$date", as: "date", cond: { $gte: ["$$date", currentDate] } } } } }, { $sort: { date: 1 } }, { $skip: skipCount }, { $limit: pageSize } ]); +// console.log(filteredEvents,"filteredEvents"); const results = {} const endIndex = page * pageSize - if (endIndex < await eventModel.find({ date: { $gte: currentDate }, $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }] }).countDocuments().exec()) { + if (endIndex < await eventModel.find({ $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: currentDate , $lt : endDate } +}).countDocuments().exec()) { results.nextPage = page + 1 } @@ -229,4 +233,4 @@ module.exports = { findEventByID, sendEventDetailsToAdvertiser, updateStatusEvent -}; +}; \ No newline at end of file diff --git a/Routes/event.route.js b/Routes/event.route.js index 51e80f0..f8d748b 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -58,6 +58,9 @@ const multiUpload = upload.fields([ eventRouter.post("", async (req, res) => { try { + if(!req.body.pageSize){console.log("req--start++",req.body.singleEventsFilter,"req---end")} + const queryAdvance = req.body.singleEventsFilter + console.log(queryAdvance,"queryAdvance"); const search = req.body.search || ""; const page = parseInt(req.body.page) || 1; const pageSize = req.body.pageSize || 5; // אמור להיות קבוע וכרגע נשלח מהקליינט @@ -68,7 +71,7 @@ eventRouter.post("", async (req, res) => { pageSize, currentDate, search, - skipCount + skipCount, ); res.status(200).send(data); } catch (err) { diff --git a/index.js b/index.js index 9c46962..6126fb6 100644 --- a/index.js +++ b/index.js @@ -19,4 +19,10 @@ app.use("/api", mainRouter); app.listen(PORT, () => { if (!fs.existsSync("./upload")) fs.mkdirSync("./upload"); console.log("Server is running : listening to port " + PORT); +// console.log(new Date()); +// const date = new Date(); +// const options = { timeZone: 'Asia/Jerusalem' }; +// console.log(date.toLocaleString('he-IL', options)); +// console.log(options) + }); From 4d0cdfc095d938a2d1022dbf0af51b92372500aa Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Mon, 5 Jun 2023 08:15:02 +0300 Subject: [PATCH 074/150] search todat tommorow and alldate --- BL/event.services.js | 46 ++++++++++++++++++++++++++++++++++++++++--- Routes/event.route.js | 27 ++++++++++++++++++++++--- index.js | 6 ------ 3 files changed, 67 insertions(+), 12 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 2ef8899..6043b51 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -155,7 +155,7 @@ function getDatesWithNumberOfOccurrences( async function findEvent(page, pageSize, currentDate, search, skipCount) { const filteredEvents = await eventModel.aggregate([ - { $match: { $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: currentDate , $lte : endDate } }}, + { $match: { $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: currentDate} }}, { $addFields: { date: { $filter: { input: "$date", as: "date", cond: { $gte: ["$$date", currentDate] } } } } }, { $sort: { date: 1 } }, { $skip: skipCount }, @@ -165,7 +165,46 @@ async function findEvent(page, pageSize, currentDate, search, skipCount) { const results = {} const endIndex = page * pageSize - if (endIndex < await eventModel.find({ $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: currentDate , $lt : endDate } + if (endIndex < await eventModel.find({ $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: currentDate} +}).countDocuments().exec()) { + results.nextPage = page + 1 + } + + results.event = filteredEvents + return results; +} + +async function findEventSearch (location,btnDates,categories,audiences,page,pageSize,skipCount,timezoneOffset=-180) { + console.log(btnDates); + const timezone = timezoneOffset + const now = new Date(); + let startDate; + let endDate; + if(btnDates==="allDate"){startDate=now ; endDate = new Date(now.getFullYear() + 100, now.getMonth(), now.getDate())}// תאריך סיום בעוד 100 שנה + else if(btnDates==="today"){ + startDate = new Date(now.getTime() + timezone * 60 * 1000); + startDate.setHours(0, 0, 0, 0); + endDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000); + } + else if (btnDates === "tomorrow") { + startDate = new Date(now.getTime() + timezone * 60 * 1000); + startDate.setHours(24, 0, 0, 0); + endDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000); + } + + // שעת התחלה ושעת סיום + const filteredEvents = await eventModel.aggregate([ + { $match: { place: { $regex: location , $options: "i" }, date: { $elemMatch: { $gte: startDate , $lt: endDate} }}}, + { $addFields: { date: { $filter: { input: "$date", as: "date", cond: { $gte: ["$$date", startDate] } } } } }, + { $sort: { date: 1 } }, + { $skip: skipCount }, + { $limit: pageSize } + ]); + + const results = {} + const endIndex = page * pageSize + + if (endIndex < await eventModel.find({ place: { $regex: location , $options: "i" }, date: { $elemMatch: { $gte: startDate , $lt: endDate} } }).countDocuments().exec()) { results.nextPage = page + 1 } @@ -250,5 +289,6 @@ module.exports = { findEventByID, findEventById, sendEventDetailsToAdvertiser, - updateStatusEvent + updateStatusEvent, + findEventSearch }; \ No newline at end of file diff --git a/Routes/event.route.js b/Routes/event.route.js index 71f2de2..3690f8f 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -58,9 +58,6 @@ const multiUpload = upload.fields([ eventRouter.post("", async (req, res) => { try { - if(!req.body.pageSize){console.log("req--start++",req.body.singleEventsFilter,"req---end")} - const queryAdvance = req.body.singleEventsFilter - console.log(queryAdvance,"queryAdvance"); const search = req.body.search || ""; const page = parseInt(req.body.page) || 1; const pageSize = req.body.pageSize || 5; // אמור להיות קבוע וכרגע נשלח מהקליינט @@ -79,6 +76,30 @@ eventRouter.post("", async (req, res) => { } }); +eventRouter.post("/search", async (req, res) => { + try { + const location = req.body.location || ""; + const btnDates = req.body.btnDates || ""; + const categories = req.body.categories || []; + const audiences = req.body.audiences || []; + const page = parseInt(req.body.page) || 1; + const pageSize = req.body.pageSize || 5; // אמור להיות קבוע וכרגע נשלח מהקליינט + const skipCount = (page - 1) * pageSize; + const data = await eventService.findEventSearch( + location, + btnDates, + categories, + audiences, + page, + pageSize, + skipCount, + ); + res.status(200).send(data); + } catch (err) { + sendError(res, err); + } +}); + eventRouter.get("/:eventID", async (req, res) => { try { const currentDate = req.body.currentDate || new Date(); diff --git a/index.js b/index.js index 6126fb6..9c46962 100644 --- a/index.js +++ b/index.js @@ -19,10 +19,4 @@ app.use("/api", mainRouter); app.listen(PORT, () => { if (!fs.existsSync("./upload")) fs.mkdirSync("./upload"); console.log("Server is running : listening to port " + PORT); -// console.log(new Date()); -// const date = new Date(); -// const options = { timeZone: 'Asia/Jerusalem' }; -// console.log(date.toLocaleString('he-IL', options)); -// console.log(options) - }); From d1bf87efbe319d3fd1a0c6cfb70c25ddd8906013 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Mon, 5 Jun 2023 14:51:37 +0300 Subject: [PATCH 075/150] search this week --- BL/event.services.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 6043b51..e14c193 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -178,18 +178,28 @@ async function findEventSearch (location,btnDates,categories,audiences,page,page console.log(btnDates); const timezone = timezoneOffset const now = new Date(); + let dayPas = new Date(now.getTime() + timezone * 60 * 1000); + dayPas.setHours(24, 0, 0, 0); let startDate; let endDate; - if(btnDates==="allDate"){startDate=now ; endDate = new Date(now.getFullYear() + 100, now.getMonth(), now.getDate())}// תאריך סיום בעוד 100 שנה + if(btnDates==="allDate"){ + startDate=now ; + endDate = new Date(now.getFullYear() + 100, now.getMonth(), now.getDate())}// תאריך סיום בעוד 100 שנה else if(btnDates==="today"){ - startDate = new Date(now.getTime() + timezone * 60 * 1000); - startDate.setHours(0, 0, 0, 0); - endDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000); + startDate=now + endDate = dayPas } else if (btnDates === "tomorrow") { - startDate = new Date(now.getTime() + timezone * 60 * 1000); - startDate.setHours(24, 0, 0, 0); - endDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000); + startDate = dayPas + endDate = new Date(dayPas.getTime() + 24 * 60 * 60 * 1000); + } + else if (btnDates === "thisWeek") { + startDate=now + const dayOfWeek = now.getDay(); + const daysUntilEndOfWeek = (6 - dayOfWeek + timezone / 60 / 24 + 7) % 7; + endDate = new Date(now.getTime() + daysUntilEndOfWeek * 24 * 60 * 60 * 1000); + } else { + throw "Selected value is not defined"; } // שעת התחלה ושעת סיום From b2d372b54260753442598cca1688d0ec975c0daf Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Mon, 5 Jun 2023 21:58:14 +0300 Subject: [PATCH 076/150] addDateOfPublished --- DL/event.model.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/DL/event.model.js b/DL/event.model.js index a726172..1d78dd6 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -93,6 +93,14 @@ const eventSchema = new mongoose.Schema({ enum: ["published", "waiting-for-approval", "invalid", "deleted"], default: "waiting-for-approval", }, + createdAt: { + type: Date, + default: Date.now + }, + publishedAt: { + type: Date, + default: null + } }); const events = mongoose.model("event", eventSchema); From 07db6fc67cbb52661e6902ed99a1d403ab206e03 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Mon, 5 Jun 2023 22:42:23 +0300 Subject: [PATCH 077/150] search categoris --- BL/event.services.js | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index e14c193..b5fab17 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -175,7 +175,8 @@ async function findEvent(page, pageSize, currentDate, search, skipCount) { } async function findEventSearch (location,btnDates,categories,audiences,page,pageSize,skipCount,timezoneOffset=-180) { - console.log(btnDates); + +// startDate endDate הגדרת const timezone = timezoneOffset const now = new Date(); let dayPas = new Date(now.getTime() + timezone * 60 * 1000); @@ -202,20 +203,39 @@ async function findEventSearch (location,btnDates,categories,audiences,page,page throw "Selected value is not defined"; } - // שעת התחלה ושעת סיום - const filteredEvents = await eventModel.aggregate([ - { $match: { place: { $regex: location , $options: "i" }, date: { $elemMatch: { $gte: startDate , $lt: endDate} }}}, - { $addFields: { date: { $filter: { input: "$date", as: "date", cond: { $gte: ["$$date", startDate] } } } } }, - { $sort: { date: 1 } }, - { $skip: skipCount }, - { $limit: pageSize } - ]); + const matchQuery = { + place: { $regex: location, $options: "i" }, + date: { $elemMatch: { $gte: startDate, $lt: endDate } } + }; + + if (categories.length > 0) { + matchQuery.categories = { $in: categories }; + } + if (audiences.length > 0) { + matchQuery.audiences = { $in: audiences }; + } + const filteredEvents = await eventModel.aggregate([ + { $match: matchQuery }, + { + $addFields: { + date: { + $filter: { + input: "$date", + as: "date", + cond: { $gte: ["$$date", startDate] } + } + } + } + }, + { $sort: { date: 1 } }, + { $skip: skipCount }, + { $limit: pageSize } + ]); const results = {} const endIndex = page * pageSize - if (endIndex < await eventModel.find({ place: { $regex: location , $options: "i" }, date: { $elemMatch: { $gte: startDate , $lt: endDate} } -}).countDocuments().exec()) { + if (endIndex < await eventModel.find(matchQuery).countDocuments().exec()) { results.nextPage = page + 1 } From 6fd659bb7956760c50fa9e62a79b23e68b015764 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Tue, 6 Jun 2023 02:06:56 +0300 Subject: [PATCH 078/150] Accurate location --- DL/event.model.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DL/event.model.js b/DL/event.model.js index a726172..3d081c2 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -47,6 +47,10 @@ const eventSchema = new mongoose.Schema({ type: String, // require: true, }, + accuratelocation: { + type: String, + // require: true, + }, categories: [ { type: String, From ce7d3aee59875924191cb53fbc13799a82c5c19e Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 7 Jun 2023 14:07:33 +0300 Subject: [PATCH 079/150] added middlewere function checkUserType for admin validetion --- BL/user.services.js | 48 +++++++++++++++++++++++++++++++++----------- Routes/user.route.js | 19 ++++++++++++++++++ 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 8cd5af9..c2592c8 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -17,10 +17,12 @@ async function createUser(newUserData) { async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { + console.log(foundUser.userType); try { - const token = jwt.sign({ email: user.email }, - process.env.JWT_SECRET, - { expiresIn: '1440h' }); + const token = jwt.sign( + { email: user.email, userType: foundUser.userType }, + process.env.JWT_SECRET, + { expiresIn: '1440h' }); return { user: foundUser, token }; } catch (err) { console.error('Error generating Token:', err); @@ -30,7 +32,7 @@ async function findUser(user) { return { error: 'Invalid credentials' }; } } - + async function forgetPassword(email, code) { const subject = 'Forget Password' @@ -69,16 +71,37 @@ async function changePassword(email, newPassword) { async function verifyToken(token) { try { const decoded = jwt.verify(token, process.env.JWT_SECRET); - if(decoded) { - const email = decoded.email; - const verifyedUser = await userController.findEmail(email); - return verifyedUser; + if (decoded) { + const email = decoded.email; + const verifyedUser = await userController.findEmail(email); + return verifyedUser; + } + } catch (err) { + if (err.name === 'TokenExpiredError') { + console.error('token not valid', err.name); + return { error: 'token is expired' } + } else { + return err; + } + } +} + + +async function checkUserType(token) { + try { + const decoded = jwt.verify(token, process.env.JWT_SECRET); + if (decoded) { + const email = decoded.email; + const verifyedUser = await userController.findEmail(email); + if (verifyedUser.userType === 'admin') { + return verifyedUser + }; } } catch (err) { - if(err.name === 'TokenExpiredError'){ - console.error('token not valid', err.name); - return { error: 'token is expired' } - }else{ + if (err.name === 'TokenExpiredError') { + console.error('token not valid', err.name); + return { error: 'token is expired' } + } else { return err; } } @@ -122,6 +145,7 @@ module.exports = { forgetPassword, changePassword, verifyToken, + checkUserType, // addFavourite, // removeFavourite } \ No newline at end of file diff --git a/Routes/user.route.js b/Routes/user.route.js index f1446e0..99475e6 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -52,7 +52,9 @@ userRouter.post('/resetPassword', async (req, res) => { userRouter.post("/verify", async (req, res) => { try { + console.log(req.body); const token = req.body.aoutherizetion; + console.log(token); const verifyUser = await userServices.verifyToken(token); if (verifyUser) { res.status(200).send(verifyUser) @@ -65,6 +67,23 @@ userRouter.post("/verify", async (req, res) => { }); +userRouter.post("/checkUserType", async (req, res) => { + try { + console.log(req.body); + const token = req.body.aoutherizetion; + console.log(token); + const verifyUser = await userServices.checkUserType(token); + if (verifyUser) { + res.status(200).send(verifyUser) + } else { + return res.status(401).send({ error: 'Token not valid' }); + } + } catch (err) { + sendError(res, err); + } +}); + + // userRouter.put("/addFavou", async(req,res)=>{ // try{ // console.log(req.body); From 0fd464087bca4d3ba73fe7c873256d667ff83777 Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 7 Jun 2023 14:16:12 +0300 Subject: [PATCH 080/150] deleted logs in userRouter --- Routes/user.route.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/Routes/user.route.js b/Routes/user.route.js index 99475e6..9db40e4 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -69,9 +69,7 @@ userRouter.post("/verify", async (req, res) => { userRouter.post("/checkUserType", async (req, res) => { try { - console.log(req.body); const token = req.body.aoutherizetion; - console.log(token); const verifyUser = await userServices.checkUserType(token); if (verifyUser) { res.status(200).send(verifyUser) From e493cdb5238df9ab05b27388f3610379d5fb1418 Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 7 Jun 2023 14:24:12 +0300 Subject: [PATCH 081/150] deleted logs in userRouter 2 --- Routes/user.route.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/Routes/user.route.js b/Routes/user.route.js index 9db40e4..7c01c18 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -52,9 +52,7 @@ userRouter.post('/resetPassword', async (req, res) => { userRouter.post("/verify", async (req, res) => { try { - console.log(req.body); const token = req.body.aoutherizetion; - console.log(token); const verifyUser = await userServices.verifyToken(token); if (verifyUser) { res.status(200).send(verifyUser) From a3e6b7efb4ebd03f813844322b2e9e31eb6bf893 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Thu, 8 Jun 2023 10:19:52 +0300 Subject: [PATCH 082/150] Update event.route.js --- Routes/event.route.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index df21b9e..8b795cb 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -4,8 +4,7 @@ const eventService = require("../BL/event.services"); const multer = require("multer"); const fs = require("fs"); const cloudinary = require("cloudinary").v2; -const ADMIN_MAIL = "kobikru@gmail.com"; -// process.env.ADMIN_MAIL; +const ADMIN_MAIL = process.env.ADMIN_MAIL; const uuidv4 = require("uuid/v4"); const { sendError } = require("../errController"); const { log } = require("console"); From 56e40cd9c9b1b28422bb1ed5c2ae9ca20d0ed4f9 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 8 Jun 2023 10:29:16 +0300 Subject: [PATCH 083/150] pegination to search --- BL/event.services.js | 93 +++++++++++++++---------------------------- Routes/event.route.js | 16 +------- 2 files changed, 35 insertions(+), 74 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index b5fab17..7f392c9 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -137,50 +137,47 @@ function getDatesWithNumberOfOccurrences( return dates; } +const now = new Date(); -// function pagination (filterModel, page, pageSize){ -// filterModel.skip((page - 1) * pageSize).limit(pageSize) -// const results = {} -// const endIndex = page * pageSize - -// if (endIndex < filterModel.countDocuments().exec()) { -// results.nextPage = page + 1 -// } - -// results.event = filteredEvents -// return results; -// } - - - -async function findEvent(page, pageSize, currentDate, search, skipCount) { - const filteredEvents = await eventModel.aggregate([ - { $match: { $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: currentDate} }}, - { $addFields: { date: { $filter: { input: "$date", as: "date", cond: { $gte: ["$$date", currentDate] } } } } }, - { $sort: { date: 1 } }, - { $skip: skipCount }, - { $limit: pageSize } - ]); - +async function pagination (filterModel, page , startDate){ + const pageSize = 10 + const skipCount = (page - 1) * pageSize; const results = {} const endIndex = page * pageSize + const Query = [ + { $match: filterModel }, + { $addFields: { date: { $filter: { input: "$date", as: "date", cond: { $gte: ["$$date", startDate] } } } } }, + { $sort: { date: 1 } }, + { $skip: skipCount }, + { $limit: pageSize } + ] + results.startDate= startDate + results.event = await eventModel.aggregate(Query) - if (endIndex < await eventModel.find({ $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: currentDate} -}).countDocuments().exec()) { + if (endIndex < await eventModel.find(filterModel).countDocuments().exec()) { results.nextPage = page + 1 } - results.event = filteredEvents return results; } -async function findEventSearch (location,btnDates,categories,audiences,page,pageSize,skipCount,timezoneOffset=-180) { + + +async function findEvent(page, search) { + const filterModel = { + $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], + date: { $gte: now} + } + return pagination(filterModel,page,now) +} + +async function findEventSearch (location,btnDates,categories,audiences,page) { // startDate endDate הגדרת - const timezone = timezoneOffset - const now = new Date(); - let dayPas = new Date(now.getTime() + timezone * 60 * 1000); - dayPas.setHours(24, 0, 0, 0); + const fixTimezoneHour = -3 + const fixTimezoneMinute = 60*fixTimezoneHour + let dayPas = new Date(now.getTime() + fixTimezoneMinute * 60 * 1000); + dayPas.setHours(24+fixTimezoneHour, 0, 0, 0); let startDate; let endDate; if(btnDates==="allDate"){ @@ -197,12 +194,13 @@ async function findEventSearch (location,btnDates,categories,audiences,page,page else if (btnDates === "thisWeek") { startDate=now const dayOfWeek = now.getDay(); - const daysUntilEndOfWeek = (6 - dayOfWeek + timezone / 60 / 24 + 7) % 7; + const daysUntilEndOfWeek = (6 - dayOfWeek + fixTimezoneMinute / 60 / 24 + 7) % 7; endDate = new Date(now.getTime() + daysUntilEndOfWeek * 24 * 60 * 60 * 1000); } else { throw "Selected value is not defined"; } - + //סוף + const matchQuery = { place: { $regex: location, $options: "i" }, date: { $elemMatch: { $gte: startDate, $lt: endDate } } @@ -214,33 +212,8 @@ async function findEventSearch (location,btnDates,categories,audiences,page,page if (audiences.length > 0) { matchQuery.audiences = { $in: audiences }; } - const filteredEvents = await eventModel.aggregate([ - { $match: matchQuery }, - { - $addFields: { - date: { - $filter: { - input: "$date", - as: "date", - cond: { $gte: ["$$date", startDate] } - } - } - } - }, - { $sort: { date: 1 } }, - { $skip: skipCount }, - { $limit: pageSize } - ]); - const results = {} - const endIndex = page * pageSize - - if (endIndex < await eventModel.find(matchQuery).countDocuments().exec()) { - results.nextPage = page + 1 - } - - results.event = filteredEvents - return results; + return pagination (matchQuery,page,startDate) } async function findEventById(id) { diff --git a/Routes/event.route.js b/Routes/event.route.js index 3690f8f..30f5ff0 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -11,6 +11,7 @@ const { log } = require("console"); const { sendMail } = require("../BL/emailInterface"); const URL = "localhost:5000"; const DIR = "upload"; + cloudinary.config({ cloud_name: process.env.CLOUD_NAME, api_key: process.env.API_KEY, @@ -60,16 +61,7 @@ eventRouter.post("", async (req, res) => { try { const search = req.body.search || ""; const page = parseInt(req.body.page) || 1; - const pageSize = req.body.pageSize || 5; // אמור להיות קבוע וכרגע נשלח מהקליינט - const currentDate = req.body.currentDate || new Date(); - const skipCount = (page - 1) * pageSize; - const data = await eventService.findEvent( - page, - pageSize, - currentDate, - search, - skipCount, - ); + const data = await eventService.findEvent(page , search); res.status(200).send(data); } catch (err) { sendError(res, err); @@ -83,16 +75,12 @@ eventRouter.post("/search", async (req, res) => { const categories = req.body.categories || []; const audiences = req.body.audiences || []; const page = parseInt(req.body.page) || 1; - const pageSize = req.body.pageSize || 5; // אמור להיות קבוע וכרגע נשלח מהקליינט - const skipCount = (page - 1) * pageSize; const data = await eventService.findEventSearch( location, btnDates, categories, audiences, page, - pageSize, - skipCount, ); res.status(200).send(data); } catch (err) { From 43f8eb79cca861dc6887c4ff1cd29137b6d03f8d Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Sun, 11 Jun 2023 22:49:15 +0300 Subject: [PATCH 084/150] update authorization --- BL/event.services.js | 30 +++++++++++++++++++++--------- BL/user.services.js | 9 +++++++++ Routes/event.route.js | 11 ++++++++--- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 7f392c9..ddc15bf 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -137,9 +137,8 @@ function getDatesWithNumberOfOccurrences( return dates; } -const now = new Date(); -async function pagination (filterModel, page , startDate){ +async function pagination (filterModel, page , startDate ,endDate){ const pageSize = 10 const skipCount = (page - 1) * pageSize; const results = {} @@ -152,6 +151,7 @@ async function pagination (filterModel, page , startDate){ { $limit: pageSize } ] results.startDate= startDate + results.endDate= endDate results.event = await eventModel.aggregate(Query) if (endIndex < await eventModel.find(filterModel).countDocuments().exec()) { @@ -163,16 +163,23 @@ async function pagination (filterModel, page , startDate){ -async function findEvent(page, search) { +async function findEvent(page, search, user) { + const now = new Date(); const filterModel = { $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], date: { $gte: now} } + + if (!user||user.userType!=="admin") { + filterModel.status = { $regex: "published" }; + } + + return pagination(filterModel,page,now) } -async function findEventSearch (location,btnDates,categories,audiences,page) { - +async function findEventSearch (location,btnDates,categories,audiences,page, user) { + const now = new Date(); // startDate endDate הגדרת const fixTimezoneHour = -3 const fixTimezoneMinute = 60*fixTimezoneHour @@ -193,9 +200,10 @@ async function findEventSearch (location,btnDates,categories,audiences,page) { } else if (btnDates === "thisWeek") { startDate=now - const dayOfWeek = now.getDay(); - const daysUntilEndOfWeek = (6 - dayOfWeek + fixTimezoneMinute / 60 / 24 + 7) % 7; - endDate = new Date(now.getTime() + daysUntilEndOfWeek * 24 * 60 * 60 * 1000); + const fixDateOfDay = new Date(now.getTime() + fixTimezoneMinute * 60 * 1000) + const dayOfWeek = fixDateOfDay.getDay(); + const daysUntilEndOfWeek = (13 - dayOfWeek ) % 7; + endDate = new Date(dayPas.getTime() + daysUntilEndOfWeek * 24 * 60 * 60 * 1000); } else { throw "Selected value is not defined"; } @@ -206,6 +214,10 @@ async function findEventSearch (location,btnDates,categories,audiences,page) { date: { $elemMatch: { $gte: startDate, $lt: endDate } } }; + + if (!user||user.userType!=="admin") { + matchQuery.status = { $regex: "published" }; + } if (categories.length > 0) { matchQuery.categories = { $in: categories }; } @@ -213,7 +225,7 @@ async function findEventSearch (location,btnDates,categories,audiences,page) { matchQuery.audiences = { $in: audiences }; } - return pagination (matchQuery,page,startDate) + return pagination (matchQuery,page,startDate,endDate) } async function findEventById(id) { diff --git a/BL/user.services.js b/BL/user.services.js index c2592c8..3a95c2e 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -68,6 +68,14 @@ async function changePassword(email, newPassword) { } } +async function checkToken(req,res,next){ + let token = req.headers.authorization.replace('Bearer ', '') + let result = await verifyToken(token) + req.user = result + next() +} + + async function verifyToken(token) { try { const decoded = jwt.verify(token, process.env.JWT_SECRET); @@ -146,6 +154,7 @@ module.exports = { changePassword, verifyToken, checkUserType, + checkToken // addFavourite, // removeFavourite } \ No newline at end of file diff --git a/Routes/event.route.js b/Routes/event.route.js index 7faf64a..952bde5 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -1,6 +1,7 @@ const express = require("express"); const eventRouter = express.Router(); const eventService = require("../BL/event.services"); +const userService = require("../BL/user.services" ); const multer = require("multer"); const fs = require("fs"); const cloudinary = require("cloudinary").v2; @@ -11,6 +12,7 @@ const { log } = require("console"); const { sendMail } = require("../BL/emailInterface"); const URL = "localhost:5000"; const DIR = "upload"; +const userToken = userService.checkToken cloudinary.config({ cloud_name: process.env.CLOUD_NAME, @@ -57,30 +59,33 @@ const multiUpload = upload.fields([ { name: "gallery", maxCount: 5 }, ]); -eventRouter.post("", async (req, res) => { +eventRouter.post("" ,userToken ,async (req, res) => { try { const search = req.body.search || ""; const page = parseInt(req.body.page) || 1; - const data = await eventService.findEvent(page , search); + const user = req.user + const data = await eventService.findEvent(page , search, user); res.status(200).send(data); } catch (err) { sendError(res, err); } }); -eventRouter.post("/search", async (req, res) => { +eventRouter.post("/search",userToken , async (req, res) => { try { const location = req.body.location || ""; const btnDates = req.body.btnDates || ""; const categories = req.body.categories || []; const audiences = req.body.audiences || []; const page = parseInt(req.body.page) || 1; + const user = req.user const data = await eventService.findEventSearch( location, btnDates, categories, audiences, page, + user ); res.status(200).send(data); } catch (err) { From 81ffe36e254d44690726d5c66ffec444a20a0517 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Mon, 12 Jun 2023 09:17:05 +0300 Subject: [PATCH 085/150] update authorization try and catch --- BL/user.services.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 3a95c2e..47fdd76 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -69,9 +69,14 @@ async function changePassword(email, newPassword) { } async function checkToken(req,res,next){ - let token = req.headers.authorization.replace('Bearer ', '') - let result = await verifyToken(token) - req.user = result + try { + + let token = req.headers.authorization.replace('Bearer ', '') + let result = await verifyToken(token) + req.user = result + } catch (error) { + console.log("waring, line 78 in user.service.js: don't send authorization in header"); + } next() } From e1bcca0ed57aed9e1d14aa18c0342971ad75a4c1 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Mon, 12 Jun 2023 09:30:06 +0300 Subject: [PATCH 086/150] update log in btnDates in events.services --- BL/event.services.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BL/event.services.js b/BL/event.services.js index ddc15bf..22909a9 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -205,7 +205,7 @@ async function findEventSearch (location,btnDates,categories,audiences,page, use const daysUntilEndOfWeek = (13 - dayOfWeek ) % 7; endDate = new Date(dayPas.getTime() + daysUntilEndOfWeek * 24 * 60 * 60 * 1000); } else { - throw "Selected value is not defined"; + throw "Selected value btnDates is not defined (line 208 in event/services.js)"; } //סוף From 9a177b9d65a15b949186a7b993e8fde2d012cb1a Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 13 Jun 2023 10:20:07 +0300 Subject: [PATCH 087/150] update rout get eventID --- Routes/event.route.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 952bde5..41a3253 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -96,7 +96,7 @@ eventRouter.post("/search",userToken , async (req, res) => { eventRouter.get("/:eventID", async (req, res) => { try { const currentDate = req.body.currentDate || new Date(); - const event = await eventService.findEventByID( + const event = await eventService.findEventById( req.params.eventID, currentDate ); From 087112c9ef63af84ac738fb6328f30d0b5a1c569 Mon Sep 17 00:00:00 2001 From: yisrael Date: Wed, 14 Jun 2023 14:25:55 +0300 Subject: [PATCH 088/150] added user validation and correct error response --- BL/user.services.js | 18 +++++++++++------- DL/user.controller.js | 15 +++------------ Routes/user.route.js | 4 ++-- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 47fdd76..675bd4f 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -17,19 +17,23 @@ async function createUser(newUserData) { async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { - console.log(foundUser.userType); try { - const token = jwt.sign( - { email: user.email, userType: foundUser.userType }, - process.env.JWT_SECRET, - { expiresIn: '1440h' }); - return { user: foundUser, token }; + const isPasswordMatch = await bcrypt.compare(user.password, foundUser.password); + if (isPasswordMatch) { + const token = jwt.sign( + { email: user.email, userType: foundUser.userType }, + process.env.JWT_SECRET, + { expiresIn: '1440h' }); + return { user: foundUser, token }; + } else { + return ('סיסמא שגויה'); + } } catch (err) { console.error('Error generating Token:', err); return { error: 'Error generating JWT token' }; } } else { - return { error: 'Invalid credentials' }; + return ('לא הצליח למצוא משתמש'); } } diff --git a/DL/user.controller.js b/DL/user.controller.js index 15a929d..524d7a0 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -19,21 +19,12 @@ async function create(data) { async function find(user) { - const { email, password } = user; + const { email } = user; try { const foundUser = await userData.findOne({ email }); - if (foundUser) { - const isPasswordMatch = await bcrypt.compare(password, foundUser.password); - if (isPasswordMatch) { - return foundUser; - } else { - throw new Error('Invalid credentials'); - } - } else { - throw new Error('User not found'); - } + return foundUser; } catch (error) { - throw new Error('Error finding User'); + return { error: 'לא הצליח למצוא משתמש' }; } } diff --git a/Routes/user.route.js b/Routes/user.route.js index 7c01c18..a763418 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -1,7 +1,7 @@ const express = require("express"); const userRouter = express.Router(); const userServices = require("../BL/user.services"); -const { sendError, errorMsg } = require("../errController"); +const { sendError, errMessage } = require("../errController"); userRouter.post("/creatUser", async (req, res) => { @@ -9,7 +9,7 @@ userRouter.post("/creatUser", async (req, res) => { const user = await userServices.createUser(req.body); res.status(200).send(user); } catch (err) { - sendError(res, err); + return sendError(res, err); } }); From d37da4e872890d08f16e909aa2d8374f1626244e Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 15 Jun 2023 12:51:34 +0300 Subject: [PATCH 089/150] update aear location --- BL/event.services.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 22909a9..4cfa8ef 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -2,6 +2,7 @@ const eventController = require("../DL/event.controller"); const mailInterface = require('./emailInterface') const eventModel = require('../DL/event.model'); const settingService = require("../BL/setting.services"); +const errController = require('../errController'); async function createNewEvent(eventData) { var dates = []; @@ -205,14 +206,21 @@ async function findEventSearch (location,btnDates,categories,audiences,page, use const daysUntilEndOfWeek = (13 - dayOfWeek ) % 7; endDate = new Date(dayPas.getTime() + daysUntilEndOfWeek * 24 * 60 * 60 * 1000); } else { - throw "Selected value btnDates is not defined (line 208 in event/services.js)"; + throw errController.errMessage.SETTING_NOT_FOUND } //סוף const matchQuery = { - place: { $regex: location, $options: "i" }, date: { $elemMatch: { $gte: startDate, $lt: endDate } } }; + + if (typeof location === 'string') { + matchQuery.place = { $regex: location }; + } else if(Array.isArray(location)){ + matchQuery.place = { $in: location }; + } else{ + throw errController.errMessage.SETTING_NOT_FOUND + } if (!user||user.userType!=="admin") { From ead90f61a26bada962adfa5cfab67da746b90377 Mon Sep 17 00:00:00 2001 From: yisrael Date: Thu, 15 Jun 2023 15:28:40 +0300 Subject: [PATCH 090/150] added registration validations --- BL/user.services.js | 12 ++++++++---- DL/user.controller.js | 6 +++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 675bd4f..c0f02af 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -7,10 +7,14 @@ const jwt = require('jsonwebtoken'); async function createUser(newUserData) { const newUser = await userController.create(newUserData); - return { - status: "success", - newUser: newUser, - }; + if (newUser) { + return { + newUser: newUser + }; + } else { + return {email: newUserData.email} + } + } diff --git a/DL/user.controller.js b/DL/user.controller.js index 524d7a0..8a73798 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -6,10 +6,10 @@ const bcrypt = require('bcrypt') async function create(data) { try { const findEmail = await userData.findOne({email:data.email}); - if (findEmail) { - throw new Error('Email alredy in use'); - } else { + if (!findEmail) { return await userData.create(data); + } else { + return { error: `האימייל ${findEmail.email} נמצא כבר בשימוש`, Email: findEmail.email }; } } catch (error) { throw error; From 1ebc5351ca2bd6e05902c85c546666d80f77d03d Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 21 Jun 2023 11:34:54 +0300 Subject: [PATCH 091/150] add trim to cloudinary --- Routes/event.route.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 41a3253..557b3f7 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -126,9 +126,9 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { if (cardImageURL) { const result = await cloudinary.uploader.upload(cardImageURL[0].path, { folder: - dataEvent.advertiser.email + + dataEvent.advertiser.email.trim() + "/" + - dataEvent.eventName + + dataEvent.eventName.trim() + "/cardImageURL", transformation: [ { aspect_ratio: "1.0", crop: "fill" }, @@ -142,9 +142,9 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { if (coverImageURL) { const result = await cloudinary.uploader.upload(coverImageURL[0].path, { folder: - dataEvent.advertiser.email + + dataEvent.advertiser.email.trim() + "/" + - dataEvent.eventName + + dataEvent.eventName.trim() + "/coverImageURL", transformation: [ { aspect_ratio: "1.77778", crop: "fill" }, @@ -159,9 +159,9 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { async (file) => await cloudinary.uploader.upload(file.path, { folder: - dataEvent.advertiser.email + + dataEvent.advertiser.email.trim() + "/" + - dataEvent.eventName + + dataEvent.eventName.trim() + "/gallery", }) ); From 1191340d5317ae9f4e73018bfb2dd04130cb9696 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 21 Jun 2023 11:36:33 +0300 Subject: [PATCH 092/150] add trim to cloudinary --- Routes/event.route.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 557b3f7..15b6371 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -166,13 +166,9 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { }) ); } - console.log({ dataEvent }); + const event = await eventService.createNewEvent(dataEvent); res.send(event); - console.log(event); - //TODO: send to email function - // eventService.sendEventDetailsToAdvertiser(event.advertiser.email,event._id); - sendMail( ADMIN_MAIL, "אירוע חדש לאישור", From b543399aebaaecdab53e707e9a6f805975befdee Mon Sep 17 00:00:00 2001 From: hadarna Date: Mon, 26 Jun 2023 12:42:47 +0300 Subject: [PATCH 093/150] repeat event --- BL/event.services.js | 147 ++++++++++++++++++++++++++++++++++++++++++ Routes/event.route.js | 3 +- 2 files changed, 149 insertions(+), 1 deletion(-) diff --git a/BL/event.services.js b/BL/event.services.js index 4cfa8ef..69f6d6f 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -3,6 +3,152 @@ const mailInterface = require('./emailInterface') const eventModel = require('../DL/event.model'); const settingService = require("../BL/setting.services"); const errController = require('../errController'); +const { count } = require("../DL/setting.model"); + + +async function newCreateNewEvent(eventData){ + +if(eventData.repeatType=="daily"|| eventData.repeatType=="customized"&& eventData.personalRepeatType=="days"){ + dailyRepetition(eventData.date, eventData.repeatTimes, eventData.repeatType, eventData.repeatSettingsPersonal.type, + eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd) +} +if(eventData.repeatType=="weekly" ||(eventData.repeatType=="customized" && eventData.personalRepeatType=="weeks")){ + weeklyRepetitionDateEnd(eventData.date,eventData.repeatType, eventData.repeatTimes, eventData.repeatSettingsPersonal.type, + eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd, eventData.day) +} + else { + console.log("disposable") + dates.push(new Date(currentDate)); + eventData.date = dates; + } + // } + // + // const newEvent = await eventController.create(eventData); + console.log(eventData.dates) + return newEvent; +} + + + function dailyRepetition (startDate, repeatTimes, repeatType, endType, repeatDateEnd, RepeatTimesEnd){ + startDate = new Date(startDate); + let endDate=new Date(); + const dates=[]; + if(repeatType=="daily"){ + endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()-1); + } +if (repeatType=="customized"){ + if(endType=="endDate"){ + endDate= repeatDateEnd; + endDate { ); } console.log({ dataEvent }); - const event = await eventService.createNewEvent(dataEvent); + // const event = await eventService.createNewEvent(dataEvent); + const event = await eventService.newCreateNewEvent(dataEvent); res.send(event); console.log(event); //TODO: send to email function From fba12f532d12f0b4d656d9a74b813c3be300661d Mon Sep 17 00:00:00 2001 From: hadarna Date: Tue, 27 Jun 2023 21:32:40 +0300 Subject: [PATCH 094/150] repeat event2 --- BL/event.services.js | 79 ++++++++++++++++++++++++++------------------ DL/event.model.js | 6 ++-- 2 files changed, 51 insertions(+), 34 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 69f6d6f..15b7a0a 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -7,38 +7,45 @@ const { count } = require("../DL/setting.model"); async function newCreateNewEvent(eventData){ - -if(eventData.repeatType=="daily"|| eventData.repeatType=="customized"&& eventData.personalRepeatType=="days"){ - dailyRepetition(eventData.date, eventData.repeatTimes, eventData.repeatType, eventData.repeatSettingsPersonal.type, - eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd) -} -if(eventData.repeatType=="weekly" ||(eventData.repeatType=="customized" && eventData.personalRepeatType=="weeks")){ - weeklyRepetitionDateEnd(eventData.date,eventData.repeatType, eventData.repeatTimes, eventData.repeatSettingsPersonal.type, + const dates=[]; + let startDate = new Date(eventData.date); + +if(eventData.repeatType=="daily"|| eventData.repeatType=="customized"&& eventData.personalRepeat=="days"){ + console.log(startDate) + const dayList= + dailyRepetition(startDate, eventData.repeatTimes, eventData.repeatType, eventData.repeatSettingsPersonal.type, + eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd); + eventData.date=dayList; + } +else if(eventData.repeatType=="weekly" ||(eventData.repeatType=="customized" && eventData.personalRepeat=="weeks")){ + const weekDaysList= + weeklyRepetition(startDate, eventData.repeatType, eventData.repeatTimes, eventData.repeatSettingsPersonal.type, eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd, eventData.day) + eventData.date= weekDaysList; } else { console.log("disposable") - dates.push(new Date(currentDate)); + dates.push(new Date(startDate)); eventData.date = dates; } - // } - // - // const newEvent = await eventController.create(eventData); - console.log(eventData.dates) + const newEvent = await eventController.create(eventData); + console.log(eventData.date) return newEvent; } function dailyRepetition (startDate, repeatTimes, repeatType, endType, repeatDateEnd, RepeatTimesEnd){ - startDate = new Date(startDate); - let endDate=new Date(); + // startDate = new Date(startDate); const dates=[]; + let endDate=new Date(); + if(repeatType=="daily"){ - endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()-1); + endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()); + console.log("checkkkkkkkk", endDate) } if (repeatType=="customized"){ if(endType=="endDate"){ - endDate= repeatDateEnd; + endDate= new Date(repeatDateEnd); endDate Date: Wed, 28 Jun 2023 16:07:15 +0300 Subject: [PATCH 095/150] repeat event3 --- BL/event.services.js | 46 ++++++++++++++++++-------------------------- DL/event.model.js | 2 +- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 15b7a0a..400cf6d 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -14,7 +14,7 @@ if(eventData.repeatType=="daily"|| eventData.repeatType=="customized"&& eventDat console.log(startDate) const dayList= dailyRepetition(startDate, eventData.repeatTimes, eventData.repeatType, eventData.repeatSettingsPersonal.type, - eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd); + eventData.repeatSettingsPersonal.dateEnd.date, eventData.repeatSettingsPersonal.timesEnd); eventData.date=dayList; } else if(eventData.repeatType=="weekly" ||(eventData.repeatType=="customized" && eventData.personalRepeat=="weeks")){ @@ -34,70 +34,63 @@ else if(eventData.repeatType=="weekly" ||(eventData.repeatType=="customized" && } - function dailyRepetition (startDate, repeatTimes, repeatType, endType, repeatDateEnd, RepeatTimesEnd){ + function dailyRepetition (startDate, repeatTimes, repeatType, endType, repeatDateEnd, repeatTimesEnd){ // startDate = new Date(startDate); const dates=[]; let endDate=new Date(); + const times= Number(repeatTimes); + if(repeatType=="daily"){ endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()); - console.log("checkkkkkkkk", endDate) } if (repeatType=="customized"){ if(endType=="endDate"){ endDate= new Date(repeatDateEnd); - endDate Date: Wed, 28 Jun 2023 16:08:16 +0300 Subject: [PATCH 096/150] repeat event4 --- BL/event.services.js | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 400cf6d..2efad83 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -118,45 +118,6 @@ return dates; -// else if(eventData.repeatType=="weekly"){ - // while (currentDate <= endDate) { - // dates.push(new Date(currentDate)); - // currentDate.setDate(currentDate.getDate() + 7); - // } - // const dates=[]; - // const currentDate = new Date(eventData.date); - // const endDate=new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, currentDate.getDate()-1); - // if(!eventData.personalRepeatType){ - // if(eventData.repeatType=="daily"){ - // while (currentDate <= endDate) { - // dates.push(new Date(currentDate)); - // currentDate.setDate(currentDate.getDate() + 1); - // } - // } - // else if(eventData.repeatType=="weekly"){ - // while (currentDate <= endDate) { - // dates.push(new Date(currentDate)); - // currentDate.setDate(currentDate.getDate() + 7); - // } - // } - - - - - - -// else if(eventData.repeatType=="weekly"){ -// // for (i=currentDate; i<= endDate; i.setDate(i.getDate()+1)) { -// // if(i.getDay()===dayOfWeek){ -// // dates.push(new Date(i)); - - - - - - - - async function createNewEvent(eventData) { var dates = []; let repeat = 1; From 50561a8d1a53e4d9ee406512ccf09a978408a4a6 Mon Sep 17 00:00:00 2001 From: hadarna Date: Thu, 6 Jul 2023 12:04:15 +0300 Subject: [PATCH 097/150] weekly event --- BL/event.services.js | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 2efad83..d42dc66 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -30,6 +30,7 @@ else if(eventData.repeatType=="weekly" ||(eventData.repeatType=="customized" && } const newEvent = await eventController.create(eventData); console.log(eventData.date) + console.log(newEvent) return newEvent; } @@ -64,6 +65,19 @@ if (repeatType=="customized"){ return dates; } + // const days = [{value: "א",nameDay:"ראשון", day:0}, {value: "ב",nameDay:"שני", day: 1}, {value:"ג", nameDay:"שלישי", day:2}, + // {value: "ד", nameDay:"רביעי",day: 3}, {value: "ה", nameDay:"חמישי", day:4 }, {value:"ו",nameDay:"שישי", day:5 }, + // {value:"ש", nameDay:"שבת", day: 6}]; +// useEffect(()=>{ +// console.log("chooseDays", chooseDays) +// const filteredArray = chooseDays.filter((obj) => Object.keys(obj).length !== 0); +// const daysName= filteredArray.map((d)=> d.day) +// setArrayDay(daysName) +// console.log("arrayDay" ,arrayDay) + +// }, [chooseDays]) + + function weeklyRepetition(startDate, repeatType, repeatTimes,endType, repeatDateEnd, repeatTimesEnd, days){ const dates=[]; @@ -76,12 +90,18 @@ if(times==2){ repeat=8; } + const filteredArray = days.filter((obj) => Object.keys(obj).length !== 0); + const daysName= filteredArray.map((d)=> d.day); + + + if(repeatType=="weekly" ||(repeatType=="customized" && endType=="endDate")){ if (repeatType=="weekly"){ endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()-1); const today= startDate.getDay() -days.push(today); + console.log("daysname", daysName) + daysName.push(today); } if(repeatType=="customized" && endType=="endDate"){ @@ -91,7 +111,7 @@ if(repeatType=="customized" && endType=="endDate"){ } while (startDate <= endDate) { -if(days.includes(startDate.getDay())){ +if(daysName.includes(startDate.getDay())){ let currentDate= new Date(startDate); dates.push(currentDate) } @@ -104,7 +124,7 @@ if(repeatType=="customized" && endType=="endNumTimes"){ let counter= 0; while (startDate <= endDate && counter< repeatTimesEnd) { - if(days.includes(startDate.getDay())){ + if(daysName.includes(startDate.getDay())){ let currentDate= new Date(startDate); dates.push(currentDate) counter++ From 4e82461d01126fa0be7cb6572de987dc8483722f Mon Sep 17 00:00:00 2001 From: hadarna Date: Fri, 7 Jul 2023 01:15:47 +0300 Subject: [PATCH 098/150] reapet event --- BL/event.services.js | 4 ++-- DL/event.model.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index d42dc66..f6206f9 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -20,7 +20,7 @@ if(eventData.repeatType=="daily"|| eventData.repeatType=="customized"&& eventDat else if(eventData.repeatType=="weekly" ||(eventData.repeatType=="customized" && eventData.personalRepeat=="weeks")){ const weekDaysList= weeklyRepetition(startDate, eventData.repeatType, eventData.repeatTimes, eventData.repeatSettingsPersonal.type, - eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd, eventData.day) + eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd, eventData.days) eventData.date= weekDaysList; } else { @@ -141,7 +141,7 @@ return dates; async function createNewEvent(eventData) { var dates = []; let repeat = 1; - const days = eventData.day ? getDays(eventData.day) : null; + const days = eventData.days ? getDays(eventData.days) : null; switch (eventData.repeatType) { case " אירוע יומי": repeat = 1; diff --git a/DL/event.model.js b/DL/event.model.js index ff5e681..88351bb 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -35,7 +35,7 @@ const eventSchema = new mongoose.Schema({ }, ], deletedDate: [{ type: Date }], - day: [], + days: [], personalRepeat:{type: String}, repeatSettingsPersonal: { type: { type: String }, dateEnd: { type: Object }, timesEnd:{type:Number} }, From 11b9d912c272aa7c80941c3a4eec2913538c8c3d Mon Sep 17 00:00:00 2001 From: hadarna Date: Mon, 10 Jul 2023 01:07:27 +0300 Subject: [PATCH 099/150] customized event --- BL/event.services.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index f6206f9..4fb0248 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -65,19 +65,6 @@ if (repeatType=="customized"){ return dates; } - // const days = [{value: "א",nameDay:"ראשון", day:0}, {value: "ב",nameDay:"שני", day: 1}, {value:"ג", nameDay:"שלישי", day:2}, - // {value: "ד", nameDay:"רביעי",day: 3}, {value: "ה", nameDay:"חמישי", day:4 }, {value:"ו",nameDay:"שישי", day:5 }, - // {value:"ש", nameDay:"שבת", day: 6}]; -// useEffect(()=>{ -// console.log("chooseDays", chooseDays) -// const filteredArray = chooseDays.filter((obj) => Object.keys(obj).length !== 0); -// const daysName= filteredArray.map((d)=> d.day) -// setArrayDay(daysName) -// console.log("arrayDay" ,arrayDay) - -// }, [chooseDays]) - - function weeklyRepetition(startDate, repeatType, repeatTimes,endType, repeatDateEnd, repeatTimesEnd, days){ const dates=[]; From ad1695f403245b11cc5017725b4b8567f82a24d5 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 11 Jul 2023 19:09:09 +0300 Subject: [PATCH 100/150] fix regex --- BL/event.services.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 4cfa8ef..9759a48 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -172,7 +172,7 @@ async function findEvent(page, search, user) { } if (!user||user.userType!=="admin") { - filterModel.status = { $regex: "published" }; + filterModel.status = "published" ; } @@ -215,7 +215,9 @@ async function findEventSearch (location,btnDates,categories,audiences,page, use }; if (typeof location === 'string') { - matchQuery.place = { $regex: location }; + if(location.length>0){ + matchQuery.place = location + } } else if(Array.isArray(location)){ matchQuery.place = { $in: location }; } else{ @@ -224,8 +226,9 @@ async function findEventSearch (location,btnDates,categories,audiences,page, use if (!user||user.userType!=="admin") { - matchQuery.status = { $regex: "published" }; + matchQuery.status = "published" ; } + if (categories.length > 0) { matchQuery.categories = { $in: categories }; } From 3cc7b3a63c6821984b582e173c30d7eb4c9f7ccd Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Thu, 13 Jul 2023 20:59:37 +0300 Subject: [PATCH 101/150] fix mail --- BL/event.services.js | 467 ++++++++++++++++++++++++++----------------- 1 file changed, 288 insertions(+), 179 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 4fb0248..87480f7 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -1,129 +1,204 @@ const eventController = require("../DL/event.controller"); -const mailInterface = require('./emailInterface') -const eventModel = require('../DL/event.model'); +const mailInterface = require("./emailInterface"); +const eventModel = require("../DL/event.model"); const settingService = require("../BL/setting.services"); -const errController = require('../errController'); +const errController = require("../errController"); const { count } = require("../DL/setting.model"); - -async function newCreateNewEvent(eventData){ - const dates=[]; +async function newCreateNewEvent(eventData) { + const dates = []; let startDate = new Date(eventData.date); -if(eventData.repeatType=="daily"|| eventData.repeatType=="customized"&& eventData.personalRepeat=="days"){ - console.log(startDate) - const dayList= - dailyRepetition(startDate, eventData.repeatTimes, eventData.repeatType, eventData.repeatSettingsPersonal.type, - eventData.repeatSettingsPersonal.dateEnd.date, eventData.repeatSettingsPersonal.timesEnd); - eventData.date=dayList; + if ( + eventData.repeatType == "daily" || + (eventData.repeatType == "customized" && eventData.personalRepeat == "days") + ) { + console.log(startDate); + const dayList = dailyRepetition( + startDate, + eventData.repeatTimes, + eventData.repeatType, + eventData.repeatSettingsPersonal.type, + eventData.repeatSettingsPersonal.dateEnd.date, + eventData.repeatSettingsPersonal.timesEnd + ); + eventData.date = dayList; + } else if ( + eventData.repeatType == "weekly" || + (eventData.repeatType == "customized" && + eventData.personalRepeat == "weeks") + ) { + const weekDaysList = weeklyRepetition( + startDate, + eventData.repeatType, + eventData.repeatTimes, + eventData.repeatSettingsPersonal.type, + eventData.repeatSettingsPersonal.dateEnd, + eventData.repeatSettingsPersonal.timesEnd, + eventData.days + ); + eventData.date = weekDaysList; + } else { + console.log("disposable"); + dates.push(new Date(startDate)); + eventData.date = dates; } -else if(eventData.repeatType=="weekly" ||(eventData.repeatType=="customized" && eventData.personalRepeat=="weeks")){ - const weekDaysList= - weeklyRepetition(startDate, eventData.repeatType, eventData.repeatTimes, eventData.repeatSettingsPersonal.type, - eventData.repeatSettingsPersonal.dateEnd, eventData.repeatSettingsPersonal.timesEnd, eventData.days) - eventData.date= weekDaysList; -} - else { - console.log("disposable") - dates.push(new Date(startDate)); - eventData.date = dates; - } const newEvent = await eventController.create(eventData); - console.log(eventData.date) - console.log(newEvent) + console.log(eventData.date); + console.log(newEvent); return newEvent; } - - function dailyRepetition (startDate, repeatTimes, repeatType, endType, repeatDateEnd, repeatTimesEnd){ +function dailyRepetition( + startDate, + repeatTimes, + repeatType, + endType, + repeatDateEnd, + repeatTimesEnd +) { // startDate = new Date(startDate); - const dates=[]; - let endDate=new Date(); - const times= Number(repeatTimes); - - - if(repeatType=="daily"){ - endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()); - } -if (repeatType=="customized"){ - if(endType=="endDate"){ - endDate= new Date(repeatDateEnd); - endDate Object.keys(obj).length !== 0); - const daysName= filteredArray.map((d)=> d.day); +function weeklyRepetition( + startDate, + repeatType, + repeatTimes, + endType, + repeatDateEnd, + repeatTimesEnd, + days +) { + const dates = []; + let endDate = new Date(); + let repeat = 1; + let times = repeatTimes; + if (times == 2) { + repeat = 8; + } -if(repeatType=="weekly" ||(repeatType=="customized" && endType=="endDate")){ + const filteredArray = days.filter((obj) => Object.keys(obj).length !== 0); + const daysName = filteredArray.map((d) => d.day); -if (repeatType=="weekly"){ - endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()-1); - const today= startDate.getDay() - console.log("daysname", daysName) - daysName.push(today); -} + if ( + repeatType == "weekly" || + (repeatType == "customized" && endType == "endDate") + ) { + if (repeatType == "weekly") { + endDate = new Date( + startDate.getFullYear(), + startDate.getMonth() + 1, + startDate.getDate() - 1 + ); + const today = startDate.getDay(); + console.log("daysname", daysName); + daysName.push(today); + } -if(repeatType=="customized" && endType=="endDate"){ - endDate= new Date(repeatDateEnd.date); - endDate<=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate())?endDate: - endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()) -} + if (repeatType == "customized" && endType == "endDate") { + endDate = new Date(repeatDateEnd.date); + endDate <= + new Date( + startDate.getFullYear(), + startDate.getMonth() + 1, + startDate.getDate() + ) + ? endDate + : (endDate = new Date( + startDate.getFullYear(), + startDate.getMonth() + 1, + startDate.getDate() + )); + } -while (startDate <= endDate) { -if(daysName.includes(startDate.getDay())){ - let currentDate= new Date(startDate); - dates.push(currentDate) -} -startDate.getDay()==6?startDate= new Date(startDate.setDate(startDate.getDate() + repeat)): -startDate=new Date(startDate.setDate(startDate.getDate()+1)); -} -} -if(repeatType=="customized" && endType=="endNumTimes"){ - endDate=new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate()); -let counter= 0; -while (startDate <= endDate && counter< repeatTimesEnd) { - - if(daysName.includes(startDate.getDay())){ - let currentDate= new Date(startDate); - dates.push(currentDate) - counter++ + while (startDate <= endDate) { + if (daysName.includes(startDate.getDay())) { + let currentDate = new Date(startDate); + dates.push(currentDate); + } + startDate.getDay() == 6 + ? (startDate = new Date( + startDate.setDate(startDate.getDate() + repeat) + )) + : (startDate = new Date(startDate.setDate(startDate.getDate() + 1))); + } } - startDate.getDay()==6?startDate= new Date( startDate.setDate(startDate.getDate() + repeat)): - startDate=new Date(startDate.setDate(startDate.getDate()+1)); + if (repeatType == "customized" && endType == "endNumTimes") { + endDate = new Date( + startDate.getFullYear(), + startDate.getMonth() + 1, + startDate.getDate() + ); + let counter = 0; + while (startDate <= endDate && counter < repeatTimesEnd) { + if (daysName.includes(startDate.getDay())) { + let currentDate = new Date(startDate); + dates.push(currentDate); + counter++; + } + startDate.getDay() == 6 + ? (startDate = new Date( + startDate.setDate(startDate.getDate() + repeat) + )) + : (startDate = new Date(startDate.setDate(startDate.getDate() + 1))); + } } + return dates; } -return dates; -} - - async function createNewEvent(eventData) { var dates = []; @@ -259,92 +334,110 @@ function getDatesWithNumberOfOccurrences( return dates; } - -async function pagination (filterModel, page , startDate ,endDate){ - const pageSize = 10 +async function pagination(filterModel, page, startDate, endDate) { + const pageSize = 10; const skipCount = (page - 1) * pageSize; - const results = {} - const endIndex = page * pageSize + const results = {}; + const endIndex = page * pageSize; const Query = [ { $match: filterModel }, - { $addFields: { date: { $filter: { input: "$date", as: "date", cond: { $gte: ["$$date", startDate] } } } } }, + { + $addFields: { + date: { + $filter: { + input: "$date", + as: "date", + cond: { $gte: ["$$date", startDate] }, + }, + }, + }, + }, { $sort: { date: 1 } }, { $skip: skipCount }, - { $limit: pageSize } - ] - results.startDate= startDate - results.endDate= endDate - results.event = await eventModel.aggregate(Query) - - if (endIndex < await eventModel.find(filterModel).countDocuments().exec()) { - results.nextPage = page + 1 + { $limit: pageSize }, + ]; + results.startDate = startDate; + results.endDate = endDate; + results.event = await eventModel.aggregate(Query); + + if (endIndex < (await eventModel.find(filterModel).countDocuments().exec())) { + results.nextPage = page + 1; } return results; } - - async function findEvent(page, search, user) { const now = new Date(); const filterModel = { - $or: [{ place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }], - date: { $gte: now} - } - - if (!user||user.userType!=="admin") { + $or: [ + { place: { $regex: search, $options: "i" } }, + { eventName: { $regex: search, $options: "i" } }, + ], + date: { $gte: now }, + }; + + if (!user || user.userType !== "admin") { filterModel.status = { $regex: "published" }; } - - return pagination(filterModel,page,now) + return pagination(filterModel, page, now); } -async function findEventSearch (location,btnDates,categories,audiences,page, user) { +async function findEventSearch( + location, + btnDates, + categories, + audiences, + page, + user +) { const now = new Date(); -// startDate endDate הגדרת - const fixTimezoneHour = -3 - const fixTimezoneMinute = 60*fixTimezoneHour + // startDate endDate הגדרת + const fixTimezoneHour = -3; + const fixTimezoneMinute = 60 * fixTimezoneHour; let dayPas = new Date(now.getTime() + fixTimezoneMinute * 60 * 1000); - dayPas.setHours(24+fixTimezoneHour, 0, 0, 0); + dayPas.setHours(24 + fixTimezoneHour, 0, 0, 0); let startDate; let endDate; - if(btnDates==="allDate"){ - startDate=now ; - endDate = new Date(now.getFullYear() + 100, now.getMonth(), now.getDate())}// תאריך סיום בעוד 100 שנה - else if(btnDates==="today"){ - startDate=now - endDate = dayPas - } - else if (btnDates === "tomorrow") { - startDate = dayPas + if (btnDates === "allDate") { + startDate = now; + endDate = new Date(now.getFullYear() + 100, now.getMonth(), now.getDate()); + } // תאריך סיום בעוד 100 שנה + else if (btnDates === "today") { + startDate = now; + endDate = dayPas; + } else if (btnDates === "tomorrow") { + startDate = dayPas; endDate = new Date(dayPas.getTime() + 24 * 60 * 60 * 1000); - } - else if (btnDates === "thisWeek") { - startDate=now - const fixDateOfDay = new Date(now.getTime() + fixTimezoneMinute * 60 * 1000) + } else if (btnDates === "thisWeek") { + startDate = now; + const fixDateOfDay = new Date( + now.getTime() + fixTimezoneMinute * 60 * 1000 + ); const dayOfWeek = fixDateOfDay.getDay(); - const daysUntilEndOfWeek = (13 - dayOfWeek ) % 7; - endDate = new Date(dayPas.getTime() + daysUntilEndOfWeek * 24 * 60 * 60 * 1000); + const daysUntilEndOfWeek = (13 - dayOfWeek) % 7; + endDate = new Date( + dayPas.getTime() + daysUntilEndOfWeek * 24 * 60 * 60 * 1000 + ); } else { - throw errController.errMessage.SETTING_NOT_FOUND + throw errController.errMessage.SETTING_NOT_FOUND; } - //סוף - + //סוף + const matchQuery = { - date: { $elemMatch: { $gte: startDate, $lt: endDate } } + date: { $elemMatch: { $gte: startDate, $lt: endDate } }, }; - if (typeof location === 'string') { + if (typeof location === "string") { matchQuery.place = { $regex: location }; - } else if(Array.isArray(location)){ + } else if (Array.isArray(location)) { matchQuery.place = { $in: location }; - } else{ - throw errController.errMessage.SETTING_NOT_FOUND + } else { + throw errController.errMessage.SETTING_NOT_FOUND; } - - if (!user||user.userType!=="admin") { + if (!user || user.userType !== "admin") { matchQuery.status = { $regex: "published" }; } if (categories.length > 0) { @@ -354,7 +447,7 @@ async function findEventSearch (location,btnDates,categories,audiences,page, use matchQuery.audiences = { $in: audiences }; } - return pagination (matchQuery,page,startDate,endDate) + return pagination(matchQuery, page, startDate, endDate); } async function findEventById(id) { @@ -364,17 +457,19 @@ async function findEventById(id) { async function findEventByID(id, currentDate) { const event = await eventController.readOne({ _id: id }); - const futureDates = event.date.filter((date) => new Date(date) >= currentDate); -event.date = futureDates.slice(0, 1); -return event; + const futureDates = event.date.filter( + (date) => new Date(date) >= currentDate + ); + event.date = futureDates.slice(0, 1); + return event; } async function updateStatusEvent(id, newData) { - const updateEvent = await eventController.update(id, newData); - const event = await findEventById(id); - console.log("eventtttt",event); - sendEventDetailsToAdvertiser(event.advertiser.email,event._id) - return updateEvent; + const updateEvent = await eventController.update(id, newData); + const event = await findEventById(id); + console.log("eventtttt", event); + sendEventDetailsToAdvertiser(event.advertiser.email, event._id); + return updateEvent; } async function eventIsExists(id) { @@ -383,18 +478,35 @@ async function eventIsExists(id) { async function sendEventDetailsToAdvertiser(email, _id) { const eventData = await findEventById(_id); - const { eventName, summary, advertiser, categories, audiences, registrationPageURL, date, beginningTime, finishTime, place,cardImageURL,coverImageURL } = eventData; - - const categoriesNames = await settingService.getCategorysNames(categories) - const audiencesNames = await settingService.getAudiencesNames(audiences) - const dateTimeString = await date.map(v=>new Date(v).toLocaleDateString('en-US')).join(', ') - - const subject = 'פורסם אירוע חדש - hereEvent' + const { + eventName, + summary, + advertiser, + categories, + audiences, + registrationPageURL, + date, + beginningTime, + finishTime, + place, + cardImageURL, + coverImageURL, + } = eventData; + + const categoriesNames = await settingService.getCategorysNames(categories); + const audiencesNames = await settingService.getAudiencesNames(audiences); + const dateTimeString = await date + .map((v) => new Date(v).toLocaleDateString("en-US")) + .join(", "); + + const subject = "פורסם אירוע חדש - hereEvent"; const html = `
    -

    פרטי אירוע חדש

    +

    איזה כיף, האירוע שלך פורסם!/h1> + רוע: ${summary}

    +

    לצפיה בדף האירוע שלך: ${eventName}

    -

    אירוע חדש פורסם על ידך:

    +

    אלה פרטי האירוע שפרסמת:

    ${eventName}

    מפרסם: ${advertiser.name}

    @@ -403,8 +515,8 @@ async function sendEventDetailsToAdvertiser(email, _id) {

    פרטים על האירוע:

    -

    קטגוריות: ${categoriesNames.join(', ')}

    -

    קהל יעד: ${audiencesNames.join(', ')}

    +

    קטגוריות: ${categoriesNames.join(", ")}

    +

    קהל יעד: ${audiencesNames.join(", ")}

    תאריך האירוע: ${dateTimeString}

    שעות האירוע: ${beginningTime}-${finishTime}

    מיקום האירוע: ${place}

    @@ -419,14 +531,11 @@ async function sendEventDetailsToAdvertiser(email, _id) {

    -` - - await mailInterface.sendMail(email, subject, html) +`; + await mailInterface.sendMail(email, subject, html); } - - module.exports = { newCreateNewEvent, createNewEvent, @@ -435,5 +544,5 @@ module.exports = { findEventById, sendEventDetailsToAdvertiser, updateStatusEvent, - findEventSearch -}; \ No newline at end of file + findEventSearch, +}; From cc1187015b0091f989f6644614070cffe5dd0514 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Thu, 13 Jul 2023 21:16:52 +0300 Subject: [PATCH 102/150] again new mail --- BL/event.services.js | 1 - 1 file changed, 1 deletion(-) diff --git a/BL/event.services.js b/BL/event.services.js index 87480f7..c91cc5c 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -503,7 +503,6 @@ async function sendEventDetailsToAdvertiser(email, _id) { const html = `

    איזה כיף, האירוע שלך פורסם!/h1> - רוע: ${summary}

    לצפיה בדף האירוע שלך: ${eventName}

    אלה פרטי האירוע שפרסמת:

    From 0be1c29fabd6fa7a449786d1b52ecb110ec4a959 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Thu, 13 Jul 2023 21:21:20 +0300 Subject: [PATCH 103/150] and again --- BL/event.services.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BL/event.services.js b/BL/event.services.js index c91cc5c..7f452b1 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -502,7 +502,7 @@ async function sendEventDetailsToAdvertiser(email, _id) { const subject = "פורסם אירוע חדש - hereEvent"; const html = `
    -

    איזה כיף, האירוע שלך פורסם!/h1> +

    איזה כיף, האירוע שלך פורסם!

    לצפיה בדף האירוע שלך: ${eventName}

    אלה פרטי האירוע שפרסמת:

    From f2bc57e555ee4b3a61973fd726aefb8ec1c56c50 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Fri, 14 Jul 2023 00:48:59 +0300 Subject: [PATCH 104/150] button to mail --- BL/event.services.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BL/event.services.js b/BL/event.services.js index 7f452b1..55cd1dc 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -503,7 +503,7 @@ async function sendEventDetailsToAdvertiser(email, _id) { const html = `

    איזה כיף, האירוע שלך פורסם!

    -

    לצפיה בדף האירוע שלך: ${eventName}

    +

    אלה פרטי האירוע שפרסמת:

    From 3b002b7cbbea0a2083a37bbcc530aceac709acf6 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Fri, 14 Jul 2023 01:07:44 +0300 Subject: [PATCH 105/150] button mail like --- BL/event.services.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BL/event.services.js b/BL/event.services.js index 55cd1dc..061b41f 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -503,6 +503,9 @@ async function sendEventDetailsToAdvertiser(email, _id) { const html = `

    איזה כיף, האירוע שלך פורסם!

    +
    + +

    אלה פרטי האירוע שפרסמת:

    From e5932b26dc7e09c982603cf43ed57b85d0c4d869 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Fri, 14 Jul 2023 01:22:01 +0300 Subject: [PATCH 106/150] two options --- BL/event.services.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BL/event.services.js b/BL/event.services.js index 061b41f..1da9bd5 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -506,7 +506,7 @@ async function sendEventDetailsToAdvertiser(email, _id) {
    - +

    אלה פרטי האירוע שפרסמת:

    From bf553e3f5f2853033f7f79b292d6090639254a1e Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Fri, 14 Jul 2023 11:12:04 +0300 Subject: [PATCH 107/150] final link mail --- BL/event.services.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 1da9bd5..2717dca 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -503,9 +503,6 @@ async function sendEventDetailsToAdvertiser(email, _id) { const html = `

    איזה כיף, האירוע שלך פורסם!

    -
    - -

    אלה פרטי האירוע שפרסמת:

    From efba266fdf2c3f35ff51d1420f0133391f4e5fd5 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 19 Jul 2023 11:56:29 +0300 Subject: [PATCH 108/150] add client domain --- BL/event.services.js | 2 +- Routes/event.route.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 2717dca..c82847a 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -503,7 +503,7 @@ async function sendEventDetailsToAdvertiser(email, _id) { const html = `

    איזה כיף, האירוע שלך פורסם!

    - +

    אלה פרטי האירוע שפרסמת:

    diff --git a/Routes/event.route.js b/Routes/event.route.js index 0e87d48..5a3416c 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -173,7 +173,7 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { sendMail( ADMIN_MAIL, "אירוע חדש לאישור", - `https://server-vike.vercel.app/viewEvent/${event._id}` + `${process.env.CLAIENT_DOMAIN}/viewEvent/${event._id}` ); } catch (err) { sendError(res, err); From dfe0ee2daa751a17ded14dd509aa1d5a264aa42d Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 19 Jul 2023 15:34:53 +0300 Subject: [PATCH 109/150] add regex --- Routes/event.route.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 5a3416c..cf08392 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -128,7 +128,7 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { folder: dataEvent.advertiser.email.trim() + "/" + - dataEvent.eventName.trim() + + dataEvent.eventName.trim().replace(/[\/:*?<>|]/,'.') + "/cardImageURL", transformation: [ { aspect_ratio: "1.0", crop: "fill" }, @@ -144,7 +144,7 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { folder: dataEvent.advertiser.email.trim() + "/" + - dataEvent.eventName.trim() + + dataEvent.eventName.trim().replace(/[\/:*?<>|]/,'.') + "/coverImageURL", transformation: [ { aspect_ratio: "1.77778", crop: "fill" }, @@ -161,7 +161,7 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { folder: dataEvent.advertiser.email.trim() + "/" + - dataEvent.eventName.trim() + + dataEvent.eventName.trim().replace(/[\/:*?<>|]/,'.') + "/gallery", }) ); From b39253cdc6b962f8a6627be92fa5da2f3d30239f Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Thu, 20 Jul 2023 15:43:20 +0300 Subject: [PATCH 110/150] try and catch on picture server error --- DL/event.model.js | 16 ++++--- Routes/event.route.js | 108 ++++++++++++++++++++++-------------------- 2 files changed, 67 insertions(+), 57 deletions(-) diff --git a/DL/event.model.js b/DL/event.model.js index 88351bb..6d269d1 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -28,7 +28,7 @@ const eventSchema = new mongoose.Schema({ repeatType: { type: String, }, - repeatTimes:{type: Number}, + repeatTimes: { type: Number }, date: [ { type: Date, @@ -36,8 +36,12 @@ const eventSchema = new mongoose.Schema({ ], deletedDate: [{ type: Date }], days: [], - personalRepeat:{type: String}, - repeatSettingsPersonal: { type: { type: String }, dateEnd: { type: Object }, timesEnd:{type:Number} }, + personalRepeat: { type: String }, + repeatSettingsPersonal: { + type: { type: String }, + dateEnd: { type: Object }, + timesEnd: { type: Number }, + }, beginningTime: { type: String, @@ -101,12 +105,12 @@ const eventSchema = new mongoose.Schema({ }, createdAt: { type: Date, - default: Date.now + default: Date.now, }, publishedAt: { type: Date, - default: null - } + default: null, + }, }); const events = mongoose.model("event", eventSchema); diff --git a/Routes/event.route.js b/Routes/event.route.js index 5a3416c..5c204bb 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -1,7 +1,7 @@ const express = require("express"); const eventRouter = express.Router(); const eventService = require("../BL/event.services"); -const userService = require("../BL/user.services" ); +const userService = require("../BL/user.services"); const multer = require("multer"); const fs = require("fs"); const cloudinary = require("cloudinary").v2; @@ -12,7 +12,7 @@ const { log } = require("console"); const { sendMail } = require("../BL/emailInterface"); const URL = "localhost:5000"; const DIR = "upload"; -const userToken = userService.checkToken +const userToken = userService.checkToken; cloudinary.config({ cloud_name: process.env.CLOUD_NAME, @@ -59,26 +59,26 @@ const multiUpload = upload.fields([ { name: "gallery", maxCount: 5 }, ]); -eventRouter.post("" ,userToken ,async (req, res) => { +eventRouter.post("", userToken, async (req, res) => { try { const search = req.body.search || ""; const page = parseInt(req.body.page) || 1; - const user = req.user - const data = await eventService.findEvent(page , search, user); + const user = req.user; + const data = await eventService.findEvent(page, search, user); res.status(200).send(data); } catch (err) { sendError(res, err); } }); -eventRouter.post("/search",userToken , async (req, res) => { +eventRouter.post("/search", userToken, async (req, res) => { try { const location = req.body.location || ""; const btnDates = req.body.btnDates || ""; const categories = req.body.categories || []; const audiences = req.body.audiences || []; const page = parseInt(req.body.page) || 1; - const user = req.user + const user = req.user; const data = await eventService.findEventSearch( location, btnDates, @@ -122,51 +122,57 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { try { const { cardImageURL, coverImageURL, gallery } = req.files; const dataEvent = JSON.parse(req.body.values); - - if (cardImageURL) { - const result = await cloudinary.uploader.upload(cardImageURL[0].path, { - folder: - dataEvent.advertiser.email.trim() + - "/" + - dataEvent.eventName.trim() + - "/cardImageURL", - transformation: [ - { aspect_ratio: "1.0", crop: "fill" }, - { quality: "auto" }, - { fetch_format: "auto" }, - ], - }); - dataEvent.cardImageURL = result.secure_url; - } - ``; - if (coverImageURL) { - const result = await cloudinary.uploader.upload(coverImageURL[0].path, { - folder: - dataEvent.advertiser.email.trim() + - "/" + - dataEvent.eventName.trim() + - "/coverImageURL", - transformation: [ - { aspect_ratio: "1.77778", crop: "fill" }, - { quality: "auto" }, - { fetch_format: "auto" }, - ], - }); - dataEvent.coverImageURL = result.secure_url; - } - if (gallery) { - dataEvent.gallery = gallery.map( - async (file) => - await cloudinary.uploader.upload(file.path, { - folder: - dataEvent.advertiser.email.trim() + - "/" + - dataEvent.eventName.trim() + - "/gallery", - }) - ); + try { + if (cardImageURL) { + const result = await cloudinary.uploader.upload(cardImageURL[0].path, { + folder: + dataEvent.advertiser.email.trim() + + "/" + + dataEvent.eventName.trim() + + "/cardImageURL", + transformation: [ + { aspect_ratio: "1.0", crop: "fill" }, + { quality: "auto" }, + { fetch_format: "auto" }, + ], + }); + dataEvent.cardImageURL = result.secure_url; + } + ``; + if (coverImageURL) { + const result = await cloudinary.uploader.upload(coverImageURL[0].path, { + folder: + dataEvent.advertiser.email.trim() + + "/" + + dataEvent.eventName.trim() + + "/coverImageURL", + transformation: [ + { aspect_ratio: "1.77778", crop: "fill" }, + { quality: "auto" }, + { fetch_format: "auto" }, + ], + }); + dataEvent.coverImageURL = result.secure_url; + } + if (gallery) { + dataEvent.gallery = gallery.map( + async (file) => + await cloudinary.uploader.upload(file.path, { + folder: + dataEvent.advertiser.email.trim() + + "/" + + dataEvent.eventName.trim() + + "/gallery", + }) + ); + } + console.log({ dataEvent }); + } catch (error) { + throw { + code: 999, + message: "something get wrong with your event, please try again", + }; } - console.log({ dataEvent }); // const event = await eventService.createNewEvent(dataEvent); const event = await eventService.newCreateNewEvent(dataEvent); res.send(event); From d286f626a590bc3e98905ad5f2a53b0eb46cacda Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Thu, 20 Jul 2023 16:17:00 +0300 Subject: [PATCH 111/150] catch error message --- Routes/event.route.js | 94 +++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 44 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 9f850b9..a93e6ac 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -122,51 +122,57 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { try { const { cardImageURL, coverImageURL, gallery } = req.files; const dataEvent = JSON.parse(req.body.values); - - if (cardImageURL) { - const result = await cloudinary.uploader.upload(cardImageURL[0].path, { - folder: - dataEvent.advertiser.email.trim() + - "/" + - dataEvent.eventName.trim().replace(/[\/:*?<>|]/, ".") + - "/cardImageURL", - transformation: [ - { aspect_ratio: "1.0", crop: "fill" }, - { quality: "auto" }, - { fetch_format: "auto" }, - ], - }); - dataEvent.cardImageURL = result.secure_url; - } - ``; - if (coverImageURL) { - const result = await cloudinary.uploader.upload(coverImageURL[0].path, { - folder: - dataEvent.advertiser.email.trim() + - "/" + - dataEvent.eventName.trim().replace(/[\/:*?<>|]/, ".") + - "/coverImageURL", - transformation: [ - { aspect_ratio: "1.77778", crop: "fill" }, - { quality: "auto" }, - { fetch_format: "auto" }, - ], - }); - dataEvent.coverImageURL = result.secure_url; - } - if (gallery) { - dataEvent.gallery = gallery.map( - async (file) => - await cloudinary.uploader.upload(file.path, { - folder: - dataEvent.advertiser.email.trim() + - "/" + - dataEvent.eventName.trim().replace(/[\/:*?<>|]/, ".") + - "/gallery", - }) - ); + try { + if (cardImageURL) { + const result = await cloudinary.uploader.upload(cardImageURL[0].path, { + folder: + dataEvent.advertiser.email.trim() + + "/" + + dataEvent.eventName.trim() + + "/cardImageURL", + transformation: [ + { aspect_ratio: "1.0", crop: "fill" }, + { quality: "auto" }, + { fetch_format: "auto" }, + ], + }); + dataEvent.cardImageURL = result.secure_url; + } + ``; + if (coverImageURL) { + const result = await cloudinary.uploader.upload(coverImageURL[0].path, { + folder: + dataEvent.advertiser.email.trim() + + "/" + + dataEvent.eventName.trim() + + "/coverImageURL", + transformation: [ + { aspect_ratio: "1.77778", crop: "fill" }, + { quality: "auto" }, + { fetch_format: "auto" }, + ], + }); + dataEvent.coverImageURL = result.secure_url; + } + if (gallery) { + dataEvent.gallery = gallery.map( + async (file) => + await cloudinary.uploader.upload(file.path, { + folder: + dataEvent.advertiser.email.trim() + + "/" + + dataEvent.eventName.trim() + + "/gallery", + }) + ); + } + console.log({ dataEvent }); + } catch (error) { + throw { + code: 999, + message: "משהו לא הסתדר, בבקשה נסה שנית", + }; } - console.log({ dataEvent }); // const event = await eventService.createNewEvent(dataEvent); const event = await eventService.newCreateNewEvent(dataEvent); res.send(event); From 1b9d1ad10e4c2ff52b80a8e1d1e25a12d03098ce Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Sun, 23 Jul 2023 11:39:15 +0300 Subject: [PATCH 112/150] KorePo in the subject of the mail --- BL/event.services.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index c82847a..84faf22 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -499,11 +499,13 @@ async function sendEventDetailsToAdvertiser(email, _id) { .map((v) => new Date(v).toLocaleDateString("en-US")) .join(", "); - const subject = "פורסם אירוע חדש - hereEvent"; + const subject = "פורסם אירוע חדש - KorePo"; const html = `

    איזה כיף, האירוע שלך פורסם!

    - +

    אלה פרטי האירוע שפרסמת:

    From 5bb89c0038035f61b8c7be6ea4efd4e639eb0ef2 Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Mon, 24 Jul 2023 13:23:52 +0300 Subject: [PATCH 113/150] chang email adress --- BL/emailInterface.js | 6 +++--- BL/event.services.js | 3 ++- BL/user.services.js | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/BL/emailInterface.js b/BL/emailInterface.js index 2cad7f8..2478a25 100644 --- a/BL/emailInterface.js +++ b/BL/emailInterface.js @@ -6,12 +6,12 @@ async function sendMail(email, subject, html) { const transporter = await nodemailer.createTransport({ service: "gmail", auth: { - user: "hereevent1@gmail.com", - pass: "jeelwvaploojnari" + user: "korepo149@gmail.com", + pass: "avozrwilpxiljoaw" } }); const mailOptions = await { - from: 'hereevent1@gmail.com', + from: 'קורה פה! ', to: email, subject: subject, html: html diff --git a/BL/event.services.js b/BL/event.services.js index c82847a..3d899e0 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -499,7 +499,7 @@ async function sendEventDetailsToAdvertiser(email, _id) { .map((v) => new Date(v).toLocaleDateString("en-US")) .join(", "); - const subject = "פורסם אירוע חדש - hereEvent"; + const subject = "פורסם אירוע חדש - KorePo"; const html = `

    איזה כיף, האירוע שלך פורסם!

    @@ -535,6 +535,7 @@ async function sendEventDetailsToAdvertiser(email, _id) { await mailInterface.sendMail(email, subject, html); } +sendEventDetailsToAdvertiser("sapircafri@gmail.com", "64b7c91892d3e5b7964258e9") module.exports = { newCreateNewEvent, createNewEvent, diff --git a/BL/user.services.js b/BL/user.services.js index c0f02af..0f7a66d 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -53,7 +53,7 @@ async function forgetPassword(email, code) {

    לאפס את הקוד אנא הזן קוד זה בטופס איפוס הסיסמה כדי להגדיר סיסמה חדשה.

    אם לא ביקשת איפוס סיסמה, אנא התעלם מאימייל זה.

    ,תודה

    -

    HereEvent

    +

    KorePo

    ` await mailInterface.sendMail(email, subject, html) From 88d9d7e499ba7c6dcfb03a276f8c8c858e7ee2db Mon Sep 17 00:00:00 2001 From: sapir cafri Date: Mon, 24 Jul 2023 13:25:23 +0300 Subject: [PATCH 114/150] chang email adress --- BL/event.services.js | 1 - 1 file changed, 1 deletion(-) diff --git a/BL/event.services.js b/BL/event.services.js index 3d899e0..6f6fd2b 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -535,7 +535,6 @@ async function sendEventDetailsToAdvertiser(email, _id) { await mailInterface.sendMail(email, subject, html); } -sendEventDetailsToAdvertiser("sapircafri@gmail.com", "64b7c91892d3e5b7964258e9") module.exports = { newCreateNewEvent, createNewEvent, From b2615b1cf1a2a86f16f0719e633a903276c32aa1 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Thu, 20 Jul 2023 16:03:17 +0300 Subject: [PATCH 115/150] jast merg --- errController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/errController.js b/errController.js index 8f734db..b2c2963 100644 --- a/errController.js +++ b/errController.js @@ -12,7 +12,7 @@ const err = (c, m) => { UNAUTHORIZED: err(401, "you need to login first"), WORNG_PASSWORD: err(400, "password is not correct"), PASSWORDS_ARE_NOT_EQUAL: err(400, "passwords are not equal"), - TOKEN_DID_NOT_CREATED: err(401, "token didn't created"), + TOKEN_DID_NOT_CREATED: err(999, "token didn't created"), EVENT_NOT_FOUND: err(400, "event not found"), SETTING_NOT_FOUND: err(400, "setting not found"), CAN_NOT_GET_URL: err(999, "can't get url"), From ca295203f24d2459289ad506e960aad2e0bf14e8 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Tue, 25 Jul 2023 09:32:33 +0300 Subject: [PATCH 116/150] send error mail --- Routes/event.route.js | 2 +- errController.js | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index a93e6ac..7cdfc08 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -182,7 +182,7 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { `${process.env.CLAIENT_DOMAIN}/viewEvent/${event._id}` ); } catch (err) { - sendError(res, err); + sendError(res, err, dataEvent.advertiser.email.trim()); } }); diff --git a/errController.js b/errController.js index b2c2963..df40dd1 100644 --- a/errController.js +++ b/errController.js @@ -1,3 +1,5 @@ +const { sendMail } = require("./BL/emailInterface"); + const err = (c, m) => { return { code: c, message: m }; }; @@ -21,8 +23,11 @@ const err = (c, m) => { IMG_CAN_NOT_BE_PROCESSED:err(999, "can't process image"), }); - const sendError = (res, err) => { + const sendError = (res, err,userMail='') => { console.log(err); + if(err?.code !== 400 && err?.code !== 401) + sendMail(process.env.EROREMAIL,'error in server',`ERROR: ${err?.message||"try agien later"} + user: ${userMail}`) res.status(err.code || 500).send(err.message || "try agien later"); }; module.exports = { From 90a73bf3f3a095982a904022c11a5f527f643034 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Tue, 25 Jul 2023 09:36:04 +0300 Subject: [PATCH 117/150] send error mail --- Routes/event.route.js | 1 - 1 file changed, 1 deletion(-) diff --git a/Routes/event.route.js b/Routes/event.route.js index 7cdfc08..1a26037 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -138,7 +138,6 @@ eventRouter.post("/createvent", multiUpload, async (req, res) => { }); dataEvent.cardImageURL = result.secure_url; } - ``; if (coverImageURL) { const result = await cloudinary.uploader.upload(coverImageURL[0].path, { folder: From 6b901db3a99eb407e0d149e811a26d030816e598 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:12:56 +0300 Subject: [PATCH 118/150] EROREMAIL --- errController.js | 71 +++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/errController.js b/errController.js index df40dd1..db4e331 100644 --- a/errController.js +++ b/errController.js @@ -1,37 +1,40 @@ const { sendMail } = require("./BL/emailInterface"); const err = (c, m) => { - return { code: c, message: m }; - }; - - const errMessage = Object.freeze({ - MISSING_DATA: err(400, "missing data"), - USER_NOT_FOUND: err(400, "user not found"), - USER_NOT_AQCTIVE: err(400, "user not active"), - USER_ALREADY_REGISTERED: err(400, "user already registered"), - USER_NOT_REGISTERED: err(400, "user not registered"), - SUCCESS: err(200, "success"), - UNAUTHORIZED: err(401, "you need to login first"), - WORNG_PASSWORD: err(400, "password is not correct"), - PASSWORDS_ARE_NOT_EQUAL: err(400, "passwords are not equal"), - TOKEN_DID_NOT_CREATED: err(999, "token didn't created"), - EVENT_NOT_FOUND: err(400, "event not found"), - SETTING_NOT_FOUND: err(400, "setting not found"), - CAN_NOT_GET_URL: err(999, "can't get url"), - CAN_NOT_CREATE_FOLDER: err(999, "can't create folder"), - CAN_NOT_CHANGE_FILE_NAME:err(999, "can't chenge file name"), - IMG_CAN_NOT_BE_PROCESSED:err(999, "can't process image"), - }); - - const sendError = (res, err,userMail='') => { - console.log(err); - if(err?.code !== 400 && err?.code !== 401) - sendMail(process.env.EROREMAIL,'error in server',`ERROR: ${err?.message||"try agien later"} - user: ${userMail}`) - res.status(err.code || 500).send(err.message || "try agien later"); - }; - module.exports = { - errMessage, - sendError, - }; - \ No newline at end of file + return { code: c, message: m }; +}; + +const errMessage = Object.freeze({ + MISSING_DATA: err(400, "missing data"), + USER_NOT_FOUND: err(400, "user not found"), + USER_NOT_AQCTIVE: err(400, "user not active"), + USER_ALREADY_REGISTERED: err(400, "user already registered"), + USER_NOT_REGISTERED: err(400, "user not registered"), + SUCCESS: err(200, "success"), + UNAUTHORIZED: err(401, "you need to login first"), + WORNG_PASSWORD: err(400, "password is not correct"), + PASSWORDS_ARE_NOT_EQUAL: err(400, "passwords are not equal"), + TOKEN_DID_NOT_CREATED: err(999, "token didn't created"), + EVENT_NOT_FOUND: err(400, "event not found"), + SETTING_NOT_FOUND: err(400, "setting not found"), + CAN_NOT_GET_URL: err(999, "can't get url"), + CAN_NOT_CREATE_FOLDER: err(999, "can't create folder"), + CAN_NOT_CHANGE_FILE_NAME: err(999, "can't chenge file name"), + IMG_CAN_NOT_BE_PROCESSED: err(999, "can't process image"), +}); + +const sendError = (res, err, userMail = "") => { + console.log(err); + if (err?.code !== 400 && err?.code !== 401) + sendMail( + process.env.EROREMAIL, + "error in server", + `ERROR: ${err?.message || "try again later"} + user: ${userMail}` + ); + res.status(err.code || 500).send(err.message || "try again later"); +}; +module.exports = { + errMessage, + sendError, +}; From 0db3b8f6e319f3c8305b1f2d65ab109c75159d62 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:13:51 +0300 Subject: [PATCH 119/150] typo --- errController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/errController.js b/errController.js index db4e331..4f0427f 100644 --- a/errController.js +++ b/errController.js @@ -19,7 +19,7 @@ const errMessage = Object.freeze({ SETTING_NOT_FOUND: err(400, "setting not found"), CAN_NOT_GET_URL: err(999, "can't get url"), CAN_NOT_CREATE_FOLDER: err(999, "can't create folder"), - CAN_NOT_CHANGE_FILE_NAME: err(999, "can't chenge file name"), + CAN_NOT_CHANGE_FILE_NAME: err(999, "can't change file name"), IMG_CAN_NOT_BE_PROCESSED: err(999, "can't process image"), }); From ed916c8fc0e2ae227e98c1631da8341090a360ac Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 26 Jul 2023 13:40:04 +0300 Subject: [PATCH 120/150] login after registeretion --- BL/user.services.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index c0f02af..0032fde 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -8,9 +8,18 @@ const jwt = require('jsonwebtoken'); async function createUser(newUserData) { const newUser = await userController.create(newUserData); if (newUser) { - return { - newUser: newUser - }; + try { + const token = jwt.sign( + { email: newUser.email, userType: newUser.userType }, + process.env.JWT_SECRET, + { expiresIn: '1440h' }); + console.log(token); + return { user: newUser, token }; + + } catch (error) { + console.error('Error generating Token:', err); + return { error: 'Error generating JWT token' }; + } } else { return {email: newUserData.email} } From 40d163a51e3f75ea1f91b3b6d29ee4d33815e356 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Sun, 30 Jul 2023 23:00:57 +0300 Subject: [PATCH 121/150] add to model tag --- DL/event.model.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/DL/event.model.js b/DL/event.model.js index 6d269d1..8e3ed08 100644 --- a/DL/event.model.js +++ b/DL/event.model.js @@ -102,6 +102,11 @@ const eventSchema = new mongoose.Schema({ type: String, enum: ["published", "waiting-for-approval", "invalid", "deleted"], default: "waiting-for-approval", + }, + tag: { + type: String, + enum: ["event", "food", "attraction","noTag"], + default: "noTag", }, createdAt: { type: Date, From 4bb8ac77ad1d28849d3fe34f79eb967f55536413 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Sun, 6 Aug 2023 10:39:43 +0300 Subject: [PATCH 122/150] add to model user tel and city and approval --- DL/user.controller.js | 6 +++--- DL/user.model.js | 11 ++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/DL/user.controller.js b/DL/user.controller.js index 8a73798..9436bd4 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -5,11 +5,11 @@ const bcrypt = require('bcrypt') async function create(data) { try { - const findEmail = await userData.findOne({email:data.email}); - if (!findEmail) { + const user = await userData.findOne({$or:[ { email:data.email } , { phon: data.phon } ] }); + if (!user) { return await userData.create(data); } else { - return { error: `האימייל ${findEmail.email} נמצא כבר בשימוש`, Email: findEmail.email }; + return { error: `האימייל ${user.email} נמצא כבר בשימוש`, Email: user.email }; } } catch (error) { throw error; diff --git a/DL/user.model.js b/DL/user.model.js index 86450dc..0edff20 100644 --- a/DL/user.model.js +++ b/DL/user.model.js @@ -8,14 +8,23 @@ const userSchema = new mongoose.Schema({ }, password: { type: String, - required: true, }, email: { type: String, }, + city: { + type: String, + }, + phon: { + type: String, + }, + approval: { + type: Boolean + }, userType: { type: String, enum: ['admin', 'regular'], + default: 'regular' }, // favourites: // [{ From f98c0a54246f7b73e10ec633012cca891ababd43 Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 9 Aug 2023 12:38:16 +0300 Subject: [PATCH 123/150] bugfix link = null --- BL/event.services.js | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 9e54707..4bacf26 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -378,7 +378,7 @@ async function findEvent(page, search, user) { }; if (!user || user.userType !== "admin") { - filterModel.status = "published" ; + filterModel.status = "published"; } return pagination(filterModel, page, now); @@ -429,21 +429,20 @@ async function findEventSearch( date: { $elemMatch: { $gte: startDate, $lt: endDate } }, }; - if (typeof location === 'string') { - if(location.length>0){ - matchQuery.place = location - } - } else if(Array.isArray(location)){ + if (typeof location === "string") { + if (location.length > 0) { + matchQuery.place = location; + } + } else if (Array.isArray(location)) { matchQuery.place = { $in: location }; } else { throw errController.errMessage.SETTING_NOT_FOUND; } - - if (!user||user.userType!=="admin") { - matchQuery.status = "published" ; + if (!user || user.userType !== "admin") { + matchQuery.status = "published"; } - + if (categories.length > 0) { matchQuery.categories = { $in: categories }; } @@ -496,7 +495,7 @@ async function sendEventDetailsToAdvertiser(email, _id) { cardImageURL, coverImageURL, } = eventData; - + console.log({ registrationPageURL }); const categoriesNames = await settingService.getCategorysNames(categories); const audiencesNames = await settingService.getAudiencesNames(audiences); const dateTimeString = await date @@ -526,7 +525,11 @@ async function sendEventDetailsToAdvertiser(email, _id) {

    שעות האירוע: ${beginningTime}-${finishTime}

    מיקום האירוע: ${place}

    תיאור האירוע: ${summary}

    -

    דף הרשמה לאירוע: ${registrationPageURL}

    + ${ + registrationPageURL != null + ? `

    דף הרשמה לאירוע: ${registrationPageURL}

    ` + : `

    לינק לדף הרשמה: לא הוזן

    ` + }

    תמונות:

    From 7901e1eecaf25b56dedc0c84a7fc6411102ca29f Mon Sep 17 00:00:00 2001 From: kobikru <75983501+kobikru@users.noreply.github.com> Date: Wed, 9 Aug 2023 18:57:23 +0300 Subject: [PATCH 124/150] Dev --- BL/event.services.js | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index cece61c..88afd2a 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -8,7 +8,11 @@ const { count } = require("../DL/setting.model"); async function newCreateNewEvent(eventData) { const dates = []; let startDate = new Date(eventData.date); - + let finishTimeParts = eventData.finishTime.split(":"); + let finishHours = parseInt(finishTimeParts[0]); + let finishMinutes = parseInt(finishTimeParts[1]); + startDate.setHours(finishHours, finishMinutes); + console.log({ startDate }); if ( eventData.repeatType == "daily" || (eventData.repeatType == "customized" && eventData.personalRepeat == "days") @@ -374,11 +378,12 @@ async function findEvent(page, search, user) { { place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }, ], + date: { $slice: -1 }, // Get the last element of the 'date' array date: { $gte: now }, }; if (!user || user.userType !== "admin") { - filterModel.status = "published" ; + filterModel.status = "published"; } return pagination(filterModel, page, now); @@ -429,21 +434,20 @@ async function findEventSearch( date: { $elemMatch: { $gte: startDate, $lt: endDate } }, }; - if (typeof location === 'string') { - if(location.length>0){ - matchQuery.place = location - } - } else if(Array.isArray(location)){ + if (typeof location === "string") { + if (location.length > 0) { + matchQuery.place = location; + } + } else if (Array.isArray(location)) { matchQuery.place = { $in: location }; } else { throw errController.errMessage.SETTING_NOT_FOUND; } - - if (!user||user.userType!=="admin") { - matchQuery.status = "published" ; + if (!user || user.userType !== "admin") { + matchQuery.status = "published"; } - + if (categories.length > 0) { matchQuery.categories = { $in: categories }; } @@ -496,7 +500,7 @@ async function sendEventDetailsToAdvertiser(email, _id) { cardImageURL, coverImageURL, } = eventData; - + console.log({ registrationPageURL }); const categoriesNames = await settingService.getCategorysNames(categories); const audiencesNames = await settingService.getAudiencesNames(audiences); const dateTimeString = await date @@ -507,7 +511,9 @@ async function sendEventDetailsToAdvertiser(email, _id) { const html = `

    איזה כיף, האירוע שלך פורסם!

    - +

    אלה פרטי האירוע שפרסמת:

    @@ -524,7 +530,11 @@ async function sendEventDetailsToAdvertiser(email, _id) {

    שעות האירוע: ${beginningTime}-${finishTime}

    מיקום האירוע: ${place}

    תיאור האירוע: ${summary}

    -

    דף הרשמה לאירוע: ${registrationPageURL}

    + ${ + registrationPageURL != null + ? `

    דף הרשמה לאירוע: ${registrationPageURL}

    ` + : `

    לינק לדף הרשמה: לא הוזן

    ` + }

    תמונות:

    From 8c5d719d0824ba968c00713bd3ee3f7ee0cc1835 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 10 Aug 2023 23:49:56 +0300 Subject: [PATCH 125/150] fix registeretion form login --- DL/user.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DL/user.controller.js b/DL/user.controller.js index 9436bd4..29f6111 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -9,7 +9,7 @@ async function create(data) { if (!user) { return await userData.create(data); } else { - return { error: `האימייל ${user.email} נמצא כבר בשימוש`, Email: user.email }; + return { error: `האימייל ${user.email} נמצא כבר בשימוש`, email: user.email, userType:user.userType }; } } catch (error) { throw error; From a031c5df7f3d87cf6d41f5783a10a2897e9563f3 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 16 Aug 2023 08:39:38 +0300 Subject: [PATCH 126/150] fix registeretion --- DL/user.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DL/user.controller.js b/DL/user.controller.js index 29f6111..c329f00 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -5,7 +5,7 @@ const bcrypt = require('bcrypt') async function create(data) { try { - const user = await userData.findOne({$or:[ { email:data.email } , { phon: data.phon } ] }); + const user = await userData.findOne({email:data.email}); if (!user) { return await userData.create(data); } else { From 8968923acb433fc6b4b0319808adf64a5ef9b0ee Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 17 Aug 2023 07:55:41 +0300 Subject: [PATCH 127/150] fix saerch to sort start event --- BL/event.services.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 88afd2a..4e0b755 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -3,16 +3,10 @@ const mailInterface = require("./emailInterface"); const eventModel = require("../DL/event.model"); const settingService = require("../BL/setting.services"); const errController = require("../errController"); -const { count } = require("../DL/setting.model"); async function newCreateNewEvent(eventData) { const dates = []; let startDate = new Date(eventData.date); - let finishTimeParts = eventData.finishTime.split(":"); - let finishHours = parseInt(finishTimeParts[0]); - let finishMinutes = parseInt(finishTimeParts[1]); - startDate.setHours(finishHours, finishMinutes); - console.log({ startDate }); if ( eventData.repeatType == "daily" || (eventData.repeatType == "customized" && eventData.personalRepeat == "days") @@ -354,9 +348,16 @@ async function pagination(filterModel, page, startDate, endDate) { cond: { $gte: ["$$date", startDate] }, }, }, + dateOnlyArray: { + $map: { + input: "$dateArray", + as: "date", + in: { $dateToString: { format: "%Y-%m-%d", date: "$$date" } } + } + } }, }, - { $sort: { date: 1 } }, + { $sort: { dateOnlyArray: 1 , beginningTime: 1 } }, { $skip: skipCount }, { $limit: pageSize }, ]; @@ -378,7 +379,6 @@ async function findEvent(page, search, user) { { place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }, ], - date: { $slice: -1 }, // Get the last element of the 'date' array date: { $gte: now }, }; From b6c5e9ec5b519afd996c489d6fa1ba1fa41c4dbf Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 17 Aug 2023 08:05:13 +0300 Subject: [PATCH 128/150] fix saerch to end event --- BL/event.services.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 4e0b755..cbfa927 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -348,16 +348,9 @@ async function pagination(filterModel, page, startDate, endDate) { cond: { $gte: ["$$date", startDate] }, }, }, - dateOnlyArray: { - $map: { - input: "$dateArray", - as: "date", - in: { $dateToString: { format: "%Y-%m-%d", date: "$$date" } } - } - } }, }, - { $sort: { dateOnlyArray: 1 , beginningTime: 1 } }, + { $sort: { date: 1 } }, { $skip: skipCount }, { $limit: pageSize }, ]; From 783f963558656b06258e522d0d7cafa6aeda07d3 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 22 Aug 2023 11:51:36 +0300 Subject: [PATCH 129/150] add tag and add sort to search --- BL/event.services.js | 10 +++++++--- Routes/event.route.js | 7 +++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index cbfa927..07a7c90 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -350,7 +350,7 @@ async function pagination(filterModel, page, startDate, endDate) { }, }, }, - { $sort: { date: 1 } }, + { $sort: { date: 1 ,beginningTime:1, eventName:1} }, { $skip: skipCount }, { $limit: pageSize }, ]; @@ -365,7 +365,7 @@ async function pagination(filterModel, page, startDate, endDate) { return results; } -async function findEvent(page, search, user) { +async function findEvent(page, search, user, tag) { const now = new Date(); const filterModel = { $or: [ @@ -375,6 +375,8 @@ async function findEvent(page, search, user) { date: { $gte: now }, }; + if(tag){filterModel.tag = tag} + if (!user || user.userType !== "admin") { filterModel.status = "published"; } @@ -388,7 +390,8 @@ async function findEventSearch( categories, audiences, page, - user + user, + tag ) { const now = new Date(); // startDate endDate הגדרת @@ -426,6 +429,7 @@ async function findEventSearch( const matchQuery = { date: { $elemMatch: { $gte: startDate, $lt: endDate } }, }; + if(tag){matchQuery.tag = tag} if (typeof location === "string") { if (location.length > 0) { diff --git a/Routes/event.route.js b/Routes/event.route.js index 1a26037..6fd0575 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -62,9 +62,10 @@ const multiUpload = upload.fields([ eventRouter.post("", userToken, async (req, res) => { try { const search = req.body.search || ""; + const tag = req.body.tag const page = parseInt(req.body.page) || 1; const user = req.user; - const data = await eventService.findEvent(page, search, user); + const data = await eventService.findEvent(page, search, user, tag); res.status(200).send(data); } catch (err) { sendError(res, err); @@ -77,6 +78,7 @@ eventRouter.post("/search", userToken, async (req, res) => { const btnDates = req.body.btnDates || ""; const categories = req.body.categories || []; const audiences = req.body.audiences || []; + const tag = req.body.tag const page = parseInt(req.body.page) || 1; const user = req.user; const data = await eventService.findEventSearch( @@ -85,7 +87,8 @@ eventRouter.post("/search", userToken, async (req, res) => { categories, audiences, page, - user + user, + tag ); res.status(200).send(data); } catch (err) { From b0913b55e94c8f5960c4daf9a6635024dca2b7e9 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 22 Aug 2023 12:40:54 +0300 Subject: [PATCH 130/150] fix noTag --- BL/event.services.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 07a7c90..61ff199 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -375,8 +375,14 @@ async function findEvent(page, search, user, tag) { date: { $gte: now }, }; - if(tag){filterModel.tag = tag} - + if(tag=="event"){ + let tagUpdate= tag + tagUpdate = ["event","noTag"] + filterModel.tag = { $in: tagUpdate } + } else if(tag){ + {filterModel.tag = tag} + } + if (!user || user.userType !== "admin") { filterModel.status = "published"; } @@ -429,7 +435,14 @@ async function findEventSearch( const matchQuery = { date: { $elemMatch: { $gte: startDate, $lt: endDate } }, }; - if(tag){matchQuery.tag = tag} + + if(tag=="event"){ + let tagUpdate= tag + tagUpdate = ["event","noTag"] + matchQuery.tag = { $in: tagUpdate } + } else if(tag){ + {matchQuery.tag = tag} + } if (typeof location === "string") { if (location.length > 0) { From b3ef3cc8dbbc449783433f8f32abece0bd41a072 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Tue, 22 Aug 2023 16:50:31 +0300 Subject: [PATCH 131/150] add google register --- BL/user.services.js | 66 ++++++- DL/user.controller.js | 4 +- Routes/user.route.js | 71 +++++-- errController.js | 3 +- package-lock.json | 450 ++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 6 files changed, 571 insertions(+), 24 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 7d736c2..1d3128e 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -3,7 +3,9 @@ const bcrypt = require('bcrypt') const eventService = require("../BL/event.services"); const mailInterface = require('./emailInterface') + const jwt = require('jsonwebtoken'); +const { default: axios } = require("axios"); async function createUser(newUserData) { const newUser = await userController.create(newUserData); @@ -137,6 +139,66 @@ async function checkUserType(token) { } } + async function getGoogleOAuthTokens({ + code, +}){ + try { + const url = "https://oauth2.googleapis.com/token"; + + const values = { + code, + client_id: process.env.GOOGLE_CLIENT_ID, + client_secret: process.env.GOOGLE_CLIENT_SECRET, + redirect_uri: process.env.GOOGLE_OAUTH_REDIRECT_URL, + grant_type: "authorization_code", + }; + + const res = await axios.post( + url, + values, + { + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + } + ); + return res.data; + } catch (error) { + console.error(error.response.data.error); + console.log(error, "Failed to fetch Google Oauth Tokens"); + throw new Error(error.message); + } +} + +async function getGoogleUser({ + id_token, + access_token, +}){ + try { + const res = await axios.get( + `https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=${access_token}`, + { + headers: { + Authorization: `Bearer ${id_token}`, + }, + } + ); + // const user = await axios.get( + // `https://people.googleapis.com/v1/people/me?personFields=addresses,phoneNumbers`, + // { + // headers: { + // Authorization: `Bearer ${access_token}`, + // }, + // } + // ) + // console.log(user.data); + return {res:res.data}; + } catch (error) { + console.log(error, "Error fetching Google user"); + throw new Error(error.message); + } +} + // async function addFavourite(idEvent, idUser){ // const allFavourites= await userController.readOne({_id:idUser}, "favourites -_id") @@ -176,7 +238,9 @@ module.exports = { changePassword, verifyToken, checkUserType, - checkToken + checkToken, + getGoogleOAuthTokens, + getGoogleUser // addFavourite, // removeFavourite } \ No newline at end of file diff --git a/DL/user.controller.js b/DL/user.controller.js index 29f6111..b2a1bd7 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -62,10 +62,10 @@ async function readOne (filter, proj){ // } - module.exports = { create, find, update, - findEmail + findEmail, + readOne } \ No newline at end of file diff --git a/Routes/user.route.js b/Routes/user.route.js index a763418..1099ca2 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -1,15 +1,16 @@ const express = require("express"); const userRouter = express.Router(); const userServices = require("../BL/user.services"); +const userController = require("../DL/user.controller"); const { sendError, errMessage } = require("../errController"); - +const { sign } = require("jsonwebtoken"); userRouter.post("/creatUser", async (req, res) => { try { const user = await userServices.createUser(req.body); res.status(200).send(user); } catch (err) { - return sendError(res, err); + return sendError(res, err); } }); @@ -21,65 +22,98 @@ userRouter.post("/login", async (req, res) => { try { const { email, password } = req.body; const user = await userServices.findUser({ email, password }); - res.status(200).send(user) + res.status(200).send(user); + } catch (err) { + sendError(res, err); + } +}); +userRouter.get("/google-login", async (req, res) => { + try { + const code = req.query.code; + var userToReturn = { email: null, userType: null }; + const { id_token, access_token } = await userServices.getGoogleOAuthTokens({ + code, + }); + const googleUser = await userServices.getGoogleUser({ + id_token, + access_token, + }); + if (!googleUser.res.verified_email) throw errMessage.FORBIDDEN; + if (!userController.readOne({ email: googleUser.res.email })) { + userToReturn = await userController.create({ + email: googleUser.res.email, + password: Date.now(), + fullName: googleUser.res.name, + }); + } else { + userToReturn = await userController.readOne({ email: googleUser.res.email }); + } + const token = sign( + { email: userToReturn.email, userType: userToReturn.userType }, + process.env.JWT_SECRET, + { expiresIn: "1440h" } + ); + res.redirect( + process.env.GOOGLE_OAUTH_REDIRECT_URL_FINAL + `?token=${token}` + ); } catch (err) { sendError(res, err); } }); -userRouter.post('/forgetPassword', async (req, res) => { +userRouter.post("/forgetPassword", async (req, res) => { try { const { email, code } = req.body; await userServices.forgetPassword(email, code); - res.status(200).send("succses") - + res.status(200).send("succses"); } catch (error) { res.status(500).send(error.message); } -}) +}); -userRouter.post('/resetPassword', async (req, res) => { +userRouter.post("/resetPassword", async (req, res) => { try { const { email, newPassword } = req.body; - const passHaschanged = await userServices.changePassword(email, newPassword); + const passHaschanged = await userServices.changePassword( + email, + newPassword + ); if (passHaschanged) { - res.status(200).send("password change") + res.status(200).send("password change"); } } catch (error) { res.status(500).send(error.message); } -}) +}); userRouter.post("/verify", async (req, res) => { try { const token = req.body.aoutherizetion; const verifyUser = await userServices.verifyToken(token); if (verifyUser) { - res.status(200).send(verifyUser) + res.status(200).send(verifyUser); } else { - return res.status(401).send({ error: 'Token not valid' }); + return res.status(401).send({ error: "Token not valid" }); } } catch (err) { sendError(res, err); } }); - userRouter.post("/checkUserType", async (req, res) => { try { const token = req.body.aoutherizetion; const verifyUser = await userServices.checkUserType(token); if (verifyUser) { - res.status(200).send(verifyUser) + res.status(200).send(verifyUser); } else { - return res.status(401).send({ error: 'Token not valid' }); + return res.status(401).send({ error: "Token not valid" }); } } catch (err) { sendError(res, err); } }); - // userRouter.put("/addFavou", async(req,res)=>{ // try{ // console.log(req.body); @@ -91,7 +125,6 @@ userRouter.post("/checkUserType", async (req, res) => { // } // }) - // userRouter.put("/removeFavou", async(req,res)=>{ // try{ // console.log(req.body); @@ -103,6 +136,4 @@ userRouter.post("/checkUserType", async (req, res) => { // } // }) - - module.exports = userRouter; diff --git a/errController.js b/errController.js index 4f0427f..f6ad247 100644 --- a/errController.js +++ b/errController.js @@ -7,6 +7,7 @@ const err = (c, m) => { const errMessage = Object.freeze({ MISSING_DATA: err(400, "missing data"), USER_NOT_FOUND: err(400, "user not found"), + FORBIDDEN: err(403, "forbidden"), USER_NOT_AQCTIVE: err(400, "user not active"), USER_ALREADY_REGISTERED: err(400, "user already registered"), USER_NOT_REGISTERED: err(400, "user not registered"), @@ -25,7 +26,7 @@ const errMessage = Object.freeze({ const sendError = (res, err, userMail = "") => { console.log(err); - if (err?.code !== 400 && err?.code !== 401) + if (err.code !== 400 && err.code !== 401) sendMail( process.env.EROREMAIL, "error in server", diff --git a/package-lock.json b/package-lock.json index 1e93584..974bcf3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", + "googleapis": "^125.0.0", "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.5", "multer": "^1.4.5-lts.1", @@ -1373,6 +1374,14 @@ "node": ">= 10.0.0" } }, + "node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1920,6 +1929,11 @@ "node": ">= 0.8" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -2175,6 +2189,114 @@ "node": ">=10" } }, + "node_modules/gaxios": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.0.tgz", + "integrity": "sha512-EIHuesZxNyIkUGcTQKQPMICyOpDD/bi+LJIJx+NLsSGmnS7N+xCLRX5bi4e9yAu9AlSZdVq+qlyWWVuTh/483w==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/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/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/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/gaxios/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/gaxios/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/gaxios/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/gaxios/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/gcp-metadata": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.0.0.tgz", + "integrity": "sha512-Ozxyi23/1Ar51wjUT2RDklK+3HxqDr8TLBNK8rBBFQ7T85iIGnXnVusauj06QyqCXRFZig8LZC+TUddWbndlpQ==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -2258,12 +2380,115 @@ "node": ">= 6" } }, + "node_modules/google-auth-library": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.0.0.tgz", + "integrity": "sha512-IQGjgQoVUAfOk6khqTVMLvWx26R+yPw9uLyb1MNyMQpdKiKt0Fd9sp4NWoINjyGHR8S3iw12hMTYK7O8J07c6Q==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.0.0", + "gcp-metadata": "^6.0.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-auth-library/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-auth-library/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/googleapis": { + "version": "125.0.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-125.0.0.tgz", + "integrity": "sha512-KsMe3gdbiI6bj4M+Zuwcl7xL0Koz8m0kaq0XQj99YT/4zHsZdaLJqGmYMDyWI4SAScVqkW7TvQftzL7L74x1uQ==", + "dependencies": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.0.0.tgz", + "integrity": "sha512-58iSybJPQZ8XZNMpjrklICefuOuyJ0lMxfKmBqmaC0/xGT4SiOs4BE60LAOOGtBURy1n8fHa2X2YUNFEWWbXyQ==", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.0.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "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==", "optional": true }, + "node_modules/gtoken": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.0.1.tgz", + "integrity": "sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gtoken/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gtoken/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2492,11 +2717,30 @@ "node": ">=0.12.0" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -3757,6 +4001,11 @@ "node": ">= 0.8" } }, + "node_modules/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4994,6 +5243,11 @@ "node-addon-api": "^5.0.0" } }, + "bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -5400,6 +5654,11 @@ } } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -5582,6 +5841,85 @@ "wide-align": "^1.1.2" } }, + "gaxios": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.0.tgz", + "integrity": "sha512-EIHuesZxNyIkUGcTQKQPMICyOpDD/bi+LJIJx+NLsSGmnS7N+xCLRX5bi4e9yAu9AlSZdVq+qlyWWVuTh/483w==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + }, + "dependencies": { + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "https-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "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==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "gcp-metadata": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.0.0.tgz", + "integrity": "sha512-Ozxyi23/1Ar51wjUT2RDklK+3HxqDr8TLBNK8rBBFQ7T85iIGnXnVusauj06QyqCXRFZig8LZC+TUddWbndlpQ==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, "get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -5644,12 +5982,106 @@ "is-glob": "^4.0.1" } }, + "google-auth-library": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.0.0.tgz", + "integrity": "sha512-IQGjgQoVUAfOk6khqTVMLvWx26R+yPw9uLyb1MNyMQpdKiKt0Fd9sp4NWoINjyGHR8S3iw12hMTYK7O8J07c6Q==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.0.0", + "gcp-metadata": "^6.0.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "dependencies": { + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + } + } + }, + "googleapis": { + "version": "125.0.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-125.0.0.tgz", + "integrity": "sha512-KsMe3gdbiI6bj4M+Zuwcl7xL0Koz8m0kaq0XQj99YT/4zHsZdaLJqGmYMDyWI4SAScVqkW7TvQftzL7L74x1uQ==", + "requires": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + } + }, + "googleapis-common": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.0.0.tgz", + "integrity": "sha512-58iSybJPQZ8XZNMpjrklICefuOuyJ0lMxfKmBqmaC0/xGT4SiOs4BE60LAOOGtBURy1n8fHa2X2YUNFEWWbXyQ==", + "requires": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.0.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + } + } + }, "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==", "optional": true }, + "gtoken": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.0.1.tgz", + "integrity": "sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "dependencies": { + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + } + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -5810,11 +6242,24 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "requires": { + "bignumber.js": "^9.0.0" + } + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -6771,6 +7216,11 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 5b074a6..01378cf 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", + "googleapis": "^125.0.0", "jsonwebtoken": "^9.0.0", "mongoose": "^6.10.5", "multer": "^1.4.5-lts.1", From b7ff00b39d10456d029fbaf46b1a200c7498273f Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 24 Aug 2023 11:00:13 +0300 Subject: [PATCH 132/150] fix regestion --- BL/user.services.js | 18 +++++++++++++++--- DL/user.controller.js | 16 +++------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 7d736c2..0e8bc2a 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -6,7 +6,19 @@ const mailInterface = require('./emailInterface') const jwt = require('jsonwebtoken'); async function createUser(newUserData) { - const newUser = await userController.create(newUserData); + const user = await userController.findEmail(newUserData.email); + console.log(user); + let newUser ={} + if (!user) { + newUser = await userController.create(newUserData); + } else if(!user.password){ + changePassword(user.email,newUserData.password) + newUser ={ email: user.email, userType:user.userType }; + } + else { + newUser ={ error: `האימייל ${user.email} נמצא כבר בשימוש`, email: user.email, userType:user.userType }; + } + if (newUser) { try { const token = jwt.sign( @@ -23,10 +35,10 @@ async function createUser(newUserData) { } else { return {email: newUserData.email} } - } + async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { @@ -92,7 +104,7 @@ async function checkToken(req,res,next){ let result = await verifyToken(token) req.user = result } catch (error) { - console.log("waring, line 78 in user.service.js: don't send authorization in header"); + console.log("waring, line 100 in user.service.js: don't send authorization in header"); } next() } diff --git a/DL/user.controller.js b/DL/user.controller.js index c329f00..0c62ad6 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -4,18 +4,8 @@ const bcrypt = require('bcrypt') async function create(data) { - try { - const user = await userData.findOne({email:data.email}); - if (!user) { - return await userData.create(data); - } else { - return { error: `האימייל ${user.email} נמצא כבר בשימוש`, email: user.email, userType:user.userType }; - } - } catch (error) { - throw error; - } - -}; + return await userData.create(data); +} async function find(user) { @@ -39,7 +29,7 @@ async function findEmail(email) { if (foundUser) { return foundUser } else { - throw new Error('Email not found'); + return } } catch (error) { throw new Error('Error finding Email'); From ca681967ff8911689d89c833932ef1ac850b2afa Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 24 Aug 2023 23:41:27 +0300 Subject: [PATCH 133/150] search key words --- BL/event.services.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 61ff199..dc1cee0 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -367,10 +367,15 @@ async function pagination(filterModel, page, startDate, endDate) { async function findEvent(page, search, user, tag) { const now = new Date(); + let wordKeys= search.split(/\s+/) const filterModel = { - $or: [ - { place: { $regex: search, $options: "i" } }, - { eventName: { $regex: search, $options: "i" } }, + $and: [ + ...wordKeys.map((word) => ({ + $or: [ + { place: { $regex: word, $options: "i" } }, + { eventName: { $regex: word, $options: "i" } }, + ], + })), ], date: { $gte: now }, }; From 2078f367f83957641f115875c98f1c8e73dcc0e1 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 29 Aug 2023 09:04:21 +0300 Subject: [PATCH 134/150] fix no sand mail in chage tag --- BL/event.services.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index dc1cee0..af7d908 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -489,9 +489,10 @@ async function findEventByID(id, currentDate) { async function updateStatusEvent(id, newData) { const updateEvent = await eventController.update(id, newData); - const event = await findEventById(id); - console.log("eventtttt", event); - sendEventDetailsToAdvertiser(event.advertiser.email, event._id); + if(newData.status){ + const event = await findEventById(id); + sendEventDetailsToAdvertiser(event.advertiser.email, event._id); + } return updateEvent; } From 4420eb1093342dace6e59bb269d5e46b23b1fb24 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 16 Aug 2023 08:39:38 +0300 Subject: [PATCH 135/150] fix registeretion --- DL/user.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DL/user.controller.js b/DL/user.controller.js index b2a1bd7..d9072b0 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -5,7 +5,7 @@ const bcrypt = require('bcrypt') async function create(data) { try { - const user = await userData.findOne({$or:[ { email:data.email } , { phon: data.phon } ] }); + const user = await userData.findOne({email:data.email}); if (!user) { return await userData.create(data); } else { From c729f6d865087c4726189dfb6c09d840fb128360 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 17 Aug 2023 07:55:41 +0300 Subject: [PATCH 136/150] fix saerch to sort start event --- BL/event.services.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 88afd2a..4e0b755 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -3,16 +3,10 @@ const mailInterface = require("./emailInterface"); const eventModel = require("../DL/event.model"); const settingService = require("../BL/setting.services"); const errController = require("../errController"); -const { count } = require("../DL/setting.model"); async function newCreateNewEvent(eventData) { const dates = []; let startDate = new Date(eventData.date); - let finishTimeParts = eventData.finishTime.split(":"); - let finishHours = parseInt(finishTimeParts[0]); - let finishMinutes = parseInt(finishTimeParts[1]); - startDate.setHours(finishHours, finishMinutes); - console.log({ startDate }); if ( eventData.repeatType == "daily" || (eventData.repeatType == "customized" && eventData.personalRepeat == "days") @@ -354,9 +348,16 @@ async function pagination(filterModel, page, startDate, endDate) { cond: { $gte: ["$$date", startDate] }, }, }, + dateOnlyArray: { + $map: { + input: "$dateArray", + as: "date", + in: { $dateToString: { format: "%Y-%m-%d", date: "$$date" } } + } + } }, }, - { $sort: { date: 1 } }, + { $sort: { dateOnlyArray: 1 , beginningTime: 1 } }, { $skip: skipCount }, { $limit: pageSize }, ]; @@ -378,7 +379,6 @@ async function findEvent(page, search, user) { { place: { $regex: search, $options: "i" } }, { eventName: { $regex: search, $options: "i" } }, ], - date: { $slice: -1 }, // Get the last element of the 'date' array date: { $gte: now }, }; From 68d819b7d7e0ce3f713a9c3470b8ee9256533901 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 17 Aug 2023 08:05:13 +0300 Subject: [PATCH 137/150] fix saerch to end event --- BL/event.services.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 4e0b755..cbfa927 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -348,16 +348,9 @@ async function pagination(filterModel, page, startDate, endDate) { cond: { $gte: ["$$date", startDate] }, }, }, - dateOnlyArray: { - $map: { - input: "$dateArray", - as: "date", - in: { $dateToString: { format: "%Y-%m-%d", date: "$$date" } } - } - } }, }, - { $sort: { dateOnlyArray: 1 , beginningTime: 1 } }, + { $sort: { date: 1 } }, { $skip: skipCount }, { $limit: pageSize }, ]; From 6ea7c0c8fd1505db89ae34f989476849cf6cce1b Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 22 Aug 2023 11:51:36 +0300 Subject: [PATCH 138/150] add tag and add sort to search --- BL/event.services.js | 10 +++++++--- Routes/event.route.js | 7 +++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index cbfa927..07a7c90 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -350,7 +350,7 @@ async function pagination(filterModel, page, startDate, endDate) { }, }, }, - { $sort: { date: 1 } }, + { $sort: { date: 1 ,beginningTime:1, eventName:1} }, { $skip: skipCount }, { $limit: pageSize }, ]; @@ -365,7 +365,7 @@ async function pagination(filterModel, page, startDate, endDate) { return results; } -async function findEvent(page, search, user) { +async function findEvent(page, search, user, tag) { const now = new Date(); const filterModel = { $or: [ @@ -375,6 +375,8 @@ async function findEvent(page, search, user) { date: { $gte: now }, }; + if(tag){filterModel.tag = tag} + if (!user || user.userType !== "admin") { filterModel.status = "published"; } @@ -388,7 +390,8 @@ async function findEventSearch( categories, audiences, page, - user + user, + tag ) { const now = new Date(); // startDate endDate הגדרת @@ -426,6 +429,7 @@ async function findEventSearch( const matchQuery = { date: { $elemMatch: { $gte: startDate, $lt: endDate } }, }; + if(tag){matchQuery.tag = tag} if (typeof location === "string") { if (location.length > 0) { diff --git a/Routes/event.route.js b/Routes/event.route.js index 1a26037..6fd0575 100644 --- a/Routes/event.route.js +++ b/Routes/event.route.js @@ -62,9 +62,10 @@ const multiUpload = upload.fields([ eventRouter.post("", userToken, async (req, res) => { try { const search = req.body.search || ""; + const tag = req.body.tag const page = parseInt(req.body.page) || 1; const user = req.user; - const data = await eventService.findEvent(page, search, user); + const data = await eventService.findEvent(page, search, user, tag); res.status(200).send(data); } catch (err) { sendError(res, err); @@ -77,6 +78,7 @@ eventRouter.post("/search", userToken, async (req, res) => { const btnDates = req.body.btnDates || ""; const categories = req.body.categories || []; const audiences = req.body.audiences || []; + const tag = req.body.tag const page = parseInt(req.body.page) || 1; const user = req.user; const data = await eventService.findEventSearch( @@ -85,7 +87,8 @@ eventRouter.post("/search", userToken, async (req, res) => { categories, audiences, page, - user + user, + tag ); res.status(200).send(data); } catch (err) { From e096cdec7f62ba27409a41a27c0ac5568320dbb9 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 22 Aug 2023 12:40:54 +0300 Subject: [PATCH 139/150] fix noTag --- BL/event.services.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 07a7c90..61ff199 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -375,8 +375,14 @@ async function findEvent(page, search, user, tag) { date: { $gte: now }, }; - if(tag){filterModel.tag = tag} - + if(tag=="event"){ + let tagUpdate= tag + tagUpdate = ["event","noTag"] + filterModel.tag = { $in: tagUpdate } + } else if(tag){ + {filterModel.tag = tag} + } + if (!user || user.userType !== "admin") { filterModel.status = "published"; } @@ -429,7 +435,14 @@ async function findEventSearch( const matchQuery = { date: { $elemMatch: { $gte: startDate, $lt: endDate } }, }; - if(tag){matchQuery.tag = tag} + + if(tag=="event"){ + let tagUpdate= tag + tagUpdate = ["event","noTag"] + matchQuery.tag = { $in: tagUpdate } + } else if(tag){ + {matchQuery.tag = tag} + } if (typeof location === "string") { if (location.length > 0) { From 0a55201ee75c77b9c898a027c5a8179866833965 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 24 Aug 2023 11:00:13 +0300 Subject: [PATCH 140/150] fix regestion --- BL/user.services.js | 18 +++++++++++++++--- DL/user.controller.js | 16 +++------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 1d3128e..c82aa37 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -8,7 +8,19 @@ const jwt = require('jsonwebtoken'); const { default: axios } = require("axios"); async function createUser(newUserData) { - const newUser = await userController.create(newUserData); + const user = await userController.findEmail(newUserData.email); + console.log(user); + let newUser ={} + if (!user) { + newUser = await userController.create(newUserData); + } else if(!user.password){ + changePassword(user.email,newUserData.password) + newUser ={ email: user.email, userType:user.userType }; + } + else { + newUser ={ error: `האימייל ${user.email} נמצא כבר בשימוש`, email: user.email, userType:user.userType }; + } + if (newUser) { try { const token = jwt.sign( @@ -25,10 +37,10 @@ async function createUser(newUserData) { } else { return {email: newUserData.email} } - } + async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { @@ -94,7 +106,7 @@ async function checkToken(req,res,next){ let result = await verifyToken(token) req.user = result } catch (error) { - console.log("waring, line 78 in user.service.js: don't send authorization in header"); + console.log("waring, line 100 in user.service.js: don't send authorization in header"); } next() } diff --git a/DL/user.controller.js b/DL/user.controller.js index d9072b0..582d5ff 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -4,18 +4,8 @@ const bcrypt = require('bcrypt') async function create(data) { - try { - const user = await userData.findOne({email:data.email}); - if (!user) { - return await userData.create(data); - } else { - return { error: `האימייל ${user.email} נמצא כבר בשימוש`, email: user.email, userType:user.userType }; - } - } catch (error) { - throw error; - } - -}; + return await userData.create(data); +} async function find(user) { @@ -39,7 +29,7 @@ async function findEmail(email) { if (foundUser) { return foundUser } else { - throw new Error('Email not found'); + return } } catch (error) { throw new Error('Error finding Email'); From bdeb1cc459ae36dcaea8b4af6462a55fbf81cabd Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Thu, 24 Aug 2023 23:41:27 +0300 Subject: [PATCH 141/150] search key words --- BL/event.services.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index 61ff199..dc1cee0 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -367,10 +367,15 @@ async function pagination(filterModel, page, startDate, endDate) { async function findEvent(page, search, user, tag) { const now = new Date(); + let wordKeys= search.split(/\s+/) const filterModel = { - $or: [ - { place: { $regex: search, $options: "i" } }, - { eventName: { $regex: search, $options: "i" } }, + $and: [ + ...wordKeys.map((word) => ({ + $or: [ + { place: { $regex: word, $options: "i" } }, + { eventName: { $regex: word, $options: "i" } }, + ], + })), ], date: { $gte: now }, }; From 139832e20e904407aed85bc9ed8b5af47ab906b4 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Tue, 29 Aug 2023 09:04:21 +0300 Subject: [PATCH 142/150] fix no sand mail in chage tag --- BL/event.services.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/BL/event.services.js b/BL/event.services.js index dc1cee0..af7d908 100644 --- a/BL/event.services.js +++ b/BL/event.services.js @@ -489,9 +489,10 @@ async function findEventByID(id, currentDate) { async function updateStatusEvent(id, newData) { const updateEvent = await eventController.update(id, newData); - const event = await findEventById(id); - console.log("eventtttt", event); - sendEventDetailsToAdvertiser(event.advertiser.email, event._id); + if(newData.status){ + const event = await findEventById(id); + sendEventDetailsToAdvertiser(event.advertiser.email, event._id); + } return updateEvent; } From 2b7352934b6e4734a36396a83bdbabae35b9ef87 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 6 Sep 2023 14:48:33 +0300 Subject: [PATCH 143/150] add google --- Routes/user.route.js | 4 +++- index.js | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Routes/user.route.js b/Routes/user.route.js index 1099ca2..f7521cb 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -54,7 +54,9 @@ userRouter.get("/google-login", async (req, res) => { { expiresIn: "1440h" } ); res.redirect( - process.env.GOOGLE_OAUTH_REDIRECT_URL_FINAL + `?token=${token}` + req.query.scope.includes("https://www.googleapis.com/auth/user.phonenumbers.read")? + `${process.env.GOOGLE_OAUTH_REDIRECT_URL_FINAL}?token=${token}`: + `https://server-vike.vercel.app/googleRegister?token=${token}` ); } catch (err) { sendError(res, err); diff --git a/index.js b/index.js index 9c46962..f334a28 100644 --- a/index.js +++ b/index.js @@ -7,6 +7,7 @@ const PORT = process.env.PORT || 5000; const cors = require("cors"); const fs = require("fs"); + app.use(express.json()); app.use(cors()); app.use("/upload", express.static("./upload")); From aec48bdd4eb44809c2c26c744b77f148d0064493 Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 6 Sep 2023 19:14:37 +0300 Subject: [PATCH 144/150] update datals user --- BL/user.services.js | 16 +++++++++++++++- DL/user.controller.js | 2 +- Routes/user.route.js | 10 ++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 0e8bc2a..c041ffa 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -37,6 +37,19 @@ async function createUser(newUserData) { } } +async function updateDetails(userForm, userToken) { + if (userToken.email == userForm.email) { + // Filter out empty string values from userForm + const filteredData = {}; + for (const [key, value] of Object.entries(userForm)) { + if (value !== '' && value!==undefined) { + filteredData[key] = value; + } + } + return user = await userController.update(userForm.email, filteredData); + } + return; +} async function findUser(user) { @@ -188,7 +201,8 @@ module.exports = { changePassword, verifyToken, checkUserType, - checkToken + checkToken, + updateDetails // addFavourite, // removeFavourite } \ No newline at end of file diff --git a/DL/user.controller.js b/DL/user.controller.js index 0c62ad6..0a4ae5b 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -19,7 +19,7 @@ async function find(user) { } async function update(email, newData) { - return await userData.updateOne({ email: email}, newData) + return await userData.findOneAndUpdate({ email: email}, newData, { returnDocument: 'after' }) } diff --git a/Routes/user.route.js b/Routes/user.route.js index a763418..4dbffab 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -13,6 +13,16 @@ userRouter.post("/creatUser", async (req, res) => { } }); +userRouter.put("/updateDetails",userServices.checkToken,async(req,res) =>{ +try { + const user = await userServices.updateDetails(req.body,req.user) + res.status(200).send(user) +} catch (error) { + sendError(res, error); + +} +}) + // userRouter.delete('', async (req, res) => { // }); From cd4fb279a1f7609a852af362051727aab9e0d366 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Fri, 8 Sep 2023 10:10:55 +0300 Subject: [PATCH 145/150] fixing gooogle" --- DL/user.controller.js | 4 ++-- Routes/user.route.js | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/DL/user.controller.js b/DL/user.controller.js index 582d5ff..e25536a 100644 --- a/DL/user.controller.js +++ b/DL/user.controller.js @@ -41,8 +41,8 @@ async function read(filter, proj){ } async function readOne (filter, proj){ - let res= await read(filter, proj); - return res[0] + let res= await userData.findOne(filter, proj); + return res } diff --git a/Routes/user.route.js b/Routes/user.route.js index f7521cb..4326988 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -30,7 +30,7 @@ userRouter.post("/login", async (req, res) => { userRouter.get("/google-login", async (req, res) => { try { const code = req.query.code; - var userToReturn = { email: null, userType: null }; + var userToReturn = {} const { id_token, access_token } = await userServices.getGoogleOAuthTokens({ code, }); @@ -40,13 +40,13 @@ userRouter.get("/google-login", async (req, res) => { }); if (!googleUser.res.verified_email) throw errMessage.FORBIDDEN; if (!userController.readOne({ email: googleUser.res.email })) { - userToReturn = await userController.create({ + userToReturn = {...await userController.create({ email: googleUser.res.email, password: Date.now(), fullName: googleUser.res.name, - }); + })} } else { - userToReturn = await userController.readOne({ email: googleUser.res.email }); + userToReturn = {...await userController.readOne({ email: googleUser.res.email })}; } const token = sign( { email: userToReturn.email, userType: userToReturn.userType }, From 90814379b87c760d886d100799091fbb716abe53 Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Fri, 8 Sep 2023 10:21:45 +0300 Subject: [PATCH 146/150] fixing gooogle" --- Routes/user.route.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Routes/user.route.js b/Routes/user.route.js index 4326988..93ebc4b 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -40,14 +40,15 @@ userRouter.get("/google-login", async (req, res) => { }); if (!googleUser.res.verified_email) throw errMessage.FORBIDDEN; if (!userController.readOne({ email: googleUser.res.email })) { - userToReturn = {...await userController.create({ + userToReturn = await userController.create({ email: googleUser.res.email, password: Date.now(), fullName: googleUser.res.name, - })} + }) } else { - userToReturn = {...await userController.readOne({ email: googleUser.res.email })}; + userToReturn = await userController.readOne({ email: googleUser.res.email }); } + console.log(userToReturn); const token = sign( { email: userToReturn.email, userType: userToReturn.userType }, process.env.JWT_SECRET, From 167e8214342c891df9d2d4cab7a8e496fb66c82a Mon Sep 17 00:00:00 2001 From: matanelvatkin Date: Wed, 13 Sep 2023 11:39:32 +0300 Subject: [PATCH 147/150] fixing google register --- Routes/user.route.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Routes/user.route.js b/Routes/user.route.js index 6b04958..37583c3 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -49,8 +49,8 @@ userRouter.get("/google-login", async (req, res) => { access_token, }); if (!googleUser.res.verified_email) throw errMessage.FORBIDDEN; - if (!userController.readOne({ email: googleUser.res.email })) { - userToReturn = await userController.create({ + if (!await userController.readOne({ email: googleUser.res.email })) { + userToReturn = await userController.create({ email: googleUser.res.email, password: Date.now(), fullName: googleUser.res.name, @@ -58,7 +58,6 @@ userRouter.get("/google-login", async (req, res) => { } else { userToReturn = await userController.readOne({ email: googleUser.res.email }); } - console.log(userToReturn); const token = sign( { email: userToReturn.email, userType: userToReturn.userType }, process.env.JWT_SECRET, From 69c0d4dde18b195d06280e8a44d147f18440c6ed Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 13 Sep 2023 22:38:35 +0300 Subject: [PATCH 148/150] remove change pasword in creatUser --- BL/user.services.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 039191a..86fb383 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -9,13 +9,9 @@ const { default: axios } = require("axios"); async function createUser(newUserData) { const user = await userController.findEmail(newUserData.email); - console.log(user); let newUser ={} if (!user) { newUser = await userController.create(newUserData); - } else if(!user.password){ - changePassword(user.email,newUserData.password) - newUser ={ email: user.email, userType:user.userType }; } else { newUser ={ error: `האימייל ${user.email} נמצא כבר בשימוש`, email: user.email, userType:user.userType }; @@ -27,11 +23,10 @@ async function createUser(newUserData) { { email: newUser.email, userType: newUser.userType }, process.env.JWT_SECRET, { expiresIn: '1440h' }); - console.log(token); return { user: newUser, token }; } catch (error) { - console.error('Error generating Token:', err); + console.error('Error generating Token:', error); return { error: 'Error generating JWT token' }; } } else { From 4c2f0e949e593eb7189feff042cd6dccebaaa92c Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 13 Sep 2023 23:37:21 +0300 Subject: [PATCH 149/150] remove chack emailupdateDetails --- BL/user.services.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index 86fb383..ab8b5ed 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -35,17 +35,13 @@ async function createUser(newUserData) { } async function updateDetails(userForm, userToken) { - if (userToken.email == userForm.email) { - // Filter out empty string values from userForm const filteredData = {}; for (const [key, value] of Object.entries(userForm)) { if (value !== '' && value!==undefined) { filteredData[key] = value; } } - return user = await userController.update(userForm.email, filteredData); - } - return; + return user = await userController.update(userToken.email, filteredData); } From 17cf1c002bc8bf4ac78feb3ce8f3b942cf9e6b7a Mon Sep 17 00:00:00 2001 From: Yair Ken Date: Wed, 27 Sep 2023 14:30:18 +0300 Subject: [PATCH 150/150] new login and remove pasword in entergoogle --- BL/user.services.js | 6 +----- Routes/user.route.js | 5 ++--- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/BL/user.services.js b/BL/user.services.js index ab8b5ed..2dc45ce 100644 --- a/BL/user.services.js +++ b/BL/user.services.js @@ -35,6 +35,7 @@ async function createUser(newUserData) { } async function updateDetails(userForm, userToken) { + // Filter out empty string values from userForm const filteredData = {}; for (const [key, value] of Object.entries(userForm)) { if (value !== '' && value!==undefined) { @@ -49,16 +50,11 @@ async function findUser(user) { const foundUser = await userController.find(user); if (foundUser) { try { - const isPasswordMatch = await bcrypt.compare(user.password, foundUser.password); - if (isPasswordMatch) { const token = jwt.sign( { email: user.email, userType: foundUser.userType }, process.env.JWT_SECRET, { expiresIn: '1440h' }); return { user: foundUser, token }; - } else { - return ('סיסמא שגויה'); - } } catch (err) { console.error('Error generating Token:', err); return { error: 'Error generating JWT token' }; diff --git a/Routes/user.route.js b/Routes/user.route.js index 37583c3..9c7c1c6 100644 --- a/Routes/user.route.js +++ b/Routes/user.route.js @@ -30,8 +30,8 @@ try { userRouter.post("/login", async (req, res) => { try { - const { email, password } = req.body; - const user = await userServices.findUser({ email, password }); + const { email } = req.body; + const user = await userServices.findUser({ email }); res.status(200).send(user); } catch (err) { sendError(res, err); @@ -52,7 +52,6 @@ userRouter.get("/google-login", async (req, res) => { if (!await userController.readOne({ email: googleUser.res.email })) { userToReturn = await userController.create({ email: googleUser.res.email, - password: Date.now(), fullName: googleUser.res.name, }) } else {