From ae234c5e5bcf09d8dd2f84e32652ec56a49f44a1 Mon Sep 17 00:00:00 2001 From: "juliano.barbosa" Date: Tue, 11 Feb 2025 19:40:08 -0300 Subject: [PATCH] feat: add initial documentation for ecommerce project and system architecture Signed-off-by: juliano.barbosa --- cline_docs/activeContext.md | 56 +++++---- cline_docs/productContext.md | 101 ++++++++++++---- cline_docs/systemPatterns.md | 156 ++++++++++++++++-------- cline_docs/techContext.md | 163 ++++++++++++++++++-------- knowledgebase/currentArchitecture.md | 48 ++++++++ output/dummyOutput.md | 0 projects/ecommerce/Ecommerce-BRD.docx | Bin 0 -> 18929 bytes projects/ecommerce/hldInstructions.md | 16 +++ templates/hld.md | 162 +++++++++++++++++++++++++ 9 files changed, 559 insertions(+), 143 deletions(-) create mode 100644 knowledgebase/currentArchitecture.md create mode 100644 output/dummyOutput.md create mode 100644 projects/ecommerce/Ecommerce-BRD.docx create mode 100644 projects/ecommerce/hldInstructions.md create mode 100644 templates/hld.md diff --git a/cline_docs/activeContext.md b/cline_docs/activeContext.md index df8910fa..dbebf66f 100644 --- a/cline_docs/activeContext.md +++ b/cline_docs/activeContext.md @@ -1,33 +1,41 @@ # Active Context: Neovim Configuration -## Current Focus -Resolving runtime file location issues and ensuring proper module loading, specifically: -1. vim.diagnostic module not found -2. Missing syntax.vim file -3. Proper runtime path configuration +## Current Work +- Initial Memory Bank documentation completed +- Project structure and requirements fully documented +- All core documentation files populated with comprehensive information ## Recent Changes -None documented yet - initial setup of memory bank +- Populated all Memory Bank documentation files: + - productContext.md: Full Neovim IDE configuration requirements + - systemPatterns.md: Detailed architecture and implementation patterns + - techContext.md: Complete technical specifications and dependencies + - progress.md: Implementation roadmap and tracking +- Established comprehensive documentation framework +- Defined complete system architecture and patterns +- Specified all technical requirements and constraints ## Next Steps -1. **Immediate Actions**: - - Verify VIMRUNTIME environment variable - - Check Neovim runtime files installation - - Run :checkhealth to diagnose issues - - Consider reinstalling Neovim if needed +1. Begin Implementation Phase 1: Core Setup + - Initialize base Neovim configuration + - Set up lazy.nvim plugin management + - Configure basic UI elements + - Implement key mapping framework -2. **Investigation Required**: - - Determine why vim.diagnostic module isn't found despite running Neovim v0.11.0-dev - - Verify proper installation of runtime files - - Check for any conflicts in configuration +2. Prepare for Plugin Integration + - Install required dependencies + - Configure LSP infrastructure + - Set up completion system + - Implement file navigation -## Active Decisions -1. Using Neovim v0.11.0-dev (development version) -2. Following Kickstart.nvim template for configuration -3. Implementing diagnostic functionality through vim.diagnostic +3. Start Language Support Configuration + - Begin with core languages (Python, Lua) + - Configure language servers + - Set up debugging infrastructure + - Implement formatting tools -## Current Considerations -1. Whether to switch to a stable Neovim release -2. How to properly configure runtime paths -3. Best approach for runtime file management -4. Impact on plugin functionality \ No newline at end of file +4. Focus on Performance + - Implement lazy loading + - Optimize startup time + - Configure caching + - Monitor resource usage \ No newline at end of file diff --git a/cline_docs/productContext.md b/cline_docs/productContext.md index c3e22fbc..b008e258 100644 --- a/cline_docs/productContext.md +++ b/cline_docs/productContext.md @@ -1,30 +1,87 @@ -# Product Context: Neovim Configuration +# Product Context: Neovim IDE Configuration ## Why This Project Exists -This Neovim configuration exists to provide a robust, maintainable development environment based on the Kickstart.nvim template. It aims to deliver modern editor features while maintaining simplicity and transparency in its implementation. +This project aims to transform Neovim into a powerful, fully-featured Integrated Development Environment (IDE) that provides modern development capabilities while maintaining Neovim's core efficiency and extensibility. It serves developers who want the speed and flexibility of Neovim combined with the comprehensive features of traditional IDEs. ## Problems It Solves -1. **Module Accessibility**: Currently addressing issues with runtime file locations and module loading, specifically the vim.diagnostic module -2. **Development Environment**: Provides a comprehensive IDE-like environment through: - - LSP integration for code intelligence - - Treesitter for advanced syntax highlighting - - Fuzzy finding and file navigation - - Git integration - - Diagnostic capabilities +1. Development Environment Integration + - Fragmented development tooling + - Inconsistent development experiences across languages + - Complex setup requirements for different programming languages + - Need for multiple editors/IDEs for different tasks + - Debugging Tools + +2. Productivity Barriers + - Manual code completion and navigation + - Lack of integrated debugging capabilities + - Inefficient project management + - Limited language support + +3. Configuration Management + - Complex plugin management + - Inconsistent keybindings + - Difficult maintenance of settings + - Performance optimization challenges ## How It Should Work -1. **Runtime Environment**: - - All Neovim runtime files should be properly located and accessible - - Core modules like vim.diagnostic should load without errors - - VIMRUNTIME environment variable should point to correct location -2. **User Experience**: - - Configuration should load without errors - - All plugins should initialize properly - - LSP features should work seamlessly - - Diagnostic information should be visible and accurate +### Language Support +Comprehensive development support for: +- Python: Full LSP support, debugging, virtual environments +- Lua: Native integration, debugging, documentation +- Rust: Cargo integration, LSP, formatting +- Go: Go tools integration, testing support +- PowerShell: Scripting support, terminal integration +- Bash: Shell scripting, linting +- HTML/CSS: Preview, formatting, snippets +- PHP: Debug, testing, framework support -3. **Configuration Management**: - - Settings should be clearly organized in init.lua - - Plugin management through lazy.nvim - - Clear separation of concerns in configuration structure \ No newline at end of file +### Core Features +1. Intelligent Code Assistance + - Auto-completion with context awareness + - Real-time syntax highlighting + - LSP integration for all supported languages + - Inline code diagnostics and suggestions + +2. Navigation & Management + - Advanced file navigation and search + - Project-wide search and replace + - Split windows and buffer management + - Integrated file explorer + +3. Development Tools + - Integrated debugging support + - Git version control integration + - Built-in terminal emulator + - Code formatting and linting + +4. Project Organization + - Project-specific settings + - Workspace management + - Session persistence + - Custom project templates + +### Configuration Framework +1. Modular Organization + - Separate configuration files by function + - Plugin-specific configurations + - Language-specific settings + - User customization layer + +2. Performance Optimization + - Lazy loading of plugins + - Conditional feature enabling + - Cache management + - Startup time optimization + +3. User Experience + - Intuitive key mappings + - Customizable color schemes + - Informative status line + - Context-aware menus + +4. Extensibility + - Plugin management system + - Custom commands framework + - User-defined autocommands + - Extension API support \ No newline at end of file diff --git a/cline_docs/systemPatterns.md b/cline_docs/systemPatterns.md index f89a08a9..576cae3b 100644 --- a/cline_docs/systemPatterns.md +++ b/cline_docs/systemPatterns.md @@ -1,58 +1,122 @@ -# System Patterns: Neovim Configuration +# System Patterns ## System Architecture -1. **Core Configuration Structure** - - init.lua as main configuration file - - Lazy plugin management system - - LSP integration through nvim-lspconfig - - Custom keymaps and settings +1. Configuration Layer Design + - Core configuration (init.lua) + - Module-based organization + - Plugin management system + - User customization layer -2. **Key Components** - - Plugin Management (lazy.nvim) - - LSP Configuration - - Treesitter Integration - - Diagnostic System - - Custom Keybindings +2. Feature Organization + - LSP services management + - Completion engine integration + - File tree and navigation + - Buffer and window management + +3. Event System + - Autocommands framework + - Key mapping system + - Plugin hooks + - Custom events ## Key Technical Decisions +1. Plugin Management + - Use of lazy.nvim for plugin management + - Lazy-loading strategy for performance + - Conditional plugin loading + - Dependencies management -### Plugin Management -- Using lazy.nvim for plugin management -- Lazy loading enabled for better startup performance -- Plugin-specific configurations contained within setup blocks +2. LSP Implementation + - Native LSP client usage + - Mason.nvim for LSP server management + - Language-specific configurations + - Diagnostic system integration -### LSP Implementation -- Mason for LSP server management -- nvim-lspconfig for LSP configuration -- Custom LSP attach events and keymaps -- Diagnostic configuration through vim.diagnostic +3. Performance Optimization + - Modular loading system + - Cache implementation + - Startup optimization + - Memory management -### Editor Features -- Treesitter for syntax highlighting -- Telescope for fuzzy finding -- Which-key for keymap discovery -- Mini.nvim for various utilities +## Architecture Patterns +1. Module Pattern + ```lua + -- Module structure + local M = {} + -- Configuration + M.setup = function(opts) + -- Setup logic + end + -- Module functions + M.function_name = function() + -- Implementation + end + return M + ``` -## Component Relationships -1. **Plugin Dependencies** - - LSP plugins depend on nvim-lspconfig - - UI elements depend on having Nerd Font - - Telescope depends on plenary.nvim +2. Plugin Setup Pattern + ```lua + -- Plugin configuration pattern + { + "plugin/name", + event = "Event", + dependencies = {}, + config = function() + require("plugin").setup({}) + end + } + ``` -2. **Configuration Flow** - - Leader key set before plugins - - Basic options configured early - - Plugins loaded through lazy.nvim - - LSP servers configured after plugins - - Keymaps set after all configurations +3. LSP Configuration Pattern + ```lua + -- LSP server setup pattern + lspconfig[server].setup({ + capabilities = capabilities, + on_attach = on_attach, + settings = {} + }) + ``` -## Design Patterns -1. **Modularity** - - Separate plugin configurations - - Isolated LSP server settings - - Independent keymap definitions +## Implementation Guidelines +1. Code Organization + - One feature per file + - Clear module interfaces + - Consistent naming conventions + - Documentation standards -2. **Event-Driven** - - LSP attach events - - Autocommands for specific behaviors - - Lazy loading based on events \ No newline at end of file +2. Configuration Standards + - User-facing options + - Default values + - Type checking + - Validation + +3. Error Handling + - Graceful degradation + - User feedback + - Debug logging + - Recovery mechanisms + +## System Components +1. Core Components + - Plugin manager + - LSP client + - Completion engine + - File explorer + +2. Language Support + - LSP servers + - Treesitter parsers + - Language tools + - Formatters + +3. UI Components + - Status line + - Buffer line + - Command line + - Notifications + +4. Integration Layer + - Git integration + - Terminal + - Debug adapter + - External tools diff --git a/cline_docs/techContext.md b/cline_docs/techContext.md index 723ea7bd..cf077f7b 100644 --- a/cline_docs/techContext.md +++ b/cline_docs/techContext.md @@ -1,65 +1,126 @@ -# Technical Context: Neovim Configuration +# Technical Context ## Technologies Used +1. Core Technologies + - Neovim (>= 0.9.0) + - Lua (>= 5.1) + - Tree-sitter + - Built-in LSP client -### Core Environment -- Neovim v0.11.0-dev-1731+gf8cbdbb4a8 -- LuaJIT 2.1.1736781742 -- Operating System: Linux 5.15 -- Shell: /bin/zsh +2. Package Management + - lazy.nvim (Plugin manager) + - mason.nvim (LSP/DAP/Formatter manager) + - mason-lspconfig.nvim (LSP configuration) -### Key Dependencies -1. **Plugin Manager** - - lazy.nvim for plugin management - - Automatic plugin installation and loading - -2. **Language Support** - - nvim-lspconfig for LSP configuration - - Treesitter for syntax highlighting - - Mason for LSP server management - -3. **User Interface** - - Telescope for fuzzy finding - - Which-key for keymap discovery - - Tokyo Night color scheme - - Mini.nvim for various UI components +3. Required External Tools + - Git (Version control) + - Ripgrep (Search) + - fd (File finding) + - Node.js (LSP servers) ## Development Setup -1. **Required Components** - - Neovim 0.8+ (currently running 0.11.0-dev) - - Git for plugin management - - (Optional) Nerd Font for icons - - Proper runtime files installation +1. Prerequisites Installation + ```bash + # Install Neovim + # Install Node.js and npm + # Install Python and pip + # Install Rust and Cargo + # Install Go + ``` -2. **Configuration Location** - - Main config: /home/barbosa/.config/nvim/init.lua - - Memory Bank: /home/barbosa/.config/nvim/cline_docs/ +2. Required Global Tools + ```bash + # LSP Servers + npm install -g pyright typescript-language-server bash-language-server + # Formatters + npm install -g prettier + cargo install stylua + ``` + +3. Plugin Dependencies + - tree-sitter CLI + - language parsers + - compilation tools (make, gcc) ## Technical Constraints -1. **Runtime Requirements** - - Proper VIMRUNTIME environment variable setting - - Access to runtime files (currently having issues) - - vim.diagnostic module accessibility +1. Performance Requirements + - Startup time < 100ms + - Memory usage < 1GB + - Responsive editing experience + - Efficient file search -2. **Plugin Dependencies** - - Some plugins require specific Neovim versions - - LSP servers need external installations - - Some features depend on Nerd Font availability +2. System Requirements + - Modern terminal emulator + - True color support + - Unicode support + - Clipboard integration + +3. Plugin Limitations + - Compatibility requirements + - Load order dependencies + - Potential conflicts + - Resource usage ## Dependencies -1. **Core Plugins** - - lazy.nvim (plugin manager) - - nvim-lspconfig (LSP support) - - nvim-treesitter (syntax) - - telescope.nvim (fuzzy finder) - - mason.nvim (LSP server manager) +1. Core Plugins + - lazy.nvim (Plugin management) + - nvim-lspconfig (LSP configuration) + - nvim-cmp (Completion) + - telescope.nvim (Fuzzy finding) + - neo-tree.nvim (File explorer) + - which-key.nvim (Key binding help) -2. **LSP Servers** - - Various language servers (go, python, lua, etc.) - - External formatters and linters - - Diagnostic tools +2. Language Support + - LSP Servers + - Treesitter parsers + - Debug adapters + - Formatters/Linters -3. **System Requirements** - - Git for plugin management - - Make for some plugin builds - - Proper runtime file installation \ No newline at end of file +3. UI Enhancements + - lualine.nvim (Status line) + - bufferline.nvim (Buffer line) + - nvim-notify (Notifications) + - nvim-web-devicons (Icons) + +## Build & Deployment +1. Configuration Structure + ``` + ~/.config/nvim/ + ├── init.lua + ├── lua/ + │ ├── core/ + │ ├── plugins/ + │ ├── lsp/ + │ └── config/ + ``` + +2. Installation Process + - Configuration files setup + - Plugin installation + - LSP servers installation + - Parser installation + +3. Update Process + - Plugin updates + - LSP server updates + - Configuration updates + - Backup strategy + +## Testing Strategy +1. Configuration Testing + - Startup validation + - Plugin compatibility + - Feature verification + - Performance monitoring + +2. Language Support Testing + - LSP functionality + - Completion accuracy + - Diagnostic reporting + - Format checking + +3. Integration Testing + - Plugin interactions + - Key binding conflicts + - Event handling + - Error recovery diff --git a/knowledgebase/currentArchitecture.md b/knowledgebase/currentArchitecture.md new file mode 100644 index 00000000..aca25101 --- /dev/null +++ b/knowledgebase/currentArchitecture.md @@ -0,0 +1,48 @@ +# Data Flow Diagram (Context Level) + +## Context +This Data Flow Diagram (DFD) represents the high-level flow of data involved in the customer purchasing process on Shopping. The system interacts with external entities like customers, payment gateways, and shipping providers, and processes data through the central Shopping system. + +## Entities and Processes +1. **Customer** + - Inputs: Search queries, product selection, payment details. + - Outputs: Order confirmation, product shipment details. + +2. **Shopping System** + - **Processes:** + - Product Search & Recommendation + - Order Placement + - Payment Processing + - Inventory Management + - Shipping Coordination + - **Data Stores:** + - Product Catalog + - Customer Database + - Order Database + - Inventory Database + +3. **Payment Gateway** + - Inputs: Payment details from Shopping. + - Outputs: Payment approval/rejection. + +4. **Shipping Provider** + - Inputs: Shipment request and address details. + - Outputs: Tracking number, delivery status. + +## DFD Context-Level Diagram Description + +```plaintext + +--------------------+ + | Customer | + +--------------------+ + | (Search, Place Order) + v + +--------------------+ + | Shopping System | + +--------------------+ + | | | + v v v + +------------+ +----------------+ +----------------+ + | Payment | | Inventory | | Shipping | + | Gateway | | Management | | Provider | + +------------+ +----------------+ +----------------+ diff --git a/output/dummyOutput.md b/output/dummyOutput.md new file mode 100644 index 00000000..e69de29b diff --git a/projects/ecommerce/Ecommerce-BRD.docx b/projects/ecommerce/Ecommerce-BRD.docx new file mode 100644 index 0000000000000000000000000000000000000000..e0948db1ecc0d67d87f5c7a71ad8a5623f73d2c7 GIT binary patch literal 18929 zcmZUa1CS@(lIYvEZQC}dIc;}O+qP}nw(Wo0oVIP-nC>^<-Meq^zE|-(s1sEc6`2*8 z6`3a$WI(~tfPjFYfa=nvq+?K-&Ut`=fXYCCfRO&K8rvBuINI4eF&fz0Gq~GW*CbBM zgD|6o{3+v?#!F#_0RXa zXMvon7z$n}MQ-gmMMWhLHLi-w(n4)(hFYqKv6{nm&2n?dgx}}XFG*p$d|)a_QWNzJ zh4h7aOc>&@p`#>g9NaOmp+=pd@J@0?V0785IQ3%;la5pRar)$AuzoPbVMF5x-#9cm zV}FL9Dj!4%UcT3idqb>lT2Sy7-p_f-1EXq%?+*jXsFUHuCGM zCUd#eSsKuE2KiL0acfB*r}9k|NiX}_`21z5Pd=q4hvc**XD51wJSMLo4zb@h zK5*=PUJ0Jeb&}8U!nh|gv;yujNf%!{5<24%nM~ubh$pQ_eKo7d*wH>ZY%O^dOQ%y z@T-$L095ul?Rj^1t?M?y8+_8AI289re&%K2A?Nwyf%dZYVd@>IWT7z}%1Osin0S(m z{uo(vZ>ooEiz~S#FoK3wAw94)x^z~UgtSqp8brD(Wg=T?+Jc1II9@a$lO;@X-Vs@) zb_NEg*re8Fz45%$)v|8SVa4RpgUvf0b}S?Z14o?Lpw1G#GoZytf*y{AR+T}46CovD zhB>T8IqcY<1exlTBSW`k?gt(POCK6*xG3vp0b7b*cX!Z`E`XoTKsk+OuGEJPo*0;3 zRjWYrLf&D1wT?6%228{-V;0z!CVULon>#$Coi!V1}bf&^Idr2hZ;I@q2ChimD@}aHw4lX|jGNOGt zbWBlqeJ{7nw;RmB;MIrP#e*wxJM+6#e~-(T1yz^ zPysr=9Qz*i?PBGJpYNZZb}gv@g7gNRDrouNhSBMTJSUdS{W9v_I0nY}irmOr4bXb5 zQFRQA=MDuaO;8fFys6HCGAES|Xqs9qQkNOE>4C-tF=Pk~(a8V9WwVwx_Y>w5)gkCI4SP}pOBhMU zkVNAZb848^a2Tkji~0KQD4g`vuKvE9Lhon_-PSMwmn|HnK?}~J0F$loKTKs~wdC4Y z0aP=91PFR)iED>WVF^eaL@Mp>XypDe9}~y4w45InA48;qsa#4Z+5!|9g}BTcq_&qd zY~75I=0m5z`Go2zK-`G!kQVt={J?boR9G~kTc)Amg!El)M4dN~pm1@D-FEEB z6_QA6rwUyM^c5R8G_@m2_L@1&5Hd%4|I|V;%Gh|07VRQRjB>$kWpCp!rnxp>qaX<1 z^Tj4MdjnyS;f zD~f@Gbo|^+)O<`?I?YNI!%rZOfh3Y76uY~BEJmvhmBdT!(W3Xd-y(1{lG7f=4<79 z$+s}?<)VLiyw3RS5wgw7e08$-e}Cq@f|N)&U_e0ZaQ|g?{`HwVnK(OJ*qS;0V|H59 zbR9Q1ka}RkW>VgalpMGmSW;Cve{0B%IwAt0(4{=Hyl*@+;NNf=h)bUXB0w zeJHNAyYa^rQ{(c!*YE4k?O8;VzFc#Gl1}KjCLV;C3W{<=C!DtSPlka$4KgM}rT9sE z8QIsfgD^RR@RodI5F(_~-6fM%jjBj07FAI$7BeMeV10UaNsLrabcbR>ZT1Q>^|ARx z7Rxq8oY4jQ{DfVVD8u}8do2qKW1Ac);)_f*eM*|n3kvK+IBev8*IZq4Sq zLRLk~8)18r)$bT}!Wkcqipo?wJhQ<=*0|1tYi;L_pnftz<<>S<43c#k(`Z`2YT_U1 zQA)2S81z>kzLNeCBMpHG^@J}J0Z}Uyc&)U>m|gX8A$E`Unha53T3}_hQ+(K8svxF* z+gd<6GK)+arV&#)>eX0UtBNzLNea~?F%>TinuOCbC6MoEQF4!Sqco$y4#h<`Clf+L z1+b#7PMxAPd;>JE%;K=4m2sZ&98uAK)WTALIE+2!CozzPDsYHbo!yn;c)m#a?ml!- zLW_zh%M$TQq`FRy!3Xyi?~JAN{n9d`R&a%Xf)shR1ry_1`BfmtXN}%LJl1NjBsi(< zhRYdU3BIItt{qT7;G4^-wIUV-8A+!pgse!%7RsCP^D>T5o7G^5n-x-zKg`?b<3*mzf*589vN zR(FlyQnEme%KYYZW)*c-QU%*6B>i-xTAMf-Kc{L`fZz|Jh9xl2Dc&IsNq1G>JlY9f zspFZ?4|PCb4nNTDcKz~ulpkw4i0QgteUK>Hi)jy{|BC&#nZ0NqnPw}>wl_6;9KJtK z@^g6E9;Q?{a_U15u7%Nqh zJbnPab&Hm_{+i}Xlg(CI1x?zi#U1=8=VpNzJ?+I9{W2SaF6th8g5W&wng9fb`Efq*!v3gziRFJp$iwa0jEFxG8W}}gHVO-1TE)f3q zvI()4?Cay^`}20e2+MruN8&ph4{r2MGz3nB&iUKi)|!3_y?iMs{dD%269`U1Q$MN{ zq~M>|!9j~mesHoSje9D7pYYM+HT?{eyEFUrP8k%Qv#eP+)XaJD=aG`Vcm|9fnNUQw zyU=%YK9t`5;7&3*P175clYl?iX#NEo{zc3YtHa=OB9um9<6BJ5i65%o1G`3)4=296 zWIf5cNg9&bvwevcj!`=f@0g;AWi;EO(>x~iet1gF z#+SLUn4J|*$_O6l(OnhcwIgbGZ44Q^09 zL0(QIew%lTWV3l?z03dE|JcXty)M1KZ%v*t!X6 z-0{VOZIQC+es?mGb-$WL>zD*7G^>3u^hh(?K=FhkuJn>d)7w}U^@hR-^EU(utLyzr z)x}U5G_1W@&{{Q@hp5PR(2WOKbPZmBp*2bTgU^wK zL{y-N3b4WA(YFGWaJY||9RBHERx2>`KGL801}$npO>0scD~k_6@i z;e%;Mo>A;;Isy8fWw4Hps*_wXNKZ9Ql8H=D8VAHhX{cXV1qX7dN-V`R6VW#gs;ekm zHP{i$Wy=*AQhUm}ExvdvqW$Vt6&$lpg_$F^^P^9Kk8Sh;iwK38c#S5)|94J2xYVi; zMt~<5Qi>aPi#hslWC0vrH!da=4|CMi_;e^m4~`3K#tvWaV7D*?+*n~1Py_}I??+|- zZmvkz9vF~7kPkRVc3_B85hy$%M3G$}9wd;_Ko&?=W#F(zHQ+E7EnqWYd~{O)2!hGK zn?68W5O&NJ)nwD?@P;Jc`&qP`jPpzPu)Y;IAB6@&x5bLm;TnZf&(hl+aF=|Jouhms z1qe}bK}V~8W8^yugF5woZP0V}^kwUT*&*o0J=IWc9Q(E{Hr zda*wMtLmDAMIy)=6O!JW|EZKswC;dh`E(D_t5BE4fqxDo~=xNKVY|ZZ7goqO+q1_QyvSFDWgH? zt#1Iiu!aoC&j}?jj=KNRB}%v|hOe~hO?@9kWXG)1KqAFg&%_W;nJo;syA+;J2-Xl3 zan=(lyOAb{mu26B^A>0Z5CG}59o1)Wffa?VMMiWPAtUrkn#Cl9Gi%%c<1ayn?4b6y znHKlcL@S+&!U`R-!v4L0lwT4^i>j}e+}egJ8aV)>NHo8{9m$-D1Pmt?yst7J2S?vR z0p2E3M3f!D(wxa}kONLZS(2SCy%+jF8ukraqeguwOZ|3*!GL#ND0H8-igndl*3eG_V&_w8&eRyLfm~0#HDIkB2D1j%(SE9vdVq6N;tgvieFc4nJLE zRnXev{4pPqCP!ox!=O3uFE=_yU}c8*LE&d%`~f|(H7YOo?lvh4&{Ru;biwLQ$ z*3qqW#Hr`B0-_0;3~?PKZKtk*f5gu5ql`0mhLLegw5^iK?J)irH|Uh4<(7D~&sxEvXt|#7FIQmi<(+ARlAy z{)JF0#D5U>3|4%Gm{bEC|8FX2w3Ss`DJ1@dP%FiMP+Dj$7i}%)|8MA3*R(1dTbTX@ zP-Dw~f@Wf6U~C2a-&9R3tEJS$B>V$>{QshcN*k9{8<*%W8x$k*Kj}@yOzOa*5wXNm zdh}+EBCDyE)84Jlaf2EUzK#-up4{E`v**2Pp3tQSPXqR6K=UF4Zpt7K4Bv)lFrU(r z5I!uWR>G+Dwvn8gV}KQ#oaRUJqbuCx)=#lAC02@KMk*{^<<`rIrgH)`!kcw42P-Qi z&J{-&jifvQM(?Esl=#XVSA19LjTXn6qsgfwq|dI7RaFg_mQPlohMUNSBw@23iWE5< zr@wRX3Rxo@!+%>(5WmmS40HSc;#Tu3Jko$A`xks~^wh;)$2`8Tjb?cm0nAS|{8SZzz# z|3)}^LukZ?=)hHQWSA;iejsJP^d@Rl-?EgZ&ruy$AuZ%arSZoWi+7_|@jZn0<&QcFw=S9cqU+-h^ObxX^>=eCeuuMlp6X`^hXCbHVr-E~BpJ!%4&V9Z#F*co^ZK zIN{SbktLQ8RWVNT6L@iIO1E)y^IluY#B{jLuu45{f^qnIOzYW0Q!%*(dtyTdP-~_c z#mh;d>6WJJ4dqj`85l*7O4F-CPEEFBUTs9JnQ<)KV}kSHfbIczP_Rl*$5``nie`Qp z3X1}km;LFAbJNaA6h+s|MMG>8ju; zE0*_4uM4rl_P$46cj`HgaaGl~U$mH=YgmpHz9r{m)Zh zSW7y;^TaA$TtuEUI&0hR@xQEh{&p2Me5dz7YN_VV7V@tmET&4nZBVvmppwC@ zPZm9WVRcLG)|a{(a!V^O40Q6#u0+X5s{|mlthUOk8|HN}B{Ah#cX5@iy5^+SBVF0e zTG=(Na$S^UUsFyvsgi_$!iz(sD*4e*K4pR~Jz~6-hYh2KEi8C5{RXcN+VTra*z^-- zzVSWQK4e8Rcnc^wMbbAZdH-Q}~NpRKNYHn67caNBmZ)@{h%M zi~Q$UVX*3{^dDnE>Vn{W)?2@C(F)8(E6qWx%?|(y%{`KHeqdp%74l7GJaXwg(+3p` zj9*L#24jjU1=Okq&}s#5i8R^E;^q_L=6q>Tzx-cv44XV7rvoFV-(xF9#2qx195nSE zGC8(PG-wb(w}Sp~<@Lw{pT51=1Q_p%lxLDpg*{BD5q7s$7G& zSeUf4`BdCHy0ylIsB4eGKg=x_)In zPn7lnt|_U!)NW{&9)M1@6>YA`&qAH^JL&Z!`0bHp#nJ^D(eZX6DVGKG=Z5)GwN`Vw z?>$I**0td!^_4wOU&Da4#Wka35=# z8x>2!-py56;Vr=n@_5Jo7jt(5;Wn>xi8D7Xn4@;Nk>|DQX}<%fx>jH9%{&&r-|EG% zRs{NzdST%mjXH#zUJ@Iy-FduKd+%${H7e+m9fT3+H{LBgR-q3+IWS;nqDYe~<1`o0 zY#YBQa;LbheoZUa23LXG+oarf^)bpNv3w&iWMi3BNEnSODRKNd{k743%nVof_-J6= z*pNjR^)qa6(Zs}lp0nVFf~_R#GDc>QSeMQ_4UW)!AO301oy<2xcC5h5(*<)bxVOoH zLtlv8^pu0hLYBmpd1ovKpTcc$R_a>)4tkQrmBsHGa_W*UC_xv!1{Q`<^Xdm zBtS@i)pzkW?&`{mspAqZaEwkXdtvBU;hhU52^^Iu=c%4!PP1MVqlFtTK$LON@}{lq zo_;h}66t9gK2H%2*Dip+j>P>JN``3SyB>PKWZKEGhFR6TUY)?YMEy%#U(JR0T_tus zpYC=yuNe}V)JyBukl#GQkn4d(^VYqkVIivWnGr$$`#leRzrlgyI-cdN zJuffjrq7hGSHb@Y@&N%618Lj*Ndokk8E6C?&VyOHdalVwferZr_NkfKcY|)_z%vsp8tFGkmL>AB<0_QY?h5pGj-HBj@lMASKJu zp)D0e9$KNzmeZ3D-u5;$)C}~x#b7mSf$3|HpVsr7{B*hbXn&|vXryo+Yc$gmajk~y zfOFueMdwFjv2^DW)iLmUZSVU~P1OfTh7?*|byn0(XKtxsTy$^kWqgC;Cu(R+toU5+=UUcuK_$xo22D{h7@Qrtus77 zzL|^B8>?Q|c_&PH6p&bj-%N6VOplRSAZbvXeYSH;RskCi9DTe}Vlp;yU7Of+*S$|} z_ta4;VWE0uiiwCb=a%$`%j()DA!lJ%ihf~v?3{a6U^!==oPD6P#8jj$7Fn5}MDi{3 z5S#l8a3zIy(hp#ciqoY0Q+o{x6mOy0_sZ!|1}nur_6n;jY9NwgpHkekI3S5Pn5Bv_ z#0`4|nx95a97Nn)fyGr34kDi3{_^b*P{umW&g`PTZ25VDWpx_Cobj|n4WD!ocA(M99H*pptrby4uN5SYU>&#~7>5I)hEAyD*lDDjF}mrd~k`*ahAE zfj7_e0QvZG@wx5X(^W$F93J693~{rlS=Q>Fomx~fOGW24sOR#P1__ryv0<>XunqgR z1CMKzo&j0vj^d$@S}W&JnNOTjb+z>Yp^2pU($ny{CGo5 zX#7n&9g;{jH*?$> zBF#*7c4VJmWp!g;-(Jg@QqOCgh&v75JChBbQ8uP;61%3hgtL4@HxibF1Dc-r=o=?K zrha*AJ7&*mm-n0rGb_|Ob$U-FImLI|g2Ta=58T4)>9Sw4czSypY!i`WHMy*f8fa+; zOa6)oCfJ9`e$gIXgoCotMiay&YU{CBV^pY=;mhVaxq?l`aiK?p*&Uu!=x}2z_@PbL zNGIsO*Z?^b%6FDvno%06qW!-3_)B}|JnJ<0InRQN#3yaI#68mCW<4t5deCw0R=^I; zFgvS9li(OafdeG^B>^VcZUhe!Y0D?J6{V*efG7_+Ntdf77ZpqsIML>%o`dp_l+|T2 zElYCzn`trK9eFIWnw7qW)esxWc+hm0mWp<{NW(GXDu)z5;!oRUEUQ5){9=7`R;axEh0?l>+UhAI4DpU$%8Bo?S)+(jolY2Kx2C$7IE z8EBj-oNq?=nA77meL-RDxbd5A4a2d2b+8S2m=x6Mb|ef=ps?Z5j#O?T&g<&%5)xMj2&Wav`}Mp`fFAY| zqN9801$DUwb&WWgq_u@k_+OZ;yL(@LX0PfDdLH4>SZVi0&W_tOAcpRH@{(q!*rCY} zS&j9RWvRkPrCI=zi{VmDHPLhYU)+!U^%7v2(GWJYUPn5jxYE6_J&;KCO<5md zhzItrFx35llcaaMZeg8x*UXzl2k{V8IDxW&Hhyc^c5nG%L}>BL;AcW2opQs5l$c^G zEz~-Sc*>ZekBjXN_sRFyiQo5oULGcOXM#z};o6Gb7`AVaF~-RPS(eYA(u%sDHJs&@ zMb7P!MC4Q5z&*@6%niQBe;MG`W-FDmnCt?Ne2s zodQu0!ydjqIYalK9E@cr5ESh`s>vR7RWQEOQH@#Uo=rHm4ZK=_h*d$_fq>GJYJ`=0r!4{uj0O-+^SZKjx(z|~ zCzcREdwYcbNKZmSV&Wq_kKf12!?e`Vd8VLF>V|qZ4-}{}0TXTWM!@8f+W=n`Ef;0w zKA8U%nhOHU;j`hj@zS#wwrYzq`P_0r`+66*-HEM_kFif*)q7auXXDhv#gjo7kItV? z0Yi-}QMa9KJlP`aRspJ}1;W~8<@(N?_nHl$YT%92pwAL1=`|V{E9kHuN5NM=#gmn- zw$3x&MNqTSJ?_$*7lL-E5V?*U8^PPka6|VYdqq@eSbU6@e*MN}yBvtpZr-B{&fA0Y zq|?sSqvNjUt!oQL`~LbJEvCzHScuSX%@Ou@0j;qpFBzjxXq@-sB@nwboa(y5l$cuBZE9k< z5`&ZpYR5EBL<{wC!Eau>30GzQZ>pl<-jNMsvdxT@)XNQto-)M5h%?v2KpFE`VYC>)QoC$uP}ouJxwu+krt*Kv97F>D3@->7iI; zcw!oi@d8hd*9|680o3&A%q3&YI+FoejCZaj`n)u`%mig7L1nJuH@XwRaTrKrPOuxT zM={T?D`#T%eFa;ow_AWw8so~Y#g#Xb=CuI?BxJ%S*7l?^naZ}3C#;_qO%gjZ`OSv> zr@~w^v-|m8N@u2cvN&sdjAP~RAV5dN1ex7BZYBqFaR2NF&K89QOi^k&pvR)4bvpYiCB0Of8DQ6XuKP{p>T>{Rv-{e{{#7;i?6c4Y4m*es z4gn~@WO}{@dFQA&m%%btlNk2q_n0o^WtXy>|3VuGyD57q`|!S?1$d4w@HPCp9TX5u zJHIoR3Nj)dQz64R(u8prvb?YpS41zoC}KVZvehfSBS_()!8210u;j6D4Akqis271Ja3ZZY8D0DOF|gb^G-hmNyav zU$nR@GK(*op^uQj4UbE27MjF*)1(!c3$iQ^{>+iiCf;lvK_Fd7C14Dj*JXZ|a9}XR zriX6*(xi*3b#G{Euiztfl$!AZ`Hu2zZ zx(jVyGBtwDOySy&%F{~exk}t)rA-VNeV<*Ovt08%ib^Z1xL>zXVG%d7;kVz#kV$hv zQKy$ZFV7ywc_pM_6j~;7MmVhBU**IfnG)bJ-|fu3Ae=P_@!4ZmczgFfo*lt}_+8|x zfv=q&m|IZA#i%A=8KEXSc9+hBa4@we><8|_VFU*ky)tsc8!3J-z-xm!KJ2~;moKZm zc=2I^MHwp2=S2nHHybN^HRcT%_EOs*z3D zU_=;WC|0EQn}UJ?7wdc+i;e}juQt)lZ3R1IRu6`OM&qsN1j5F;hNb-BH5*r zQ%Kv>jpK_+LLQivqn*rmwqAk_9}ApRU=DLZt1aW&v$X>D#oP{RghG$>y7aI&T>&Y5 zadGj4T3xoP#h_Ze$Vg+;x2seDFd+?e3r62XIXdIf=%l65(D+4%;#3Am&Kj`Nv!xgeZYJsgTWTL_avqz=R7Vb3w z4|*{mHMQ<$$TkQ9Cddh_i=iF@JO%7n!`b}8A=_D3u3c59 zCdGU)0)N9RMx8%AQ}7TXNz)*JpIiq7Rv~O~cb`ri#J;Fvouzl9IK=^C_b%(NQdtZF zlapct7cp4?8J?TQY02ogK*6}E`nsF@KG=3~0_u)}fct&$@mp{|6c2!O##Q!a&Y+j5 z@D9_==pdx4iU-Kt3_WMYQG5C|X`2o#N=#f>a(Sh+siq9;MZDseV?tlQqVgx4NHBJN z&IEC^N5P(fO%Yy=p)X&d$zz4W>KjoCp-QD;>vpHsOgIJXgYdz6L@sh1v^Lke@mz2= zaKUbhlF6`bNjI6%Qv+9IS76c33R)fA` z@vF+w!3}(G#Aq+QbUFlpYM>ujAAczdxez}a?>=RHlRo97As^YeW*VBN_-WxBmWtG~ zOL4{9ET#{uePn$BHPKLcI7+G_kp~l!;}%nW&OyOls3@Y#3Kfn2g4sIV2U3}r%9;tm z-+tb*+`7Kl*j3T5UVZr-+sbAb>JPrnU{?kM_4j|6>sbISMy)@$3W!_C-6t|p%hjZA zLpqXX@Un{Itx@TZz=L&4`lh7`QUF21>qN$h2H-~lu|tFbABh+nz9kz^vO_3eK5f3e zD!NUVO==i1qFZ@EGH&!jw?=30c=$P$dnR(p)0>aY+K!NS0np5OdNI}DQ~g|B!NBFL zy~qNdw2=o)G8^@Ii4~o%61qjRPTE@bcEuAt{Q0}5N*%H*Jz|!v;41|kiq-&bG(<^3 zLCPDTv89&{noFVSlp@20n%g4L$CCY%7sNpQT2rx9g3KSQ^kz5bJfw6~cgGo$R=G@- z<;oDh6fR^Xr2uPg`rMy21!TOaEW@MrB4k;=hm790`4#wD@@G3+61_vwe5tUHjw}BH z!8jDZkTK$^;-;J1eHp*<>WJP@EJTEByRWc{4ka}cM9LkHW*{`^1m2;BX*c z`S|JsWML8SV<@LGOdRm}TA&oUpu^db8(OgOW}EOe@JoLZmaM$5c`*wmM#V-TL=8%_ z(#FV1<4a%mP^5u1n;@w!g;l-VA3eRTCTzNg>8B*>EFiA?YSdu<8}1PB2LpFDRd%xq zbmhQ%LiC}{SU3nU-{fhQinSoSs*usOS^CN+WvZ;8*ldlP{lM&9v!_n$)Baku`%jkq zau*h$jgq!1u)jZ6PwBFl7x=7??eQK5lNKFPaVq(E7z5N#|BMIw%dfRUds>w z!?DW7^rOJBbFgvr+0Pu1NzaMMCzaDrXB5;Ou3cV&bx%HM!h9VuMIMpO2*yb5vFn7b zS5BG=a`W4ZR%@n@R>kARC37Qiu62?}VWvEV=MYqw@RYWoPJ(eM#v!O(3d>}h`6r2z z#bu{CChUwcgc%Q=%9wlj_PsOh7943{;4L%F>ecUw2{%IsO*%>iJSxRj7=V+Ic~jbL zxzK4p5zi~kDqv-2BW~95Kr$Gs&k(=E6}+FZMCtQOT6E$yd@v&7p+xpPM1}!7)K?Te zj#fDl#%Zy?t2Dc`92d8|Akb7m>%;Hau^X4BHkQQXuwk5R7tI(db!M}Ni~MH z3#C;AD!yO=O=3JH%M^=`AfR7G*!U7YuEU|>W`p0j;<@IV;M!rS(YrM6J7mo?!wxTa zdZG?P+3b_YwT_;z3k<47MGi)C@lcUXRw?LKA@YpR(bE|Kbo4$A*JaW+=Q!n>*?Q%) zat?U~jSZc0S`G{iHH_)=JS+F*<5G16 zR(GQow_{UQ-A5p~Z(GKe#%?WL;WPJ`YSrHG__%nV zfy(38h+9B27YDzta!^B-@qcDb;AX^PgTpe95MTY>PmK}K-cX}TUPA+~#n>rf;p??7 zOe}4p83zTvaEr}3;7g1YijRuxRe@QfN>)R{56h85ZB8ZIaNt1hddkA5VL^3eJiopC zekJ(VBVU=En>)XhyO6>_UxyJyZ^juzkAgs63Rsp}5f_9E9W;cCZ#SMwSnprrnj&TX zk#FI<^})Cv&L|!ZLKxxC#;Y6(NQ8@0Qx#b#j(nh~Qq2B&lX;{P*)D=`u&Z@AV`GWh3I9|o55e`EqA}1d>!VL@&i2!m zDB&TaoKmY^F|vo(DjVGB`k9rKs34jKTnU(q#+*t?(eWidxGlqt>)Xe~-0K7DV>fMe z8!wynBzU}+i3jOUm-qqm5Ito*-F98^VEYL#2W*%U@{?YHsu+ z9&!3GnI|$?7US}+LcGNhj*NkkZ{Tb2MU^5REGTwy{a4-!*CBKf_m6VE5|axjmwx;Z z>+Z-RwoEbreg0@(-U@{_bW1q>XO4NTJ(U7(d1?)ho9XL&zg)mM9&+?ge|w1BcRE|? z+u=ncSS4vNV(&7zV2h1xC$oAj9j&{?z{d(QZlTE3!Xg<(h-*5!fgaANyFP=dIVBaD zIby4B3724FjI_x@o8v8&iKegV(YQ4A6Ls~SSSkVhP|&oS+X9doS3dg_^WN!;7SXUe z?_|bE=e16YS>Eq^QQQH*<96P=x_Tsax*YK(zp0fJ23EfIvnEmKxJa7gRk6o3$pKY1 z8;p=*jydNvbGt=)eTUheKotrqN$?fovaFDH;f#J8mM^9MkyeiU#3zP*Jp)!q&;79w zXDa0>O=s-HAsF}qb{A}bmVJ&NK|^3?KYW-cuZBUW$=b60l?9s`o0>|;N#z*u0H+Xt zsw&ImdOK0qr^?ANbfv0Wfa>)G3FKO(JRm^)Pd-KG4N0&H775b_7{ipVB$AOX=q1q+ zlCCw^z{ww4WC$m3{d9gPWjS(ODN;1E)1v5;jPq7+JUW&E{!yT5^Rn=c8(a+Bsqn^J zpQpAt`sf42Jc+!>Rv{Z`PO!@ZdGRRQWFN~WgVkVdY#_2m z#~!*%^(Qph-qDGV9OI?iOH1K<1m{pIJ92)UpmC0kaYW^6BYHfgu_D+`MXw9xomeh( zGxwLib`+=^tv`qL3FvB~_(6m5R4_jT@}x^5TND>}n<9goJu|*p;gaGqL}o;Tu2f1< z2~2~*f|iKpf#!hDUOAG=6ERO&>drN(>%P8fK!)A8^#|M}t(gYB^R#RQQ*yBvnM8=n zEWj@{T4E278H;|3Yv=FZ{|QHrP7fgtHotnbKv_N6T*$3onVQ1hK1Qq+(BrH~q`XOv z1t}CSD2O2$K+$8Pd1tXDWWDSpHY%LaLFFRaJla~c;{C>YSw85WJ5?^Ie}FHyL$bhX z_=O1izHD2_K%88u7O);YmuT9)bW`HNDlU$*RQY=t+|jp-NBDQ095fjNxzD{fgsYR+ zaySJ%LdtxLGVP3Mu7%h7> zywR1OFGT9(ZOCY035jZ?8I);Bo%%F+#sB(a_eGF2{Y;pd_P(R{LD6G(i>j%{|nSDwss9Et*efN9+xUZAxL#EgF9$`>9oEN0~$C1KH3<2zScbsp#HNccv=B z1IJm$)Hr((i3VczAkJ=3``vu#%Pidbhk`Yvn`QN7Tw*^(cP`!$8UV~i4ar0Ycti;k z&ll8KXYX7+F#042A7dab`+hT?>QfU|euuXb#BM2jqTwNiB`>ra-1qD;O)BO5sJogC*rb6WJK0*fI#z zY(3#x7D(6ETJmnC;)YRu;O&D4yHbTV4PO;~^o3xWuRIy+9_+JV#Jc9yVsZk7%12n{ zm95I1G1%Y|0*`C;g|Cc65z*fD?~*#S!CeMvx|E1mKA08K{hi)Y6p+aP&p)|{Q*Qc< zm%mUNsp+DxX;rMqDo0?ddIPYeW3Inh@O{Fe2tLcKobT)ByZ0A6&nUi0FssGZLU?YL z{5oY5{DAY3#bA+RS-bb_kx_zTKg#&D`5PRQQuk8>m7Vvh9FC!g$f*t1n9G*;kfVNqo?yTyb!yBdJ!m<-`n}q&NQnd|wWp+3U^40VFaa(_ zcSs04A{I0sSKq*U40st z_tU!S)0%XK()U#3w<1X#Jmqsbl-zZ%c|({FWHWUkU;hi1Te3#$4gLn`%T3@CBe(+> zT>ZsvZuJ3$1Gw8}kr*Df{3`PXGD3J@8XPwRUcF%;!66(TSLqdDj_U*RrKAh|M9_oV zNlCsuSAiL9FXc&k5NN&g)PdNReIP;*Ecy_T-*`Ezx9qgS<0UTv7{_%B3|}bamrd66 zz0#~i1ibO+^FV73M=Y#?>{J}8&3=^m#b^DN^%d`@>rnMsMyP`m4NmD{ZlN>XjtBv! z(YH^Io-lFf`@gGTP;EHwJF(^pU}TX%B!JJ<2}lrLFpsEQw< z^v8K89~n-exd#c+&7GF@1zGB^4q;U{MnVh>(jKA%?*(rUWi7 zCFS*vK8UMSMj}Jb+nMXb#@@+mLP_w2HPnW@2XNIU`I})cbu^VDm{3 zwlG)<-ki}*p9&D^9C8+Et)0wguxxRdsYNqH5Bsf=Vd1otx_+*AVggbMLAG~XQu&}- zxAG#}QNHVYFH-a8dQ+)`=w@5~9_RS*+J~mDO(18|yi!(l;dIq=7S8eFs=8vOr||h@ zpHKCtbqexk?jk|naRbRp#auwAd&VNO4j(%1&B?pK-Vs?I!v^MUj>OteyKln(ox$~f z3q;xbo0}E>Tk;G0cl_mOV(rAp@K2wUC?gNb3>R95;<0nr`~#|>bjx`GU!>bV#od%7 zGYsXWe@(-ltXAk0g5*vqt<}%(9q;Js$fZNzqnpQ(fdK;kp%!wuU+iL_e2-}G5@EUO zi1bFvvQU-*T~%FVjwzzpYsiq|S*0_bYjGT@iL%0kfH}dVFu`H&r7gXeCEuiS%W3}` z>41rAFv}bvH^>`QLI4(W(lym_Yi7UQe_fG4lWoowAZfTslQU6}9357y>sU zid~;~?b+lVO4oT#a)Q>mK8H&lL|!sf|L7O-%oJjFhsMqwc3#KF!^`U>i3-#ogf@+lhfRYy8k#cH8 zC)Eix{jj8f8YVYl86TpCB9uvHd1xszdx=A-%1g1Yq9aanT9b4A(-|LHT_LTPw~E?O zf%`}{1?h0JEF+v|Iox6;O%Azt`7=t!h-86-q6=ks2C|1_h+1Xy8G4V zGnL-OT%q*_%-OTnUD+HIbEz>)E> z3tx$5%++yJ>w`O=1=IHIc3bsp?oAP!llin(gQP)=6|Cy$L z%CbGFQbxh^zGR)U7FwK_9TZ>U_kP(P?c_bqDLv)C&7RuM)b!W+UK$*Cw`s@SmgQSr zE82uxm-#bRFxW82G4MCAA7FmK_<^C~F4Mg0V)rB2Qn!i!M3Z9JlgD^Im-~Z90{gya zTn#QAVv12M8G?&k5sYo#2a0bo+031>>zLCd^PO*nC~~fw|Zv1 zd8XP()slBr% z?N?D+;s5#b$?wnk7p|YwB-UT`Iq>GWeJ1?1mG6CiUO)P48(($p`!g~(-u~LgUt4SM z?e?SW^=z46zwXVvzoGlaj|(5!td@k0|Ne!%}_^ZZMXHacDT?tHyw`9~2M?Uv-$f;9qt zqK7s*S%h&M=X(3{`=`1;>+bGOZawmvGx1wNz!TvY*7s8sBP5sTN!y2K@p`TGe0i07 zuiD(`^~JMG{Pv#9yfm>&HuKWWuU3L4Yp+KFsa@-?&-}Ve)c^X6o~pZATO;nCFz5L* zEw40oZcWuEe$-Mz_>NX_1aLX&0^kZsVPJU~?F>8`0l3&DKBTfBwKx{Mb3DY`@34Wu zUau#)Q+K2`3S`}4-O%dwg=w8}rtY7~wlAOO=vWAaCrsKR=(KcY#!VNmXMfY?e0=`< zc*QPLt4QaLQ#a@IZc_9<;1#a1`%GkOYSr;&lRwrxS5#x!YM8F=Qh&a3inf7L+PUVX zUN4&jJ=Q0l+&dvZiStjI#h#~^B3ZgMuSw+?)wKkLNKIa@Tbq~5{Nlu7(1Bsvhs9#PFT>lJKenm~hA^J=VW|;oOQ?D5bdXzJ z+xg0yE$1dKS*J6#r7wQ<&j%_;Je19>UTe8&Sij&EDqOA@XYaPUy3Jle=&`-fo2kEz za}qxO$~WBC`CVP}WQCrX)VleLC%^M=+|qHu&Rv{6GsUk;s6=c||CXB%`FrKVwx=z> zvZ=jc)${AGbv%DR;#;^+luP5BX?|Lc_T~l$_u{{k-!0iKvS(+$dOT`G1YF3eVgN?O zPGFHO1B?jp+FnTQg}eX>T$62`?3>qYAkex#>FhoUrlp>ulYGr?E{i#E;KSla@;9At z%~{(mw=#UiR1d~0I=d2o&a-`Ad+COK{QcX1m%q6wx%TyzQwm&82`ju}OIMvtSnw;8 z_xIgzEqfK}4{x1Yc&1-tx}$eWoMm}xchC+8>5zX*u7z=Zx@2~z<5R53iSWc3Mb>8< zD%DQwv;CjE;`J`=j|)yaE?UHX@DFphxyq+Md=Yv%%~K8@;i*yDkUX`~Hq6jqpG4>H z=7(~IYs69)c=rc4t)BPQ-TT|*`A0YY)5=dXX|9M9T6C?eDDaE$gx#i#J*F)QXx6## z>ubMAdG->ErI~v=&0TlYc^*;`+%A49UB2KucYrq|lL&YPH1@M?fWe0Z&`-KS){X7N z7KGLeV0^%J!_IF(*N%R`2txZ0U>gMUxDj;y=qEQI^xp^ONsMzG(6yuQ*G6d9;DTv~ z@7_k%jBPm4B%J^N literal 0 HcmV?d00001 diff --git a/projects/ecommerce/hldInstructions.md b/projects/ecommerce/hldInstructions.md new file mode 100644 index 00000000..82909455 --- /dev/null +++ b/projects/ecommerce/hldInstructions.md @@ -0,0 +1,16 @@ +# Project Name +Nambi Ecommerce Website + +# Stakehodlers +Solution Design: Nambi +Development: Nambi +QA: Nambi + +# Non Functional Requirements +## Performance +- API should take less than a sec to respond +## Security +- API should be behind https +- API request should be authenticated and authorized +## Scalability +- API should handle 1 million request per second \ No newline at end of file diff --git a/templates/hld.md b/templates/hld.md new file mode 100644 index 00000000..bd6a09b9 --- /dev/null +++ b/templates/hld.md @@ -0,0 +1,162 @@ +# {project name} + +## 1. Project Details +- **Project Name**: {Project Name from BRD} +- **Document Version**: 1.0 + +## 2. Introduction + +### 2.1 Summary +- {Short summary of the purpose derived from BRD.} + +### 2.2 Scope +- {Short summary of the scope derived from BRD & Instructions.} + +### 2.3 Project Stakeholders +- {List of stakeholders from BRD, such as developers, QA, technical architects, etc.} + + +## 3. Business Requirements Summary +- {Provide a summary of the high-level business requirements from BRD.} + - Example: "The system must allow users to register, log in, and reset passwords." + + +## 4. Functional Requirements +- {Extract functional requirements from BRD and populate the below grid.} + +|Requirement Id| Requirement | +|--------------|-------------| +|{Unique id for this requirement. ex: REQ_1}| {Actual requirment from BRD}| + +### 4.1 Use Cases +- {Extract Use cases should be based on above identified functional requirements and populate below grid} + +| Use Case | Description | Acceptance Criteria | Constraints | +|---------------------|---------------------------------------------------|-----------------------------------------------|-------------------------------------------------| +| {Use Case Name} | {Description of the Use Case} | {Acceptance criteria for the use case} | {Constraints applicable to the use case} | + +### 4.2 Scenarios +- {List all scenarios} + +## 5. System Overview + +### 5.1 System Context +- {Description of the system's high-level context a nd its place in the broader ecosystem.} + +### 5.2 System Goals and Objectives +- {System Goals and Objectives} +- **Primary Goals**: + - Goal 1: +Description of goal. + - Goal 2: Description of goal. +- **Performance Objectives**: + - {Expected system performance objectives.} + + +## 6. Architecture Overview + +### 6.1 Architectural Style +- {Description of the chosen architectural approach (e.g., Microservices, Monolithic, etc.)} + +### 6.2 Components Involved +- {List of internal systems involved in this design.} + +### 6.3 High-Level Component Diagram +- {As a software architect, create a mermaid component diagram based on provided Data Flow Diagram and aling that to the requirement} + +### 6.4 Component Descriptions + +#### 6.4.1 {Comp onent Name} +- **Responsibility**: {Responsibilities of the component} +- **Interfaces**: {Interfaces provided or used by the component.} +- **Dependencies**: {Dependencies on other components or systems.} + + +## 7. System Interactions + +### 7.1 External System Interactions +- {Description of interactions with ex +ternal systems or services.} + +### 7.2 Communication Protocols +- {Details of communication mechanisms, protocols, and data exchange formats.} + + +## 8. Performance Considerations + +### 8.1 Performance Requirements +- {Expected response times, sca +lability requirements, and concurrent user handling.} + +### 8.2 Performance Constraints +- {List known performance limitations or bottlenecks.} + + +## 9. Security Architecture + +### 9.1 Security Requirements +- {Authentication mechanisms, authorization strategies, and dat +a encryption approaches from BRD & Instructions.} + +### 9.2 Threat Mitigation +- {Strategies for addressing potential security vulnerabilities.} + + +## 10. Deployment Architecture + +### 10.1 Deployment Topology +- {Describe deployment environments (Development, Stagin +g, Production).} + +### 10.2 Infrastructure Requirements +- {Hardware specifications, network configuration, and cloud/on-premise considerations.} + + +## 11. Technology Stack + +### 11.1 Programming Languages +- {List primary programming l +anguages.} + +### 11.2 Frameworks and Libraries +- {Enumerate key frameworks and libraries.} + +### 11.3 Databases +- {Specify database technologies.} + + +## 12. Constraints and Assumptions + +### 12. +1 Technical Constraints +- {List technical limitations or restrictions.} + +### 12.2 Business Constraints +- {Describe business-related constraints.} + + +## 13. Open Issues and Risks + +### 13. +1 Known Risks +- {Identify potential risks and mitigation strategies.} + +### 13.2 Unresolved Design Decisions +- {List any pe n +ding design decisions.} + + +## 14. Appendices + + ### 14.1 Glossary +- {Define technical te----rms and acronyms.} + +### 1---4.2 References +- {Any links fr om BRD} + + +## 15. Revision History + +| Version | Date | Description | Author | +|---------|------------|---------------|-------------| +| {1.0} | {Date} | Initial Draft | {Author} | \ No newline at end of file