diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..9212d02 --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +NODE_ENV= +HTTP_PORT= +OPENWEATHER_APPID= +AZURE_CLIENT_ID= +AZURE_CLIENT_SECRET= +AZURE_TENANT_ID= diff --git a/.gitignore b/.gitignore index ceaea36..1866d01 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,4 @@ dist .yarn/install-state.gz .pnp.* +certs/ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index b9c199c..0000000 --- a/LICENSE +++ /dev/null @@ -1,8 +0,0 @@ -ISC License: - -Copyright (c) 2004-2010 by Internet Systems Consortium, Inc. ("ISC") -Copyright (c) 1995-2003 by Internet Software Consortium - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/events/s-er-1431-00@liveconcordia.onmicrosoft.com.json b/events/s-er-1431-00@liveconcordia.onmicrosoft.com.json new file mode 100644 index 0000000..f271188 --- /dev/null +++ b/events/s-er-1431-00@liveconcordia.onmicrosoft.com.json @@ -0,0 +1,124 @@ +{ + "value": [ + { + "subject": "Team Standup Meeting", + "start": { + "dateTime": "2024-04-12T08:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T09:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-00 Open Space" + }, + "organizer": { + "emailAddress": { + "address": "organizer1@example.com", + "name": "John Doe" + } + } + }, + { + "subject": "Project Discussion", + "start": { + "dateTime": "2024-04-12T10:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-00 Open Space" + }, + "organizer": { + "emailAddress": { + "address": "organizer2@example.com", + "name": "Jane Smith" + } + } + }, + { + "subject": "Client Call", + "start": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-00 Open Space" + }, + "organizer": { + "emailAddress": { + "address": "organizer3@example.com", + "name": "Alice Johnson" + } + } + }, + { + "subject": "Lunch Break", + "start": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T13:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-00 Open Space" + }, + "organizer": { + "emailAddress": { + "address": "organizer4@example.com", + "name": "Bob White" + } + } + }, + { + "subject": "Design Review", + "start": { + "dateTime": "2024-04-12T14:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T15:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-00 Open Space" + }, + "organizer": { + "emailAddress": { + "address": "organizer5@example.com", + "name": "Clara Green" + } + } + }, + { + "subject": "Wrap-Up Meeting", + "start": { + "dateTime": "2024-04-12T16:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T17:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-00 Open Space" + }, + "organizer": { + "emailAddress": { + "address": "organizer6@example.com", + "name": "Daniel Blue" + } + } + } + ] +} diff --git a/events/s-er-1431-03@liveconcordia.onmicrosoft.com.json b/events/s-er-1431-03@liveconcordia.onmicrosoft.com.json new file mode 100644 index 0000000..778d10f --- /dev/null +++ b/events/s-er-1431-03@liveconcordia.onmicrosoft.com.json @@ -0,0 +1,124 @@ +{ + "value": [ + { + "subject": "Team Standup Meeting", + "start": { + "dateTime": "2024-04-12T08:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T09:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-03 Visualization Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer1@example.com", + "name": "John Doe" + } + } + }, + { + "subject": "Project Discussion", + "start": { + "dateTime": "2024-04-12T10:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-03 Visualization Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer2@example.com", + "name": "Jane Smith" + } + } + }, + { + "subject": "Client Call", + "start": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-03 Visualization Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer3@example.com", + "name": "Alice Johnson" + } + } + }, + { + "subject": "Lunch Break", + "start": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T13:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-03 Visualization Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer4@example.com", + "name": "Bob White" + } + } + }, + { + "subject": "Design Review", + "start": { + "dateTime": "2024-04-12T14:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T15:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-03 Visualization Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer5@example.com", + "name": "Clara Green" + } + } + }, + { + "subject": "Wrap-Up Meeting", + "start": { + "dateTime": "2024-04-12T16:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T17:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-03 Visualization Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer6@example.com", + "name": "Daniel Blue" + } + } + } + ] +} diff --git a/events/s-er-1431-33@liveconcordia.onmicrosoft.com.json b/events/s-er-1431-33@liveconcordia.onmicrosoft.com.json new file mode 100644 index 0000000..a8676d0 --- /dev/null +++ b/events/s-er-1431-33@liveconcordia.onmicrosoft.com.json @@ -0,0 +1,124 @@ +{ + "value": [ + { + "subject": "Team Standup Meeting", + "start": { + "dateTime": "2024-04-12T08:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T09:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-33 Ideation Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer1@example.com", + "name": "John Doe" + } + } + }, + { + "subject": "Project Discussion", + "start": { + "dateTime": "2024-04-12T10:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-33 Ideation Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer2@example.com", + "name": "Jane Smith" + } + } + }, + { + "subject": "Client Call", + "start": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-33 Ideation Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer3@example.com", + "name": "Alice Johnson" + } + } + }, + { + "subject": "Lunch Break", + "start": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T13:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-33 Ideation Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer4@example.com", + "name": "Bob White" + } + } + }, + { + "subject": "Design Review", + "start": { + "dateTime": "2024-04-12T14:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T15:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-33 Ideation Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer5@example.com", + "name": "Clara Green" + } + } + }, + { + "subject": "Wrap-Up Meeting", + "start": { + "dateTime": "2024-04-12T16:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T17:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-33 Ideation Lab" + }, + "organizer": { + "emailAddress": { + "address": "organizer6@example.com", + "name": "Daniel Blue" + } + } + } + ] +} diff --git a/events/s-er-1431-37@liveconcordia.onmicrosoft.com.json b/events/s-er-1431-37@liveconcordia.onmicrosoft.com.json new file mode 100644 index 0000000..a223e5b --- /dev/null +++ b/events/s-er-1431-37@liveconcordia.onmicrosoft.com.json @@ -0,0 +1,124 @@ +{ + "value": [ + { + "subject": "Team Standup Meeting", + "start": { + "dateTime": "2024-04-12T08:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T09:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-37 Multipurpose Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer1@example.com", + "name": "John Doe" + } + } + }, + { + "subject": "Project Discussion", + "start": { + "dateTime": "2024-04-12T10:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-37 Multipurpose Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer2@example.com", + "name": "Jane Smith" + } + } + }, + { + "subject": "Client Call", + "start": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-37 Multipurpose Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer3@example.com", + "name": "Alice Johnson" + } + } + }, + { + "subject": "Lunch Break", + "start": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T13:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-37 Multipurpose Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer4@example.com", + "name": "Bob White" + } + } + }, + { + "subject": "Design Review", + "start": { + "dateTime": "2024-04-12T14:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T15:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-37 Multipurpose Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer5@example.com", + "name": "Clara Green" + } + } + }, + { + "subject": "Wrap-Up Meeting", + "start": { + "dateTime": "2024-04-12T16:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T17:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-37 Multipurpose Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer6@example.com", + "name": "Daniel Blue" + } + } + } + ] +} diff --git a/events/s-er-1431-39@liveconcordia.onmicrosoft.com.json b/events/s-er-1431-39@liveconcordia.onmicrosoft.com.json new file mode 100644 index 0000000..bd253dc --- /dev/null +++ b/events/s-er-1431-39@liveconcordia.onmicrosoft.com.json @@ -0,0 +1,124 @@ +{ + "value": [ + { + "subject": "Team Standup Meeting", + "start": { + "dateTime": "2024-04-12T08:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T09:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-39 Conference Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer1@example.com", + "name": "John Doe" + } + } + }, + { + "subject": "Project Discussion", + "start": { + "dateTime": "2024-04-12T10:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-39 Conference Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer2@example.com", + "name": "Jane Smith" + } + } + }, + { + "subject": "Client Call", + "start": { + "dateTime": "2024-04-12T11:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-39 Conference Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer3@example.com", + "name": "Alice Johnson" + } + } + }, + { + "subject": "Lunch Break", + "start": { + "dateTime": "2024-04-12T12:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T13:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-39 Conference Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer4@example.com", + "name": "Bob White" + } + } + }, + { + "subject": "Design Review", + "start": { + "dateTime": "2024-04-12T14:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T15:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-39 Conference Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer5@example.com", + "name": "Clara Green" + } + } + }, + { + "subject": "Wrap-Up Meeting", + "start": { + "dateTime": "2024-04-12T16:00:00", + "timeZone": "Eastern Standard Time" + }, + "end": { + "dateTime": "2024-04-12T17:00:00", + "timeZone": "Eastern Standard Time" + }, + "location": { + "displayName": "ER 1431-39 Conference Room" + }, + "organizer": { + "emailAddress": { + "address": "organizer6@example.com", + "name": "Daniel Blue" + } + } + } + ] +} diff --git a/frontend-dev/vwss-frontend/frontend.js b/frontend-dev/vwss-frontend/frontend.js new file mode 100644 index 0000000..8b4f607 --- /dev/null +++ b/frontend-dev/vwss-frontend/frontend.js @@ -0,0 +1,240 @@ +function populateTable(resourceUPN, events, container) { + console.log(events); + // Create a wrapper for the resource and its events + const resourceWrapper = document.createElement('div'); + resourceWrapper.className = 'resource-wrapper'; + + // Create a row for the resource title + const titleRow = document.createElement('div'); + titleRow.className = 'title-row'; + + switch (resourceUPN.split("@")[0]) { + case "s-er-1431-00": + titleRow.innerHTML = 'ER 1431-00 Open Space'; + break; + case "s-er-1431-03": + titleRow.innerHTML = 'ER 1431-03 Visualization Lab'; + break; + case "s-er-1431-33": + titleRow.innerHTML = 'ER 1431-33 Ideation Lab'; + break; + case "s-er-1431-37": + titleRow.innerHTML = 'ER 1431-37 Multipurpose Room'; + break; + case "s-er-1431-39": + titleRow.innerHTML = 'ER 1431-39 Conference Room'; + break; + } + resourceWrapper.appendChild(titleRow); + + // Create a grid for events + const eventGrid = document.createElement('div'); + eventGrid.className = 'event-row'; + + events.forEach((event, index) => { + const eventCell = document.createElement('div'); + eventCell.className = 'flex-cell'; + const title = event.subject; + const organizer = event.organizer.emailAddress.name; + const startTime = formatUTCTime(event.start.dateTime + 'Z'); + const endTime = formatUTCTime(event.end.dateTime + 'Z'); + + const titleDiv = document.createElement('div'); + titleDiv.textContent = title; + + const organizerDiv = document.createElement('div'); + organizerDiv.textContent = organizer; + organizerDiv.className = 'organizer'; + + const timeDiv = document.createElement('div'); + timeDiv.className = 'time-range'; + timeDiv.innerHTML = `${startTime} - ${endTime}`; + + eventCell.appendChild(titleDiv); + eventCell.appendChild(organizerDiv); + eventCell.appendChild(timeDiv); + eventGrid.appendChild(eventCell); + }); + + resourceWrapper.appendChild(eventGrid); + container.appendChild(resourceWrapper); +} + +function formatUTCTime(date) { + const etDate = new Date(date.toLocaleString("en-US", { timeZone: "America/New_York" })); + const hours = etDate.getHours(); + const minutes = etDate.getMinutes().toString().padStart(2, '0'); + + return `${hours}:${minutes}`; +} + +async function fetchAllEvents() { + console.log("fetching events"); + const response = await fetch('http://localhost:8080/api/events'); + const allEvents = await response.json(); + + console.log(allEvents); + + + const resourcesContainer = document.getElementById('resources-container'); + resourcesContainer.innerHTML = ''; + const keys = Object.keys(allEvents); + + keys.forEach((key) => { + console.log(allEvents[key]); + populateTable(key, allEvents[key].value, resourcesContainer); + }); +} + + +function updateTime(showSeparator) { + let timeString = formatUTCTime(new Date()); + + if (!showSeparator) { + timeString = timeString.replace(':', ' '); + } + document.getElementById('time').innerHTML = timeString; + +} + +function updateFontSize(elementId) { + const element = document.getElementById(elementId); + const textLength = element.textContent.length; + + if (textLength <= 83) { + element.style.fontSize = '5em'; + } else if (textLength <= 166) { + element.style.fontSize = '4em'; + } else { + element.style.fontSize = '3em'; + } +} + + +// Function to fetch and display a quote +async function fetchAndDisplayQuote() { + try { + const response = await fetch('http://localhost:8080/api/quotes'); + + if (response.ok) { + const data = await response.json(); + const quotes = data.results; + const randomIndex = Math.floor(Math.random() * quotes.length); + const randomQuote = quotes[randomIndex]; + + document.getElementById('quote').innerHTML = `${randomQuote.content}`; + updateFontSize('quote'); + document.getElementById('author').innerHTML = `${randomQuote.author}`; + + } else { + console.error('Failed to fetch data'); + } + } catch (error) { + console.error('An error occurred:', error); + } +} + +// Fetch Current Weather +async function fetchWeather() { + const response = await fetch('http://localhost:8080/api/weather'); + const data = await response.json(); + if (data.cod === 200) { + const temperature = data.main.temp; + const description = data.weather[0].description; + const iconCode = data.weather[0].icon; + const iconUrl = `https://openweathermap.org/img/wn/${iconCode}.png` + + document.getElementById("weather-icon-container").innerHTML = `Weather Icon`; + document.getElementById("temperature").innerHTML = `${temperature}°`; + document.getElementById("description").innerHTML = `${description}`; + } else { + document.getElementById("weather").innerText = 'Weather data unavailable'; + } +} + +// Display Current Time +function displayTime() { + const now = new Date(); + const timeHtml = formatUTCTime(now); + document.getElementById("time").innerHTML = timeHtml; + setTimeout(displayTime, 60000); + +} + +// Slideshow + +async function fetchSlideshowImages() { + try { + const response = await fetch('http://localhost:8080/api/slideshow'); + if (!response.ok) { + throw new Error('Failed to fetch slideshow images'); + } + const images = await response.json(); + updateSlideshow(images); + } catch (error) { + console.error('Error fetching slideshow images:', error); + } +} + +function createSlideshowElement(src) { + const img = document.createElement('img'); + // img.src = src; + img.src = `http://localhost:8080${src}`; + img.className = 'slideshow-img'; + img.style.width = '100%'; + img.style.maxHeight = '100vh'; + img.style.objectFit = 'cover'; + const filename = src.split('/').pop().split('.')[0]; // Extracts filename without extension + + // Set the filename as the alt text + img.alt = filename; + + // If you also want to set the title attribute + img.title = filename; + return img; +} + +let currentIndex = 0; +function updateSlideshow(images) { + if (images.length === 0) { + console.log('No images found for the slideshow.'); + return; + } + + const slideshowContainer = document.getElementById('slideshow'); + slideshowContainer.innerHTML = ''; + const imageElement = createSlideshowElement(images[currentIndex]); + slideshowContainer.appendChild(imageElement); + + // Wait a little bit before starting the fade-in to ensure it's loaded + setTimeout(() => { imageElement.style.opacity = '1'; }, 100); + + // Clean up the previous image after the new one has faded in + setTimeout(() => { + while (slideshowContainer.children.length > 1) { + slideshowContainer.removeChild(slideshowContainer.firstChild); + } + }, 100); + + currentIndex = (currentIndex + 1) % images.length; + setTimeout(() => updateSlideshow(images), 30000); // Change image every 5 seconds +} + +let showSeparator = true; + +fetchAndDisplayQuote(); +setInterval(fetchAndDisplayQuote, 60 * 60 * 1000); + +fetchWeather(); +setInterval(fetchWeather, 15 * 60 * 1000); + +updateTime(showSeparator); +setInterval(() => { + updateTime(showSeparator); + showSeparator = !showSeparator; +}, 1000); + +fetchSlideshowImages(); + +fetchAllEvents(); +setInterval(fetchAllEvents, 5 * 60 * 1000); diff --git a/frontend-dev/vwss-frontend/index.html b/frontend-dev/vwss-frontend/index.html new file mode 100644 index 0000000..a49d2ee --- /dev/null +++ b/frontend-dev/vwss-frontend/index.html @@ -0,0 +1,47 @@ + + + + + + + NGCI Daily Schedule + + + + + +
+
+
+ +
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + diff --git a/frontend-dev/vwss-frontend/package-lock.json b/frontend-dev/vwss-frontend/package-lock.json new file mode 100644 index 0000000..4546465 --- /dev/null +++ b/frontend-dev/vwss-frontend/package-lock.json @@ -0,0 +1,758 @@ +{ + "name": "vwss-frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vwss-frontend", + "version": "0.0.0", + "devDependencies": { + "vite": "^5.1.6" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", + "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", + "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", + "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", + "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", + "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", + "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", + "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", + "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", + "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", + "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", + "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", + "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", + "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.36.tgz", + "integrity": "sha512-/n7eumA6ZjFHAsbX30yhHup/IMkOmlmvtEi7P+6RMYf+bGJSUHc3geH4a0NSZxAz/RJfiS9tooCTs9LAVYUZKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", + "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.13.0", + "@rollup/rollup-android-arm64": "4.13.0", + "@rollup/rollup-darwin-arm64": "4.13.0", + "@rollup/rollup-darwin-x64": "4.13.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", + "@rollup/rollup-linux-arm64-gnu": "4.13.0", + "@rollup/rollup-linux-arm64-musl": "4.13.0", + "@rollup/rollup-linux-riscv64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-musl": "4.13.0", + "@rollup/rollup-win32-arm64-msvc": "4.13.0", + "@rollup/rollup-win32-ia32-msvc": "4.13.0", + "@rollup/rollup-win32-x64-msvc": "4.13.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.1.0.tgz", + "integrity": "sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vite": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", + "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + } + } +} diff --git a/frontend-dev/vwss-frontend/package.json b/frontend-dev/vwss-frontend/package.json new file mode 100644 index 0000000..afafff4 --- /dev/null +++ b/frontend-dev/vwss-frontend/package.json @@ -0,0 +1,14 @@ +{ + "name": "vwss-frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "vite": "^5.1.6" + } +} diff --git a/frontend-dev/vwss-frontend/public/favicon.ico b/frontend-dev/vwss-frontend/public/favicon.ico new file mode 100644 index 0000000..eace644 Binary files /dev/null and b/frontend-dev/vwss-frontend/public/favicon.ico differ diff --git a/frontend-dev/vwss-frontend/public/ngci-logo-white-wide.svg b/frontend-dev/vwss-frontend/public/ngci-logo-white-wide.svg new file mode 100755 index 0000000..6149437 --- /dev/null +++ b/frontend-dev/vwss-frontend/public/ngci-logo-white-wide.svg @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend-dev/vwss-frontend/style.css b/frontend-dev/vwss-frontend/style.css new file mode 100644 index 0000000..38c081e --- /dev/null +++ b/frontend-dev/vwss-frontend/style.css @@ -0,0 +1,178 @@ +/* schedule-styles.css */ +:root { + --font-size: 1vw; + --width: 65vw; + --img-margin: -2vw; +} + +@media (orientation: landscape) { + :root { + --font-size: 1vh; + --width: 65vh; + --img-margin: -2vh; + } +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html { + height: 100%; + font-size: var(--font-size); +} + +body { + height: 100%; + font-family: "Calibri", sans-serif; + background-color: black; + color: #FFFFFF; +} + +.header { + text-align: center; + width: 100%; +} + +.resource-wrapper { + /* display: flex; */ + /* flex-direction: column; */ + /* justify-content: space-around; */ + width: 100%; + /* overflow-x: hidden; */ +} + +.title-row { + font-weight: bold; + font-size: 3em; + padding: 0.25em 0; +} + +.event-row { + display: flex; + flex-wrap: nowrap; + overflow-x: hidden; + font-size: 3em; + } + +.flex-row { + display: flex; + flex-direction: row; +} + +.flex-cell { + display: flex; + flex-direction: column; + justify-content: start; + align-items: left; + flex: 0 0 633px; + margin-right: 0.5em; +} + +.organizer { + font-weight: lighter; + font-style: italic; +} +#horizontal-logo { + width: 100%; + /* margin: 2em 0 1em 0; */ +} + +#resources-container { + width: 100%; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: start; +} + +.time-range { + font-weight: lighter; +} + +#grid { + display: grid; + grid-template-columns: 1fr 2fr 1fr; + gap: 1em; + height: 100%; +} + +#schedule-container { + height: 100%; + grid-column: 1; + padding: 2em; +} + +#homepage-container { + grid-column: 3; + padding: 2em; + text-align: center; + display: flex; + flex-direction: column; + height: 100%; +} + +.top-container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 50%; +} + +#time-weather-container { + display: grid; + grid-template-columns: 1fr 1fr; + align-items: center; + width: 100%; + height: 100%; + font-size: 5em; + font-weight: bold; +} + +.time { + font-family: 'Calibri', sans-serif; +} + +.separator { + font-family: 'Courier New', monospace; +} + +#slideshow { + grid-column: 2; + overflow: hidden; +} + +.slideshow-img { + transition: opacity 1s ease-in-out; + opacity: 0; +} + +#weather-icon { + align-self: end; /* Aligns the icon to the end of its grid cell */ + width: 2em; + margin: var(--img-margin); +} + +#temperature { + align-self: start; /* Aligns the temperature text to the start of its grid cell */ +} +#description { + font-weight: lighter; +} + +#quote { + font-size: 5em; + margin: 0 10%; + max-height: 40vh; + text-align: left; +} + +#author { + margin-top: 2.5%; + font-size: 4em; + width: 75%; + text-align: right; +} diff --git a/frontend-dev/vwss-frontend/vite.config.js b/frontend-dev/vwss-frontend/vite.config.js new file mode 100644 index 0000000..d72136e --- /dev/null +++ b/frontend-dev/vwss-frontend/vite.config.js @@ -0,0 +1,9 @@ +import { defineConfig } from 'vite'; + +export default defineConfig({ + server: { + proxy: { + '/api': 'http://localhost:8080', + }, + }, +}); diff --git a/msGraphHelper.js b/msGraphHelper.js new file mode 100644 index 0000000..104b2f5 --- /dev/null +++ b/msGraphHelper.js @@ -0,0 +1,109 @@ +require('isomorphic-fetch'); +// const { PublicClientApplication } = require('@azure/msal-node'); +// const { TokenCredentialAuthenticationProvider } = require('@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials'); +const graph = require('@microsoft/microsoft-graph-client'); + +const azure = require('@azure/identity'); +const authProviders = require('@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials'); + +let _settings = undefined; +let _clientSecretCredential = undefined; +let _appClient = undefined; + +function initializeGraphForAppOnlyAuth(settings) { + // Ensure settings isn't null + if (!settings) { + throw new Error('Settings cannot be undefined'); + } + + _settings = settings; + + // Ensure settings isn't null + if (!_settings) { + throw new Error('Settings cannot be undefined'); + } + + if (!_clientSecretCredential) { + _clientSecretCredential = new azure.ClientSecretCredential( + _settings.tenantId, + _settings.clientId, + _settings.clientSecret + ); + } + + if (!_appClient) { + const authProvider = new authProviders.TokenCredentialAuthenticationProvider( + _clientSecretCredential, { + scopes: ['https://graph.microsoft.com/.default'] + }); + + _appClient = graph.Client.initWithMiddleware({ + authProvider: authProvider + }); + } +} +module.exports.initializeGraphForAppOnlyAuth = initializeGraphForAppOnlyAuth; + +let _userClient = undefined; + +function initializeGraphForUserAuth(settings, deviceCodeCallback) { + if (!settings) { + throw new Error('Settings cannot be undefined'); + } + + const msalConfig = { + auth: { + clientId: settings.clientId, + authority: `https://login.microsoftonline.com/${settings.tenantId}` + } + }; + + const pca = new PublicClientApplication(msalConfig); + + const deviceCodeRequest = { + scopes: settings.graphUserScopes, + + deviceCodeCallback: (response) => { + // console.log(response.message); + deviceCodeCallback(response); + }, // Your callback function to handle the message + scopes: settings.graphUserScopes + }; + + pca.acquireTokenByDeviceCode(deviceCodeRequest).then((response) => { + const authProvider = new TokenCredentialAuthenticationProvider(pca, { + scopes: settings.graphUserScopes, + getToken: async () => response.accessToken + }); + + _userClient = graph.Client.initWithMiddleware({ authProvider }); + }).catch((error) => { + console.error("Error acquiring token by device code", error); + }); +} +module.exports.initializeGraphForUserAuth = initializeGraphForUserAuth; + +async function getCalendarView(resourceUPN, startDateTime, endDateTime) { + if (!_userClient) { + throw new Error('Graph has not been initialized for user auth'); + } + + try { + const apiUrl = `/users/${resourceUPN}/calendarView?startDateTime=${startDateTime}&endDateTime=${endDateTime}`; + console.log(apiUrl); + const calendarView = + await _userClient?.api(apiUrl) + .get(); + + if (calendarView && calendarView.value) { + return calendarView.value; + } else { + return []; + } + } catch (error) { + console.error('Error in getCalendarView:', error); + } +} + +module.exports.getCalendarView = getCalendarView; + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b647d0a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1536 @@ +{ + "name": "vizwall_screensaver", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vizwall_screensaver", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@azure/identity": "^3.3.2", + "@azure/msal-node": "^2.6.1", + "@microsoft/microsoft-graph-client": "^3.0.7", + "cors": "^2.8.5", + "dotenv": "^16.3.1", + "express": "^4.18.2", + "fs": "^0.0.1-security", + "http": "^0.0.1-security", + "http-proxy-middleware": "^2.0.6", + "https": "^1.0.0", + "isomorphic-fetch": "^3.0.0" + } + }, + "node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.0.tgz", + "integrity": "sha512-OuDVn9z2LjyYbpu6e7crEwSipa62jX7/ObV/pmXQfnOG8cHwm363jYtg3FSX3GB1V7jsIKri1zgq7mfXkFk/qw==", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.0.tgz", + "integrity": "sha512-SYtcG13aiV7znycu6plCClWUzD9BBtfnsbIxT89nkkRvQRB4n0kuZyJJvJ7hqdKOn7x7YoGKZ9lVStLJpLnOFw==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.0.tgz", + "integrity": "sha512-x50SSD7bbG5wen3tMDI2oWVSAjt1K1xw6JZSnc6239RmBwqLJF9dPsKsh9w0Rzh5+mGpsu9FDu3DlsT0lo1+Uw==", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.0.tgz", + "integrity": "sha512-SYtcG13aiV7znycu6plCClWUzD9BBtfnsbIxT89nkkRvQRB4n0kuZyJJvJ7hqdKOn7x7YoGKZ9lVStLJpLnOFw==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.15.0.tgz", + "integrity": "sha512-6kBQwE75ZVlOjBbp0/PX0fgNLHxoMDxHe3aIPV/RLVwrIDidxTbsHtkSbPNTkheMset3v9s1Z08XuMNpWRK/7w==", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.0.tgz", + "integrity": "sha512-SYtcG13aiV7znycu6plCClWUzD9BBtfnsbIxT89nkkRvQRB4n0kuZyJJvJ7hqdKOn7x7YoGKZ9lVStLJpLnOFw==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.0.tgz", + "integrity": "sha512-MVeJvGHB4jmF7PeHhyr72vYJsBJ3ff1piHikMgRaabPAC4P3rxhf9fm42I+DixLysBunskJWhsDQD2A+O+plkQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.8.0.tgz", + "integrity": "sha512-w8NrGnrlGDF7fj36PBnJhGXDK2Y3kpTOgL7Ksb5snEHXq/3EAbKYOp1yqme0yWCUlSDq5rjqvxSBAJmsqYac3w==", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.0.tgz", + "integrity": "sha512-SYtcG13aiV7znycu6plCClWUzD9BBtfnsbIxT89nkkRvQRB4n0kuZyJJvJ7hqdKOn7x7YoGKZ9lVStLJpLnOFw==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.4.2.tgz", + "integrity": "sha512-0q5DL4uyR0EZ4RXQKD8MadGH6zTIcloUoS/RVbCpNpej4pwte0xpqYxk8K97Py2RiuUvI7F4GXpoT4046VfufA==", + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.4.0", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.5.0", + "@azure/msal-node": "^2.5.1", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.0.tgz", + "integrity": "sha512-BnfkfzVEsrgbVCtqq0RYRMePSH2lL/cgUUR5sYRF4yNN10zJZq/cODz0r89k3ykY83MqeM3twR292a3YBNgC3w==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.10.0.tgz", + "integrity": "sha512-mnmi8dCXVNZI+AGRq0jKQ3YiodlIC4W9npr6FCB9WN6NQT+6rq+cIlxgUb//BjLyzKsnYo+i4LROGeMyU+6v1A==", + "dependencies": { + "@azure/msal-common": "14.7.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.7.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.7.1.tgz", + "integrity": "sha512-v96btzjM7KrAu4NSEdOkhQSTGOuNUIIsUdB8wlyB9cdgl5KqEKnTonHUZ8+khvZ6Ap542FCErbnTyDWl8lZ2rA==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.6.4.tgz", + "integrity": "sha512-nNvEPx009/80UATCToF+29NZYocn01uKrB91xtFr7bSqkqO1PuQGXRyYwryWRztUrYZ1YsSbw9A+LmwOhpVvcg==", + "dependencies": { + "@azure/msal-common": "14.7.1", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@microsoft/microsoft-graph-client": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.7.tgz", + "integrity": "sha512-/AazAV/F+HK4LIywF9C+NYHcJo038zEnWkteilcxC1FM/uK/4NVGDKGrxx7nNq1ybspAroRKT4I1FHfxQzxkUw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependenciesMeta": { + "@azure/identity": { + "optional": true + }, + "@azure/msal-browser": { + "optional": true + }, + "buffer": { + "optional": true + }, + "stream-browserify": { + "optional": true + } + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.11.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.29.tgz", + "integrity": "sha512-P99thMkD/1YkCvAtOd6/zGedKNA0p2fj4ZpjCzcNiSCBWgm3cNRTBfa/qjFnsKkkojxu4vVLtWpesnZ9+ap+gA==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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/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/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/body-parser": { + "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.5", + "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.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/express": { + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", + "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz", + "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "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==", + "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==" + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==" + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "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", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/jwa": { + "version": "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/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/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.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", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "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", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + }, + "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/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..bce45dd --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "vizwall_screensaver", + "version": "1.0.0", + "description": "Screensaver that marries the slideshow, the daily schedule, and the vizwall_homepage", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js", + "dev": "nodemon server.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "@azure/identity": "^3.3.2", + "@azure/msal-node": "^2.6.1", + "@microsoft/microsoft-graph-client": "^3.0.7", + "cors": "^2.8.5", + "dotenv": "^16.3.1", + "express": "^4.18.2", + "fs": "^0.0.1-security", + "http": "^0.0.1-security", + "http-proxy-middleware": "^2.0.6", + "https": "^1.0.0", + "isomorphic-fetch": "^3.0.0" + } +} diff --git a/resourceUPNs.json b/resourceUPNs.json new file mode 100644 index 0000000..af97a39 --- /dev/null +++ b/resourceUPNs.json @@ -0,0 +1,7 @@ +[ + "s-er-1431-00@liveconcordia.onmicrosoft.com", + "s-er-1431-03@liveconcordia.onmicrosoft.com", + "s-er-1431-33@liveconcordia.onmicrosoft.com", + "s-er-1431-37@liveconcordia.onmicrosoft.com", + "s-er-1431-39@liveconcordia.onmicrosoft.com" +] diff --git a/server.js b/server.js new file mode 100644 index 0000000..9577ff8 --- /dev/null +++ b/server.js @@ -0,0 +1,129 @@ +const express = require('express'); +const http = require('http'); +const fs = require('fs'); +const fetch = require('isomorphic-fetch'); +const path = require('path'); +const cors = require('cors'); +require('dotenv').config(); + + +const msGraphHelper = require('./msGraphHelper'); +const settings = require('./settings'); + +const HTTP_PORT = process.env.HTTP_PORT || 8080; + +const app = express(); +const slideshowDir = './slideshow'; + + +app.use(cors({ + origin: 'http://localhost:5173' +})); +app.use(express.json()); +app.use(express.static('public')); + +// GRAPH API SECTION - USER AUTH +// +// msGraphHelper.initializeGraphForUserAuth(settings, async (deviceCodeResponse) => { +// if (!deviceCodeResponse) { +// throw new Error("Device code response is undefined."); +// } +// console.log(deviceCodeResponse.message); +// }); +// +// GRAPH API SECTION - APP ONLY AUTH +// +// msGraphHelper.initializeGraphForAppOnlyAuth(settings); +const data = fs.readFileSync('./resourceUPNs.json', 'utf8'); +const resourceUPNs = JSON.parse(data); +function pollAPI() { + events = {}; +} + + +app.get('/api/events', async (req, res) => { + + try { + let events = {}; + let now = new Date(); + let startDateTime = new Date(now); + startDateTime.setHours(8, 0, 0, 0); + let endDateTime = new Date(now); + endDateTime.setHours(17, 0, 0, 0); + + for (const resource of resourceUPNs) { + try { + const data = + // msGraphHelper.getCalendarView(resource, startDateTime.toISOString(), endDateTime.toISOString()); + fs.readFileSync(`./events/${resource}.json`, 'utf8'); + const resourceEvents = JSON.parse(data); + events[resource] = resourceEvents; + // console.log(`${new Date()}: Grabbed events for ${resource}`); + } catch (error) { + console.error(error); + } + } + res.json(events); + } catch (err) { + res.status(500).json({ message: err.message }); + } + +}); + +app.get('/api/weather', async (req, res) => { + try { + const lat = 45.49; + const lon = -73.58; + const appid = process.env.OPENWEATHER_APPID; + const url = `https://api.openweathermap.org/data/2.5/weather?units=metric&lat=${lat}&lon=${lon}&appid=${appid}`; + + const response = await fetch(url); + + if (response.ok) { + const json = await response.json(); + res.json(json); + } else { + res.status(500).json({ message: 'Error in /weather' }); + } + } catch (err) { + res.status(500).json({ message: err.message }); + } +}); + +app.get('/api/quotes', async (req, res) => { + try { + const url = `https://api.quotable.io/quotes?limit=150&tags=urban|city|technology|future` + const response = await fetch(url); + + if (response.ok) { + const json = await response.json(); + res.json(json); + } else { + res.status(500).json({ message: 'Error in /quotes' }); + } + } catch (err) { + res.status(500).json({ message: err.message }); + } +}); + +app.use('/slideshow', express.static(slideshowDir)); +app.get('/api/slideshow', (req, res) => { + fs.readdir(slideshowDir, (err, files) => { + if (err) { + console.error('Failed to list slideshow images: ', err.message); + res.status(500).json({ message: err.message }); + return; + } else { + const imagePaths = files + .filter(file => /\.(jpg|jpeg|png|gif)$/i.test(file)) + .map(file => `/slideshow/${file}`); + + res.json(imagePaths); + } + }); +}); + + +const httpServer = http.createServer(app); + +httpServer.listen(HTTP_PORT, () => console.log(`HTTP Server listening on http://localhost:${HTTP_PORT}`)); diff --git a/settings.js b/settings.js new file mode 100644 index 0000000..a1b58a2 --- /dev/null +++ b/settings.js @@ -0,0 +1,11 @@ +const settings = { + 'clientId': process.env.AZURE_CLIENT_ID, + 'clientSecret': process.env.AZURE_CLIENT_SECRET, + 'tenantId': process.env.AZURE_TENANT_ID, + 'graphUserScopes': [ + 'calendars.read', + 'calendars.read.shared' + ] +}; + +module.exports = settings; diff --git a/slideshow/07 - 14 August 2020 - Iceland, Ice Cap.jpg b/slideshow/07 - 14 August 2020 - Iceland, Ice Cap.jpg new file mode 100644 index 0000000..c5f8a08 Binary files /dev/null and b/slideshow/07 - 14 August 2020 - Iceland, Ice Cap.jpg differ diff --git a/slideshow/07 - 14 August 2020 - Iceland, Ice Cap.jpg:Zone.Identifier b/slideshow/07 - 14 August 2020 - Iceland, Ice Cap.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/07 - 14 August 2020 - Iceland, Ice Cap.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20210710_KangerlussuaqFjord_Greenland.jpg b/slideshow/20210710_KangerlussuaqFjord_Greenland.jpg new file mode 100644 index 0000000..8432c8d Binary files /dev/null and b/slideshow/20210710_KangerlussuaqFjord_Greenland.jpg differ diff --git a/slideshow/20210710_KangerlussuaqFjord_Greenland.jpg:Zone.Identifier b/slideshow/20210710_KangerlussuaqFjord_Greenland.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20210710_KangerlussuaqFjord_Greenland.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20210729_HeatWaveGreenland.jpg b/slideshow/20210729_HeatWaveGreenland.jpg new file mode 100644 index 0000000..dc4ea08 Binary files /dev/null and b/slideshow/20210729_HeatWaveGreenland.jpg differ diff --git a/slideshow/20210729_HeatWaveGreenland.jpg:Zone.Identifier b/slideshow/20210729_HeatWaveGreenland.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20210729_HeatWaveGreenland.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20210824_SnowPatagonia.jpg b/slideshow/20210824_SnowPatagonia.jpg new file mode 100644 index 0000000..289889d Binary files /dev/null and b/slideshow/20210824_SnowPatagonia.jpg differ diff --git a/slideshow/20210824_SnowPatagonia.jpg:Zone.Identifier b/slideshow/20210824_SnowPatagonia.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20210824_SnowPatagonia.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20210908_AnetoGlacier.jpg b/slideshow/20210908_AnetoGlacier.jpg new file mode 100644 index 0000000..12494fd Binary files /dev/null and b/slideshow/20210908_AnetoGlacier.jpg differ diff --git a/slideshow/20210908_AnetoGlacier.jpg:Zone.Identifier b/slideshow/20210908_AnetoGlacier.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20210908_AnetoGlacier.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20211028_NorilskRussia.jpg b/slideshow/20211028_NorilskRussia.jpg new file mode 100644 index 0000000..d812580 Binary files /dev/null and b/slideshow/20211028_NorilskRussia.jpg differ diff --git a/slideshow/20211028_NorilskRussia.jpg:Zone.Identifier b/slideshow/20211028_NorilskRussia.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20211028_NorilskRussia.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20211104_RankinInlet_Canada.jpg b/slideshow/20211104_RankinInlet_Canada.jpg new file mode 100644 index 0000000..1c37f21 Binary files /dev/null and b/slideshow/20211104_RankinInlet_Canada.jpg differ diff --git a/slideshow/20211104_RankinInlet_Canada.jpg:Zone.Identifier b/slideshow/20211104_RankinInlet_Canada.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20211104_RankinInlet_Canada.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20211106_CherskyRussia.jpg b/slideshow/20211106_CherskyRussia.jpg new file mode 100644 index 0000000..5e4c2b7 Binary files /dev/null and b/slideshow/20211106_CherskyRussia.jpg differ diff --git a/slideshow/20211106_CherskyRussia.jpg:Zone.Identifier b/slideshow/20211106_CherskyRussia.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20211106_CherskyRussia.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20211201_SnowCentralEU.jpg b/slideshow/20211201_SnowCentralEU.jpg new file mode 100644 index 0000000..25bf4cc Binary files /dev/null and b/slideshow/20211201_SnowCentralEU.jpg differ diff --git a/slideshow/20211201_SnowCentralEU.jpg:Zone.Identifier b/slideshow/20211201_SnowCentralEU.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20211201_SnowCentralEU.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/202112121_Himalaya.jpg b/slideshow/202112121_Himalaya.jpg new file mode 100644 index 0000000..ff386f5 Binary files /dev/null and b/slideshow/202112121_Himalaya.jpg differ diff --git a/slideshow/202112121_Himalaya.jpg:Zone.Identifier b/slideshow/202112121_Himalaya.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/202112121_Himalaya.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/202200906_GreenlandWestCoast.jpg b/slideshow/202200906_GreenlandWestCoast.jpg new file mode 100644 index 0000000..579f652 Binary files /dev/null and b/slideshow/202200906_GreenlandWestCoast.jpg differ diff --git a/slideshow/202200906_GreenlandWestCoast.jpg:Zone.Identifier b/slideshow/202200906_GreenlandWestCoast.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/202200906_GreenlandWestCoast.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220106_ThwaitesGlacier.jpg b/slideshow/20220106_ThwaitesGlacier.jpg new file mode 100644 index 0000000..534240a Binary files /dev/null and b/slideshow/20220106_ThwaitesGlacier.jpg differ diff --git a/slideshow/20220106_ThwaitesGlacier.jpg:Zone.Identifier b/slideshow/20220106_ThwaitesGlacier.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220106_ThwaitesGlacier.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220107_MalaspinaGlacier.jpg b/slideshow/20220107_MalaspinaGlacier.jpg new file mode 100644 index 0000000..6610fea Binary files /dev/null and b/slideshow/20220107_MalaspinaGlacier.jpg differ diff --git a/slideshow/20220107_MalaspinaGlacier.jpg:Zone.Identifier b/slideshow/20220107_MalaspinaGlacier.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220107_MalaspinaGlacier.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220111_AdamelloGlacier_Italy.jpg b/slideshow/20220111_AdamelloGlacier_Italy.jpg new file mode 100644 index 0000000..17f8952 Binary files /dev/null and b/slideshow/20220111_AdamelloGlacier_Italy.jpg differ diff --git a/slideshow/20220111_AdamelloGlacier_Italy.jpg:Zone.Identifier b/slideshow/20220111_AdamelloGlacier_Italy.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220111_AdamelloGlacier_Italy.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220120_IcebreakerInAntarctica.jpg b/slideshow/20220120_IcebreakerInAntarctica.jpg new file mode 100644 index 0000000..3e65bc2 Binary files /dev/null and b/slideshow/20220120_IcebreakerInAntarctica.jpg differ diff --git a/slideshow/20220120_IcebreakerInAntarctica.jpg:Zone.Identifier b/slideshow/20220120_IcebreakerInAntarctica.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220120_IcebreakerInAntarctica.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220126_SouthernAlps_NewZealand.jpg b/slideshow/20220126_SouthernAlps_NewZealand.jpg new file mode 100644 index 0000000..29dedd2 Binary files /dev/null and b/slideshow/20220126_SouthernAlps_NewZealand.jpg differ diff --git a/slideshow/20220126_SouthernAlps_NewZealand.jpg:Zone.Identifier b/slideshow/20220126_SouthernAlps_NewZealand.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220126_SouthernAlps_NewZealand.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220127_SnowGreenland.jpg b/slideshow/20220127_SnowGreenland.jpg new file mode 100644 index 0000000..e2fe13e Binary files /dev/null and b/slideshow/20220127_SnowGreenland.jpg differ diff --git a/slideshow/20220127_SnowGreenland.jpg:Zone.Identifier b/slideshow/20220127_SnowGreenland.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220127_SnowGreenland.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220305_Alps.jpg b/slideshow/20220305_Alps.jpg new file mode 100644 index 0000000..01937ca Binary files /dev/null and b/slideshow/20220305_Alps.jpg differ diff --git a/slideshow/20220305_Alps.jpg:Zone.Identifier b/slideshow/20220305_Alps.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220305_Alps.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220322_HeatwaveInsAntarctica.jpg b/slideshow/20220322_HeatwaveInsAntarctica.jpg new file mode 100644 index 0000000..cef3642 Binary files /dev/null and b/slideshow/20220322_HeatwaveInsAntarctica.jpg differ diff --git a/slideshow/20220322_HeatwaveInsAntarctica.jpg:Zone.Identifier b/slideshow/20220322_HeatwaveInsAntarctica.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220322_HeatwaveInsAntarctica.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20220726_IceCapMeltingGreenland.jpg b/slideshow/20220726_IceCapMeltingGreenland.jpg new file mode 100644 index 0000000..83274bc Binary files /dev/null and b/slideshow/20220726_IceCapMeltingGreenland.jpg differ diff --git a/slideshow/20220726_IceCapMeltingGreenland.jpg:Zone.Identifier b/slideshow/20220726_IceCapMeltingGreenland.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20220726_IceCapMeltingGreenland.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20221002_PineIslandGlacier.jpg b/slideshow/20221002_PineIslandGlacier.jpg new file mode 100644 index 0000000..0732041 Binary files /dev/null and b/slideshow/20221002_PineIslandGlacier.jpg differ diff --git a/slideshow/20221002_PineIslandGlacier.jpg:Zone.Identifier b/slideshow/20221002_PineIslandGlacier.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20221002_PineIslandGlacier.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20221010_ChurchillCanada.png b/slideshow/20221010_ChurchillCanada.png new file mode 100644 index 0000000..0ba00e0 Binary files /dev/null and b/slideshow/20221010_ChurchillCanada.png differ diff --git a/slideshow/20221010_ChurchillCanada.png:Zone.Identifier b/slideshow/20221010_ChurchillCanada.png:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20221010_ChurchillCanada.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20221022_RossSea.jpg b/slideshow/20221022_RossSea.jpg new file mode 100644 index 0000000..a7326a9 Binary files /dev/null and b/slideshow/20221022_RossSea.jpg differ diff --git a/slideshow/20221022_RossSea.jpg:Zone.Identifier b/slideshow/20221022_RossSea.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20221022_RossSea.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20221108_LosAlercesNationalParkArgentina.jpg b/slideshow/20221108_LosAlercesNationalParkArgentina.jpg new file mode 100644 index 0000000..83610ed Binary files /dev/null and b/slideshow/20221108_LosAlercesNationalParkArgentina.jpg differ diff --git a/slideshow/20221108_LosAlercesNationalParkArgentina.jpg:Zone.Identifier b/slideshow/20221108_LosAlercesNationalParkArgentina.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20221108_LosAlercesNationalParkArgentina.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20221118_Denman_Glacier.jpeg b/slideshow/20221118_Denman_Glacier.jpeg new file mode 100644 index 0000000..970e253 Binary files /dev/null and b/slideshow/20221118_Denman_Glacier.jpeg differ diff --git a/slideshow/20221118_Denman_Glacier.jpeg:Zone.Identifier b/slideshow/20221118_Denman_Glacier.jpeg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20221118_Denman_Glacier.jpeg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20230402_SeaIce_Greenland.jpg b/slideshow/20230402_SeaIce_Greenland.jpg new file mode 100644 index 0000000..7aa2723 Binary files /dev/null and b/slideshow/20230402_SeaIce_Greenland.jpg differ diff --git a/slideshow/20230402_SeaIce_Greenland.jpg:Zone.Identifier b/slideshow/20230402_SeaIce_Greenland.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20230402_SeaIce_Greenland.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/20230412_SeaIceCover.jpg b/slideshow/20230412_SeaIceCover.jpg new file mode 100644 index 0000000..0698e19 Binary files /dev/null and b/slideshow/20230412_SeaIceCover.jpg differ diff --git a/slideshow/20230412_SeaIceCover.jpg:Zone.Identifier b/slideshow/20230412_SeaIceCover.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/20230412_SeaIceCover.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/BloomAntarctica_logo.jpg b/slideshow/BloomAntarctica_logo.jpg new file mode 100644 index 0000000..3214dd5 Binary files /dev/null and b/slideshow/BloomAntarctica_logo.jpg differ diff --git a/slideshow/BloomAntarctica_logo.jpg:Zone.Identifier b/slideshow/BloomAntarctica_logo.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/BloomAntarctica_logo.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/ChukchiSea.jpg b/slideshow/ChukchiSea.jpg new file mode 100644 index 0000000..2c52b0d Binary files /dev/null and b/slideshow/ChukchiSea.jpg differ diff --git a/slideshow/ChukchiSea.jpg:Zone.Identifier b/slideshow/ChukchiSea.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/ChukchiSea.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/FoxeBasin_credit_row.jpg b/slideshow/FoxeBasin_credit_row.jpg new file mode 100644 index 0000000..de9afc8 Binary files /dev/null and b/slideshow/FoxeBasin_credit_row.jpg differ diff --git a/slideshow/FoxeBasin_credit_row.jpg:Zone.Identifier b/slideshow/FoxeBasin_credit_row.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/FoxeBasin_credit_row.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/FranzJosefLand.jpg b/slideshow/FranzJosefLand.jpg new file mode 100644 index 0000000..8aee6ad Binary files /dev/null and b/slideshow/FranzJosefLand.jpg differ diff --git a/slideshow/FranzJosefLand.jpg:Zone.Identifier b/slideshow/FranzJosefLand.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/FranzJosefLand.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/IceArcNaresStrait.jpg b/slideshow/IceArcNaresStrait.jpg new file mode 100644 index 0000000..02f3d04 Binary files /dev/null and b/slideshow/IceArcNaresStrait.jpg differ diff --git a/slideshow/IceArcNaresStrait.jpg:Zone.Identifier b/slideshow/IceArcNaresStrait.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/IceArcNaresStrait.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/IceGreatLakes.jpg b/slideshow/IceGreatLakes.jpg new file mode 100644 index 0000000..c414982 Binary files /dev/null and b/slideshow/IceGreatLakes.jpg differ diff --git a/slideshow/IceGreatLakes.jpg:Zone.Identifier b/slideshow/IceGreatLakes.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/IceGreatLakes.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/Image_006.jpg b/slideshow/Image_006.jpg new file mode 100644 index 0000000..62f1154 Binary files /dev/null and b/slideshow/Image_006.jpg differ diff --git a/slideshow/Image_006.jpg:Zone.Identifier b/slideshow/Image_006.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/Image_006.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/Image_013.jpg b/slideshow/Image_013.jpg new file mode 100644 index 0000000..bb97572 Binary files /dev/null and b/slideshow/Image_013.jpg differ diff --git a/slideshow/Image_013.jpg:Zone.Identifier b/slideshow/Image_013.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/Image_013.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/Layout 1.jpg b/slideshow/Layout 1.jpg new file mode 100644 index 0000000..ad01acf Binary files /dev/null and b/slideshow/Layout 1.jpg differ diff --git a/slideshow/Layout 1.jpg:Zone.Identifier b/slideshow/Layout 1.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/Layout 1.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/Mackenzie_credit_row_logo.jpg b/slideshow/Mackenzie_credit_row_logo.jpg new file mode 100644 index 0000000..2d0785e Binary files /dev/null and b/slideshow/Mackenzie_credit_row_logo.jpg differ diff --git a/slideshow/Mackenzie_credit_row_logo.jpg:Zone.Identifier b/slideshow/Mackenzie_credit_row_logo.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/Mackenzie_credit_row_logo.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/Matterhorn_row.jpg b/slideshow/Matterhorn_row.jpg new file mode 100644 index 0000000..9e2a7e8 Binary files /dev/null and b/slideshow/Matterhorn_row.jpg differ diff --git a/slideshow/Matterhorn_row.jpg:Zone.Identifier b/slideshow/Matterhorn_row.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/Matterhorn_row.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/MtEverest_credit_row_logo.jpg b/slideshow/MtEverest_credit_row_logo.jpg new file mode 100644 index 0000000..a70351a Binary files /dev/null and b/slideshow/MtEverest_credit_row_logo.jpg differ diff --git a/slideshow/MtEverest_credit_row_logo.jpg:Zone.Identifier b/slideshow/MtEverest_credit_row_logo.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/MtEverest_credit_row_logo.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/NeumayerGlacier.jpg b/slideshow/NeumayerGlacier.jpg new file mode 100644 index 0000000..0a50ed3 Binary files /dev/null and b/slideshow/NeumayerGlacier.jpg differ diff --git a/slideshow/NeumayerGlacier.jpg:Zone.Identifier b/slideshow/NeumayerGlacier.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/NeumayerGlacier.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/SnowAlpineArc_2.jpg b/slideshow/SnowAlpineArc_2.jpg new file mode 100644 index 0000000..10af25e Binary files /dev/null and b/slideshow/SnowAlpineArc_2.jpg differ diff --git a/slideshow/SnowAlpineArc_2.jpg:Zone.Identifier b/slideshow/SnowAlpineArc_2.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/SnowAlpineArc_2.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/UdaBay_credit_row.jpg b/slideshow/UdaBay_credit_row.jpg new file mode 100644 index 0000000..0dc9559 Binary files /dev/null and b/slideshow/UdaBay_credit_row.jpg differ diff --git a/slideshow/UdaBay_credit_row.jpg:Zone.Identifier b/slideshow/UdaBay_credit_row.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/UdaBay_credit_row.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip diff --git a/slideshow/seaicelogo_credit.jpg b/slideshow/seaicelogo_credit.jpg new file mode 100644 index 0000000..1d4028b Binary files /dev/null and b/slideshow/seaicelogo_credit.jpg differ diff --git a/slideshow/seaicelogo_credit.jpg:Zone.Identifier b/slideshow/seaicelogo_credit.jpg:Zone.Identifier new file mode 100644 index 0000000..2389494 --- /dev/null +++ b/slideshow/seaicelogo_credit.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\suhanna\Pictures\wetransfer_some-special-mission-for-you_2023-04-13_1213.zip