From 80659610677b81dda8502da126f5bdbef290353f Mon Sep 17 00:00:00 2001 From: Karlos K <168231563+kknoxrht@users.noreply.github.com> Date: Thu, 21 May 2026 00:44:39 -0500 Subject: [PATCH] edit files for hackathon kepted the originals as well. --- modules/.DS_Store | Bin 6148 -> 6148 bytes modules/ROOT/.DS_Store | Bin 0 -> 6148 bytes modules/ROOT/pages/index copy.adoc | 17 + modules/ROOT/pages/index.adoc | 41 +- modules/course_guide/.DS_Store | Bin 6148 -> 6148 bytes .../pages/course_structure copy.adoc | 34 + .../course_guide/pages/course_structure.adoc | 62 +- .../course_guide/pages/dev_spaces copy.adoc | 79 +++ modules/course_guide/pages/dev_spaces.adoc | 96 +-- .../course_guide/pages/local_system copy.adoc | 34 + modules/course_guide/pages/local_system.adoc | 133 +++- modules/lab/.DS_Store | Bin 0 -> 6148 bytes modules/lab/nav.adoc | 4 +- modules/references/.DS_Store | Bin 6148 -> 6148 bytes modules/references/nav.adoc | 6 +- .../references/pages/asciidocqrg copy.adoc | 226 +++++++ modules/references/pages/asciidocqrg.adoc | 295 ++++---- modules/start_here/images/qc-structure.jpg | Bin 0 -> 90296 bytes modules/start_here/pages/workflow copy.adoc | 30 + modules/start_here/pages/workflow.adoc | 58 +- package-lock.json | 634 +++++++++++++++--- 21 files changed, 1366 insertions(+), 383 deletions(-) create mode 100644 modules/ROOT/.DS_Store create mode 100644 modules/ROOT/pages/index copy.adoc create mode 100644 modules/course_guide/pages/course_structure copy.adoc create mode 100644 modules/course_guide/pages/dev_spaces copy.adoc create mode 100644 modules/course_guide/pages/local_system copy.adoc create mode 100644 modules/lab/.DS_Store create mode 100644 modules/references/pages/asciidocqrg copy.adoc create mode 100644 modules/start_here/images/qc-structure.jpg create mode 100644 modules/start_here/pages/workflow copy.adoc diff --git a/modules/.DS_Store b/modules/.DS_Store index ccd5c86411eb3e07b2c1f05c2c28bf4dd892f7af..f1e40d51c123c05708ade69aaded4b85f6f30e0e 100644 GIT binary patch delta 179 zcmZoMXfc=|#>B)qu~2NHo}wrl0|Nsi1A_nqLoq`tLp(z|Ln%Y%#=_-{mLM4(hGd3( zphyw2EJF%IYFbKha#DVN4p1utGeZtTB0~~fXfhw0#AI*Q+nmTE>Vhl`K@9#t7y=XC qY{+(vabv?yrp@de{2V|hZ5HJC&ODi4#E}DND#%qVnB!ku~2NHo}wr#0|Nsi1A_nqLpDP)Lq0<(LlHyq=0@h_%$6W2ZiYgj zP$p0cNtz)wsl2!#DJMS(sA5M_K~83IiGjg2MkZz!RyKAH_Q_RD(b^oG@d6Un)uxsP zItoS>2DLg0)s{v;wu!M>Z7nBP1)427Qyl`3_^l4Uj=pf`vRJpmWszne-RA@(^s&yF_?T~{OYEIBWB;`#X& zlQ95W-VR^D48RB76$>8*W{lr)!4^L_;(9t<_q+4?*VA~*y&lkcjmPy|mWY4|h=2%) zfC!9;Kpf&c|363cOnMX%5P@+J@b5#RyVlg!H9j32q6MH%nGWMTdI@Ur1huBNuFTLZ zy9disi#EjbQBEznuco%Hy&RU!hvl8kyBM1Fa#&$Nvl^m71Vms!VAA86pa0+Vzxw|{ zi9!(&ffplS)75&l_F#mPze`8kZ64>H@ZY-Z>9 G%MSo#<_>`X delta 32 ocmZoMXfc@J&&aVcU^gQp$7UX;)r_03G8?f>Y>?Z`&heKY0H{L>LI3~& diff --git a/modules/course_guide/pages/course_structure copy.adoc b/modules/course_guide/pages/course_structure copy.adoc new file mode 100644 index 0000000..0ebae1b --- /dev/null +++ b/modules/course_guide/pages/course_structure copy.adoc @@ -0,0 +1,34 @@ += Course Structure + +image::../qc-structure.jpg[] + +The structure of the course is organized as a hierarchy, so it's helpful to think of the content in terms of chapters, or modules, and then pages, or sections. + +At the top level (course), the antora.yml file defines the overall structure. It has the course title and the links to `nav.adoc` files in each module (aka chapter - they are the same thing here). + +[source] +---- +name: course +title: Course Title +version: 1 +nav: +- modules/ch1/nav.adoc +- modules/ch2/nav.adoc +- modules/ch3/nav.adoc +---- + +It may be clear at this point that we need a `modules` directory, with each module/chapter as a sub-directory. They do not need to be labeled ch1, ch2, etc, but their labels would need to appear in the above antora file. + +Each module/chapter directory should have a 'nav.adoc' file with the following syntax: + +[source] +---- +* xref:index.adoc[] +** xref:section1.adoc[] +** xref:section2.adoc[] +---- + +This is the listing of the adoc files that actually contain the content. These should be placed in a `pages` directory. Any images that need to be referenced go into an `images` directory at the same level as `pages` and the 'nav.adoc' file referenced above. + +See xref:references:asciidocqrg.adoc[Asciidoc quick reference guide] for help with drafting of your content. + diff --git a/modules/course_guide/pages/course_structure.adoc b/modules/course_guide/pages/course_structure.adoc index 0ebae1b..28eed4e 100644 --- a/modules/course_guide/pages/course_structure.adoc +++ b/modules/course_guide/pages/course_structure.adoc @@ -1,34 +1,48 @@ -= Course Structure += Designing Memorable Enablement +:navtitle: Enablement Design Guide -image::../qc-structure.jpg[] +== Introduction: From Architect to Educator -The structure of the course is organized as a hierarchy, so it's helpful to think of the content in terms of chapters, or modules, and then pages, or sections. +You are here because you are an elite technical expert. You design, build, and deploy complex architectures every day. However, building a highly effective learning experience requires a slightly different muscle. -At the top level (course), the antora.yml file defines the overall structure. It has the course title and the links to `nav.adoc` files in each module (aka chapter - they are the same thing here). +It is easy to fall into the trap of simply writing down a list of commands and configurations. But a data dump is not a learning experience. If we want our peers to truly understand how to deploy Red Hat AI Factory with NVIDIA solutions at scale, we have to move beyond just *telling* them what to do. We must *show* them, challenge them, and share the context behind the keystrokes. -[source] ----- -name: course -title: Course Title -version: 1 -nav: -- modules/ch1/nav.adoc -- modules/ch2/nav.adoc -- modules/ch3/nav.adoc ----- +Here is your guide to building enablement that keeps learners engaged and makes the knowledge stick. -It may be clear at this point that we need a `modules` directory, with each module/chapter as a sub-directory. They do not need to be labeled ch1, ch2, etc, but their labels would need to appear in the above antora file. +== 1. Start with the "Why" and the "Aha!" Moment -Each module/chapter directory should have a 'nav.adoc' file with the following syntax: +Learners disengage when they don't understand why a specific task matters. Before you dive into the technical execution, frame the problem. -[source] ----- -* xref:index.adoc[] -** xref:section1.adoc[] -** xref:section2.adoc[] ----- +* **Share the Context:** Briefly explain the business or technical challenge this blueprint solves. +* **Include the "Hard Knocks":** AI can generate code, but it doesn't have the scars of trial and error. Share what *didn't* work for you during your own learning journey. Explain the pitfalls you encountered and the "Aha!" moment that led to your ultimate solution. +* **Keep the Human Element:** Write as if you are sitting next to a co-worker, explaining a new way to accomplish a task. Conversational, professional candor is far more engaging than dry textbook prose. -This is the listing of the adoc files that actually contain the content. These should be placed in a `pages` directory. Any images that need to be referenced go into an `images` directory at the same level as `pages` and the 'nav.adoc' file referenced above. +== 2. Avoid the "Copy-Paste" Trap (Active vs. Passive Learning) -See xref:references:asciidocqrg.adoc[Asciidoc quick reference guide] for help with drafting of your content. +If a learner can complete your entire module just by mindlessly copying and pasting commands into a terminal, they haven't learned anything. You have built a script, not a course. +Force the learner to engage with the environment: + +* **Ask Questions:** Prompt them to run a command, observe the output, and ask them to verify a specific parameter before moving to the next step. +* **Break Things Intentionally:** If you are building a *Break-Fix* scenario, give them a broken environment and a clear set of symptoms. Let them diagnose it like a puzzle rather than handing them the answer key upfront. +* **Use the "How-To" Effectively:** For step-by-step *How-To* guides, ensure you emphasize active participation. Explain *what* the command is doing to the infrastructure before providing the code block. + +== 3. Manage the Cognitive Load + +Technical blueprints are heavy. If you present learners with a massive wall of text and code, their eyes will glaze over. Structure your content for scannability and flow. + +* **Chunk the Information:** Break complex workflows into smaller, digestible pages or sections. +* **Use formatting strategically:** Use bold text to emphasize key parameters. Use the AsciiDoc visual callouts (`NOTE:`, `IMPORTANT:`, `WARNING:`) to break up the visual monotony and draw attention to critical security or STIG requirements. +* **Visualize the Architecture:** Do not explain a complex NVIDIA multi-node deployment with text alone. Use diagrams (placed in your `images/` folder) to anchor the learner's understanding of the topology before they touch the command line. + +== 4. The Anatomy of a Great Enablement Chapter + +When structuring a specific chapter or module in your repository, try following this proven arc: + +. **The Hook (The Problem):** Define the real-world scenario or customer pain point. +. **The Strategy (The Concept):** Explain the architectural approach you are taking to solve it and *why* it is the best method. +. **The Execution (The Lab):** Guide them through the hands-on deployment or troubleshooting steps. +. **The Verification (The Proof):** Show them how to test and validate that their deployment or fix was successful. +. **The Takeaway:** Summarize the core lesson and how it applies to their daily interactions with customers. + +NOTE: Remember, your goal is to empower your colleagues. By shaping your raw knowledge into a structured, engaging instrument, you are building a community of capability around the Red Hat AI Factory. \ No newline at end of file diff --git a/modules/course_guide/pages/dev_spaces copy.adoc b/modules/course_guide/pages/dev_spaces copy.adoc new file mode 100644 index 0000000..cc302ac --- /dev/null +++ b/modules/course_guide/pages/dev_spaces copy.adoc @@ -0,0 +1,79 @@ += Use Devspace (skip if using local system) + +Every Open Training course is developed in public GitHub repositories. +In order to make development as easy as possible, we provide you with the option of using a Dev Spaces instance. +If you're not familiar with this, just think of it as your normal IDE (VSCode in this case) running in the cloud. +It has everything you should need to write asciidoc, render into a preview, and interact with GitHub to push and pull. + +:toc: + +== Set up or Access Dev Spaces Instance + +. After the GitHub repository is created for the course, you will see a `Developer Workspace` button in the README section of the repository. ++ +Click this button to launch the Dev Spaces instance. ++ +image::../click-devspace-button.png[] + +. When prompted, select the `Log in with OpenShift` button and use the credentials that you were provided. ++ +This is usually your Red Hat SSO credential. ++ +image::../click-login-with-openshift.png[] + +. Once you have successfully logged in, select the option to `Open the existing workspace` or `Switch to running workspace` if prompted. ++ +Ignore this step if not prompted for this option. ++ +image::../select-workspace-1.png[] ++ +image::../select-workspace-2.png[] + +. When the VSCode interface loads, click `Yes, I trust the authors`. ++ +image::../trust-authors.png[] ++ +NOTE: Why do I trust them? + +That is it! +You are ready to start writing your content. +The file and folder structure is already in place, so you just need to start filling in blanks and deleting files that you won't need. + +== Render content draft + +NOTE: Make your training content repository is initialized and the changes are committed by the training team before using it in the devspace. + +. Load your content repository in the devspace environment using the steps mentioned in FIXME +. Click on the search bar for Workspace on top and click on Run Task option, then click devfile. ++ +image::../devspace-runtask.png[] ++ +. Click on `0-install` option and wait for it to finish. +. Repeat the earlier step to select devfile and click on `1-watch` option this time. +. Repeat the same steps and select `2-serve` option now. +. Pop-up will be displayed at the bottom of the screen. ++ +image::../devspace-pop-up.png[] + +. Create `Open In New Tab` button. + +. On the next pop-up message: `Do you want VS Code - Open Source to open the external website?` click on `Open` button. + +. Rendered content will now be displayed in another tab. + +. You may continue with your content development in the `vscode` interface provided by devspace. + +. When you save your changes in the content files in devspace interface, the changes will be reflected in the rendered content url as soon as you refresh the url. + +See https://github.com/RedHatQuickCourses/course-starter-template/blob/main/DEVSPACE.md + +== Commit changes to GitHub + +FIXME + +. Step 1 +. Step 2 + +== Next step + +Refer to the xref:section3.adoc[Quick course content format guide] for details on formatting your content layout. diff --git a/modules/course_guide/pages/dev_spaces.adoc b/modules/course_guide/pages/dev_spaces.adoc index cc302ac..f444db4 100644 --- a/modules/course_guide/pages/dev_spaces.adoc +++ b/modules/course_guide/pages/dev_spaces.adoc @@ -1,79 +1,41 @@ -= Use Devspace (skip if using local system) += Red Hat AI Factory with NVIDIA +:navtitle: Hackathon Objectives -Every Open Training course is developed in public GitHub repositories. -In order to make development as easy as possible, we provide you with the option of using a Dev Spaces instance. -If you're not familiar with this, just think of it as your normal IDE (VSCode in this case) running in the cloud. -It has everything you should need to write asciidoc, render into a preview, and interact with GitHub to push and pull. +== Introduction to the AI Factory -:toc: +Before building the blueprints, we must align on the core value of the platform we are enabling. Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments. -== Set up or Access Dev Spaces Instance +It combines the integrated AI platform capabilities of Red Hat AI Enterprise with NVIDIA's accelerated computing, networking, and NVIDIA AI Enterprise software. The primary goal of this platform is to transform the ad-hoc creation, customization, and deployment of AI models into a repeatable, scalable, and safe-guarded factory process. -. After the GitHub repository is created for the course, you will see a `Developer Workspace` button in the README section of the repository. -+ -Click this button to launch the Dev Spaces instance. -+ -image::../click-devspace-button.png[] +== How Our Hackathon Objectives Drive Business Value -. When prompted, select the `Log in with OpenShift` button and use the credentials that you were provided. -+ -This is usually your Red Hat SSO credential. -+ -image::../click-login-with-openshift.png[] +The five core objectives of this hackathon are not just technical exercises; they directly map to the business outcomes organizations need to move from AI experimentation to industrial-scale, enterprise-wide production. -. Once you have successfully logged in, select the option to `Open the existing workspace` or `Switch to running workspace` if prompted. -+ -Ignore this step if not prompted for this option. -+ -image::../select-workspace-1.png[] -+ -image::../select-workspace-2.png[] +Here is how the blueprints you are building translate to customer success: -. When the VSCode interface loads, click `Yes, I trust the authors`. -+ -image::../trust-authors.png[] -+ -NOTE: Why do I trust them? +=== 1. Production-Ready Deployments +* **The Objective:** Develop repeatable Quickstarts and Playbooks. +* **The AI Factory Value:** We provide predefined blueprints and quickstarts with best practice AI workflow patterns. +* **The Business Outcome:** This configuration and deployment strategy helps customers realize value faster. It accelerates time-to-value by providing streamlined workflows and instant access to pre-configured models, delivered as NVIDIA NIM microservices. -That is it! -You are ready to start writing your content. -The file and folder structure is already in place, so you just need to start filling in blanks and deleting files that you won't need. +=== 2. Autonomous Agents +* **The Objective:** Build enablement on the Llama Stack API and OpenShell to deploy industrial-scale AI agents. +* **The AI Factory Value:** Enterprise AI spending is driven in large part by agentic AI applications. +* **The Business Outcome:** Organizations can successfully shift their strategies toward high-density, agentic workflows and address the resulting demands on AI inference and infrastructure. -== Render content draft +=== 3. Performance Standards +* **The Objective:** Establish hardware and storage benchmarking standards for high-performance environments. +* **The AI Factory Value:** The platform maximizes infrastructure usage and bolsters inference performance with a unified, high-performance serving stack. +* **The Business Outcome:** By tapping into Red Hat AI inference capabilities powered by vLLM, NVIDIA TensorRT-LLM, and NVIDIA Dynamo, organizations can meet strict AI service level objectives and reduce the total cost of ownership (TCO). -NOTE: Make your training content repository is initialized and the changes are committed by the training team before using it in the devspace. +=== 4. Security & Regulations +* **The Objective:** Integrate STIG-hardened containers and RHEL for regulated industries. +* **The AI Factory Value:** Leveraging the flexible and stable foundation of Red Hat Enterprise Linux, organizations benefit from advanced security and compliance capabilities built-in from the start. +* **The Business Outcome:** This delivers a security-hardened foundation for mission-critical AI workloads that require isolation and continuous verification. Furthermore, NVIDIA DOCA microservices build on this foundation to create a zero-trust architecture. -. Load your content repository in the devspace environment using the steps mentioned in FIXME -. Click on the search bar for Workspace on top and click on Run Task option, then click devfile. -+ -image::../devspace-runtask.png[] -+ -. Click on `0-install` option and wait for it to finish. -. Repeat the earlier step to select devfile and click on `1-watch` option this time. -. Repeat the same steps and select `2-serve` option now. -. Pop-up will be displayed at the bottom of the screen. -+ -image::../devspace-pop-up.png[] +=== 5. Broader Field Enablement +* **The Objective:** Create a high-impact content library to enable the broader field. +* **The AI Factory Value:** The platform is supported on AI factory infrastructure from leading systems manufacturers, including Cisco, Dell Technologies, Lenovo and Supermicro. +* **The Business Outcome:** By enabling the field with your blueprints, you empower IT administrators and operations teams to scale and maintain AI deployments with the same operational rigor and predictability as any enterprise workload. -. Create `Open In New Tab` button. - -. On the next pop-up message: `Do you want VS Code - Open Source to open the external website?` click on `Open` button. - -. Rendered content will now be displayed in another tab. - -. You may continue with your content development in the `vscode` interface provided by devspace. - -. When you save your changes in the content files in devspace interface, the changes will be reflected in the rendered content url as soon as you refresh the url. - -See https://github.com/RedHatQuickCourses/course-starter-template/blob/main/DEVSPACE.md - -== Commit changes to GitHub - -FIXME - -. Step 1 -. Step 2 - -== Next step - -Refer to the xref:section3.adoc[Quick course content format guide] for details on formatting your content layout. +--- \ No newline at end of file diff --git a/modules/course_guide/pages/local_system copy.adoc b/modules/course_guide/pages/local_system copy.adoc new file mode 100644 index 0000000..ba98910 --- /dev/null +++ b/modules/course_guide/pages/local_system copy.adoc @@ -0,0 +1,34 @@ += Setup local system (skip if using devspace) +:toc: + +== Get started + +Follow the instructions on xref:starthere:workflow.adoc[Get Started] page and wait for a response from the training team. + +== Install required packages + +=== Linux + +=== Mac + +== Work with git repository + +* Clone +* Git add, commit, push + +== Preview content + +cd $CONTENTREPO + +* npm install +npm install . + +* npm watch +npm run watch:adoc + +* npm serve +npm run serve + +== Next step + +Refer to the xref:section3.adoc[Quick course content format guide] for details on formatting your content layout. diff --git a/modules/course_guide/pages/local_system.adoc b/modules/course_guide/pages/local_system.adoc index ba98910..749ef2e 100644 --- a/modules/course_guide/pages/local_system.adoc +++ b/modules/course_guide/pages/local_system.adoc @@ -1,34 +1,127 @@ -= Setup local system (skip if using devspace) -:toc: += Course Design Document (CDD) Template +:navtitle: AI Assisted Course Design Template -== Get started +== Using This Template with AI -Follow the instructions on xref:starthere:workflow.adoc[Get Started] page and wait for a response from the training team. +As an elite engineer, your time is best spent on technical execution, not formatting documents. You can use this template to accelerate your course design by feeding it into an AI assistant. -== Install required packages +> **AI Prompt to Generate Your CDD:** +> _"You are an expert technical instructional designer. I am going to provide you with a blank Course Design Document (CDD) template, followed by my raw notes, code snippets, and objectives for a new Red Hat AI Factory blueprint. Please fill out the template using my notes. Ensure the tone is highly technical, focusing on production-ready deployments, and heavily emphasizes the 'Break-Fix' and 'How-To' troubleshooting elements."_ -=== Linux +--- -=== Mac +== 1. Course Metadata & Executive Summary -== Work with git repository +* **Course Title:** [Insert Blueprint/Playbook Title] +* **Target Product Versions:** [e.g., Red Hat OpenShift AI 3.4+, Red Hat build of Kueue 1.2+, NVIDIA vGPU 16.x] +* **Estimated Duration:** [e.g., 2 Hours, Half-Day] +* **Format:** [Choose one: How-To (Step-by-step) OR Break-Fix (Troubleshooting)] -* Clone -* Git add, commit, push +**Executive Summary:** +[Provide a 2-3 sentence overview. What is this course? Why does it matter to the business? Example: "This course prepares Platform Engineers to deploy MaaS on RHOAI, maximizing GPU ROI by driving utilization up to 90%."] -== Preview content +**Key Differentiators:** +* [e.g., Hands-on labs with real A100 GPU clusters] +* [e.g., Focuses on Day 2 operational troubleshooting rather than just Day 1 installation] -cd $CONTENTREPO +--- -* npm install -npm install . +== 2. Target Audience & Prerequisites -* npm watch -npm run watch:adoc +**Primary Persona:** * **Role:** [e.g., Platform Engineer, DevOps/SRE] +* **Responsibilities:** [e.g., Designing scheduling queues, managing cluster quotas] -* npm serve -npm run serve +**Prerequisites:** +* [List required prior knowledge. e.g., Deep understanding of Kubernetes ResourceQuotas] +* [List required completed training. e.g., Nvidia GPU Enablement module] -== Next step +--- -Refer to the xref:section3.adoc[Quick course content format guide] for details on formatting your content layout. +== 3. Skill & Task Mapping (The "TL3" Depth Check) + +Before outlining the chapters, map out the core learning objectives (LOs). Every concept must tie directly to a practical task and a troubleshooting scenario. + +[cols="1,1,1,1",options="header"] +|=== +| Learning Objective (LO) +| Core Concept (The "Why") +| Practical Task (The "How") +| Troubleshooting Focus (Day 2) + +| *Example: Deploy Kueue* +| *Why vanilla Kubernetes scheduling limits GPU efficiency.* +| *Deploy ResourceFlavors, ClusterQueues, and LocalQueues.* +| *Diagnosing failed installations due to legacy CRDs.* + +| LO 1: [Insert Objective] +| [Insert Concept] +| [Insert Task] +| [Insert Troubleshooting Scenario] + +| LO 2: [Insert Objective] +| [Insert Concept] +| [Insert Task] +| [Insert Troubleshooting Scenario] +|=== + +--- + +== 4. Course Architecture & Module Breakdown + +Break the blueprint down into logical modules (which will become your AsciiDoc `chapters`). For each module, define the progression. + +=== Module 1: [Module Title] +* **Estimated Time:** [e.g., 60 minutes] +* **Learning Objective:** [Tie back to the LOs defined above] +* **Topics Covered:** +** [Topic 1] +** [Topic 2] +* **Hands-on Lab Scenario:** +** [Describe the specific environment and the task the learner must complete. e.g., "Configure MIG partitioning for 2x 3g.20gb instances."] +* **Validation Checkpoints (How does the learner know they succeeded?):** +** [e.g., ✅ All GPU operator pods in RUNNING state] +** [e.g., ✅ Workloads correctly preempted based on priority] + +=== Module 2: [Module Title] +* **Estimated Time:** [e.g., 90 minutes] +* **Learning Objective:** [Tie back to the LOs defined above] +* **Topics Covered:** +** [Topic 1] +** [Topic 2] +* **Hands-on Lab / Break-Fix Scenario:** +** [Describe the broken state. e.g., "Learner is given an environment where pending RayCluster workloads fail due to insufficient quota."] +* **Validation Checkpoints:** +** [e.g., ✅ Workload resumes and completes successfully] + +--- + +== 5. Lab Infrastructure Requirements + +Define the exact environment the Open Training team (or RHDP) needs to provide for this blueprint to work. + +* **Hardware Requirements:** [e.g., Requires at least 1 worker node equipped with 4 GPUs (e.g., AWS p3.8xlarge instance)] +* **Software/Operators Required:** [e.g., OpenShift Container Platform 4.14+, NVIDIA GPU Operator] +* **Pre-Provisioned State:** [e.g., The NVIDIA GPU Operator must be pre-installed. The GPU worker node must be pre-tainted with `nvidia.com/gpu=Exists:NoSchedule`] +* **External Access:** [e.g., Requires external route access for API Gateway validation] + +--- + +== 6. Open Questions & Technical Decisions + +[Use this section during the Hackathon to flag blockers or design choices you need to finalize with the team.] +* ❓ [e.g., Do we standardize on A10s or require a mix of GPU types for the lab?] +* ❓ [e.g., Should we include OpenShift Logging (EFK/Loki) for the troubleshooting section?] + + + + +cat <P1)427Qyl`3_^l4Uj=pf`vRJpmWszne-RA@(^s&yF_?T~{OYEIBWB;`#X& zlQ95W-VR^D48RB76$>8*W{lr)!4^L_;(9t<_q+4?*VA~*y&lkcjmPy|mWY4|h=2%) zfC!9;Kpf&c|363cOnMX%5P@+J@b5#RyVlg!H9j32q6MH%nGWMTdI@Ur1huBNuFTLZ zy9disi#EjbQBEznuco%Hy&RU!hvl8kyBM1Fa#&$Nvl^m71Vms!VAA86pa0+Vzxw|{ zi9!(&ffplS)75&l_F#mSr3Gdr?uX6N|J4*(v_ B48i~a delta 32 ocmZoMXfc@J&&aVcU^gQp$7UX;)r_03FdMT>Y>?f|&heKY0H`|(K>z>% diff --git a/modules/references/nav.adoc b/modules/references/nav.adoc index 0933b2b..130b265 100644 --- a/modules/references/nav.adoc +++ b/modules/references/nav.adoc @@ -1,5 +1,5 @@ -* xref:index.adoc[] -** xref:glossary.adoc[] +* References +// ** xref:glossary.adoc[] ** xref:asciidocqrg.adoc[] -** xref:faq.adoc[] +// ** xref:faq.adoc[] ** xref:resources.adoc[] \ No newline at end of file diff --git a/modules/references/pages/asciidocqrg copy.adoc b/modules/references/pages/asciidocqrg copy.adoc new file mode 100644 index 0000000..4badd5f --- /dev/null +++ b/modules/references/pages/asciidocqrg copy.adoc @@ -0,0 +1,226 @@ += Asciidoc Quick Reference Guide + +== HEADINGS + +Refer to the heading of this page (_Asciidoc Quick Reference Guide_) for an example of the *top level heading*. This is used for the navigation (previous/next) of pages in the rendered training content. + +.Syntax: +[source] +---- += This is a top level heading +---- + +== This is a second level heading + +.Syntax: +[source] +---- +== This is a second level heading +---- + +=== This is a third level heading + +.Syntax: +[source] +---- +=== This is a third level heading +---- + +== TEXT + +This is example of normal text. + +You can write the text in *Bold* or in _italics_. + +You can use `commands`. + +You can #highlight# text. + +.Syntax: +[source] +---- +This is example of normal text. +You can write the text in *Bold* or in _italics_. +You can use `commands` (note the backticks). +You can #highlight# text. +---- + +For a new paragraph, skip a line. + +You may also use hard line breaks like this + +for a new line within the paragraph. + +.Syntax: +[source] +---- +For a new paragraph, skip a line. + +You may also use hard line breaks like this + +for a new line within the paragraph. +---- + +== LINKS + +Link to an *external website* with the https://docs.asciidoctor.org/asciidoc/latest/[click here,window=_blank] option. (This will open in another tab or window of the browser.) + +.Syntax: +[source] +---- +Link to an external website with https://docs.asciidoctor.org/asciidoc/latest/[click here,window=_blank]. +---- + +Link to a different *page in the same section* with xref:faq.adoc[the other page within the same section]. (This will open in the same browser window.) + +.Syntax: +[source] +---- +Link to another page in the same section with xref:faq.adoc[the other page within the same section]. +---- + +Link to a *page in a different section* with xref:course_guide:course_structure.adoc[the other page in the different section]. (This will open in the same browser window.) + +.Syntax: +[source] +---- +Link to a page in a different section with xref:course_guide:course_structure.adoc[the other page in the different section]. +---- + +== LISTS AND BULLETS + +. Numbered Step 1 +. Numbered Step 2 +. Numbered Step 3 + .. Sub Numbered Step 1 + .. Sub Numbered Step 2 +. Numbered Step 4 + +.Syntax: +[source] +---- +. Numbered Step 1 +. Numbered Step 2 +. Numbered Step 3 + .. Sub Numbered Step 1 + .. Sub Numbered Step 2 +. Numbered Step 4 +---- + +* Bullet list item 1 +* Bullet list item 2 + ** Sub Bullet list item 1 + ** Sub Bullet list item 2 +* Bullet list item 3 + +.Syntax: +[source] +---- +* Bullet list item 1 +* Bullet list item 2 + ** Sub Bullet list item 1 + ** Sub Bullet list item 2 +* Bullet list item 3 +---- + + +== CODE BLOCKS +Refer to https://docs.asciidoctor.org/asciidoc/latest/verbatim/source-blocks/[Asciidoc documentation,window=_blank]. + + +== CALLOUTS + +NOTE: Highlighted text for Note Callout + +.Syntax: +[source] +---- +NOTE: Highlighted text for Note Callout +---- + +WARNING: Highlighted text for Warning Callout + +.Syntax: +[source] +---- +WARNING: Highlighted text for Warning Callout +---- + +IMPORTANT: Highlighted text for Important Callout + +.Syntax: +[source] +---- +IMPORTANT: Highlighted text for Important Callout +---- + +TIP: Highlighted text for Tip Callout + +.Syntax: +[source] +---- +TIP: Highlighted text for Tip Callout +---- + +CAUTION: Highlighted text for Caution Callout + +.Syntax: +[source] +---- +CAUTION: Highlighted text for Caution Callout +---- + +== MEDIA + +To render an image on the page, copy the required image in `modules/chapterN/images` directory and reference it as below. +---- +image::sample-image.jpg[] +---- + +Example: + +image::sample-image.png[] + +Audio files also go into the `chapter/images` directory and are referenced as below. +---- +audio::audio-file.wav[] +---- + +Example: + +audio::audio-file.wav[] + +Video files also go into the `chapter/images` directory and are referenced as below. +---- +video::video-file.mp4[] +---- + +Example: + +video::video-file.mp4[] + + +== TABLES + +Table without header row: + +[cols="1,1"] +|=== +|Cell in column 1, row 1 +|Cell in column 2, row 1 + +|Cell in column 1, row 2 +|Cell in column 2, row 2 + +|Cell in column 1, row 3 +|Cell in column 2, row 3 +|=== + +Table with header row: + +[cols="2*",options="header"] +|=== +|Column 1, header row +|Column 2, header row + +|Cell in column 1, row 2 +|Cell in column 2, row 2 + +|Cell in column 1, row 3 +|Cell in column 2, row 3 +|=== diff --git a/modules/references/pages/asciidocqrg.adoc b/modules/references/pages/asciidocqrg.adoc index 4badd5f..9b50932 100644 --- a/modules/references/pages/asciidocqrg.adoc +++ b/modules/references/pages/asciidocqrg.adoc @@ -1,222 +1,217 @@ -= Asciidoc Quick Reference Guide += AsciiDoc Quick Reference Guide +:navtitle: AsciiDoc Reference -== HEADINGS +== Introduction -Refer to the heading of this page (_Asciidoc Quick Reference Guide_) for an example of the *top level heading*. This is used for the navigation (previous/next) of pages in the rendered training content. +When building out your playbooks and technical blueprints, you want the focus to remain on the content, not the markup. Use this quick reference guide to handle the most common formatting needs, from basic text styling to embedding rich media and visual callouts. -.Syntax: -[source] ----- -= This is a top level heading ----- +For deep dives into the syntax, you can always refer to the official https://docs.asciidoctor.org/asciidoc/latest/[AsciiDoc Language Documentation,window=_blank] or the https://docs.antora.org/antora/latest/[Antora Documentation,window=_blank]. -== This is a second level heading +--- -.Syntax: -[source] ----- -== This is a second level heading ----- +== Basic Text Formatting -=== This is a third level heading +Make your text readable by using these standard inline formats: -.Syntax: -[source] ----- -=== This is a third level heading ----- +* **Bold:** `*Text goes here*` renders as *Text goes here* +* **Italics:** `_Text goes here_` renders as _Text goes here_ +* **Monospace (Code inline):** `+`Code goes here`+` renders as `Code goes here` +* **Highlight:** `##Text goes here##` renders as highlighted text. -== TEXT +== Headings & Structure -This is example of normal text. + -You can write the text in *Bold* or in _italics_. + -You can use `commands`. + -You can #highlight# text. +Use equal signs (`=`) to create sections. Remember that a single `=` is reserved for the document title at the top of the page. -.Syntax: -[source] +[source,asciidoc] ---- -This is example of normal text. -You can write the text in *Bold* or in _italics_. -You can use `commands` (note the backticks). -You can #highlight# text. +== Level 1 Section (Heading 2) +=== Level 2 Section (Heading 3) +==== Level 3 Section (Heading 4) ---- -For a new paragraph, skip a line. +== Lists -You may also use hard line breaks like this + -for a new line within the paragraph. +Keep your steps clear and concise. Do not nest lists too deeply. -.Syntax: -[source] +**Bullet Points (Unordered):** +[source,asciidoc] ---- -For a new paragraph, skip a line. - -You may also use hard line breaks like this + -for a new line within the paragraph. +* First item +* Second item +** Sub-item +* Third item ---- -== LINKS - -Link to an *external website* with the https://docs.asciidoctor.org/asciidoc/latest/[click here,window=_blank] option. (This will open in another tab or window of the browser.) - -.Syntax: -[source] +**Numbered Steps (Ordered):** +[source,asciidoc] ---- -Link to an external website with https://docs.asciidoctor.org/asciidoc/latest/[click here,window=_blank]. +. Step one +. Step two +.. Sub-step +. Step three ---- -Link to a different *page in the same section* with xref:faq.adoc[the other page within the same section]. (This will open in the same browser window.) +--- -.Syntax: -[source] ----- -Link to another page in the same section with xref:faq.adoc[the other page within the same section]. ----- +== Visual Callouts (Admonitions) -Link to a *page in a different section* with xref:course_guide:course_structure.adoc[the other page in the different section]. (This will open in the same browser window.) +When you need to draw attention to best practices, security warnings (e.g., STIG requirements), or helpful tips, use admonitions. -.Syntax: -[source] ----- -Link to a page in a different section with xref:course_guide:course_structure.adoc[the other page in the different section]. +[source,asciidoc] ---- +NOTE: This is a standard note for general information. -== LISTS AND BULLETS +TIP: Use this to share a shortcut or best practice. -. Numbered Step 1 -. Numbered Step 2 -. Numbered Step 3 - .. Sub Numbered Step 1 - .. Sub Numbered Step 2 -. Numbered Step 4 +IMPORTANT: Use this for crucial information the user must not skip. -.Syntax: -[source] ----- -. Numbered Step 1 -. Numbered Step 2 -. Numbered Step 3 - .. Sub Numbered Step 1 - .. Sub Numbered Step 2 -. Numbered Step 4 +WARNING: Use this to warn the user about potential issues. + +CAUTION: Use this to advise against actions that could cause data loss or system failure. ---- -* Bullet list item 1 -* Bullet list item 2 - ** Sub Bullet list item 1 - ** Sub Bullet list item 2 -* Bullet list item 3 +--- -.Syntax: -[source] ----- -* Bullet list item 1 -* Bullet list item 2 - ** Sub Bullet list item 1 - ** Sub Bullet list item 2 -* Bullet list item 3 ----- +NOTE: This is a standard note for general information. -== CODE BLOCKS -Refer to https://docs.asciidoctor.org/asciidoc/latest/verbatim/source-blocks/[Asciidoc documentation,window=_blank]. +IMPORTANT: Use this for crucial information the user must not skip. +--- -== CALLOUTS +== Code Blocks -NOTE: Highlighted text for Note Callout +Since you are building technical blueprints, you will frequently share code snippets, JSON, or YAML configurations. Wrap your code in four hyphens (`----`) and specify the language for syntax highlighting. -.Syntax: -[source] +[source,asciidoc] +...... +[source,yaml] ---- -NOTE: Highlighted text for Note Callout +apiVersion: v1 +kind: Pod +metadata: + name: example-pod ---- +...... -WARNING: Highlighted text for Warning Callout +--- -.Syntax: -[source] ----- -WARNING: Highlighted text for Warning Callout ----- +== Adding Rich Media (Images, Videos, HTML) -IMPORTANT: Highlighted text for Important Callout +Break up large blocks of text with visual architecture diagrams or instructional videos. -.Syntax: -[source] +=== Images +Ensure your images are saved in the `images/` directory at the same level as your `.adoc` files. + +[source,asciidoc] ---- -IMPORTANT: Highlighted text for Important Callout +// Basic image insertion +image::architecture-diagram.png[Architecture Diagram] + +// Image with specific formatting (width, alignment) +image::architecture-diagram.png[Architecture Diagram, width=600, align="center"] ---- -TIP: Highlighted text for Tip Callout +=== Videos +You can easily embed videos from YouTube or Vimeo to provide visual walk-throughs. -.Syntax: -[source] +[source,asciidoc] ---- -TIP: Highlighted text for Tip Callout +video::dQw4w9WgXcQ[youtube, width=640, height=480] +video::123456789[vimeo] ---- -CAUTION: Highlighted text for Caution Callout +=== Raw HTML Pass-through +If you have a specific HTML embed code (like an interactive terminal or a specialized web component) that AsciiDoc doesn't natively support, you can pass it straight through to the browser. -.Syntax: -[source] +[source,asciidoc] ---- -CAUTION: Highlighted text for Caution Callout +++++ + +++++ ---- -== MEDIA +.example Arcade embed. +++++ + +++++ + +== Hard Line Breaks -To render an image on the page, copy the required image in `modules/chapterN/images` directory and reference it as below. +Sometimes you need to start a new line without creating a completely new paragraph. You can use a hard line break by placing a plus sign (`+`) at the end of the line. + +[source,asciidoc] ---- -image::sample-image.jpg[] +You may also use hard line breaks like this + +for a new line within the paragraph. ---- -Example: +--- -image::sample-image.png[] +== Links & Cross-References -Audio files also go into the `chapter/images` directory and are referenced as below. ----- -audio::audio-file.wav[] ----- +Connecting your learners to external resources or other parts of your course is crucial for building a cohesive blueprint. -Example: +=== External Links +To link to an external website, include the URL followed by the text in brackets. Use `window=_blank` so it opens in a new tab without losing the course page. -audio::audio-file.wav[] +[source,asciidoc] +---- +Read the https://docs.asciidoctor.org/asciidoc/latest/[official documentation,window=_blank]. +---- -Video files also go into the `chapter/images` directory and are referenced as below. +=== Internal Links (Cross-References) +To link to another page within the same chapter/section, use the `xref:` command. +[source,asciidoc] ---- -video::video-file.mp4[] +Check out the xref:faq.adoc[FAQ page] for more details. ---- -Example: +To link to a page in a completely different section/module, include the module name. +[source,asciidoc] +---- +Review the xref:course_guide:course_structure.adoc[Course Structure guide]. +---- -video::video-file.mp4[] +--- +== Tables -== TABLES +Tables are fantastic for comparing hardware benchmarks, organizing STIG requirements, or mapping out parameters. -Table without header row: +Here is the syntax for a standard table with a header row: -[cols="1,1"] +[source,asciidoc] +...... +[cols="2*",options="header"] |=== -|Cell in column 1, row 1 -|Cell in column 2, row 1 +|Column 1 Header +|Column 2 Header |Cell in column 1, row 2 |Cell in column 2, row 2 |Cell in column 1, row 3 |Cell in column 2, row 3 -|=== +|=== +...... -Table with header row: +--- [cols="2*",options="header"] |=== -|Column 1, header row -|Column 2, header row +|Column 1 Header +|Column 2 Header |Cell in column 1, row 2 |Cell in column 2, row 2 @@ -224,3 +219,29 @@ Table with header row: |Cell in column 1, row 3 |Cell in column 2, row 3 |=== + +--- + +== Local Media & Audio + +If you are uploading local media files rather than linking out to YouTube or external URLs, you must place the files directly into the `modules/chapterN/images` directory. + +*Note: Even audio and video files go into the `images` folder!* + +**To reference an image:** +[source,asciidoc] +---- +image::sample-image.jpg[] +---- + +**To reference local video:** +[source,asciidoc] +---- +video::video-file.mp4[] +---- + +**To reference local audio (great for voiceover explanations):** +[source,asciidoc] +---- +audio::audio-file.wav[] +---- \ No newline at end of file diff --git a/modules/start_here/images/qc-structure.jpg b/modules/start_here/images/qc-structure.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9395a9ac8d8c3866f3ebda326284da384eb7c40c GIT binary patch literal 90296 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℘8;Cy(rM3`X?*+p{Rpj%HQ$re7np@~T4 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 F{sUd3{bv9G literal 0 HcmV?d00001 diff --git a/modules/start_here/pages/workflow copy.adoc b/modules/start_here/pages/workflow copy.adoc new file mode 100644 index 0000000..5372e11 --- /dev/null +++ b/modules/start_here/pages/workflow copy.adoc @@ -0,0 +1,30 @@ += Getting started + +You don't need to overplan, but you should have a plan. +Follow these high level steps to get started: + +. Make sure you know what kind of training you want to create. +There are a few different types to choose from: +* xref:references:glossary.adoc#Know-It[know-it training] focuses on knowledge content and does not have any lab environments. +Think about this as something closer to a blog. +* xref:references:glossary.adoc#How-To[how-to training] focuses on hands-on labs across a variety of activities from installation to use-cases with Red Hat products. +* xref:references:glossary.adoc#Break-Fix[break-fix training] is a subset of how-to and focuses on on troubleshooting activities in a hands-on lab environment. + +. If you need a learner to have a lab environment, decide which one you want to use: +* xref:references:glossary.adoc#RHDP[Red Hat Demo Platform (RHDP)] is the preferred lab type and should be suitable for all *how-to* and *break-fix* content. +* xref:references:glossary.adoc#ROLE[ROLE] can be used for content that has an established plan for publication on the GLS platform. + +. Submit a https://docs.google.com/forms/d/e/1FAIpQLSepUaRiRdyA3PEzLP8w59reAsKRe19dL3ewpJGvJ7Gbggt-xg/viewform[training request,window=_blank] for type *Open Training*. +This will notify our Learning Product Managers and they will contact you as quickly as possible either with a request for more information or with the next steps, which is usually to connect you with the team that will help get your work going. ++ +NOTE: You may track or update your request in https://issues.redhat.com/secure/RapidBoard.jspa?rapidView=20243[Jira,window=_blank]. + +. Once the request is validated and approved, write the content and work with the PTL team to develop the lab environment. +This is the part that you came here to do and where you should spend most of your time. + +== What Next? + +Once you have completed these steps and are ready to start, you can find more guidance in the following sections: + +* xref:course_guide:index.adoc[Course development] +* xref:lab:index.adoc[Lab development] \ No newline at end of file diff --git a/modules/start_here/pages/workflow.adoc b/modules/start_here/pages/workflow.adoc index 5372e11..66516f5 100644 --- a/modules/start_here/pages/workflow.adoc +++ b/modules/start_here/pages/workflow.adoc @@ -1,30 +1,44 @@ -= Getting started += Execution Strategy & Course Structure +:navtitle: Strategy & Structure -You don't need to overplan, but you should have a plan. -Follow these high level steps to get started: -. Make sure you know what kind of training you want to create. -There are a few different types to choose from: -* xref:references:glossary.adoc#Know-It[know-it training] focuses on knowledge content and does not have any lab environments. -Think about this as something closer to a blog. -* xref:references:glossary.adoc#How-To[how-to training] focuses on hands-on labs across a variety of activities from installation to use-cases with Red Hat products. -* xref:references:glossary.adoc#Break-Fix[break-fix training] is a subset of how-to and focuses on on troubleshooting activities in a hands-on lab environment. +== Content Formats -. If you need a learner to have a lab environment, decide which one you want to use: -* xref:references:glossary.adoc#RHDP[Red Hat Demo Platform (RHDP)] is the preferred lab type and should be suitable for all *how-to* and *break-fix* content. -* xref:references:glossary.adoc#ROLE[ROLE] can be used for content that has an established plan for publication on the GLS platform. +image::../qc-structure.jpg[] -. Submit a https://docs.google.com/forms/d/e/1FAIpQLSepUaRiRdyA3PEzLP8w59reAsKRe19dL3ewpJGvJ7Gbggt-xg/viewform[training request,window=_blank] for type *Open Training*. -This will notify our Learning Product Managers and they will contact you as quickly as possible either with a request for more information or with the next steps, which is usually to connect you with the team that will help get your work going. -+ -NOTE: You may track or update your request in https://issues.redhat.com/secure/RapidBoard.jspa?rapidView=20243[Jira,window=_blank]. +== Understanding the QuickCourse Directory Structure -. Once the request is validated and approved, write the content and work with the PTL team to develop the lab environment. -This is the part that you came here to do and where you should spend most of your time. +The Red Hat QuickCourse toolchain is built on the Antora project. The structure of the course is organized as a hierarchy, so it's helpful to think of the content in terms of chapters, or modules, and then pages, or sections. -== What Next? +When you open your assigned repository, you will see the following key components: -Once you have completed these steps and are ready to start, you can find more guidance in the following sections: +=== 1. The Orchestrator: `antora.yml` +At the top level (course), the `antora.yml` file defines the overall structure. It contains the course title and the links to the `nav.adoc` files in each module. -* xref:course_guide:index.adoc[Course development] -* xref:lab:index.adoc[Lab development] \ No newline at end of file +[source,yaml] +---- +name: course +title: Course Title +version: 1 +nav: +- modules/ch1/nav.adoc +- modules/ch2/nav.adoc +---- + +=== 2. The Chapters: `modules/` +You will see a `modules` directory, with each module/chapter as a sub-directory. They do not need to be labeled ch1, ch2, etc., but their exact folder names must appear in the `antora.yml` file. + +=== 3. The Map: `nav.adoc` +Inside each module/chapter directory, there is a `nav.adoc` file. This is the listing of the `.adoc` files that actually contain your content. + +[source,asciidoc] +---- +* xref:index.adoc[] +** xref:section1.adoc[] +** xref:section2.adoc[] +---- + +=== 4. The Content & Visuals: `pages/` and `images/` +Your written `.adoc` files should be placed in a `pages` directory. Any images that need to be referenced go into an `images` directory at the same level as `pages` and the `nav.adoc` file. + +--- \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2e9895c..d74a287 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,7 @@ "requires": true, "packages": { "": { + "name": "developer-guide", "devDependencies": { "@antora/cli": "3.1.3", "@antora/site-generator": "3.1.3", @@ -376,6 +377,22 @@ "node": ">=8.0.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -415,22 +432,24 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -494,13 +513,50 @@ } }, "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -633,10 +689,11 @@ "dev": true }, "node_modules/convict": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", - "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.5.tgz", + "integrity": "sha512-JtXpxqDqJ8P0UwEHwhxLzCIXQy97vlYBZR222Sbzb1q1Erex9ASrztJ29SyhWFQjod1AeFBaPzEEC8YvtZMIYg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lodash.clonedeep": "^4.5.0", "yargs-parser": "^20.2.7" @@ -705,6 +762,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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==", + "dev": true, + "license": "MIT", + "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-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -727,6 +802,21 @@ "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==", "dev": true }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexify": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", @@ -748,6 +838,39 @@ "once": "^1.4.0" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", @@ -809,10 +932,11 @@ } }, "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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -855,9 +979,9 @@ } }, "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==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, "funding": [ { @@ -865,6 +989,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -874,6 +999,22 @@ } } }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/fs-mkdirp-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", @@ -894,26 +1035,54 @@ "dev": true }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -984,6 +1153,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -1010,13 +1192,14 @@ } }, "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, @@ -1030,18 +1213,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1052,22 +1223,24 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1075,11 +1248,15 @@ "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==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -1087,6 +1264,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -1107,10 +1297,11 @@ } }, "node_modules/help-me/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -1135,10 +1326,11 @@ } }, "node_modules/help-me/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1284,6 +1476,19 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1319,6 +1524,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -1335,6 +1541,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -1412,10 +1634,11 @@ } }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1490,10 +1713,11 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", @@ -1501,6 +1725,16 @@ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "dev": true }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -1547,10 +1781,11 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1634,10 +1869,14 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1754,10 +1993,11 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1881,6 +2121,16 @@ "node": ">= 0.12.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -1907,6 +2157,7 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "peer": true, "engines": { "node": ">=0.4.0" } @@ -1933,12 +2184,13 @@ } }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.15.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", + "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -2087,19 +2339,66 @@ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", "dev": true }, + "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==", + "dev": true, + "license": "MIT", + "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/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", "dev": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" }, "bin": { "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sha.js/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/should-proxy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz", @@ -2107,14 +2406,76 @@ "dev": true }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2323,11 +2684,55 @@ "node": ">=0.10.0" } }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-buffer/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-buffer/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2347,6 +2752,21 @@ "node": ">= 0.10" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -2611,6 +3031,28 @@ "node": ">=12" } }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",