Files
lcbp3/specs/99-archives/docs/Markdown/LCBP3-DMS Requirements Specification (v2.0)
T
admin 158179d4a5
Build and Deploy / deploy (push) Successful in 6m25s
260224:1606 20260224:1600 V1.8.0
2026-02-24 16:06:15 +07:00

1197 lines
104 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
From: <Saved by Blink>
Snapshot-Content-Location: https://docs.google.com/document/u/0/d/1LMjIhp2TCy9QpzTUzL55cP0dx61WM4epmr8qy9N9Rgc/mobilebasic?hl=th-TH&pli=1
Subject: LCBP3-DMS Requirements Specification (v2.0)
Date: Thu, 16 Oct 2025 22:57:30 +0700
MIME-Version: 1.0
Content-Type: multipart/related;
type="text/html";
boundary="----MultipartBoundary--zmGvipyjWUpT0gAfLJbw3hmbaeNqVxyLAosKXVU9r0----"
------MultipartBoundary--zmGvipyjWUpT0gAfLJbw3hmbaeNqVxyLAosKXVU9r0----
Content-Type: text/html
Content-ID: <frame-7BAEF33BE4BD3D5B83D4637309DE737B@mhtml.blink>
Content-Transfer-Encoding: binary
Content-Location: https://docs.google.com/document/u/0/d/1LMjIhp2TCy9QpzTUzL55cP0dx61WM4epmr8qy9N9Rgc/mobilebasic?hl=th-TH&pli=1
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="cid:css-76c0a50f-d092-48aa-9377-7e013611e5a0@mhtml.blink" /><link rel="stylesheet" type="text/css" href="cid:css-4baa57de-b40a-46ea-b008-eea5f6a84227@mhtml.blink" /><link rel="stylesheet" type="text/css" href="cid:css-941c3c4b-eff7-4021-b2a8-f5f59715b21d@mhtml.blink" /><title>LCBP3-DMS Requirements Specification (v2.0)</title><link rel="shortcut icon" href="https://ssl.gstatic.com/docs/documents/images/kix-favicon-2023q4.ico"><meta property="og:title" content="LCBP3-DMS Requirements Specification (v2.0)"><meta property="og:type" content="article"><meta property="og:site_name" content="Google Docs"><meta property="og:url" content="https://docs.google.com/document/u/0/d/1LMjIhp2TCy9QpzTUzL55cP0dx61WM4epmr8qy9N9Rgc/mobilebasic?hl=th-TH&amp;pli=1&amp;usp=embed_facebook"><meta property="og:description" content="LCBP3-DMS: Requirements Specification (v2.0) เอกสารนี้สรุปข้อกำหนดทางธุรกิจ, สถาปัตยกรรมทางเทคนิค, และรายละเอียดการ υλοποίηση (Implementation) สำหรับระบบบริหารจัดการเอกสารโครงการ (Document Management System) 1. สถาปัตยกรรมและเทคโนโลยี (System Architecture &amp; Technology Stack) ระบบใช้สถาปัตยกรรมแบบ..."><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=0"><meta name="referrer" content="strict-origin-when-cross-origin"></head><body><div><div class="docs-ml-promotion docs-ml-promotion-off-screen" role="alertdialog" aria-labelledby="docs-ml-promotion-aria-label" aria-hidden="true"><div id="docs-ml-promotion-aria-label" style="display:none;">Alert message displayed.</div><div class="docs-ml-promotion-content"><div class="docs-ml-promotion-header"><span class="docs-ml-promotion-app-icon-container" aria-hidden="true"><div class="docs-ml-icon docs-ml-promotion-app-icon"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 36 36"><path fill="none" d="M0 0h36v36H0z"></path><path fill="#fff" d="M10.9 18.4h14.2V21H10.9zM10.9 22.9h10.5v2.6H10.9z"></path><path fill="#1967d2" d="M21.8 9.8l4.5.8 3.7-.8-8.2-8.3-1.2 3.9z"></path><path fill="#fff" d="M10.9 13.9h14.2v2.6H10.9z"></path><path d="M21.8 9.8V1.5H8.2C7 1.5 6 2.5 6 3.8v28.5c0 1.2 1 2.2 2.2 2.2h19.5c1.2 0 2.2-1 2.2-2.2V9.8h-8.1zM21 25.1h-9.8v-1.9H21v1.9zm3.8-4.5H11.2v-1.9h13.5v1.9zm0-4.5H11.2v-1.9h13.5v1.9z" fill="#4285f4"></path></svg></div></span><span class="docs-ml-promotion-text"><div class="docs-ml-promotion-text-heading">Edit with the Docs app</div><div class="docs-ml-promotion-text-body">Make tweaks, leave comments, and share with others to edit at the same time.</div></span></div><div class="docs-ml-promotion-action-row"><span class="docs-ml-promotion-action-container"><span class="docs-ml-promotion-action-button-wrapper docs-ml-promotion-no-button-wrapper" role="button" tabindex="0"><span class="docs-ml-promotion-action-button docs-ml-promotion-no-button">NO THANKS</span></span></span><span class="docs-ml-promotion-action-container"><span class="docs-ml-promotion-action-button-wrapper docs-ml-promotion-yes-button-wrapper" role="button" tabindex="0"><span class="docs-ml-promotion-action-button docs-ml-promotion-yes-button">USE THE APP</span></span></span></div></div></div></div><div id="docs-ml-header-id" class="docs-ml-header"><span class="docs-ml-header-item docs-ml-header-drive-link"><div id="docs-ml-header-drive-link-aria-label" style="display:none;">Go to Drive</div><a href="https://drive.google.com/u/0?usp=docs_web" aria-labelledby="docs-ml-header-drive-link-aria-label" role="button"><div class="docs-ml-header-icon-container"><div class="docs-ml-icon docs-ml-header-icon docs-ml-arrow-back-dir"><div class="docs-ml-img-container docs-ml-img docs-ml-arrow-back-icon"></div></div></div></a></span><span class="docs-ml-header-item docs-ml-header-document-title"><div class="docs-ml-header-document-title-text">LCBP3-DMS Requirements Specification (v2.0)</div></span><div id="docs-ml-header-edit-button-aria-label" style="display:none;">Edit</div><span class="docs-ml-header-item docs-ml-header-edit-button" aria-labelledby="docs-ml-header-edit-button-aria-label" role="button" tabindex="0"><div class="docs-ml-header-icon-container"><div class="docs-ml-icon docs-ml-header-icon"><div class="docs-ml-img-container docs-ml-img docs-ml-edit-icon"></div></div></div></span></div><div class="app-container"><div class="doc-container"><div class="doc"><div class="doc-content" style="background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt"><h1 style="padding-top:12pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:24pt;padding-bottom:12pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:24pt;font-family:&quot;Arial&quot;;font-style:normal">LCBP3-DMS: Requirements Specification (v2.0)</span></h1><p style="padding-top:0pt;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11.2pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">เอกสารนี้สรุปข้อกำหนดทางธุรกิจ, สถาปัตยกรรมทางเทคนิค, และรายละเอียดการ υλοποίηση (Implementation) สำหรับระบบบริหารจัดการเอกสารโครงการ (Document Management System)</span></p><h2 style="padding-top:0pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:18pt;padding-bottom:11.2pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:18pt;font-family:&quot;Arial&quot;;font-style:normal">1. สถาปัตยกรรมและเทคโนโลยี (System Architecture &amp; Technology Stack)</span></h2><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left"><span>ระบบใช้สถาปัตยกรรมแบบ </span><span style="font-weight:700">Headless/API-First</span><span>&nbsp;ที่ทันสมัย ทำงานทั้งหมดบน QNAP Server ผ่าน </span><span style="font-weight:700">Container Station</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เพื่อความสะดวกในการจัดการและบำรุงรักษา</span></p><ul class="lst-kix_list_1-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">1.1 Infrastructure &amp; Environment:</span></li></ul><ul class="lst-kix_list_2-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Server:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;QNAP (Model: TS-473A, RAM: 32GB, CPU: AMD Ryzen V1500B)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Containerization:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;Docker &amp; Docker Compose</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Development Environment:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;VS Code on Windows 11</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Domain:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;np-dms.work (มี Fixed IP)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Docker Network:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ทุก Service จะเชื่อมต่อผ่านเครือข่ายกลางชื่อ lcbp3 เพื่อให้สามารถสื่อสารกันได้</span></li></ul><ul class="lst-kix_list_1-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">1.2 Code Hosting:</span></li></ul><ul class="lst-kix_list_3-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Service:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;Gitea (Self-hosted on QNAP)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Domain:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;git.np-dms.work</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">หน้าที่:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เป็นศูนย์กลางในการเก็บและจัดการเวอร์ชันของโค้ด (Source Code) สำหรับทุกส่วน</span></li></ul><ul class="lst-kix_list_1-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">1.3 Backend / Data Platform:</span></li></ul><ul class="lst-kix_list_4-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Framework:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;NestJS (Node.js, TypeScript, ESM)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Domain:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;backend.np-dms.work</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">หน้าที่:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;จัดการโครงสร้างข้อมูล (Data Models), สร้าง API, จัดการสิทธิ์ผู้ใช้ (Roles &amp; Permissions), และสร้าง Workflow ทั้งหมดของระบบ</span></li></ul><ul class="lst-kix_list_1-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">1.4 Database:</span></li></ul><ul class="lst-kix_list_5-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Service:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;MariaDB</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">หน้าที่:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ฐานข้อมูลหลักสำหรับเก็บข้อมูลทั้งหมด</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Tooling:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;DBeaver (Community Edition) สำหรับการออกแบบและจัดการฐานข้อมูล</span></li></ul><ul class="lst-kix_list_1-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">1.5 Frontend:</span></li></ul><ul class="lst-kix_list_6-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Framework:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;Next.js (App Router, React, TypeScript, ESM)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Styling:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;Tailwind CSS + PostCSS</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Component Library:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;shadcn/ui</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Domain:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;lcbp3.np-dms.work</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">หน้าที่:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;สร้างหน้าตาเว็บแอปพลิเคชันสำหรับให้ผู้ใช้งานเข้ามาดู Dashboard, จัดการเอกสาร, และติดตามงาน โดยจะสื่อสารกับ Backend ผ่าน API</span></li></ul><ul class="lst-kix_list_1-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">1.6 Reverse Proxy:</span></li></ul><ul class="lst-kix_list_7-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Service:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;Nginx Proxy Manager</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">หน้าที่:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เป็นด่านหน้าในการรับ-ส่งข้อมูล จัดการโดเมนทั้งหมด, ทำหน้าที่เป็น Proxy ชี้ไปยัง Service ที่ถูกต้อง, และจัดการ SSL Certificate (HTTPS) ให้อัตโนมัติ</span></li></ul><h2 style="padding-top:11.2pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:18pt;padding-bottom:12pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:18pt;font-family:&quot;Arial&quot;;font-style:normal">2. ข้อกำหนดด้านฟังก์ชันการทำงาน (Functional Requirements)</span></h2><h3 style="padding-top:0pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:14pt;padding-bottom:12pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:14pt;font-family:&quot;Arial&quot;;font-style:normal">2.1 การจัดการโครงสร้างโครงการและองค์กร</span></h3><ul class="lst-kix_list_8-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">2.1.1 โครงการ (Projects):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ระบบต้องสามารถจัดการเอกสารภายในหลายโครงการได้ (ปัจจุบันมี 4 โครงการ และจะเพิ่มขึ้นในอนาคต)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">2.1.2 สัญญา (Contracts):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ในแต่ละโครงการ มีได้หลายสัญญา หรืออย่างน้อย 1 สัญญา</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">2.1.3 องค์กร (Organizations):</span></li></ul><ul class="lst-kix_list_9-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">มีหลายองค์กรในโครงการ บางองค์กรเช่น Owner, Designer และ Consultant สามารถอยู่ในหลายโครงการและหลายสัญญาได้</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">Contractor จะถือ 1 สัญญา และอยู่ใน 1 โครงการเท่านั้น</span></li></ul><h3 style="padding-top:12pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:14pt;padding-bottom:12pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:14pt;font-family:&quot;Arial&quot;;font-style:normal">2.2 การจัดการเอกสาร (Correspondence Management)</span></h3><ul class="lst-kix_list_a-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">2.2.1 ประเภทเอกสาร:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ระบบต้องรองรับเอกสารหลายประเภท (Types) เช่น จดหมาย (Letter), อีเมล์ (Email), Request for Information (RFI), และสามารถเพิ่มประเภทใหม่ได้ในภายหลัง</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">2.2.2 การสร้างเอกสาร:</span></li></ul><ul class="lst-kix_list_b-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">ผู้ใช้ที่มีสิทธิ์ (เช่น Document Control) สามารถสร้างเอกสารรอไว้ในสถานะ "ฉบับร่าง" (Draft) ได้ ซึ่งผู้ใช้งานต่างองค์กรจะมองไม่เห็น</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">เมื่อกด "Submitted" แล้ว การแก้ไข, ถอนเอกสารกลับไปสถานะ Draft, หรือยกเลิก (Cancel) จะต้องทำโดยผู้ใช้ระดับ Admin ขึ้นไป พร้อมระบุเหตุผล</span></li></ul><ul class="lst-kix_list_a-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">2.2.3 การอ้างอิงและจัดกลุ่ม:</span></li></ul><ul class="lst-kix_list_c-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">เอกสารสามารถอ้างถึง (Reference) เอกสารฉบับก่อนหน้าได้หลายฉบับ</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">สามารถกำหนด Tag ได้หลาย Tag เพื่อจัดกลุ่มและใช้ในการค้นหาขั้นสูง</span></li></ul><ul class="lst-kix_list_a-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">2.2.4 ประวัติการแก้ไข (Revisions):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เอกสารสามารถมีได้หลาย Revision โดยระบบจะเก็บประวัติการแก้ไขทั้งหมด</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">2.2.5 การจัดเก็บ:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เอกสารและไฟล์แนบจะถูกจัดเก็บในโฟลเดอร์บน Server โดยมีการอ้างอิงข้อมูล (Metadata) ในฐานข้อมูล และสามารถจัดเรียงตามวันที่ออกเอกสาร (Issue Date) ได้</span></li></ul><h3 style="padding-top:12pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:14pt;padding-bottom:12pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:14pt;font-family:&quot;Arial&quot;;font-style:normal">2.3 การจัดการเอกสารทางเทคนิค (Technical Documents &amp; Workflow)</span></h3><ul class="lst-kix_list_d-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">2.3.1 ประเภท:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เป็นชนิดหนึ่งของ Correspondence ที่มีลักษณะเฉพาะคือต้องได้รับการอนุมัติ และมีประเภทดังนี้:</span></li></ul><ul class="lst-kix_list_e-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">Request for Material Approval (RFA_Mat)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">Request for Method statement Approval (RFA_MST)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">Request for Document Approval (RFA_DOC)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">Request for Drawing Approval (RFA_DWG)</span></li></ul><ul class="lst-kix_list_d-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">2.3.2 Workflow การอนุมัติ:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ต้องรองรับกระบวนการอนุมัติที่ซับซ้อนและเป็นลำดับ เช่น ส่งจาก Originator -&gt; Org1 -&gt; Org2 -&gt; Org3 แล้วส่งผลกลับตามลำดับเดิม</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">2.3.3 การจัดการ Drawing (RFA_DWG):</span></li></ul><ul class="lst-kix_list_f-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">เอกสาร RFA_DWG จะประกอบไปด้วย Shop Drawing (Shp_DWG) หลายแผ่น ซึ่งแต่ละแผ่นมี Revision ของตัวเอง</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">Shop Drawing สามารถอ้างอิงถึง Contract Drawing (Con_DWG) หลายแผ่น หรือไม่อ้างถึงก็ได้</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">ระบบต้องมีส่วนสำหรับจัดการข้อมูล Master Data ของทั้ง Shop Drawing และ Contract Drawing แยกจากกัน</span></li></ul><h3 style="padding-top:12pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:14pt;padding-bottom:12pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:14pt;font-family:&quot;Arial&quot;;font-style:normal">2.4 ใบเวียนเอกสารภายใน (Internal Circulation Sheet)</span></h3><ul class="lst-kix_list_10-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">2.4.1 วัตถุประสงค์:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;การสื่อสาร (Correspondence) ทุกฉบับ จะมีใบเวียนเอกสารเพื่อควบคุมและมอบหมายงานภายในองค์กร (สามารถดูและแก้ไขได้เฉพาะคนในองค์กร)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">2.4.2 การระบุผู้รับผิดชอบ:</span></li></ul><ul class="lst-kix_list_11-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">ผู้รับผิดชอบหลัก (Main): มีได้หลายคน</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">ผู้ร่วมปฏิบัติงาน (Action): มีได้หลายคน</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">ผู้ที่ต้องรับทราบ (Information): มีได้หลายคน</span></li></ul><ul class="lst-kix_list_10-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">2.4.3 การติดตามงาน:</span></li></ul><ul class="lst-kix_list_12-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">สามารถกำหนดวันแล้วเสร็จ (Deadline) สำหรับผู้รับผิดชอบประเภท Main และ Action ได้</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">มีระบบแจ้งเตือนเมื่อมี Circulation ใหม่ และแจ้งเตือนล่วงหน้าก่อนถึงวันแล้วเสร็จ</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">สามารถปิด Circulation ได้เมื่อดำเนินการตอบกลับไปยังองค์กรผู้ส่ง (Originator) แล้ว</span></li></ul><h2 style="padding-top:11.2pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:18pt;padding-bottom:11.2pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:18pt;font-family:&quot;Arial&quot;;font-style:normal">3. ข้อกำหนดด้านสิทธิ์และการเข้าถึง (Access Control Requirements)</span></h2><ul class="lst-kix_list_13-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">3.1 ภาพรวม:</span><span>&nbsp;ผู้ใช้และองค์กรสามารถดูและแก้ไขเอกสารได้ตามสิทธิ์ที่ได้รับ โดยระบบสิทธิ์จะเป็นแบบ </span><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">Role-Based Access Control (RBAC)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">3.2 ระดับของสิทธิ์:</span></li></ul><ul class="lst-kix_list_14-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Global Roles:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;สิทธิ์ในภาพรวมของระบบ</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Project-Specific Roles:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;สิทธิ์ที่ถูกกำหนดให้ผู้ใช้สำหรับโครงการนั้นๆ โดยเฉพาะ (เช่น เป็น Editor ในโครงการ A แต่เป็น Viewer ในโครงการ B)</span></li></ul><ul class="lst-kix_list_13-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">3.3 บทบาท (Roles) พื้นฐาน:</span></li></ul><ul class="lst-kix_list_15-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Superadmin:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ไม่มีข้อจำกัดใดๆ สามารถจัดการได้ทุกอย่างข้ามองค์กร</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Admin:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;มีสิทธิ์เต็มที่ แต่จำกัดเฉพาะในองค์กรที่ตัวเองสังกัด สามารถจัดการผู้ใช้ในองค์กรได้</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Document Control / Editor:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;สามารถ เพิ่ม/แก้ไข เอกสาร เฉพาะในองค์กรที่ตัวเองสังกัด ไม่สามารถจัดการผู้ใช้ได้</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">สามารถสร้าง Role ใหม่และกำหนดสิทธิ์ (Permissions) เพิ่มเติมได้ในภายหลังผ่านหน้า Admin Panel</span></li></ul><ul class="lst-kix_list_13-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">3.4 การบังคับใช้สิทธิ์:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;สิทธิ์ขององค์กรจะครอบคลุมสิทธิ์ของผู้ใช้ และการเข้าถึงข้อมูลที่เกี่ยวข้องกับโครงการ (เช่น การแก้ไขเอกสาร) จะถูกตรวจสอบเทียบกับสิทธิ์ที่ผู้ใช้มีในโครงการนั้นๆ โดยเฉพาะ</span></li></ul><h2 style="padding-top:11.2pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:18pt;padding-bottom:11.2pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:18pt;font-family:&quot;Arial&quot;;font-style:normal">4. ข้อกำหนดด้านผู้ใช้งาน (User Interface &amp; Experience)</span></h2><ul class="lst-kix_list_16-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">4.1 Layout หลัก:</span><span>&nbsp;หน้าเว็บใช้รูปแบบ </span><span style="font-weight:700">App Shell</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ที่ประกอบด้วย:</span></li></ul><ul class="lst-kix_list_17-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Navbar (ส่วนบน):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;แสดงชื่อระบบ, เมนูผู้ใช้ (Profile), เมนูสำหรับ Admin/Superadmin (จัดการผู้ใช้, จัดการสิทธิ์), และปุ่ม Login/Logout</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Sidebar (ด้านข้าง):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เป็นเมนูหลักสำหรับเข้าถึงส่วนที่เกี่ยวกับเอกสารทั้งหมด เช่น Dashboard, Correspondences, RFA, Drawings</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Main Content Area:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;พื้นที่สำหรับแสดงเนื้อหาหลักของหน้าที่เลือก</span></li></ul><ul class="lst-kix_list_16-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">4.2 หน้า Landing Page:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เป็นหน้าแรกที่แสดงข้อมูลบางส่วนของโครงการสำหรับผู้ใช้ที่ยังไม่ได้ล็อกอิน</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">4.3 หน้า Dashboard:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;เป็นหน้าแรกหลังจากล็อกอิน ประกอบด้วย:</span></li></ul><ul class="lst-kix_list_18-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">การ์ดสรุปภาพรวม (KPI Cards):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;แสดงข้อมูลสรุปที่สำคัญขององค์กร เช่น จำนวนเอกสาร, งานที่เกินกำหนด</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">ตาราง "งานของฉัน" (My Tasks Table):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;แสดงรายการงานทั้งหมดจาก Circulation ที่ผู้ใช้ต้องดำเนินการ</span></li></ul><ul class="lst-kix_list_16-0" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">4.4 การติดตามสถานะ:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;องค์กรสามารถติดตามสถานะเอกสารทั้งของตนเอง (Originator) และสถานะเอกสารที่ส่งมาถึงตนเอง (Recipient)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">4.5 การจัดการข้อมูลส่วนตัว (Profile Page):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ผู้ใช้สามารถจัดการข้อมูลส่วนตัวและเปลี่ยนรหัสผ่านของตนเองได้</span></li></ul><h2 style="padding-top:11.2pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:18pt;padding-bottom:11.2pt;font-family:&quot;Arial&quot;;line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:18pt;font-family:&quot;Arial&quot;;font-style:normal">5. ข้อกำหนดที่ไม่ใช่ฟังก์ชันการทำงาน (Non-Functional Requirements)</span></h2><ul class="lst-kix_list_19-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">5.1 การบันทึกการกระทำ (Audit Log):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ทุกการกระทำที่สำคัญของผู้ใช้ (สร้าง, แก้ไข, ลบ, ส่ง) จะถูกบันทึกไว้ใน audit_logs เพื่อการตรวจสอบย้อนหลัง</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">5.2 การค้นหา (Search):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;ระบบต้องมีฟังก์ชันการค้นหาขั้นสูง ที่สามารถค้นหาเอกสารจากหลายเงื่อนไขพร้อมกันได้ เช่น ค้นหาจากชื่อเรื่อง, ประเภท, วันที่, และ Tag</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">5.3 การทำรายงาน (Reporting):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;สามารถจัดทำรายงานสรุปแยกประเภทของ Correspondence ประจำวัน, สัปดาห์, เดือน, และปีได้</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">5.4 ประสิทธิภาพ (Performance):</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">&nbsp;มีการใช้ Caching กับข้อมูลที่เรียกใช้บ่อย และใช้ Pagination ในตารางข้อมูลเพื่อจัดการข้อมูลจำนวนมาก</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">5.5 ความปลอดภัย (Security):</span></li></ul><ul class="lst-kix_list_1a-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">มีระบบ Rate Limiting เพื่อป้องกันการโจมตีแบบ Brute-force</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:&quot;Arial&quot;;margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal">การจัดการ Secret (เช่น รหัสผ่าน DB, JWT Secret) จะต้องทำผ่าน Environment Variable ของ Docker เพื่อความปลอดภัยสูงสุด</span></li></ul><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:&quot;Arial&quot;;line-height:1.0;height:11pt;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:&quot;Arial&quot;;font-style:normal"></span></p></div></div></div></div></body></html>
------MultipartBoundary--zmGvipyjWUpT0gAfLJbw3hmbaeNqVxyLAosKXVU9r0----
Content-Type: text/css
Content-Transfer-Encoding: binary
Content-Location: cid:css-941c3c4b-eff7-4021-b2a8-f5f59715b21d@mhtml.blink
@charset "utf-8";
.lst-kix_list_14-1 > li::before { content: "○ "; }
.lst-kix_list_14-3 > li::before { content: "■ "; }
.lst-kix_list_14-0 > li::before { content: "● "; }
.lst-kix_list_14-4 > li::before { content: "■ "; }
.lst-kix_list_14-5 > li::before { content: "■ "; }
.lst-kix_list_14-7 > li::before { content: "■ "; }
.lst-kix_list_14-6 > li::before { content: "■ "; }
ul.lst-kix_list_9-3 { list-style-type: none; }
ul.lst-kix_list_9-4 { list-style-type: none; }
ul.lst-kix_list_9-1 { list-style-type: none; }
ul.lst-kix_list_9-2 { list-style-type: none; }
ul.lst-kix_list_9-7 { list-style-type: none; }
ul.lst-kix_list_9-8 { list-style-type: none; }
ul.lst-kix_list_9-5 { list-style-type: none; }
ul.lst-kix_list_9-6 { list-style-type: none; }
ul.lst-kix_list_9-0 { list-style-type: none; }
.lst-kix_list_14-2 > li::before { content: "■ "; }
ul.lst-kix_list_17-1 { list-style-type: none; }
ul.lst-kix_list_17-0 { list-style-type: none; }
ul.lst-kix_list_17-8 { list-style-type: none; }
ul.lst-kix_list_17-7 { list-style-type: none; }
ul.lst-kix_list_17-6 { list-style-type: none; }
ul.lst-kix_list_17-5 { list-style-type: none; }
ul.lst-kix_list_17-4 { list-style-type: none; }
ul.lst-kix_list_17-3 { list-style-type: none; }
.lst-kix_list_14-8 > li::before { content: "■ "; }
ul.lst-kix_list_17-2 { list-style-type: none; }
.lst-kix_list_5-0 > li::before { content: "● "; }
.lst-kix_list_5-3 > li::before { content: "■ "; }
.lst-kix_list_5-2 > li::before { content: "■ "; }
.lst-kix_list_5-1 > li::before { content: "○ "; }
.lst-kix_list_5-7 > li::before { content: "■ "; }
ul.lst-kix_list_8-4 { list-style-type: none; }
ul.lst-kix_list_8-5 { list-style-type: none; }
.lst-kix_list_5-6 > li::before { content: "■ "; }
.lst-kix_list_5-8 > li::before { content: "■ "; }
ul.lst-kix_list_8-2 { list-style-type: none; }
ul.lst-kix_list_8-3 { list-style-type: none; }
ul.lst-kix_list_8-8 { list-style-type: none; }
ul.lst-kix_list_8-6 { list-style-type: none; }
ul.lst-kix_list_8-7 { list-style-type: none; }
.lst-kix_list_5-4 > li::before { content: "■ "; }
.lst-kix_list_5-5 > li::before { content: "■ "; }
ul.lst-kix_list_8-0 { list-style-type: none; }
ul.lst-kix_list_8-1 { list-style-type: none; }
.lst-kix_list_6-1 > li::before { content: "○ "; }
.lst-kix_list_6-3 > li::before { content: "■ "; }
.lst-kix_list_6-0 > li::before { content: "● "; }
.lst-kix_list_6-4 > li::before { content: "■ "; }
ul.lst-kix_list_16-2 { list-style-type: none; }
ul.lst-kix_list_16-1 { list-style-type: none; }
ul.lst-kix_list_16-0 { list-style-type: none; }
.lst-kix_list_6-2 > li::before { content: "■ "; }
ul.lst-kix_list_16-8 { list-style-type: none; }
ul.lst-kix_list_16-7 { list-style-type: none; }
ul.lst-kix_list_16-6 { list-style-type: none; }
ul.lst-kix_list_16-5 { list-style-type: none; }
ul.lst-kix_list_16-4 { list-style-type: none; }
.lst-kix_list_6-8 > li::before { content: "■ "; }
ul.lst-kix_list_16-3 { list-style-type: none; }
.lst-kix_list_6-5 > li::before { content: "■ "; }
.lst-kix_list_6-7 > li::before { content: "■ "; }
.lst-kix_list_6-6 > li::before { content: "■ "; }
.lst-kix_list_7-4 > li::before { content: "■ "; }
.lst-kix_list_7-6 > li::before { content: "■ "; }
.lst-kix_list_7-2 > li::before { content: "■ "; }
.lst-kix_list_13-7 > li::before { content: "■ "; }
.lst-kix_list_7-8 > li::before { content: "■ "; }
.lst-kix_list_15-5 > li::before { content: "■ "; }
.lst-kix_list_4-1 > li::before { content: "○ "; }
.lst-kix_list_15-7 > li::before { content: "■ "; }
ul.lst-kix_list_19-7 { list-style-type: none; }
ul.lst-kix_list_19-6 { list-style-type: none; }
.lst-kix_list_4-3 > li::before { content: "■ "; }
.lst-kix_list_4-5 > li::before { content: "■ "; }
ul.lst-kix_list_19-5 { list-style-type: none; }
ul.lst-kix_list_19-4 { list-style-type: none; }
ul.lst-kix_list_19-3 { list-style-type: none; }
ul.lst-kix_list_19-2 { list-style-type: none; }
ul.lst-kix_list_19-1 { list-style-type: none; }
ul.lst-kix_list_19-0 { list-style-type: none; }
.lst-kix_list_15-1 > li::before { content: "○ "; }
.lst-kix_list_15-3 > li::before { content: "■ "; }
ul.lst-kix_list_19-8 { list-style-type: none; }
.lst-kix_list_12-3 > li::before { content: "■ "; }
.lst-kix_list_12-1 > li::before { content: "○ "; }
.lst-kix_list_13-3 > li::before { content: "■ "; }
ul.lst-kix_list_18-0 { list-style-type: none; }
.lst-kix_list_13-5 > li::before { content: "■ "; }
.lst-kix_list_12-5 > li::before { content: "■ "; }
ul.lst-kix_list_18-8 { list-style-type: none; }
ul.lst-kix_list_18-7 { list-style-type: none; }
ul.lst-kix_list_18-6 { list-style-type: none; }
ul.lst-kix_list_18-5 { list-style-type: none; }
.lst-kix_list_12-7 > li::before { content: "■ "; }
ul.lst-kix_list_18-4 { list-style-type: none; }
ul.lst-kix_list_18-3 { list-style-type: none; }
ul.lst-kix_list_18-2 { list-style-type: none; }
ul.lst-kix_list_18-1 { list-style-type: none; }
.lst-kix_list_13-1 > li::before { content: "○ "; }
ul.lst-kix_list_f-7 { list-style-type: none; }
ul.lst-kix_list_f-6 { list-style-type: none; }
ul.lst-kix_list_f-5 { list-style-type: none; }
ul.lst-kix_list_f-4 { list-style-type: none; }
ul.lst-kix_list_f-8 { list-style-type: none; }
ul.lst-kix_list_f-3 { list-style-type: none; }
.lst-kix_list_3-0 > li::before { content: "● "; }
ul.lst-kix_list_f-2 { list-style-type: none; }
ul.lst-kix_list_f-1 { list-style-type: none; }
ul.lst-kix_list_f-0 { list-style-type: none; }
ul.lst-kix_list_5-7 { list-style-type: none; }
ul.lst-kix_list_5-8 { list-style-type: none; }
ul.lst-kix_list_5-5 { list-style-type: none; }
ul.lst-kix_list_5-6 { list-style-type: none; }
ul.lst-kix_list_5-0 { list-style-type: none; }
.lst-kix_list_3-4 > li::before { content: "■ "; }
ul.lst-kix_list_5-3 { list-style-type: none; }
.lst-kix_list_3-3 > li::before { content: "■ "; }
ul.lst-kix_list_5-4 { list-style-type: none; }
ul.lst-kix_list_5-1 { list-style-type: none; }
.lst-kix_list_8-0 > li::before { content: "● "; }
ul.lst-kix_list_5-2 { list-style-type: none; }
.lst-kix_list_8-7 > li::before { content: "■ "; }
.lst-kix_list_3-8 > li::before { content: "■ "; }
.lst-kix_list_f-6 > li::before { content: "■ "; }
.lst-kix_list_a-7 > li::before { content: "■ "; }
.lst-kix_list_f-7 > li::before { content: "■ "; }
.lst-kix_list_8-3 > li::before { content: "■ "; }
ul.lst-kix_list_13-5 { list-style-type: none; }
ul.lst-kix_list_13-4 { list-style-type: none; }
ul.lst-kix_list_13-3 { list-style-type: none; }
ul.lst-kix_list_13-2 { list-style-type: none; }
ul.lst-kix_list_13-1 { list-style-type: none; }
.lst-kix_list_3-7 > li::before { content: "■ "; }
ul.lst-kix_list_13-0 { list-style-type: none; }
.lst-kix_list_8-4 > li::before { content: "■ "; }
.lst-kix_list_a-2 > li::before { content: "■ "; }
ul.lst-kix_list_13-8 { list-style-type: none; }
.lst-kix_list_a-3 > li::before { content: "■ "; }
.lst-kix_list_11-1 > li::before { content: "○ "; }
ul.lst-kix_list_13-7 { list-style-type: none; }
ul.lst-kix_list_13-6 { list-style-type: none; }
.lst-kix_list_f-3 > li::before { content: "■ "; }
.lst-kix_list_a-6 > li::before { content: "■ "; }
.lst-kix_list_f-2 > li::before { content: "■ "; }
.lst-kix_list_11-0 > li::before { content: "● "; }
.lst-kix_list_8-8 > li::before { content: "■ "; }
ul.lst-kix_list_e-8 { list-style-type: none; }
.lst-kix_list_16-8 > li::before { content: "■ "; }
ul.lst-kix_list_e-7 { list-style-type: none; }
ul.lst-kix_list_e-6 { list-style-type: none; }
.lst-kix_list_16-7 > li::before { content: "■ "; }
ul.lst-kix_list_e-5 { list-style-type: none; }
.lst-kix_list_e-3 > li::before { content: "■ "; }
.lst-kix_list_e-7 > li::before { content: "■ "; }
.lst-kix_list_e-2 > li::before { content: "■ "; }
.lst-kix_list_e-6 > li::before { content: "■ "; }
.lst-kix_list_4-8 > li::before { content: "■ "; }
ul.lst-kix_list_e-0 { list-style-type: none; }
.lst-kix_list_4-7 > li::before { content: "■ "; }
.lst-kix_list_17-0 > li::before { content: "● "; }
ul.lst-kix_list_e-4 { list-style-type: none; }
ul.lst-kix_list_e-3 { list-style-type: none; }
ul.lst-kix_list_e-2 { list-style-type: none; }
ul.lst-kix_list_e-1 { list-style-type: none; }
ul.lst-kix_list_4-8 { list-style-type: none; }
.lst-kix_list_16-0 > li::before { content: "● "; }
ul.lst-kix_list_4-6 { list-style-type: none; }
ul.lst-kix_list_4-7 { list-style-type: none; }
ul.lst-kix_list_4-0 { list-style-type: none; }
.lst-kix_list_16-4 > li::before { content: "■ "; }
ul.lst-kix_list_4-1 { list-style-type: none; }
.lst-kix_list_16-3 > li::before { content: "■ "; }
ul.lst-kix_list_4-4 { list-style-type: none; }
ul.lst-kix_list_4-5 { list-style-type: none; }
ul.lst-kix_list_4-2 { list-style-type: none; }
ul.lst-kix_list_4-3 { list-style-type: none; }
ul.lst-kix_list_12-6 { list-style-type: none; }
ul.lst-kix_list_12-5 { list-style-type: none; }
.lst-kix_list_17-7 > li::before { content: "■ "; }
ul.lst-kix_list_12-4 { list-style-type: none; }
ul.lst-kix_list_12-3 { list-style-type: none; }
ul.lst-kix_list_12-2 { list-style-type: none; }
ul.lst-kix_list_12-1 { list-style-type: none; }
.lst-kix_list_17-8 > li::before { content: "■ "; }
ul.lst-kix_list_12-0 { list-style-type: none; }
.lst-kix_list_17-3 > li::before { content: "■ "; }
.lst-kix_list_17-4 > li::before { content: "■ "; }
ul.lst-kix_list_12-8 { list-style-type: none; }
ul.lst-kix_list_12-7 { list-style-type: none; }
.lst-kix_list_7-0 > li::before { content: "● "; }
.lst-kix_list_2-4 > li::before { content: "■ "; }
.lst-kix_list_2-8 > li::before { content: "■ "; }
.lst-kix_list_7-3 > li::before { content: "■ "; }
ul.lst-kix_list_7-5 { list-style-type: none; }
.lst-kix_list_10-0 > li::before { content: "● "; }
ul.lst-kix_list_7-6 { list-style-type: none; }
ul.lst-kix_list_7-3 { list-style-type: none; }
ul.lst-kix_list_7-4 { list-style-type: none; }
.lst-kix_list_13-8 > li::before { content: "■ "; }
.lst-kix_list_b-3 > li::before { content: "■ "; }
.lst-kix_list_b-7 > li::before { content: "■ "; }
.lst-kix_list_18-3 > li::before { content: "■ "; }
.lst-kix_list_18-7 > li::before { content: "■ "; }
ul.lst-kix_list_7-7 { list-style-type: none; }
ul.lst-kix_list_7-8 { list-style-type: none; }
ul.lst-kix_list_7-1 { list-style-type: none; }
ul.lst-kix_list_7-2 { list-style-type: none; }
ul.lst-kix_list_7-0 { list-style-type: none; }
.lst-kix_list_7-7 > li::before { content: "■ "; }
.lst-kix_list_15-4 > li::before { content: "■ "; }
.lst-kix_list_10-4 > li::before { content: "■ "; }
.lst-kix_list_10-8 > li::before { content: "■ "; }
.lst-kix_list_4-0 > li::before { content: "● "; }
ul.lst-kix_list_15-3 { list-style-type: none; }
ul.lst-kix_list_15-2 { list-style-type: none; }
.lst-kix_list_15-0 > li::before { content: "● "; }
ul.lst-kix_list_15-1 { list-style-type: none; }
.lst-kix_list_15-8 > li::before { content: "■ "; }
ul.lst-kix_list_15-0 { list-style-type: none; }
.lst-kix_list_4-4 > li::before { content: "■ "; }
ul.lst-kix_list_15-8 { list-style-type: none; }
ul.lst-kix_list_15-7 { list-style-type: none; }
ul.lst-kix_list_15-6 { list-style-type: none; }
.lst-kix_list_9-3 > li::before { content: "■ "; }
ul.lst-kix_list_15-5 { list-style-type: none; }
ul.lst-kix_list_15-4 { list-style-type: none; }
.lst-kix_list_9-7 > li::before { content: "■ "; }
.lst-kix_list_11-4 > li::before { content: "■ "; }
.lst-kix_list_12-4 > li::before { content: "■ "; }
ul.lst-kix_list_6-6 { list-style-type: none; }
ul.lst-kix_list_6-7 { list-style-type: none; }
ul.lst-kix_list_6-4 { list-style-type: none; }
ul.lst-kix_list_6-5 { list-style-type: none; }
ul.lst-kix_list_6-8 { list-style-type: none; }
.lst-kix_list_1-0 > li::before { content: "● "; }
.lst-kix_list_1a-3 > li::before { content: "■ "; }
ul.lst-kix_list_6-2 { list-style-type: none; }
.lst-kix_list_11-8 > li::before { content: "■ "; }
ul.lst-kix_list_6-3 { list-style-type: none; }
ul.lst-kix_list_6-0 { list-style-type: none; }
.lst-kix_list_12-0 > li::before { content: "● "; }
ul.lst-kix_list_6-1 { list-style-type: none; }
.lst-kix_list_1-4 > li::before { content: "■ "; }
.lst-kix_list_13-0 > li::before { content: "● "; }
ul.lst-kix_list_14-4 { list-style-type: none; }
ul.lst-kix_list_14-3 { list-style-type: none; }
ul.lst-kix_list_14-2 { list-style-type: none; }
.lst-kix_list_13-4 > li::before { content: "■ "; }
ul.lst-kix_list_14-1 { list-style-type: none; }
ul.lst-kix_list_14-0 { list-style-type: none; }
ul.lst-kix_list_14-8 { list-style-type: none; }
ul.lst-kix_list_14-7 { list-style-type: none; }
.lst-kix_list_2-0 > li::before { content: "● "; }
ul.lst-kix_list_14-6 { list-style-type: none; }
ul.lst-kix_list_14-5 { list-style-type: none; }
.lst-kix_list_1-8 > li::before { content: "■ "; }
.lst-kix_list_12-8 > li::before { content: "■ "; }
.lst-kix_list_c-0 > li::before { content: "● "; }
.lst-kix_list_19-0 > li::before { content: "● "; }
.lst-kix_list_19-1 > li::before { content: "○ "; }
ul.lst-kix_list_b-8 { list-style-type: none; }
ul.lst-kix_list_1-0 { list-style-type: none; }
.lst-kix_list_c-1 > li::before { content: "○ "; }
ul.lst-kix_list_b-3 { list-style-type: none; }
ul.lst-kix_list_b-2 { list-style-type: none; }
.lst-kix_list_c-3 > li::before { content: "■ "; }
.lst-kix_list_c-4 > li::before { content: "■ "; }
.lst-kix_list_19-4 > li::before { content: "■ "; }
ul.lst-kix_list_b-1 { list-style-type: none; }
ul.lst-kix_list_b-0 { list-style-type: none; }
ul.lst-kix_list_b-7 { list-style-type: none; }
ul.lst-kix_list_b-6 { list-style-type: none; }
.lst-kix_list_c-2 > li::before { content: "■ "; }
.lst-kix_list_19-2 > li::before { content: "■ "; }
.lst-kix_list_19-3 > li::before { content: "■ "; }
ul.lst-kix_list_b-5 { list-style-type: none; }
ul.lst-kix_list_b-4 { list-style-type: none; }
ul.lst-kix_list_1-3 { list-style-type: none; }
ul.lst-kix_list_1-4 { list-style-type: none; }
ul.lst-kix_list_1-1 { list-style-type: none; }
ul.lst-kix_list_1-2 { list-style-type: none; }
ul.lst-kix_list_1-7 { list-style-type: none; }
ul.lst-kix_list_1-8 { list-style-type: none; }
ul.lst-kix_list_1-5 { list-style-type: none; }
ul.lst-kix_list_1-6 { list-style-type: none; }
.lst-kix_list_1a-5 > li::before { content: "■ "; }
.lst-kix_list_1a-6 > li::before { content: "■ "; }
.lst-kix_list_1a-8 > li::before { content: "■ "; }
.lst-kix_list_19-8 > li::before { content: "■ "; }
.lst-kix_list_1a-7 > li::before { content: "■ "; }
.lst-kix_list_19-5 > li::before { content: "■ "; }
.lst-kix_list_19-6 > li::before { content: "■ "; }
.lst-kix_list_19-7 > li::before { content: "■ "; }
ul.lst-kix_list_a-4 { list-style-type: none; }
ul.lst-kix_list_a-3 { list-style-type: none; }
ul.lst-kix_list_a-2 { list-style-type: none; }
ul.lst-kix_list_a-1 { list-style-type: none; }
ul.lst-kix_list_a-8 { list-style-type: none; }
ul.lst-kix_list_a-7 { list-style-type: none; }
ul.lst-kix_list_a-6 { list-style-type: none; }
ul.lst-kix_list_a-5 { list-style-type: none; }
.lst-kix_list_d-6 > li::before { content: "■ "; }
.lst-kix_list_d-8 > li::before { content: "■ "; }
.lst-kix_list_d-7 > li::before { content: "■ "; }
.lst-kix_list_d-2 > li::before { content: "■ "; }
.lst-kix_list_18-0 > li::before { content: "● "; }
.lst-kix_list_d-1 > li::before { content: "○ "; }
.lst-kix_list_d-5 > li::before { content: "■ "; }
.lst-kix_list_18-1 > li::before { content: "○ "; }
.lst-kix_list_18-2 > li::before { content: "■ "; }
.lst-kix_list_d-4 > li::before { content: "■ "; }
.lst-kix_list_d-3 > li::before { content: "■ "; }
.lst-kix_list_c-7 > li::before { content: "■ "; }
ul.lst-kix_list_a-0 { list-style-type: none; }
.lst-kix_list_c-5 > li::before { content: "■ "; }
.lst-kix_list_c-8 > li::before { content: "■ "; }
.lst-kix_list_d-0 > li::before { content: "● "; }
.lst-kix_list_c-6 > li::before { content: "■ "; }
.lst-kix_list_2-7 > li::before { content: "■ "; }
ul.lst-kix_list_d-8 { list-style-type: none; }
ul.lst-kix_list_d-7 { list-style-type: none; }
ul.lst-kix_list_d-6 { list-style-type: none; }
.lst-kix_list_2-5 > li::before { content: "■ "; }
ul.lst-kix_list_d-1 { list-style-type: none; }
ul.lst-kix_list_d-0 { list-style-type: none; }
.lst-kix_list_b-8 > li::before { content: "■ "; }
ul.lst-kix_list_d-5 { list-style-type: none; }
ul.lst-kix_list_d-4 { list-style-type: none; }
ul.lst-kix_list_d-3 { list-style-type: none; }
ul.lst-kix_list_d-2 { list-style-type: none; }
ul.lst-kix_list_1a-0 { list-style-type: none; }
ul.lst-kix_list_1a-1 { list-style-type: none; }
.lst-kix_list_b-4 > li::before { content: "■ "; }
.lst-kix_list_18-6 > li::before { content: "■ "; }
ul.lst-kix_list_3-7 { list-style-type: none; }
ul.lst-kix_list_1a-2 { list-style-type: none; }
ul.lst-kix_list_3-8 { list-style-type: none; }
ul.lst-kix_list_1a-3 { list-style-type: none; }
ul.lst-kix_list_1a-4 { list-style-type: none; }
.lst-kix_list_10-1 > li::before { content: "○ "; }
ul.lst-kix_list_1a-5 { list-style-type: none; }
.lst-kix_list_18-4 > li::before { content: "■ "; }
.lst-kix_list_18-8 > li::before { content: "■ "; }
ul.lst-kix_list_1a-6 { list-style-type: none; }
ul.lst-kix_list_1a-7 { list-style-type: none; }
ul.lst-kix_list_3-1 { list-style-type: none; }
ul.lst-kix_list_3-2 { list-style-type: none; }
ul.lst-kix_list_3-0 { list-style-type: none; }
ul.lst-kix_list_3-5 { list-style-type: none; }
ul.lst-kix_list_3-6 { list-style-type: none; }
.lst-kix_list_b-6 > li::before { content: "■ "; }
ul.lst-kix_list_3-3 { list-style-type: none; }
ul.lst-kix_list_3-4 { list-style-type: none; }
.lst-kix_list_10-7 > li::before { content: "■ "; }
.lst-kix_list_10-5 > li::before { content: "■ "; }
.lst-kix_list_10-3 > li::before { content: "■ "; }
ul.lst-kix_list_11-7 { list-style-type: none; }
ul.lst-kix_list_11-6 { list-style-type: none; }
.lst-kix_list_b-0 > li::before { content: "● "; }
ul.lst-kix_list_11-5 { list-style-type: none; }
ul.lst-kix_list_11-4 { list-style-type: none; }
ul.lst-kix_list_11-3 { list-style-type: none; }
ul.lst-kix_list_11-2 { list-style-type: none; }
.lst-kix_list_b-2 > li::before { content: "■ "; }
ul.lst-kix_list_11-1 { list-style-type: none; }
ul.lst-kix_list_11-0 { list-style-type: none; }
.lst-kix_list_9-2 > li::before { content: "■ "; }
ul.lst-kix_list_11-8 { list-style-type: none; }
.lst-kix_list_9-0 > li::before { content: "● "; }
ul.lst-kix_list_c-8 { list-style-type: none; }
ul.lst-kix_list_c-7 { list-style-type: none; }
.lst-kix_list_9-6 > li::before { content: "■ "; }
ul.lst-kix_list_c-2 { list-style-type: none; }
ul.lst-kix_list_c-1 { list-style-type: none; }
ul.lst-kix_list_c-0 { list-style-type: none; }
.lst-kix_list_9-4 > li::before { content: "■ "; }
ul.lst-kix_list_c-6 { list-style-type: none; }
.lst-kix_list_a-0 > li::before { content: "● "; }
ul.lst-kix_list_c-5 { list-style-type: none; }
.lst-kix_list_11-3 > li::before { content: "■ "; }
ul.lst-kix_list_c-4 { list-style-type: none; }
ul.lst-kix_list_c-3 { list-style-type: none; }
ul.lst-kix_list_2-8 { list-style-type: none; }
.lst-kix_list_11-5 > li::before { content: "■ "; }
ul.lst-kix_list_2-2 { list-style-type: none; }
.lst-kix_list_1a-4 > li::before { content: "■ "; }
ul.lst-kix_list_2-3 { list-style-type: none; }
ul.lst-kix_list_2-0 { list-style-type: none; }
ul.lst-kix_list_2-1 { list-style-type: none; }
.lst-kix_list_9-8 > li::before { content: "■ "; }
ul.lst-kix_list_2-6 { list-style-type: none; }
.lst-kix_list_1a-2 > li::before { content: "■ "; }
.lst-kix_list_1-1 > li::before { content: "○ "; }
ul.lst-kix_list_2-7 { list-style-type: none; }
.lst-kix_list_11-7 > li::before { content: "■ "; }
ul.lst-kix_list_2-4 { list-style-type: none; }
ul.lst-kix_list_2-5 { list-style-type: none; }
ul.lst-kix_list_10-0 { list-style-type: none; }
.lst-kix_list_1a-0 > li::before { content: "● "; }
.lst-kix_list_1-3 > li::before { content: "■ "; }
ul.lst-kix_list_10-8 { list-style-type: none; }
ul.lst-kix_list_1a-8 { list-style-type: none; }
ul.lst-kix_list_10-7 { list-style-type: none; }
.lst-kix_list_1-7 > li::before { content: "■ "; }
ul.lst-kix_list_10-6 { list-style-type: none; }
ul.lst-kix_list_10-5 { list-style-type: none; }
ul.lst-kix_list_10-4 { list-style-type: none; }
ul.lst-kix_list_10-3 { list-style-type: none; }
.lst-kix_list_1-5 > li::before { content: "■ "; }
ul.lst-kix_list_10-2 { list-style-type: none; }
ul.lst-kix_list_10-1 { list-style-type: none; }
.lst-kix_list_2-1 > li::before { content: "○ "; }
.lst-kix_list_2-3 > li::before { content: "■ "; }
.lst-kix_list_3-1 > li::before { content: "○ "; }
.lst-kix_list_3-2 > li::before { content: "■ "; }
.lst-kix_list_8-1 > li::before { content: "○ "; }
.lst-kix_list_8-2 > li::before { content: "■ "; }
.lst-kix_list_3-5 > li::before { content: "■ "; }
.lst-kix_list_f-8 > li::before { content: "■ "; }
.lst-kix_list_8-5 > li::before { content: "■ "; }
.lst-kix_list_8-6 > li::before { content: "■ "; }
.lst-kix_list_3-6 > li::before { content: "■ "; }
.lst-kix_list_f-4 > li::before { content: "■ "; }
.lst-kix_list_a-8 > li::before { content: "■ "; }
.lst-kix_list_f-5 > li::before { content: "■ "; }
.lst-kix_list_11-2 > li::before { content: "■ "; }
.lst-kix_list_a-1 > li::before { content: "○ "; }
.lst-kix_list_f-0 > li::before { content: "● "; }
.lst-kix_list_a-5 > li::before { content: "■ "; }
.lst-kix_list_a-4 > li::before { content: "■ "; }
.lst-kix_list_f-1 > li::before { content: "○ "; }
.lst-kix_list_e-5 > li::before { content: "■ "; }
.lst-kix_list_16-6 > li::before { content: "■ "; }
.lst-kix_list_17-1 > li::before { content: "○ "; }
.lst-kix_list_e-4 > li::before { content: "■ "; }
.lst-kix_list_16-1 > li::before { content: "○ "; }
.lst-kix_list_16-2 > li::before { content: "■ "; }
.lst-kix_list_e-1 > li::before { content: "○ "; }
.lst-kix_list_16-5 > li::before { content: "■ "; }
.lst-kix_list_e-0 > li::before { content: "● "; }
.lst-kix_list_17-2 > li::before { content: "■ "; }
.lst-kix_list_17-6 > li::before { content: "■ "; }
.lst-kix_list_17-5 > li::before { content: "■ "; }
.lst-kix_list_2-6 > li::before { content: "■ "; }
.lst-kix_list_7-1 > li::before { content: "○ "; }
.lst-kix_list_7-5 > li::before { content: "■ "; }
.lst-kix_list_b-5 > li::before { content: "■ "; }
.lst-kix_list_18-5 > li::before { content: "■ "; }
.lst-kix_list_13-6 > li::before { content: "■ "; }
.lst-kix_list_15-6 > li::before { content: "■ "; }
.lst-kix_list_b-1 > li::before { content: "○ "; }
.lst-kix_list_10-2 > li::before { content: "■ "; }
.lst-kix_list_4-2 > li::before { content: "■ "; }
.lst-kix_list_4-6 > li::before { content: "■ "; }
.lst-kix_list_15-2 > li::before { content: "■ "; }
.lst-kix_list_10-6 > li::before { content: "■ "; }
.lst-kix_list_9-1 > li::before { content: "○ "; }
.lst-kix_list_e-8 > li::before { content: "■ "; }
.lst-kix_list_9-5 > li::before { content: "■ "; }
.lst-kix_list_12-2 > li::before { content: "■ "; }
.lst-kix_list_11-6 > li::before { content: "■ "; }
.lst-kix_list_1-2 > li::before { content: "■ "; }
.lst-kix_list_1a-1 > li::before { content: "○ "; }
.lst-kix_list_1-6 > li::before { content: "■ "; }
.lst-kix_list_12-6 > li::before { content: "■ "; }
.lst-kix_list_2-2 > li::before { content: "■ "; }
.lst-kix_list_13-2 > li::before { content: "■ "; }
------MultipartBoundary--zmGvipyjWUpT0gAfLJbw3hmbaeNqVxyLAosKXVU9r0----
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-Location: https://ssl.gstatic.com/docs/common/mobileweb_sprite1.png
PNG

