diff --git a/app/api/template/extract/route.ts b/app/api/template/extract/route.ts index dc5b49c..e723f35 100644 --- a/app/api/template/extract/route.ts +++ b/app/api/template/extract/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from "next/server"; -import { extractContentControls } from "../lib-tmpl"; +import { extractContentControls, extractBookmark, templateContentControls, setCustomDocProps, getDocProps,templateDynamicContents } from "@/lib/lib-tmpl"; +import { verifyDataEd25519, verifyHmacSha256 } from "@/lib/lib-utils"; export const runtime = "nodejs"; @@ -14,6 +15,9 @@ export async function POST(request: Request) { try { const formData = await request.formData(); const file = formData.get("file"); + const TEST_SECRET = String(formData.get("secret"))??""; + const TEST_PUBLIC_KEY_HEX = String(formData.get("public_key"))??""; + if (!(file instanceof File)) { return NextResponse.json( @@ -52,12 +56,35 @@ export async function POST(request: Request) { const buffer = Buffer.from(await file.arrayBuffer()); // ใช้ lib-tmpl.ts เดิม - const data = extractContentControls(buffer); + // const data = extractContentControls(buffer); - return NextResponse.json({ + const cc = extractContentControls(buffer); + const bookmark = extractBookmark(buffer) + const properties = getDocProps(buffer) + let verify: Record ={} + const ticket_data = String(properties?.custom?.ticket_data) + const HmacSha256 = String(properties?.custom?.HmacSha256) + const Ed25519 = String(properties?.custom?.Ed25519) + + if(ticket_data){ + const ticketDataObj= JSON.parse(ticket_data) + const unix_timestamp = Number(ticketDataObj.exp)*1000 + if(unix_timestamp){ + verify['exp'] = new Date(unix_timestamp).toLocaleString("th-TH", { timeZone: "Asia/Bangkok" }) + } + if(TEST_SECRET && HmacSha256){ + verify['verifyHmacSha256'] = verifyHmacSha256(ticket_data,TEST_SECRET,HmacSha256) + } + if(TEST_PUBLIC_KEY_HEX&& Ed25519){ + verify["Ed25519"]=verifyDataEd25519(ticket_data,Ed25519,TEST_PUBLIC_KEY_HEX) + } + } + let returnData : Record = { success: true, - data, - }); + cc,bookmark,properties,verify + } + + return NextResponse.json(returnData); } catch (error) { console.error(error); diff --git a/app/api/template/render/route.ts b/app/api/template/render/route.ts index df6501c..8f04c9f 100644 --- a/app/api/template/render/route.ts +++ b/app/api/template/render/route.ts @@ -1,8 +1,6 @@ import { NextResponse } from "next/server"; -import { - templateContentControls, - type TemplateData, -} from "../lib-tmpl"; +import { DocumentTemplate, templateContentControls, setCustomDocProps, getDocProps, templateDynamicContents } from "@/lib/lib-tmpl"; +import { generateHmacSha256, verifyHmacSha256, signDataEd25519, verifyDataEd25519, sortObjectKeys } from '@/lib/lib-utils'; export const runtime = "nodejs"; @@ -20,7 +18,13 @@ export async function POST(request: Request) { const template = formData.get("template"); const dataFile = formData.get("data"); const dataJson = formData.get("dataJson"); + const TEST_SECRET = (typeof formData.get("secret") === "string") ? + String(formData.get("secret")) : "super_secret"; + const TEST_PRIVATE_KEY_HEX = (typeof formData.get("private_key") === "string") ? + String(formData.get("private_key")) : "8f2077b57b39399b6a7828f35da03a63ade8e3a36a6bf437b091a8bdb3d18ee1"; + console.log(`secret:${TEST_SECRET}`) + console.log(`private:${TEST_PRIVATE_KEY_HEX}`) // ----------------------------- // ตรวจสอบ Template // ----------------------------- @@ -62,14 +66,14 @@ export async function POST(request: Request) { // อ่าน JSON // ----------------------------- - let data: TemplateData; + let templateData: DocumentTemplate; // JSON ผิด syntax เป็นความผิดของฝั่งผู้เรียก — คืน 400 ไม่ใช่ 500 // (catch กลางท้ายฟังก์ชันสงวนไว้ให้ error ของระบบเท่านั้น) try { if (typeof dataJson === "string" && dataJson.length > 0) { // กรณีส่ง JSON ผ่าน form field - data = JSON.parse(dataJson) as TemplateData; + templateData = JSON.parse(dataJson) as DocumentTemplate; } else if (dataFile instanceof File) { if (dataFile.size > MAX_UPLOAD_BYTES) { return NextResponse.json( @@ -84,7 +88,7 @@ export async function POST(request: Request) { // กรณี upload data.json const text = await dataFile.text(); - data = JSON.parse(text) as TemplateData; + templateData = JSON.parse(text) as DocumentTemplate; } else { return NextResponse.json( { @@ -99,9 +103,8 @@ export async function POST(request: Request) { return NextResponse.json( { success: false, - error: `Invalid JSON data (${ - error instanceof Error ? error.message : "parse error" - }).`, + error: `Invalid JSON data (${error instanceof Error ? error.message : "parse error" + }).`, }, { status: 400 }, ); @@ -109,9 +112,9 @@ export async function POST(request: Request) { // JSON ต้องเป็น object if ( - data === null || - typeof data !== "object" || - Array.isArray(data) + templateData === null || + typeof templateData !== "object" || + Array.isArray(templateData) ) { return NextResponse.json( { @@ -126,18 +129,52 @@ export async function POST(request: Request) { // Template File → Buffer // ----------------------------- - const templateBuffer = Buffer.from( + let templateBuffer: Buffer = Buffer.from( await template.arrayBuffer(), ); - // ----------------------------- - // ใช้ lib-tmpl.ts เดิม - // ----------------------------- + //Calculate hash + const originalTicket_data = templateData?.info?.ticket_data //expect valid json string + // console.log("templateData",templateData?.info?.ticket_data) + if (originalTicket_data && typeof originalTicket_data === 'string') { + try { - const output = templateContentControls( - templateBuffer, - data, - ); + const ttlSeconds: number = 300 + const originalTicketObj = JSON.parse(originalTicket_data)//sort and add expire to ticket data + if (originalTicketObj && typeof originalTicketObj === 'object') { + console.log("Found valid ticket data: hash it") + // คำนวณค่า expire (ปัจจุบัน + จำนวนวินาทีที่ต้องการให้หมดอายุ) + // หาร 1000 เพราะต้องการหน่วยวินาที (sec) ไม่ใช่มิลลิวินาที (ms) + const expireTimestamp = Math.floor(Date.now() / 1000) + ttlSeconds; + const fullObj = { ...originalTicketObj, exp: expireTimestamp }; + const sortedObj = sortObjectKeys(fullObj); + + // แปลงกลับเป็น JSON string เพื่อนำไปใช้ส่งและทำ Hash + const ticket_data = JSON.stringify(sortedObj); + // console.log("check secret:",TEST_SECRET,TEST_PRIVATE_KEY_HEX,ticket_data) + const HmacSha256 = generateHmacSha256(ticket_data, TEST_SECRET) + + const Ed25519 = signDataEd25519(ticket_data, TEST_PRIVATE_KEY_HEX) + templateBuffer = setCustomDocProps(templateBuffer, { ticket_data, HmacSha256, Ed25519 }) + } + } catch (error) { + console.error("Set custom property fail",error); + + } + } + + // Apply Dynamic Content + if (templateData?.dc && typeof templateData?.dc === "object") { + console.log("Apply Dynamic Content") + templateBuffer = Buffer.from(await templateDynamicContents(templateBuffer, templateData.dc)) + } + // Apply Content Control + if (templateData?.cc && typeof templateData?.cc === "object") { + console.log("Apply Content Control") + templateBuffer = templateContentControls(templateBuffer, templateData.cc); + } + + const output = templateBuffer; // ----------------------------- // ส่ง DOCX กลับ diff --git a/lib/lib-tmpl.ts b/lib/lib-tmpl.ts new file mode 100755 index 0000000..4bf4b70 --- /dev/null +++ b/lib/lib-tmpl.ts @@ -0,0 +1,1263 @@ +import createReport from 'docx-templates'; +import PizzaZip from "pizzip"; +import { + DOMParser, + XMLSerializer, + type Document as XmlDocument, + type Element as XmlElement, + type Node as XmlNode, + type Attr as XmlAttr, +} from "@xmldom/xmldom"; +import xpath from "xpath"; +const WORD_NS = + "http://schemas.openxmlformats.org/wordprocessingml/2006/main"; + +export interface ExtractedData { + [tagName: string]: string; +} + +const asXpathNode = (node: XmlNode): globalThis.Node => + node as unknown as globalThis.Node; + +function createSelector() { + return xpath.useNamespaces({ w: WORD_NS }); +} + + +/** + * ฟังก์ชันสำหรับดึงข้อมูลจาก docx ออกมาเป็น JSON โดยอิงจาก Bookmark (w:bookmarkStart) + */ +export function extractBookmark(docxBuffer: Buffer,): ExtractedData { + const zip = new PizzaZip(docxBuffer); + const docXmlFile = zip.file("word/document.xml"); + + if (!docXmlFile) { + throw new Error("Invalid docx file: word/document.xml not found."); + } + const docXmlText: string = docXmlFile.asText(); + + // 3. Parse ข้อความ XML ให้เป็น DOM Object + const parser = new DOMParser(); + const doc = parser.parseFromString(docXmlText, "text/xml"); + + // 4. ตั้งค่า Namespace ของ Word XML เพื่อใช้ค้นหาด้วย XPath + const select = xpath.useNamespaces({ + 'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main' + }); + + const result: ExtractedData = {}; + + // ค้นหา Bookmark หรือ Tag ที่ใช้แบ่ง Section + // const bookmarks = select('//w:bookmarkStart', doc as unknown as globalThis.Node) as Element[]; + const bookmarks = select( + "//w:bookmarkStart", + doc as unknown as globalThis.Node + ) as unknown as XmlElement[]; + + bookmarks.forEach((bookmark: XmlElement) => { + const sectionName = bookmark.getAttribute('w:name'); + const bookmarkId = bookmark.getAttribute('w:id'); + + // กรองเอาเฉพาะ Bookmark ที่เราสนใจ (ไม่เอาพวกระบบสร้างเองอย่าง _GoBack) + if (sectionName && !sectionName.startsWith('_')) { + let extractedText = ""; + let currentNode: XmlNode | null = bookmark.nextSibling; + + // วนลูปอ่าน Node ถัดไปเรื่อยๆ จนกว่าจะเจอจุดสิ้นสุดของ Bookmark + while (currentNode) { + // ถ้าเจอจุดจบของ Bookmark ตัวเอง ให้หยุด + if ( + currentNode.nodeType === 1 && // Element node + (currentNode as XmlElement).nodeName === 'w:bookmarkEnd' && + (currentNode as XmlElement).getAttribute('w:id') === bookmarkId + ) { + break; + } + + // ดึง Text (w:t) ที่อยู่ภายใน Node ปัจจุบัน + const textNodes = select('.//w:t/text()', currentNode as unknown as globalThis.Node) as unknown as XmlNode[]; + textNodes.forEach((textNode: XmlNode) => { + if (textNode.nodeValue) { + extractedText += textNode.nodeValue; + } + }); + + currentNode = currentNode.nextSibling; + } + + // บันทึกลงผลลัพธ์ JSON + result[sectionName] = extractedText.trim(); + } + }); + + return result; +} + + + +/** + * อ่าน Content Control (w:sdt) จาก DOCX Buffer + * ปัจจุบันอ่านจาก word/document.xml ตาม logic ของโค้ดต้นฉบับ + */ +export function extractContentControls( + docxBuffer: Buffer, +): ExtractedData { + const zip = new PizzaZip(docxBuffer); + const docXmlFile = zip.file("word/document.xml"); + + if (!docXmlFile) { + throw new Error("Invalid docx file: word/document.xml not found."); + } + + const parser = new DOMParser(); + const doc = parser.parseFromString(docXmlFile.asText(), "text/xml"); + const select = createSelector(); + const result: ExtractedData = {}; + + const sdtNodes = select( + "//w:sdt", + asXpathNode(doc), + ) as unknown as XmlElement[]; + + sdtNodes.forEach((sdt) => { + const tagAttr = select( + "./w:sdtPr/w:tag/@w:val", + asXpathNode(sdt), + true, + ) as unknown as XmlAttr | undefined; + + const tagName = tagAttr?.value; + + if (!tagName) return; + + const sdtContent = select( + "./w:sdtContent", + asXpathNode(sdt), + true, + ) as unknown as XmlElement | undefined; + + if (!sdtContent) { + result[tagName] = ""; + return; + } + + const nodes = select( + ".//w:p | .//w:t | .//w:tab | .//w:br | .//w:noBreakHyphen | .//w:softHyphen | .//w:sym", + asXpathNode(sdtContent), + ) as unknown as XmlElement[]; + + let extractedText = ""; + + nodes.forEach((node) => { + switch (node.nodeName) { + case "w:p": + if ( + extractedText.length > 0 && + !extractedText.endsWith("\n") + ) { + extractedText += "\n\n"; + } + break; + + case "w:t": + extractedText += node.textContent || ""; + break; + + case "w:tab": + extractedText += "\t"; + break; + + case "w:br": + extractedText += "\n"; + break; + + case "w:noBreakHyphen": + extractedText += "\u2011"; + break; + + case "w:softHyphen": + extractedText += "\u00ad"; + break; + + case "w:sym": { + const charAttr = node.getAttribute("w:char"); + if (charAttr) { + const charCode = Number.parseInt(charAttr, 16); + extractedText += String.fromCharCode(charCode); + } + break; + } + } + }); + + result[tagName] = extractedText; + }); + + return result; +} + +type SdtControlType = "plain" | "rich" | "other"; +type SdtStructure = "block" | "inline"; + +function detectSdtControlType( + sdt: XmlElement, + select: xpath.XPathSelect, +): { type: SdtControlType; multiLine: boolean } { + const sdtPr = select( + "./w:sdtPr", + asXpathNode(sdt), + true, + ) as unknown as XmlElement | undefined; + + if (!sdtPr) { + return { type: "other", multiLine: false }; + } + + const textEl = select( + "./w:text", + asXpathNode(sdtPr), + true, + ) as unknown as XmlElement | undefined; + + if (textEl) { + const multiLineAttr = select( + "./@w:multiLine", + asXpathNode(textEl), + true, + ) as unknown as XmlAttr | undefined; + + return { + type: "plain", + multiLine: + multiLineAttr?.value === "1" || + multiLineAttr?.value === "true", + }; + } + + const richTextEl = select( + "./w:richText", + asXpathNode(sdtPr), + true, + ) as unknown as XmlElement | undefined; + + if (richTextEl) { + return { type: "rich", multiLine: true }; + } + + const otherTypeTags = [ + "w:date", + "w:dropDownList", + "w:comboBox", + "w:checkbox", + "w:citation", + "w:group", + "w:docPartObj", + "w:docPartList", + ]; + + for (const tag of otherTypeTags) { + const found = select( + `./${tag}`, + asXpathNode(sdtPr), + true, + ) as unknown as XmlElement | undefined; + + if (found) { + return { type: "other", multiLine: false }; + } + } + + return { type: "rich", multiLine: true }; +} + +function detectSdtStructure( + sdtContent: XmlElement, + select: xpath.XPathSelect, +): SdtStructure { + const directP = select( + "./w:p", + asXpathNode(sdtContent), + ) as unknown as XmlElement[]; + + return directP.length > 0 ? "block" : "inline"; +} + +function buildRunChildren( + doc: XmlDocument, + text: string, +): XmlElement[] { + const nodes: XmlElement[] = []; + const tokens = text.split(/(\t|\n)/); + + tokens.forEach((token) => { + if (token === "") return; + + if (token === "\t") { + nodes.push(doc.createElementNS(WORD_NS, "w:tab")); + } else if (token === "\n") { + nodes.push(doc.createElementNS(WORD_NS, "w:br")); + } else { + const t = doc.createElementNS(WORD_NS, "w:t"); + t.setAttribute("xml:space", "preserve"); + t.textContent = token; + nodes.push(t); + } + }); + + if (nodes.length === 0) { + const t = doc.createElementNS(WORD_NS, "w:t"); + t.setAttribute("xml:space", "preserve"); + t.textContent = ""; + nodes.push(t); + } + + return nodes; +} + +function buildRun( + doc: XmlDocument, + text: string, + rPr?: XmlElement, +): XmlElement { + const run = doc.createElementNS(WORD_NS, "w:r"); + + if (rPr) { + run.appendChild(rPr.cloneNode(true)); + } + + buildRunChildren(doc, text).forEach((node) => + run.appendChild(node), + ); + + return run; +} + +function insertInlineContent( + doc: XmlDocument, + sdtContent: XmlElement, + select: xpath.XPathSelect, + text: string, + allowLineBreak: boolean, +): void { + const safeText = allowLineBreak + ? text + : text.replace(/\n/g, " "); + + const existingRuns = select( + "./w:r", + asXpathNode(sdtContent), + ) as unknown as XmlElement[]; + + const firstRPr = + existingRuns.length > 0 + ? (select( + "./w:rPr", + asXpathNode(existingRuns[0]), + true, + ) as unknown as XmlElement | undefined) + : undefined; + + existingRuns.forEach((r) => { + if (r.parentNode) r.parentNode.removeChild(r); + }); + + sdtContent.appendChild( + buildRun(doc, safeText, firstRPr), + ); +} + +// ในฟังก์ชัน insertBlockContent() +function insertBlockContent( + doc: XmlDocument, + sdtContent: XmlElement, + select: xpath.XPathSelect, + text: string, + allowMultiParagraph: boolean, +): void { + const allParagraphs = select( + "./w:p", + asXpathNode(sdtContent), + ) as unknown as XmlElement[]; + + if (allParagraphs.length === 0) { + const p = doc.createElementNS(WORD_NS, "w:p"); + sdtContent.appendChild(p); + allParagraphs.push(p); + } + + const firstP = allParagraphs[0]; + + const firstPPr = select( + "./w:pPr", + asXpathNode(firstP), + true, + ) as unknown as XmlElement | undefined; + + const firstRun = select( + "./w:r", + asXpathNode(firstP), + true, + ) as unknown as XmlElement | undefined; + + const firstRPr = firstRun + ? (select( + "./w:rPr", + asXpathNode(firstRun), + true, + ) as unknown as XmlElement | undefined) + : undefined; + + // ลบย่อหน้าเดิมทั้งหมดยกเว้นย่อหน้าแรก + allParagraphs.forEach((p) => { + if (p !== firstP && p.parentNode) { + p.parentNode.removeChild(p); + } + }); + + // ลบ Run เดิมออกจากย่อหน้าแรก + const existingRuns = select( + "./w:r", + asXpathNode(firstP), + ) as unknown as XmlElement[]; + + existingRuns.forEach((r) => { + if (r.parentNode) r.parentNode.removeChild(r); + }); + + if (!allowMultiParagraph) { + // ถ้าไม่ใช่ออกแบบให้ข้ามย่อหน้าได้ ให้เปลี่ยน \n ทั้งหมดเป็น Space หรือ buildRun ปกติ + firstP.appendChild(buildRun(doc, text.replace(/\n+/g, "\n"), firstRPr)); + return; + } + + // แยกด้วย \n\n สำหรับ Paragraph Break (w:p) + const paragraphs = text.split("\n\n"); + + paragraphs.forEach((pText, index) => { + let targetP: XmlElement; + + if (index === 0) { + targetP = firstP; + } else { + targetP = doc.createElementNS(WORD_NS, "w:p"); + if (firstPPr) { + targetP.appendChild(firstPPr.cloneNode(true)); + } + sdtContent.appendChild(targetP); + } + + const run = doc.createElementNS(WORD_NS, "w:r"); + if (firstRPr) { + run.appendChild(firstRPr.cloneNode(true)); + } + + // pText จะมี \n เดี่ยวๆ หลงเหลืออยู่ ซึ่ง buildRunChildren จะแปลงเป็น w:br ให้โดยอัตโนมัติ + buildRunChildren(doc, pText).forEach((node) => + run.appendChild(node), + ); + + targetP.appendChild(run); + }); +} + +function insertFallbackContent( + sdtContent: XmlElement, + select: xpath.XPathSelect, + text: string, +): void { + const textNodes = select( + ".//w:t", + asXpathNode(sdtContent), + ) as unknown as XmlElement[]; + + if (textNodes.length === 0) return; + + textNodes[0].textContent = text; + + for (let i = 1; i < textNodes.length; i++) { + textNodes[i].textContent = ""; + } +} + +export type PropData = Record; +export type DocumentTemplate = {info?:PropData,dc?:PropData,cc:PropData,}; + +function normalizeValue(value: unknown): string { + if (value === null || value === undefined) { + return ""; + } + + if (typeof value === "string") { + return value; + } + + if ( + typeof value === "number" || + typeof value === "boolean" || + typeof value === "bigint" + ) { + return String(value); + } + + // รองรับ JSON ที่ส่ง array/object มา แต่ Content Control ต้องการ text + return JSON.stringify(value); +} + +/** + * นำ JSON data ไปแทนค่า Content Control ใน DOCX template + * คืนค่าเป็น Buffer ของ DOCX ที่สร้างเสร็จแล้ว + */ +export function templateContentControls( + templateBuffer: Buffer|Uint8Array, + data: PropData, +): Buffer { + const zip = new PizzaZip(templateBuffer); + const docXmlFile = zip.file("word/document.xml"); + + if (!docXmlFile) { + throw new Error("Invalid docx file: word/document.xml not found."); + } + + const parser = new DOMParser(); + const doc = parser.parseFromString(docXmlFile.asText(), "text/xml"); + const select = createSelector(); + + const sdtNodes = select( + "//w:sdt", + asXpathNode(doc), + ) as unknown as XmlElement[]; + + sdtNodes.forEach((sdt) => { + const tagAttr = select( + "./w:sdtPr/w:tag/@w:val", + asXpathNode(sdt), + true, + ) as unknown as XmlAttr | undefined; + + const tagName = tagAttr?.value; + + if (!tagName || !Object.prototype.hasOwnProperty.call(data, tagName)) { + return; + } + + const newValue = normalizeValue(data[tagName]); + + const sdtContent = select( + "./w:sdtContent", + asXpathNode(sdt), + true, + ) as unknown as XmlElement | undefined; + + if (!sdtContent) return; + + const { type: controlType, multiLine } = + detectSdtControlType(sdt, select); + + const structure = detectSdtStructure(sdtContent, select); + + if (controlType === "other") { + insertFallbackContent(sdtContent, select, newValue); + return; + } + + if (structure === "inline") { + const allowLineBreak = + controlType === "plain" ? multiLine : true; + + insertInlineContent( + doc, + sdtContent, + select, + newValue, + allowLineBreak, + ); + } else { + insertBlockContent( + doc, + sdtContent, + select, + newValue, + controlType === "rich", + ); + } + }); + + const serializer = new XMLSerializer(); + zip.file( + "word/document.xml", + serializer.serializeToString(doc), + ); + + return zip.generate({ + type: "nodebuffer", + compression: "DEFLATE", + }); +} + + +const CUSTOM_NS = + "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"; + +const VT_NS = + "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"; + +const REL_NS = + "http://schemas.openxmlformats.org/package/2006/relationships"; + +const CONTENT_TYPES_NS = + "http://schemas.openxmlformats.org/package/2006/content-types"; + +const XMLNS_NS = "http://www.w3.org/2000/xmlns/"; + +const CUSTOM_REL_TYPE = + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties"; + +const CUSTOM_CONTENT_TYPE = + "application/vnd.openxmlformats-officedocument.custom-properties+xml"; + +const CUSTOM_FMTID = + "{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"; + +const CUSTOM_PATH = "docProps/custom.xml"; + +type CustomPropertyValue = + | string + | number + | boolean + | Date + | null + | undefined; + +function parseXml(xml: string, fileName: string): XmlDocument { + const errors: string[] = []; + + const parser = new DOMParser(); + + const doc = parser.parseFromString( + xml, + "application/xml", + ) as XmlDocument; + + if (errors.length > 0 || !doc.documentElement) { + throw new Error( + `Invalid ${fileName}: ${errors.join("; ")}`, + ); + } + + return doc; +} + +function assertRoot( + doc: XmlDocument, + namespace: string, + localName: string, + fileName: string, +): XmlElement { + const root = doc.documentElement; + + if (root===null || + root.localName !== localName || + root.namespaceURI !== namespace + ) { + throw new Error(`Invalid root element in ${fileName}`); + } + + return root; +} + +function createCustomXml(): XmlDocument { + const xml = [ + '', + ``, + ].join(""); + + return parseXml(xml, CUSTOM_PATH); +} + +function createValueElement( + doc: XmlDocument, + value: unknown, +): XmlElement { + let tagName: string; + let text: string; + + if (value == null) { + // null และ undefined เก็บเป็น String ว่าง + tagName = "vt:lpwstr"; + text = ""; + } else if (typeof value === "string") { + tagName = "vt:lpwstr"; + text = value; + } else if (typeof value === "boolean") { + tagName = "vt:bool"; + text = value ? "true" : "false"; + } else if (typeof value === "number") { + if (!Number.isFinite(value)) { + throw new TypeError( + `Invalid numeric property value: ${value}`, + ); + } + + if (Number.isInteger(value)) { + if (!Number.isSafeInteger(value)) { + throw new TypeError( + `Integer property exceeds safe integer range: ${value}`, + ); + } + + tagName = "vt:i8"; + } else { + tagName = "vt:r8"; + } + + text = String(value); + } else if (value instanceof Date) { + if (Number.isNaN(value.getTime())) { + throw new TypeError("Invalid Date property value"); + } + + tagName = "vt:filetime"; + text = value.toISOString(); + } else { + throw new TypeError( + `Unsupported custom property type: ${ + Object.prototype.toString.call(value) + }`, + ); + } + + const element = doc.createElementNS(VT_NS, tagName); + + element.appendChild(doc.createTextNode(text)); + + return element; +} + +function ensureCustomRelationship(zip: PizzaZip): void { + const fileName = "_rels/.rels"; + const file = zip.file(fileName); + + if (!file) { + throw new Error(`DOCX is missing ${fileName}`); + } + + const doc = parseXml(file.asText(), fileName); + + const root = assertRoot( + doc, + REL_NS, + "Relationships", + fileName, + ); + + const relationships = Array.from( + root.getElementsByTagNameNS(REL_NS, "Relationship"), + ) as XmlElement[]; + + const existing = relationships.find( + (item) => item.getAttribute("Type") === CUSTOM_REL_TYPE, + ); + + if (existing) { + if (existing.getAttribute("Target") !== CUSTOM_PATH) { + throw new Error( + "Existing custom-properties relationship has an unexpected Target", + ); + } + + return; + } + + const ids = new Set( + relationships.map((item) => item.getAttribute("Id")), + ); + + let index = 1; + let relationshipId = `rId${index}`; + + while (ids.has(relationshipId)) { + index++; + relationshipId = `rId${index}`; + } + + const relationship = doc.createElementNS( + REL_NS, + "Relationship", + ); + + relationship.setAttribute("Id", relationshipId); + relationship.setAttribute("Type", CUSTOM_REL_TYPE); + relationship.setAttribute("Target", CUSTOM_PATH); + + root.appendChild(relationship); + + zip.file( + fileName, + new XMLSerializer().serializeToString(doc), + ); +} + +function ensureCustomContentType(zip: PizzaZip): void { + const fileName = "[Content_Types].xml"; + const file = zip.file(fileName); + + if (!file) { + throw new Error(`DOCX is missing ${fileName}`); + } + + const doc = parseXml(file.asText(), fileName); + + const root = assertRoot( + doc, + CONTENT_TYPES_NS, + "Types", + fileName, + ); + + const overrides = Array.from( + root.getElementsByTagNameNS( + CONTENT_TYPES_NS, + "Override", + ), + ) as XmlElement[]; + + const existing = overrides.find( + (item) => item.getAttribute("PartName") === "/docProps/custom.xml", + ); + + if (existing) { + existing.setAttribute("ContentType", CUSTOM_CONTENT_TYPE); + } else { + const override = doc.createElementNS( + CONTENT_TYPES_NS, + "Override", + ); + + override.setAttribute( + "PartName", + "/docProps/custom.xml", + ); + + override.setAttribute( + "ContentType", + CUSTOM_CONTENT_TYPE, + ); + + root.appendChild(override); + } + + zip.file( + fileName, + new XMLSerializer().serializeToString(doc), + ); +} +/** how to use +const templateBuffer = readFileSync("template.docx"); +const outputBuffer = setDocPropsCustom(templateBuffer, { + DocumentCode: "DOC-2026-001", + Department: "ฝ่ายเทคโนโลยีสารสนเทศ", + Revision: 2, + IsApproved: true, + PublishedAt: new Date(), +}); +writeFileSync("output.docx", outputBuffer); + */ +export function setCustomDocProps( + docxBuffer: Buffer | Uint8Array, + data: Record, +): Buffer { + const zip = new PizzaZip(docxBuffer); + + // อ่าน Custom Properties เดิม หรือสร้างใหม่หากไม่มี + const customFile = zip.file(CUSTOM_PATH); + + const doc = customFile + ? parseXml(customFile.asText(), CUSTOM_PATH) + : createCustomXml(); + + const root = assertRoot( + doc, + CUSTOM_NS, + "Properties", + CUSTOM_PATH, + ); + + // รับรองว่ามี Namespace vt สำหรับ Value Elements + root.setAttributeNS(XMLNS_NS, "xmlns:vt", VT_NS); + + const properties = Array.from( + root.getElementsByTagNameNS(CUSTOM_NS, "property"), + ) as XmlElement[]; + + const propertyMap = new Map(); + const usedPids = new Set(); + + for (const property of properties) { + const name = property.getAttribute("name"); + const pidText = property.getAttribute("pid"); + const pid = Number(pidText); + + if (!name) { + throw new Error( + "Custom property is missing its name attribute", + ); + } + + if (propertyMap.has(name)) { + throw new Error(`Duplicate custom property name: ${name}`); + } + + if (pidText === null || + !/^[1-9]\d*$/.test(pidText) || + !Number.isSafeInteger(pid) || + pid < 2 + ) { + throw new Error( + `Invalid custom property pid for "${name}": ${pidText}`, + ); + } + + if (usedPids.has(pid)) { + throw new Error(`Duplicate custom property pid: ${pid}`); + } + + propertyMap.set(name, property); + usedPids.add(pid); + } + + let nextPid = 2; + + for (const [name, value] of Object.entries(data)) { + if (!name.trim()) { + throw new Error("Custom property name must not be empty"); + } + + let property = propertyMap.get(name); + + if (!property) { + while (usedPids.has(nextPid)) { + nextPid++; + } + + property = doc.createElementNS( + CUSTOM_NS, + "property", + ); + + property.setAttribute("fmtid", CUSTOM_FMTID); + property.setAttribute("pid", String(nextPid)); + property.setAttribute("name", name); + + usedPids.add(nextPid); + nextPid++; + + root.appendChild(property); + propertyMap.set(name, property); + } + + // สร้างค่าใหม่ก่อนแก้ไข Property เดิม + const valueElement = createValueElement(doc, value); + + while (property.firstChild) { + property.removeChild(property.firstChild); + } + + property.appendChild(valueElement); + } + + // อัปเดตไฟล์ Custom Properties + zip.file( + CUSTOM_PATH, + new XMLSerializer().serializeToString(doc), + ); + + // ตรวจสอบส่วนประกอบที่เชื่อมโยงกับ Custom Properties + ensureCustomRelationship(zip); + ensureCustomContentType(zip); + + return Buffer.from( + zip.generate({ + type: "nodebuffer", + compression: "DEFLATE", + }), + ); +} + +/** + * ดึงค่า Custom Document Properties จาก DOCX Buffer + */ +export function getCustomDocProps( + docxBuffer: Buffer | Uint8Array, +): Record { + const zip = new PizzaZip(docxBuffer); + const customFile = zip.file(CUSTOM_PATH); + + if (!customFile) { + return {}; + } + + const doc = parseXml(customFile.asText(), CUSTOM_PATH); + const root = assertRoot( + doc, + CUSTOM_NS, + "Properties", + CUSTOM_PATH, + ); + + const properties = Array.from( + root.getElementsByTagNameNS(CUSTOM_NS, "property"), + ) as XmlElement[]; + + const result: Record = {}; + + for (const property of properties) { + const name = property.getAttribute("name"); + if (!name) continue; + + // หา child element แรกที่อยู่ใน VT_NS namespace + let valueNode: XmlElement | undefined; + for (let i = 0; i < property.childNodes.length; i++) { + const node = property.childNodes[i] as XmlElement; + if (node.nodeType === 1 && node.namespaceURI === VT_NS) { + valueNode = node; + break; + } + } + + if (!valueNode) { + result[name] = ""; + continue; + } + + const textContent = valueNode.textContent || ""; + + // แปลงค่ากลับตาม VT Data Type + switch (valueNode.localName) { + case "bool": + result[name] = textContent === "true" || textContent === "1"; + break; + + case "i1": + case "i2": + case "i4": + case "i8": + case "int": + case "ui1": + case "ui2": + case "ui4": + case "ui8": + case "uint": + case "r4": + case "r8": + case "decimal": { + const num = Number(textContent); + result[name] = Number.isNaN(num) ? textContent : num; + break; + } + + case "filetime": + case "date": { + const date = new Date(textContent); + result[name] = Number.isNaN(date.getTime()) ? textContent : date; + break; + } + + default: + // vt:lpwstr, vt:lpstr, vt:bstr และอื่นๆ + result[name] = textContent; + break; + } + } + + return result; +} + +const CORE_NS = + "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"; +const DC_NS = "http://purl.org/dc/elements/1.1/"; +const DCTERMS_NS = "http://purl.org/dc/terms/"; +const APP_NS = + "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"; + +export interface DocPropsOptions { + standard?: boolean; + extended?: boolean; + custom?: boolean; +} + +export interface StandardDocProps { + title?: string; + subject?: string; + creator?: string; + keywords?: string; + description?: string; + lastModifiedBy?: string; + revision?: string; + created?: Date; + modified?: Date; + category?: string; + contentStatus?: string; +} + +export interface ExtendedDocProps { + template?: string; + totalTime?: number; + pages?: number; + words?: number; + characters?: number; + charactersWithSpaces?: number; + lines?: number; + paragraphs?: number; + application?: string; + appVersion?: string; + company?: string; + manager?: string; + docSecurity?: number; +} + +export interface DocPropsResult { + standard?: StandardDocProps; + extended?: ExtendedDocProps; + custom?: Record; +} + +/** + * ดึงข้อมูล Properties ของเอกสาร DOCX ตามประเภทที่เลือก + * example: + * const allProps = getDocProps(docxBuffer); + * const selectedProps = getDocProps(docxBuffer, { + * standard: true, + * custom: true, + * extended: false, + * }); + * console.log(allProps); + * console.log(selectedProps.standard?.title); + */ + +export function getDocProps( + docxBuffer: Buffer | Uint8Array, + options: DocPropsOptions = { standard: true, extended: true, custom: true }, +): DocPropsResult { + const zip = new PizzaZip(docxBuffer); + const result: DocPropsResult = {}; + + // 1. Standard / Core Properties (docProps/core.xml) + if (options.standard) { + const coreFile = zip.file("docProps/core.xml"); + if (coreFile) { + const doc = parseXml(coreFile.asText(), "docProps/core.xml"); + const getText = (ns: string, localName: string) => { + const els = doc.getElementsByTagNameNS(ns, localName); + return els.length > 0 ? els[0].textContent || "" : undefined; + }; + + const parseDate = (dateStr?: string) => { + if (!dateStr) return undefined; + const d = new Date(dateStr); + return Number.isNaN(d.getTime()) ? undefined : d; + }; + + result.standard = { + title: getText(DC_NS, "title"), + subject: getText(DC_NS, "subject"), + creator: getText(DC_NS, "creator"), + keywords: getText(CORE_NS, "keywords"), + description: getText(DC_NS, "description"), + lastModifiedBy: getText(CORE_NS, "lastModifiedBy"), + revision: getText(CORE_NS, "revision"), + created: parseDate(getText(DCTERMS_NS, "created")), + modified: parseDate(getText(DCTERMS_NS, "modified")), + category: getText(CORE_NS, "category"), + contentStatus: getText(CORE_NS, "contentStatus"), + }; + } + } + + // 2. Extended / Automatically Updated Properties (docProps/app.xml) + if (options.extended) { + const appFile = zip.file("docProps/app.xml"); + if (appFile) { + const doc = parseXml(appFile.asText(), "docProps/app.xml"); + const getText = (localName: string) => { + const els = doc.getElementsByTagNameNS(APP_NS, localName); + return els.length > 0 ? els[0].textContent || "" : undefined; + }; + + const parseNum = (val?: string) => { + if (!val) return undefined; + const n = Number(val); + return Number.isNaN(n) ? undefined : n; + }; + + result.extended = { + template: getText("Template"), + totalTime: parseNum(getText("TotalTime")), + pages: parseNum(getText("Pages")), + words: parseNum(getText("Words")), + characters: parseNum(getText("Characters")), + charactersWithSpaces: parseNum(getText("CharactersWithSpaces")), + lines: parseNum(getText("Lines")), + paragraphs: parseNum(getText("Paragraphs")), + application: getText("Application"), + appVersion: getText("AppVersion"), + company: getText("Company"), + manager: getText("Manager"), + docSecurity: parseNum(getText("DocSecurity")), + }; + } + } + + // 3. Custom Properties (docProps/custom.xml) + if (options.custom) { + result.custom = getCustomDocProps(docxBuffer); + } + + return result; +} + + +//**************************** dynamic content ******************************************* +// sdtLocked(ห้ามลบ CC), contentLocked(ลบได้ห้ามแก้), sdtContentLocked(ห้ามทุกอย่าง) +type LockType = 'none' | 'sdtLocked' | 'contentLocked' | 'sdtContentLocked'; + +/** + * ฟังก์ชันสร้าง Plain Text Content Control XML String ครอบด้วย || + * ระวังการเกิดหลายรัน จะทำให้ xml เสีย + */ +function p_cc(title:string,tag:string,text:string='',isMultiLine:boolean=true,lock:LockType='sdtLocked'): string { + const lockTag = lock=='none'?"":`` + const multiLineTag = isMultiLine ? '':'' + const content = escapeXml(text) + const xmlString =`${lockTag}${multiLineTag}${content}` + return `||${xmlString}||`; +} +function br(n: number) +{ + let text="" + for(let i=0;i||`; +} +/** + * Escapes XML Special Characters + */ +function escapeXml(unsafe: string): string { + return unsafe + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} +export const templateDynamicContents = async (template: Buffer, data: Record): Promise => { + return await createReport({ + template, data, cmdDelimiter: ['{{', '}}'], + additionalJsContext: { + bm,br, + p_cc, + } + }); +} diff --git a/lib/lib-utils.ts b/lib/lib-utils.ts new file mode 100644 index 0000000..f17a247 --- /dev/null +++ b/lib/lib-utils.ts @@ -0,0 +1,112 @@ + +import { createHmac, createPrivateKey, createPublicKey, timingSafeEqual, verify, sign } from 'node:crypto'; +/** + * คำนวณ HMAC-SHA256 จาก string หรือ JSON Object + */ +export function generateHmacSha256(data: string | object, secretKey: string): string { + const payload = typeof data === 'string' ? data : JSON.stringify(data); + return createHmac('sha256', secretKey) + .update(payload, 'utf8') + .digest('hex'); +} + +/** + * ตรวจสอบความถูกต้องของ HMAC (ใช้ timingSafeEqual เพื่อป้องกัน Timing Attacks) + */ +export function verifyHmacSha256(data: string | object, secretKey: string, expectedHmac: string): boolean { + const calculatedHmac = generateHmacSha256(data, secretKey); + const a = Buffer.from(calculatedHmac, 'hex'); + const b = Buffer.from(expectedHmac, 'hex'); + + if (a.length !== b.length) { + return false; + } + return timingSafeEqual(a, b); +} +// ========================================== +// ตัวอย่างการใช้งาน +// ========================================== +/* +const secret = 'my-super-secret-key'; +const jsonData = { + userId: 12345, + action: 'transfer', + amount: 500 +}; + +// 1. สร้าง HMAC +const hmacSignature = generateHmacSha256(jsonData, secret); +console.log('HMAC Signature (Hex):', hmacSignature); + +// 2. ตรวจสอบ HMAC +const isValid = verifyHmacSha256(jsonData, secret, hmacSignature); +console.log('Is Signature Valid?:', isValid); // true +*/ + + +/** + * ฟังก์ชันสำหรับลงนามดิจิทัล (Sign) ข้อมูลด้วย Ed25519 Private Key (Hex) + * @param message ข้อความดิบที่ต้องการเซ็น (string หรือ Buffer) + * @param privateKeyHex คีย์ลับในรูปแบบ Hex String (ความยาว 64 ตัวอักษร) + * @returns ลายเซ็น (Signature) ในรูปแบบ Hex String (ความยาว 128 ตัวอักษร) + */ +export function signDataEd25519(message: string | Buffer, privateKeyHex: string): string { + const rawKeyBuffer = Buffer.from(privateKeyHex, 'hex'); + // ตัดเอาเฉพาะ 32 bytes (Seed) กรณีที่ Hex ยาว 64 bytes (ที่ต่อกับ Public Key มา) + const seed = rawKeyBuffer.length === 64 ? rawKeyBuffer.subarray(0, 32) : rawKeyBuffer; + // PKCS#8 Header สำหรับ Ed25519 Private Key + const pkcs8Header = Buffer.from('302e020100300506032b657004220420', 'hex'); + const pkcs8Buffer = Buffer.concat([pkcs8Header, seed]); + + const privateKey = createPrivateKey({ + key: pkcs8Buffer, + format: 'der', + type: 'pkcs8', + }); + + const dataBuffer = typeof message === 'string' ? Buffer.from(message, 'utf-8') : message; + const signatureBuffer = sign(null, dataBuffer, privateKey); + return signatureBuffer.toString('hex'); +} + +/** + * ฟังก์ชันสำหรับตรวจสอบลายเซ็น (Verify) ด้วย Ed25519 Public Key (Hex) + * @param message ข้อความดิบที่ใช้ในการเซ็น (string หรือ Buffer) + * @param signatureHex ลายเซ็นในรูปแบบ Hex String + * @param publicKeyHex คีย์สาธารณะในรูปแบบ Hex String (ความยาว 64 ตัวอักษร) + * @returns ผลลัพธ์ความถูกต้อง (true = ผ่าน, false = ไม่ผ่าน) + */ +export function verifyDataEd25519(message: string | Buffer, signatureHex: string, publicKeyHex: string): boolean { + try { + const rawPublicKey = Buffer.from(publicKeyHex, 'hex'); + + // SPKI Header สำหรับ Ed25519 Public Key (32 bytes) + const spkiHeader = Buffer.from('302a300506032b6570032100', 'hex'); + const spkiBuffer = Buffer.concat([spkiHeader, rawPublicKey]); + + const publicKey = createPublicKey({ + key: spkiBuffer, + format: 'der', + type: 'spki', + }); + + const dataBuffer = typeof message === 'string' ? Buffer.from(message, 'utf-8') : message; + const signatureBuffer = Buffer.from(signatureHex, 'hex'); + + return verify(null, dataBuffer, publicKey, signatureBuffer); + } catch (error) { + return false; + } +} + +/** + * ฟังก์ชันสำหรับเรียงคีย์ของ Object ตามตัวอักษรเพื่อไม่ให้โครงสร้าง JSON เพี้ยน + */ +export function sortObjectKeys(obj: Record): Record { + return Object.keys(obj) + .sort() + .reduce((result: Record, key: string) => { + result[key] = obj[key]; + return result; + }, {}); +} \ No newline at end of file diff --git a/lib/openapi.ts b/lib/openapi.ts index c211ba3..d277d38 100644 --- a/lib/openapi.ts +++ b/lib/openapi.ts @@ -94,6 +94,20 @@ export const openApiSpec = { format: "binary", description: "ไฟล์ .docx ที่มี Content Control", }, + secret: { + type: "string", + description: + "ค่า secret สำหรับ validate HMAC-SHA256 กับข้อมูลใน custom property" , + example: + "super_secret", + }, + public_key: { + type: "string", + description: + "Public key ในรูปแบบ HEX
openssl genpkey -algorithm ED25519 -out private.pem
openssl pkey -in private.pem -outform DER | tail -c 32 | xxd -p -c 32 > private.hex
openssl pkey -in private.pem -pubout -outform DER | tail -c 32 | xxd -p -c 32 > public.hex", + example: + "66b09b4a1b66271d5728c592c2409657e1c070a7bf371bf9f6ed457855270546", + }, }, }, }, @@ -142,9 +156,23 @@ export const openApiSpec = { dataJson: { type: "string", description: - "JSON เป็น string ตรง ๆ (ทางเลือกแทนการแนบไฟล์ data)", + "JSON เป็น string ตรง ๆ (ทางเลือกแทนการแนบไฟล์ data)
{\"info:\"{\"ticket_data\":\"JSON String\"},\"dc:\"{..},\"dc:\"{\"blackyear\": \"๙๐/๒๕๖๙\",...}}", example: - '{"notname":"คำสั่งเรียก ให้ทำคำให้การ","blackno":"คดีหมายเลขดำที่","blackyear":"๑๐/๒๕๖๙"}', + '', + }, + secret: { + type: "string", + description: + "ค่า secret สำหรับทดสอบการทำ HMAC-SHA256", + example: + 'super_secret', + }, + private_key: { + type: "string", + description: + "Private key ในรูปแบบ HEX
openssl genpkey -algorithm ED25519 -out private.pem
openssl pkey -in private.pem -outform DER | tail -c 32 | xxd -p -c 32 > private.hex
openssl pkey -in private.pem -pubout -outform DER | tail -c 32 | xxd -p -c 32 > public.hex", + example: + '8f2077b57b39399b6a7828f35da03a63ade8e3a36a6bf437b091a8bdb3d18ee1', }, }, }, diff --git a/middleware.ts b/middleware.ts index f05c44b..a67185a 100644 --- a/middleware.ts +++ b/middleware.ts @@ -37,6 +37,6 @@ export function middleware(req: NextRequest) { // ยังถูกคุมอยู่ดีเพราะ root page ส่งต่อให้ /note ซึ่ง middleware จับตามปกติ export const config = { matcher: [ - "/((?!note/login|api/note|api/template|api/documents|api/swagger|wordaddin|note/uploads|note/samples|note/swagger-ui|note/pdf\\.worker\\.min\\.mjs|_next|fonts|favicon\\.ico).+)", + "/((?!note/login|api/note|api/template|api/documents|api/swagger|tmpl|wordaddin|note/uploads|note/samples|note/swagger-ui|note/pdf\\.worker\\.min\\.mjs|_next|fonts|favicon\\.ico).+)", ], }; diff --git a/package-lock.json b/package-lock.json index 32740b0..466a9f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@pdf-lib/fontkit": "^1.1.1", "@xmldom/xmldom": "^0.9.12", + "docx-templates": "^4.15.0", "drizzle-orm": "^0.45.2", "lucide-react": "^1.42.0", "minio": "^8.0.7", @@ -27,7 +28,7 @@ "xpath": "^0.0.34" }, "devDependencies": { - "@types/node": "^26.5.0", + "@types/node": "^26.6.5", "@types/office-js": "^1.0.612", "@types/pngjs": "^6.0.5", "@types/react": "^18.3.31", @@ -62,7 +63,6 @@ "integrity": "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", @@ -81,7 +81,6 @@ "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" } @@ -91,8 +90,7 @@ "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@apidevtools/swagger-parser": { "version": "10.1.1", @@ -100,7 +98,6 @@ "integrity": "sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@apidevtools/json-schema-ref-parser": "11.7.2", "@apidevtools/openapi-schemas": "^2.1.0", @@ -171,7 +168,6 @@ "integrity": "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.6.2" }, @@ -185,7 +181,6 @@ "integrity": "sha512-Vu011o3/bikQNwtjouwmUJud+Z6Brcjij2D0omPWClRGg8i5gBfOYSpDkFGkHbhGlaky4fgvfkxD0uHGq34uYA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", @@ -205,7 +200,6 @@ "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.2.0" }, @@ -219,7 +213,6 @@ "integrity": "sha512-JbZtIqfEulsIA0rC3zM7jfF4KkOnye9aKcaO/jJqxJRm/gM6lAjEv7sL4njW8D+35l50P1f+UuH5OqN+UKJqNA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", @@ -239,7 +232,6 @@ "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.2.0" }, @@ -253,7 +245,6 @@ "integrity": "sha512-J2jmTPv8ZraSHDTz9l2Bx8gNL3ktfDDWo2mxWfzarn64O9Fjhb+l85YWyubGy2xUdeGuZPKzvQLltGv8bSu8eQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", @@ -273,7 +264,6 @@ "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.2.0" }, @@ -287,7 +277,6 @@ "integrity": "sha512-DR/H2nfKtHNqfpuJ4L/B4irX1nX77QizulmfrxcLNZmkfinm0SdZpypXSvzaI5rHZSXfhXNUfBvMfi+jMkjWtw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.9.0", @@ -307,7 +296,6 @@ "integrity": "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-util": "^1.13.0", @@ -343,7 +331,6 @@ "integrity": "sha512-BoSmXPx2er1Ai+wKlDvj29jIQespCNBwEmKyZVHO2kEFsWbGjAjwMCGzug3DJM5/QYIV3vej0S1zcU5bq9fa8w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.1.2" }, @@ -361,7 +348,6 @@ "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.2.0", @@ -378,7 +364,6 @@ "integrity": "sha512-7GEAoIsaoBr6KELNRb8nypowCqvk8dnCHFCYg4XD4lOQGY2GqjQg5IhkRjyBFRO18CGSMq05PaNqSOE9GQro3g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.6.2" }, @@ -392,7 +377,6 @@ "integrity": "sha512-/shnJ+ooO8WPxDhPEeI/2oRQuubn16gZ6CvlbpWbEswZfzwI9tI/sMAHmF3x1LuQ9yZYXfLW3TjzGMLEC5blKg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=22.0.0" } @@ -423,7 +407,6 @@ "integrity": "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.6.2" }, @@ -437,7 +420,6 @@ "integrity": "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.1.2", "@typespec/ts-http-runtime": "^0.3.0", @@ -453,7 +435,6 @@ "integrity": "sha512-e7lX/dk//F6Qf7BB6PTY4+p2yuOQtyOeHGyapYHNwqSp2OnYpwQt49A/Nin2XmKBQ69pwagR4k/lQBq8lbHQkA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-xml-parser": "^5.5.9", "tslib": "^2.8.1" @@ -468,7 +449,6 @@ "integrity": "sha512-8utCLdTZn14CiAe0HW4JbtzUMsc0mdDwnjUvStFMrR4IxQP8S2eL9zVAdplpfORVJGYmidZElpeXRYjJQ4UyUw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.9.0", @@ -493,7 +473,6 @@ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -507,7 +486,6 @@ "integrity": "sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "default-browser": "^5.5.1", "define-lazy-prop": "^3.0.0", @@ -529,7 +507,6 @@ "integrity": "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" @@ -544,7 +521,6 @@ "integrity": "sha512-NDW2/bz2Pz71EJAlhSw+jg1kpRIWtrzj0gCzcHuG1u7iLvSOHpUc5lICkDA9x0bbeityxTneiunSBluvS+/y4w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/msal-common": "16.14.2" }, @@ -558,7 +534,6 @@ "integrity": "sha512-HOBR0Gfo39TMrkxNG8k6cfjRkrRjXZc3JQs3ebMWQc9S4cihuknMYra3sgmzbZB752oQBqBN9+WF7c826p2vIQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -569,7 +544,6 @@ "integrity": "sha512-ixSO1Y/kCVRthRs+hSx/5qkwaunX1/RAePhlMN0wIpIQ4WEZ6AREGGnGd1AP0qspHVsAwzWQKGubpjh50JyJIQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/msal-common": "16.14.1", "jsonwebtoken": "^9.0.0" @@ -585,7 +559,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/msal-common": "15.17.0", "@azure/msal-node-runtime": "^0.20.0", @@ -601,7 +574,6 @@ "integrity": "sha512-VQ5/gTLFADkwue+FohVuCqlzFPUq4xSrX8jeZe+iwZuY6moliNC8xt86qPVNYdtbQfELDf2Nu6LI+demFPHGgw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -611,8 +583,7 @@ "resolved": "https://registry.npmjs.org/@azure/msal-node-runtime/-/msal-node-runtime-0.20.6.tgz", "integrity": "sha512-89Al7l5c8sOEA954d35WZOg1sCa2WKfgf7KyTbN9vIkKsoZrXdJ5+CPjy8+tQqWcsJTAMbQD4OWr7V09/xN8KA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { "version": "16.14.1", @@ -620,7 +591,6 @@ "integrity": "sha512-Or6xhPNyi4zHW25158yxBoyxuCqNSPa5YBVqfF1J5Ks4MJWBo/USXdp05DQIPu1Zli00YZu6t0+h6KvHJealxQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -631,7 +601,6 @@ "integrity": "sha512-cXDTCAMwDx8Ng9yUe82kOOd2kPnZ8AQqe4FkLMcpaQ3Mvr3/PXVdvRhyP0FtY5/U5Oh6JGk3EcEibaFOymRLFw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.9.0", @@ -659,7 +628,6 @@ "integrity": "sha512-bttzuhQiCIwrkzjPDA+AtAR7dg19L/CC6ztcqJ5LfvWpXuys9mHp0UQ0udYnoUvv9SCT9KTR5kqFvFr0e6k0lQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.9.0", @@ -681,7 +649,6 @@ "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -706,7 +673,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.1.90" } @@ -799,6 +765,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -847,6 +814,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" } @@ -1759,8 +1727,7 @@ "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@feathersjs/hooks": { "version": "0.6.5", @@ -1768,7 +1735,6 @@ "integrity": "sha512-WtcEoG/imdHRvC3vofGi/OcgH+cjHHhO0AfEeTlsnrKLjVKKBXV6aoIrB2nHZPpE7iW5sA7AZMR6bPD8ytxN+w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10" } @@ -1779,7 +1745,6 @@ "integrity": "sha512-MgP/I06GdvsilDspMk/qmRzpk8LOUStP6jFAbSRi40W09DhoyUn+Mj7eyKICPqeYKybOjVFLVIAQzvu1bfIa7Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=20" }, @@ -1962,7 +1927,6 @@ "integrity": "sha512-w3PMZH5rahrukn8/I7P9Ihil+twgLTUHDZtJlJyBbUKyPaOSSQjLZkb0PpncVhin1gCaMgOFXy6iNPgcZUoo2w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/type": "^1.1.6", "@types/mute-stream": "^0.0.4", @@ -1989,7 +1953,6 @@ "integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -1999,8 +1962,7 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@inquirer/editor": { "version": "4.2.23", @@ -2703,7 +2665,6 @@ "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mute-stream": "^1.0.0" }, @@ -2717,7 +2678,6 @@ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "minipass": "^7.0.4" }, @@ -2752,7 +2712,6 @@ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -2781,8 +2740,7 @@ "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@microsoft/app-manifest": { "version": "1.1.3", @@ -2806,7 +2764,6 @@ "integrity": "sha512-OayhehwI+CnO0Wr53e29ZJZWGsNA5yVG7r54qmZSLc5HxA5Cozk4hP7EbYDCXkxh4NbQoT1dhTzC8bkRo+wWXw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "buffer": "^5.2.1", "debug": "^4.1.1", @@ -2819,7 +2776,6 @@ "integrity": "sha512-wGuFEzvRiWZmDxQMGKEjOKhEIVnLiG6vRUuM9Hwqxpe/kbiyA2WiUyEVpniNPaaw8gDHTf9zJHnPNNj0JiL5mA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@microsoft/dev-tunnels-contracts": ">1.1.8", "axios": "^1.6.2", @@ -2834,7 +2790,6 @@ "integrity": "sha512-YlAI2jC0grK2p2fvxDV9Hin5EtRXL6yOMhLKqtjRVlH8Q0+hI9UWFl7RhLWSZjsbDyl+0LIlI2HjlcbsUhXGsQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "adm-zip": "^0.5.17", "original-fs": "^1.2.0", @@ -2848,7 +2803,6 @@ "integrity": "sha512-ufJnssQGbxzLNS1Ho9bCtX4rQKCCvoVuDLHoJyc3F9dOGDB4BkWs2Ci0kv53lqocAEQ/Cbi+I2XCsNYGqVYqng==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12.0" } @@ -2863,7 +2817,6 @@ "https://github.com/sponsors/ctavan" ], "license": "MIT", - "peer": true, "bin": { "uuid": "dist-node/bin/uuid" } @@ -2874,7 +2827,6 @@ "integrity": "sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=14.0.0" } @@ -2885,7 +2837,6 @@ "integrity": "sha512-mih5trnmvIKpjLgqzsoxqiWFvG5eMeETPCAdtFvDaXyferWzFt9UrdARfRoYboPhfFjYRYw8EoF3EA4yFVWCsQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@apidevtools/swagger-parser": "^10.1.1", "@microsoft/app-manifest": "1.1.3", @@ -2904,7 +2855,6 @@ "integrity": "sha512-KYAb4c9BJQI6QqGKthV68OHe0badztdXJWKo0WtBA9IuCFPTKvE5ZdUBglP833aMjhaSPNO4A5j/EkzZtGlKjA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -2969,7 +2919,6 @@ "integrity": "sha512-cSVQHqK7oYG+KvSR8y+nvOiXcLNU/t/8ihDyXbdJtZCnRft7ZtHpnt8yxL96xdFe2UUHLSipHbZSJBotQrIB+g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@azure/core-auth": "^1.4.0", "@microsoft/app-manifest": "1.1.3", @@ -2985,7 +2934,6 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -2996,7 +2944,6 @@ "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -3016,7 +2963,6 @@ "integrity": "sha512-156FXuXXl8DZ6aPU/GR0qFpo7JIHK9sBTqhUBOiO0ljRl+asP/S9nREQG4Vg4lPWL1UCCd6WeTpTcOPyyYQdJQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@apidevtools/swagger-parser": "^10.1.0", "@azure/arm-appservice": "^13.0.0", @@ -3087,7 +3033,6 @@ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -3101,7 +3046,6 @@ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -3112,7 +3056,6 @@ "integrity": "sha512-2DdE+SJDtzLEEWzY1ZjY7Q+VcPhcV1KisD3zI4u0XZyktsjHum1mwbMI+JaulUBi2OZk+KJAi2uPXzxichPkdw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@hono/node-server": "^1.19.9 || ^2.0.5", "ajv": "^8.17.1", @@ -3154,7 +3097,6 @@ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" @@ -3169,7 +3111,6 @@ "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bytes": "^3.1.2", "content-type": "^2.0.0", @@ -3195,7 +3136,6 @@ "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3210,7 +3150,6 @@ "integrity": "sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3225,7 +3164,6 @@ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.6.0" } @@ -3236,7 +3174,6 @@ "integrity": "sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.3.0", @@ -3281,7 +3218,6 @@ "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3296,7 +3232,6 @@ "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", @@ -3319,7 +3254,6 @@ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -3330,7 +3264,6 @@ "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" }, @@ -3345,7 +3278,6 @@ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3359,7 +3291,6 @@ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -3370,7 +3301,6 @@ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mime-db": "^1.54.0" }, @@ -3388,7 +3318,6 @@ "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "content-type": "^2.1.0" }, @@ -3406,7 +3335,6 @@ "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3421,7 +3349,6 @@ "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", @@ -3449,7 +3376,6 @@ "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", @@ -3470,7 +3396,6 @@ "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "content-type": "^2.0.0", "media-typer": "^1.1.0", @@ -3490,7 +3415,6 @@ "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3955,7 +3879,6 @@ "integrity": "sha512-Efcc+iF0j3Bf67YjEqIqWXbX5XddXoK/Mw4K1/JuXwRCZ8N16VR7iT23nlCc9XrveFVh/E5Rqs2StT0V8v9LdA==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/oxc-project" } @@ -4000,7 +3923,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4018,7 +3940,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4036,7 +3957,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4054,7 +3974,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4072,7 +3991,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4090,7 +4008,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4108,7 +4025,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4126,7 +4042,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4144,7 +4059,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4162,7 +4076,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4180,7 +4093,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4198,7 +4110,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4216,7 +4127,6 @@ "os": [ "openharmony" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4234,7 +4144,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4252,7 +4161,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -4262,8 +4170,7 @@ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@scarf/scarf": { "version": "1.4.0", @@ -4329,8 +4236,7 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/jsonfile": { "version": "6.1.4", @@ -4348,15 +4254,14 @@ "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.5.0.tgz", - "integrity": "sha512-dVSGpriSoCgz8WnDNTuSSuSv1PC/ALXihO4ulRZt7Md8k9mlbdin3lGOcDE8SnWOgf513ByWlXd7BK4azmyg/A==", + "version": "26.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", + "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", "dev": true, "license": "MIT", "dependencies": { @@ -4393,6 +4298,7 @@ "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" @@ -4424,8 +4330,7 @@ "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@typespec/ts-http-runtime": { "version": "0.3.9", @@ -4433,7 +4338,6 @@ "integrity": "sha512-edSdeAqkdxBVzA1yL1LrLCml1YjyCVvPMtMqJpbF+6K609tHe8V6sQUzFQSGcYNhcuhOceZtjvN32+mpIth30A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", @@ -4496,7 +4400,6 @@ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -4511,7 +4414,6 @@ "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4525,7 +4427,6 @@ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10.0.0" } @@ -4546,7 +4447,6 @@ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 14" } @@ -4607,7 +4507,6 @@ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -4683,7 +4582,6 @@ "integrity": "sha512-Hxe6Agq26gQOM954qpzYSllJBPJl+e16U5CkfuMUhLrNba+5nKkttIVlflaovN6oaTratqMGAO8H5u/aNhmHWQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@types/node": "^25.2.0", "flatbuffers": "^25.1.24", @@ -4700,7 +4598,6 @@ "integrity": "sha512-b4e2xxj/yMeT2hNlD6x7zNFiQK2Dlmkb9CQ6v3/1G2RezKN4YS2lcEv8lzGm1mhs4f2lM4yNAMI/zUDBZBBt7w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } @@ -4710,8 +4607,7 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/applicationinsights": { "version": "1.8.10", @@ -4719,7 +4615,6 @@ "integrity": "sha512-ZLDA7mShh4mP2Z/HlFolmvhBPX1LfnbIWXrselyYVA7EKjHhri1fZzpu2EiWAmfbRxNBY6fRjoPJWbx5giKy4A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cls-hooked": "^4.2.2", "continuation-local-storage": "^3.2.1", @@ -4739,24 +4634,21 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Python-2.0", - "peer": true + "license": "Python-2.0" }, "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==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/array-timsort": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/assertion-error": { "version": "2.0.1", @@ -4780,7 +4672,6 @@ "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "stack-chain": "^1.3.7" }, @@ -4794,7 +4685,6 @@ "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "semver": "^5.3.0", "shimmer": "^1.1.0" @@ -4809,7 +4699,6 @@ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver" } @@ -4820,7 +4709,6 @@ "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.1" } @@ -4830,8 +4718,7 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", @@ -4839,7 +4726,6 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">= 4.0.0" } @@ -4887,7 +4773,6 @@ "integrity": "sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.6", @@ -4901,7 +4786,6 @@ "integrity": "sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@babel/runtime": "^7.15.4", "is-retry-allowed": "^2.2.0" @@ -4913,7 +4797,6 @@ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "4" }, @@ -4927,7 +4810,6 @@ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -4942,7 +4824,6 @@ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "18 || 20 || >=22" } @@ -4966,8 +4847,7 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/baseline-browser-mapping": { "version": "2.11.21", @@ -5011,7 +4891,6 @@ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -5033,7 +4912,6 @@ "integrity": "sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", @@ -5059,7 +4937,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -5070,7 +4947,6 @@ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5083,8 +4959,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/body-parser/node_modules/raw-body": { "version": "2.5.3", @@ -5092,7 +4967,6 @@ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", @@ -5109,7 +4983,6 @@ "integrity": "sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -5124,7 +4997,6 @@ "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^4.0.2" }, @@ -5171,6 +5043,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.11.20", "caniuse-lite": "^1.0.30001810", @@ -5205,7 +5078,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -5225,8 +5097,7 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/buffer-from": { "version": "1.1.2", @@ -5241,7 +5112,6 @@ "integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "run-applescript": "^7.0.0" }, @@ -5269,7 +5139,6 @@ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -5280,7 +5149,6 @@ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -5295,7 +5163,6 @@ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -5312,8 +5179,7 @@ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/camelcase-css": { "version": "2.0.1", @@ -5361,7 +5227,6 @@ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5386,7 +5251,6 @@ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": "*" } @@ -5397,7 +5261,6 @@ "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "get-func-name": "^2.0.2" }, @@ -5449,7 +5312,6 @@ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "engines": { "node": ">=18" } @@ -5460,7 +5322,6 @@ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" }, @@ -5474,7 +5335,6 @@ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "string-width": "^4.2.0" }, @@ -5507,7 +5367,6 @@ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -5523,7 +5382,6 @@ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5542,7 +5400,6 @@ "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "async-hook-jl": "^1.7.6", "emitter-listener": "^1.0.1", @@ -5558,7 +5415,6 @@ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver" } @@ -5589,7 +5445,6 @@ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5613,7 +5468,6 @@ "integrity": "sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "array-timsort": "^1.0.3", "esprima": "^4.0.1" @@ -5628,7 +5482,6 @@ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "5.2.1" }, @@ -5642,7 +5495,6 @@ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -5653,7 +5505,6 @@ "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "async-listener": "^0.6.0", "emitter-listener": "^1.1.1" @@ -5665,7 +5516,6 @@ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -5675,8 +5525,13 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, "node_modules/cors": { "version": "2.8.6", @@ -5684,7 +5539,6 @@ "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "object-assign": "^4", "vary": "^1" @@ -5703,7 +5557,6 @@ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5719,7 +5572,6 @@ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": "*" } @@ -5729,8 +5581,7 @@ "resolved": "https://registry.npmjs.org/cryptr/-/cryptr-6.4.0.tgz", "integrity": "sha512-9jpMU9HMt1vhMUqNO+MPuGEpbh/f7HHZdxrd6L2DMwTuYGyt9pgUJfQyTS1Ei4/sn7qPM4FkjxUoiW79k0x8sA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/css-select": { "version": "7.0.0", @@ -5738,7 +5589,6 @@ "integrity": "sha512-snmjEVXy+1LnwXdxhYvTMj1d9tOh4HxkA1YmoayVBeeyR2C14Pum7fcxJIm4SswYspVy866eYNwlH6xC3/VH5g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "boolbase": "^2.0.0", "css-what": "^8.0.0", @@ -5774,7 +5624,6 @@ "integrity": "sha512-DH0Bqq3DNp5tdOReuNyAA+Ev4Y2GS5FMbZpeTLP6C4CDi0h5nL0BmUPChXw3o/qbHLDWHl49sbNqQVY7bMSDdw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -5801,8 +5650,7 @@ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/csstype": { "version": "3.2.3", @@ -5841,7 +5689,6 @@ "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4.0" } @@ -5852,7 +5699,6 @@ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -5887,7 +5733,6 @@ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -5904,8 +5749,7 @@ "integrity": "sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==", "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/deep-eql": { "version": "4.1.4", @@ -5913,7 +5757,6 @@ "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-detect": "^4.0.0" }, @@ -5927,7 +5770,6 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4.0.0" } @@ -5938,7 +5780,6 @@ "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -5956,7 +5797,6 @@ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -5970,7 +5810,6 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -5981,7 +5820,6 @@ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.4.0" } @@ -5992,7 +5830,6 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -6003,7 +5840,6 @@ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -6015,7 +5851,6 @@ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8" } @@ -6026,7 +5861,6 @@ "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "address": "^1.0.1", "debug": "4" @@ -6045,7 +5879,6 @@ "integrity": "sha512-6eb9YRrimz8oTr5+JDzGmSYnXy5V7YnK5y/hd8AUDK1MssHjQKm9LlD6NSrHx4vMDF3+e/spI2hmWTviElgWZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "semver": "^5.3.0" } @@ -6056,7 +5889,6 @@ "integrity": "sha512-l126t01d2ZS9EreskvEtZPrcgstuvH3rbKy82oUhUrVmBaGx4hO9wECdl3cvZbKDYjMF3QJDB5z5dL9yWAjvZQ==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "diagnostic-channel": "*" } @@ -6067,7 +5899,6 @@ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver" } @@ -6086,13 +5917,31 @@ "dev": true, "license": "MIT" }, + "node_modules/docx-templates": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/docx-templates/-/docx-templates-4.15.0.tgz", + "integrity": "sha512-H0JEDFVCF5j64Do9fqHVWwF86MOWUnHhQ2dfGWy7C2o9yPwtbCT1pXpotE6165Px07fia1Ted1Xh1fj1UZ9u1g==", + "license": "MIT", + "dependencies": { + "jszip": "^3.10.1", + "sax": "1.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/docx-templates/node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "license": "ISC" + }, "node_modules/dom-serializer": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.1.1.tgz", "integrity": "sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "domelementtype": "^3.0.0", "domhandler": "^6.0.0", @@ -6118,7 +5967,6 @@ } ], "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=20.19.0" } @@ -6129,7 +5977,6 @@ "integrity": "sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "domelementtype": "^3.0.0" }, @@ -6147,7 +5994,6 @@ "integrity": "sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "dom-serializer": "^3.0.0", "domelementtype": "^3.0.0", @@ -6167,7 +6013,6 @@ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=10" } @@ -6803,7 +6648,6 @@ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -6819,7 +6663,6 @@ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -6829,8 +6672,7 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.5.423", @@ -6845,7 +6687,6 @@ "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "shimmer": "^1.2.0" } @@ -6863,7 +6704,6 @@ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -6874,7 +6714,6 @@ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "once": "^1.4.0" } @@ -6898,7 +6737,6 @@ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" } @@ -6926,7 +6764,6 @@ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -6940,7 +6777,6 @@ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -6956,8 +6792,7 @@ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/esbuild": { "version": "0.28.2", @@ -7016,8 +6851,7 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "1.0.5", @@ -7035,7 +6869,6 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -7060,7 +6893,6 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -7077,7 +6909,6 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.x" } @@ -7088,7 +6919,6 @@ "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "eventsource-parser": "^3.0.1" }, @@ -7102,7 +6932,6 @@ "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" } @@ -7113,7 +6942,6 @@ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true, "license": "(MIT OR WTFPL)", - "peer": true, "engines": { "node": ">=6" } @@ -7182,7 +7010,6 @@ "integrity": "sha512-2FXbqkygil3mZiXzEtM0IjE/UBmBNot0J1GEVrJT4JbrvwOSoEtqtO+wHbiMQELWe1eNvHoYRg2dkjOid+6JkA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "^4.4.3", "ip-address": "^10.2.0" @@ -7203,7 +7030,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7213,8 +7039,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -7258,8 +7083,7 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.1.8", @@ -7357,7 +7181,6 @@ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -7396,7 +7219,6 @@ "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -7416,7 +7238,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7426,24 +7247,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/flatbuffers": { "version": "25.9.23", "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-25.9.23.tgz", "integrity": "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==", "dev": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/flatted": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.16.1", @@ -7457,7 +7275,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=4.0" }, @@ -7473,7 +7290,6 @@ "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -7504,7 +7320,6 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -7529,7 +7344,6 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -7539,8 +7353,7 @@ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fs-extra": { "version": "9.1.0", @@ -7548,7 +7361,6 @@ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -7590,7 +7402,6 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -7601,7 +7412,6 @@ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -7612,7 +7422,6 @@ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -7638,7 +7447,6 @@ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -7665,8 +7473,7 @@ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/glob": { "version": "13.0.6", @@ -7674,7 +7481,6 @@ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", @@ -7706,7 +7512,6 @@ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -7726,7 +7531,6 @@ "integrity": "sha512-P5VJMVM7qgBn6vjXMw8WG9uVI+ncf2pi72j4de4yz5ZULLj2RGqLYaKOYGsgyrViQ0tePOVlN1tDCCXXtFqXKg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "minimist": "^1.2.8", "neo-async": "^2.6.2", @@ -7749,7 +7553,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -7760,7 +7563,6 @@ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -7774,7 +7576,6 @@ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -7827,8 +7628,7 @@ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/htmlparser2": { "version": "10.1.0", @@ -7843,7 +7643,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -7857,7 +7656,6 @@ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -7873,7 +7671,6 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.12" }, @@ -7892,8 +7689,7 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/htmlparser2/node_modules/domhandler": { "version": "5.0.3", @@ -7901,7 +7697,6 @@ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "domelementtype": "^2.3.0" }, @@ -7918,7 +7713,6 @@ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -7934,7 +7728,6 @@ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.12" }, @@ -7948,7 +7741,6 @@ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", @@ -7970,7 +7762,6 @@ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -7984,8 +7775,7 @@ "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/https-proxy-agent": { "version": "7.0.6", @@ -7993,7 +7783,6 @@ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -8038,8 +7827,7 @@ "url": "https://feross.org/support" } ], - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.2", @@ -8047,11 +7835,16 @@ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -8063,8 +7856,7 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/inquirer": { "version": "12.11.1", @@ -8165,7 +7957,6 @@ "integrity": "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 12" } @@ -8176,7 +7967,6 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.10" } @@ -8199,8 +7989,7 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/is-core-module": { "version": "2.16.2", @@ -8224,7 +8013,6 @@ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "is-docker": "cli.js" }, @@ -8274,7 +8062,6 @@ "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=20" }, @@ -8288,7 +8075,6 @@ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-docker": "^3.0.0" }, @@ -8308,7 +8094,6 @@ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "is-docker": "cli.js" }, @@ -8341,8 +8126,7 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/is-retry-allowed": { "version": "2.2.0", @@ -8350,7 +8134,6 @@ "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -8376,7 +8159,6 @@ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-docker": "^2.0.0" }, @@ -8384,13 +8166,18 @@ "node": ">=8" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/jiti": { "version": "1.21.7", @@ -8398,6 +8185,7 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -8408,7 +8196,6 @@ "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/panva" } @@ -8418,8 +8205,7 @@ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.9.4.tgz", "integrity": "sha512-PtOMXpEGuP0RRiRXsjzHzl44dMHxSu2CPvAhinupR1tBa88me+1DPqsobl7eupn5UukjLkln1ZnAOAOXOrYG0Q==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -8443,7 +8229,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -8457,6 +8242,7 @@ "integrity": "sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@asamuzakjp/css-color": "^5.1.11", "@asamuzakjp/dom-selector": "^7.1.1", @@ -8511,16 +8297,14 @@ "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", "dev": true, - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/json-with-bigint": { "version": "3.5.12", "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.12.tgz", "integrity": "sha512-uwbF/wSSuOgC7qqlq27Xp5B6a2MHVug3t0idZdTqu0JnlFvgJuH7ju+KAk/J06C7GfhoYy2gnb9wz2INqcne7w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jsonfile": { "version": "6.2.1", @@ -8541,7 +8325,6 @@ "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -8552,7 +8335,6 @@ "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", @@ -8570,6 +8352,48 @@ "npm": ">=6" } }, + "node_modules/jszip": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.2.tgz", + "integrity": "sha512-3l+rb15IOWtUhU0H5MFqES/T6Kh7abYwjosBey/vD6hDt8zoEffkSC5Ws5SGtgVw3gBx2NEbhTeSW1+kWkpyTQ==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -8586,7 +8410,6 @@ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -8599,7 +8422,6 @@ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" @@ -8612,7 +8434,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" @@ -8624,18 +8445,25 @@ "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.1.9" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lightningcss": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "license": "MPL-2.0", - "peer": true, "dependencies": { "detect-libc": "^2.0.3" }, @@ -8673,7 +8501,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8695,7 +8522,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8717,7 +8543,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8739,7 +8564,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8761,7 +8585,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8783,7 +8606,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8805,7 +8627,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8827,7 +8648,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8849,7 +8669,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8871,7 +8690,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8893,7 +8711,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8928,7 +8745,6 @@ "integrity": "sha512-ES/o9qotMpzpN2MHs+Iq/JcVoOj8Fa5wiQYrTdFpvAnwXL0g66XHHUc9WUMk6nAlBtGsFQ24ne+SYnvnaQ2FSw==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "css-select": "^7.0.0", "cssom": "^0.5.0", @@ -8959,56 +8775,49 @@ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "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==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "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==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "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==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "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==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "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==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/log4js": { "version": "6.9.1", @@ -9016,7 +8825,6 @@ "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -9046,7 +8854,6 @@ "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "get-func-name": "^2.0.1" } @@ -9086,7 +8893,6 @@ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" } @@ -9097,7 +8903,6 @@ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "charenc": "0.0.2", "crypt": "0.0.2", @@ -9117,7 +8922,6 @@ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -9128,7 +8932,6 @@ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -9149,7 +8952,6 @@ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -9174,7 +8976,6 @@ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "mime": "cli.js" }, @@ -9209,7 +9010,6 @@ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -9223,7 +9023,6 @@ "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "brace-expansion": "^5.0.8" }, @@ -9240,7 +9039,6 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9284,7 +9082,6 @@ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -9295,7 +9092,6 @@ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "minipass": "^7.1.2" }, @@ -9335,16 +9131,14 @@ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/mustache": { "version": "4.2.0", @@ -9352,7 +9146,6 @@ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "mustache": "bin/mustache" } @@ -9363,7 +9156,6 @@ "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9403,8 +9195,7 @@ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", @@ -9412,7 +9203,6 @@ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -9422,16 +9212,14 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/neverthrow": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/neverthrow/-/neverthrow-3.2.0.tgz", "integrity": "sha512-AINA32QbYO83L+3CBI6I5lH4LpBSlLwWteJ+uI25s4AQy6g/xz3RZuedmuNo91lLw2rY+AbPEPQdxd7mg1rXoQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/next": { "version": "14.2.35", @@ -9517,7 +9305,6 @@ "integrity": "sha512-lLdwkeg2XUVPTHqWjPltTxH81zbQNbUWC+AEb9ni50KjxkUzAAx1HGtMT21sbntzfUGfIphhcklvs3imJeqDXw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "semver": "^7.3.5" }, @@ -9530,8 +9317,7 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/node-domexception": { "version": "1.0.0", @@ -9579,7 +9365,6 @@ "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "http2-client": "^1.2.5" }, @@ -9602,8 +9387,7 @@ "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/node-readfiles": { "version": "0.2.0", @@ -9611,7 +9395,6 @@ "integrity": "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "es6-promise": "^3.2.1" } @@ -9649,7 +9432,6 @@ "integrity": "sha512-GX0gsdbGVCgnRgbeGaubfjpBXyYRWOOCVeYh08bSQvDZqxz5ndXs1OTfAt/h36G1xvI94YIspsI0sVFqAV9+RQ==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "boolbase": "^2.0.0" }, @@ -9667,7 +9449,6 @@ "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "fast-safe-stringify": "^2.0.7" } @@ -9678,7 +9459,6 @@ "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@exodus/schemasafe": "^1.0.0-rc.2", "should": "^13.2.1", @@ -9694,7 +9474,6 @@ "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">= 6" } @@ -9705,7 +9484,6 @@ "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "node-fetch-h2": "^2.3.0", "oas-kit-common": "^1.0.8", @@ -9726,7 +9504,6 @@ "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">= 6" } @@ -9737,7 +9514,6 @@ "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } @@ -9748,7 +9524,6 @@ "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "call-me-maybe": "^1.0.1", "oas-kit-common": "^1.0.8", @@ -9769,7 +9544,6 @@ "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">= 6" } @@ -9800,7 +9574,6 @@ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -10450,7 +10223,6 @@ "integrity": "sha512-kxV247eRDdGhBKOZYBhAvgzm/PveXdUXvZR5bi0mDYWFeY6wHoDuCSjRw00khRR///1ZvgixfvS4CqSfezyptQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@microsoft/app-manifest": "^1.0.2", "adm-zip": "0.5.16", @@ -10472,7 +10244,6 @@ "integrity": "sha512-2eOdCCYJ5bhCe2p9KKETdg1UNshsKaT0lDU/jNopAg3t7zC1WxwvofTSO/+4Log5L4Re+wUdV8MqrQikZBa7+Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@xmldom/xmldom": "^0.8.5", "commander": "^9.0.0", @@ -10488,7 +10259,6 @@ "integrity": "sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" } @@ -10499,7 +10269,6 @@ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.20.0 || >=14" } @@ -10510,7 +10279,6 @@ "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12.0" } @@ -10521,7 +10289,6 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -10535,7 +10302,6 @@ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -10551,7 +10317,6 @@ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -10561,8 +10326,7 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/office-addin-manifest/node_modules/commander": { "version": "13.1.0", @@ -10570,7 +10334,6 @@ "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -10581,7 +10344,6 @@ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -10597,7 +10359,6 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -10608,7 +10369,6 @@ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", - "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -10619,7 +10379,6 @@ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10641,7 +10400,6 @@ "integrity": "sha512-MUbcqOodtlOUNhLKjSdqeLBHFVd7Qh5pUODqmQe2VLBKk7PuRgl4dCk6bp2dU79vl6BcDyrRERpkyVnQg6zdFg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "commander": "^13.0.0" }, @@ -10655,7 +10413,6 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -10668,8 +10425,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/office-addin-manifest/node_modules/universalify": { "version": "0.1.2", @@ -10677,7 +10433,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4.0.0" } @@ -10692,7 +10447,6 @@ "https://github.com/sponsors/ctavan" ], "license": "MIT", - "peer": true, "bin": { "uuid": "dist-node/bin/uuid" } @@ -10702,8 +10456,7 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/office-addin-manifest/node_modules/whatwg-url": { "version": "5.0.0", @@ -10711,7 +10464,6 @@ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -10795,7 +10547,6 @@ "integrity": "sha512-WjthzxXY5gl78+jh91LczM9zg26zU8tc3afLi2bUcrMaPc6LaRaKJhw6NsyRB73kVDx76DGTe6Ws6sxufghOdQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "adm-zip": "0.5.12", "commander": "^13.0.0", @@ -10815,7 +10566,6 @@ "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.0" } @@ -10826,7 +10576,6 @@ "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -10837,7 +10586,6 @@ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -10853,7 +10601,6 @@ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", - "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -10864,7 +10611,6 @@ "integrity": "sha512-MUbcqOodtlOUNhLKjSdqeLBHFVd7Qh5pUODqmQe2VLBKk7PuRgl4dCk6bp2dU79vl6BcDyrRERpkyVnQg6zdFg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "commander": "^13.0.0" }, @@ -10878,7 +10624,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4.0.0" } @@ -10912,7 +10657,6 @@ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -10926,7 +10670,6 @@ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "wrappy": "1" } @@ -10937,7 +10680,6 @@ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -10963,8 +10705,7 @@ "resolved": "https://registry.npmjs.org/original-fs/-/original-fs-1.2.0.tgz", "integrity": "sha512-IGo+qFumpIV65oDchJrqL0BOk9kr82fObnTesNJt8t3YgP6vfqcmRs0ofPzg3D9PKMeBHt7lrg1k/6L+oFdS8g==", "dev": true, - "license": "Unlicense", - "peer": true + "license": "Unlicense" }, "node_modules/pako": { "version": "1.0.11", @@ -10991,7 +10732,6 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -11017,7 +10757,6 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -11035,7 +10774,6 @@ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" @@ -11052,8 +10790,7 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", @@ -11061,7 +10798,6 @@ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -11156,7 +10892,6 @@ "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.20.0" } @@ -11190,6 +10925,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.18", "picocolors": "^1.1.1", @@ -11338,6 +11074,7 @@ "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.9.tgz", "integrity": "sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw==", "license": "Unlicense", + "peer": true, "engines": { "node": ">=12" }, @@ -11352,7 +11089,6 @@ "integrity": "sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=20" }, @@ -11367,7 +11103,6 @@ "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -11389,13 +11124,18 @@ "node": ">=10" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", @@ -11407,8 +11147,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/proxy-addr": { "version": "2.0.8", @@ -11416,7 +11155,6 @@ "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -11435,7 +11173,6 @@ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" } @@ -11446,7 +11183,6 @@ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -11468,7 +11204,6 @@ "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "es-define-property": "^1.0.1", "side-channel": "^1.1.1" @@ -11525,7 +11260,6 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -11536,7 +11270,6 @@ "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", @@ -11553,7 +11286,6 @@ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "peer": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -11569,6 +11301,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -11581,6 +11314,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -11642,8 +11376,7 @@ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", "dev": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/reftools": { "version": "1.1.9", @@ -11651,7 +11384,6 @@ "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } @@ -11662,7 +11394,6 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -11715,7 +11446,6 @@ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } @@ -11736,8 +11466,7 @@ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/rolldown": { "version": "1.2.8", @@ -11745,7 +11474,6 @@ "integrity": "sha512-Z67nTmhZe7anqnM/EjI392w5i/ANUinjip7QYsOyN37oayduxt3ksdX0hf5OOamkAd53BiIHfbfSzfUmzKFQqQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@oxc-project/types": "=0.149.0", "@rolldown/pluginutils": "^1.0.0" @@ -11780,7 +11508,6 @@ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", @@ -11798,7 +11525,6 @@ "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "dev": true, "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/express" @@ -11810,7 +11536,6 @@ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -11824,7 +11549,6 @@ "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.12.0" } @@ -11927,7 +11651,6 @@ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -11941,7 +11664,6 @@ "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -11967,7 +11689,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -11977,8 +11698,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/send/node_modules/mime": { "version": "1.6.0", @@ -11986,7 +11706,6 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "mime": "cli.js" }, @@ -12000,7 +11719,6 @@ "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -12011,13 +11729,18 @@ "node": ">= 0.8.0" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -12025,7 +11748,6 @@ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -12039,7 +11761,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -12050,7 +11771,6 @@ "integrity": "sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -12063,8 +11783,7 @@ "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", "dev": true, - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/should": { "version": "13.2.3", @@ -12072,7 +11791,6 @@ "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "should-equal": "^2.0.0", "should-format": "^3.0.3", @@ -12087,7 +11805,6 @@ "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "should-type": "^1.4.0" } @@ -12098,7 +11815,6 @@ "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "should-type": "^1.3.0", "should-type-adaptors": "^1.0.1" @@ -12109,8 +11825,7 @@ "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/should-type-adaptors": { "version": "1.1.0", @@ -12118,7 +11833,6 @@ "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "should-type": "^1.3.0", "should-util": "^1.0.0" @@ -12129,8 +11843,7 @@ "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/side-channel": { "version": "1.1.1", @@ -12138,7 +11851,6 @@ "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", @@ -12159,7 +11871,6 @@ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" @@ -12177,7 +11888,6 @@ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -12197,7 +11907,6 @@ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -12251,8 +11960,7 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/simple-get": { "version": "4.0.1", @@ -12274,7 +11982,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -12325,8 +12032,7 @@ "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/stackback": { "version": "0.0.2", @@ -12341,7 +12047,6 @@ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -12374,7 +12079,6 @@ "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -12390,7 +12094,6 @@ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -12406,7 +12109,6 @@ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", - "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -12417,7 +12119,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4.0.0" } @@ -12495,7 +12196,6 @@ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -12567,7 +12267,6 @@ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12603,7 +12302,6 @@ "integrity": "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "call-me-maybe": "^1.0.1", "node-fetch": "^2.6.1", @@ -12632,7 +12330,6 @@ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -12653,16 +12350,14 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/swagger2openapi/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==", "dev": true, - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/swagger2openapi/node_modules/whatwg-url": { "version": "5.0.0", @@ -12670,7 +12365,6 @@ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -12682,7 +12376,6 @@ "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">= 6" } @@ -12738,7 +12431,6 @@ "integrity": "sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -12756,7 +12448,6 @@ "integrity": "sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -12769,8 +12460,7 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/tar-stream": { "version": "2.2.0", @@ -12778,7 +12468,6 @@ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -12796,7 +12485,6 @@ "integrity": "sha512-UDdUF9kV2hYdlv+7AgqP2kXarVSUhjK7tg1BUflIRGEgND0/QoNpN64rcEuhEcM8AIbW65yrCopJWqRhLZ3m8w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "axios": "^1.6.1" } @@ -12807,7 +12495,6 @@ "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -12826,8 +12513,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/thenify": { "version": "3.3.1", @@ -12922,6 +12608,7 @@ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -12955,7 +12642,6 @@ "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=14.14" } @@ -12979,7 +12665,6 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.6" } @@ -13016,7 +12701,6 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", - "peer": true, "bin": { "tree-kill": "cli.js" } @@ -13059,7 +12743,6 @@ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -13073,7 +12756,6 @@ "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -13084,7 +12766,6 @@ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=10" }, @@ -13098,7 +12779,6 @@ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -13112,8 +12792,7 @@ "resolved": "https://registry.npmjs.org/typedi/-/typedi-0.10.0.tgz", "integrity": "sha512-v3UJF8xm68BBj6AF4oQML3ikrfK2c9EmZUyLOfShpJuItAqVBHWP/KtpGinkSsIiP6EZyyb6Z3NXyW9dgS9X1w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/typescript": { "version": "5.9.3", @@ -13136,7 +12815,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -13149,16 +12827,14 @@ "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.2.0.tgz", "integrity": "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/underscore": { "version": "1.13.8", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/undici": { "version": "7.30.0", @@ -13193,7 +12869,6 @@ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -13250,7 +12925,6 @@ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4.0" } @@ -13265,7 +12939,6 @@ "https://github.com/sponsors/ctavan" ], "license": "MIT", - "peer": true, "bin": { "uuid": "dist/esm/bin/uuid" } @@ -13276,7 +12949,6 @@ "integrity": "sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.10" } @@ -13287,7 +12959,6 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -13298,7 +12969,6 @@ "integrity": "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", @@ -13377,7 +13047,6 @@ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -13487,7 +13156,6 @@ "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8.0.0 || >=10.0.0" } @@ -13556,7 +13224,6 @@ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -13596,8 +13263,7 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "6.2.0", @@ -13619,8 +13285,7 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/ws": { "version": "7.5.13", @@ -13650,7 +13315,6 @@ "integrity": "sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-wsl": "^3.1.0", "powershell-utils": "^0.2.0" @@ -13668,7 +13332,6 @@ "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-inside-container": "^1.0.0" }, @@ -13748,7 +13411,6 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">=10" } @@ -13759,7 +13421,6 @@ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "engines": { "node": ">=18" } @@ -13770,7 +13431,6 @@ "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", "dev": true, "license": "ISC", - "peer": true, "bin": { "yaml": "bin.mjs" }, @@ -13787,7 +13447,6 @@ "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -13807,7 +13466,6 @@ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -13842,7 +13500,6 @@ "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", "dev": true, "license": "ISC", - "peer": true, "peerDependencies": { "zod": "^3.25.28 || ^4" } diff --git a/package.json b/package.json index 701ecae..fabdcde 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dependencies": { "@pdf-lib/fontkit": "^1.1.1", "@xmldom/xmldom": "^0.9.12", + "docx-templates": "^4.15.0", "drizzle-orm": "^0.45.2", "lucide-react": "^1.42.0", "minio": "^8.0.7", @@ -31,7 +32,7 @@ "xpath": "^0.0.34" }, "devDependencies": { - "@types/node": "^26.5.0", + "@types/node": "^26.6.5", "@types/office-js": "^1.0.612", "@types/pngjs": "^6.0.5", "@types/react": "^18.3.31", diff --git a/public/tmpl/T12_FD155_3s-long.json b/public/tmpl/T12_FD155_3s-long.json new file mode 100644 index 0000000..8a27173 --- /dev/null +++ b/public/tmpl/T12_FD155_3s-long.json @@ -0,0 +1,44 @@ +{ + "info": { + "ticket_data": "{\"fid\":\"T12_FD155_3s-long_ZZZ\",\"tid\":\"T12\",\"uid\":\"oom\",\"uname\":\"สรวิชญ์\"}" + }, + "dc": { + "Interpleader": false, + "docabbr": "(ต. ๒๒)", + "blackno": "คดีหมายเลขดำที่", + "redno": "คดีหมายเลขแดงที่", + "court": "ศาลปกครองนครราชสีมา", + "panels": [ + { + "pname": "นายวิรุฬห์ จินตนะกุล", + "pmname": "ตุลาการศาลปกครองกลาง", + "pm": "ตุลาการเจ้าของสำนวน" + }, + { + "pname": "นายสัมฤทธิ์ อ่อนคำ", + "pmname": "ตุลาการศาลปกครองสูงสุด" + }, + { + "pname": "นางสุมาลี ลิมปโอวาท", + "pmname": "ตุลาการศาลปกครองสูงสุด" + } + ], + "pnameT":"ชื่อ pnameT", + "pmnameT":"ตำแหน่งของ pnameT", + "pmT":"ตุลาการผู้แถลงคดี", + "acc_name":"ชื่อ acc_name" + + }, + "cc": { + "blackyear": "๙๐/๒๕๖๙", + "redyear": "", + "curdate": "วันที่ เดือน สิงหาคม พุทธศักราช ๒๕๖๙", + "accuser": "นายธีรพล ร่มเริง", + "acc1": "ผู้ฟ้องคดี", + "accused": "รร", + "acc2": "ผู้ถูกฟ้องคดี", + "interpleader": "สมชาย ใจดี", + "acc3": "ผู้ร้องสอด", + "detail1": "ตำแหน่งปลัดอำเภอ (เจ้าพนักงานปกครองชำนาญการพิเศษ) ที่ทำการปกครองอำเภอแม่สาย จังหวัดเชียงราย กรมการปกครอง ได้รับความเดือดร้อนเสียหายจากการที่ผู้ถูกฟ้องคดีที่ ๒ มีคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดี ออกจากราชการ กรณีเมื่อครั้งผู้ฟ้องคดีดำรงตำแหน่งปลัดอำเภอ (เจ้าพนักงานปกครอง 5) ที่ทำการปกครองอำเภอพญาเม็งราย จังหวัดเชียงราย ถูกกล่าวหาว่ากระทำการทุจริตโครงการ จัดทำเวทีประชาคมหมู่บ้านเพื่อเสริมสร้างความเข้มแข็งให้ชุมชนอำเภอพญาเม็งราย จังหวัด เชียงราย และโครงการส่งเสริมการเกษตรแบบครบวงจร ซึ่งผู้ฟ้องคดีมีอำนาจหน้าที่เป็น คณะกรรมการตรวจรับพัสดุในโครงการดังกล่าว กระทำการจัดทำเอกสารหลักฐานการเบิกจ่ายเงิน อันเป็นเท็จและลงลายมือชื่อตรวจรับพัสดุอันเป็นเท็จ ซึ่งเป็นการไม่ปฏิบัติตามข้อ ๗๑ ของระเบียบสำนักนายกรัฐมนตรีว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ และที่แก้ไขเพิ่มเติม ผู้ถูกฟ้องคดีที่ ๑ ในการประชุมครั้งที่ ๑๐๕/๒๕๖๒ เมื่อวันที่ 4 ตุลาคม ๒๕๖๒ จึงมีมติชี้มูลความผิดอาญา ฐานเป็นเจ้าพนักงานปฏิบัติหรือละเว้นการปฏิบัติหน้าที่โดยมิชอบ เพื่อให้เกิดความเสียหาย แก่ผู้หนึ่งผู้ใด หรือปฏิบัติหรือละเว้นการปฏิบัติหน้าที่โดยทุจริต ตามมาตรา ๑๕๗ แห่งประมวล กฎหมายอาญา และความผิดทางวินัยอย่างร้ายแรง ฐานปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ ราชการโดยมิชอบ เพื่อให้ตนเองหรือผู้อื่นได้ประโยชน์ที่มีควรได้ เป็นการทุจริตต่อหน้าที่ ราชการ ฐานปฏิบัติหน้าที่ราชการโดยจงใจไม่ปฏิบัติตามกฎหมาย ระเบียบของทางราชการ มติคณะรัฐมนตรี หรือนโยบายของรัฐบาล อันเป็นเหตุให้เสียหายแก่ราชการอย่างร้ายแรง และ ฐานกระทำการอื่นใดอันได้ชื่อว่าเป็นผู้ประพฤติชั่วอย่างร้ายแรง ตามมาตรา ๑๘๒ วรรคสาม มาตรา ๘๕ วรรคสอง และมาตรา ๔๘ วรรคสอง แห่งพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๓๕ ประกอบมาตรา ๑๓๓ แห่งพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๕๑ ผู้ถูกฟ้องคดีที่ ๑ ผู้ถูกฟ้องคดีที่ ๒ จึงได้ส่งรายงาน สำนวนการไต่สวน เอกสารหลักฐาน และคำวินิจฉัยไปยัง ซึ่งเป็นผู้บังคับบัญชาและผู้มีอำนาจบรรจุและแต่งตั้งผู้ฟ้องคดี ผู้ถูกฟ้องคดีที่ ๒ เสนอเรื่องต่อ อ.ก.พ. กระทรวงมหาดไทย ซึ่ง อ.ก.พ. กระทรวงมหาดไทย มีมติในการประชุม ครั้งที่ ๒/๒๕๖๓ เมื่อวันที่ ๑๘ มิถุนายน ๒๕๖๓ ให้ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ ตามฐานความผิดที่ผู้ถูกฟ้องคดีที่ ๑ ชี้มูลความผิด ผู้ถูกฟ้องคดีที่ ๒ จึงมีคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ ต่อมา ผู้ฟ้องคดีมีหนังสือลงวันที่ ๑๕ กันยายน ๒๕๖๓ อุทธรณ์คำสั่งดังกล่าวต่อคณะกรรมการพิทักษ์ ที่ ระบบคุณธรรม ต่อมาคณะกรรมการพิทักษ์ระบบคุณธรรมได้มีคำวินิจฉัย เรื่องดำที่ ๖๓๑๐๑๖๖ เรื่องแดงที่ ๐๐๔๘๑๖๕ ลงวันที่ ๕ กรกฎาคม ๒๕๖๕ ให้ยกอุทธรณ์ และมีหนังสือ นร ๑๐๑๐.๓.๑.๔/๒๕ ลงวันที่ 6 กรกฎาคม ๒๕๖๕ แจ้งคำวินิจฉัยดังกล่าวให้ผู้ฟ้องคดีทราบ ผู้ฟ้องคดีไม่เห็นพ้องด้วย เนื่องจากโครงการจัดทำเวทีประชาคมหมู่บ้านเพื่อเสริมสร้าง ความเข็มแข็งให้ชุมชนอำเภอพญาเม็งราย จังหวัดเชียงราย เป็นโครงการที่นายบุญยัง เรือนกูล นายอำเภอพญาเม็งราย ในขณะนั้น ได้ดำเนินการไปก่อนที่ผู้ฟ้องคดีจะได้รับการแต่งตั้ง ให้ดำรงตำแหน่งปลัดอำเภอพญาเม็งราย ครั้นเมื่อผู้ฟ้องคดีได้รับการแต่งตั้งให้ดำรงตำแหน่ง ดังกล่าว นายบุญยังได้ออกคำสั่งให้ผู้ฟ้องคดีปฏิบัติหน้าที่รับผิดชอบงานด้านความมั่นคง ตามคำสั่งอำเภอพญาเม็งราย ที่ ๓๗๒/๒๕๕๗ ลงวันที่ ๓ ธันวาคม ๒๕๔๗ ซึ่งรวมถึงโครงการ จัดทำเวทีประชาคมหมู่บ้านเพื่อเสริมสร้างความเข็มแข็งให้ชุมชนอำเภอพญาเม็งรายด้วย ผู้ฟ้องคดีในฐานะผู้ใต้บังคับบัญชาจึงต้องเชื่อฟังและปฏิบัติตามคำสั่งของนายบุญยัง แม้ผู้ฟ้องคดี จะเป็นผู้ลงนามเสนอและเปลี่ยนแปลงโครงการ แต่ผู้ฟ้องคดีไม่มีความเป็นอิสระในการบริหาร โดยอำนาจบริหารอยู่ภายใต้การสั่งการของนายบุญยัง ส่วนโครงการส่งเสริมการเกษต แบบครบวงจรเป็นการบริหารโครงการที่นายบุญยังเป็นผู้ดำเนินการควบคุมสั่งการทุกขั้น จนกระทั่งเสร็จสิ้นโครงการเช่นเดียวกัน เมื่อดำเนินการโครงการดังกล่าวเสร็จสิ้น นายบุญยัง และนางวัลลภาภรณ์ เรือนปาง เสมียนตราอำเภอพญาเม็งรายและกรรมการรับเงินอุดหนุนโครงการ จึงได้รวบรวมเอกสารที่เกี่ยวข้องเสนอผู้ฟ้องคดีให้ลงนามในฐานะคณะกรรมการตรวจรับพัสดุ โดยผู้ฟ้องคดีไม่มีโอกาสได้ปฏิบัติหน้าที่ตามระเบียบสำนักนายกรัฐมนตรีว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ เมื่อนางวัลลภาภรณ์ผู้ตรวจรับพัสดุยืนยันว่าได้ตรวจสอบพัสดุครบถ้วนทุกรายการ และส่งมอบให้ นายบุญยังแจกจ่ายครบถ้วนแล้ว ผู้ฟ้องคดีจึงลงนามตรวจรับพัสดุ จึงเห็นได้ว่า ผู้ฟ้องคดีไม่มี เจตนาทุจริต ข้อเท็จจริงไม่ปรากฏว่าผู้ฟ้องคดีมีทรัพย์สินเพิ่มมากขึ้นผิดปกติ หรือมีการ ได้ประโยชน์ในลักษณะทรัพย์สิน หรือประโยชน์อื่นใดจากการดำเนินโครงการ ผู้ฟ้องคดี ไม่ได้กระทำการทุจริตต่อหน้าที่ อีกทั้ง ผู้ถูกฟ้องคดีที่ ๑ ไม่มีพยานหลักฐานที่สามารถพิสูจน์ โดยปราศจากข้อสงสัยว่าผู้ฟ้องคดีกระทำการทุจริต การที่ผู้ถูกฟ้องคดีที่ ๑ ไต่สวนข้อเท็จจริง และมีมติชี้มูลความผิดจึงเป็นการไต่สวนและชี้มูลความผิดไม่ตรงกับข้อเท็จจริงและเป็นการ พยายามบิดเบือนว่าผู้ฟ้องคดีกระทำความผิดทางวินัยฐานทุจริต ทั้งที่ผู้ฟ้องคดีกระทำความผิด ทางวินัยฐานอื่น มติของผู้ถูกฟ้องคดีที่ ๑ ในการประชุมครั้งที่ ๑๐๕/๒๕๖๓ เมื่อวันที่ 4 ตุลาคม ๒๕๖๒ ที่ชี้มูลความผิดผู้ฟ้องคดีจึงเป็นมติที่ไม่ชอบด้วยกฎหมาย นอกจากนี้ ผู้ถูกฟ้องคดีที่ ๑ มีอำนาจไต่สวนและชี้มูลความผิดทางวินัยเฉพาะความผิดฐานทุจริตต่อหน้าที่ราชการเท่านั้น เมื่อผู้ฟ้องคดีไม่ได้กระทำความผิดฐานทุจริตต่อหน้าที่ ผู้ถูกฟ้องคดีที่ ๑ จึงไม่มีอำนาจไต่สวน และชี้มูลความผิดผู้ฟ้องคดี และไม่ผูกพันผู้ถูกฟ้องคดีที่ ๒ ให้ต้องถือรายงานการไต่สวนของ ผู้ถูกฟ้องคดีที่ ๑ เป็นรายงานการสอบสวน โดยผู้ถูกฟ้องคดีที่ ๒ ต้องดำเนินการแต่งตั้ง คณะกรรมการสอบสวนความผิดทางวินัยเพื่อสอบสวนข้อเท็จจริง เมื่อผู้ถูกฟ้องคดีที่ ๒ ไม่ได้ แต่งตั้งคณะกรรมการดังกล่าว การที่ผู้ถูกฟ้องคดีที่ ๒ มีคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ จึงเป็นการออกคำสั่งโดยไม่ถูกต้อง ตามรูปแบบ ขั้นตอน หรือวิธีการ อันเป็นสาระสำคัญที่กำหนดไว้สำหรับการออกคำสั่งนั้น ผู้ฟ้องคดีจึงนำคดีมาฟ้องต่อศาลปกครองสูงสุดโดยวิธีส่งทางไปรษณีย์ลงทะเบียน เมื่อวันที่ ๓ ตุลาคม ๒๕๖\n\nขอให้ศาลมีคำพิพากษาหรือคำสั่ง ดังนี้ \n\n๑. เพิกถอนมติของผู้ถูกฟ้องคดีที่ ๑ ในการประชุมครั้งที่ ๑๐๕/๒๕๖๒ เมื่อวันที่ ๘ ตุลาคม ๒๕๖๒ ที่ชี้มูลความผิดของผู้ฟ้องคดี \n\n๒. เพิกถอนคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ที่ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ \n\n๓. ให้แก่ผู้ฟ้องคดี คดี\n\nศาลได้พิจารณาคำฟ้องและคำขอของผู้ฟ้องคดีแล้ว สามารถแปลความได้ว่า ผู้ฟ้องคดีมีความประสงค์จะขอให้ศาลมีคำพิพากษาหรือคำสั่งเพิกถอนคำวินิจฉัยอุทธรณ์ ของคณะกรรมการพิทักษ์ระบบคุณธรรม เรื่องดำที่ ๖๓๑๐๑๖๖ เรื่องแดงที่ ๑๐๔๘๑๖๕ ลงวันที่ ๕ กรกฎาคม ๒๕๖๕ ที่ให้ยกอุทธรณ์ของผู้ฟ้องคดี ศาลจึงมีคำสั่งลงวันที่ ๒๘ กุมภาพันธ์ ๒๕๖๖ เรียกให้คณะกรรมการพิทักษ์ระบบคุณธรรมเข้ามาเป็นผู้ถูกฟ้องคดีที่ ๓ ตาม มาตรา ๔๔ แห่งพระราชบัญญัติจัดตั้งศาลปกครองและวิธีพิจารณาคดีปกครอง พ.ศ. ๒๕๔๒ ประกอบกับข้อ ๗๘ แห่งระเบียบของที่ประชุมใหญ่ตุลาการในศาลปกครองสูงสุด ว่าด้วย วิธีพิจารณาคดีปกครอง พ.ศ. ๒๕๔๓ และมาตรา ๕๗ และมาตรา ๕๘ แห่งประมวลกฎหมาย วิธีพิจารณาความแพ่ง\n\nผู้ถูกฟ้องคดีที่ ๑ ให้การว่า ขณะเกิดเหตุคดีนี้ ผู้ฟ้องคดีดำรงตำแหน่งปลัดอำเภอ (พนักงานปกครอง 5) ที่ทำการปกครองอำเภอพญาเม็งราย จังหวัดเชียงราย มีอำนาจหน้าที่ ช่วยเหลือนายอำเภอในการปฏิบัติราชการให้เป็นไปตามพระราชบัญญัติระเบียบบริหารราชการ แผ่นดิน พ.ศ. ๒๕๓๔ และที่แก้ไขเพิ่มเติม โดยได้รับการแต่งตั้งให้เป็นคณะกรรมการตรวจรับ พัสดุในโครงการส่งเสริมการเกษตรแบบครบวงจรของที่ทำการปกครองอำเภอพญาเม็งราย ปีงบประมาณ พ.ศ. ๒๕๕๗ และได้รับการแต่งตั้งให้เป็นคณะกรรมการตรวจรับงานจ้างในโครงการ จัดทำเวทีประชาคมหมู่บ้านเพื่อเสริมสร้างความเข้มแข็งให้ชุมชนในอำเภอพญาเม็งราย จังหวัดเชียงราย งบประมาณปี พ.ศ. ๒๕๕๘ ตามระเบียบสำนักนายกรัฐมนตรีว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ และที่แก้ไขเพิ่มเติม ข้อเท็จจริงปรากฏว่า โครงการจัดทำเวทีประชาคมไม่มีการจัดโครงการ ตามที่มีการจัดซื้อจัดจ้าง และการจัดซื้อวัสดุตามโครงการส่งเสริมการเกษตรไม่ได้รับพัสดุ ครบถ้วนตามที่ได้มีการจัดซื้อ อันเป็นการไม่ปฏิบัติตามข้อ ๗๑ ของระเบียบสำนักนายกรัฐมนตรี ว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ และที่แก้ไขเพิ่มเติม ทำให้เกิดความเสียหายต่อทางราชการ มีมูล ความผิดทางอาญา ตามประมวลกฎหมายอาญา มาตรา ๑๕๗ และมีมูลความผิดทางวินัย อย่างร้ายแรง ตามพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๓๕ มาตรา ๑๒ วรรคสาม มาตรา ๘๕ วรรคสอง และมาตรา ๔๘ วรรคสอง เมื่อผู้ถูกฟ้องคดีที่ ๑ ได้รับเรื่องกล่าวหา จากสำนักงานการตรวจเงินแผ่นดิน และสำนักตรวจสอบพิเศษ ภาค ๘ (จังหวัดเชียงใหม่) เรื่อง การตรวจสอบการใช้จ่ายเงินของที่ทำการปกครองอำเภอพญาเม็งราย จังหวัดเชียงราย จึงมีมติ แต่งตั้งคณะกรรมการไต่สวนเพื่อดำเนินการไต่สวน ซึ่งคณะกรรมการไต่สวนได้ไต่สวน ข้อเท็จจริงและรวบรวมพยานหลักฐานแล้วเห็นว่าพยานหลักฐานเพียงพอพิสูจน์ได้ว่าผู้ฟ้องคดี กระทำความผิดตามข้อกล่าวหา จึงแจ้งข้อกล่าวหากับผู้ฟ้องคดี ผู้ฟ้องคดีรับทราบข้อกล่าวหา และมีหนังสือชี้แจงแก้ข้อกล่าวหาแล้ว ผู้ถูกฟ้องคดีที่ ๑ พิจารณาข้อเท็จจริงพร้อมพยานหลักฐาน\n\nตามสำนวนการไต่สวนของคณะกรรมการไต่สวนในการประชุมครั้งที่ ๑๐๕/๒๕๖๒ เมื่อวันที่ ๘ ตุลาคม ๒๕๖๒ แล้วมีมติว่า การกระทำของผู้ฟ้องคดีมีมูลความผิดทางอาญา ตามประมวลกฎหมายอาญา มาตรา ๑๕๗ และมีมูลความผิดทางวินัยอย่างร้ายแรง ฐานปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ราชการ โดยมิชอบ เพื่อให้ตนเองหรือผู้อื่นได้ประโยชน์ที่มีควรได้ เป็นการทุจริตต่อหน้าที่ราชการ ฐานปฏิบัติหน้าที่ราชการโดยจงใจไม่ปฏิบัติตามกฎหมาย ระเบียบของทางราชการ มติคณะรัฐมนตรี หรือนโยบายของรัฐบาล อันเป็นเหตุให้เสียหายแก่ราชการอย่างร้ายแรง และฐานกระทำการอื่นใด อันได้ชื่อว่าเป็นผู้ประพฤติชั่วอย่างร้ายแรง ตามพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๓๕ มาตรา ๒ วรรคสาม มาตรา ๕๕ วรรคสอง และมาตรา ๔๘ วรรคสอง เมื่อผู้ถูกฟ้องคดีที่ ๑ ไต่สวนแล้วมีมติว่าผู้ฟ้องคดีกระทำความผิดฐานทุจริตต่อหน้าที่ หรือกระทำความผิดต่อตำแหน่ง หน้าที่ราชการ อันเป็นความผิดมูลฐานตามที่รัฐธรรมนูญกำหนดไว้แล้ว ผู้ถูกฟ้องคดีที่ ๑ จึงมี อำนาจชี้มูลความผิดทางวินัยผู้ฟ้องคดีฐานอื่นซึ่งเป็นความผิดที่เกี่ยวข้องกันได้ ตามบทบัญญัติ มาตรา ๑๙ (๔) ประกอบมาตรา ๘๔ แห่งพระราชบัญญัติประกอบรัฐธรรมนูญว่าด้วยการป้องกัน และปราบปรามการทุจริต พ.ศ. ๒๕๔๒ และที่แก้ไขเพิ่มเติม ดังนั้น การไต่สวนข้อเท็จจริง มติชี้มูลความผิด และคำวินิจฉัยของผู้ถูกฟ้องคดีที่ ๑ ตลอดจนการที่ผู้ถูกฟ้องคดีที่ ๑ ชี้มูล ความผิดทางวินัยและส่งเรื่องให้ผู้ถูกฟ้องคดีที่ ๒ ซึ่งผู้บังคับบัญชาของผู้ฟ้องคดีดำเนินการ ทางวินัย จึงเป็นการดำเนินการตามขั้นตอนที่กฎหมายและระเบียบกำหนดไว้แล้ว และมีผล ผูกพันผู้ถูกฟ้องคดีที่ ๒ ซึ่งเป็นผู้บังคับบัญชาของผู้ฟ้องคดีในการพิจารณาโทษทางวินัยตามมติ ของผู้ถูกฟ้องคดีที่ ๑ การที่ผู้ถูกฟ้องคดีที่ ๒ มีคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดีออกจากราชการตามฐานความผิดที่ผู้ถูกฟ้องคดีที่ ๑ ได้มีมติจึงชอบด้วยกฎหมายแล้ว นอกจากนี้ อัยการสูงสุดได้ยื่นฟ้องผู้ฟ้องคดีเป็นจำเลยที่ ๒ ต่อศาลอาญาคดีทุจริตและประพฤติมิชอบภาค ๕ ในคดีหมายเลขดำที่ อท ๑๓๕, ๑๓๖/๒๕๖๒ คดีหมายเลขแดงที่ อท ๗๘, ๗๙/๒๕๖๓ ซึ่งศาลอาญาคดีทุจริตและประพฤติมิชอบภาค ๕ ได้วินิจฉัยว่า โครงการจัดทำเวทีประชาคมหมู่บ้านเพื่อเสริมสร้างความเข้มแข็งให้ชุมชน อำเภอ พญาเม็งราย จังหวัดเชียงราย ผู้ฟ้องคดีในฐานะประธานกรรมการตรวจการจ้างและตรวจรับพัสดุ ได้ลงนามรับรองเป็นหลักฐานว่า มีการส่งมอบการจ้างและพัสดุต่างๆ ถูกต้องครบถ้วน และยังสั่งการ ให้คณะกรรมการตรวจการจ้างและตรวจรับพัสดุคนอื่นที่เป็นสมาชิกอาสารักษาดินแดน ซึ่งเป็น ผู้ใต้บังคับบัญชาโดยตรงของผู้ฟ้องคดี ลงนามในเอกสารเพื่อใช้เป็นหลักฐานในการเบิกจ่ายเงิน ของทางราชการ ทั้งที่ข้อเท็จจริงไม่มีการจัดโครงการและไม่มีการตรวจการจ้างและตรวจรับพัสดุ ตามที่มีการเบิกจ่ายแต่อย่างใด และในส่วนของโครงการส่งเสริมการเกษตรแบบครบวงจร ผู้ฟ้องคดี มีเจตนาร่วมกับนายบุญยัง เรือนกูล ในการทำเอกสารหลักฐานการเบิกจ่ายอันเป็นเท็จ เนื่องจากไม่ปฏิบัติตามระเบียบสำนักนายกรัฐมนตรีว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ และที่แก้ไขเพิ่มเติม การกระทำของผู้ฟ้องคดีจึงเป็นความผิด ฐานเป็นเจ้าพนักงานปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ โดยมิชอบ เพื่อให้เกิดความเสียหายแก่ผู้หนึ่งผู้ใด หรือปฏิบัติหรือละเว้นการปฏิบัติหน้าที่โดยทุจริต พิพากษาจำคุกผู้ฟ้องคดี 5 ปี\n\nผู้ถูกฟ้องคดีที่ ๒ ให้การในทำนองเดียวกับคำให้การของผู้ถูกฟ้องคดีที่ ๑ และ เพิ่มเติมว่า มูลเหตุคดีนี้เกิดจากอำเภอพญาเม็งรายได้จัดทำโครงการจัดทำเวทีประชาคม หมู่บ้านเพื่อเสริมสร้างความเข้มแข็งให้ชุมชนอำเภอพญาเม็งราย ปีงบประมาณ พ.ศ. ๒๕๕๘ เพื่อให้ ราษฎรมีส่วนร่วมในการป้องกันและเฝ้าระวังปัญหายาเสพติดในพื้นที่ ๕ ตำบล ๖๙ หมู่บ้าน ระยะเวลาดำเนินการตั้งแต่วันที่ ๑๕ ธันวาคม ๒๕๕๗ ถึงวันที่ ๓๑ มกราคม ๒๕๔๘ ได้รับการ สนับสนุนงบประมาณจากองค์การบริหารส่วนตำบล จำนวน ๕ แห่ง แห่งละ ๑๐,๐๐๐ บาท และเทศบาลตำบลพญาเม็งราย ๒๐,๐๐๐ บาท รวมเป็นเงิน ๗๐,๐๐๐ บาท โดยมีผู้ฟ้องคดี เป็นผู้เสนอโครงการ โดยผ่านการเห็นชอบจากนายประจญ ปรัชญ์สกุล ปลัดอำเภอหัวหน้าฝ่าย บริหารงานปกครอง และได้รับอนุมัติโครงการจากนายบุญยัง เรือนกูล นายอำเภอพญาเม็งราย และอำเภอพญาเม็งรายได้มีคำสั่ง ที่ ๓๙๖/๒๕๕๗ ลงวันที่ ๒๗ ธันวาคม ๒๕๕๗ แต่งตั้ง ดังกล่าว นางวัลลภาภรณ์ เรือนปาง เสมียนตราอำเภอพญาเม็งราย เป็นกรรมการรับเงินอุดหนุนโครงการ ต่อมา ผู้ฟ้องคดีได้เสนอขออนุมัติเปลี่ยนแปลงกำหนดการจัดทำโครงการการจัดทำเวที ประชาคมหมู่บ้าน โดยให้จัดประชุมให้แล้วเสร็จภายในวันที่ ๑๙ มกราคม ๒๕๕๘ ณ หอประชุม พญาเม็งราย ดังนี้ หมู่ที่ ๑ ๒๐ ตำบลแม่เปา วันที่ ๑๗ มกราคม ๒๕๔๗ หมู่ที่ ๑ - ๑๔ ตำบล เม็งราย วันที่ ๑๘ มกราคม ๒๕๕๗ หมู่ที่ ๑ ๑๑ ตำบลแม่ต่ำ วันที่ ๑๘ มกราคม ๒๕๕๗ หมู่ที่ ๑- ๑๘ ตำบลไม้ยา วันที่ ๑๙ มกราคม ๒๕๕๗ และหมู่ที่ ๑ ๘ ตำบลตาดควัน วันที่ ๑๙ มกราคม ๒๕๔๗ นายบุญยัง ได้ลงนามอนุมัติท้ายบันทึกดังกล่าว และมีผู้ฟ้องคดี นายพัฒน์ อินถา และนายทัศน์ ถาแก้ว เป็นคณะกรรมการตรวจรับพัสดุการดำเนินการจัดซื้อจัดจ้าง จำนวน ๓ รายการ ดังนี้ (๑) วัสดุแบบพิมพ์อบรมสร้างความเข้มแข็งให้ชุมชน และกระดาษถ่ายเอกสารจำนวน ๑๐ รีม รีมละ ๑๐๐ บาท เป็นเงิน ๑,๐๐๐ บาท จากการตรวจสอบข้อเท็จจริงพบว่า โครงการจัดทำเวที ประชาคมหมู่บ้านฯ ไม่มีการจัดเตรียมเอกสารหรือแจกจ่ายเอกสาร จึงไม่ได้มีการใช้วัสดุที่จัดซื้อ ให้เป็นไปตามวัตถุประสงค์ของโครงการ (๒) จ้างเหมาจัดทำอาหาร/อาหารว่าง เครื่องดื่ม ให้ผู้เข้าอบรมโครงการการจัดทำเวทีประชาคมหมู่บ้านฯ กับนายสว่าง วรรณสอน สมาชิก กองอาสารักษาดินแดน จากการตรวจสอบข้อเท็จจริงพบว่าไม่มีการจ้างนายสว่าง ผู้รับจ้าง ทำอาหารจริง และนายสว่างไม่มีอาชีพในการทำอาหาร ทั้งปรากฏหลักฐานการเบิกจ่ายซึ่งไม่มี รายละเอียดในการจัดหาอาหารในแต่ละวัน จำนวนอาหารในแต่ละวันมีความเหมาะสมกับราคาหรือไม่ เป็นการยากต่อการดำเนินการตรวจรับว่ามีการจัดจ้างตรงตามใบสั่งจ้างหรือไม่ (๓) จ้างเหมา จัดสถานที่และเช่าเครื่องเสียงจัดทำเวทีประชาคมฯ จำนวน ๓๐,๐๐๐ บาท กับนายสุวนันท์ ไชยานันตา สมาชิกกองอาสารักษาดินแดน จากการตรวจสอบข้อเท็จจริงพบว่า นายสุวนันท์ไม่มีอาชีพในการ จัดสถานที่หรือมีเครื่องเสียงให้เช่า ไม่มีการจ้างเหมาจัดสถานที่และเช่าเครื่องเสียง ไม่มีการ จ่ายเงินให้กับนายสุวนันท์จริง และเอกสารมีการดำเนินการไม่ถูกต้อง เช่น ใบส่งมอบงานระบุ วันที่ ๑๙ มกราคม ๒๕๕๙ และใบสำคัญรับเงินไม่ระบุวันที่ มกราคม ๒๕๕๐ เป็นต้น ส่วนที่ อำเภอพญาเม็งรายได้จัดทำโครงการจ่ายเงินอุดหนุนและการจัดซื้อวัสดุโครงการส่งเสริมเกษตร แบบครบวงจร จำนวน ๓๘๔,๐๐๐ บาท จากการตรวจสอบเอกสารปีงบประมาณ พ.ศ. ๒๕๔๗ ๒๕๔๘ พบว่า มีการจัดซื้อโดยแบ่งการจัดซื้อจำนวน 5 ครั้ง โดยแยกบันทึกเป็นแต่ละหมู่บ้านจำนวน 5 หมู่บ้าน ครั้งละ ๑๑ รายการ วงเงินจัดซื้อหมู่บ้านละ ๖๔,๐๐๐ บาท ตามใบสั่งซื้อเลขที่ ๗/๒๕๔๘ - ๑๒/๒๕๕๘ ลงวันที่ ๑๔ กุมภาพันธ์ ๒๕๕๘ รายการที่จัดซื้อประกอบด้วย (๑) เครื่องสกัดยาฆ่าแมลง (๒) เครื่องบดดิน (๓) ถังพ่นยา (๔) ถั่วฝักยาว (๕) ผักบุ้งจีน (๖) แตงกวา (๓) คะน้า (๘) กวางตุ้ง (๔) ผักชี (๑๐) ผักขึ้นฉ่าย ผักข (๑๑) บวบเหลี่ยม รวมเป็นเงินทั้งสิ้น ๓๘๔,๐๐๐ บาท เป็นรายการจัดซื้อวัสดุจากนายธนกร ไชยวรรณ์ โดยจัดซื้อในวิธีตกลงราคาให้กับ เกษตรกรในพื้นที่อำเภอพญาเม็งรายใน 5 หมู่บ้าน มีผู้ฟ้องคดี นายพัฒน์ อินถา และนายทัศน์ ถาแก้ว เป็นคณะกรรมการตรวจรับพัสดุ ซึ่งคณะกรรมการตรวจรับพัสดุได้ลงลายมือชื่อในใบตรวจรับ โดยเห็นว่ามีปริมาณและคุณภาพถูกต้อง พร้อมส่งมอบให้กับเจ้าหน้าที่พัสดุแล้ว แต่จากการ ตรวจสอบข้อเท็จจริงพบว่าโครงการส่งเสริมการเกษตรแบบครบวงจรไม่มีการจัดทำโครงการที่ระบุ รายละเอียดของวัตถุประสงค์ กลุ่มเป้าหมาย ผลที่ได้รับจากโครงการอันไม่มีจุดประสงค์ในการ ใช้งบประมาณ และในการขอซื้อวัสดุอุปกรณ์ในรายงานการขอซื้อ ไม่มีที่มาของราคาของวัสดุ และมีการจัดวัสดุชนิดเดียวกัน1 ๑๑ ๑๑ รายการ แยกเป็น 5 ครั้ง ในวันเดียวกัน อันทำให้อำนาจ ในการสั่งซื้อเปลี่ยนไปเป็นการแบ่งซื้อตามข้อ ๒๒ วรรคสอง ของระเบียบสำนักนายกรัฐมนตรี ว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ และที่แก้ไขเพิ่มเติม อีกทั้ง เมื่อตรวจสอบสำเนาเอกสารบัญชี รับพัสดุของที่ทำการปกครองอำเภอพญาเม็งราย ผู้ลงลายมือชื่อรับพัสดุแจ้งว่าลงลายมือชื่อตามที่ ที่ทำการปกครองอำเภอพญาเม็งรายให้ลงลายมือชื่อโดยไม่ได้ตรวจสอบ และบางรายยืนยันว่าไม่ใช่ ลายมือชื่อของตนและยืนยันว่าได้รับเฉพาะเครื่องสกัดยาฆ่าแมลงและเครื่องบดดิน ส่วนรายการอื่นๆ ไม่ได้รับ \n\nเมื่อผู้ถูกฟ้องคดีที่ ๑ ได้รับเรื่องกล่าวหา พิจารณาพฤติการณ์แห่งการกระทำ ความผิด และมีมติชี้มูลความผิดทางวินัยผู้ฟ้องคดีแล้ว จึงส่งรายงานสำนวนการสอบสวน เอกสารหลักฐาน พร้อมทั้งคำวินิจฉัยมายังผู้ถูกฟ้องคดีที่ ๒ ซึ่งเป็นผู้บังคับบัญชาของผู้ฟ้องคดี\n\nเพื่อพิจารณาโทษทางวินัยตามฐานความผิดที่ผู้ถูกฟ้องคดีที่ ๑ ได้มีมติ โดยไม่ต้องแต่งตั้ง คณะกรรมการสอบสวนวินัยอีก และให้ถือว่าสำนวนการไต่สวนของผู้ถูกฟ้องคดีที่ ๑ เป็นสำนวน การสอบสวนทางวินัยของคณะกรรมการสอบสวนวินัย ตามมาตรา ๔๘ แห่งพระราชบัญญัติ ขั้นตอน ประกอบรัฐธรรมนูญว่าด้วยการป้องกันและปราบปรามการทุจริต พ.ศ. ๒๕๖๑ การที่ผู้ถูกฟ้องคดีที่ ๒ มีคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดี ออกจากราชการตามฐานความผิดที่ผู้ถูกฟ้องคดีที่ ๑ มีมติ เป็นการลงโทษตามแนวการลงโทษ ตามมติคณะรัฐมนตรี และระดับโทษเหมาะสมแก่กรณีกระทำผิดแล้ว โดยที่การพิจารณาโทษ ทางวินัยกับผู้ฟ้องคดีนั้น ผู้ถูกฟ้องคดีที่ ๒ ได้รับฟังข้อเท็จจริงถูกต้องตามหลักเกณฑ์ รูปแบบ หรือวิธีการอันเป็นสาระสำคัญเกี่ยวกับการลงโทษทางวินัยอย่างร้ายแรงตามที่กฎหมาย กำหนด แต่ผู้ถูกฟ้องคดีที่ ๒ ไม่สามารถวินิจฉัยกระบวนการไต่สวนหรือมติ มูลของผู้ถูกฟ้องคดีที่ ๑ เป็นอย่างอื่นได้ เนื่องจากสำนวนการไต่สวนของผู้ถูกฟ้องคดีที่ ๑ มีผลผูกพันผู้ถูกฟ้องคดีที่ ๒ ที่จะต้องพิจารณาโทษทางวินัยตามฐานความผิดที่ผู้ถูกฟ้องคดีที่ ๑ มีมติ ซึ่งผู้ถูกฟ้องคดีที่ ๒ ได้ดำเนินการตามหลักเกณฑ์ รูปแบบ ขั้นตอน หรือวิธีการอันเป็นสาระสำคัญถูกต้องตามที่ กฎหมายกำหนดแล้ว ดังนั้น คำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ จึงเป็นคำสั่งที่ชอบด้วยกฎหมาย ไม่มีเหตุที่จะให้ ผู้ฟ้องคดีกลับเข้ารับราชการและคืนสิทธิประโยชน์ให้แก่ผู้ฟ้องคดีแต่อย่างใด\n\nผู้ถูกฟ้องคดีที่ ๓ ให้การในทำนองเดียวกับคำให้การของผู้ถูกฟ้องคดีที่ ๑ และ ผู้ถูกฟ้องคดีที่ ๓ ขอยืนยันตามวินิจฉัยของผู้ถูกฟ้องคดีที่ ๓ เรื่องคำที่ ผู้ถูกฟ้องคดีที่ ๒ และเพิ่มเติมว่า ๖๓๑๐๑๖๖ เรื่องแดงที่ ๑๐๔๘๑๖๕ ลงวันที่ ๕ กรกฎาคม ๒๕๖๕ ซึ่งผู้ถูกฟ้องคดีที่ ๓ ได้วินิจฉัยอุทธรณ์ของผู้ฟ้องคดีตามอำนาจหน้าที่ที่กฎหมายกำหนด และได้พิจารณาข้อเท็จจริง ตามพยานหลักฐานที่ปรากฏอย่างละเอียดรอบคอบ ปราศจากอคติ และให้ความเป็นธรรม แก่ผู้ฟ้องคดี ตามหลักเกณฑ์และวิธีการที่กฎ ก.พ.ค. ว่าด้วยการอุทธรณ์และการพิจารณา วินิจฉัยอุทธรณ์ พ.ศ. ๒๕๕๑ แล้ว ดังนั้น การที่ผู้ถูกฟ้องคดีที่ ๓ มีคำวินิจฉัยยกอุทธรณ์ของผู้ฟ้องคดี จึงเป็นการกระทำที่ถูกต้องและชอบด้วยกฎหมายแล้ว\n\nศาลปกครองสูงสุดออกนั่งพิจารณาคดีครั้งแรกเมื่อวันที่ 4 มีนาคม ๒๕๖๙ โดยได้รับฟังสรุปข้อเท็จจริงของตุลาการเจ้าของสำนวน พิจารณาคำชี้แจงด้วยวาจาประกอบ คำแถลงการณ์เป็นหนังสือของตุลาการผู้แถลงคดี\n\nศาลปกครองสูงสุดได้ตรวจพิจารณาพยานหลักฐานในคำฟ้อง คำให้การ คำคัดค้านคำให้การ คำให้การเพิ่มเติม แล้ว\n\nข้อเท็จจริงรับฟังได้ว่า เดิมผู้ฟ้องคดีรับราชการเป็นข้าราชการพลเรือนสามัญ ตำแหน่งปลัดอำเภอ (เจ้าพนักงานปกครองชำนาญการพิเศษ) ที่ทำการปกครองอำเภอแม่สาย จังหวัดเชียงราย กรมการปกครอง ได้รับความเดือดร้อนเสียหายจากการที่ผู้ถูกฟ้องคดีที่ ๒ มีคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดี ออกจากราชการ ตั้งแต่วันที่ ๒๓ พฤษภาคม ๒๕๖๓ เป็นต้นไป กรณีเมื่อครั้งผู้ฟ้องคดีดำรงตำแหน่ง ปลัดอำเภอ (เจ้าพนักงานปกครอง 5) ที่ทำการปกครองอำเภอพญาเม็งราย จังหวัดเชียงราย ถูกกล่าวหาว่ากระทำการทุจริตโครงการส่งเสริมการเกษตรแบบครบวงจร และโครงการจัดทำ เวทีประชาคมหมู่บ้านเพื่อเสริมสร้างความเข้มแข็งให้ชุมชนอำเภอพญาเม็งราย จังหวัดเชียงราย ซึ่งผู้ฟ้องคดีมีอำนาจหน้าที่เป็นคณะกรรมการตรวจรับพัสดุในโครงการดังกล่าว กระทำการ จัดทำเอกสารหลักฐานการเบิกจ่ายเงินอันเป็นเท็จและลงลายมือชื่อตรวจรับพัสดุอันเป็นเท็จ ซึ่งเป็นการไม่ปฏิบัติตามข้อ ๗๑ ของระเบียบสำนักนายกรัฐมนตรีว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ และที่แก้ไขเพิ่มเติม ผู้ถูกฟ้องคดีที่ ๑ ในการประชุมครั้งที่ ๑๐๕/๒๕๖๒ เมื่อวันที่4 ตุลาคม ๒๕๖๒ จึงมีมติชี้มูลความผิดอาญา ฐานเป็นเจ้าพนักงานปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ โดยมิชอบ เพื่อให้เกิดความเสียหายแก่ผู้หนึ่งผู้ใด หรือปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ โดยทุจริต ตามมาตรา ๑๕๗ แห่งประมวลกฎหมายอาญา และความผิดทางวินัยอย่างร้ายแรง ฐานปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ราชการโดยมิชอบ เพื่อให้ตนเองหรือผู้อื่นได้ประโยชน์ ที่มีควรได้ เป็นการทุจริตต่อหน้าที่ราชการ ฐานปฏิบัติหน้าที่ราชการโดยจงใจไม่ปฏิบัติตาม กฎหมาย ระเบียบของทางราชการ มติคณะรัฐมนตรี หรือนโยบายของรัฐบาล อันเป็นเหตุให้ เสียหายแก่ราชการอย่างร้ายแรง และฐานกระทำการอื่นใดอันได้ชื่อว่าเป็นผู้ประพฤติชั่วอย่างร้ายแรง ตามมาตรา ๘๒ วรรคสาม มาตรา ๘๕ วรรคสอง และมาตรา ๙๘ วรรคสอง แห่งพระราชบัญญัติ ระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๓๕ ประกอบมาตรา ๑๓๓ แห่งพระราชบัญญัติระเบียบ ข้าราชการพลเรือน พ.ศ. ๒๕๕๑ ผู้ถูกฟ้องคดีที่ ๑ จึงมีหนังสือสำนักงาน ป.ป.ช. ที่ ปช ๐๑.๐๑ (ชร) ๑๔๔๒ ลงวันที่ 6 พฤศจิกายน ๒๕๖๒ ส่งรายงาน สำนวนการไต่สวน เอกสารหลักฐาน และคำวินิจฉัย ซึ่งเป็นผู้บังคับบัญชาและผู้มีอำนาจบรรจุและแต่งตั้งผู้ฟ้องคดี ไปยังผู้ถูกฟ้องคดีที่ ๒ ตามมาตรา ๕๗ (๔) แห่งพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๕๑ ผู้ถูกฟ้องคดีที่ ๒ เสนอเรื่องให้ อ.ก.พ. กระทรวงมหาดไทย พิจารณา ซึ่ง อ.ก.พ. กระทรวงมหาดไทย มีมติในการประชุม ครั้งที่ ๒/๒๕๖๓ เมื่อวันที่ ๑๘ มิถุนายน ๒๕๖๓ ให้ลงโทษไล่ผู้ฟ้องคดีออกจากราชการตามฐาน ความผิดที่ผู้ถูกฟ้องคดีที่ ๑ ชี้มูลความผิด และตามมติคณะรัฐมนตรี เมื่อวันที่ ๒๑ ธันวาคม ๒๕๓๖ แจ้งตามหนังสือสำนักเลขาธิการคณะรัฐมนตรี ที่ นร ๐๒๐๕/ว ๒๓๔ ลงวันที่ ๒๔ ธันวาคม ๒๕๓๖ ผู้ถูกฟ้องคดีที่ ๒ จึงมีคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม\n\n๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ ตั้งแต่วันที่ ๒๓ พฤษภาคม ๒๕๖๓ เป็นต้นไป ซึ่งเป็นวันที่ผู้ฟ้องคดีถูกพักราชการไว้ก่อน ต่อมา ผู้ฟ้องคดีมีหนังสือลงวันที่ ๑๕ กันยายน ๒๕๖๓ อุทธรณ์คำสั่งดังกล่าวต่อผู้ถูกฟ้องคดีที่ ๓ ผู้ถูกฟ้องคดีที่ ๓ พิจารณาแล้วจึงมีคำวินิจฉัย เรื่องดำที่ ผู้ฟ้องคดี ๖๓๑๐๑๖๖ เรื่องแดงที่ ๐๐๔๘๑๖๕ ลงวันที่ ๕ กรกฎาคม ๒๕๖๕ ให้ยกอุทธรณ์ และมีหนังสือ ที่ นร ๑๐๑๐.๓.๑.๔/๒๕ ลงวันที่ 4 กรกฎาคม ๒๕๖๕ แจ้งคำวินิจฉัยดังกล่าว ให้ผู้ฟ้องคดีทราบ ผู้ฟ้องคดีไม่เห็นพ้องด้วย เนื่องจากผู้ฟ้องคดีปฏิบัติตามคำสั่งของผู้บังคับบัญชา ไม่มีเจตนาทุจริต ไม่มีพยานหลักฐานว่าผู้ฟ้องคดีทุจริต ผู้ถูกฟ้องคดีที่ ๑ จึงไม่มีอำนาจชี้มูล จึงนำคดีมาฟ้องต่อศาลปกครองสูงสุด\n\nศาลปกครองสูงสุดได้ตรวจพิจารณากฎหมาย ระเบียบ และข้อบังคับที่เกี่ยวข้อง ประกอบด้วยแล้ว\n\nคดีมีประเด็นที่จะต้องวินิจฉัยว่า คำวินิจฉัยเรื่องดำที่ ๖๓๑๐๑๖๖ เรื่องแดง ที่ ๑๐๔๘๑๖๕ ลงวันที่ ๕ กรกฎาคม ๒๕๖๕ ให้ยกอุทธรณ์ของผู้ฟ้องคดี เป็นการกระทำการ โดยชอบด้วยกฎหมายหรือไม่ โดยคดีมีปัญหาต้องวินิจฉัยก่อนว่า คำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ที่ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ ตามมติ ของผู้ถูกฟ้องคดีที่ ๑ ในการประชุมครั้งที่ ๑๐๕/๒๕๖๒ เมื่อวันที่ 6 ตุลาคม ๒๕๖๒ เป็นการ กระทำโดยถูกต้องตามรูปแบบขั้นตอน หรือวิธีการอันเป็นสาระสำคัญที่กำหนดไว้สำหรับ การกระทำนั้นหรือไม\n\nพิเคราะห์แล้วเห็นว่า พระราชบัญญัติประกอบรัฐธรรมนูญว่าด้วยการป้องกัน และปราบปรามการทุจริต พ.ศ. ๒๕๖๑ มาตรา ๔ บัญญัติว่า “เจ้าหน้าที่ของรัฐ” หมายความว่า ข้าราชการหรือพนักงานส่วนท้องถิ่นซึ่งมีตำแหน่งหรือเงินเดือนประจำ ผู้ปฏิบัติงานในหน่วยงาน ของรัฐหรือในรัฐวิสาหกิจ ผู้บริหารท้องถิ่น รองผู้บริหารท้องถิ่น ผู้ช่วยผู้บริหารท้องถิ่น และ สมาชิกสภาท้องถิ่นขององค์กรปกครองส่วนท้องถิ่น เจ้าพนักงานตามกฎหมายว่าด้วยลักษณะ ปกครองท้องที่ หรือเจ้าพนักงานอื่นตามที่กฎหมายบัญญัติ และให้หมายความรวมถึงกรรมการ อนุกรรมการ ลูกจ้างของส่วนราชการ หน่วยงานของรัฐ หรือรัฐวิสาหกิจ และบุคคลหรือคณะบุคคล บรรดาซึ่งมีกฎหมายกำหนดให้ใช้อำนาจหรือได้รับมอบให้ใช้อำนาจทางปกครองที่จัดตั้งขึ้น ในระบบราชการ รัฐวิสาหกิจ หรือกิจการอื่นของรัฐด้วย แต่ไม่รวมถึงผู้ดำรงตำแหน่งทางการเมือง ตุลาการศาลรัฐธรรมนูญ ผู้ดำรงตำแหน่งในองค์กรอิสระ และคณะกรรมการ ป.ป.ช. มาตรา ๔๘ วรรคหนึ่ง บัญญัติว่า เมื่อความปรากฏต่อคณะกรรมการ ป.ป.ช. ไม่ว่าจะมีการกล่าวหาหรือไม่ ว่ามีการกระทำความผิดที่อยู่ในหน้าที่และอำนาจของคณะกรรมการ ป.ป.ช. ให้คณะกรรมการ ป.ป.ช. ดำเนินการตามหน้าที่และอำนาจโดยพลัน โดยในกรณีที่จำเป็นต้องมีการไต่สวน ต้องไต่สวน\n\nและมีความเห็นหรือวินิจฉัยให้แล้วเสร็จภายในกำหนดเวลาที่คณะกรรมการ ป.ป.ช. กำหนด ซึ่งต้องไม่เกินสองปีนับแต่วันเริ่มดำเนินการไต่สวน มาตรา ๔๑ บัญญัติว่า เมื่อคณะกรรมการ ป.ป.ช. ไต่สวนแล้วมีมติวินิจฉัยว่าเจ้าหน้าที่ของรัฐกระทำความผิดฐานทุจริตต่อหน้าที่ หรือ กระทำความผิดต่อตำแหน่งหน้าที่ราชการ หรือความผิดต่อตำแหน่งหน้าที่ในการยุติธรรม หรือ ความผิดที่เกี่ยวข้องกันให้ดำเนินการดังต่อไปนี้.. (๒) ถ้ามีมูลความผิดทางวินัย ให้คณะกรรมการ ป.ป.ช. ส่งรายงาน สำนวนการไต่สวน เอกสารหลักฐาน และคำวินิจฉัยไปยังผู้บังคับบัญชาหรือผู้มีอำนาจ แต่งตั้งถอดถอนภายในสามสิบวันเพื่อให้ดำเนินการทางวินัยต่อไป มาตรา ๔๘ วรรคหนึ่ง บัญญัติว่า เมื่อผู้บังคับบัญชาหรือผู้มีอำนาจแต่งตั้งถอดถอนผู้ถูกกล่าวหาได้รับสำนวนการไต่สวน ของคณะกรรมการ ป.ป.ช. ตามมาตรา ๑ แล้ว ให้ผู้บังคับบัญชาหรือผู้มีอำนาจแต่งตั้งถอดถอน ผู้ถูกกล่าวหาผู้นั้นพิจารณาโทษทางวินัยตามฐานความผิดที่คณะกรรมการ ป.ป.ช. ได้มีมติโดยไม่ต้อง แต่งตั้งคณะกรรมการสอบสวนวินัยอีก โดยในการพิจารณาโทษทางวินัยแก่ผู้ถูกกล่าวหา ให้ถือว่า สำนวนการไต่สวนของคณะกรรมการ ป.ป.ช. เป็นสำนวนการสอบสวนทางวินัยของคณะกรรมการ สอบสวนวินัยตามกฎหมาย ระเบียบ หรือข้อบังคับว่าด้วยการบริหารงานบุคคลของผู้ถูกกล่าวหานั้น แล้วแต่กรณี\n\nจากบทบัญญัติแห่งกฎหมายดังกล่าว การที่ผู้ถูกฟ้องคดีที่ ๑ จะใช้อำนาจในการ ไต่สวนและวินิจฉัยชี้มูลความผิดที่เกี่ยวข้องกันตามกฎหมายว่าด้วยการป้องกันและปราบปราม การทุจริตได้จะต้องเป็นกรณีที่เจ้าหน้าที่ของรัฐกระทำความผิดฐานทุจริตต่อหน้าที่ หรือกระทำ ความผิดต่อตำแหน่งหน้าที่ราชการ หรือความผิดต่อตำแหน่งหน้าที่ในการยุติธรรมเสียก่อน หากมีความผิดอื่นที่เกี่ยวข้องกับความผิดมูลฐานดังกล่าว ผู้ถูกฟ้องคดีที่ ๑ จึงจะมีอำนาจชี้มูล ความผิดทางวินัยอันเป็นความผิดที่เกี่ยวข้องกันได้ ข้อเท็จจริงปรากฏว่า เมื่อสำนักงานการ ดังกล่าว ตรวจเงินแผ่นดิน โดยสำนักตรวจสอบพิเศษ ภาค ๘ มีหนังสือ ที่ ตผ ๐๐๕๐ ชม/๐๐๑ ลงวันที่ ๙ มกราคม ๒๕๖๐ ถึงผู้ถูกฟ้องคดีที่ ๑ เรื่อง การตรวจสอบการใช้จ่ายเงินที่ได้รับอุดหนุน ของที่ทำการปกครองอำเภอพญาเม็งราย จังหวัดเชียงราย ผู้ถูกฟ้องคดีที่ ๑ ได้รับเรื่องกล่าวหา และมีมติในการประชุมครั้งที่ ๑๐๐๙ - ๘๐/๒๕๖๑ เมื่อวันที่ 4 กันยายน ๒๕๖๑ แต่งตั้งคณะกรรมการไต่สวนเพื่อดำเนินการไต่สวน ตามมาตรา ๕๑ แห่งพระราชบัญญัติ ประกอบรัฐธรรมนูญว่าด้วยการป้องกันและปราบปรามการทุจริต พ.ศ. ๒๕๖๑ คณะกรรมการไต่สวน ได้แจ้งข้อกล่าวหาให้ผู้ฟ้องคดีทราบ ผู้ฟ้องคดีรับทราบข้อกล่าวหาและเข้าใจข้อกล่าวหา ตลอดจน ได้ชี้แจงแก้ข้อกล่าวหา ซึ่งคณะกรรมการไต่สวนได้รวบรวมข้อเท็จจริงและพยานหลักฐาน ทั้งหมดแล้วเห็นว่ามีพยานหลักฐานเพียงพอที่จะสนับสนุนข้อกล่าวหา จึงได้จัดทำรายงานและ สำนวนไต่สวนพร้อมทั้งทำความเห็นเสนอต่อผู้ถูกฟ้องคดีที่ ๑ ผู้ถูกฟ้องคดีที่ ๑ พิจารณาแล้ว\n\nมีมติในการประชุมครั้งที่ ๑๐๕/๒๕๖๒ เมื่อวันที่ ๘ ตุลาคม ๒๕๖๒ ว่า การกระทำของผู้ฟ้องคดี มีมูลความผิดทางอาญา ตามมาตรา ๑๕๗ แห่งประมวลกฎหมายอาญา และความผิดทางวินัย อย่างร้ายแรง ฐานปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ราชการโดยมิชอบ เพื่อให้ตนเองหรือผู้อื่น ได้ประโยชน์ที่มีควรได้ เป็นการทุจริตต่อหน้าที่ราชการ ฐานปฏิบัติหน้าที่ราชการโดยจงใจ ไม่ปฏิบัติตามกฎหมาย ระเบียบของทางราชการ มติคณะรัฐมนตรี หรือนโยบายของรัฐบาล อันเป็นเหตุให้เสียหายแก่ราชการอย่างร้ายแรง และฐานกระทำการอื่นใดอันได้ชื่อว่าเป็น ผู้ประพฤติชั่วอย่างร้ายแรง ตามมาตรา ๘๒ วรรคสาม มาตรา ๘๕ วรรคสอง และมาตรา ๔๘ วรรคสอง แห่งพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๓๕ ประกอบมาตรา ๑๓๓ แห่งพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๕๑ จึงเห็นได้ว่า ผู้ถูกฟ้องคดีที่ ๑ ไต่สวน ข้อเท็จจริงและมีมติชี้มูลความผิดทางวินัยผู้ฟ้องคดีในการกระทำความผิดฐานทุจริตต่อหน้าที่แล้ว ผู้ถูกฟ้องคดีที่ ๑ จึงมีอำนาจชี้มูลความผิดทางวินัยผู้ฟ้องคดีในฐานอื่นที่เกี่ยวข้องกันและส่งเรื่องไปยัง ผู้ถูกฟ้องคดีที่ 6 ซึ่งเป็นผู้บังคับบัญชาหรือผู้มีอำนาจแต่งตั้งถอดถอนผู้ฟ้องคดีเพื่อให้ดำเนินการ ทางวินัยได้ โดยไม่ต้องแต่งตั้งคณะกรรมการสอบสวนวินัยอีก และให้ถือว่าสำนวนการไต่สวนของ ผู้ถูกฟ้องคดีที่ ๑ เป็นสำนวนการสอบสวนทางวินัยของคณะกรรมการสอบสวนวินัย ตามมาตรา ๙๑ (๒) และมาตรา ๔๘ วรรคหนึ่ง แห่งพระราชบัญญัติประกอบรัฐธรรมนูญว่าด้วยการป้องกันและ ปราบปรามการทุจริต พ.ศ. ๒๕๖๑ ที่ผู้ฟ้องคดีอ้างว่า ผู้ถูกฟ้องคดีที่ ๑ มีอำนาจไต่สวนและชี้มูล ความผิดทางวินัยเฉพาะความผิดฐานทุจริตต่อหน้าที่ราชการเท่านั้น เมื่อผู้ฟ้องคดีไม่ได้กระทำ ความผิดฐานทุจริตต่อหน้าที่ ผู้ถูกฟ้องคดีที่ ๑ จึงไม่มีอำนาจไต่สวนและชี้มูลความผิดผู้ฟ้องคดี และไม่ผูกพันผู้ถูกฟ้องคดีที่ ๒ ให้ต้องถือรายงานการไต่สวนของผู้ถูกฟ้องคดีที่ ๑ เป็นรายงาน การสอบสวน โดยผู้ถูกฟ้องคดีที่ ๑ ต้องดำเนินการแต่งตั้งคณะกรรมการสอบสวนความผิดทางวินัย เพื่อสอบสวนข้อเท็จจริง นั้น จึงฟังไม่ขึ้น นอกจากนี้ เมื่อพิจารณามาตรา ๑๙๒ แห่งพระราชบัญญัติ ประกอบรัฐธรรมนูญดังกล่าว ซึ่งบัญญัติว่า การดำเนินการตรวจรับคำกล่าวหา แสวงหาข้อเท็จจริง และรวบรวมพยานหลักฐาน ไต่สวนและมีความเห็นหรือวินิจฉัย ตามพระราชบัญญัติประกอบ รัฐธรรมนูญว่าด้วยการป้องกันและปราบปรามการทุจริต พ.ศ. ๒๕๔๒ และที่แก้ไขเพิ่มเติม ในวันก่อนวันที่พระราชบัญญัติประกอบรัฐธรรมนูญนี้ใช้บังคับให้เป็นอันใช้ได้และให้ดำเนินการ ต่อไป โดยการดำเนินการดังกล่าวต้องดำเนินการให้แล้วเสร็จตามมาตรา ๔๘ กล่าวคือ ต้องไม่เกิน ๒๕๖๑ สองปีนับแต่วันเริ่มดำเนินการไต่สวน การที่ผู้ถูกฟ้องคดีที่ ๑ มีคำสั่งให้ไต่สวนเมื่อวันที่ 4 กันยายน จนถึงผู้ถูกฟ้องคดีที่ ๑ มีมติชี้มูลความผิดของผู้ฟ้องคดีในการประชุมครั้งที่ ๑๐๕/๒๕๖๒ เมื่อวันที่ ๘ ตุลาคม ๒๕๖๒ จึงยังไม่พ้นกำหนดระยะเวลาสองปี ตามมาตรา ๔๘ ประกอบมาตรา ๑๙๒ แห่งพระราชบัญญัติประกอบรัฐธรรมนูญว่าด้วยการป้องกันและปราบปรามการทุจริต พ.ศ. ๒๕๖๑\n\nที่ผู้ฟ้องคดีอ้างว่าผู้ถูกฟ้องคดีที่ ๑ ใช้เวลาในการดำเนินการไต่สวนประมาณสามปีเศษ ล่วงเลย ต่อมา เมื่อผู้ถูกฟ้องคดีที่ ระยะเวลาตามที่กฎหมายกำหนดไว้โดยไม่มีเหตุจำเป็น และผู้ถูกฟ้องคดีที่ ๑ ไม่ได้ขอขยาย ระยะเวลา อันเป็นการไม่ปฏิบัติตามพระราชบัญญัติประกอบรัฐธรรมนูญว่าด้วยการป้องกัน และปราบปรามการทุจริต พ.ศ. ๒๕๖๑ มาตรา ๔๘ ทำให้มติการชี้มูลความผิดของผู้ถูกฟ้องคดีที่ ๑ ไม่มีผลผูกพันต่อผู้ถูกฟ้องคดีที่ ๒ ที่จะดำเนินการลงโทษทางวินัยแก่ผู้ฟ้องคดี นั้น จึงฟังไม่ขึ้น ๒ ซึ่งเป็นผู้บังคับบัญชามีอำนาจบรรจุและแต่งตั้งผู้ฟ้องคดี ตามมาตรา ๕๗ (๔) แห่งพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๕๑ ได้รับหนังสือสำนักงาน ป.ป.ช. ที่ ปช ๐๑.๐๑ (ชร/๑๔๔๒ ลงวันที่ 4 พฤศจิกายน ๒๕๖๒ ส่งรายงาน สำนวนการไต่สวน เอกสารหลักฐาน และคำวินิจฉัยแล้ว จึงส่งเรื่องให้ อ.ก.พ. กระทรวงมหาดไทย พิจารณาโทษทางวินัยผู้ฟ้องคดี ตามมาตรา ๔๗ วรรคสอง แห่งพระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๕๑ ซึ่ง อ.ก.พ. กระทรวงมหาดไทย ได้มีมติในการประชุมครั้งที่ ๒/๒๕๖๓ เมื่อวันที่ ๑๘ มิถุนายน ๒๕๖๓ ว่า พฤติการณ์ของผู้ฟ้องคดีเป็นความผิดวินัยอย่างร้ายแรงตามฐานความผิดที่ผู้ถูกฟ้องคดีที่ ๑ มีมติ ชี้มูลความผิด และตามมติคณะรัฐมนตรี เมื่อวันที่ ๒๑ ธันวาคม ๒๕๓๖ แจ้งตามหนังสือสำนัก เลขาธิการคณะรัฐมนตรี ที่ นร ๐๒๐๕/ว ๒๓๔ ลงวันที่ ๒๔ ธันวาคม ๒๕๓๖ ที่กำหนดให้ลงโทษ ผู้กระทำผิดวินัยฐานทุจริตต่อหน้าที่ราชการเป็นความผิดวินัยอย่างร้ายแรงควรลงโทษไล่ออก ที่ จากราชการ ให้ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ ผู้ถูกฟ้องคดีที่ ๒ จึงมีคำสั่งกรมการปกครอง ๑๔๐๐/๒๕๖๓ ลงวันที่ 4 สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดีออกจากราชการ ตั้งแต่วันที่ ๒๓ พฤษภาคม ๒๕๖๓ เป็นต้นไป ซึ่งเป็นวันที่ผู้ฟ้องคดีถูกพักราชการไว้ก่อน เห็นได้ว่า กระบวนการออกคำสั่งลงโทษไล่ผู้ฟ้องคดีออกจากราชการดังกล่าวเป็นการกระทำโดยถูกต้อง ตามรูปแบบขั้นตอน หรือวิธีการอันเป็นสาระสำคัญที่กำหนดไว้สำหรับการกระทำนั้นแล้ว\n\nคดีมีปัญหาต้องวินิจฉัยต่อไปว่า ผู้ฟ้องคดีกระทำผิดวินัยอย่างร้ายแรง ตามที่ ผู้ถูกฟ้องคดีที่๑ ชี้มูลหรือไม่\n\nพิเคราะห์แล้วเห็นว่า พระราชบัญญัติระเบียบบริหารราชการแผ่นดิน พ.ศ. ๒๕๓๔ มาตรา ๒๓ บัญญัติว่า ในอำเภอหนึ่ง นอกจากจะมีนายอำเภอเป็นผู้ปกครองบังคับบัญชาและ รับผิดชอบดังกล่าวในมาตรา ๒๒ ให้มีปลัดอำเภอและหัวหน้าส่วนราชการประจำอำเภอ บัญญัติว่า ซึ่งกระทรวง ทบวง กรมต่าง ๆ ส่งมาประจำให้ปฏิบัติหน้าที่เป็นผู้ช่วยเหลือนายอำเภอ และ มีอำนาจบังคับบัญชาข้าราชการฝ่ายบริหารส่วนภูมิภาคซึ่งสังกัดกระทรวง ทบวง กรมนั้น ในอำเภอนั้น พระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๓๕ มาตรา ๑๒ วรรคสาม การปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ราชการโดยมิชอบ เพื่อให้ตนเองหรือผู้อื่น ได้ประโยชน์ที่มีควรได้ เป็นการทุจริตต่อหน้าที่ราชการและเป็นความผิดวินัยอย่างร้ายแรง\n\nมาตรา ๘๕ วรรคสอง บัญญัติว่า การปฏิบัติหน้าที่ราชการโดยจงใจไม่ปฏิบัติตามกฎหมาย ระเบียบของทางราชการ มติคณะรัฐมนตรี หรือนโยบายของรัฐบาล อันเป็นเหตุให้เสียหายแก่ ราชการอย่างร้ายแรง เป็นความผิดวินัยอย่างร้ายแรง และมาตรา ๔๘ วรรคสอง บัญญัติว่า การกระทำความผิดอาญาจนได้รับโทษจำคุก หรือโทษที่หนักกว่าจำคุกโดยคำพิพากษาถึงที่สุด ให้จำคุก หรือให้รับโทษที่หนักกว่าจำคุก เว้นแต่เป็นโทษสำหรับความผิดที่ได้กระทำโดยประมาท หรือความผิดลหุโทษ หรือกระทำการอื่นใดอันได้ชื่อว่าเป็นผู้ประพฤติชั่วอย่างร้ายแรงเป็นความผิด วินัยอย่างร้ายแรง พระราชบัญญัติระเบียบข้าราชการพลเรือน พ.ศ. ๒๕๕๑ มาตรา ๑๓๓ บัญญัติว่า ข้าราชการพลเรือนผู้ใดมีกรณีกระทำผิดวินัยหรือกรณีที่สมควรให้ออกจากราชการ อยู่ก่อนวันที่บทบัญญัติในลักษณะ ๔ ข้าราชการพลเรือนสามัญ และลักษณะ ๕ ข้าราชการ พลเรือนในพระองค์ แห่งพระราชบัญญัตินี้ใช้บังคับ ให้ผู้บังคับบัญชาตามพระราชบัญญัตินี้มีอำนาจ สั่งลงโทษผู้นั้นหรือสั่งให้ผู้นั้นออกจากราชการตามกฎหมายว่าด้วยระเบียบข้าราชการพลเรือน ที่ใช้อยู่ในขณะนั้น ส่วนการสอบสวน การพิจารณาและการดำเนินการเพื่อลงโทษหรือให้ออก จากราชการ ให้ดำเนินการตามพระราชบัญญัตินี้... ระเบียบสำนักนายกรัฐมนตรีว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ ข้อ ๗๑ กำหนดว่า คณะกรรมการตรวจรับพัสดุ มีหน้าที่ดังนี้... (๒) ตรวจรับพัสดุ ให้ถูกต้องครบถ้วนตามหลักฐานที่ตกลงกันไว้... ... ในกรณีที่เห็นว่าพัสดุที่ส่งมอบ มีรายละเอียด ไม่เป็นไปตามข้อกำหนดในสัญญาหรือข้อตกลง ให้รายงานหัวหน้าส่วนราชการผ่านหัวหน้าเจ้าหน้าที่ พัสดุ เพื่อทราบหรือสั่งการ แล้วแต่กรณี\n\nข้อเท็จจริงปรากฏว่า ขณะผู้ฟ้องคดีดำรงตำแหน่งปลัดอำเภอ (เจ้าพนักงาน ปกครอง 5) ที่ทำการปกครองอำเภอพญาเม็งราย จังหวัดเชียงราย มีหน้าที่เป็นผู้ช่วยเหลือ นายอำเภอ และมีอำนาจบังคับบัญชาข้าราชการฝ่ายบริหารส่วนภูมิภาคซึ่งสังกัดกระทรวง ทบวง กรมนั้น ในอำเภอนั้น ตามมาตรา ๖๓ แห่งพระราชบัญญัติระเบียบบริหารราชการแผ่นดิน พ.ศ. ๒๕๓๔ ที่ทำการปกครองอำเภอพญาเม็งรายได้รับการสนับสนุนเงินงบประมาณประจำปี พ.ศ. ๒๕๔๘ โดยนายอำเภอพญาเม็งรายได้แต่งตั้งให้ผู้ฟ้องคดีเป็นประธานกรรมการตรวจรับพัสดุ จำนวน ๒ โครงการ คือ โครงการจัดทำเวทีประชาคมหมู่บ้านเพื่อเสริมสร้างความเข้มแข็ง ให้ชุมชนอำเภอพญาเม็งราย จังหวัดเชียงราย และโครงการส่งเสริมการเกษตรแบบครบวงจร สำหรับโครงการจัดทำเวทีประชาคมหมู่บ้านเพื่อเสริมสร้างความเข้มแข็งให้ชุมชนอำเภอพญาเม็งราย จังหวัดเชียงราย ได้รับเงินงบประมาณและเงินอุดหนุนจากองค์การบริหารส่วนตำบลในอำเภอพญา เม็งราย ๕ อบต. เป็นเงิน ๙๐,๐๐๐ บาท โดยมีผู้ฟ้องคดีเป็นผู้เสนอโครงการซึ่งมีวัตถุประสงค์เพื่อให้ราษฎร มีส่วนร่วมในการป้องกันและเฝ้าระวังปัญหายาเสพติดในพื้นที่ ๕ ตำบล ๖๙ หมู่บ้าน ระหว่างวันที่ ๑๕ ธันวาคม ๒๕๔๗ ถึงวันที่ ๓๑ มกราคม ๒๕๔๘ ต่อมา ผู้ฟ้องคดีได้มีหนังสือ ไม่ระบุวันที่ เดือนมกราคม ๒๕๕๘ ขออนุมัติเปลี่ยนแปลงกำหนดการจัดทำเวทีประชาคมหมู่บ้านฯ โดยจัดประชุม เวทีประชาคมหมู่บ้านในวันที่ ๑๗ - ๑๙ มกราคม ๒๕๕๘ ณ หอประชุมพญาเม็งราย โครงการดังกล่าว มีการจัดซื้อจัดจ้างรวม ๓ รายการ คือ (๑) วัสดุแบบพิมพ์อบรมสร้างความเข้มแข็งให้ชุมชน และกระดาษถ่ายเอกสาร จำนวน ๑๐ รีม รีมละ ๑๐๐ บาท เป็นเงิน ๑,๐๐๐ บาท จากนางเจรุมาศ อนุสถิตวัฒนา ผู้ขาย (๒) จ้างเหมาจัดทำอาหาร อาหารว่าง และเครื่องดื่ม สำหรับผู้เข้าอบรม ในวันที่ ๑๗ ๑๙ มกราคม ๒๕๔๘ จำนวน ๕๙ หมู่บ้าน หมู่บ้านละ ๒๐ คน คนละ ๕๐ บาท เป็นเงิน ๕๔,๐๐๐ บาท จากนายสว่าง วรรณสอน ผู้รับจ้าง (๓) จ้างเหมาจัดสถานที่และเช่าเครื่องเสีย จัดทำเวทีประชาคม ในวันที่ ๑๗ ๑๙ มกราคม ๒๕๕๘ เป็นเงิน ๔,๐๐๐ บาท และจัดหาโต๊ะ เก้าอี้ สำหรับวิทยากรและผู้เข้าอบรม จำนวน ๕๐๐ ตัว พร้อมโต๊ะหมู่บูชา แอมป์พาวเวอร์ และ อุปกรณ์อื่นๆ เป็นเงิน ๒๑,๐๐๐ บาท รวมเป็นเงิน ๓๐,๐๐๐ บาท จากนายสุวนันท์ ไชยานันตา ผู้รับจ้าง รวมเป็นเงิน ๙๐,๐๐๐ บาท แต่จากรายงานการไต่สวนของผู้ถูกฟ้องคดีที่ ๑ ปรากฏว่า พยานบุคคลซึ่งเป็นผู้ปกครองท้องที่อำเภอพญาเม็งรายหลายรายต่างให้ถ้อยคำสอดคล้องกันว่า อำเภอพญาเม็งรายดำเนินการจัดประชุมประชาคม ณ หอประชุมหมู่บ้าน เพียงครึ่งวัน โดยไม่มี การจัดเลี้ยงอาหารกลางวันแก่ผู้เข้าอบรม และในวันที่ ๑๗ - ๑๙ มกราคม ๒๕๕๘ ไม่มีการจัด เวทีประชาคมหมู่บ้าน ณ หอประชุมอำเภอพญาเม็งราย แต่อย่างใด มีเพียงการประชุมประชาคม ของหมู่ที่ 5 ตำบลตาดควัน ในวันที่ ๑๗ ธันวาคม ๒๕๔๗ และการประชุมประชาคมของหมู่ที่ ๒ ตำบลแม่ต่ำ ในวันที่ ๓๐ ธันวาคม ๒๕๕๗ ตามบันทึกรายงานการตรวจ ลงวันที่ ๑๗ ธันวาคม ๒๕๕๗ และวันที่ ๓๐ ธันวาคม ๒๕๔๗ เท่านั้น ประกอบกับนายสุวนันท์ ไชยานันตา ผู้รับจ้างเหมา จัดสถานที่และเช่าเครื่องเสียงจัดทำเวทีประชาคม ให้ถ้อยคำว่า นายสุวนันท์เป็นอาสาสมัครรักษา ดินแดนอำเภอพญาเม็งรายอยู่ภายใต้การบังคับบัญชาโดยตรงของผู้ฟ้องคดี ผู้ฟ้องคดีได้สั่งการให้ นายสุวนันท์ลงลายมือชื่อเป็นผู้รับจ้างทั้งที่ทราบอยู่แล้วว่านายสุวนันท์ไม่มีอาชีพในการจัดสถานที่ หรือมีเครื่องเสียงให้เช่า แม้นายสุวนันท์จะได้จัดหาโต๊ะ เก้าอี้ ลำโพงขนาดใหญ่ ลำโพงขนาดเล็ก และไมโครโฟน เพื่อใช้จัดสถานที่ในวันที่ ๑๖ มกราคม ๒๕๕๘ จริง แต่นายสุวนันท์ไม่ทราบว่า ในวันที่ ๑๗ ๑๙ มกราคม ๒๕๕๘ มีการจัดประชุมหรือไม่ และไม่ทราบว่ามีการจัดหาเครื่องเสียง ชุดใหญ่พร้อมแอมป์พาวเวอร์หรือไม่ โดยนายสุวนันท์ไม่ได้รับค่าจ้างแต่อย่างใด อีกทั้ง ในการ เบิกจ่ายค่าจ้างเหมาจัดทำอาหาร อาหารว่าง และเครื่องดื่ม ก็ไม่ปรากฏรายละเอียดในหลักฐาน การเบิกจ่าย และนายสว่าง วรรณสอน ผู้รับจ้าง ก็ไม่มีอาชีพในการจัดทำอาหาร แต่เป็นอาสาสมัคร รักษาดินแดนอำเภอพญาเม็งรายซึ่งอยู่ภายใต้การบังคับบัญชาโดยตรงของผู้ฟ้องคดีเช่นเดียวกับ นายสุวนันท์ เห็นได้ว่า ผู้ฟ้องคดีซึ่งได้รับแต่งตั้งให้เป็นประธานกรรมการตรวจรับพัสดุ มีหน้าที่ ตรวจรับพัสดุให้ถูกต้องครบถ้วนตามหลักฐานที่ตกลงกันไว้ กรณีที่เห็นว่าพัสดุที่ส่งมอบมีรายละเอียดไม่เป็นไปตามข้อกำหนดในสัญญาหรือข้อตกลง ให้รายงานหัวหน้าส่วนราชการ ผ่านหัวหน้าเจ้าหน้าที่พัสดุเพื่อทราบหรือสั่งการ แล้วแต่กรณี ตามข้อ ๗๑ ของระเบียบสำนัก นายกรัฐมนตรีว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ แต่ผู้ฟ้องคดีกลับไม่ตรวจรับพัสดุตามโครงการจัดทำ เวทีประชาคมหมู่บ้านฯ ทั้งยังลงนามรับรองเป็นหลักฐานว่ามีการดำเนินการจัดซื้อจัดจ้างถูกต้อง ครบถ้วน เพื่อเสนอให้มีการเบิกจ่ายเงิน อันเป็นการไม่ปฏิบัติตามข้อ ๗๑ ของระเบียบสำนัก นายกรัฐมนตรีดังกล่าว\n\nส่วนโครงการส่งเสริมการเกษตรแบบครบวงจร ได้รับจัดสรรเงินงบประมาณ จำนวน ๓๘๔,๐๐๐ บาท มีการจัดซื้อวัสดุอุปกรณ์ส่งเสริมเกษตรธรรมชาติแบบครบวงจร จากนายธนกร ไชยวรรณ์ จำนวน 5 ครั้ง สำหรับหมู่ที่ ๓ ตำบลเม็งราย หมู่ที่ ๙ ตำบลไม้ยา หมู่ที่ ๙ ตำบลแม่ต่ำ หมู่ที่ ๑๓ ตำบลตาดควัน หมู่ที่ ๑๔ ตำบลไม้ยา และหมู่ที่ ๑๙ ตำบลแม่เปา ครั้งละ ๑๑ รายการ ประกอบด้วยเครื่องสกัดยาฆ่าแมลง เครื่องบดดิน ถังพ่นยา ถั่วฝักยาว ผักบุ้งจีน แตงกวา คะน้า กวางตุ้งใบ ผักชี ผักขึ้นฉ่าย และบวบเหลี่ยม ตามใบสั่งซื้อเลขที่ ๗/๒๕๔๘ ๑๒/๒๕๔๘ ๑๔ กุมภาพันธ์ ๒๕๕๘ แต่ปรากฏว่าชาวบ้านหมู่ที่ ๓ ตำบลเม็งราย ได้รับวัสดุไม่ครบ ทั้ง ลงวันที่ ๑๑ รายการ หมู่ที่ ๓ ตำบลตาดควัน ได้รับวัสดุไม่ครบทั้ง ๑๑ รายการ หมู่ที่ ๙ ตำบลไม้ยา ได้รับเฉพาะเครื่องสกัดยาฆ่าแมลงและเครื่องบดดิน หมู่ที่ 4 ตำบลแม่ต่ำ ได้รับเฉพาะเครื่องสกัด ยาฆ่าแมลงและเครื่องบดดิน หมู่ที่ ๑๔ ตำบลไม้ยา ได้รับเฉพาะเครื่องสกัดยาฆ่าแมลงและเครื่องบดดิน และหมู่ที่ ๑๙ ตำบลแม่เปา ได้รับเฉพาะเครื่องสกัดยาฆ่าแมลงและเครื่องบดดิน ชาวบ้านต่างได้รับ พัสดุไม่ตรงตามที่ขออนุมัติและได้รับพัสดุไม่ครบถ้วน แม้ผู้ฟ้องคดีจะไม่มีอำนาจหน้าที่ในการ แจกจ่ายพัสดุให้กับชาวบ้าน แต่ผู้ฟ้องคดีซึ่งเป็นประธานกรรมการตรวจรับพัสดุ มีหน้าที่ตรวจ รับพัสดุให้ถูกต้องครบถ้วนตามหลักฐานที่ตกลงกันไว้ กรณีที่เห็นว่าพัสดุที่ส่งมอบมีรายละเอียด ไม่เป็นไปตามข้อกำหนดในสัญญาหรือข้อตกลง ให้รายงานหัวหน้าส่วนราชการผ่านหัวหน้า เจ้าหน้าที่พัสดุเพื่อทราบหรือสั่งการ แล้วแต่กรณี ตามข้อ ๗๑ ของระเบียบสำนักนายกรัฐมนตรี ว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ กลับลงนามยืนยันว่ามีการตรวจรับพัสดุครบถ้วน เพื่อเสนออนุมัติ เบิกจ่ายเงิน ทั้งที่ผู้ฟ้องคดีไม่ได้ตรวจรับพัสดุตามโครงการส่งเสริมการเกษตรแบบครบวงจรจริง อันเป็นการไม่ปฏิบัติตามข้อ ๗๑ ของระเบียบสำนักนายกรัฐมนตรีดังกล่าว นอกจากนี้ ผู้ฟ้องคดี รับว่าทั้งโครงการจัดทำเวทีประชาคมหมู่บ้านฯ และโครงการส่งเสริมการเกษตรแบบครบวงจร นายบุญยัง เรือนกูล นายอำเภอพญาเม็งราย และนางวัลลภาภรณ์ เรือนปาง เสมียนตราอำเภอ พญาเม็งราย ได้รวบรวมเอกสารที่เกี่ยวข้องเสนอผู้ฟ้องคดีให้ลงนามในฐานะประธานกรรมการ ตรวจรับพัสดุ ผู้ฟ้องคดีได้ลงนามรับรองเป็นหลักฐานว่ามีการดำเนินการจัดซื้อจัดจ้างถูกต้อง ครบถ้วน เพื่อเสนอให้มีการเบิกจ่ายเงินงบประมาณจำนวน ๙๐,๐๐๐ บาท และจำนวน ๓๘๔,๐๐๐ บาท อันเป็นการเอื้อให้บุคคลอื่นได้รับผลประโยชน์จากงบประมาณดังกล่าว\n\nที่ผู้ฟ้องคดีอ้างว่า ผู้ฟ้องคดีไม่มีความเป็นอิสระในการบริหาร ต้องตกอยู่ภายใต้การสั่งการของ นายบุญยัง ผู้ฟ้องคดีไม่มีเจตนาทุจริต ไม่ปรากฏว่าผู้ฟ้องคดีมีทรัพย์สินเพิ่มมากขึ้นผิดปกติ หรือมีการได้ประโยชน์ในลักษณะทรัพย์สิน หรือประโยชน์อื่นใดจากการดำเนินโครงการ ผู้ฟ้องคดี ไม่ได้กระทำการทุจริตต่อหน้าที่ นั้น เห็นว่า เมื่อพิจารณาประวัติการรับราชการของผู้ฟ้องคดี ในช่วงก่อนที่ผู้ฟ้องคดีจะได้รับการแต่งตั้งให้ดำรงตำแหน่งปลัดอำเภอ ที่ทำการปกครองพญาเม็งราย ผู้ฟ้องคดีดำรงตำแหน่งปลัดอำเภอ (เจ้าพนักงานปกครอง ๓) ตั้งแต่วันที่ ๒๖ ธันวาคม ๒๕๓๗ และรับราชการตำแหน่งดังกล่าวมาแล้วในหลายท้องที่ของจังหวัดเชียงราย ผู้ฟ้องคดีย่อมเป็น ข้าราชการผู้มีความรู้และประสบการณ์ในการปฏิบัติหน้าที่ในตำแหน่งนั้นเป็นอย่างดี เมื่อผู้ฟ้องคดี ได้รับแต่งตั้งให้เป็นประธานกรรมการตรวจรับพัสดุ ผู้ฟ้องคดีจึงมีหน้าที่ต้องตรวจรับพัสดุให้ถูกต้อง ครบถ้วนตามข้อ ๗๑ ของระเบียบสำนักนายกรัฐมนตรีว่าด้วยการพัสดุ พ.ศ. ๒๕๓๕ แต่ผู้ฟ้องคดี กลับยอมลงชื่อในเอกสารการตรวจรับพัสดุและการจ้างตามที่ นายบุญยัง นำมาให้โดยมิได้ทักท้วง หรือเสนอความเห็นให้มีการทบทวนการกระทำที่ไม่ถูกต้องแต่อย่างใด แม้ไม่ปรากฏว่าผู้ฟ้องคดี ได้จะได้รับเงินจากการเบิกจ่ายงบประมาณดังกล่าวโดยตรง แต่การกระทำของผู้ฟ้องคดียังเป็น การเอื้อประโยชน์ให้กับบุคคลอื่นได้รับเงินหรือประโยชน์ที่มีควรได้ ข้อกล่าวอ้างของผู้ฟ้องคดี ฟังไม่ขึ้น จึงเห็นได้ว่า พฤติการณ์ของผู้ฟ้องคดีเป็นการปฏิบัติหรือละเว้นการปฏิบัติหน้าที่ราชการ โดยมิชอบ เพื่อให้ตนเองหรือผู้อื่นได้ประโยชน์ที่มีควรได้ เป็นการทุจริตต่อหน้าที่ราชการ ปฏิบัติหน้าที่ราชการโดยจงใจไม่ปฏิบัติตามกฎหมาย ระเบียบของทางราชการ มติคณะรัฐมนตรี หรือนโยบายของรัฐบาล อันเป็นเหตุให้เสียหายแก่ราชการอย่างร้ายแรง และกระทำการอื่นใด อันได้ชื่อว่าเป็นผู้ประพฤติชั่วอย่างร้ายแรง ซึ่งเป็นความผิดวินัยอย่างร้ายแรง ตามมาตรา ๘๒ เมื่อวันที่ ๘ วรรคสาม มาตรา ๘๕ วรรคสอง และมาตรา ๙๘ วรรคสอง แห่งพระราชบัญญัติระเบียบ ข้าราชการพลเรือน พ.ศ. ๒๕๓๕ ประกอบมาตรา ๑๓๓ แห่งพระราชบัญญัติระเบียบข้าราชการ พลเรือน พ.ศ. ๒๕๕๑ ตามที่ผู้ถูกฟ้องคดีที่ ๑ ชี้มูลความผิด ดังนั้น การที่ผู้ถูกฟ้องคดีที่ ๒ มีคำสั่งกรมการปกครอง ที่ ๑๔๐๐/๒๕๖๓ ลงวันที่ ๕ สิงหาคม ๒๕๖๓ ลงโทษไล่ผู้ฟ้องคดี ออกจากราชการ จึงชอบด้วยกฎหมายแล้ว และการที่ผู้ถูกฟ้องคดีที่ ๓ วินิจฉัยอุทธรณ์ของผู้ฟ้องคดี โดยอาศัยข้อเท็จจริงและข้อกฎหมายเดียวกันแล้วมีคำวินิจฉัยเรื่องดำที่ ๖๓๑๐๑๖๖ เรื่องแดง ที่ ๑๐๔๘๑๖๕ ลงวันที่ ๕ กรกฎาคม ๒๕๖๕ ให้ยกอุทธรณ์ของผู้ฟ้องคดี จึงชอบด้วยกฎหมายเช่นกัน\n\nในส่วนของคำขอท้ายคำฟ้องที่ผู้ฟ้องคดีมีคำขอให้เพิกถอนมติของผู้ถูกฟ้องคดีที่ ๑ ในการประชุมครั้งที่ ๕/๒๕๖๓ เมื่อวันที่ 4 มกราคม ๒๕๖๒ ที่ชี้มูลความผิดทางวินัย อย่างร้ายแรงผู้ฟ้องคดี นั้น เห็นว่า แม้มติของผู้ถูกฟ้องคดีที่ ๑ ในการประชุมครั้งที่ ๕/๒๕๖๓ 4 มกราคม ๒๕๖๓ ที่ชี้มูลความผิดทางวินัยอย่างร้ายแรงผู้ฟ้องคดีฐานทุจริตต่อหน้าที่ ราชการ จะมีผลผูกพันให้ผู้ถูกฟ้องคดีที่ ๒ ต้องมีคำสั่งตามมติดังกล่าว แต่ก็เป็นเพียงส่วนหนึ่งของการพิจารณาทางปกครองเพื่อออกคำสั่งทางปกครองเท่านั้น ยังไม่มีผลเป็นการสร้าง นิติสัมพันธ์ขึ้นระหว่างบุคคลในอันที่จะก่อ เปลี่ยนแปลง โอน สงวน ระงับ หรือมีผลกระทบ ต่อสถานภาพของสิทธิหรือหน้าที่ของบุคคล อันจะถือได้ว่าเป็นคำสั่งทางปกครองตามมาตรา ๕ แห่งพระราชบัญญัติวิธีปฏิบัติราชการทางปกครอง พ.ศ. ๒๕๓๙ แต่อย่างใด ผู้ฟ้องคดีจึงมิใช่ ผู้ได้รับความเดือดร้อนหรือเสียหายจากมติดังกล่าวที่จะมีสิทธิฟ้องขอให้ศาลมีคำพิพากษาหรือ คำสั่งเพิกถอนมติของผู้ถูกฟ้องคดีที่ ๑ ในการประชุมครั้งที่ ๕/๒๕๖๓ เมื่อวันที่ 4 มกราคม ๒๕๖๒ ที่ชี้มูลความผิดทางวินัยอย่างร้ายแรงผู้ฟ้องคดีได้\n\nกรณีที่ผู้ฟ้องคดีอ้างว่า มติคณะรัฐมนตรีแจ้งเวียนตามหนังสือสำนักเลขาธิการ คณะรัฐมนตรีที่ นร ๐๒๐๕/ว ๒๓๔ ลงวันที่ ๒๔ ธันวาคม ๒๕๓๖ ที่ระบุว่า การให้ลงโทษ ผู้กระทำผิดวินัยฐานทุจริตต่อหน้าที่ราชการควรลงโทษเป็นไล่ออกจากราชการการ เป็นเพียง การแนะนำเท่านั้น การลงโทษผู้ฟ้องคดีจึงเป็นดุลพินิจของผู้ถูกฟ้องคดีที่ ๒ และผู้ถูกฟ้องคดีที่ ๓ ย่อมมีอำนาจในการวินิจฉัยฐานความผิดทางวินัยแก่ผู้ฟ้องคดีเสียใหม่ได้ นั้น เห็นว่า แม้มติ คณะรัฐมนตรีดังกล่าวมิได้มีสถานะเป็นกฎหมายหรือกฎอันจะมีผลผูกพันให้ผู้ถูกฟ้องคดีที่ ๒ ต้องปฏิบัติตาม แต่มติดังกล่าวเป็นการกำหนดนโยบายหรือแนวปฏิบัติในการใช้ดุลพินิจ สั่งลงโทษผู้กระทำผิดในเรื่องที่กำหนดไว้ เพื่อให้การลงโทษเป็นไปด้วยความเหมาะสมกับกรณี ความผิด มีมาตรฐานเดียวกัน และเป็นไปในทางเดียวกัน ดังนั้น ในการพิจารณาสั่งลงโทษทางวินัย อย่างร้ายแรงฐานทุจริตต่อหน้าที่ราชการ ผู้บังคับบัญชาต้องนำมติดังกล่าวมาประกอบการพิจารณา ใช้ดุลพินิจด้วย ส่วนกระบวนการพิจารณาอุทธรณ์ของผู้ถูกฟ้องคดีที่ ๓ มิใช่การพิจารณาเฉพาะ รายงานการสอบสวนทางวินัยเท่านั้น แต่ยังให้โอกาสผู้ถูกกล่าวหาพิสูจน์หลักฐานอื่น รวมทั้ง มีอำนาจสอบสวนเพิ่มเติมได้ ผู้ถูกฟ้องคดีที่ ๓ จึงมีอำนาจพิจารณาอุทธรณ์ตามหลักเกณฑ์และ วิธีการที่กำหนดไว้ตามอำนาจหน้าที่และอาจพิจารณาแตกต่างจากคำสั่งลงโทษของผู้ถูกฟ้องคดีที่ ๒ ได้ ข้ออ้างของผู้ฟ้องคดีในประเด็นนี้จึงฟังไม่ขึ้น\n\nกรณีที่ผู้ฟ้องคดีอ้างว่า คดีหมายเลขดำที่ อท ๑๓๕, ที่ อท ๗๘, ๑๓๖/๒๕๖๒ และคดีหมายเลขแดง ๗๗/๒๕๖๓ ของศาลอาญาคดีทุจริตและประพฤติมิชอบภาค ๕ นั้น ผู้ฟ้องคดียังใช้สิทธิ ทางศาลในชั้นอุทธรณ์และฎีกาอยู่ คดีจึงยังไม่ถึงที่สุด และที่ผู้ถูกฟ้องคดีที่ ๑ ให้การเพิ่มเติมว่า พยานหลักฐานตามที่ได้นำสืบในชั้นศาลและในชั้นไต่สวนของผู้ถูกฟ้องคดีที่ ๑ เห็นได้ชัดว่า ผู้ฟ้องคดีได้กระทำความผิดตามที่ถูกกล่าวหา และการกระทำของผู้ฟ้องคดีจึงเป็นความผิดตาม คำพิพากษาของศาลอาญาคดีทุจริตและประพฤติมิชอบภาค ๕ นั้น เห็นว่า ในการพิจารณา พิพากษาคดีปกครองเกี่ยวกับการลงโทษทางวินัย ไม่มีกฎหมายบัญญัติบังคับไว้ให้ศาลปกครอง จำต้องถือข้อเท็จจริงตามที่ปรากฏในคำพิพากษาคดีส่วนอาญา ดังนั้น การพิจารณาคดีปกครอง\n\nเกี่ยวกับการลงโทษทางวินัยในกรณีสืบเนื่องจากผู้ถูกฟ้องคดีที่ ที่ ๑ ๑ ชี้มูลว่าผู้ฟ้องคดีกระทำการ อันมีมูลความผิดฐานทุจริตต่อหน้าที่ ซึ่งเป็นความผิดทางวินัยและทางอาญานั้น แม้การดำเนินการ ทางวินัยและการดำเนินคดีส่วนอาญาจะได้อาศัยสำนวนการสอบสวนของผู้ถูกฟ้องคดีที่ ๑ เป็นหลัก และคดีส่วนอาญาได้มีคำพิพากษาถึงที่สุดแล้วหรือไม่ก็ตาม ศาลก็หาจำต้องถือข้อเท็จจริง ตามที่ปรากฏในคำพิพากษาคดีส่วนอาญาแต่อย่างใดไม่ ข้ออ้างของผู้ฟ้องคดีในประเด็นนี้ จึงฟังไม่ขึ้นเช่นกัน\n\nพิพากษายกฟ้อง" + } +} \ No newline at end of file diff --git a/public/tmpl/T12_X.docx b/public/tmpl/T12_X.docx new file mode 100755 index 0000000..93478ec Binary files /dev/null and b/public/tmpl/T12_X.docx differ diff --git a/public/tmpl/T12_b2_IN.json b/public/tmpl/T12_b2_IN.json new file mode 100644 index 0000000..d38a698 --- /dev/null +++ b/public/tmpl/T12_b2_IN.json @@ -0,0 +1,41 @@ +{ + "info": { + "ticket_data": "{\"fid\":\"T12_b2_IN_XXX\",\"tid\":\"T12\",\"uid\":\"oom\",\"uname\":\"สรวิชญ์\"}" + }, + "dc": { + "Interpleader": true, + "docname": "", + "docabbr": "(ต. ๑๒)", + "blackno": "คดีหมายเลขดำที่", + "redno": "คดีหมายเลขแดงที่", + "court": "ศาลปกครองนครราชสีมา", + "panels": [ + { + "pname": "นายวิรุฬห์ จินตนะกุล", + "pmname": "ตุลาการศาลปกครองกลาง", + "pm": "ตุลาการเจ้าของสำนวน" + }, + { + "pname": "นายสัมฤทธิ์ อ่อนคำ", + "pmname": "ตุลาการศาลปกครองสูงสุด" + } + ], + "pnameT":"", + "pmnameT":"", + "pmT":"", + "acc_name":"" + + }, + "cc": { + "blackyear": "๙๐/๒๕๖๙", + "redyear": "", + "curdate": "วันที่ เดือน สิงหาคม พุทธศักราช ๒๕๖๙", + "accuser": "นายธีรพล ร่มเริง", + "acc1": "ผู้ฟ้องคดี", + "accused": "รร", + "acc2": "ผู้ถูกฟ้องคดี", + "interpleader": "สมชาย ใจดี", + "acc3": "ผู้ร้องสอด", + "detail1": "ตุลาการเจ้าของสำนวนได้พิจารณาคำฟ้องและเอกสารประกอบคำฟ้องแล้วเห็นว่าคดีนี้เป็นคดีพิพาทซึ่งไม่อยู่ในอำนาจศาลปกครองสูงสุด ผู้ฟ้องเป็นผู้มีสิทธิฟ้องคดี คดีนี้มีกฎหมายกำหนดให้ต้องดำเนินการแก้ไขความเดือดร้อนหรือเสียหายก่อนฟ้องคดี และผู้ฟ้องคดีได้ดำเนินการครบถ้วน โดยเป็นการยื่นฟ้องคดีภายในระยะเวลาการฟ้องคดีตาม พรบ. จัดตั้งศาลปกครองและวิธีพิจารณาคดีปกครองฯ คดีนี้มีค่าธรรมเนียมที่ต้องชำระ\nโดยผู้ฟ้องคดีได้ชำระค่าธรรมเนียมครบถ้วนแล้ว รวมทั้งคดีนี้ไม่เป็นการฟ้องซ้อน การดำเนินกระบวนพิจารณาซ้ำ และการฟ้องซ้ำ\n\nจึงมีคำสั่งรับคำฟ้องไว้พิจารณาและสั่งให้ส่งสำเนาคำฟ้องพร้อมทั้งสำเนาพยานหลักฐานไปยังผู้ถูกฟ้องคดีเพื่อให้ผู้ถูกฟ้องคดีทำคำให้การยื่นต่อศาลภายใน ๓๐ วัน นับแต่วันที่ได้รับคำสั่ง" + } +} \ No newline at end of file diff --git a/public/tmpl/T12_b2_IN.out.json b/public/tmpl/T12_b2_IN.out.json new file mode 100644 index 0000000..e1b24b9 --- /dev/null +++ b/public/tmpl/T12_b2_IN.out.json @@ -0,0 +1,51 @@ +{ + "cc": { + "blackyear": "๙๐/๒๕๖๙", + "redyear": "", + "curdate": "วันที่ เดือน สิงหาคม พุทธศักราช ๒๕๖๙", + "accuser": "นายธีรพล ร่มเริง", + "acc1": "ผู้ฟ้องคดี", + "interpleader": "สมชาย ใจดี", + "acc3": "ผู้ร้องสอด", + "accused": "รร", + "acc2": "ผู้ถูกฟ้องคดี", + "detail1": "ตุลาการเจ้าของสำนวนได้พิจารณาคำฟ้องและเอกสารประกอบคำฟ้องแล้วเห็นว่าคดีนี้เป็นคดีพิพาทซึ่งไม่อยู่ในอำนาจศาลปกครองสูงสุด ผู้ฟ้องเป็นผู้มีสิทธิฟ้องคดี คดีนี้มีกฎหมายกำหนดให้ต้องดำเนินการแก้ไขความเดือดร้อนหรือเสียหายก่อนฟ้องคดี และผู้ฟ้องคดีได้ดำเนินการครบถ้วน โดยเป็นการยื่นฟ้องคดีภายในระยะเวลาการฟ้องคดีตาม พรบ. จัดตั้งศาลปกครองและวิธีพิจารณาคดีปกครองฯ คดีนี้มีค่าธรรมเนียมที่ต้องชำระ\nโดยผู้ฟ้องคดีได้ชำระค่าธรรมเนียมครบถ้วนแล้ว รวมทั้งคดีนี้ไม่เป็นการฟ้องซ้อน การดำเนินกระบวนพิจารณาซ้ำ และการฟ้องซ้ำ\n\nจึงมีคำสั่งรับคำฟ้องไว้พิจารณาและสั่งให้ส่งสำเนาคำฟ้องพร้อมทั้งสำเนาพยานหลักฐานไปยังผู้ถูกฟ้องคดีเพื่อให้ผู้ถูกฟ้องคดีทำคำให้การยื่นต่อศาลภายใน ๓๐ วัน นับแต่วันที่ได้รับคำสั่ง", + "pmname1": "ตุลาการศาลปกครองกลาง", + "pmname2": "ตุลาการศาลปกครองสูงสุด" + }, + "bookmark": { + "signature1": "", + "signature2": "" + }, + "properties": { + "standard": { + "title": " ", + "subject": "", + "creator": "oom", + "keywords": "", + "lastModifiedBy": "Sorawit Bholsithi", + "revision": "61", + "created": "2026-10-15T05:18:00.000Z", + "modified": "2026-10-21T04:59:00.000Z" + }, + "extended": { + "template": "Normal.dotm", + "totalTime": 345, + "pages": 1, + "words": 42, + "characters": 493, + "charactersWithSpaces": 534, + "lines": 4, + "paragraphs": 1, + "application": "Microsoft Office Word", + "appVersion": "16.0000", + "company": "", + "docSecurity": 0 + }, + "custom": { + "ticket_data": "{\"exp\":1792667826,\"fid\":\"T12_b2_IN_XXX\",\"tid\":\"T12\",\"uid\":\"oom\",\"uname\":\"สรวิชญ์\"}", + "HmacSha256": "791987c9274493db02561f4ec16b83d05c89766b54661da615e8e02db293d1d4", + "Ed25519": "7ef8b0f2a03a52c49f8c348e3c392f448b71c8462ee860342b0e06a91b555f860cad5649c648dc466982017683f3718caff139c85e17e952ee1570ecfc021e08" + } + } +} \ No newline at end of file diff --git a/public/tmpl/TF_no_warning_P2.json b/public/tmpl/TF_no_warning_P2.json new file mode 100755 index 0000000..f2ef337 --- /dev/null +++ b/public/tmpl/TF_no_warning_P2.json @@ -0,0 +1,50 @@ +{ + "info": { + "ticket_data": "{\"fid\":\"TF_no_warning_P2\",\"tid\":\"T_X\",\"uid\":\"oom\",\"uname\":\"สรวิชญ์\"}" + }, + "dc": { + "Interpleader": false, + "CommandTo": true, + "SendTo": false, + "AdditionCommand" : true, + "Warning":false, + + "docname":"คำสั่งศาล", + "doctype":"(ต. ๔๗.๑)", + "blackno": "คดีหมายเลขดำที่", + "redno": "คดีหมายเลขแดงที่", + + "court": "ศาลปกครองนครราชสีมา", + "doctitle":"คำสั่งศาลถึง", + "pname":"สมหญิง", + + "courtname":"ศาลปกครองสุพรรณบุรี", + "courtno":"๓๓๓ หมู่ ๖ ตำบลสนามชัย อำเภอเมืองสุพรรณบุรี", + "courttam":"จังหวัดสุพรรณบุรี ๗๒๐๐๐", + "courttel":"กลุ่มออกหมาย โทรศัพท์ ๐๓๕ ๔๓๒ ๓๓๓ ต่อ ๑๐๐๑,๒๒๐๓", + "courttel2":"สอบถามติดตามคดี ขอคำปรึกษาแนะนำ โทรสายด่วน ๑๓๕๕", + "pname2":"ชื่อของ pname2" + }, + "cc": { + "blackyear": "๙๐/๒๕๖๙", + "redyear": "xxx", + "curdate": "วันที่ เดือน สิงหาคม พุทธศักราช ๒๕๖๙ ", + "commto" : "นายสมชาย จรดปลายเท้า", + "addrno" : "3/77 xxx yyy ทุ่งสองห้อง,หลักสี่, จังหวัดกรุงเทพฯ ", + "groupname":"ผู้อำนวยการโรงเรียน", + + "accuser": "นายธีรพล ร่มเริง", + "acc1": "ผู้ฟ้องคดี", + "accused": "รร", + "acc2": "ผู้ถูกฟ้องคดี", + "interpleader": "สมชาย ใจดี", + "acc3": "ผู้ร้องสอด", + "detail1": "ตุลาการเจ้าของสำนวนได้พิจารณาคำฟ้อง และเอกสารประกอบคำฟ้องแล้ว เห็นว่าคดีนี้เป็นคดีพิพาทซึ่งไม่อยู่ในอำนาจศาลปกครองสูงสุด\n\nผู้ฟ้องเป็นผู้มีสิทธิฟ้องคดี คดีนี้มีกฎหมายกำหนดให้ต้องดำเนินการแก้ไข ความเดือดร้อนหรือเสียหายก่อนฟ้องคดี ", + "sendto" : "นายสมศักดิ์ ฟักมี", + + "warning": "หากผู้ถูกฟ้องคดีไม่ปฏิบัติตามคำสั่งศาลภายในระยะเวลาที่กำหนด ศาลจะถือว่า ผู้ถูกฟ้องคดียอมรับข้อเท็จจริงตามข้อหาของผู้ฟ้องคดี", + "detail2":"คำสั่งเพิ่มเติมคือ bla bla", + "remarkhead":"หัวของ Remark", + "remark":"This is remark Text bla bla " + } +} \ No newline at end of file diff --git a/public/tmpl/TS_P2_IN.json b/public/tmpl/TS_P2_IN.json new file mode 100755 index 0000000..a70c9fe --- /dev/null +++ b/public/tmpl/TS_P2_IN.json @@ -0,0 +1,52 @@ +{ + "info": { + "ticket_data": "{\"fid\":\"TS_P2_IN_YYY\",\"tid\":\"T_X\",\"uid\":\"oom\",\"uname\":\"สรวิชญ์\"}" + }, + "dc": { + "Interpleader": true, + "CommandTo": true, + "SendTo": false, + "AdditionCommand" : true, + "Warning":true, + + "docname":"คำสั่งเรียกพยานบุคคล", + "doctype":"(ต. ๖)", + "blackno": "คดีหมายเลขดำที่", + "redno": "คดีหมายเลขแดงที่", + + "court": "ศาลปกครองนครราชสีมา", + "doctitle":"คำสั่งถึง", + "pname":"สมหญิง", + + "courtname":"ศาลปกครองสุพรรณบุรี", + "courtno":"๓๓๓ หมู่ ๖ ตำบลสนามชัย อำเภอเมืองสุพรรณบุรี", + "courttam":"จังหวัดสุพรรณบุรี ๗๒๐๐๐", + "courttel":"กลุ่มออกหมาย โทรศัพท์ ๐๓๕ ๔๓๒ ๓๓๓ ต่อ ๑๐๐๑,๒๒๐๓", + "courttel2":"สอบถามติดตามคดี ขอคำปรึกษาแนะนำ โทรสายด่วน ๑๓๕๕", + + "pname2":"ชื่อของ pname2", + "remarkhead":"หัวของ Remark" + }, + "cc": { + "blackyear": "๙๐/๒๕๖๙", + "redyear": "xxx", + "curdate": "วันที่ เดือน สิงหาคม พุทธศักราช ๒๕๖๙ ", + "commto" : "นายสมชาย จรดปลายเท้า", + "addrno" : "3/77 xxx yyy ทุ่งสองห้อง,หลักสี่, จังหวัดกรุงเทพฯ ", + "groupname":"ผู้อำนวยการโรงเรียน", + + "accuser": "นายธีรพล ร่มเริง", + "acc1": "ผู้ฟ้องคดี", + "accused": "รร", + "acc2": "ผู้ถูกฟ้องคดี", + "interpleader": "สมชาย ใจดี", + "acc3": "ผู้ร้องสอด", + "detail1": "ตุลาการเจ้าของสำนวนได้พิจารณาคำฟ้อง และเอกสารประกอบคำฟ้องแล้ว เห็นว่าคดีนี้เป็นคดีพิพาทซึ่งไม่อยู่ในอำนาจศาลปกครองสูงสุด\n\nผู้ฟ้องเป็นผู้มีสิทธิฟ้องคดี คดีนี้มีกฎหมายกำหนดให้ต้องดำเนินการแก้ไข ความเดือดร้อนหรือเสียหายก่อนฟ้องคดี ", + "sendto" : "นายสมศักดิ์ ฟักมี", + + "warning": "หากผู้ถูกฟ้องคดีไม่ปฏิบัติตามคำสั่งศาลภายในระยะเวลาที่กำหนด ศาลจะถือว่า ผู้ถูกฟ้องคดียอมรับข้อเท็จจริงตามข้อหาของผู้ฟ้องคดี", + "detail2":"คำสั่งเพิ่มเติมคือ bla bla", + + "remark":"This is remark Text bla bla " + } +} \ No newline at end of file diff --git a/public/tmpl/T_X.docx b/public/tmpl/T_X.docx new file mode 100755 index 0000000..3ae25d7 Binary files /dev/null and b/public/tmpl/T_X.docx differ diff --git a/public/tmpl/T_no_warning.json b/public/tmpl/T_no_warning.json new file mode 100755 index 0000000..59a8b65 --- /dev/null +++ b/public/tmpl/T_no_warning.json @@ -0,0 +1,51 @@ +{ + "info": { + "ticket_data": "{\"fid\":\"T3_P2_IN_XXX\",\"tid\":\"T_X\",\"uid\":\"oom\",\"uname\":\"สรวิชญ์\"}" + }, + "dc": { + "Interpleader": false, + "CommandTo": true, + "SendTo": true, + "AdditionCommand" : false, + "Warning":false, + + "docname":"คำสั่งเรียก\nให้ทำคำให้การเพิ่มเติม", + "doctype":"(ต. ๓)", + "blackno": "คดีหมายเลขดำที่", + "redno": "คดีหมายเลขแดงที่", + + "court": "ศาลปกครองนครราชสีมา", + "doctitle":"คำสั่งถึง", + "pname":"สมหญิง", + + "courtname":"ศาลปกครองสุพรรณบุรี", + "courtno":"๓๓๓ หมู่ ๖ ตำบลสนามชัย อำเภอเมืองสุพรรณบุรี", + "courttam":"จังหวัดสุพรรณบุรี ๗๒๐๐๐", + "courttel":"กลุ่มออกหมาย โทรศัพท์ ๐๓๕ ๔๓๒ ๓๓๓ ต่อ ๑๐๐๑,๒๒๐๓", + "courttel2":"สอบถามติดตามคดี ขอคำปรึกษาแนะนำ โทรสายด่วน ๑๓๕๕", + "pname2":"ชื่อของ pname2" + }, + "cc": { + "docname":"คำสั่งเรียกพยานบุคคล", + "blackyear": "๙๐/๒๕๖๙", + "redyear": "xxx", + "curdate": "วันที่ เดือน สิงหาคม พุทธศักราช ๒๕๖๙ ", + "commto" : "นายสมชาย จรดปลายเท้า", + "addrno" : "3/77 xxx yyy ทุ่งสองห้อง,หลักสี่, จังหวัดกรุงเทพฯ ", + "groupname":"ผู้อำนวยการโรงเรียน", + + "accuser": "นายธีรพล ร่มเริง", + "acc1": "ผู้ฟ้องคดี", + "accused": "รร", + "acc2": "ผู้ถูกฟ้องคดี", + "interpleader": "สมชาย ใจดี", + "acc3": "ผู้ร้องสอด", + "detail1": "ตุลาการเจ้าของสำนวนได้พิจารณาคำฟ้อง และเอกสารประกอบคำฟ้องแล้ว เห็นว่าคดีนี้เป็นคดีพิพาทซึ่งไม่อยู่ในอำนาจศาลปกครองสูงสุด\n\nผู้ฟ้องเป็นผู้มีสิทธิฟ้องคดี คดีนี้มีกฎหมายกำหนดให้ต้องดำเนินการแก้ไข ความเดือดร้อนหรือเสียหายก่อนฟ้องคดี ", + "sendto" : "นายสมศักดิ์ ฟักมี", + + "warning": "หากผู้ถูกฟ้องคดีไม่ปฏิบัติตามคำสั่งศาลภายในระยะเวลาที่กำหนด ศาลจะถือว่า ผู้ถูกฟ้องคดียอมรับข้อเท็จจริงตามข้อหาของผู้ฟ้องคดี", + "detail2":"คำสั่งเพิ่มเติมคือ bla bla", + "remarkhead":"หัวของ Remark", + "remark":"This is remark Text bla bla " + } +} \ No newline at end of file diff --git a/public/tmpl/index.html b/public/tmpl/index.html new file mode 100644 index 0000000..e47e08c --- /dev/null +++ b/public/tmpl/index.html @@ -0,0 +1,20 @@ + + + + + + Document + + +

Template & Data

+ +
    +
  1. T12_X + (T12_b2_IN, T12_FD155_3s-long) +
  2. +
  3. T_X + (TF_no_warning_P2, T_no_warning, TS_P2_IN.json) +
  4. +
+ + \ No newline at end of file