IHDR$ UIDATh[[lWΙٛn
8Ik'm\*VEBj51/T5PZ&чJ *ch ܀B)I+!XNHbr:w<mvv9Ǔx#6=s?|{h2ca;~i7GBTDTvIԶzl
hb~fҽ*[
>*>z˅ۦz,3?0u%K/ݚ=sl, XGfѪڎꂒ"ԷU
L*ݟ(9 ?/(ϥdb}۽TAq(&c~@̸
($ L Dҩ:?slxt4eHY' L]; tzMc;#) >bs{SSL.#T<@Sc$T ǝ)9 0*e,Ok=DDAi?3b'_ OP&^`WX?nf0[ט> 2P_"cTd"$`i6'WjEŒF V*4 +7I ;f,RlxLwMÕ=f13dtb zM}b-`"@2)q.wJQ-ޙX=r1/caOڭxfֆ
x ӏUbX'Wo}fPb3\=~*kULi_mpIe=$S5~ zS0McH^Z&:9 ([
k5|ǡ8I$;=e?:HoFy, FXQcC7 aN#Q3ZGH:9%m@  8U#'ږKNvF±01ߜFˮӳN,PcT^>z_<^KGc5yۉg_I 49f1|Yډ4FF,NGuA)jUXd:8A$lkC50'S[=+ tbѓfcPg%w-\c)m*
"<%i1lBDc 1(3sbΙ4 C kW!BUde6V$ 9iMX\٩ \AN1Ba >O \';2LV(\v "]Le6 \Ėe|v$``hʂ)gzEN 2W_Vnhhp~
`*,#rDv NjU,bO -a-ST?+%ߘqw2Yȋ<#je\(܃PTbC1BDP1<&xܞeUGcH@cdp c#g93#;^K@Kct$ ߿1i0yOZh@}..M.'|f|FŌs
M ̂дfki0[o&0T`l` B'
LZfbS~8X'7"l[S7Ļ;3A6 xgW5l|k?XFk?H<tw{@.ڀ`Qgbd突M.(]#%@mTÓDpy*냉CAA`Kٸ0A+>p^[:n?b,
L/c@ұ+&3<0])Khd VWmI7+c\,)<d[.6f N Xc!MO$ˀ[`ua/+{BV)+KBAJB<EnPJ>ݮP*?Z/0 u|ԾUB)]+KƔ8s?Z+r`e MԶ2Cy|MfS&9ѽ̄i/fP'
սµ[X?V/$ 5c,b1HBSȿE+5@{
4(:]<AvRcX,T"*5?9PLF!ɀe,Xx#f(i
uu:d@No.6yv-u5BS
7 E˲zų+l`tK+lY$i"{ ̧ #-006 ~e7y)jju:W[oFb-kV`ac%`IENDB`
------MultipartBoundary--zmGvipyjWUpT0gAfLJbw3hmbaeNqVxyLAosKXVU9r0----
Content-Type: text/css
Content-Transfer-Encoding: binary
Content-Location: https://fonts.googleapis.com/css?family=Google+Sans
@charset "utf-8";
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl1pynAESo4b4o.woff2") format("woff2"); unicode-range: U+308, U+530-58F, U+2010, U+2024, U+25CC, U+FB13-FB17; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl3pynAESo4b4o.woff2") format("woff2"); unicode-range: U+951-952, U+964-965, U+980-9FE, U+1CD0, U+1CD2, U+1CD5-1CD6, U+1CD8, U+1CE1, U+1CEA, U+1CED, U+1CF2, U+1CF5-1CF7, U+200C-200D, U+20B9, U+25CC, U+A8F1; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlKpynAESo4b4o.woff2") format("woff2"); unicode-range: U+2C7, U+2D8-2D9, U+2DB, U+307, U+1400-167F, U+18B0-18F5, U+25CC, U+11AB0-11ABF; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: local("Google Sans Regular"), local("GoogleSans-Regular"), url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlopynAESo4b4o.woff2") format("woff2"); unicode-range: U+460-52F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: local("Google Sans Regular"), local("GoogleSans-Regular"), url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlhpynAESo4b4o.woff2") format("woff2"); unicode-range: U+301, U+400-45F, U+490-491, U+4B0-4B1, U+2116; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlkpynAESo4b4o.woff2") format("woff2"); unicode-range: U+900-97F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl0pynAESo4b4o.woff2") format("woff2"); unicode-range: U+30E, U+1200-1399, U+2D80-2DDE, U+AB01-AB2E, U+1E7E0-1E7E6, U+1E7E8-1E7EB, U+1E7ED-1E7EE, U+1E7F0-1E7FE; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl6pynAESo4b4o.woff2") format("woff2"); unicode-range: U+589, U+10A0-10FF, U+1C90-1CBA, U+1CBD-1CBF, U+205A, U+2D00-2D2F, U+2E31; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: local("Google Sans Regular"), local("GoogleSans-Regular"), url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlppynAESo4b4o.woff2") format("woff2"); unicode-range: U+1F00-1FFF; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: local("Google Sans Regular"), local("GoogleSans-Regular"), url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlmpynAESo4b4o.woff2") format("woff2"); unicode-range: U+370-377, U+37A-37F, U+384-38A, U+38C, U+38E-3A1, U+3A3-3FF; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl-pynAESo4b4o.woff2") format("woff2"); unicode-range: U+951-952, U+964-965, U+A80-AFF, U+200C-200D, U+20B9, U+25CC, U+A830-A839; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlGpynAESo4b4o.woff2") format("woff2"); unicode-range: U+951-952, U+964-965, U+A01-A76, U+200C-200D, U+20B9, U+25CC, U+262C, U+A830-A839; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: local("Google Sans Regular"), local("GoogleSans-Regular"), url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlnpynAESo4b4o.woff2") format("woff2"); unicode-range: U+307-308, U+590-5FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlupynAESo4b4o.woff2") format("woff2"); unicode-range: U+1780-17FF, U+19E0-19FF, U+200C-200D, U+25CC; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlspynAESo4b4o.woff2") format("woff2"); unicode-range: U+E81-EDF, U+200C-200D, U+25CC; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl9pynAESo4b4o.woff2") format("woff2"); unicode-range: U+307, U+323, U+951-952, U+964-965, U+D00-D7F, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC, U+A830-A832; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl8pynAESo4b4o.woff2") format("woff2"); unicode-range: U+951-952, U+964-965, U+B01-B77, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl4pynAESo4b4o.woff2") format("woff2"); unicode-range: U+964-965, U+D81-DF4, U+1CF2, U+200C-200D, U+25CC, U+111E1-111F4; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJkLpynAESo4b4o.woff2") format("woff2"); unicode-range: U+1-C, U+E-1F, U+7F-9F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlzpynAESo4b4o.woff2") format("woff2"); unicode-range: U+964-965, U+B82-BFA, U+200C-200D, U+20B9, U+25CC; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl5pynAESo4b4o.woff2") format("woff2"); unicode-range: U+951-952, U+964-965, U+C00-C7F, U+1CDA, U+1CF2, U+200C-200D, U+25CC; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlxpynAESo4b4o.woff2") format("woff2"); unicode-range: U+2D7, U+303, U+331, U+E01-E5B, U+200C-200D, U+25CC; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: local("Google Sans Regular"), local("GoogleSans-Regular"), url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlqpynAESo4b4o.woff2") format("woff2"); unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308-309, U+323, U+329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: local("Google Sans Regular"), local("GoogleSans-Regular"), url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlrpynAESo4b4o.woff2") format("woff2"); unicode-range: U+100-2BA, U+2BD-2C5, U+2C7-2CC, U+2CE-2D7, U+2DD-2FF, U+304, U+308, U+329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; src: local("Google Sans Regular"), local("GoogleSans-Regular"), url("https://fonts.gstatic.com/s/googlesans/v65/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJllpynAESo4.woff2") format("woff2"); unicode-range: U+0-FF, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
------MultipartBoundary--zmGvipyjWUpT0gAfLJbw3hmbaeNqVxyLAosKXVU9r0----
Content-Type: text/css
Content-Transfer-Encoding: binary
Content-Location: cid:css-4baa57de-b40a-46ea-b008-eea5f6a84227@mhtml.blink
@charset "utf-8";
@import url("https://fonts.googleapis.com/css?family=Google+Sans");
.docs-ml-promotion { z-index: 1002; }
.docs-ml-header { z-index: 1; }
.docs-ml-icon { direction: ltr; display: inline-block; text-align: left; overflow: hidden; position: relative; vertical-align: middle; }
.docs-ml-img::before { content: url("https://ssl.gstatic.com/docs/common/mobileweb_sprite1.png"); }
.docs-ml-img-container { height: 156px; position: absolute; width: 36px; }
.docs-ml-docs-logo-icon { left: 0px; top: -36px; }
.docs-ml-sheets-logo-icon { left: 0px; top: 0px; }
.docs-ml-slides-logo-icon { left: 0px; top: -96px; }
.docs-ml-arrow-back-icon { left: 0px; top: -132px; }
.docs-ml-edit-icon { left: 0px; top: -72px; }
@media screen and (-webkit-min-device-pixel-ratio: 2) {
.docs-ml-img { content: url("https://ssl.gstatic.com/docs/common/mobileweb_sprite1.png"); }
.docs-ml-img-container { height: 156px; position: absolute; width: 36px; }
.docs-ml-docs-logo-icon { left: 0px; top: -36px; }
.docs-ml-sheets-logo-icon { left: 0px; top: 0px; }
.docs-ml-slides-logo-icon { left: 0px; top: -96px; }
.docs-ml-arrow-back-icon { left: 0px; top: -132px; }
.docs-ml-edit-icon { left: 0px; top: -72px; }
}
.docs-ml-header { background: rgb(250, 250, 250); border-bottom: 1px solid rgb(203, 203, 203); box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 1px; box-sizing: border-box; font-family: "Google Sans", Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 4px 0px; position: fixed; left: 0px; top: 0px; width: 100%; }
.docs-ml-header-icon { height: 24px; opacity: 0.6; width: 24px; }
.docs-ml-header-icon-container { padding: 12px; }
.docs-ml-header-item { display: inline-block; vertical-align: middle; }
.docs-ml-header-drive-link { padding-left: 4px; }
body[dir="rtl"] .docs-ml-arrow-back-dir { transform: scaleX(-1); }
.docs-ml-header-document-title { box-sizing: border-box; line-height: 24px; padding: 0px 12px; width: calc(100% - 104px); }
.docs-ml-header-document-title-text { font-size: 20px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.docs-ml-header-edit-button { float: right; padding-right: 4px; }
.docs-ml-promotion { background: rgb(255, 255, 255); bottom: 0px; box-shadow: rgba(0, 0, 0, 0.4) 0px 4px 12px; font-family: Arial, Helvetica, sans-serif; left: 0px; position: fixed; width: 100%; }
.docs-ml-promotion-off-screen { transform: translateY(100%); }
.docs-ml-promotion-shown { transform: translateY(0px); transition: transform 333ms cubic-bezier(0.4, 0, 0.2, 1); }
.docs-ml-promotion-dismissed { transform: translateY(100%); box-shadow: none; }
.docs-ml-promotion-no-horizontal-scroll { overflow-x: hidden; }
.docs-ml-promotion-header { display: table; padding: 24px 24px 0px; }
.docs-ml-promotion-app-icon-container { display: table-cell; }
.docs-ml-promotion-app-icon { height: 36px; width: 36px; }
@media (min-width: 600px) {
.docs-ml-promotion-app-icon { transform: scale(1.33); }
}
.docs-ml-promotion-text { display: table-cell; padding-left: 20px; vertical-align: top; }
.docs-ml-promotion-text-heading { color: rgba(0, 0, 0, 0.87); font-size: 16px; font-weight: 700; padding-bottom: 7px; }
.docs-ml-promotion-text-body { color: rgba(0, 0, 0, 0.87); font-size: 14px; }
.docs-ml-promotion-action-row { float: right; margin-top: 6px; padding: 8px 24px; }
.docs-ml-promotion-action-row-desktop { margin-top: 6px; }
.docs-ml-promotion-action-container { display: inline-block; height: 48px; margin: 6px 4px; vertical-align: middle; }
.docs-ml-promotion-action-button { display: inline-block; font-size: 14px; font-weight: 500; padding: 9px 12px; vertical-align: middle; }
.docs-ml-promotion-action-button-wrapper:focus { outline-color: rgb(214, 214, 214); }
.docs-ml-promotion-action-button.docs-ml-promotion-yes-button { background-color: rgb(66, 133, 244); border-radius: 4px; color: rgb(250, 250, 250); border: 1px solid transparent; }
.docs-ml-promotion-action-button.docs-ml-promotion-yes-button:active { background-color: rgb(25, 103, 210); }
.docs-ml-promotion-action-button.docs-ml-promotion-no-button { background-color: rgb(250, 250, 250); color: rgb(95, 99, 104); border-radius: 4px; border: 1px solid rgb(218, 220, 224); }
.docs-ml-promotion-action-button.docs-ml-promotion-no-button:active { background-color: rgb(245, 245, 245); }
.docs-ml-promotion.desktop { text-align: center; }
@media (orientation: portrait) {
.docs-ml-promotion.desktop { padding-top: 56px; padding-bottom: 80px; }
}
@media (orientation: landscape) {
.docs-ml-promotion.desktop { padding-top: 36px; padding-bottom: 56px; }
}
.docs-ml-promotion-heading-desktop { font-family: "Google Sans"; font-size: 18px; font-weight: 700; color: rgb(32, 33, 36); padding-top: 18px; padding-bottom: 10px; line-height: 1.5; max-width: 360px; margin: 0px auto; }
@media (orientation: landscape) {
.docs-ml-promotion-heading-desktop { padding-top: 0px; max-width: none; }
}
.docs-ml-promotion-text-body-desktop { font-size: 14px; line-height: 1.5; color: rgb(95, 99, 104); padding-bottom: 10px; }
.docs-icon.docs-ml-promotion-desktop-icon { height: 40px; width: 40px; transform: scale(2.5); transform-origin: center top; }
.docs-icon-ml-promotion-icon-container-desktop { height: 100px; width: 100px; margin-left: auto; margin-right: auto; }
@media (orientation: landscape) {
.docs-icon-ml-promotion-icon-container-desktop { display: inline-block; vertical-align: top; }
.docs-ml-promotion-description-desktop { display: inline-block; vertical-align: top; text-align: left; padding-left: 39px; max-width: 645px; }
}
@media (orientation: landscape) {
.docs-ml-promotion-action-row-desktop { margin-left: -8px; }
}
.docs-ml-promotion-action-row-desktop .docs-ml-promotion-action-container { margin: 6px 8px; font-family: "Google Sans"; }
.docs-ml-promotion-action-row-desktop .docs-ml-promotion-action-button-wrapper:focus { outline: none; }
.docs-ml-promotion-action-button.docs-ml-promotion-yes-button.docs-ml-promotion-app-themed { border-radius: 4px; box-shadow: none; box-sizing: border-box; font-family: "Google Sans", Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-weight: 500; font-size: 14px; height: 36px; letter-spacing: 0.25px; line-height: 16px; padding: 9px 24px 11px; background: rgb(26, 115, 232); color: rgb(255, 255, 255); border: 1px solid transparent !important; }
.docs-ml-promotion-action-button.docs-ml-promotion-no-button.docs-ml-promotion-app-themed { border-radius: 4px; box-shadow: none; box-sizing: border-box; font-family: "Google Sans", Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-weight: 500; font-size: 14px; height: 36px; letter-spacing: 0.25px; line-height: 16px; padding: 9px 24px 11px; background: rgb(255, 255, 255); color: rgb(26, 115, 232); border: 1px solid rgb(218, 220, 224) !important; }
.docs-ml-promotion-action-button-wrapper:focus .docs-ml-promotion-action-button.docs-ml-promotion-yes-button.docs-ml-promotion-app-themed { color: rgb(255, 255, 255); background: rgb(80, 148, 237); box-shadow: rgba(66, 133, 244, 0.15) 0px 1px 3px 1px; }
.docs-ml-promotion-action-button-wrapper:focus .docs-ml-promotion-action-button.docs-ml-promotion-no-button.docs-ml-promotion-app-themed { border-radius: 4px; box-shadow: none; box-sizing: border-box; font-family: "Google Sans", Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-weight: 500; font-size: 14px; height: 36px; letter-spacing: 0.25px; line-height: 16px; padding: 9px 24px 11px; background: rgb(233, 241, 254); border: 1px solid rgb(193, 216, 251) !important; }
.docsshared-no-download .docsshared-no-select-when-no-download, .docsshared-no-select { -webkit-user-drag: none; user-select: none; }
.docsshared-disable-image-copy canvas, .docsshared-disable-image-copy image, .docsshared-disable-image-copy img { pointer-events: none; }
------MultipartBoundary--zmGvipyjWUpT0gAfLJbw3hmbaeNqVxyLAosKXVU9r0----
Content-Type: text/css
Content-Transfer-Encoding: binary
Content-Location: cid:css-76c0a50f-d092-48aa-9377-7e013611e5a0@mhtml.blink
@charset "utf-8";
html { overflow: auto; }
body { margin: 0px; overflow: hidden; overflow-wrap: break-word; }
.app-container { height: 100%; margin-top: 57px; overflow: auto; }
.doc { padding: 20px 12px 0px; position: relative; }
.doc .doc-content { margin: auto; padding: 24px 0px !important; max-width: 770px !important; }
------MultipartBoundary--zmGvipyjWUpT0gAfLJbw3hmbaeNqVxyLAosKXVU9r0------