From 4f1101a04f1619a8bb0e59725cf99d46a4fe4a55 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Wed, 14 Sep 2022 22:15:59 +0800 Subject: [PATCH 001/208] Modify information inside the document. --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 7601dbaad0d..85e2b979a7c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,7 +8,7 @@ title: AddressBook Level-3 ![Ui](images/Ui.png) -**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). +**TAB (Teacher's Address Book) is a desktop application for managing your students' contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). * If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start). * If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start. From d1c4b396b00d6a7ed5a3b18d35012db725f36ba1 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Tue, 27 Sep 2022 18:41:05 +0800 Subject: [PATCH 002/208] Update README.md --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 13f5c77403f..8d2228ef0fe 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) +[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2223S1-CS2103T-T17-1/tp/actions) ![Ui](docs/images/Ui.png) -* This is **a sample project for Software Engineering (SE) students**.
+* Teacher's Address Book (TAB) is **a desktop app made for professors or teaching assistants for managing contacts**.
Example usages: - * as a starting point of a course project (as opposed to writing everything from scratch) - * as a case study -* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details. + * as a contact book, storing contacts + * as a storage to store other relevant details of contacts (e.g a student's exam results) +* The project simulates an ongoing software project for a desktop application (called _TAB_) used for managing contact details. * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big. * It comes with a **reasonable level of user and developer documentation**. -* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...). -* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**. +* It is named `Teacher's Address Book` (`TAB` for short) because it was created to facilitate teaching assistants' and professors' when managing their students, and even managing teaching assistants (for professors) too. +* For the detailed documentation of this project, see **[TAB's Website](https://github.com/AY2223S1-CS2103T-T17-1/tp)**. * This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info. From 71e89b4db7512d4b23986cebf3c11bad8a8de6e0 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Tue, 27 Sep 2022 19:02:45 +0800 Subject: [PATCH 003/208] Edit minor words --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8d2228ef0fe..0175e5fd530 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ ![Ui](docs/images/Ui.png) -* Teacher's Address Book (TAB) is **a desktop app made for professors or teaching assistants for managing contacts**.
+* Teacher's Assistance Book (TAB) is **a desktop app made for professors or teaching assistants for managing contacts**.
Example usages: * as a contact book, storing contacts * as a storage to store other relevant details of contacts (e.g a student's exam results) * The project simulates an ongoing software project for a desktop application (called _TAB_) used for managing contact details. * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big. * It comes with a **reasonable level of user and developer documentation**. -* It is named `Teacher's Address Book` (`TAB` for short) because it was created to facilitate teaching assistants' and professors' when managing their students, and even managing teaching assistants (for professors) too. +* It is named `Teacher's Assistance Book` (`TAB` for short) because it was created to facilitate teaching assistants' and professors' when managing their students, and even managing teaching assistants (for professors) too. * For the detailed documentation of this project, see **[TAB's Website](https://github.com/AY2223S1-CS2103T-T17-1/tp)**. * This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info. From 65dd66644721c60250c98d3a52cb06cd206fda27 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Tue, 27 Sep 2022 19:42:58 +0800 Subject: [PATCH 004/208] Add ppp (kjunwei.md) --- docs/team/kjunwei.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docs/team/kjunwei.md diff --git a/docs/team/kjunwei.md b/docs/team/kjunwei.md new file mode 100644 index 00000000000..545c3474b94 --- /dev/null +++ b/docs/team/kjunwei.md @@ -0,0 +1,27 @@ +--- +layout: TAB +title: Khor Jun Wei's Project Portfolio Page +--- + +### Project: TAB + +TAB (Teacher’s Address Book) is a desktop application for managing your students’ contact details. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). + +Given below are my contributions to the project. + +* **New Feature**: + +* **Code contributed**: [RepoSense link]() + +* **Project management**: + +* **Enhancements to existing features**: + +* **Documentation**: + * User Guide: + + * Developer Guide: + +* **Community**: + +* **Tools**: From 11db440ec606da6c7d20e1a62339b5c72cd7b5f6 Mon Sep 17 00:00:00 2001 From: yellow-294 <77526609+yellow-294@users.noreply.github.com> Date: Tue, 27 Sep 2022 20:22:46 +0800 Subject: [PATCH 005/208] Add Skeletal PPP --- docs/team/yellow-294.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docs/team/yellow-294.md diff --git a/docs/team/yellow-294.md b/docs/team/yellow-294.md new file mode 100644 index 00000000000..b55b2a31ddd --- /dev/null +++ b/docs/team/yellow-294.md @@ -0,0 +1,27 @@ +--- +layout: TAB +title: Wee Xin Yang, Markus' Project Portfolio Page +--- + +### Project: TAB + +TAB (Teacher’s Address Book) is a desktop application for managing your students’ contact details. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). + +Given below are my contributions to the project. + +* **New Feature**: + +* **Code contributed**: [RepoSense link]() + +* **Project management**: + +* **Enhancements to existing features**: + +* **Documentation**: + * User Guide: + + * Developer Guide: + +* **Community**: + +* **Tools**: \ No newline at end of file From 17fabea2281130d7c42d0dbbeb9000bd993bed54 Mon Sep 17 00:00:00 2001 From: vantemoon Date: Tue, 27 Sep 2022 20:43:28 +0800 Subject: [PATCH 006/208] Add skeletal ppp --- docs/team/vantemoon.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 docs/team/vantemoon.md diff --git a/docs/team/vantemoon.md b/docs/team/vantemoon.md new file mode 100644 index 00000000000..f4fb5b53b4b --- /dev/null +++ b/docs/team/vantemoon.md @@ -0,0 +1,34 @@ +--- +layout: page +title: Sun Ruoxin's Project Portfolio Page +--- + +### Project: Teacher’s Address Book (TAB) + +Teacher’s Address Book (TAB) is a desktop app made for teachers for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). + +Given below are my contributions to the project. + +* **New Feature**: _{to be added soon}_ + +* **New Feature**: _{to be added soon}_ + +* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2223s1.github.io/tp-dashboard/?search=vantemoon&breakdown=true) + +* **Project management**: + * _{to be added soon}_ + +* **Enhancements to existing features**: + * _{to be added soon}_ + +* **Documentation**: + * User Guide: + * _{to be added soon}_ + * Developer Guide: + * _{to be added soon}_ + +* **Community**: + * _{to be added soon}_ + +* **Tools**: + * _{to be added soon}_ From df8e4761c3fb3667a717d85c07f18745be074f88 Mon Sep 17 00:00:00 2001 From: yellow-294 <77526609+yellow-294@users.noreply.github.com> Date: Tue, 27 Sep 2022 20:59:46 +0800 Subject: [PATCH 007/208] Update UserGuide.md --- docs/UserGuide.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3716f3ca8a4..8ca0dee9f00 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -3,8 +3,7 @@ layout: page title: User Guide --- -AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. - +Teacher’s Address Book (TAB) is a **desktop app made for teachers for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TAB can get your contact management tasks done faster than traditional GUI apps. * Table of Contents {:toc} @@ -14,9 +13,9 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo 1. Ensure you have Java `11` or above installed in your Computer. -1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). +1. Download the latest `TAB.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). -1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook. +1. Copy the file to the folder you want to use as the _home folder_ for your TAB. 1. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
![Ui](images/Ui.png) @@ -66,7 +65,7 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo ### Viewing help : `help` -Shows a message explaning how to access the help page. +Shows a message explaining how to access the help page. ![help message](images/helpMessage.png) @@ -75,17 +74,17 @@ Format: `help` ### Adding a person: `add` -Adds a person to the address book. +Adds a person to TAB. -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` +Format: `add n/NAME r/ROLE p/PHONE_NUMBER e/EMAIL c/CLASS [g/GRADE]...`
:bulb: **Tip:** A person can have any number of tags (including 0)
Examples: -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` +* `add n/John Doe r/Student p/98765432 e/johnd@example.com c/T12 g/A-` +* `add n/Betsy Crowe r/TA p/92498754 e/betsycrowe@example.com c/T11 T12 T13` ### Listing all persons : `list` @@ -95,15 +94,15 @@ Format: `list` ### Editing a person : `edit` -Edits an existing person in the address book. +Edits an existing person in TAB. -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` +Format: `edit INDEX [n/NAME] [r/ROLE] [p/PHONE] [e/EMAIL] [c/CLASS] [t/TAGS]` * Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ * At least one of the optional fields must be provided. * Existing values will be updated to the input values. * When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person’s tags by typing `t/` without +* You can remove all the person’s grade by typing `g/` without specifying any tags after it. Examples: @@ -156,14 +155,14 @@ Format: `exit` ### Saving the data -AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. +TAB data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. ### Editing the data file -AddressBook data are saved as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. +TAB data are saved as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.
:exclamation: **Caution:** -If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. +If your changes to the data file makes its format invalid, TAB will discard all data and start with an empty data file at the next run.
### Archiving data files `[coming in v2.0]` @@ -175,7 +174,7 @@ _Details coming soon ..._ ## FAQ **Q**: How do I transfer my data to another Computer?
-**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder. +**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous TAB home folder. -------------------------------------------------------------------------------------------------------------------- From 7640141236025fb16724221e537bd1e6a6e132a8 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Tue, 27 Sep 2022 22:39:25 +0800 Subject: [PATCH 008/208] add skeletal ppp --- docs/AboutUs.md | 10 ++++----- docs/team/cxyterence.md | 34 ++++++++++++++++++++++++++++++ docs/team/johndoe.md | 46 ----------------------------------------- 3 files changed, 39 insertions(+), 51 deletions(-) create mode 100644 docs/team/cxyterence.md delete mode 100644 docs/team/johndoe.md diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 1c9514e966a..eede791534c 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -15,7 +15,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[homepage](http://www.comp.nus.edu.sg/~damithch)] [[github](https://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/cxyterence.md)] * Role: Project Advisor @@ -24,7 +24,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/cxyterence.md)] * Role: Team Lead * Responsibilities: UI @@ -33,7 +33,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` -[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)] +[[github](http://github.com/johndoe)] [[portfolio](team/cxyterence.md)] * Role: Developer * Responsibilities: Data @@ -43,7 +43,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/cxyterence.md)] * Role: Developer * Responsibilities: Dev Ops + Threading @@ -53,7 +53,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/cxyterence.md)] * Role: Developer * Responsibilities: UI diff --git a/docs/team/cxyterence.md b/docs/team/cxyterence.md new file mode 100644 index 00000000000..b9e5dd514a0 --- /dev/null +++ b/docs/team/cxyterence.md @@ -0,0 +1,34 @@ +--- +layout: page +title: Terence Chong's Project Portfolio Page + --- + +### Project: TAB + +TAB (Teacher’s Address Book) is a desktop application for managing your students’ contact details. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). + +Given below are my contributions to the project. + +* **New Feature**: + * _(to be added soon)_ + +* **Code contributed**: [RepoSense link]() + +* **Project management**: + * _(to be added soon)_ + +* **Enhancements to existing features**: + * _(to be added soon)_ + +* **Documentation**: + * User Guide: + * _(to be added soon)_ + + * Developer Guide: + * _(to be added soon)_ + +* **Community**: + * _(to be added soon)_ + +* **Tools**: + * _(to be added soon)_ diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md deleted file mode 100644 index 773a07794e2..00000000000 --- a/docs/team/johndoe.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: John Doe's Project Portfolio Page ---- - -### Project: AddressBook Level 3 - -AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. - -Given below are my contributions to the project. - -* **New Feature**: Added the ability to undo/redo previous commands. - * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command. - * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them. - * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands. - * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}* - -* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys. - -* **Code contributed**: [RepoSense link]() - -* **Project management**: - * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub - -* **Enhancements to existing features**: - * Updated the GUI color scheme (Pull requests [\#33](), [\#34]()) - * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]()) - -* **Documentation**: - * User Guide: - * Added documentation for the features `delete` and `find` [\#72]() - * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]() - * Developer Guide: - * Added implementation details of the `delete` feature. - -* **Community**: - * PRs reviewed (with non-trivial review comments): [\#12](), [\#32](), [\#19](), [\#42]() - * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]()) - * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]()) - * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]()) - -* **Tools**: - * Integrated a third party library (Natty) to the project ([\#42]()) - * Integrated a new Github plugin (CircleCI) to the team repo - -* _{you can add/remove categories in the list above}_ From 8703ed5b8661c6cc4c630aa3469b9b85fdde126e Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 27 Sep 2022 23:06:02 +0800 Subject: [PATCH 009/208] add skeletal PPP --- docs/team/guowei42.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 docs/team/guowei42.md diff --git a/docs/team/guowei42.md b/docs/team/guowei42.md new file mode 100755 index 00000000000..5196adaae32 --- /dev/null +++ b/docs/team/guowei42.md @@ -0,0 +1,33 @@ +--- +layout: page +title: Guo Wei's Project Portfolio Page +--- + +### Project: AddressBook Level 3 + +AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. + +Given below are my contributions to the project. + +* **New Feature**: _{WIP}_ +* **New Feature**: _{WIP}_ +* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2223s1.github.io/tp-dashboard/?search=guowei42&breakdown=true) + +* **Project management**: + * _{WIP}_ + +* **Enhancements to existing features**: + * _{WIP}_ + +* **Documentation**: + * User Guide: + * _{WIP}_ + * Developer Guide: + * _{WIP}_ + +* **Community**: + * _{WIP}_ + +* **Tools**: + * _{WIP}_ + From ca8a1209ee0f4d477abcd4feec1207f0e8e00e7e Mon Sep 17 00:00:00 2001 From: KJunWei Date: Tue, 27 Sep 2022 23:13:36 +0800 Subject: [PATCH 010/208] Edit kjunwei.md --- docs/team/kjunwei.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/team/kjunwei.md b/docs/team/kjunwei.md index 545c3474b94..c257f00d801 100644 --- a/docs/team/kjunwei.md +++ b/docs/team/kjunwei.md @@ -1,5 +1,5 @@ --- -layout: TAB +layout: page title: Khor Jun Wei's Project Portfolio Page --- From 78c558c9be1e866d11011f42ee937948ede90eda Mon Sep 17 00:00:00 2001 From: yellow-294 <77526609+yellow-294@users.noreply.github.com> Date: Tue, 27 Sep 2022 23:34:27 +0800 Subject: [PATCH 011/208] Add skeletal ppp --- docs/team/yellow-294.md | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/docs/team/yellow-294.md b/docs/team/yellow-294.md index b55b2a31ddd..8fce20a37ad 100644 --- a/docs/team/yellow-294.md +++ b/docs/team/yellow-294.md @@ -1,27 +1,32 @@ --- -layout: TAB -title: Wee Xin Yang, Markus' Project Portfolio Page +layout: page +title: Wee Xin Yang Markus' Project Portfolio Page --- -### Project: TAB +### Project: Teacher's Address Book (TAB) -TAB (Teacher’s Address Book) is a desktop application for managing your students’ contact details. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). +Teacher’s Address Book (TAB) is a **desktop app made for teachers for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). Given below are my contributions to the project. -* **New Feature**: - -* **Code contributed**: [RepoSense link]() +* **New Feature**: _{to be added soon...}_ +* **New Feature**: _{to be added soon...}_ +* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2223s1.github.io/tp-dashboard/?search=guowei42&breakdown=true) * **Project management**: + * _{to be added soon...}_ * **Enhancements to existing features**: + * _{to be added soon...}_ * **Documentation**: - * User Guide: - - * Developer Guide: - + * User Guide: + * _{to be added soon...}_ + * Developer Guide: + * _{to be added soon...}_ + * **Community**: - -* **Tools**: \ No newline at end of file + * _{to be added soon...}_ + +* **Tools**: + * _{to be added soon...}_ \ No newline at end of file From 971a5a8c55b57e5060e0c00abd15bd90023d99c7 Mon Sep 17 00:00:00 2001 From: vantemoon Date: Tue, 27 Sep 2022 23:42:32 +0800 Subject: [PATCH 012/208] Add UI mockup --- docs/images/Ui.png | Bin 14607 -> 103472 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/Ui.png b/docs/images/Ui.png index 5bd77847aa2429edac366ebe3e00650b6dd909d8..e428ea4e82f3a503ce57e4ab0ce03ebda2106a35 100644 GIT binary patch literal 103472 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

teQLEVEPE4CK+j&$1ExUej23E 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 literal 14607 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 RAXge19gVx{rMDi1{6Bg4z)AoB From 149d84e67eda7f2aea8a350874749f593311bc1f Mon Sep 17 00:00:00 2001 From: yellow-294 <77526609+yellow-294@users.noreply.github.com> Date: Tue, 27 Sep 2022 23:42:48 +0800 Subject: [PATCH 013/208] Add Skeletal PPP --- docs/team/yellow-294.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) mode change 100644 => 100755 docs/team/yellow-294.md diff --git a/docs/team/yellow-294.md b/docs/team/yellow-294.md old mode 100644 new mode 100755 index 8fce20a37ad..e8440fa68cb --- a/docs/team/yellow-294.md +++ b/docs/team/yellow-294.md @@ -1,6 +1,6 @@ --- layout: page -title: Wee Xin Yang Markus' Project Portfolio Page +title: Wee Xin Yang, Markus' Project Portfolio Page --- ### Project: Teacher's Address Book (TAB) @@ -14,19 +14,19 @@ Given below are my contributions to the project. * **Code contributed**: [RepoSense link](https://nus-cs2103-ay2223s1.github.io/tp-dashboard/?search=guowei42&breakdown=true) * **Project management**: - * _{to be added soon...}_ + * _{to be added soon...}_ * **Enhancements to existing features**: - * _{to be added soon...}_ + * _{to be added soon...}_ * **Documentation**: - * User Guide: - * _{to be added soon...}_ - * Developer Guide: - * _{to be added soon...}_ - + * User Guide: + * _{to be added soon...}_ + * Developer Guide: + * _{to be added soon...}_ + * **Community**: - * _{to be added soon...}_ - + * _{to be added soon...}_ + * **Tools**: - * _{to be added soon...}_ \ No newline at end of file + * _{to be added soon...}_ \ No newline at end of file From 0cc0820b17db100e2757f570c1634c934fb523c8 Mon Sep 17 00:00:00 2001 From: yellow-294 <77526609+yellow-294@users.noreply.github.com> Date: Tue, 27 Sep 2022 23:46:16 +0800 Subject: [PATCH 014/208] Add Skeletal PPP --- docs/team/yellow-294.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/team/yellow-294.md b/docs/team/yellow-294.md index e8440fa68cb..b5f0bd20ddf 100755 --- a/docs/team/yellow-294.md +++ b/docs/team/yellow-294.md @@ -29,4 +29,4 @@ Given below are my contributions to the project. * _{to be added soon...}_ * **Tools**: - * _{to be added soon...}_ \ No newline at end of file + * _{to be added soon...}_ From 1980c804f63ac8f89532ab54d48886e1a1888c11 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Wed, 28 Sep 2022 14:17:22 +0800 Subject: [PATCH 015/208] Update AboutUs.md --- docs/AboutUs.md | 57 +++++++++++++++++++------------------ docs/images/cxyterence.png | Bin 0 -> 13494 bytes docs/images/guowei42.png | Bin 0 -> 258118 bytes docs/images/kjunwei.png | Bin 0 -> 16013 bytes docs/images/vantemoon.png | Bin 0 -> 118509 bytes docs/images/yellow-294.png | Bin 0 -> 119021 bytes 6 files changed, 29 insertions(+), 28 deletions(-) create mode 100644 docs/images/cxyterence.png create mode 100644 docs/images/guowei42.png create mode 100644 docs/images/kjunwei.png create mode 100644 docs/images/vantemoon.png create mode 100644 docs/images/yellow-294.png diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 1c9514e966a..7798fac2f1a 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -5,55 +5,56 @@ title: About Us We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg). -You can reach us at the email `seer[at]comp.nus.edu.sg` +You can reach us at the email `seer@comp.nus.edu.sg` -## Project team +## Project Team -### John Doe +### Sun Ruoxin - + -[[homepage](http://www.comp.nus.edu.sg/~damithch)] -[[github](https://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[github](https://github.com/vantemoon)] +[[portfolio](team/vantemoon.md)] -* Role: Project Advisor +* Role: Developer +* Responsibilities: Scheduling and Tracking -### Jane Doe +### Khor Jun Wei - + -[[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[github](http://github.com/kjunwei)] +[[portfolio](team/kjunwei.md)] -* Role: Team Lead -* Responsibilities: UI +* Role: Developer +* Responsibilities: Testing -### Johnny Doe +### Chong Xi Yuen, Terence - + -[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)] +[[github](http://github.com/cxyterence)] +[[portfolio](team/cxyterence.md)] * Role: Developer -* Responsibilities: Data +* Responsibilities: Deliverables and Deadlines -### Jean Doe +### Guo Wei - + -[[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[github](http://github.com/guowei42)] +[[portfolio](team/guowei42.md)] * Role: Developer -* Responsibilities: Dev Ops + Threading +* Responsibilities: Integration -### James Doe +### Wee Xin Yang, Markus - + -[[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[github](http://github.com/yellow-294)] +[[portfolio](team/yellow-294.md)] * Role: Developer -* Responsibilities: UI +* Responsibilities: Code Quality diff --git a/docs/images/cxyterence.png b/docs/images/cxyterence.png new file mode 100644 index 0000000000000000000000000000000000000000..3338248acb0eeccbec99c151ad69afb9df865fcc GIT binary patch literal 13494 zcmeIYby!qi_da|m=`KNF=#~cQp^@%Vx)G36N*JU=q(eZEZfQh75Cmyy1Pd5?q=u3h zX5QoH`#jJ0eXsYg-`~Gy&vn6`bM{$#-)pb6_Py2_%o1i5pwQOP(g3iq0N_6O0WfQT zrFyW3D*))}0sH^}5CGU%Q~(ax!va4*ya#~$Pagod!T$h&^9JjG@4mtQ&)w5EIREZr zfztj;CX96t4D^*17JeKc&aSe?Y8wA~7W}5b z{;x#_1qBHOi3|Doy9tZR$jAtbhzW~{-33S74G4K0=n#DOaRA4^C8)UsIQe_{2735B zX8kMC!O`bQpaMHM^FK>+cKVN0-zWZF|HyQ95_a)&@pgF}7y!Z-75*#A*-19wiQ^*| zr@()$OvS-X80-rFe{Kl>o#FpA)FM%-rcK@RfMb`he|7zgB8u+gU{;PriYT&;b z_`gpB|I4Uc9)mP02;@ruW*?9?boUAL32^uEWfd0^0i;#5^l<-@Izd}SZG=P&jJ$mO(lWC5wX`iPtsc0!dprsX4hfBmPe@Ek%gN1qmH(!q zvZ}hKwyC}2UFZ9*kAp*>het-orso$Hzb-9*Tiw{)+TPhkoSdGW|GBul`il}Ix&H$a z{QD2izaVh&{ud=BfQ=2}#KFeF!^XqL#f`@Tb%aAf#fHl&s!WY1!Y*b+qjXE0!$F1C z&sgHQA!mAtYBL?aqom2v43~Ys+L}L-KFUeTms{O5gQs*BRNn1>aNGldXlQ~^%*_9S zadvV2izguP$BBNts{|8rQR`&luD=YsOxR%zof8iVW^lyZ7|Aq)({};&P|DgO1 zr~-r_ApBc|1o#9*M1;hobmXKYB&2s}XesDenL#?s41sX+N(gdti}FAqcNOl6O5T%| zmE{nCszIeyC1hmpVL%~RL_|cSB&3Ywdj6gD?0DoyTvCDh1p>n;WZ(#m?_6h*NP+3`x~K8#hxE z3RHF+VH-?hF=r#1(+K@CewW5uCTpNHlQ^2kTU+0Z%P*$>RfT(=u5MzoPUHupd=bAO zrWsXR0}01Y2(fG^~EVM_gJMe_m|plW;#l0#JI+|1xDxJ>qgcWJ&VsGtvky| z_cpS(Ew6A-B>3sLBWnlkoa_#ec#_@bpzGzHIHO@+qMx^$*dWgSqGX^k?}^#Rg>BER*Ab-QMA{D|G@R7T(rb)g#m&_Q@>-RBafp}4i!RYf zRK;d4ShcQMHd~UjP1blixmlh8)a=*T353el-u10y=Mbf&bw-$0dOQ%Rbaar1cz^7C zgiZa#^=y~GJ_wsclR&oh=~K33s=OfqL|3S)WZ=xu69of?<$#Wa*b4E|!g}|aSaG5T z870Y8ISimUFVR->yMq)L1K=2Tlj=<-QnZK4)^SC>;q{d^EH9B<@fkWt?eTK5X_($| zU#Pm@_PHi+fhAzqnmgHS>G(!yI<1C;GfgymF|J|Q5-z-<9y3r%n|<$8J=C_PXr*YT zgfUQEK%;!Z(JYhwm2UqNx)x0aNAbWW7p-zOtv`6>BT5-Fz1%}%soJlY*iXd@m^t-0}LPx?EeW}rj z+L@Rd{iF(Moh-py&$jhcI~!EfGMK7gW+B+3&bxS`xrxhEUNaKwC)CW;vOVaS9j6u} zQEBIPBlec~RrIT>)1@bn)FfJfrMflqtiMm{ZFE9 zTrPUTGH-r=N6yrql~%TMIkBtWyAy*QJ29JWqdT%gvaNeKIhkkE()paYXZy|yqCLkt z?Zijtht~8Dlet%K)1;WpN1gIC4EVM4)OZbV&*zIRuiEP1&UK9Dxo~M1XOsz(o5Uos z-J|L1w!K$d?`OjCV(B$R^k-+yHnYS-jmW2?70#1Flr9P~X4=(SV+lsjm41O{qnyFJm=nCx-vh}O9;$a3ESh0}@XDN56I@oyC^9B-HU zGTgTbm0yquZ8!^0`tc=^X1~t6q|~uZ*K}vTf%@U!@xCimyLZj>TXlJGXpCR}T#&Bn zsKEzg7Xf%eVBuk-J+#Znqwx>vpz}}2`JoV8VgVGstnE;Q;o+b zwp_(NoWvmvfe_ZaCA%sK`q?fV*S?WC|*b)&I8Z7+6F-(KHl zZu5VRLOk(6`*w-U@0REoe!Xm(o~uCz#xXONxqi`4<=rylsrANXXBa%5kRx6Y>uhD{JP5WPO|sj6<2L-@4KxE@SuLH!uJB-yggNx8mFMU@#ofEAg)MO$wk%j=M`S14D# znVD(0tJ>sOXVc}geZaY?)}SSbjJUr`S(;*GHb~6(h}6R+j<_R}Di*Km^5@ut`W&l$ z3tC3rotjmJnxY>`qC~e71v#r)l7$&8byFNmtgYSj+U;~u z8(V2(R%=WyE~20AX!9HvGfRgR0BQ9wSyn~og|o5$nuL- zc49dy@M$QNm5y-o;g#RVrqLOauQ8@->n2~p05U;nVIErP63St1dQA;gr8nu3$lxx? z_ouvJ!41PF86;%|FW6fJ`d$fAoP@-=%b7Hh`)aD#&gPG!_EB6^538zg1~&1ulEj{~ z6XicriP-#O%Ievn9s~VyV7QIz7c=zZoK?*5GhUqHMxlMn7r!^?pyX`n@y(^40qa(0 zV@EzKLJB=|a^DSFDF}kNd{$}7aq&fwXvMsku`S_UoCBk!B#z6o5-~zn0{rGZC08kq zK%7pG7Y)~?h%~C=Gm>ap$a}jk<}Sa~8_i%A1D;HNvPPcFy1I9oqA-L`$#m2BNKcXa z#&Jj+VxRhj-NbLy&*7$~d1hugBlt%@9?R3z%UW4km?*TVQgvt*a(5N!a2M;+?CXKq z1_JSSa0@I?M{j~F(aGW}>0x!LXJ0DrU1Rm7mNTcOC;lTO&t02;X~*4TXiYj7r|3!2 zZmym_-ZJ6mIY?m+qv?_(e*2)&`*P-J&vaE&*29@nGo42Skvn_3 z7dH2S8JgGlA@9&EFkt$Q z{0hbZ)w3#bWHmZ*k5z8A7EKkxcv2>p-r0VEr5r*L%3>L@*1YAqZ51ZoiF@=wSD$vhP6CavRpD0yXA1LXe8wbPdcHdRJv_wWNY8^3F0R~45Al0GGW zLtSmKP}z1jT=ZIoiDNe^vj%$qY0>X}NDJN1FWUj{e^zuH1hM}1$n@UrYH#yjap_p` zoi0P<%x&)uk`~+YazR^Q|4axb5Kycu${hO{PM&2k z8NF&oi96ZM24P z^sd&mZCt92?d#v@@&)wF=`)SqA_Fs)yJiZy*f#WRMoa_|KO=mmuV6LJsnvZRUk^N1 zG}VuuXkh@OM`MQW>4R7DPSYWogBUJ{N7IS--Pc^457yjT(9sK@QmhkmpX08SL+VJA3658;(P|ozvMfkkH z`nTTb%XNc92iy2Vr;StLZybl5oZOvbY?(dz|^$IuYgt_WMMX&5xM>gNKY z7Wylx_Z2>T_m5_O@!2g~weX*IO^~vA>?;kPL&zB(4I=g3;n8)Q&iU}_4s>1(b`J?f zC^c^NLJ&r%g>cw>pU(-XL*tviN%AvZw0l$&!CAO~!8*Ehe*Ox7mduWhrro@+?y@55 zvikh3+r~xJk&E$Z`qfX0X1nAaTP}DzufWzBo1Mr`+Z-Iif}Tc&xnIrWPp(tNX->@) zwO;($Y>ZETqSg3oerCu2QkE3|N6q1juCfbe!s%=NQx{^moMZORPE2b1nZVw&Peay< z20779Cg9(D|+-^2lo(;!JhHod~Sh{Maqy^5V|oP4}zl z)U~>*eg0yE$we1cJ}TMRZ2m2w!J7cW6z&mTBERG71jQug)PB4{MM+Sp5pJeccFD7C zmt7a3{-B~B82jbllirkFL!LXsdlTi%rt+Ha9){V zfDCIppR07fIdx}6Z;#nzb8ALpKD9cwsscN*cGKOhjark_tOgwIz+H2txydue-?k%= zF;Y7K0%q9a6o20%VgGGlrVRkt#8{L7o2aspgWvP?lIH%S8HzO|tB8`Jy>DdNo2HM` ztN*52P`1V!@@pFC8vMOLQlL(bPB#2aJ?y{|101O*L(tS{Jfc|jr}8ErO1V=!dkixI z&`t#g$^yBWcK8KQv?&G{X~qDnzCCxw+n#GDbaJt5(-33=mndasx>+Fb~59 z=gK?r5$i*nnwGef)y~7KFu)iuQk60gWE{6GLD5V;C`#tVp=8Lh00fQw=IJh0R*EzR zIOf^{rA7(k{St6O+d+p8knkqC>l*IAy701g1@FaTfM^$O*hNOy_!kBTq_e8%T9Y#h zwtxFb2DacYki@rOKxQRQVfmrzXOa}Mx(R|-!T=ZGj6_KTsmfDb&w=9@(@9}s7Ls*v zEsrwXSPZ%aMxs-bhuGFrUWkv?EOp!QfQDeziUHOQwLe-OKYQ=TaA;{YRpJ7X(wD2= z9Jz+AG}ZQVCvuuXQJ{w6QCJeo(YdQ3HF^d|OxC;#)_U7$F4NknCz=Ioc$p9m3^1Nd zCkPuRv`kVfo9N?8@)tij#sGC3&n&tTpN+P|>kI85sG&H_fB^=;3YsaFtnRqr zugH0CojYwtT``%6a=(2iHhy6E-RlrXPuYcg3D2SDUdyd+;O3PFVt{@haM%1_ON#UJ z5}nV+b7&SyE@nCL53OvCrZQS!fC*zoVxgdR=M@3*fU8p2bbZOzyAQPlqZ?)S2wDqU z#Zknw;R0`@;9X761k_GIBUDeOgQ4&Q$A3*+N$&J;LUB6Uhlu$QFPCjCI#x9jhT%hB zF6E~w>fmILD0I7NbumEK$RUb?lNC9N4E{-_wuS*--o4a^jsA}UScD$@k#y$_>4hN% zDMz7Q8;uJInk;f3I>`9QPHpfLpk}f%#qiEJg_ZEbkXA{FTdYlolwvX#bJ@aGjhSfa z%*Bd$bdDEj06JHYpJ*MnaVBoYUoP5LmNYi25r=$r4J3FCD#MBp9*bNW`o%G}89M!h z*TQ^_#1j}`so4>aK6nuBZ^}Oj&_qj2x=&hC@x(TNc^p^50$ncxJ!euO`i61v!CnM;5(c=8%{+$K zEQ!jYA1Ncj&BK;RcUdR3CVDnY4?()m@~I*1&8Z?22Kvxm*errO`&o0w?^0B1k9b<9 zro<)wADVIWgq^*FOUE_ zzz$Oy(&krwA6)M~pRpzA{xa$@c04zrH!*=aT}R(ElRl!OAA2Ln%RY>@*3V!50(u1a zoa+=SbE~^UJ*pPA2EC+xRJAE5@js17r(5+*<$n+fmJN886;eE(&~;sc?RtXs}y)s^K5ETtXlOIqJo%92Q*VIT75cHXbZay6g}D}Spg%)WRR zKCShQY<#MVN%KHH>rlOkiO!$nyyy7J!O;S_YkIK$3l~m&svdpA z7Dd|zuNXz(4Lio}Y^in;FQ_!uA!1AMWxEz%#`j8H<1ViD}Zd#svb zul1Mob}kseZ5uBVH1I^5U;v5}`+fiIWGOogAm*!GwFJcZ?u>hHVBWNox3J|w8Hs>*W-UG30y7D zFea8ZLn#dv9?zvni1PUpnwv{0o_Ga*3HQvHLW`77C(VW2z58nye|7xGBm=<(m9c4_ zLQ@vDVm)&}RIlIdzPk6;PBuc9_dLH7wIdzaN=DUO4kk11^5HI426py(>uTz;c01*Z zA`c}|y#mR&(vO^t8U0q@p_<2WWocJ)1pjg>%D-G7o-^HI1-)859>?i#E(_sa+wGzaw(1(SeXu;^Vu845CJ3XXVEgoN{c* z?5#2$pUR0e)7%@-a1>~-aT6R2oK=&dtWHhv4VEn;?V?)$tK%h>mF_+eYyh@ zoP5Ja55FP{AN0llCr73D?%m=1+_|~^iFdEh+LG68&bV8e30B~jf(xv7^GjYIzI*?1 zc_9c*gpqyU`jqUig_rWgYyTan5hkmdRePRS3gPlFz>7zaVWF2znEhe+O8#onbY34w@+U328$P$ zt&eZEP&a|^?9kY+PPV=wJ92MZ<$T|=QY4d#yX?4p72AO(Y0(ix@hKqFx4w;i>-hdw zM=10Mm-1r7hJfw2d>2+&ylQfh2y=JMST9Z=vy5qYjQAFD8#LAO7J3m041`_>5 zNkPMMdbfP<=aWt0<>Su7`L&Q6}e}* zt~vP-%^Q}ec)d*=NK2LYL9Hd(Q0qDf8?c3<$Wh#5oixNuSS)<@a=zYdLtb=JIv|PH zCc@%Q6Y$27FYO!XSHJ+D9@0U%}V5=#-+kay|}eXA7Fvs0<}NZ5j3?B^0n%vwma>MphU8bba1j=$fPFs6HPu_DOaX zn!;i>f%1<7q6`C=7{9mJ462hRVyA639!d&r85cL#R_e`RBo(mL)}p1;!81hK|2g{x zyp>h?a67C}!U`U6$JJlmvYC{4T8c0-A50G#hukqh`Aej3z)-w7$TDU}B(h}SyU)hy zDSn(t5X9u4DJ<)3xH?4GhMQJOxBOWRH)S=iMhm`=lG}poudx_(!EMrYZK=1u2&k|v zBoJYMA14nwpsV7bck)TWb}+z;pwPQaL;TDlX_qkT#dNHE8f4G04-JRf^SSM>rnkSc za0X`LZ4Ezc%MXeB-0sGp}--m6e#ONHEPZLI7J35$k2zOk3kx zU0VLWRieeHLSPQtY^P@^&Kf6Ire)vtC4MA&Z@)j*H^hI5s$D2>n!Wtdb;;dSAw=iM zbyZAn(wm~-0%)PivE>!Jv2^1=nqO8UN(aZdV(Q8&^@6c_`7#r~qax1F_{sKtvhVE- zi)cG?yudONjRna&bCVL3L+P;}H|ngo1$v<7w-IQFCu0spgXfP^4E5 zF%6#`zd5g^4Dc$n;$@Bzw?J$0e2}&}>nJ%noM83V-qPS||0;B}HGTHDjx#);gMhb2 zuV<1{Lb&FJP?{prfTl_7PoJKAS_6-kG0wl^z}1gheBe zES@@Hjk#TEI+H31H;J0A$7x;5UC)AB$;Y%|4KYf~#T8c`!JM7OX z$d#43?Nj#<1G$VRYvx0?Wsfb2EUwk9pri&z?>KuisJG&H*IL<5Tv<+yv9>wj)r`Xds&Hs`&YnT0AHj>*Lc}yD ze|&ZNWEspphRYb*LUCGK>gqWW`QhZJacnWAW|R3dvpO#*+&pTU&q%Gf>Zp$0x0b-g zSH9I`gK%3H77(054lnpB9lmr7L84ZWMG3)uvD5*L-`_vdykdDdJj z`DL`P#VV*)91XvTZt}S%`3VY;ZQhT8?OTgVu|_~4*IOAQJWI`i;gT^`3hKChdHa=i zp2xyxx?z&$lHw=1fB~)7LaXaG3O>nbOKWWvdHQw7Xqx7*@}OAKEJLas86aa>Vy7!o zW~j*AIGo%|nW?G+wTf`+CGe^m`}pFG2s3m0w1Ft;$T=V^Q1(fw zC7Sxi=1vv0t3Amaj{uXJQPHX519q&)V0qXlsYkt!SGq~zDfv?Fi&(TH8H%+?@wA96h%?w*VqN~RgJv!mA{(e;83G-=7t(U#5lay}?v;Uk(NRQ%>oJq@6FjgI36 zGOXhBtG*X-9+XX^F%DLwuAf(u(dshN85z^BilQZzid~v@5GE8=P-! zkNf1%^S7>qDMYVY+Da*2|Po4zA~=?jRM!7x+^=Q(AwbRag@uFpV-i zoo?JW3^ZaP0>)WhU|k6ulnlKJGQGW!is}ziUJj>qic3lwJPC(x(8o-B;PImR*1BCU z>erLEN~tBuOk5vsC1-Mn!5<4zB>JTWO~*47)9P_-v<{*L-ae{ifx(~HdMbKdnxOC1 z3T=&QPcpAvHs)gA4sWGr=+Gd~@k}wHz)8S?j~L{?(lu;1(Ie+j25#(PiD+@mR^>cn zFA~jNS=qLefCEP*B&kUCzFvN=pMsh z!hB9=zO?g{ti?k3e!-i!PLEi@ppB6uNc z;}!1bl=;cf^E@BRa%Gh(0_tI3FQzPya~k0(FRE|0Skuo!8-HwJ-B$_eCdpijM}|UH z|JW<*&zefFTq_a_)7lmfh0?>H&pFAU_sG$vfp#2cZZeUGng!8KO#_4! z;rJhCKa<~R+}Yw&I9Tf_MB1#Q1!?nR3MPlY9yju?k1u`{0uSguNZ4ot2LeOPeyu^!oAuoge=A5B@?R1`_ z+bp?9YySS=Of0XRpPb)^exu&B+5VtksRllL13jE17hnkCHW=tLMQuG8k77vND3l8Jh+759$4HhIEy<$11#?D?hxGF-Q8sq+}+*X_2Yi3-m34%wLiA@ znwjnCK6ASJOc+r9Cn^#F5(ESUs+6Rd5(EUK%I7nP0QdP#WeKD*1Oyp`l$fxJE97bC zgO9Pv(}$o`(SmG|@w7)>=cI61C_>&hx*Qv1GUwUm9_^rJSRfFX=3CQgb8O9FRnNF2 z$DDrFsrZ_3@o@D|IE(xx*$F5froFF9ywExUgw?kOC5fJZ{7|N&3puJS=G?)QdyWHk#$+RqjrXz zr-K`q8|Az-nVkgh+>?#6CkoJ6Mf;J&zOs3jW^>*>Mzn%uV^R;Z%yS6HvXF|1*hJY- zXJbe!*n(&$6ri1gwOr^DW`sIzafOA7{nFs*0MiY@X@*deLEyr3EDm>hEzwR#ETOV{ zm(mxuIRWPV*I83(=(~3ao3YpvIXy5 z>a>s?^c;%9+B}DqXl5@qH|i`qaLjpc_N+mf?kwTCfJmvsW;xhBOz%TxuB6z3&xc)w zo(*~@e-c5tv0G;CgC?u@n4ol`U_*R)q}xRLi_bD`;{ElnIz(UQbP+nM&!t%baMY69 zY+(Ci4Eg>ypTg7FjK}AM{CnAk!`aV2-ssOKU>@DijVtFKSe0|eZlB}%oA0%CH$bb$ zH@fGvAOCXYFi*;A3-(h~?o%I_!5kNHWnpw0ct1=i38Vp<7EbTf{8iabZD+>W+ApRc zrpMy+Ywb?p2ht8w%#qpT|3*G&hKinhl&!XLdY1(=W`F#Ezo!RM`)H~6H-4rkU5gNGv#9ZIK>Ap2eVAs&*|Huw~CiJ>fB!_Wg$Hf zFTP}>;D07#rcIp3l*HXAo_kW;QR`_SXzq9i=j3MLS@vD|Nz@dEZRPv#4eFQ{2{l4Z z$^!n5cy-O)OgQTF@@QJXuHGhWK#{32KZ@;S7X6w z7&dFXrSCMpCinjv==I1md*6ZK;)4|;arvlsjnLL?LIRSGJQ?nI&qWd=Sgog?KmmGg z8GZB@WC|{L)|TE4$ramm;*U+W5p(q!oKsk8N~P^k7nIP z!woPdlHnq~u<5Jqk{~*>>N(nCgaFKDX=N;}gvaM=+ctD7HVH~=(^eP$hVl1hu2;3gF1Mr4=@6U`F5T_ytW1%v zIRD(XJI_x)5NaS$*FI`k!7s|LbIjJXRAYXpMwKmp(T1c(oh|jTMVLY!{M=ViDCG1G zG~;6|$~aL83}etGd&IpqbR*gY+FW!*pK7kOT%yq0MkfjUgXO>xD|E?EI08G6%}6Bw z`|F1iFReB#yYN8rDw5=XGp2n4Nc!hf-_||XGIygHr42a)@?0j9!@bEWP2NCJwl4Mq zO>3yq1De%(nx2L02%6j8_egEfH$4vp{?Q5mq(xEA60}M+<-b@D4gSR!aj>mVL6g7d z+!Fgm5v?pLmo;HmZ}u@;nVZ{{o|mg+p_-FLvUOSj`O-EYmL!dOcWZ_m{Uh+00;bGA z079v!ZsNanxv%|OW(P*8q7|XeHw3#ITt0;e#ePDVMTxRSN#K~96t^=`QQ&b98Q@+s zeKQ{VI2AI2_QMu>{M;&Og0sn@(yTNYx+E|Uq=cjr^}PnFXztONY|fh=^>%IQ6Q|W4 znh6#TQmo52RvcH%1K2Bb^$?T*umyf;P`wGH*drIFIgrJ0Cn#I@u!isBsNjUHP@ZnD z-}-C_9Q540W<)M+-H64{1a@`JkkszSz23vEx%!AM3wcwO|BB@15QkFr`-e5ygk0ftlk?k@iWSNkO z2PBZY3dsLOkxix2w|FP{ONrdhj7RD|b?5u>5%nQL^AvHpFk>PMKkt07k!ZT{aW%(8 zY6FsZ5bX!GIfr4n(Tr84FHhqAzgh_Ylzok(GB>(A=Q(e@LJr!A zir^SVNVP>CN$t%8-&a*%t1%u@bwW8xMfKV#Xk@+CcUV{ImB>0kkA@{6rXsV;&<9E zEEYZ1Q0N?p@~){C?aMMl(=WjSjdm{knAYAk>n$~ z@;wYL0Xkqm7Q0oez&oyM_5IqrT<2^_ceXbC(O+!(O5+&0SR3%EL(-!jr>AfcUwF7X z@WF5dlyINF$h54#z&4VIr!6TfqzhasyEi{iH%kXAzU<<$)ussbTqM1nDxW#kIk%;i zXPE-_KArVsv_O?ni@f-yqsUre?wZe^6@c(zs9*Y!QPJ22XUd`+rmBH6vB!#%`n(A& zc3MopK^I`Mm3Jl$8laxj@)A_rVe_)?>iC^vpYGLBg^r`J&)p=Ru)9#3FgHJq;`*jc+2mU&oRaJvTPgOduwE6k2*AknTDhSckhr+KyPFdbI+-xPXg4Z)2Fr=vsE#> zexU@89aZvec%F)_utDNaH2xRRvKKbNMIv%r=AZm6?9^!i#+ z6Su9VNGekW5}aWY;$u-0qK7~k>?j-CPn2gh3M1IWCA!#%4DdLvb$Nk9ajY2V(skmR zmEmgMJnZ>Rbh6>UBdTp{Sc3zGOSiLip+LK5-;})gy(GvzOLexDCAYYs8xd!9!aCom zIOIkGzVmG2JGcFXh33eq?|9(8B-q@Ib#b=g7f(^iRa1=N;j*xePJxQ%xV@Tt#sydo z-kB8{)LW*?4p=^l>vD&r`Q_Lb#j<-qiPCBXmxEt~q;BFg$-?;^1I@D%b-t_Ajv-yK@~3aDL^zQ{tT&{!av?^z9$X6RDJp=V@busFj4un_@+yHf=51!b`Z! z=XT!9HB|Z#ducEHyMljd+ME<(lV}6gy14MmM>p=wcA*iS+Wavs9+I|7PW!=DnBqNr z5ka;&qJT~V#3@2T3?d;fo19gPnY(e5Tb7-(9=@7AIlNQS=C^LE{O@cp_V{(NE4f;2sO2NA!BcVak!S0Xe#B0P z7ppW@Heh$ll?D_m!VM9NGwsEWeE@rvH|)v#JKwtd(SqwybIg`P_YLt&Uv`VqQ))2;llL`OexCft=1n^y_02;7mBn4l zQPY2|&R;z7(q zsIK3C-K~F@&YWX+cCy%Ij+4gO6|`5)ACjE)rqFS{8vl4V(H#}i?M&Te|8VEJdBeHY z%e)o|f6xu0_ z@&5LFIUQ>;13V=nr?epnLsoo@hkzGq*Ujd^Wqe3?aQ4Tg@auv?SHREiJ6O*H3zscZ zL05=wkLwWEDLk_QPDS~jI`$jWz zXCN%cWZmw}bpCvc)ABN3ZhKG}VS6AKVRtZwe3c0=5CA55!_4wJR_wUDuCBd5Gp+Uh zM_RLAxnVeXqL6E{7I6sjmhpc!|5=zBuXWtJb|O@QneobWG`fSADZO7q4NE61sZVFw zs!)Pn14B2l)rj4Nw5#G_ z3xALG%S-v{P<~xwCeQji5iDMnq8@I6s~W!Qc&4-ZmU?1))@QF%pMw(d8%JNw9EP%0 z4_iW)CfWm-McR{bjaL@YU&4TrTlD>B;7k2To(31a-(bDH-3x-fWnyc#h|*sNYI>~XvNg( zo)nnCK;5GeHfAMXdRtyCuC#5&T1hNK_y;xqUW%~>(C%k`ztgv zn`utRMwc6#_s`D%htywJEz;2Hd`xn#FDP>r;u~It6KhJOmcInanJexcH9Z?D%xjsO z#b>(Iz8#d4o2wScSd?yg8Gd6;P9JoTzj$&pV4!+Pw{blI*UH6Z~1y`H#;a@oO+nunnFq_7fAy752nKb(ZY4jSICKxyE4-n6JiXa$$Juxy{%U!1*J&<60*GTIP(jfk zw4>iI#_lwc$H|pE$EBZ%@$CwE4+Qk3e7Pb@zNO3~Nx%(OO!z8hZilx2>EHftg(X$8 zIV^&q9VuVAy$S96(XfX)X@>8lM$V>R$>_rSXqZQFx13Gv#$8FlGS{9ok=#JN&HmS8 zt}0!X@bs$E0b6&Up?|9>3g$FdF#V-k)73mE8lK~HSmvCaYpF111#U`zu$*08u(c?TkUGkBa@D^C( zrxt^PXf{~f?Ka5rD4g4G&{mI|`n=;&iv5+~r8tS#9U&#cCa#({#0M zkqdy4rK$VxvP<&cmDL;C&<`afl3OR};*Sk|`LJ@7@;|D+HDJGC+wT_WgX2@aPVULD8hn@dTF!HrV`#a~MP&7EWgc(a*kyILU>F>zZHxhfP^w4MY zF=uk>!&nYM&QO0b1WHO)74@%q9ejSPs}TOeydv)mVj|81BAQUUV$sUJIvJPw--Y$z zfEk47Eo!*pKxN$i(`%T06)KkEZ(r)^?P0HH^$yeqYF(Xk|Kd0x+x92owCwD|w!GZa z+kwY!E*qKGLu~|Y;l1wzs<(nR1cN!>pRv>CyQAeSe)X4izmY`I|B_I6Az-g`hn*03 zV$pLw4q2=_2W0S1M!k>UZS$=(Je!)yy>uEgLT|;>z$gZCP!ZiIk*1K;wqp1A0T6>x^>?3mN6$#<aWvTCt%zThrXF0@hk!5~ z$_dTtgS!pMi%DJ#(ZI*-K~!+M@T}}m>PNOyekH~P0fJJr*20VI;H4>s3r_%EALf*+U@d`~pzojcO24@(x8D_~NQoig>>^USX`_ZQ5P z?0wN=^sK9Mq51tQw&%8-(J@Us5DOLC8Qg)B7j}cj{%U%hzauXKQ|A`*l znfe#Eat0Bqk&H96G+?u~_oAjZ(;#%hx(9GLEHr6iY3lI< z9l1>$nkg~}h=-g*Mj+-r5KbB@lJZl4U;Iad?>hOZ|IO^nJd*=Ub)!7NP>$TP5>dj^~AY0%W zhwoARwbr5zF){sSNn3>j; zcsYF~NJBQ%(1?$DQbn8;tEr(=u&l*#gS2zj?XH1ZU}WmATo~;=;~ek*YTb?dWz~b8 z#O;zKOz&~V#>cO)S}-ID)h0~T<{&8%Z+XslecZ`x?to805o_TMWA1={)C;p2wyP?n59qQ(-wYN1cj!8d1E2qN}5BT)? zj_5g?cMPBBi|p+!_=`Tqh1t;L3@t*d1QR11}s?afwr(KuEqPAO{TDO^@8gKv*&dm&yL+Qj-|Uxe2tOstn~r zVek1C)wVRj8!MrWPmqN)1SYEJ)@yG;a#^>> zIse$UdK`aq*`|*1gq;w)!>V{)Ayw?&HmUGAn7D?%zn4)6J4?K3r{D!qwnv0vTo9l3 zdAzu6jUKAy3!G3w-+5Bueta$Z6GjF)mw^VL<s4B3@=lre`7zqxF-noIPql)aaiLHG;$tVNW6!;v*8XmY4jF@lQgJJ<{J*Z0MUXX`i>q zEMoTvS`5D^yS6%&Feqdr3$mLZi#%EP`zA{hg?BL@TQ)Do{l718f`pBl0`2cyE%7V0 zHCPQZNjQ5sc`WdWg~3>sY9=K6>R%0eGcZTX>0;l@woADFn$?>eE*#jj6MPZ8bmP0b zx$s{;A{*FC%CMfxI=`T=aPzge+Qv%Qh;1B|sl1QiBvP>OIYvThD ziq)^MUil#<4#SNsMy}bJ=&35X#kCIHlaKdrSzg;OuD8AIb`N9foA(w6hQcOLZshQJ zdW1;a#L+JUXv4HW0E$q-X|z_UmWV2#VxGOPFD2BX(UhKUXffm!C8*OwQof43V`En` zBc&Z|BXHf+Sb8>8b#<11|JL+w)%@$4I1v)I#)hHEB|v=wLrS}1W(b(#c0|iUmc$<{ zTk6Y@1EHfCTpvgAIUehNh;_`?oTdJC=7p&-h{1x5vwVt_PrnlFnZUa?37?FUNUv@Z zcUv<2DD1E3;0mtGqoI@DE-C%{b&KPLUItaJx$S#!>z-SSyB_R$=gn`v`@@B+2vSev zjgS4#Ka-cq8-jjAsx~=pYuaW@mmJT{fX%->97Oo1vCq)OU@f6kgfgV@8%6_ny=kFL z&BZyvOl6S7j8ptVT9!p;(vqw`P7>gMU|m{x!Q`|d9g+F$UO^A4I4Huoiv z<+nWRFqZctn^ox3511l5pCs3tBTvi~^S_KU53vi;H5;@dFVt2k4M9p=LDYEWE4y}q zl*QM4dZ(Fr#7d&yMhSoe(w2jHh7-zMTt0d zc+TPm2@s;y<7WqdW*O!?#6_y`x`$oWhU!2lG}_DBrEZvY>|ds23(^jaD-(l30Be&S zfZ&GM3Saiy?W~1tNfX=E`mfVgwelf(*wvBkJ#_^6<~f!eAN8E9Q%*yyr$6XrFmxw> zhE;rWFg{x`yW$=fKx(vGfIs&!%9KH3VWxJH(Z7*yaJBa{%lXSGYKyxy;(n4C5c5WA zvon2JBN!tv`>TB(&9=A{U*PnrCALJQE%h@0(P}Pqm^_*M5~6Bf0vV+aqAE#0D^l;U z9aKb<3{vqDwtsk!lHE)|c3>%fiCzq`cQ&$jGc;rjp>Xw2Es;brlM!!gkIZPhNxIKh zF|?^xQ=MJw>Ndwm1L-M5H>J-K37GswtOULqNUzWn>p414P2r%mp^sdVV<3my@)Fz+ zI~(YsT|3mnRs_;NL|juqZA|C2_$Ix;SeOf=z+PFRPu`S;+rHsA*p4_M+uk(ZP&Pe8 z6IKtzkh(!kydM`oemWu8g83DWFu6PUyh(Mmm1yt(v;fyGCW#EV4hE$nNhHR6C#}$D z5*Vkf{_&+%I-nH|(UVm(taZYb*W6P&*yDjztz?qLY`EiHDnE80bxpH;rLdj`qEDWY zX<4qcu<6XU>nt4&LpgYMC@#~2rNIjIzFz6wmR_R$WOA(u%F4;caO}_5%Mmb1AAfc$ z362}N*c-kiOcb6H+y*>xaNrt>!*vcHGyI;L;%>-Ws4MD0)PRrs*^ba&g03GeK?%Jm zne+rtu1pUm5U$4ZN9DLPFNQt$Kvt=;qx=jayLysbAWLCO33=Pur9083TV`G53ydYr zAr2xOACwNsfwM{P(O)68BDsMq6P<|Vij5kJ5LONAHV+EO`{HtR}!gFUNyFZ4+9YW#bAb+uCyZW;h8k;gt z(O-$T+zMHdFsN0nHKA&#L786ydl5rv@{3Ji(Z(#l%&V-aw5o<0#(X!_K0~QZbKj{EH~wrW#mAVn&e6_D8o@ZUa@)$`F}=*;NtmWXYZr--%4h zKC64MJ>Jjbc&lYmZm(jw*^And*4w%n)&h~STPVBVy$5y35QwrOv3*w1C8@UDh^r`* zC}hs6-N+;^NoEaYiFJj+GB4#D2Vyjb!tz|cX3hw;woM3I1lO&Dkv$&M8L`B+6hz-Q zR}r31^-t+3cU>YwTyPG8ftuLyr}WE0sTDl}ROl?mk&2Kg7&DhYcy{m%he%T-C7Xp^8Q-`sJKIt2D$>L9kLxt^FW!Bs14jzKc?l00vo z-k0k>a=S%zuE1ib#G3EEc?R7GUj6>}jlem0U5dRZT;?J06Dqgm3c1*7%h$*s-PU^Tx=*;Daw${t=uxR$kNWftB)O zv~OKUAXsJ+LFFl6Wr3`GAZyP*P;{tnDbR>+wB-}6XB8nnoaIaZ36;IE`O_M_B0?w5 z<;mZomqgm@AMsb=w&5G`TA1L+p2>{>+ixjL#fP7>pO&0U@3Fu9CfodR8t)CaMjbTc zz#}Dny%QP&otHXvbad}FFofS=O1^DJv410-y@-nwO$C9G0>ijfmgO!o=Nmuu(@Iq| z5kVPL`gNIcF5-eDdl;)^7RY^fFq@f1yOl43z*-UBcP7;1r$6cD$5ND-sy=IGo{tkR zGOae^C6YLijde}sgWa*+NiC)sOL;gV=G?iiW87Y}N`R?3}mjQUeDBop|( zF_E^iUdDm4Gm*AxwTfv%)VYa}$p)9mar=n~0Vea3GCOAC=n5~p|Dcu};~_7PfvV4{ zXzho?Ns)!=&Q|qC05!=ARo2tom#g^*gg3a+N6d=<;+l6J|V_oLx$q z@dH*khwDg3JD%1T1Y_Lx?63z{|045Zp#J{0ZHiKeF)volZsiyGR6xxe(=@#rx`@L4 z_8Z6-v;sqRmX%Q!0iQv(?YJVPP1T?HLyQ+&ZX%JE05?-8@5+t%N7TOEZBxX(NwNAy z=vPWv^XANOwm$ni(f^H73b@zt!Xo9=qVw+XQn4>Km)zwFt|w2dl|wAsDZ z0h#2g?C{^U1q1ApJYcq1o_Mx5SKjw)G^t z=2^+o&N6e~K~206Ek#A&KhrS7^x;5V-N?E+J}C{d4%#3$M-|2NyPOU#f9^Th6m4Z1 zWp65!8VHmT%sR2{vurJ2<~6%c<6rz&0o6OH)Lry*)hPme4Nm+L%?pMlMySEfRYO}< zJhU^CIa!2D49YH*$T{dLlXQF&ku?=NL3v>LW?nM36W4R8b_5II7ZbLM;26g;g)1ax0TFiDtiUP-)YxN5ek#L5Y`%UeYexf`{0E z^0C&L2!F}{%`2Uy#)zV6wliqYhA#xZ+p*kud-tHF;P}t-HJ+pbGy4wLpv?KM%2JJb z_zu|QE5eW6zdJP%ll1ZiD8)#b{26uOl}db9sWmbw@l$QOXf4JB)(!GMlOk_ic_MV= z*F$og{xxV9Z9rxZB*MMwxvt7z64(qZ{{R1m}=jiwzGYy<>jcrvlOI`mw#0;G;qSeonRW8a~QEbdqrBU zDIsXq;U{$Q29XQ+jC`sAXD&7;6h5%aHy)vz<`{*4t+=CDuZ2z#>lo-`t&>^}w)(ke z99M%=h3B31`Bx<}2ti48j#}D@Wc>W2&yc|xBvx!myCmkRal}qU^YO+;axhD?0KKMlp-tahq$ zO>JXqq`O{Pdy$FK7AQq3@sRvJ-!~ZZ1#byM96l2 z<$cjB;npEGmls)KoyfyL5+i0Q*sNi?^a=364!gU$4 zCE5D=%Aj;u%kdUQ={bAcO;Gm}CG0LttNKZO-tY+2JA%ib_YO;R!_T7VStmd1V=fi_ zSLb)GHfC7w7rB*>K3}W{;XPI^&o6QP82#Mk8>XA=axjaEfAUNVtt|w9$|R@uxf7j- zYg0ibI>n)zL`z*r(8MFMbwr<^tSwHk5-t^x!aPkzjKMr=1~p!kL(Uc8+$=a0r%Len zec@uqmFjG@8)9R*Uf+h^b0W6rzLvB=2r5I%C_#>6C`&?!kUkM5@lVXxEEsbZp^zAb z9O*-J2qcCed~HZ`Ofw`|2N~Bg8d;nU7}{n;b-#*C7M?HXD!$rlzrZ+uU`oP4jeHWq z(m>@KfI#`r(*hL5y!@~}tKU4Vj$uXUaL39m6W;tuXmr`>aj?OR3l)@vO}fx^v$2S3 zu+`Ca971fcxt3xAivvs}1U0g{lq#CW=~EEcPPmvA;#0nX^@GszPjLnH5n3l5;hqd7 zbVOgFlCB09#+mz@yPvr`Zrj0>{bilj+)aQ=iG`xX!?ikWBW?BY_~Q?v<=~HlN#~A< zIg6hfrj0nJAi+EGtcwqeFU<)`7-qo5+{Y-LrDo@{YJW$e1u98#ldr96O#O;*|O_^M@d zzhU)^Xh968Xc_a<{8Wwg6)1kR!XpmUP$f?!JOY|BE%Xeil`||~XvCg08?spn;p9^= z%M8&Z=aF-Q|N76NgnZ*dg~#qM!o%IigJ;Se@w%Tmk^q7jDnKPj3ZNo_{lTOuL~J<$ z{lg^4--MnFG&>{Mp>=Q&Coq$WfBo4|+Vdt!Mz&WmY;ck6JxlbHR0Sexb`8CqXmKZK z!Ffw2N}(p!ZhmH!>f^NWeM{_!EJ1hh8_!7ZkGB&w`(xcXUOSk#mYQK*Nha6bgNNu$ zUZS=?zWK87vkgf4?j!4i7G<;tasj$4rCI+IB7B8#refJ^ZHQNrNeo(kJ~pXsep@4~ zskWdPa<=NZYy#jN>o79%KcIxb}68O@NC-aLDCt zW_am+&LY9ZmfD|}S>mDY_dPW%|89m*5!REs{3)G=qwOtCE0MoIRL$H@_Zz-}8KQbA z5t;Oi`HyS`cFDgrDpdD-LuX{!Vfm+FB506(woD1bQAmf|N)_#8TEBq``Z@z7T56@SGI zO8fK75KNvF!~T{qjDR!BevD?TM!Nw_Qj~QAxpBl(bhDV9)z#XzmDq3Skq7pNr~SI0 zkMcF%9+GP+?Pz&U*89ebnhWpgGSeF3v+#Z-%^K(;FJIy76{344%U9(77M1vo8}Xky z0UuaAO(Gc1%5=e-IN8LFmD`!X!haD7f>9q`-O!~6^0yR|c(_;&OwKpro$G|W>E3bG zm|_h%&l}Y^baLgmyUZFMZFn=EOeXKu1M774hZ~bLsuQyGL432asUcP7*^X%?J0X|& zF0C*$=-8dKY=SG?+7wV#bJAwX+!$fWFUlXb9ZF?y`H)m@xZRmn zfRoHxv;fr`ha1;r0HyCn|52C2r(%_kT)H@JXhJEVurfXl(UR8iLskL@Jq;viGU6pb zNNmvY1+qN)2Xs+`Hk)G4WN50rbUjq#FQm+0qg{C{nd;^CtO6-yCeO?x#6K{F>ng7` zJ%hwGB1IVX#9K=k{`H>@8%}9e>j9(a4^+e1PKMp~T3(t6FE1CmL%Ta4+1KAkd`7}i zbR6Sq%fTU9Q9<|*vod%jxn)9>va}7YN@f)7$#%??lZ4Ji!} zvetQ3nib5-YnFPYkORj?YCE^AEXzOI&2UhH40_)0lM?^XI$Y>3AW61%VJ07!FpXiX z&@L!%i#Y2%$`jEE$8-#onJ60NH~oefN)e!s9gS7OJGxD+Oo96|PL(;Wj7%w8nu?iL zR$9~qLfdp2WufG|>pE3W0d+^GX2*FgPdK>Bc{8Q4a1E+s1(P_uvl)jK{T1>->Mz4H zG(l@Ld`t{$IGpCH5w4N>;sG1~%V}Y2k zyM6NOox%Gu^QGYZc$t#f&qD9cYK2CM{Pn5`-#3mDhHmSrSCVa=)Vl8_Aj;LHMtGBl zIQE$PQ?};!90zsx>evkl?@Y)-e5euDTUlV> zA!-%Gg~fyv5g7gBYE*KHmL&~a(wBYHUADveBd+W? zvci42GZllfg?&3u>*$#zkWh3@K3vvqN4*4OM0cPo>TfeQ@xG-BEPYA&#V<%FaJFd* zFQw}NEUG>Bvc&4A#prEiwbxlXwy|M|qkjyw=nbTQ;xrn*k8#!O*TGT>V#Xc`E)111 z&3NhO2Hz;hs$JH9_|;E3}q7#bdA&R_c&0>MbYOQYk~Y$7E>Fo7`z;n zJ;5&Tk)L(pzxMbaPlsocS=zNJBxZ>nh2nULm6{iWMfahPL;rMr22gUr8&Q2srLqF)x(qlEx9m=b5H*kk$+ zFX@XG+}h^4`;9OqGOvzh$~HNCtPWy*}wx z$2Ta?`}y+AvzH4fpMumbcaUXq?dY&1Ve|usWcba;@{0dMFo9iDGwz3nCGt9xs3526BJCL#CJ{f5tV2#iK zw{MyOhDKOAht6?{&en}7rkDccxmA>_f&!sR*0HmEo5K=7?mj zcrpnvQ{LgbF=ok>93DvWtNBSU(&DvRIg?GTo8x}Qj##}~*+iAlUJ8E6{*gfSPqLr( z{-J~Q7$|N-CtrZdMG_24AU8!?CQ;P*6Qj9=uSU)$v}GgV#@#f`(WgKm@0Lf=LP0aM zW$*ZZsINL5Br-7LRZRUEX-cDIbVC_sn0ES!xZ=X4G-1;BI1BCWm+LE6!#CYx>L;Kn zrHLr3{+E|#DZDuk3P!G#4PQ2|yT|UAm0qvk8nnPxxz8IF?59=Ay$MEYEPJj5B~+Dn z_Mqa9`$DM8e1R;2BBVxn*a8t%s|qCGoKk6`5*`|0wic>Wd%ZWhZDF$O-NdoN2bGs# z1Eb^|q!)Ic1gJY5%&J7)PW3vCgSR^Y+0b^DfC=}^47$G8e@Xc z9>g1AdPK<9mlk34A0v^eCVW|1Ka`zQ!wDx4a|_7)G;s~ADS^kw5R|(PJ^wvTm+qSfV+#*@1rapk=pixsC%(bt%Wuqa z468v7s0kNd8fJq^k*346pydzv-#bWSjC|<+wp4>}G!cRFSEap2D%oBj?N1uwC2+%b ze6WcpnC&f5k1NoX`5N~_@Jn`pe*WQXmhJ9shSq04`$qU1r@w!n&iCuQZ4IR0j!Rc! z+cp$s$m)N~Q1W^)Y0hvK%v{E(mBW8TMk`Cj{uO!w)$mMes0WzA&&m_3by1ZYtb3gRFctoOBh-ov zkcqX8;|-oSYxHDV$R(iFhDv1SD6YfyPXK=Q+DOAeu5EJqn0l5tKo}sMFCy`0gh`MW zLa6r8i7g$wVSV1QbG7keg5}OFn_G{|FD>zu5K)1CY@N8FS)HHg^}1m@VXIXr zo?I@j>~nstPX!^;sF?qrv_eh%2Bf_mP;Ox)u=pNo`#qGXNr`YS#?sCe7N#qZNmy1c zQCYyEBx*=50>aYlH(~oi<(wlwk zk?;x_kent;J-uNa%}(DjUf1Q3xa(7DwxRwBj})hu%?BFfNf;!>X7;D7LE5!$oTd1A z)%2YQOa)zfU+m`|Cd6OoK~eN)1a(%_gJau19F&!DUw$uTTLvc`t5lL$W}6MZ&Io9q z-|>Y=E((ZJa*k=5IUl2+QhY#rf1kFw93k}~%xng(pHr zSkYs{4Tjnd5U>Q?bN`15}BZr^pnDX_Py$^y}aS8nis;JzB%Jn4oG)xnnBPCI1xS@HB9 z_EwiMh>N?iN+aJG2Q92ha^x*Riivpd!bCmSG{pV*=X+I;Jyib#-iIP_T=tkmpz8 ziy+Z9@`F4eGvuxckQAGKw_M{tF?e!7v8&#?>ZuEt+0J;)k?pai5dHqFnv|!NK0V#B z-Ed_t-)Px)Vl#KUspa@ULnTJj`m-?$2D^Uy2E2n^we>jt23bXej+j@%;#t3dK$l&WxMI9AHgpN$_Nk_(2TZO|g=AVmhGiOBH zF?vxsaj3$eC8$}=J-aDjd3XTL*p08&@%AyzezNIK620_gfX!-H_xn9q<7J4=Fl+mR zM|fCTdRB4_-K4hQzpVH_itY{xEX^%TqPslRi-DF}+Gv!Q{+Jq<@u=h}Gb3Q}T@DQR z6j)ELk>LX~j@fK|{zWKkU0ryge(`*#(gBpC`!N_rQSV!`oyDFkP=6!WWQi7+Pl5YK z_mCI%sll!jptbl@$46T4cSuC8p@FYAe8vjQtc{k+!Bn9OO!Sv&>{dy^v=77w$U_CA z7qW$joF&vKGRAyb{xkKd^d0t~8E~tBiq95rlxHJDY@B7yD&AC`JiduhSd(-9^(MTD z*NmtNTLxNuc5`LMSx?_!^J!5*-fIdU$QX84L#wqK;ucrfB~wHP^rR6cnG1Hl!+>a3 zSg?T5g&e~Km9s!ZAWsQi!^BzMYf6L8P@1xrrV{`&cJTc$G!MOuAzD2%huBH=e5ZQ$maKCR_l5u zw5;|b4r$}q3@ETl%qak8+p1crZgDGq-k<)7qOz>+v|Qb&i1V zUKN`s`;@P7)`oN82EMvG6;)7PsVn~eyI{X|1= zaS{Ozr)`-+W!TuDg zv7S#oc8pa1y?KFqP?|sjjA{Gt?RS zvO7+}@0MDHY@<3gLDK&R3PJV0e*g$cvzRqi1*&S+3RJ>e?qhezj|2A!?QpTSoRR`#?XC@W1w%F3~ z#Pz5cW~E_ROhTYpL9)A&j!0%qF_D9&0Ifg3K7zQkC?QK)mz2a%QJO0r|AItF3TQJS zgayc}N+P&=VFj+3SBkQN02Wl|;j8!Dg71CnUVQ7zx8qmezaL{eHe%n-TAUqimkLx| zg8Fdx1|05QC&jDJ4s+_yFe)SC$^a`fJX>us)Y`=8_u5vKpCE6oU>Zu3?|!b;&eeig%dmnVP5Sx}6HRRIm^z3Ka#W8LDQe zaGPUhpc2@GDzB^eGPi_{8Ft)OO_S#-M7>TIR1~TTRJP8{tP5bueLE#Nwb%P_UxCi+ zYyV`ee)h?Ls({tcuHTV5EW11p?@4>JXp)JTlm|4Hg2^=O*;&cr)hx{y zFv5yWm6wB}(A85m&fey4aEW@vU`Y>*~vIb?jK7<)NnqjO{B&%b3 zGo=uQ0M*0%ZnsSLImMU7<&sV#zR0w9s(q1=Q;-leX4oiL6_^SNZ50@1&?rJI^*OP^6&b04?$hr-;SY0DTlJ$PJP@;QRCqC!-Z6r!vs zU#96?n~IgBSXoMQ@+DR{V3%5}tlBRSiyNz+#$o}{PPyJxm}M7}Lhv#@m8q(_Zk9P} zgEJHj)gowf!bYS3qX6;}QE_t7(Z%>zI=$G>@G5G#)M~lSbXDG;HDINTq2DRlc8qW4 z@+8~wp_Mk7z-j zYE+W1 z)j$bNPU{u8I(`96lXh1HxcQ#usW$!q7H4jHG~c$SE2qwZg)}s6aJUQzS&WpdcZd#Yh4=9bLxagM=S7PC}I$ss63G zO^uYHSsDkcnOO|8B50|l@>~Mg{Mooqz#8TOmsGprk}rJbS(OD+$ht7*1EU4LdiSk( z>PO$im8Cg&_GjP0v0kn>)q%r%8t}n^PMjEQ!s)?And+a{QqKeR^x)Lf{eMdh)e2Y_ zJ8p*R#eh(+I~7bX<~n8#)eKW=qZ9?|K>Jdtuy17BN`dRxu65YgwO*=5$r2_q<=-G0 zDyRPYy4Qe^&&zpP-QD{be;z$kE5venUO(TsBs?qr-CWR1n^mz zaAq0{2g+i7tN_JjNirE!pCLi@8vn_beYy@-emsVf0tUpFVs2FxW>-|8G(R7)?0~U? zE499$M})OhS;U$JP*|Xv!YMb)@8#!3MQB5nsQWCmPj6cA~y$7#;S5z?nqFM zFD^=mot0W9<5USyg=#ABxzE3aI?T>H$<8NvsCh)sr6ZG?HKR$m`fYwJEXe?~$_m7p zHM_hJ*Dk2SH}1I&w=b^1H}1L~dzx3^)NnhF4>pS}mA(f04o(fzcB*33R+Vh4!A(=z zPya1}Y8ansfSyB>5>WbD z-$75yJLqd$ilNRG*t>HL=#)CJXB`gqtjEEgwK&|j5v;^NvVApJ+w{a>EBWed36nAw(Npb^;L?}DczMn{ zh6oMS3>9PwRMkLrs;{krRAWgAQWc%X?o)e3*rJuf|44i0+SH{ z^zIX!MTNQ261Jr!`Lay_6UNj$scBLZB~W$R&+lJB%5DB#sD1JnIxz`gng#f`pqYr3 zx%k7Z=P^4=B1D{7^8dzyETsjxm|s#K;=>_3(FGt!cB|tg_{q|<#Hv< zFtlwMMs}>g=+2cm++UCWt;?`~cO6a)w}IvOn4kaJGyjP@ZJJl1*x_QT7@W& z(=lyDYfZvhr^fm`6FtZHJ(IRp(T*LN$aG~P%Wa3l>lAVNT;tp9r|_5zXXdzY-_Goz z6b)6iQ!CAs4MINY6b*Y@3W2 z$Ys?lYNZ4zEn$IOPRrE*J+!C6qt?~!Y@AV-Ti6S10NUAP>bPes?`21YvJLKiG zKZJReWw>_XJOOKd*o(5L57*5p!tGbj!fzh?7Iro*k(DGk6MJ`mJI;)5HlRAtAWo{2 zeRViJ&>-~yv@+FHcGNUbQ#4g80GgrsNdT1^s7~({s;Mv~R5^W7q0N=Y@OUnu$0|_- zDS=9`a!shg&ZQXKwgP<}OVQQ*mQ+DMdtevZYyXbF{O)J?_Lpx%Ri005rhEy#nKl%~ zyod#i{CwI@nO;gKhOw|7Uu3_8<1oLQQ&P72qVOf*%aICB(FBvBOoW~akCo$-v6g0F zDohDH0#(PjPcerMnXi`$Q(m9rdVlvNGiF$G;)B z1CA^N>FswrkQ4907qb#^d>!u$eMl$9IBR&rzF>?BnA{iyKA zp{gh!SI?h=#j~qXSrEtE;yCjC8Mvyt0H42k0oJ|o2lTeBl&WbbhBiytz0)I`aI(K1 z$9rpWqPJF-tY%>q#;T?@)XU(MvVyMFxN4h+y4HiD`#ev#Cu<2s1*+MbKbhvL(AAcX zCVK6;YzafC2vb(!KQ`2auI4v!pr;l+9V@VF%Tlzge;v;}@m+jsVHx6Hn@Eth(qtXe zNPvzfn-n}DOj*m64goqcXouqzOkql(x+Lb*m_id=3Q2Qo2ART^eLD3QEz>leSB+F+ zOgWuTR^2CL6{Otec^o4U6r5&w>h&29%WdA%{EV_~&xF_SfhXvNk9I)jtcQFcSP4*@ zBLlW98*GGcmQA!%_RARiO~L(~mh(9{9nT4e5Dxey7FWI}!p)N`^G7=^HOZ_@(N3v# z1{{PUVR&BH#}G9_GVF0msG6VfP5$_Cn`2&^4gO3ULR@aek%fQ&HB&TJYOd7mXiv?L z(2y&ay^QL{j#-VtuWVDP2HX<26dt_n-%On zj&X(MCjnGuNij@>j;X`F^2{1y^9fRFqnys$>`9Oks@&$w z&uM;ATa~_~njWBJIJU7FJY^NQGU;xGOC<-EB@ysSFy(o)k@9$M z6P~;muSxAxZLW+E3Hbb?rA8xkki}70kcXnYgd`>u=0@fDscqBz!5@@Zz>DIzu@p;9 zaW2XeAI2ij%IFKbZ^872M* zP=%?sW;1|!+MfohMRAmw0yh<=sZiDN$=aD}s08ZX?dv3eUs6wZZxpzW>|BGvZ7b2c zb){&hOJ4a6zVYQ-QC*lV9(`s&1s#S1ikfM}pD9b0a4|iK=47*$rHI>+d;!l_fl`36 zH3Q46F)G+51FBgQB_Ih;irPu7THaShpGRSx3RBf)IZme->y0{GnId-97;t7F({4kC zYNebGvy@$OjN49kmh{PS)WDL^3%MKuy|BlHY_~(E+^SI$f`lbowQ(vK2|)!RVW^`0 z)Hs9oOwl|EP>!oM%I%2Tj))@@;Vc^hnKlHoGLYkTB0oEblH4fD@^X>L4jPWCj119= z86m*$K>to``P~qv`W@+a$(G-vrUlb+LokfNDSTKJ!7B8BIE3a69g$w2gSn2s^ z89&uj6|97)SraB;d2K>9lEZW82s1*eXsc(sYf&O5&Zv_7xY$q$Qx@hahz7w0150QZ z4ttRsvSW5h1Xs<SUn$xcdpxgS*y=n5X>;*vVQepsG1wvi3k1moupqpfYHm>q60{+SjoR zdw17jPy0$Vt$7*0ee%1wXN-fkZ3R-P-jQ9P}HIpR)`LgPBDJZzleu9B7 zGK+x_lB@xm#WkH+w8ddFiY;@2JdP#D1*i&G9!D73GmzuTLd@$F2|F_pWJE-k4I#TB z+$QXN1ftE@<`|Dva8A||njUpD@m!{r65cKcvRU1q%ZzZ{CubJ&d~Os51IP~rkO=xk z3ZprQaH*IKBmBy+eH(u-{Z7n4HA9u(m1?a#R)zfpEXxxzu9QN}lmYt`?o&%8FgeAi zmdbr9PZLs+oeJRQa;AVm)7SwlXbE_7k?| zaaPIVar|xw#;7X;37-RTPZn|>u-~v9;RH-?O_dg>;?2xqe(q5@qUkXVA zE>(0)TZN&v?AL9!{2x&h0lz=)6OhzU2~>X9YzbKQQ8>_S6W= z`E8bLDSG(n=|8$_txWw{l$x5UdD?HD?$1<1{g(r(g6WfP6{Ong^XUF$trbw!Q8igR z*0~l3b{Hl4r1I3BS|hi=w-F;P~!1OP$FefF!J&wLCa!sFP-P_metK+8mdHw$r>4Kce7IaxNu z9X8~;GsgS5AFa6DTQgX-U;E4eLxtgZ5r#Q0)slv3WlXBtO($w+3e<@lRp!1KJF6_5QmGoN)xJ%^^+~o0%L6;tf};C;Cf%N_ zoheWc?%asITi3|6|IqGw?C-9{iQyLP>#j%bvgh%KUq6Zm?zsVT%5o&mv>@sg4VBe~ zD0Dn=by8}mY`Nq!g&Hb@z&YjT^ouVGUp}T(GDn@l@SjweD!`@!szR8@5R_BdNeNRO zH$zv!Yli1U+q{=qE2U;ipz_{)R(>|s!nKt$ge*bm%9PJPZuUqnt<2+SS7sT*l57u3 zsWo}Ckmt4`*KWWx-(^FAHxq0L(^#ef+dQYyU+Bq1J|*B12o};_81jp7n_$fMdt@3P zbJ;;5C=*^6;%1i73iA&G$HE>Q8&BKWQpp7!@^CI>Q)Qz=~PaP?=Pq zGYozgD*CtKccXw*aO!t?;rDD*o1)gq9~vIZA0%p@1SzwqxJ}?vv|l~_%;D#crbcjZ zIqOi!CE95`;zcCnlm#DiBW|hiKf64EilQ*`qi#_SDvA@5K~+_p5Y6?bt7qY7-}@?l z`pCU_@Sbb%(tkgSo|d;I29I5+Umj^1LOZzB+OD&W@R(mO7 zJDFyx{VWpAF%*UN zDFT&c(x{nooBzPFl!@OVSvK?p({{?2i!T)8C_NqzScrq$eDNsMeso)3Jc7)up{jPN zfK(`E^7;;ADHHQpDs1&-H@Et7)6p`K5F+en*b+mUSj@%ea*k_ji~(g~Yzmidp}mem z?UQ2k(T>M)Bfy?5op!WC&&myKR;WKQAdR$^}4e)zl;qOcv+?kn>C<8mQ-9G%i@$V)-c1as5 z|MuMHbUmCMl=Y`#(HyDvUr_M>bNAj~a@EPUXO>Oxz4xxNT$cCVJ9%$QUP2%thex<> zXq>PD0YZ2uyd+#>1QN9GrhUJ6XV%<#YyOWtYe&`**=m(Ub8p|7cYla=PMypuAyM_I z_(ts5;T11cr_&CX+a|lEV)2kH?&JIU|A&BOCQH~}9Lf|Jw>xkwmcPUq{H4ZctmpIO z#P3bN+aRt}G^DQ11ZDj+>#AX&16-?;3^}l9ybBNf_z-r^&Y-Qvi>ud<$mW4U%w@jQ~$~%e{nW?sr&!!GSo}eJd2+xBKrBR3f$(q5_*@5`96=& z2~n;eVSM|^-(QvIbl?|Q&N=T>9`&oAzAzWhui`Q_KX_cSnJU1w&V&Jjkl?Z2$VQZbc5an&W%eaUeM))efGWUboor5T zNy!v{7!^GwGa!CUSW!Qy9IH7V%BBmL;lRtQt4b%rbJLumPAnSzk`w`qgpNhty)zHjO7)uYP7Ivbud?|AZgRfpOfP z3HafU1P}-X;qo|Pp^ns`lOYGHDfC*M{C_NDuw^i4wDNtTXiRx!os_30?x5oO6b5bl zO!`teF$KI9RHZ|xtBy<5*CbGvi=m}1DN&R5WAQ{cW>-&OpuGwU1{-nx)obwSJI~<% z`SVw@I^}ntzkz@M-B0oBPhP_R`t~DPp+a##gU5dc>#7VIR4cE|ccr9C3DKqg@?9Aw zP}Bg*v-z%9I)W=-XTIx|KL1LuD+>*k>lHK9Vt8Kaem;;Y&o2i=zIHj7^0g~{K0$h^ zP=LzaQ1o|H_CawbpI!VyJd0m{_AI_V_ac6K_C@^i?92G=&)&k9pT2?z?m37>GrdU0 zU5G^-a662J-~2MdSR&uN%*t3Rrc)W?Buq=x74k8)orEdhL!dIFWriaeZ&_&p)|Hi#UFk~;(?Eoz zRj(I-GV3ywl?yxxOEz*0r4+nZ!bYHKv~q7OD~GYP08@jiRDjCHkEOg^YLAp2u~z9e zXrxB!U~N>x22&}57PX8!#+(KuTzaG&8UbU}qymGGOxY_WcptZv%6-PEzVM9Cvn~y4 zd<3HobwMra0(vxrEohE8&=9ht%4I~%q=u(lg^;cUadRaI;);uD8M~xQiJ6MSD6Yn%B)INaFnUwEMrZ#1lEcQSSr;L{Kdn6 zS6N}htW=q&*RhGm<{i}#B`BwTpQZ#Ax^k3Jx2xAcZPY_!GC*rIK&{uIQll2X1Cz-F zo6QER*&?SJmKvnoAcoy4_-tm`0wIeY4VCcP4AQ|TRJoVR@3G49pAD*Tz=;Hx`^9`x zXZ5*FvSx+#)NI@>3;qT=YA`X-jGpEcHm(@M(?<^D%{`ocWjTiu zDnt@QS&&6jdEvQLT?unVxo9@6YRv_h5*+5T3K&buK#=mv?3B_YOKB-w8Vy_;H5`={ zQnQqLrIwASLW9X?C_}`iMbd3R#%D&(Z-Ri*Qi_C0g^aBnbzVIhgJ!u_IVzF0SIB)+ z$Rbz1Cv7c5z0ZKoq#NxCE85}~w8pGxk2}#GccC$8L)xN2uu_GPT7{Ut3~6g6svK(M zoNCm1HE0YO(H6I%C1OXd$0)BS&E<$2$`R3)2!sjOtkVR)rUZ7CN}%ea%Ai~YH%k+` z3i6_tfOU|eA%(_?cJWEbw0=d7i&?p{#}i-jJm zY(m*ZXX>z+#n^@BE?o9UT`8NR29{B@WwLIXnQ72tgU@M3&}Ro%s}QVgR1v6=h)2w> z9aefvl)-JOM95=6#AiZv!i(yJ8_m^0Y+t_s#~;2OuOEK^U%vM|zCHUczWK1Q(f9xU z_H+E<%eO8GRD$(V@VwNsVxV3Ms+WRj@v|!dZ$6MJ&#(0PS9)Cmsd81#*X&WAU#VI3 zAI&hYlz}R>&iSst`}hSE$8SG*0mZ=#RoP%F_a8qeQV<^dfBDIC;wJU8kDtL;r;p)_ zGf(04n~&qjy@#-7*)SUGqX_tna67q?va(R0q6@#ST;wPmE9G+nl}CTB#!wnC%C!K~ zf*@RsJjx3WNeWbpvr`_sS*v7FlEjc2+8j`o=7aJBsAQx3!K+Zutu!fGE6v)i09ERo zB{0(*L_=5>#w_i+3OMyz$VwJY3sIX{`CSmIE`uIUz2Up;bPlEjDnqhZPT#22@EP>* z>I+?RX#nXf;L(@Cqbrf%%y`sNDVb^3V?veBh-$A6IadX$oaLzTs0DN_Q45;FCgcP9 z3*hTWI?x<33k>-_zNateLwCk4(UtNDOqp?3IkboyOA*$pKuBh6YE-+lsP*XN^Xq(S zGz4{Mju_>0@_vhaPS&nL)}|8}^U5r@#%q&|)uvJjSfeHlSVEvGfwfxdR;dW!zk?_O zRE1Gjmq{}ilj_rWd*%%3HOAl3#Sd49OFR5+zErf965!?a*v+B@XSWY zB$U$uzuP5~PyvrqCc$+4|I0FjzCw=s+(E@{smxNXCba|;0-xK0P{<`f4Ts&5u{tbj zu+i$LTbf-hjaQ#djZDafnc)^(yLAPgxbG&s@zlMt$@lDg&&o>bfB)TQvP+GgsLE0Q zQrAmCwD_4Ku_^{@F)*)muYhsB>wom~=lic<(4aJM|P^fBt^lbZ8UC2OE)1x#6%?z-(m4damfty6K#z zkH6iEfy$-;vr-0u${!*EjiZV@=Ch8<;5{={shL((Nd1yEOOr+;O&_KCqX1Q@gDOB} zN0;{urHfCkC%eGZD$13kkrb}e?rm<;$f7PSh}tVl=fw2oax8b7wD1_Ua&OmE!cswv zCZ$Lk1Z@_0jYc>$8kozR5hB#kAgvQ?tqV?cx7h^8PzkEW0ojloI@-gm^EX!M&=$GR%t z>$9NVXGTN7ik65I)gChf%&^N;QbNc$O^92xU@0KwG{L9WNKKVlI@D6QfyE9z8(A&;zT@v$`Gx58`F$h03<_t4LmX6dP* z2@3|Bam%%{`0=4_IQjH_a_s-*CvV{QXWzzOzUG$H{~Vwy@+t+aR|28(x&pTOuFCu7 zyUzD{-}iYjOnI+jSNw9JWUBLBuase4>GkmYQMA(4SC0J5P>X@8K$Y|RgeoDbG%I*dnDS_^fRv3O2D|7CB~w*8#%wIH zTg)g1DN6zDAXCf8IdlGbGU}=>lk7$2+&PiN8X%h%as)3G{ie@Yfq+?yphbs}RWDZx z>^X`l(jtoq36~QAs~JxI_ss#-R9Y%We|~JQC>IG*#AcSyCrqg;_3FwH&=(?PD3z{! z+O9#Z&y1$19W61p)G!IjuDB6haWgt&2DC>E=!ojkleA(WYsW~9SFZfHJ7Ge9#(|-n z6T{UW4CUMys`6tX<40H2g*t~839SlojS97P4cfytbVTgvjM~r@ZI!D6Qw6A$N_iYsc%3%*Ty`)+ zWd`i$CRMjxMoeQtFF0n(?WuI_=l6n1&!GS+4+>DFPb;^za?=1e4@A6XIE-Zy96|M3 zD+Q>QN)<*sYh)GrmZifu`r||R^VetayD#3sH)meN|M~0hno>&rlvkyus@VG#XQUV3 zQ@g5UsTV`_;u64oP`uo81<>&+tcpMtoEc}LKC%>#r|2X%^yc)nOTub6d6 z-A+?3M|(Nmt4qPGl+!^L3gvaB@EXbmc78(z!d6W|2Wr(J?l4O5xub&O`Eo?<7G!;H z5SDJO2G+7tsg>HwIsaY(M`a}fMjaAPiwNW?Q}R@niuj&KVrok%bBdeGL73M2jA)HI zr1sgB@}ev0L|@W|zLXh#NelYZ77S+W7^<>kDC>|bKj!Pb3A4ODl5=4)@559+fXVtG zCTb%XNcqv?Go#v4fs8?gI=dR3VLOJie)J_B@@Mp?tQgGNFqpMqAY(*tQitxi0qtQE zT7wpWZ%@LFzN8NwF&A2>0tnfVvumYk#X4()-;TzBL$cPSRf7-*3(8ao87q--TTtb9 zAjM;~RV$NRPJJo7%u>x7*?Ox;?lg1FN=nZ73zASRmO~MsBDLaCzOqC{NO`5nH8W4Y z$1Yn>>C0-?Rl;V}iZvunq>Hzt5~LLU)AX8FfwEPVJEo|gw(4cq6_5NJMYZWm5cOFQ z^IE_of6{M;i~p8!r?^n9o$AK^%}epZBX{8IGcV(pAHRF0ys1)d()=H5?G4muWdAz4|O0QNr_k}LM0#rrFuVf%{+?t!= zXGU5a3ScFpWL8-OQr13MdnH7R@ALdG&g%oTF{j$748*fhwv3=-6Kvf;u>q@>G=YM%=+yG2Cr1gcfCQZ}6^ zkXIvWGa}=)A;bOhCUs%LiJz}6mBtP`>sfmxYTPG@t7)<)n?9ijy zRE7qd8l52vM$Yv|}J;#YozQkt!P|s%;ppwqi7E#9-Qtj<5-BAuBqg4)mve z7qZ=EpBZ_t5mh#glmVEvwnklO3OZ5eu^?%x6eR!~S2?d4&2ca4Sf4cW-=*+x9e0@! zFsl);X(bf@2kMwGK$#WCQ91orpA91y^U7R5-KPjumNFVr z9&BGRfkpid*s!1vr(b#ufBE{19Q*%vz95mJOiHPtUYvzq?&IR=DkW1@V8`qCf!gKX zQ~b3qb$_|f{XVb#rvp_vn*Y!%a4$2Wq`e7Q>;{MMK0JNxMHYzda=gEwe$9ra^0b?bC=1Qqw zhD;?08B`KcbD3y5nLSd|S>rV!>(q%3)TdE_wZht<3-v)a5_CSQEQgs5my!}VD=Oet ztKrsE2z;gEttpWsKJ}giG&4BrNR#GL#Plj;tYzqkSTRx^#8^!LLm3~2(oPJg2sbOH zs-0Mn_hLz70E-&^n67bQtjdOk^OnquHxRv)?2cD$0rV(g94Z;V=pz?^%716AZe(>6Za>PIV+JpG~{U>qu^i$yd*>{iOo#*buL$_Ze zGy8Pg@!Bh3o&#n-+$EfqOZwM!#XrL3(SwQj9sk|7P7FJ)*5Inf;Rqt@?0%&e8sPYb0(<)!fHbO;y> z(vXpv`%0B$zU4dmCa$S?ucVeTMWyZL-P7m&VwGG2|WQD#*<#m)P%6OHi8u` zNvv*7V7kTwe*Q$26*JX#j8~a3o;JvJs>+PyxX>N7Uw~?ZONV-w7Gt$h zjN~Fxqa{!i1{E@vO4M+3s9P@$EjGWhR?52!Xbf5euu?0IdC(N|$TXN&Un<5g)a3FP z9n}vk35XAD8Qsdt1)^+ZiF#yic!b@0%Ah#S#O{5_U(iHzpB1&yNlE=Z!QywTXn#U z{(KCZ77yb5DK5c0iNAdHh6wlxOy$T=m=dmkJ@>{B0xH3!K=o1(`)8hA3Zli&{+X|J zsrUZ>5~yrk5t@Xm0#9YB9nI7jC(F9j5#9$b>Dh8&v{S87ZBspAwqP45YI^H^0x3 zJ~pMklT3Y=VJcZBvr`_=m1dKO_Nnny7iy<;eOD%{2w)|YwH_BnImn|#FBa+mehH%H1EfX#voQSh2%=OPNXa#Ot(SlbrD@+L2q<=t4; z=)v*^pZvLFSvQ80F7$FJz@tH(tyH4fqeDl?f}WT|YOFQ(N~Db{RNE@h8nB`}=9b{! zFJ~>6zh_(2j_#BPZ84|RirbSubY+65_F2HOS!VJLv5*sqh#S$MLyS%W9;}2ibV7f3Jb#VqtpmI{`;^!BCTnsnf7ek9sE&lk2++Y0lFaG$4e9hv|`3Io> z_LJvvxwxDHfUjMy1OI(qBTSj0Ui@AKtV$_h-s>eMp}zUxxNI`zM$@-W{75oWW~Apo zdKO=BZxomFoqh`Mz5D=PdEyQ{c6@vkL;BEa9lHPR7oU^Dx}ORRM|_=;8CMBq(g7Qj`oldOO7A>45DipMs<%pOJ21 zitF3r*wmB3#*U=CzPQ?r#kC$xB+Te?m!s2Bfu(g}tZ&U=V`mn-M;ZmbD;xX*(G4A8 z%=W}E+ZDx{wg6T)`?01qjI}LctZa;6QGFOw)jYt2DXNdKI$9 z5)i5_0W-SeF7(7bQU~VWufbi37QYTX2`2_JY__>UxUvB!N&$~iCbj54kaifQ3=lL_ zh&q7EfRNpYh|?@a&jc##t2S*Z+!l>2dK9=i^q|CvU3n+V2X>tZ_bKkT81zy`Vx5&! zaf-DfHO$non$1R7Y-RzfMyG~aTPdq+%oaV8kpR*WA83xk$i@5;A%|YPW;xNuV?R$H zow*SD^9elr;9>l)Z@=!$_={QQU9 zD_?)U>y^G{@qf#u?v<=uxvDM)Q@-}E1}ecxm?|ZMVzBa=0@nGiO81`iQr;^t{rugd z(#a=KKYHUK$w--%e)|3s`0Uh^_~hNkaq`67c<}IUT(^A%mXEZer7D1!#{jprLb{%; zmGYR+EL6!*2~&1PSzl!atJF@FBR^}O3`MR|fT{X|6pA2KfXYS`-GbC}8do0oi!)T2 z%90va3Cx@&uTa6rj=j26Z0USvJ(4cFWQ#HiS)u~nn5dD=IP_8zO_)lMwv-}cEkU)d z1a;1GGzT>3j+rr#wqY>kKyS=~7Oxs9eL-^67BXWv7ZMo}HJOwR5vYz56~YG2#M4Mb z4|hcg+!ZP`#T@9bjUXSgNZFtvK&_}94IVApf(DFa-B{k5#On4GRy0Kgq>F2OSXLLn zy4D2NG{>+yAI8dtFxECkv9=|S4J`?|?(D0@hV~Se=De6lSg|Tj}09`Y-kN)Rg)KM8hrxO_03VNYK&k> zU09$xQy0WY+KJA94tbjjRYnyuto`b#8mN$LbujJ4P$q!xs1r>dgFJ5!7|`a|q9dqB zPuwP|g07fd8ePoLDaT?%jwO(Ug&qVtkzC10tG*0=QzcSfEAoi|>XHE@d{(%OKdyl6jo_;8sqcVWO3{}>k1bpy%-IAG_Oa>679RA=wFJ+k` zO94CyvHtEbs^`q6_3+#DV6B&)3~`qcZatL@W$3MoVevpSPQUa7{;%JBfxrFi4E~Rw zy)X4rW}XT(d9Tz^m1px^i$PZmHw9kB&wj{#@z=l9{gu9^^4~GvRRO7TRsH7U=Ww~W z5^(1O-S>U|^AC^9kzN5QKabg{a{O1G&v*T9F8{;@m~u5VJNciy`G|D&Swm&rl*fGn z_1wqL;-j}8#qo!4z#aQHV)xo<*-cJ~NYJi@(_HX5B~aOPVwTF_y|_u4S^MOw6V^Km zP-T|NP%=&>OJ$>g$9guP6qpjIg(&PKs+?015X$^|3=R*75sP@PR=}aJ1Sgvq)HX(( zR%Co`RQWw(J*Q-g9F3$K6AeEywhE+7rO4V!QR^r}-cycdpBf!uoye4ivknZz%@PC& z;gQm+1PqiTQNx)wSAca@S82htgfPu{97s8A2%FT1S<2Co@u9CKEK^S$3vCHAi*umS zqZU{bR)p!Awj`G4Ls(iD5GWF88(WhC&-Kj(h|ad9z~FP`*^1f#7N(s7RRWi=U0D~z zf|NtvclA&`t{Ki_M{gE8`!m?lm%{eGICc+bu(>OYE!`2!wuiC4C5R0z5p3y9V@qci z>swP;*OA83#+cM|yF&&vIm=LIQK8zPLe{`+wG_-&`;%^rRfhzqZ2=4NPA%#kmFS6@ z(GxSGFK)#^(vG3D8~rIKx+1m$RDFe^0gk?g2`2Fs(4fj~5mi84#EXVx5G~oLKsD{N z!Ee=wiHt*ED#ve5GI^}(xnJ@Hm=dZ|vo8WFrB>Xcz(su?k4s=`wVI*Ts=w2?Qtvvq z!;j;%xv{?QEW_2;9U&3OF{6Td8RmF&3C=h*P0Kc%5(l*i{t-u zp#JQGXD&3K2+?o2&iVZ(CC;BZ2EKl|U`G1&nP&=}{8LZi?E6oG*(p~)6RKZ-d_rLQ z({~;RgX5*&eEK}zd-ZX%tH_ZkDe8}zP;Dt>WYlgFsMKf1X`!c8A)ukbhz8YOC-Nbm$f-Cfln>j{mUg2( z=XFV#Zj`E7|F~uB-rcMMGFJ!woGl%(f-4sWm0Br9FdfomJS;T`kwm zZE0+1ieq`sC$X*}D$loeWWoFOjWPLnTW1D4dNR0rum)H4XR)OtiXFXi>>f;Fdrt(r z`s3KupTxGVI5xFKu%#n`ojp1Eb2hhUv7sxAnHnG3Jr$_dt0V~3p0H6GR;@lATD)4c z`V8m@n$gOstGW6rn{1PHK9PDYY6xLrQ&?03Q~8K!U|9m-Z~?Q_YL{MA0sMbc>$9RG z6-Iw;8Uy(%bmS6ZC75t?I6@;pjk--p2JA?OoN^5~^>CWXVKOCiPgmf{Oq2lS(O-FXC7@mos#gNum0q6@ zq{{OveZB(D`L4w<<^6vMsLUF_Zzek5`-*|eZ1pQE787j?2EBoA<89L`Mz-4M{Yo1IUH# z(%GbJgxWkFshBD9$j`1S=b?Eo$NagjK9A`9m{KMSt=Z-}_DZ*20V*?6MSIFCr=_SV zrL>Cg<(dk51TY9wW(=&Mv8G0OjZ;^CVamyG(je)vf!R%6$c?x~S1@KSQz2@sM9yJA zjoSdilu+ypThW`aiXL+~Wh+RPGIoq*9T-VjF;(NiSk{TWvyhdst~#0vBJbA82q)*_ zsk`KCdp_twW7s3ze@cY9vObxs=j^=*^;1qMCoprP#+0C0+m*(q-W=Ao$FZt0gmtYk zZ0Ss5TXz%wef95+n0W6wYhc6Fz4V5|;@Ci2+bb6@HJ03ZNKL_t*99mCcADeN21VM}LF;JUph zhD~i@tZNQPhPt^Ug-z{gDJe{4UFZpEk+-N&YgD1tRfeIsMIgI4AHstA5c*>lG&w3z zXI4oxJ1eD;#WKd4t~A#7WiUHXgAIeVSl3^T<((N!H$*X*^@+Zf6Ie8Cp>m=%?n8G~ z97FjkjJMRGvnr0JR1h^GH&PxmVs--}c0FR8&~lql6>%4UYS+oJpP6dNXGYj#l3FTH zGn{}Di$G1e?4t_!-Ll}1(kW>`QO7EiSq0BrdIU(L%4&wgY!IaZ)drmC3OdXP(2LxapK5rIDh5^e0%nFafIW~w{ohaD;+abuAaUe zOqIoc7sIVMOT7~CuJpR{wdcED>GS6Usq*|EfO@$O`o*s)P%J)v%ReOlF?m#{^yy<- z<2`#JlxOo_3lmIAXP!s+@7$oCy^wi+^*+J*U7S1h6uv(F)Li!Z6n=5$yG-^QX0>OI zO9|l1_nyKR?>>#M-aC%pojr+<-*^IFop}LI-+u$vF6hBnS3PJvun`oH5lE?V zs#J&>N~C7T#!}v`k%mck#Dw9L14BtG2ID5tWR9mSm`Gc(xFIMadLCQr94a(;D==Cg z!f1U2bbE^E3JopR0olE73R%Uqsg6yXq!Zn9b;H4o6D%Q6gx?V;M}Jgslk&*b&F(?hH0|rLeX=j)}A#HLRCvR2WWLu(mykWep)rW*nHxIx&-VVIpb6 zP}qQezeZv>Y>;~HWXg^ets!h0s>1fkMv1NCjo3I`j|I&MbS50)oF$fm5r<@XjWHj3 zYt!hd%b+bALwhEI)>HubhzC^xE2;u^R0SPKxJ~fUNZU=Y8f9gP6Z96PEG@2VV7K44&X0q9_iWOl#y4lo@AEGQz6 z*RKmq|9buv{OvrORNn<5Dslcz{DtxL$-k?;7T014YZB6zD6#V?M!2kpAKffm() z2w-_*5KEiFlA-p-O=$F#p)F*@bV~x0&1tdA3+f6!rF3d)joQUzBDggFSuKxPH7D*NruS@7dHCmbkj7O5S&1qz>1Q*Wvn+9IhL#D#TcA0jMLj zxOTW&$^cut6PWExVCP^p_D(h7s?j=;W(`I4$W*8>7&l;5d+dVFbyIIvlmg7C$Kxi9 zMhzGZ=`a@7V>)KWOx%L0s0kwxJqF`C45#%neKpO&g!UMgccw7i6cO_lu^3Ew#LT)S z=|^W(Opf{e4LNkzrqK{}BOh_0HfR^%)`y*FO!|}cW0 za2Rw5yPc?sN6}oJMng7%+GGG-4Jl0Y*W=~`vv~8RBY5xiNATq*&*8(j9>b^aAH$bt zj*E)s*Pp&1mY9Dz_cH$U<%{^+*RK|04yp=J|NQlvU=%}Bftdo!;@6aC|JhgN&z$di zC4gT1`acC!!uDdQUJj)$sV-O4T++D6O=TV$yD4c4d zlRmeBa(@ull@x%gboH5?76-pc8T27#6tdG&=t@e(gqSept|GcR(dv%-k7PfRK`jnV zTtLTBQR)_hhB>Dur$!v$3t(Zr zU$mF2S|Zrc8OMh1giIW9oRdIp4X7pKT-ct*R7(b|hep|`vXshwTg-vRfB`l3QZ)Ir z7)ZOMgU{|bvtN#hb_FWX6)eF-#)uWoUTo+JVPkg?Tlyl{HJHHFBUy>v16l0sO<`Mm z3|IFt3(ez(sb-1mCK_>QyaBx4G}DSb137GJ4q>(_h^ug40=#_OgDe~o;0G>sX~89Bf|pQ25YdcBZ1lO zH17gV(!eMxFoE72KNqcf^QTTmmJ zeyzI#4Sv1Y28xeC+=Jd+tWZ0x%V02{#&l;M6K&NP%qK;b)KL{gM|Bvj*^rz<=pD;a zRK!7hMK+5{BwMvnh|iTV4h{TX1401{d>#WVCa&3;^WdFpI&lh%S!%`H#t1@InZQ$k zYG&h9Qvp+DIb0?KqF$HCsRDMBOipnWwY@$nD}in~xDiM0-ix~bx zUkuDEeXN>S-#Ir5s=QvDxfVmU_$Xft&7XaE9N#AtU|tMT<>TVl6`&Ts#wOO!Panh2 zPxJb;?1$oxsBca`EAjQ|=Wzbi2@t5Czw?Y3JKTHYE?hgi2s>6!qb(P|paJw*bs|@x zG>IKgIs|bq5~q_0Q)ZvcMirA1UReTQD6cD~Cb|mhM@tJZott)|j#L3D-QDRoN|>@H z8nzh_=Du_jeMQS8{Kis&DKk?FtGVVQAGQii+tXeUsPzG>$fKw?jTuy^c4)+sj(SKo zO=j|8ENh8jWm{Y(j3}C4(_R4T#;ybi*U6j%{V^lDB6=|r;c;~=9~BU=YtM&&>8Pd2H!TVo}b4!LS+wp-PO#_1N5-#_G1PWURB@ zN$eP^1^-k;>w3sX!1s{l0=Fbh!Wj3zMU5=7Sib>%YaPtz2y!wNUu z{Vf(b>f4P*v5Vw!pTSxxflBjnW~#IWq>B}82-#Ce(AF^R!C*%g%ceW9|ElFU@x*O7 z{raQ$Ms;e%I>;^y6JaohgQVoetFn5AyY2@#5^#lKQpCejfa_A29^{AMF8 zrIAE`%DLk{8&OJaRU}h$9;C`t6OUR-7$|EgD;0xh8adO@nVBh#is{%y$ES!{BUve} z@2LHw7@TWDxCg1)%QYWXbfi7f3}R=!GwBomPS!euY87gnS`20bn5>J+%=}X7KReS{ z)0q-@a)M}GdsJ$P>pNnSm2qyKGxdXM8-}uUbBf5!JtwL1J{_7vCUnH@puV!%uL#*S zA{C<4Xdr6AaKefq8l1$9;8^F1CJ)wk7BbWAgK>fBp0OaBTCZvJH?mIJ8 zg750VDqPi{k^5_g3iZzo%>k@$@=KTgz(gLmEa||_i`#L-f)?C3(~O&^3n0CHaSIr? zE@&2@?qfzekjBBu2JrKC4P>ya-ig6bIr{u1n9i86rZp(FUDkNF^kuMTq8=OCV;Blo zV9-~NrPX$9YL8>jXe|ye>&1`O4C3|`{kU~$7j9eLhuhZ-Vei6r>|WS`T{CUiFj#}p zoD;473iKt+SlpVBf6uO{MHCOzvC;vHk}9eNT7xDu227xCmzxT>O@I?-geyT?AF^P& zvkuEg+A-EqgM8eDjL(Rq*N8Ort#L2nY@|jUlAW3iit41`F(ISUCN10qqss}e(*dv3 z1)s|ex7`7&(SV?bM$|TeEureNn&5NV;IWuww3$GSxGe~~jL5RolnbD*Es348Q+Vo; zTkyr{=kU!>U&goR-^QPQ{;rIA|LUjD%=xb07o^JjRP3x@DU>YrVyF_X#USN%SNAGihkH!s1yt;>)LTV-ZB z6ZVLhnf{dlr&%&n9*ekALIJ8tTPa6)f|S0d1SYYZR+L}Qc6ZS7u0z~{zDniR6c~! zYQIc66}&|4qATs@nvswZ?SX>)irw$-fL^-dtj|tV*=1&)BcAI!IiVE6wt*OS52rww zUOQGLKqcsQ_a!9=y#3?#*gH}qAZ6CNnHh9*0P7lk5?95@ z@0U*hM9w9dI8+0e4w50`S$`Ufjb{mi-CG6n0|eR@Vi`mmw75#=MMtvMIdEn z%HYa|FWxBJA$hA^H_qC4pocY5wnsE`Z~)DzidCr~!`B(S2Y*9K)Qm6}w_s0dSLT9iZa zcrS{9L?JVs$$7B2&W}a49xTgyvA(0w&EGzdoP%i^`^K|4FrLM}ku3HOrm%M)0|M`c zg-tj#oyWfMLRbFkp$sTzSePxS@?4I{W`{V;yKc2MHJ4I{XJ%OoD%yBdc#PGakDy_m63DL_*emRQzx zXK?jI3$B@Ll`HS}O?TkXq8{vD(2m{X&GHLxSz8KAT2ffh5Cb)=(~U7qHzqLN5JOkm zB`1=$q)P@Ux^qF)N35vw>BUx$%k?}C8j=?#s0wE21<^mJ`)EWR^t#~pdEj7yB^0Lz7-$6 z`HVpI_vhckFF$_`zy9=P0VRR+htFTU5G(-@s^0Lq}B z?(_+K`Thxf`qoqU;{E6G{9||G-dnE59S66fK5oZwdrrpu*nFbqlSaGDOu3)OY0-() zgpedGF9s^>qs&_AM=2Sqru+g>6__gK&I(M$msC@5v-ca+VoXfCyR=g;jU}2eb6v91 zS?7W}c8O(oQpzRkLAb`FpAJn8QH(c4Fpvw1AqPAAoWswVOE8dhiol#2&=swPV?FDG zgeS)`uO7}}_fVBg6m9B=Vnu@ot6M@?-7xdf{WA;dfxN4mV6U2wZn?_P)V|*=8TE9jnI83!8CpsvZZ&YXzovEbqiEi&`!KmB;J8)pC5!+cG?yJU@p*n2pua(jaEeV;qE^Lm;|Knvn)fjDv zf;+W(asdoC#KERy4ZRXFepJN@K;>wv&!v|wrcN6@Qnj+2&+RaaBNdPRW|KjdKWZw~ zC@U!yQ)>d1!zlD#W$8*9s8j^ZHB(tf%_Tx|f}^!xea4U0`Uuu7AHm+8EAZs~H{GuFK8_DwKZ?)Zd=kI?{8jwv>}%4~;L)F8B~TfE`0`bO>L1U&4n{FF6{!7h4b%%V zqj@Hhu2c>vhUb;;i{W~nW+kT!M|f&V=L-d*#YcX=SJ9;MIYs=Rz4aKrc;~1b^I1Rr z^8MrZ^sOhQv;WPk z$fhdGr7KU_3A^(w-ZNt*P}#J);10#r(v^jodjkzc)Fm>yXXg6h3Kd+mZ=+_A<%KyD z=4y{o_7_p>$;J|cFs*f~Me8}$9LGS$jT(naR)wtS$za_;9hP*Y(4Y38J!}!pDMuld zaZd`;*L0+@q&^@fBW%9x9<9Otxtb#Nne4bzzO=1BEuh^wT!StBHCWLS$5f41I{3X2 zlZ;f3W?UG}6y#An-qUt(Cg+yX%?%wiCdo+ofQ=t&O?M6?WlCxHU>tjf64*PO#I-|7 z>>Er=92}{_!Lb~!o2bF{Q*}7JxEZ%EYs0OJns8u@n$!e#_r>M)Ylkzqx-X7hJyGoL zjbYDVO2B+zv*$FF+kFeEmb?)$;WZj#taq+uj)hV@sPK>l>U{oYG>p z*@Ht9b@{_4Z}SB1S;QDnZJI z)c^SU4g8Ovzlp#7>?Hp34P{e>i7G<%`-B2o1-!f}&;C`{;y>$B_e$+lxvKuFfO;vI z{xd)=2Cf2AUS%@soul~t?Z@T*+^J_|D(dWe&q!uUn4bUe6}9u2O_)5m4DBB~(R&O4$?vN+%x*@hb{D?YTkJVb;rgWEmc1Rs`srEt|Qbu#aBZ zJ4A^3v?cI!lv7(OrX!p}%KJ@H2c@)zv-c@;iNLg##v;{zENqR-4yE>x787+otRJeu z>fS0WXbOvTi6f5m^5m!|O*&|-Jdt%_CF`fnVX2$$pzwX79@oz_O83+`6CS?(i**u2D84IRj2CS_0;O500IJ$c&j_p~2$F?uTBip9& z(54AIv}p_vY#7DeYx;1{>OS1Nu5i6`MVHitZ&=hOzvx)Yy>_}8*Uq$I_f#u(j5lLV zZxxobC9$9-h6QaYOt+*kTpvbn){oAtA59q_vSB;oUJCMU$V8k-1s#Zb%m}(n;&Dn7 zYf7fXjfy=0PEF0p{t6A%f`4y0SFg;ykH>w={;UQqs1gXeEOLrtIm}@yMQdFQtCtL7 z-;TA|vw0b=+qo9c9Jy6?O>uha+fQEtXZ#7$;`q}!W~i^=_g}s$@qIw5yr&qN3fzjH z{VVR3KWDzH0#fCAMW9{@xW%Bn(!G+E7C?Fo=T0%^&rUCXtr(=V=3`uVHV4x4XP!eL zUci^9pT{pgJ&6zBIEG^n+=8oT7l}n*ZOkDOl#oLw1}A0%S56dy87k!_90e6~64B-r z!L+PYcCd37yH%@}ZIgv8l@hBGX=HI!l&eRm6;!62XvECgD4R_@*2m4<6R$OA?ww5%g3ARViAVO4h;v%@u5(V4__-j9)-M;b^IH9?G5`(z@j zFKQI{(WH4pXA)a`Gq`4?MrwsOE^L+KGwYAc44Ii-Gh7ha6RKN!(lR2-BmA=F2x#KW zp@7kpU8af_)_5i3r9bKJkv#TJw9ZAd$ciXWBB&Y63J;A};m~*n*H2_|!(`}*V9-5tgaV^#R^igw(+ybX6QZNZ(3o8*1G-nOU_ zhiB?>(^S0xbZ18dn;N~CZSY`AvmaYq0+?-ZVQq~SD>6DPOKGquR*tE#3QH1|m~FCS zPhSiNM^m_eT`!Kz_TjP3!+2!NARd|>#6z3<@yO<3JhpvA;Cf=;BAnQ_1dnVT!qKZH z@xpb>@W7@4Z0iVOGFX8vO+nnVvL7!USclhd*o5cyuELW$7UAgjX*|4X3=eM_!Gjxy z@sqW^xOYu29^BB62i6bZo;5unRBvC_A&s_Mmv%}6>?YQA7qw&0R10SNtFfMAyM47- zKUj}dy|tKZilHy-l_iI)r`E@u;P-SkXqE5lRKO znfvjJk6y#CK6yoE{F$M0N{Y=XcKMm9e*49X62JT6Wqf;eRM&!M{0zeuv*y^l2i^P001BWNkl3=If1p# z>n3Y)-BdLWj!}r8#&zQv+&GmJ5E7zyENlj^1niHOwc^f&jo3es!2Z5C?pV}_2Ud6E z-c_Brdugk@e$TQt{A6VZ?pxW3dsejLM=TL6Y!IOCXb)p!-i_5cD^^umusm(V;~a#N%6rz<6}i03P1hhle*0;PLGvICj+p zj_w%6vE7q+_S%Jb{=gDEyMGbxpY6r2-XLb8rP$w}!h@>^@cN-Oc<1I>yn0|2j_+E4 zr?yW?9Nj#I$2X7R;SECq)BD!;2v7;td)IX1NBo7cyj|k1mEB;lByip0Htd^e!LHFf zwvRSo>qrA;hZ?Y|CnrrS>WteHcGL$=Xl2qAY%g0$CwwBIPk&`cPzVW(uP9y+Aa zkzZ5LsIr_zs46STIrT>?NlpaPW7Y3=ArkN-mx?1A@X8WECK&u0^bu&Rj$x=PkCy6~ z7^v)AvrtZf-<)|F)PDcwqZh$-?lee|X4G5__4j94M}1kcQw{+XUgvu*9SUp}pz>M_ z&f@2nx-Wk354l&sIp6i-=G1=)Q2!C4%q*4oZa#lLpk547F+Q0yLizliC-K?aPvDc2 zkKuz?AHwOEAHtbe9+m?6$8R3POULfU6ZhSOAKh>j)-323sR?VRVJAoJRG{m=US9%} zsk{(+8bcS1O03)vsQ|UK1cp-1-IszIQoFhURPIFQygy;eeZ+a)H5qBN5-ZW z@jV@gxMhtrns4JL4HR}cpW;`q_RJdUjG#-rGsytyBb?;OF&!)x)#_93jzo3J!nDSx*Yb}z)+2Up|NjT`Xh{*`#~s)cxd=M0{| zY5`8{oW^szW^jDhG@jf#hKDy2*aMOcGb83be@XBc1T*m;E$0eBpCIIX6+vKEyDB?x$ove2)) zDTj{wG#ZittY0{c6A#~opT7PyzI^vt{QgtU@3YhYGXD5QL4#Tl_PHTcY%q78Q}Yr$3twBfo1Ez+$%IMoKm^)qd_VL>ZyTGWPHnLRFT#qCR*aqGf5+&ohw zFuh|@UNTN*o6IopnrXlt)3w-IZ^hJt?-z_5<92!jF;7B#D8_(m$sRrCMO&L|AG^z-vpRDe|1MB-Fc$|M?=NO*a zIfkQKnT_^KJh5p2M`!!-*rq}}zIgyoY#kDy^1aXRUxXJ9EXMI`XK?TOPVDIRVRfAW zH_YVl(xIg|b>mu`zHT+%*|!`g_bkDidza#^11oTH-!i;%%@VwP^MJFsCwrPhb zFxaRZtoC6fAHjH293zb}j5H=N+>}6nT~wCpHK%=O&4nd62*5p2UTY-?RM4s2V6Cx3iB zPCj)H&cE{v{(9~t{`keKa-`?6pU3|{pMOm<)ZcvmJbv}*34twvJ6{m2^FfsWEq?7% z_dgV*%I7KI{JvM!m4Hfnyvs!~D6e#14AQgj9tGo4@GO2dA4u7RVtjS#8JvCZDSYB)OU+Od1%VszF;rFb8-GrLp?Q1x8KXDoxoQYla+ zP{rSL4ybf9mn?M-sHW0VSjx-)U-I7bE6X)Y_eCY=AgCBH=d74Og5;cYMkFUA3Mk2l z5pzHk1DL^_b)~BA>h9gW_u1ooIseRc#x)-%K8pp0>e@YOcYT=Sej=_h*8Be6YleGH zxLaGp!_F2|s0vh7s9p|M(%^*d{w!B(nS#lQqD($<);mWiM=qU-)D4S~uzD^c7JDOj zE<5MDOCu9D8)3;4V`o$*1ZuATJb`I>a_mUnh?@9K$O%{~MdXBQL&g^D zN)5!GWPdbg2H{X%C=TU?;7I-!9LpO@h~)Uo7ndt@Ndmh>RB4(%2?kQ#ud#LZ|<3c&spX0ZLxmd2Q%;l>i&2h)Agp1KBY zi7U~Oyc&m7*5Xj|8nnf%KvUQvG=|JW&AQ3h>ACF9=*sp- zSEe7%Wch*T=W+vNJ(C@P3#G9*UmA~d+hTCOG*;r4m&)UDsXSIpmEhT;U|cSXz?Jd{ zTq+I2rLquoS4ZONwh&z28jOoYfrga?<4Rd5u2zQQT2%xtRfOU8?j&?=3qn<(H%c~m z;7HCo+-Xe3lLOg!){ue0?a6pjn~di>Gw`M8?@ZZ+#bjkh zz+$lX0uxrLflHAYvKmPN%Mk864}mLY!f(kmY+Nz}zKf<}*_=t3>+KAmNo;`Ph*?uz z;N#;7@2MW}^m2upyCc~0&%xeWAgURELY1*s1uC1Y&+v8=s4kf1g?W=*rAt=mx+SQ{ zh(cR^K5le2;M0S%_W3s-r>Fd`-dl*RJ0SQhn~f z45*{Q^hba?tVoA4`k$U$0*&qYJ`G%zat*Eo>+`;IxO@2!uAXd0-_=f>Ke`ubv72Qq z?o{@Z^m4#NM`IY8gRKEn_Bv%peyUTpK9htLCr_G^Qf7t9q!i<*W|yDYeHK7ZVojjq zIC$GzV4er(JK4zALUyv}_Dw0gUo#uIfh&-{aRFF>A3WDxjN3n>7JG?{FA0f&1t{LK z2!#Rjuq|XEcBgE>z6^itOz_3dqz#g|DBiLR+qNvl?qq+de{4(-Ky$`s94QD#M@}#f zkL+EX{7oj_$GDRmu=WNpBq)U}{GB~;rJRvIol%cuNjqSkjZ z4#h6VnT$>7Oj?7^q_w!17l_LRTW~UUoq)3|bCcXZo8^ZKxq-M+xCPgW!*F$L7`iLs zaghb~Md3JK9D&QFF}P9|iwnhJIGr0fqX-LGq#&q0oNX6jp zG(4$G#MAm@ylcwEhn8ZzZp_2eJ(*&nR(GYNZ+kLsRL9|FO(ObsrlWsPChqP?!^1u4 zc+!xGC;PJSsDal~aJ@Pn=gU~86@|8p0JP<9ksn7UskVhJ$2KXeT8*Nx6)2BgClwz| zT;_$YL~)caSi4Hq>c40*f>!v5Qe8E7A{NhZmDnnwN@JN7YgQc`t)*Wod#BQvpkhpw zW;veCfQJ@9tl~i`%F1Pp|Ia zmw_IH@Le`j%01>z_rNqyC#f-IogP0RRHRgy zT2m^SP??WzDK(}%XAs}R!4?x8?IcM>)yhui1S;Krjws>0b!PTCC32?61T2_jgC$d} zuyU$3e0}WUH`@`x^WCJ&dxqb96o#%qlCKYds8-GPyAZR+;i(D_r7y`=AoP|0#Ig-S*CL+D*&DO!RRW9 zkS{6M> zTY*z4Yj8fx4;OR%WIda)9$o1h!1Y45KQ86^<7z=Lt`!EMyC?+LibIFNO1NGt2_LrZ zt>L&{5`im)#&g$8!qLrVibDm+SNZ|c z&NMvSk&6EMB;2WqM}K{?fb;R*EZpCfhUd-sc-okYC;PI+?(fM!Z+)_a1Wx1y%m16s zqA(mUiID&A+hbRuK6W)4QZ}MFGXMv&gHRvui?Xn#C=FjBuw|)L^2T|HTR$5Ci@dOW zsy&uXcgB+GuF|!NFr7Em1+KP6ttr7th+0?}Hg4QFj2}N9T&=8ZFk!+30V@Xpa?3Rv z22FBz#C)GgQte?a^xfgqAWKOod?SCy#FMAeR&PPuzAs&9&lv*e|)+l zji|XPi0AC~uV#j;h5+;$&lRo&r$Ti!i2lem{X1i=3fAvk|7JiP4W@M0M~A2>2Kon( zDqM|c2vN1q1D8dKayNzo_08S$_|vmqe13EdukN11yZe{$?DiS-Up<1yw@%@4Zx?pe z6qefi<#3rK#;P3shg9%(VEYenSE;`xnyr`K-PNvaD6FV9Tqur#}rM0O9-7;NN5dOJJL}L9X$A z-ea8dc(%V}-cMxtgTOpnum$G|L&UoBgGDKFWpNA-XTl1c zNLqz6X}&n0wNZe2A$t?fWp0pj9uu-x@&jeW`f3 zGhXb;o+Lcpos4I@)A4*ymc&tC?#;oAeP8VP-fTSCogwyMdkXq%6LF8>frd;B?9IZ% zU1@mMlqaT8C1h{b#Dn31)A>PCawY%YwuYmF9t9JNS^ntA4HRQIho23$CajBDWxzFR z6>@_XBh7z4xFLYOA2u$WEY$$3=6Fe>icn?yKYp&IKZWIZDfYLtw1lOV&9K?n+GB#H zwLsOzn&W%M8xtnjL)FnzDq6UyVAY}-2;8s`LF?xuHgpBr_7vhBt8iX*9Ramoxm ze{sJwL9zPXIqz{76qPIiO7K#x@_8!SDejzQ?jRlZy&T75iqkkzr;EI8u+ql?8|J%W z^CCBdFZV+Hx*1YG$}%X9&R|R|#do@7?~~R{LHtTD=>T6Au^jdBYfu}z3VV__U~lRs zf$72AEjXMX3a%`z;lB0*vQx-cnuHuo+lX@|kz%ZKWc}mWtr0lCEeaP(qld4vh@A!V z+^TsrYqQwl3_k%R6FH{~LvgAgM3OrEn>4<|8cM1r8lU4kCvrA}FlCt&U2MXWQ000i zF9;X6hRe$GCxt0jX8M`AKb^ioKuVYzN_3MbQL0fw^m5*2F~ZbPrUp!Vwi1$|xK$P* z)>~=-lGhZr1TWv=IpL|#@R;x2E|0{m$_U&n4-vav6)sTiDGkP%%r!U|yFk{#y(#!` zumBHs#NkeL1YYjX#Jl!90qX0<9K31D9k$oaxp>u-gO`ojc(E@FgL^Z?9`8=YgB?kD zxH|=djhT4bl!YgI)A4Ly4xTmT;(2qPxc&Ebrb=kwN@;|Ya^0v;#+B+g@i6FV952{{ zQ`;iMjunUD_|_=-Z0t_-mCs6JW*~N^ZANJ{cUdi!X5mrm=D~l-RIHgZQMRkDoa==d z6K$o+MRxdcCl%d#YfD<f@rA%7Cb)wSaZpcuNqpoT$of|LkAkW@jxUt~sJ-va1#5 zPIJT3d7fCi#2ay8D{*k&R=j+8R+>)#%<{`u-C!3gRjL2+@h<+?=g~{0RGo5FpmH?> zRiXMLYIL+`$5N(x{d<+EK4-yMO#c}(CyhobQcWCveLas)PewB%=|uOQ_VMvW!ya7* zVX8o-GJSvV5?$ApX{vUI?5aM^)e>{Otg&o{1AON=A$XZ5 zLYI3XcI`Bz`OQWCmZcK=VzMbWU_Mw+%2KF|jXp?RJsDXWXQGz7nbQ5RlY7*W(OOlDPwFAk_q^}pSb);?(FkUQ+0gZ_b1u0=lBV47RJd5>@n*@|RCm;z+ zLi2cT&@fO5TSAj7pCM@Zce(O8#$X9j0#%_(l}h6|U45!jHA0kNrQ6T@EQvawvsqLq zVM;}+5G6nrq6$(~ri3P;NV{7ZjXM=l0!IRq_Xt};l+W|{cK|Jm5U?6R4aXhEO3Opg zT@r|ETLZ+d7H`I-f=xJ=vkuRj(m^%aUl%Rvl}hzZYYtu=$im>BBoL^ySNpQX2vJE? z?M{>U>Oe!f0F~>bT`73nkcQ{`bMUG)A1_<-@N{oBUNq(5rMUh%c(5}~l32HE6VO|m zfO`#D=&4JR|9=eEP_1(7D|c+2E{&AF0#vE{)BMoPomY8VurDhJ)o~l7hBAbINQ#a|KkLoN-2%o_qWa*MB@L#!V2gT3TDd!OkA;ZZ1;n@9yj% zLWFbAJRPmT4Fm-0-04nOI>%jrdZ@7kgMBAuNG3<55U6ZMPi0ECpFsWh58U7XCBtuq zr-lJ^H3QWgPgNy5);bzQ&DRv1W339x?_K{UKsCGdUx%jw$=^RS8ccc3c=r9n^8!?b zsu`w?p;Dc`zH<&Qde7j+?Jh9_l{KjE2CiXWO&(S*nu4hw)>tsp3tsNrdp}-^ms!M2 zl}Vt|ttU{qFP}yQN|P8XyGRXzmd_Bre1~e4Bb_HX+YAA9Jf^!%!2Bt;ST)-T8yC1C ze6=?sS9=@klns@`mZ2<)#o8-T61oh?{}-{W&M?j~Y65}#oykh%1SEUg}C&BBW(PEQewOiV&r%Pc!1AhFh;dRK>}4Bp~~$VuqngNSdL_XL*glC3tE2 z44=DIMx`2tTU4l}!MMIP09OnB&|SP)uJzYM;$CeOxDM=2#JkoUylu&r z4eZIpquuFvyeAU_jX4r;?c14(n{`RJUYm&Sngm>{ju*RHlZf+G3FzD!E~Rmdueam` zqbVy0Rk7=l8?*!k;j57sz81mDr(@YPN35Rhfh9AXrTrgArgJbK_wchNrEW(RppKgW zYa2T_I=R5b%@tk~J*8U}!(;?7zZ-1AK6mOwtXno0{%aSB7wF?<1HUyh(Ym_`ZwD^o zpWgT4pFi9Zb;|K5gy{eL)F zdEgTMGo~3_{b@ze=y^3n1O0eM!mgv9yGfA&u^X{2I})$XYl&o1kUV~C5onm>u z8e2maqcn60c2Rleh2UUeI1UzsLX{~yA000amy#MLg%}5=dL#e|LW1vHNjNT+MF}Vg zR|1pQ2vn{LMXo&OGrUJg5|9KXj|tEtEIQBf8-}dD%YTpe&lCjXe9@L+pqgQMGTRTw zGdF@O3-k$Ef|t)U#8*yH)i5>TLC^E*@n+YO7UiYo)|*~FIm&d5Wv11QLL|8itwbt z$o@atmy5@Zd3ex}joUj?C2`feBNdmc6L7X7PJU<^UvJF`60e3e%Eckekrl8ASwTw? z?K>MA=X+x991kp==7d>pmYC`?K?YLtb1lNb#!{wI(EYcywS}{b8(du7;pxd@|H<&4 zGD%#1PN$#{nLgPaYZlML`sMTByL1i~__$-u50j@}9ckiO|Zhu3{)#npe>a}qCabx91BKz;w{3Lf7)DgRT$HZFqC zWLp91%qcElXDK#4;V-S2DTYdyo`6-Ls*BGLk2XOecnMWPn7`1RPCC`u8q-{?!N$LH zC)r@dOegp)@<8ay$%tAr6-gU?kR7xDMd3?O7PSJE(W@lkR2R2aviM9s(Y9L{+F@luMIB4vMbd2RtnSSEJvrwG7ZkQlqu{diPFO-DK$~sKmzg!k2#(O;H z$~s71=P{onAoYEoGbutlTf{AzVPgDu^g5r{-Ar`f&*b>yEWw!Dj4Y>8^>T9(VA|PQ!^Xx2 zPEJm6baaG^iwis_y2H!UL+-mc*vhjkotigolJpCp+dqGX8#b(%iOj^!ICh{CgLhBk z<^3)&hWc+GZsT9y-@-q?>cL-L-@w1Txh3nry}1F}|9E>7|NgEQ|MC776ruzukIm-_ z&j0p6HG@-O`nLe8#!f|@K0Gg_QiSQNyIpvB=M0|RIE8`kZc0F5p`JNi#?wiTGpaJ9l54{I!(Y>U;iToAOxOJEwaW(v~$W}+}`F)CtK zh!U-eU5T2Q)dJP3sFm1}xE@U`hsp_(#KQL2)!4@pq@oB(I-Dqu5|FYk@oY&nPV;(R zh^SM-?rKGhfRI4txdN52RIn1Bd`=;%=X_Ry%6AD{7M}AyAxgk1fcduw)KhtZVpN^n z)ucuj{z4&((qn^u(!8|ot>RDqh?ZyQz~R)g><7DFa3jAe?51qyObtwUONx5p{uZ` zDg!spA3*=L4!nMN&gfnIvRm>sOm_e2`E{AB@u#O(@aJb&@K4V zBUP#bcC1yE=veDm%2cm^uQJu=zUlH)y^d6=y!QF=1$=t+Bd+~e&wf#;A0C|r?ft_p zyno2`EZ#jhC-(OKS%?j(Q$m$SpuX+90IF2RP~Sh`-u`R2ckL+ZN)iRAbor-Ev=N}P z?axi4;5kKOGM%Da(r6LBIQIPz3I z%i?1EoUkjVQ0-H{@+E+xERr)pK-$E!^{kZwCe~3lKPCk6)(}UkLWcJv;R++3Yus*k zfWH3QikEKHG8E(vC8ux&8eN~CR&IvHmDsYBf36n`tmRzQd%kuc`pSg10RX5&W32lm zf4j>#jm>R4FQr2yFEt?SwzK3J>(cp2k+|Vzef(sn>)2o$O*AIKEWaMo^#k!qRR_WG zvgXN;Mx);vzv^E8zD%?Z15g@9qFRRiylB)kf*fAwC|=q`70da^6ZIL4z^N0*PxB9> z8|znUdk3khu+sAQH!NJ^b$0DcL+zaj?YQyv%DtXmal1*CK6kVU>+&kKRC^+%NzKZU z9K&|Z7=80!Yrp!}i@we!V`I5a#-xCxjn7Z^2-aPrm*MHyVo!&w%=gEIE#Ch+mHz4K z3KFXm0+A2^LREA`(XaUjsfP+leT2=VkbQM2^7?dA$N7Q3}6n$MAJOtK*rx_3Q zjYLhqqkpmv5c%kSqlONb`=(cV#*%cy#_r|4EgZJL-8(s9kac9qtN)Hx_s5_Es~rx% z<$)J~LUL5ewwsA6`qdln6^#R}v;L#>i-oj0)3|@RA`iIVBJK4DY#Ye>yFZ9Xl*o$$ zTYuJ13Wxa@@snlpQM#9kuw?RWMvr2!v%SNh@S1vsNIv|lf|D#S?v4cv2U%$RLZ`i! zp)+4YZzQSV_W_Z6>M);7dX2QBHkGM%z?-ob+w~5S36YV- z3{cca2Gb(b$&q>_n1aY}=Ef;%eX1;|<$mm!cv)UU_dym0}-;@mS5DAaUH1 zPSG=IQ6Qm~N=ilN;8qtS450O7Ky;BL^iT}UP6tuK*ScN^gS9n;+4_G{X_hM}w8n9x zQ^3w@<^L|!Q@=mWt+Br$!9-@BOYMzMxJZNHmE|QG5OYwGhz_z!!6by`ypyZ=8q@M1 zeV!i6oD>DNEpGr6Q22#-@cf^?v7t=qCjt6-cSCS!#iLT@1CW+BhgDzj5_VUxhM>D>Y%T6oeog@;8kjk_Qa2P3m^j2y zbz6DQxSjHsmz=iElm_pEul?T|lVuvL`t0M=_bOmzjW3B}08n_kYV+B9Z7}`&Kz7ZL zauF@dJO=FT;VkZIQB@6J(^db1bCyCjtz*OBT6{=~ADA*>uu<3#MEkW|mg2<8?xpF0 z&cKK~uitEP+I$NY!)1OUe#-bcSHyfT%YHV^J&Mh4iEcB-P<;uO~C0-_A z%eoaqQ8T{J@vdv>&lvn2*_)hoOC0`_bo(Ek#)B5o=TdHBmi>xJF~eiYa{sCL)K0<&qHB;aa_f(QLo!yF6{Pn=4Se(5<4zr^-(rHAYP)aA0R z$`pg0ns3a~c`cTre91}lvrxkz-W)9G5DymmjJq_G`?57g{i$+D)h8T{PUi}|yc&KomG86jU$BEQX7$;xBy(o+WrYS4mM;X(rzHZ+g=5-Ybw# zftjy2=Jk!AFOP1wMsufgiHNxQZJ9Xv@lwJwOp_3hJ~I_}4Zo;YiAEWH~+3UjX&bl>p4{f)tV$1pw9b;g!mqS}nNHcZg-XkCThw#0+L! zo^gWbnIWy2;#@KxLL)~1p4B_W(FfD;P$u7>@Bk6$Jhfiv)jx$oJ?~*haLxUTo90E! zF@D|aSN~{y*L}+((lxdt`Bn6Of@V1GEPZcP#dfbtI5WpI@7-PmP%e4i7|LMS3AKeBUt45;HVRvPx>mF4y}vbd|2LMUPN48ZfiEC7Zb1KL%XhDk5jtZb{ zPj+oK2h%|;)I1fE9oCWS?JRH_zCW~liGTWEsFtF**jiTeSzPaQjWkD4d60%nZ$&(I#qFp2ko*6J5lHCd$`wqCz8~a+*m6mBf0e2bbgX< zZ}VjlbS?a8W@?(rL4`R?q6kHDmBPW|OfYk1(t;8b{bZDbK{?XAt4w3;Dp-9gwC_F#)=uvT{#YFA& z>(|*8_cjQT4uDA6vZ*`$@4I+r${=M@ro40W|W|dd=fTwr|t_&9$2_CVdol zZ+=hBK0kK#_vO?=%(*J(lj=7f?Owh0-8TQi`A>lcNn^+AOzGLTL`PqfQlaJ$xCca^ zdgKmWVM4Res;6_4cYU>BBxLCv&-Rft0F8O;GLkT^q!BEg?})W86eiApe^0^s z;PwrJHHjuJSJ$u*_3yBjsa+;LArrs;^SE zdDD`bC4#R^`d!Pqb-=h{eKMXRKR(rlxs|<`)+9;SwqF?EEb{xdRI}`&)np~Tkw}0H z&8?pm;3H;YeR39RW#|Wi(N;un`U^2|>4wwC1SRj^x59z`Ui4k^9lS12f|W1*15J&C z26PFPa#W5#0v}AH9Pj{`qal4HW7W)0X5=$XSGwdq|KgRv=1abKuF(eozC%+s~j)?@FzR`RIVwW_ZvzB$gk~iT}&nQHt+vt-0p!_z3ZQ>iQABKE& zyHGY^5ssVH;q@nGut&p3Rodu7w@Z7J(_*e@KV-Aq(YB4GUeB1(fN>DN9j4)ZyQ3~($~sB`0~Jw}u_n^Q zCE$S}$igJ&KG$;O>5;iG9z#L_asu6zpP3WlE&tdw^~5Y-`93hax+rCu5xTP?gwWg$ z9lV~Me%|i(GDEwrk4ch`_s&Y8dwEt>M&11zd536tnm(u{Ag-eINlQZyT!Sf_i|tMf z&@3-&S?-t{?cz3wlV2EE**R>WI(B44JFHJ)0^i`Sad&yWsCIc`mUwBymk zs%gquT`%d`S_ZpZoc>);`J$j=7Z9Gej`)h5aCMWXFtS$Qk??)ruOmZ4lA%L91--dN z<<34YsfOsKroRNcQVc-!`jj~32=#kC#M<;}2!)Sa80y+qwtq6{9XZ|Vv<+ef&m|c= z1P2*0vvUHk_)4NhZp;iaROOMe&~ItI;4mZrk_H;RcAP6r=6n;g8pPtcJDpss3UM@S zT+yg|(%$oHQzYh(y}eNv4&Gnky4Mc<%;Fb*nCNJl z7n8nRb2rTvVKJ`)^SHVP7eA<8orq2x6LpBG$!b1l#WF~QvE<~S4!Y@(-w*1}F5S9Q z7xg#Vyb9uLY;}KUvs@Aw$+PBW+`iykp}iq|`4s4(aqRlF^+toM3&sU*HgVSKR~l<<|14&GeTB zXd`OVE(26O(9V9)_{HsN{)m0k#7no@91Oz>!mLkr5wUZWzlS$%mQS&!V&`Z;ZB73z zzx#3WyllmGn2RSicjtw?xk6n8jfLY+q8V!ZE?&b5gtVxFz)P$Q@toMu86)8efRi9be*p z!_p7`$EfIZqG+ppD^VNG0sGp9{ z;$6*|ABPq-vNiaKe{is*)X%q>pj!6qwC)wH;0Mo>22RF^?~8sbsWGy5B5qY8ABHcG zC7C5W)|hn;}@XL<8-rvATVvidCQyfEAB!q>san5zJTiBxYJ74R5-WflJG*nvo2E8 z)O=86d4?7*UCSc@5TS5k508{kwS{ zmD%YYvhj?q4NGYjmLGFjI|na>@}2BrdC9hf7YDHFSDk7c=H66hZ-v3O*Fe4ujkXME zEJvdS9Q;=#y}z<&oGOIr7imw=JwYB%Y>LrdRNNb5qW1m zhl_sxpT3HBi4sA=p@Wqf?(RZA3Mk;jwmJhdv58YoQ4ZqPTN*#{T`_jGAlsaqCk3Fq z1+&BvwWh7hmLR(3#jqsZ*5IZXGisztdg!cGhos1|s{z~=1}a5@9vFA_sByYF6cA=Y4g_+HSF?+qg;5jo>9yPyN2y>7QF+xg+W5%qa^LR+VpKQIIZY z>Prc$9JKwYj;>nn#v;%uzL%W9Fx$yN(Nq<6M*m~8Bv&^IW$R2Rh%bBHEZsNag2h#v zQuQE(i3${yt;|&<4E{2l3@JpN)CyT&0=MhT4H*&Pw;z){E-R@4s_Ad7DBl z!yLxnb^04~#Eh%8`!ANP-8Tq<=(#yy;%$(N-Ra{MFW7sXP^(v88M$wyR7$~&P$dL4 zy7JB}$2S?MY8>)Xg281BYRqHXtO(#>xP1t<$v@X++EV&gNU-vfAq^Qr*svYT{J_RL zllDrv`CWo{;z(drxe8PmY`QCL=zT{Bo+|=HO>G;(JYt|OCZ(X#3N&FB5H|b_V_%yP z3;$6PwGW{hI$t{&`8{C}BV2=7@h z+;s}Hw*{!i3r|Zn>1=K%=*V>iQ|Y!PsSiBam}T#!&s&UG+CC8VF(`@Bawc> z+)ORC|Kj$(>{kBsR#0D(BFzDY?+FU za2L&qDE(Wg#@%yRj#b$@HYg|>dG3hTVcm?Xqf10k4@FkPBut|@Cv4c$`>v4-a&)2T*mOM|tiL*W=yng{qqKdHy@xkyZcU6Jp2@k>mbvMh2Xri2y*hZ{{(eZU&7q3`S!vPwUKR zQz)zNw#jD;B>Jxtf-!l+G_n9dvsGzv5`C^Bj_2O{9Hy&siL~;AZ;Hs)q!N49DE-_z zC?zKvx4Z^*oYpg0 zG<$F=wSe-c{Hhj%2lTT8U%o;2>0>FXl7-LEM5d%tQggnmOU3~scu1!G>q)MJeHtaixhwT> za2Q2q6PSuHGuj4N_IpY47i_*Hr_C#{P*$yW<=sq0E7a>#w_q7_n(jmcLe9A8y;wFOXiY($!KDvdo8XMHl^nWAh(6kk~XXC_MOb>lk)hBEu=L6lKlb zu#c`_p@b2Atn#{{SKA&A02kZBC^EpMVA$qdecDWz6CtUPoRa=ujR+L>`@W-2Bsd%b zMaybbAoWi;0E^oRyNc6HPx0#uYv_U?_wecYsYp$_M%Zn!Jo&`(SB~lR4tc`z;bQk1 z9un;qWvrR-WScJ^Whqk}ZHd7x$~K+l*zJo!aYQpqDh!1+E+5~1VVUmO?F_*M^v702 zK;a*viKHCkIE^Zu^N(z!B41Uw-z!ny3i|$@?a;rT-gmj*J|v}&wKPb>VOJjJm{sg* zzI-jvg@&^$-Tr6SwIPN0sr5uKlj%#Em54Xv3r05SZg?LPwxhO>;3a;ZPwmz>6J7^O z5M?Z^dH!U7sbHS04c|t3!IDBk@T2a$+52ERIg>--$$lNKOb>s=05E&?%BLZs{6ebv zy^(obW7N-VgE2Q~_U>NKNXqkeD*8v_WZL#Os5?}eB%#(-nJeBEu&_eAzkf+AjMq`C zZGV~sb~OCV_sIdW;zpm|dfoJc`%x$R?Dh%+V)D?12aiM!%(xE z=I&SGiMQ=`FNp*Ak}@hO9a#+L9p z`sPJxex3o+0+0}ubX5Au3>{zLhV-#sW1R`BF9fM}@wQ5N<%^Pa3v z1GjADZU4^f=rtw0nhg3|PgB9)r%ZisrfAb`uk9mclMYwOz}>jY{q1M0*^Bdz?)%WD zb3ZpRv2wkdot!GUE>SUR_7&~75Wut2Hdk@6OlKzf&eK$qf{i_Xpm$?KH|lc%&k#X> z=dc))BS7T|O4HurOZ4;)`BCHB-=*BGe4H0W*X#maDqepa@P0fpqAs7tr~#VAsu?<` zIS1jb>rq$hLXcvs?1(`i_TQ-p<+AN;XY|US7`8x3{fwUS1}i z%B6vt1RAzJ>2ua?VWW9OTBF&USgo)4N9{;&N#G-sN6T^-+* zyi@bVx%4ML7wm1im7=%j0w%wghu0CwN2V~?cOJ;W7Zo^?u5JE$?XewPJYj)mC zE&L|Ns5>IC33b8$KFYjqX0!Z?h3j?o8uz?G}&Ks`-W?oQ-hkFkpdS6TB} zmn~kg!Ni-tar6sPA*o*4x!V?eLBXqs1H@W{5ZR+p%NX8$LXp#SVSOw}I-g`43Dl@I zHF|zqcGvPNJtcEZ@FM>=RTq`F!TguA)-W488XaHoZ#`Z7$FnlEbe>!-{S;6>K)q37 zmSi?%FmSF?h0s!7a-ES75)Rpr5g~z9JzZ7qn8M|LTvubE{vJIdHk`i^p$}U~GQh}e zT@H7tf|2|5Z08-xKd;T91f72-((w_brRoIlBev^1x-qS*=2VmOo;>CA58jp{D|8_m z$rSK-O!q;2wXHg*xWypBk9>YcBG1KjX7<30#QbM9s=s@O)K}YaK0mKWVXZSxw|_hH z0j&02**RX&huisQ*r<6;@{`y5_9C5qeRnH6E|f|(FpzdS*R;Z#seG<$HSUo=Hkm6JCGwb55C z>q3z$Jp}&wsu3iOGxL#@zPVkVI)7%BNLD=p!gbN?llT3UUAQ&m-V0MpJ)b`xNMYd)L)Fm z41vBwP3Pu7OWJXks)0k|1V6XZw>}!~aPi&zwTv~f)BXfGM z?EzZSOK+$F5S}6pSSN}Z%YK5ey*Zd^qRO}U$+9h7d$n^RY;~J{YTGtiwnvKWa%IC> z)HL|j-qAU2MpbOU5@1s~>14p$Y;IU3$Siuw*1&|3X>s)t&GV~6%r1X*LDu1>m4 zIvTuU)aeXrv-?CKlZzHtOb7%~Ws5tq^|&Rd*$-x)73G->2`qD*#1S7;= z<%0eKfVgE&R3;X5v%F)*zZ5Cp=m1*?n=E>*9O`0~(52Pv8>p#d+Z`AIEAVoY zVR^~2mP^R<+pE(-Ip)lLko9l&uvT^p_8-ywZ>MgvznIE07mbvg_XYY^W^KfOPCJMR z8#dzUdVTNm>>Cxcm_aWv0S*1au^@aI?1`CV&RW3FG9RsO-{3nf)-XYE-$_jw$L7*5 zoop)8nkpXj{{CJ<_gDIhE_o}*vMx2^bUKAopIsTb`{ah6pp{kM>M+nhut~0y=wn@M zA5L5T??DV&^u(G7NYu1=>fpn7fBYrzhZE0ooP*JC!6b=S+fh}+d5;e(^sjV|cSu5YP8c$l z4-47>68CX1B{X8_!$2>2*@rZw8&m{29#@TZ@%ba$?WHXNuzIFEyyRD|D0U5>J0)86 zt%fR-{&Jq5_)1g0)}^W5c*vO!)qpDWST`gfx7+PM%T zSk4w&*fypl&)s(+Wu7#Eh9{U_rD+9B{Duy#{qs>iy!b94*Xo1QG|{9U^T_kWnf1pU zQ<9IEe*eJMildZE#z^xZh6sA9f27O>MgXPLRu+3c(T$Z&vG_=UW^`fxIyIq9V^V&i zY}>YIe}S~*1`7eBXJc=`_J1^H`mc*6JV;UO1{Q|#f@I%tH;t5WT8Amz5CD3^inK|S zJ6w1q?{dY38|_RYN7%P;&@6mFy9J;=R?(Yz)l~{q`}#c*2NluEk#!jC{PJj)1J)&D zYQVBDT|Idloer?7`LHtKheqb&YsvVgi}c2?Dz@CJ0S56v@k|Z91SA$SDJ%)Kr5w;M zZ?T|?jiyYT%i~s7DWb;0aIl#( z8z~pdkU6+z%Wqqk1tiAHDFUxq$*u8=*la|l zSV~`56M`OgUs^&X?|0fPW=Xi+UILauI#)G=Vv_jo>%3yut8Pt=G+7?!#6`TX@Awm< zUo(B}O=f@qEHq*MG9QLMrQc3DkzAVnyz6lxxy=8$Ke&6kzrTN-r0dJU+fN5bP$~t@ z((M|(nB7M|mf{iVgJ$Ob6r(#|8JMvUXaN7V_=?1I?OVkYE|O@vscC$3?6BU?{~X6( zM^Yo^v4)iR_n{LeT1*^UbVi#|%Y+Mf;&%Luzg5nkTh~NSZpi&n%fmOLZ0f$d+07tv zTPn8DKe4G>tIgf$@G$`g$fJ$1kf$W~x+@57?WAUY{v$rm=SR=h(7o zKUE{RsweX$js5Ex#C5r|8=@zqEBAjiWVma4y}tkAY{H! z1ClU=_DwA>@j4xe4!hmmqV~8y1q!b<>~7h6R$*Kmp{48#X`~Wjt`p?_oefIqYE`LR z3QQdIoh!tQJ5mw)dW17Ares;dlcqk5Ivx^A!><-~CJ~p{?{=Nf}icfzVYJlFE9w!jC!#o&3XX+J#w%yq~}p*FvTIT}xh*&nmRKXm<09 zRsnlcey(233{jpH7 z7xoy?_kp+-^i{WVeHiO;MLA(I6lFNb@Khu?p_>T-{9H8;H?|iMD3!*ZxC#;WzVP0b z?}b444N0+qjll|_IJ3li7I+skUj&vnO!#A{zpEM9(ZN_>3zCBg5T~TCT7x0(I)X*d z)nZdCJ9oQabtCqX|MExX&zZ`1I(4MpaTWQ2f&}`PvYcA^G2KWdn`wJToldugv{My* zu2zjJi44=RY*buw!bmbj$McV(eeT;cruY9)GNvoCQH6K{UjUG|!=nnTAsJeThjurk%kzFzxr ziq|%zfP}6pFnnnuUCG8WZs6hme-!JxB9Ul-vhOmXNOS!AV6JaF0Y(=2NnigZSsOIG z9H+hW2%pTOOHSe z`YyRyMx<|oE@0`AXeLg4bs{q{taH0U42AtfDjywe*p-q@=aE(VH| z{Rvo0C)3Lvqpv$#I?>`~UXY~1GCzwOxLTZjdT+&0AVGgwDa|YiR?2c#%dqmqeQ=Zh2yGn{P0zBj?D|SOf&jATZDGX$rxU5qGjG0+UFqOu`?eoW3jj%sW^ z+XQ$5tOF&)%+0=4)V>oL z=R|N_jIR%Zb=(d%{H^<&Hrqj_T^}g<8Y|kzr7F`+CbwA}0N+=yKaUSgJNQ4j$ouMX zj$Cixw@sh888Waq>GnL_TEA1Z$BK(Z++Fbc)yPx(R%D-+ztq0XzkqNRSBtD+ps$Rc zdT#o^lX6LS!||fJt+0BVl0ywgs;M|FKqUKL&o;6Ws)>TpB#V)!8inWVhm)5@Zr$S? zgybhd56dzvAL`FNTm!=8uB>_Dg@nEZWmNLn$7AE#& zkhD9E3{+e)3A0cJW4#6dDb2kB00=+Zy_Xr1t_QgVipIYsB}HuoKV32B`8$vtZAn4N z@naauy)w2QYC((4{fYWaDKFbf$*9$L5t1=qg%)zYc6RJFH_B4W%TE0VVd2BR2lQnY z3w&Q zG5f_jI}s&fcc+X_jgdFsGTiU5*B-=fs-G2lw>s#yZ^?ILEcK!zgHYf5;&bH?uQqVc z2OI@pLzb0-cAy*B=k;>CL6Dx-ob?THPkGeU4D2jhai$1>789yPz;Bi$!yFji_i8D$ z?K_?g8IhvPVDv0u`p61v#%?~*;$--_T&LeNa)E}DV-@`IhFME9Z?dzr@LH#gnEN`4 zvX#Rgn3SgC%E6!}J$~4*fOJ*j*6+OmvuVMITdBaLAwWie--7P5sC|38FliRb8v7#I zDJ)u;TrjE6x9@6JIv6r>z1C_}Bj2)CUB^!{`5g>xNX8BOHv->MRe=X#zJ_tuAEXsc zRI`62cc8VvLZP3(OJL6Lr*&U=Kq{54DYz322E!^Cj!&0nbNoJM06RoNhNvZI_glSH5&Y;&xZ!BO%oS?_o=ZXm(Zy>W^X;0Bm~~Fj9hx z>?o~7hmqkSxiYEB>P$R8$(A=ShhW3j)(Z$2dNi^W)>7gJ;~S6uxEEXWJ?Z2fbQ!`Z z8pvZ(P4X~c$AredoDmqzpVXOu^mL$|MSe-^9Xx|ZgkkT|eH!YX{=qNjIx$d>{&F6p z`j1SkG+3|jbsBJQCs#Xk>1S6q7si|jVC<2y!0XhTdf^9SDD*kc;K=EtAH4z)$|4BG z<6W6}+W7Q*jaeW$BUo^W*jiVS_}=wEy=QTX$IBWY#`YN-&}+ypXwJK7IM$niYkE?+ zC$RB-cG|ec2}zvc*TxWVclfGwH!59Adf^uV8xlPL$(k*1Qaet%dXKC0R(3LsdAU+( zdgM8Ad5h(qmf;&$)3~xFCb`yNDs0Kb&Dng)Yq#SDuY+A4DlBNJKF-V45VXlg6bG7a z+Y8$G<;ifo?|B;^4mJ!@v$$KwgR@)6z2a@s2g&>-@xs%r?E1>b`3!vbUG#^?PE9B#G#8`6)3_G@Q0b z!keAp9BUFp7aq~S@o7YK#@;HGb*VnW`u7@?nYS5K$WL_P9~90LAset@15l>g6-VkO z$|2&_d`(2E=D0RIys@MxwvFkxs`a`=ktX76yPlcIP29>A`~E{@Bx0t@V{rCAus+!w zyODhp($c+6hRoMt)4fRoGsrvEl6|DK6JwSD|G(L%9Q$|BnQsOIn=Up7K=1C%EM9c4 zD75Ea!D|EwLLoIkh8FFuSpA zzqNE;q2N|Q6O0FI-MAH2Cy66P+2p9*yLxj|>D6@7k_#EO@q>ruL@fJI74O?qKj~lv zz1YG;LlQnP68z(z746e}Oq>ldYAYiU6QHQ6cGd)Y&0|>c!@Fu6Zs!F>#+~ZTP%wLJ`tcB*U@Y- zlUs*&e-01kMRoa*=vFZeJdDJ+m)2vd z5i-r$s(YZ@82&TkCM+_jHofYb^@25e=)nBQ932k1RU2GDOfYju|0o5d3jeVwWG|-d zt>GII!mzK~L;w_Y)g72U|I#P+) z>fh+&!@u#Si5gPsvWhCI^BDcNH>IBU{Yzi}u+&ZNYGbYWJ(Oz@2jFP1`1d_E>KQNu zACmDp+d-GQto5v*7n}xZb!dn5;j}u~U{C_ZqL`Fbzf6+A>BrtuWtDu7MAEyIFz>Ik zk{0hcVqd&_O$d0nO55&=s0Hgyh?`wrov&|%uor2=L<}_bVG8THiJ1v2+v%@PC^1-s zWVX9L4N<}smM7elxbSjGlscultL~+LYczY@pQm*o2KaeeAIBE4c6RYSNTtZXS1%F$ zX&sHXiRhDE;*#r;OFHZeMQ4BIVW@EkL)O{(2gSz*;V*@A9oLsyf|41=jG*7) zAA3Wp2l>C#>Cg5p8sk9hMV34)|4XKix*esP+5Y(&oE|n6kK@9|nWF4m`e!Xoq;&5A zN56*v34Ygih-j#P<;Q9`3cPuFalXqPQ>$_aANsihLsOy)214#0G28C`oKY&hgHlit z!o3n^0E?zIQ;y+>Xnm=1l;b}ZfBtR*U|H{tE&_-P6L~}UZQ?$lIG7v`{`C~`AE$Q+ z@%oBvlHhT{;56Dl*3*;lE4$7Nbt#+RDS_Qft4{@17}}lE7(~h3sxj;`FO%)0r+&JN z^w_XLHHe@xa*2@#TXYV+77WQ0p$C5-J`Kxbm4BoAI_^_RHdHIYV+X5}lC4>K)sv$i zPwLA(f0Hs2VmJKduAWOSOLXhB9arpd_fo3m;LqCKZZW7A)v6ow)s!=aXbvr9RMX)O zs!lL{x}wtgaN=vB)N{N$JFW1lDv`&{3Y@sC5aJgG)2@Xqy?uM>mD-Ep-=1}n`@0t% z*Nim4oz>u0hQ4@bqi?N}k6PxX^l=^--3Xmen|Y=bH`nknoU`35GzUX}!`fW?>4WZV z0J>8R4fan6y*+HeJ+`ats&y?Jz4lcF=8J5trehv+X+L_Ze0AmWzRqycNV=L1J_*S> zh~(bB`|0ztf{>9`rf~V(JSAwpuy?556L(qqcO3b@3FaRj}Hev#asm6`;A8&8zRg? zLW^!k%0j4z3nf4G|9j!9`H=bbn~`Fb`unTRzHEiS+P{BZwbBNZ8tuF6o*{UHC~y01 zgur%n8qPzBZ>YM4eN0%!Ku>lq8` z(D-Kc|8{w#&oEG5(~4*f&$z%%orLoSgC~9G&PVCDg6k_-^awCppYAj2(A#-fD{bD> z1~tkwnMkO#KLBTjT-T@BtPl)9=wqSZ9(U{O%hpl1vmM%UZ9j&UOz3=IGK%!swH72G zBzI|86V*f!ZlJZ8NgPZ=L!AGMF*JzPO6l(5eK5nVQoe!motv1GVk$ZQ3qgTr-=k{( zLNm9TKZbi(Q!qvlIr;rD^7Xdt;~cy(rEj`$z8LwewdAb9F!qrSd1V{lEMC;_UAPV@ zA4deF*%~uWZryjQ30-}0N4DV(et&6Nrg|9mFE6gf(3sg+R=s3?JRp7HrMPTmfB$pw zANZvUr*RMF%!Zq5RG1$pW^t(MgCwkWr1nR6MNMlNE?y^F7URrjHuMF>!5mgdv4xBj zebiGn?;+j{r?cNu!fr1b=v{e>#83G&R$TD@j|-r6g$02-K2XDV)_K51@q7Bo!9-d; zjZgn%LRML_f+ZdMVvpUfo_tq3UY!x3bbRB}$a-wxf79_V*#AD*8H08F z^Frsxy+QH{miq>YFNG7Nn@NsXzz1izm|PU>cK5;}c;asQ!B2WVit)9Bla!2G?_A=0 zed1`F*}pEsR?sEo+L;w8mJCn|O+sn|-5>6^?%IGL3BP19$sq!kg7s}~IOv?@>OKU= z!NE(a?LOO`jYmtK#NC-pLO0Rexsx_YfY}N*HK6ZtLkNGmSsgQhr{3wtU3dZ?z>P%1 zV5zHcgD+`BsPyp=ji^>yIL?$wKwY0w>0=NkoMbjh7(D)OT_L9Fs>#p$-yFg{UdEee zEFOJ9VDuO4N7LXB?P^g22ji?{n?ET9>DUb;%dYivnHqEO?nJZyAd_1;VW}g!O3s3b zYF%{{ngYTG@*;_aQ#=jdgK>ZOzq1%t7V41tHqa={?4rx)?m8YG;K{X8Ft@dog_jxq zP<5N&P8owIal0)C4=;OSs+X`*HR~(oXRouorrM@6gj)5iL|V;pnO^!vKOQPbk3WyZ zPiGB@*2!a~u(Ep-#bQ?GqZa6LR3~Z)jbmGw)X}Fc%Be{7K z`Fx^`oJG zrQCJoZa>jotuWqM`#tYg5XKx2&(&SueQ3aCwXM7k9*92PJ#hMWzx7(AZQkKA=(OAJG>4i0Z>62}DZa7~0aK?g8%gJ^fqpQx{VgIR% zoJm71zNarJMwar!N}>)-uO`ZN?P))n&^ zv05Hx$AcGZO#3|@&*guZfC^-5t)2U_TFI*BUj7A4v%S)Y z{3aA@_ifIG6DIeHriJjiI_&;6EF?ij87fosspc7HiH{-i^G{biGw|1sRc~{uQ=SJT zhxxnPgva!TJh)*$-Hsiuj+KKIIA>r)??bRqW)Vo3F|Hqx&}zVAjK@vL{{!?u3%?Jj z)cr*2luQ6BsZ#-{tWIyQVl&Ur+dX*GPUXw zW80%*pprt}_9$_ET+dT|C^5yc)HxGw(r{m&3KxbH*csOFSU;LZb;{9!32hCpn;zHI zVMtzzp4L3r8`IG(%0^FX4o2107}wSCN|nW~RvdRqaH2k=Y&UO7epnf%~$Co}m2%>Mt&G>4}gfD$Yd@*dq>tP+f_8IWar~%*ljQD2U zW-kWAnp|1#jnUc)MW7wle+`X;{IE8R4`&8J%9Eh_r;TC!>xD7==Pm!xlpjyK@bk(5 z{&da@0_qQEJb1I%je8?nTKoE`~-qzZFhGk*T^CSKoO z!M}WclU1qU?h`x(^+>Q3fVvl|dzGo6Ug_Fii0*y-KNYC7|A|Vbs1)kc5~#i9QGe|* zeci8ZrT!HryvBr9n*6)rC;ndjUyJztanrr-{-;1CkW##q>QIG*)K@oF@%+*iU^VqPcL;H~!dDuUNpGJ-a9ptzVjT{RM@W)RHq*ScTYfoq} z3N7>t3IN?%Y1(-Fp#YR5hC*APg;9M2PP!ym>F>m9Unkbw65eKd(WAvhj~bT-)%>9# zs1ii)%v*46Qip3(dR!XQ;=B+h@F;j2>Ws08=K=V1b@1sL;OZ!ZwlW#&@&q{B3Nc}9 z#C(?+iw-fCdSqDY>BOR=6ARrPSm>7UNg;^k0V&pp)!6juu;bIST^Tdt`j`nf$IQ4p zZpDL1J06VN@Mz42$741;8MWg6unG6aEZog?f84}LvPa`aJRCFN!Ke=RhE;eyV`bIK zG1xJxJ2m)Yr85?;Q~h$rhBwpJU3)ui0U5!E)#`+S!vy4Vb4-(yL!?k?7O8;?{izCo zOi-SJ5~cIoIm@mIidA@>AWg15sZ)aLhbhahGW~kYjJH0MADR;ud^2Uk7d|syc=dQW zY{07#GoLR#TD%=G;=`mJ-_3O6{gfTwPTTSQyc0hz_2S)Z7li-DFQ%>dYOV`kFF5da zkyI$fHiz)`ga@w{d+~g(2ajjE@o2gW4`;gYXto>oXS(oUwi^!@oOra@gFACwxH@jc zWuKnU+p~7uTX5k1q7(G^(x{GSmY(hDz>2e-Lqc1FN(gpwM2qW_W?UIFut!8U%m{d^j_JAI}cpzh0Wcf4?$|f8F%qFXu<`%Q-K8UL9nY|EEvm6WEVJ~shXnF%OJisE=^91ov9$O@I}w+W`CROzJ87?)NB z?dQ>d zbK&cS=bu8Bz$(C1aQF9y0QQzm2?MC<6zWa?kAM3Ld+pO2RGx?WKMSb87W4l;PMC{DGb>)XsaqjM$BQv1Rq55k#MBN zMkC>HnE#g?OtVh|cZ2EVrcl=h8TIf}Xn=r9chwkjRYLb6^>6^H(vQH@oR3LM3(oY* zael}j$GkA4;vpzBrtk8Q23NdVT=i*LZCszyGe|FwYj9=CfE}L>X9r}weuDN*(TeF& zZ9P27D%e``p{z)PtTX|-+H^R@CGejTRt8j9AJ*f-uo2s2Lk3(KHshwxj(ZahJeqRh*-Rgv&-UZ#Y#$y>IdFTz z%7a|)jGOUb(#A^!A5B>quv9Di(5J=YQ7xX1>G5KmVyz!-f|6I}UHf9n;&=C_{GkA@ z5E!RcQ^T)u%#R=?n121SbLvx|?sflv52yrIhV2Z+JFN^;hU%;h-_6+Zeu`Xv8{SP? zS&hD(w1e!m&x+?>Bipkf6CMv}@uXLc*MmlU<+I`Km>sW2EqLKI;>EBDFMJj}88Nbw ze>r8xt62x$EV%IIn49hOF`DGmkLQd1csk#UhjT96pK;>$WEZacEVw#i!ufs`wuf}M zJZ8p?=`P%wcjD%p1DB~|X;_EzLmEDX$FzrxR*#>ggps`!7e@40_o%S!6mwXJPI~X9 zaWi{5G&AD)yaQjK9>n`Ie)r$6QpZ`T{@eBh{$+D?SE2sl+%Vp+4B*v#Hv@IkEyJ2i zhU4Z|j7rPl6y?EEn+bJU3d98okd&pOxiAS$1u5+Mlh;Ot`mv$=*!`#aZu0iX^P>bW z_4iZgOsGR8Pmg93SLG!^(Od$Dwi!N`iespEw`O^>F#(kns!-5RASB=s-~?q#*91@s z=YLqB{tDA8zxL{X?Aza~ObM!_PWLKQ!POTE`>Cj(;-~L!ujB3Q4Sacb3y&|aFi`u= z3Y29YMMCI7Bu0cHJvJJd3Gqlc9FB-Xv{#DU6Z++oQuW_iX|5x0ISmP7pvH&!ff`Fm zsZg5Ke*kqE(Xfc}F==YX={^|)^}?_k+g>%Uj~a2^tM|inSjR3uDb&kjYHW`vusx!} zwolE8tdp(|%vzc-rmu%rRfT?e1-jabp{!0rYe5Xpq@=YfL;5Co4I&I^>d~vLL7%FY zO?XV#>2;r_4U=6GjG0<7YG}rUr5(q5lsMI|!?Ih06Wt0dn#4G6>BK3!94p-_oO5V! zu1k$Iy9%pa3S1tw;o`8#|DpHNGC>mqmQ*cG%evgJ#5Io+cf49W^y%?*%*bFRxIP`# z;f0UDW5SCu1IJ{A1^|XB)v!_s;A3Kl5=8$lIkdNGV9Eqab_qt|g7@=wwr}TbAp2(4 zx@(kt`gY3f2kLAWewgcK`);la?`OL3^;8$Wny}%k$!@$Ex8vD}1y8&tJocJ!e?X60 zP9^TUHF)MR;ngSsw+qjPt#~+Kz`cGQ?hfd1)uq5K4|TTL@MPM7N7LPSFx7?olXl#j zcHrKO3%917ew*#V?Ku~2&Ny*-%!q9y$ z_sVg~E#nZ*l0%GR#nPga4xmV9(K z=Iq8&X`s3&Hvyu;R8(cfA^GrrL{rxxl^yc7-~&9UofIl1rO4wWg-Rp;sHuhu`>AXy zJthd^x;%`zwOC&o;`tlTuARhR-uV+zLNZDyof2I6e>$Lk8V30ExezM&oXh`Pm{M!0 ze*g;g>yv$|Oa-96f4mL02ejSPUxP|2Re&j--`=Msedlp^>lDr(pM={W=lE$9Z74kw zj@0NQ$cT?aOh_A7232am1=1KMT` zYFjXB5@XUX$BbQp38MrfnpVtMWSBKcF>jJ#$)>__s}c)FDdzMN%p1fwX_w=)Q-QN? z6;^xIIOkTfop&p6p-+JeE*Zz#t_`Sh)2m^y-W}H9{)iTjMs#>GqQ|ol1D^ZzY%fRk zpte*RqQW(+l%(2|X%|YF1h7)ofKWLglw%1%rIUav!1QxKr34ZwQvxa3yJ^27eKTQY zkiHtX;pwm$4?KE2@EGu5$cWp08eHj;-87*thb z!qkFkTN|by4ne*){r#^KaPa9!6VXGVhO?wY6h)K#2<@8eASXuo}HJYQoJCBaiF5 zKI*@AX;i~2d)NBJoQXf>YR6oc2-7wZCd^G3Q2E__nv_mc(iQc&aLDV>qi%$$tqk(I z94KmYpb-_qCaHo=T8%Dg4WCwVB`lIk&}r|ihD#-aOVx~CWi#9g5nS>nxMfY~m5b1) zXvTCmFv>7xlw(}i$u?_}V@O(uDMKrky5(#OrZ&vzM3~n%N@u!;4NvaFA zaLp*yjS65DfciP83NYQPOoc=jox=C|cA841EbQjL88hL2;iRzxXS(D#<51v~U5X{E z7{_fA9Cyet-zCAMwGHFORu0Wfn%gmLB@_GMXOrMqj~t6m1w(OECt_%x>eXU-K#S8u zMx5wZW8Nvp3?+x`5>QBIL@(m7k5}8s1I=j;FNKB%)%BRNwPU8M6VsM9oOQ{$sbt+H z!J~z4yk8%|`*TBFTJ?twFMi$}<}Rrp*9PH#?!))%!+5*gi|32oJS>Gq`kn1=$DFnf zw0UAgQH{QiQrH^v(ViE_K=s$8CZZ%I5*g8fTvr+!`fH|N7>6kUm6E%(HC2eAR^%Mz z7^%JS3hIx3qYg-Sprcb?*$pb|_4pnm(vuS`jy3azIUL!~S~yZ-mK@bvOo+&Fg(OTJ!cT5FLR8;*F& z&_{&xDwE`>BZvw*#0r%bjfDo1I`#J;Q@n>-i{F0nq3^`Xiu8Q?#6q`k85O zd5@$VbM_9bc~saQ)pAmSGx}o|+#R!k;*U3cMqHuf5S3N+igCv6Z&6+B7Gc6vj}b!+ zJnCxL+6$nrO+#mS64XrvFtn92BuyRV(6tovHG-+WwS-?YwwHlkqf@v>&n=Q_bW59H z6W2p8s)C}X5Yoy5C~J#gZmxk-+5~%h1B{{y80srvX|94rR0CaI2@JJmu!$;QZ7fBf zv<5z1JH~Xa@XG2j&{2Wm&Pq%w>#$^M!?L9vD|9olwz6$>wKG_6dNg=2sKw(UKUC>_ z>`}5kAJ+PzIzbBbSD*?2q?1%C#aBNERZ^^b;kj423Tl?V2Za)-BF>@?u2%Y^H08?Ly`xZp5g#U#aovK3R( zdJHyKU_?@lNmVnZbS;?BwqiopjB&jmqF#Lq`Ze_+Pr}+>%$|m+r2y8}65fhS%N&O^ z4Vbh@{IE22V8Yafxh^@5_h~TQE$6V!gsl@})^_;J9T+jSU`W@@As=&d5p3WHlJkHsG|=U;4D_lHi)pfS0HG@crf({%~OoKb-gChjSiYCH;XK3N}c= zj^W2GAHG@j@boE~;!l6KRQ7kmD#Dz;p7%`=RNdlIs47#@k{6Hmq7;ZLvQV3Qlvkvr zM*3GxQ&%Cu^m8shRoaltpA{d<>xrnB-=S^7>YN*2-dn@}`1vWfn-WaP{^?!*PXYSr z^Zz?Q^_NHquKs0wc=}tQ3NYpK(FG7tg&I_H_X(;(>nQ>Ct6S@Mesv8u*OxHrG@!mP z1F1)XIfhD$_DG=~jW~>`pkRdUKY;K9wC>g)JSU|}@gAyIB@3hdQy+m!e+2PC`;i)c za2Keq&I-<~pBq%~0+kX_q)-W{9B&-bV8hjcleR`Ind`7s2j84(lo&)tAnn!3~Es^v@NADc2vSDt%Y4)4}DuXUsE;~LRy;(Np&`# zs-`07+bW=}FNLHsAI*hXXvj-JLv9*ciZjt!Q3yp%G1T=H=qSxWb3rEBinI8v%{+>_ ztYowor9)Ph1#NW>jP*q@*B8QER{(2m9=aRy(c4@IZ$}x%Wwec;9>=uxI6)s`V-wcx z?YPt<#oc}t9(vS%fb}bJ&n?4UmlTf%6dbWKe~NgG&CH2=)ZioBe8Ba!7GjC&DRZ15Rt3 zv1$}!&D4oan--g0I-IxZan7p7vQdFKWebMeYSGtJ3UhfjY_)mlX)Z^fq#FIwdcFZU zJE~xBFXJ1YwzUw-hCH;DC7~fV7PZ-t5aq?8ttbI41qtXVItoo~F1p1Pa7k*=-B!lu zh^__wswNC*n=oW(!;qncLpc4KM)awh(5tG4vL+j}vfOKI$Ec+P4rvWkwORh_Erp;i zr_&BGH-1o60JS84v*yL0E=}Qw&0&1E?!o)Depajm*gtMh;HT|zd|3D5%hUZl#sA)n zmFuDj%1f4J%o&=vF4ZHif~q`)7gI{hGoh#}Kz)7^vg3l05^(?tq5BYfIFL7Bkh{+V zQUdqyF6pDune#O+c z{toV6T!F``LUCFg(xO6;d?XY}kzvSAOh9aC2qFThr~e>A4<1Cwfdimb4P>lTseJ0A zO7*wP?dP(ogwXxShzvwcW(*XSnY=FgG`YP#%HEr~-jiwquXqi(K4QhS5fe6hl~^)2 zVnSICpQ02#bvZoJV)S+v!r4&(vnU&#WeI30jDoTz9bK|2^e7wHl{d7NL)}yaRbwG^ zEv2w_)}UL_0JFG?f!bMRfP1QGNpI3gc0m8;9bQ5M)N} zL)zg0WJT>mK|&z1kL*KoZ~(Fo2cRZBf)hOTSy5=sPlTpE4-QE!+{y+FYTFp5eac2S zWwmg2*6=xQm7=?|8oK&?m|IKHLpNG+B~;bfppGVoD32>fs49ROL5`Ul@o>q7?=DQ@ z?b;B&+Z@6B4KD+flqrGsj~6HL-NrE9p6TPY=CtDc_N0l+uuj=qFmGtUxTYS1ifVM^ z#X*!43t2@Ll=X$IP-)*3C8v@O`@0GWs_~Kj;X~9slW-&y2@xUOzD>iZ6C(q;4wVKC zB}W9HxjY549vvvl|KZ6dPn)7CQ-XUhB&5jw7q0!oWcfc$G6{1`_nr*WJ@ZUyQz_X` zudn;pKoem1ye`B|>GVVN*B<@7nS6q%P##665H}TIO6NBZw|4E_gH4cqeg8byrBavF zn+H3%vvV5beHK&|r0_2A%O>RX#YO!57>u;`wt-a-~k*C zJg~bBH7s}^LW2Uh*FQ1pAo7z!Iew(C%HXLyJ6=6*Okz$30izqo?UBddY6DIc;@>OMKjJJ5~Ig{(U4;&M17)zCNOad}EdNir1G zSulu-U~DaClh@=yR+9&5buK!q^3YM4gSPT4G?k?D;0l6gQ+@^mv@SaZHJM2aR)Q>9 zS#m7$V-GV_38)0v%CrQOr^KNsF^UrmG)TC$A{%X$Ih=SXOFqoK+_dt=P@T<+wYRkt zYRwkr)zyw5R~&Bm^NNhPvwl zxEUlpG5`ffgSqT3Fa8j!vt!X(mc}=A5W%Bq#gMuc z{if14(7NK9>0FR~_{s8h}c(UaXGd z#fleCPWIu|azBRxez`P_KW~rWr}M-3d2<9moEzj$E}AiMX~5q~eahB`S-l9Oss>m^ zB^>gqN{>QSMl9-blTn^|6qzxhhzs^-`?-uNY(I`h(n7yO96OB+4&X7E)Br#g0aVzZ z8nuuAA8A{QG4Ii1rn9K4d;kC-07*naR9}VL>l66ntBV{vC6}MdrwFJNN2S(Nq5V_< z>fTyY;hIoJ^|_P2=F|F9D$DxxnoyG})T0XL-dfbXwWq%~Gd19E0#$(KE-(qAH`so9 zebW!r-PioL%|3>6ol}ggPidX4h%qWZ~#I=0uT`%fTWlMC`b-vcg@*cz}+M_ zs7`Z^_M4kVEkg)`|x(gt=7ZH>jSHuzm=eRVDrW$9cbEiFrfp|KF% z;wpCCx+GQHkwQvCloO5C{5a5ilvP>iEX&|zSbJ$YBo$c-X+eBA3gaVDkw$|rQXwkJf~YJPMH#V3jR`__ zLI`T}llVj5R+7q4ZOe^^yeJ8l+H82*$}y#Cz@okt#|^DGu4}=%MZ)pO%RNev5nwMn zWw_C&#{EG(p7>07I%>i*pApZ;Ok7$;U}d8k)@hT!abSvO3iw-KUrk%^#jFi)=Iq=u z>u;O2;^mZ;JH4pe%WoEj=p(P1&xb=A-1Vq&t51QeE;)xJuDDbT)a@QWP-i>+K%JL0 zVqPJ_F^vSr^m5FpB^Yk2XOKGU%HU`yM|XW0^kw-_6lI|!Ck3sUi4bKZq9!>OB{AX1 zi8z3a2tQ1VQV*jrB^=rDhma9-fB{R_=%!qp7JFgue1(*6xUWX!mDY4&(MYmvzTq%+y;9~9;~7)xI2rv zDuC*mC(O+_J)pt4Ap;(q8p4C6K0H}+oXn;dZn)citVjiWa0$U|HzMcI8C zFccSY5YaTYFDwAmdP?hwYI5Q*>X761#ylSEEa26(6P(TeKmY4n?vUEseoBD-oI)j- z5_mrc(Y@FI;eh(@yPqcSO4&p?WlAQ~DRg3!=VJ|jX7F;IE0cyIv1!uBC5az9ezf>E3t4pl`a z1|*eOaVl_Y!j6Y?4p3Vusnm-;9nQGbn6=6=C~t(li3as%Ls^;*d2uRaMJen)%S+Sv z`{)}AU~jKrm(A2t0(D(3l;vqK)aAm~Tnuw#0f!gF#mNwtq_LZ2>8OUfp$IKSDJV@o zjQqF|j_XogpuDz_3$7dUlTn|W%zy9{0-)#3MHy%<$>3>0RFqBeRZv;_L0@ zxlp!LqNyy4hjQm9hNC(=9&M%RpqQDoECckj)9_(abtbxMaxmCdidn4)^Ewfx<+WHb zwlP$Ji%Bwn>nyd;KA$kNB7HEZ zCGlY>hz>$l!~s;MN1-Ms77YbQQJ~rA445B^;%xhmrDeo-RGF&W_>tiHeia zUXg*$>TIa0@}RBChqgM8&C*oLKpj#ygN$Oe1k^!QBO58xA$1ei953`J;4?Jx(nwlk zVrk4lcWWUht7dH-nAA66bHvC^05_*?crfq4m&<+lVPk| z5bX><5P;yIK!k^eAuKEmVIiT23<*KlfqlGBoZS6Ln(`kNh|GjARuG!1Yz)h4alT)N zdoxZvS#)zBHM#pVq-0FffWFQ;R-~%340IMGL7aD#tt0;^t5b@1kuvS-sAOeo>!{%P znY1DuT5|F0a$&5`gRUkUvhs9DN>U&z&xDfHZB;HhE3+Xk&qP~E8d?g|(2$pe+RS(c zWO+&iN|H!<1|v5nkoRBZ#|5DzF^mCRn-vRDVKS>+No6)j@zV3w;#9PkWudbsAJY0F zNNWoqDo$ZQRHjAxV|-QF=xQl}tGxnUjrq`)B*Rjfh7n06X0=V2Qr6*wz8PmN9XMwf zW7XP@(|Qq>we?svHRD282X6E!aA!b;dxI)}iPea9*G(sPo!os^rqf0SE2&c+;xc8% zi%HW*h*}t)1W=kku-8bH5>W4ZRJhx(z)f1=?UZ2K-hoY98!kGexa3y-2B!77WW9;A$!3(1xih8>ZS^PSBYe3PHcartBEhrqhb$NH*%6BNw*QqWwI z!e>)a66$i}P?6!^Z%@nasxqU{SeOV&RhB=gSe3=De{*p%T8fgPuP=tawgB?d47BAQ zMSET%)RkH2YAuJmvzC=90d!c~41#HoxRQ;^r%0hLxfJkfYT;-rVxU@^axtW;#f(jY z31c&+3?iI#c4BKti>u=%-hBG)niqfA^x?6?Wn5J#S zBvNeh8f-0j@#@wY{P!Ooa_i}j&$jp^pb{*})hD0|02NLFqy$rX&*vbz_xe91Q1`m| z0!-=rdx83UZazU(04ga`!QS5602u-G_5E#J-8_z=9xW>KlNqSwVk8_n#4()T18P`k zFawp8>XD#egdg;0{;3z4hE6BO1R*ae0t6$S%4ip!FAd@K@-QABbAx)Sm!0kC zYR+dM`g@;`a=RXFN0pT%Lt2)?F;iWAE^KY3Tv|f~`Bb#8Zz+VPK8JxSD^B8iKWT9i zgVoYf3{ta{3?s0TTBTZ8E?p@}XSGTb)ft)zAt;DDg#4%j$chX=PDB85qYt1c_7IAX zhA;@4@{dAZnGJ1IG0ZLg*sP(c1e(So=$p%+sxM?{6J(q7648_$2T^7$Pj9!0ia5L7 z+g=7^MJn`V$rxxW!IY)}Gnz(BDQmE35aE=$1+=wbL0yYQWfhk74Oq9f;%YCs{|emo zC_(UhGVC`hZKB7IM`#GPmfil>vu0MM1l4Eb20ZcU@NC@l8+$rt1{sAC$VmB8?3CU8 zeg(%)FL!rf)6$A_CK0x~B)I63W6L39*w4#rFe|OXg1jDc%0`T<8{noAwEA2a>#|`J z6@Z#J=q9JE%7B8VFIA+XvpfwQWvLL;SwWV8_VRQz7bikgbQGe31T^H+$h$Z`DcfJ4 z7Yj*6I%Kuk&@>isIh?#E8|~%P&UqBg`SDOyWJ6b#2Ter|q=m`o$W36chW_pxZDsK3 zTQO#6<8xTk2#=zcjUJB~T5#O0IDIYQvC%>WrINajwzLX4HUZ zOTGB8F@~Rartrt@Dg3bE!@CtP-YgH`=`lBMj@z*6R$z|WQ8i6)wwFU$mBW8`6h6vN zjNllm5Jwe&O0iM`DydX1rwXOfnfr0{h<_d`Db$jb!%&F|aB8fZhok)Ozr5rLQ^NWa z0i=|qA|o*V9!v?S|C9=KFG%U}=U_@;6}qB+liA;s(HC6&z3NnesBj7}rIUtBzk7BK zH+PmX?AD{EI0XrjRJK6@@q>sxd;kPg>N5@vq8RFagajW#Xh;x3LPFT(k31BFh=YNg zoT6Gf25QtHp03l9p9DusIhM>4+#2t}^QB?DJTZ*>vpt~Edy~3a7-}=1sz?XHkU&aP zdQ{b!Acz_o^SM-}M_SD#FjNLZ^@^6Z5@<#F3{*-~X{$0}X)0tR#Y*3U;;s}+C3Qex zZODv4Rq|ofrXAr-aYtb)BqeFAo*J``pgto4b?JxEkQuofkEL>*=G+*xqOuMPidrnG8?dMq!KbQ)tAiHR<*@7AE2Z+b z5}2EEK#do+_Ci?OiePRngt0jvnx-5m>$4%N&4jd?;@bq=bjT_*IH5>k99?4pD5PU) zD+47O$=ZvP&{mZA8*492L~Bk0hlq@|`F!)XG!&t`wG=LKCESuKjA)xd%>dLm;BOib zv-%_jN?lddM8KzA0xIpJ8@akN1Mbdhc$5to)wM7bC$tS%pw{WG4qP7A;ngV*{&aaB zzg%8muzt5bhHutJ@aBvcj}~3n88KkR<@dmx?WO*zg5p%vwPol@uMwG1Ro^{U}TfMMGgc2F)Fu<^SR776_&UO-dAzDy7aTN=^|l z>H4RtRDda6->XDF_xK-5q3#9hUxVr215^Q|e@mINI=#EjKz(+59cw2>VNo}uFe3`_ z5&JlfdNe9%7pPPtN2{VELWBG;4L*dBkRXs!J$x_-k%6>6I*8lm=*~)I9%X4!3@op# z5oaB0+?{me+58|L&Gq5Nn4Q<~4tAEp+>pzlA|*pc&@xenQ(Gx3QK~H*Hnp))y&<)Z z8bk$9*JVRplf|Vk#=2Zq0p^B$E>o#b2}5gkG!$j2P*prgG@=7#<5{JCtQWoKk>b8rjz_c|c1**{l+-C1LDdgY0;%5! zqGXRo3~bc;DyUQ{m!cTzwVqDwbcwNLZ^wCSD=s)B*m8E_thpIW>N>WQx<(u~G-Fa- ziy?VA24!VDDsfC(3y-{BdC`{&Zs{wM!n0q$CM#1@WMpU~O_JY7@gCN;`t~>^M&Tnd|c4?xI&lhL$(}ijLxH*X*wkGlZ{3KqV@#5BWH!gS$m^HTY&p@@x z9Yraq&pwKhEYa{a)G9FT|0rFUTiZ+NuAQfeu621l|U%KlwK2zfJ)a1wx5IO-s}JHK;7%+ z?|uBY6siDJ!Of>rP^NSW>h!C->mVbAy1g=q(LOyID>893G62z`0Z54rLP|XChdRg` zPGcg15gQeb=*UonhXt`pC7?!xh9G=jAdVb7#PzCiVgA~=q=@~XN#%;NOe|QWxahUx z$-)p`EPC;9wjbAhHk`C~U_ep^dutH`loYA9E(gY@0){Dplid40bprH(S*Jpi?$Xl@Q~~}%<5`z z+SY=tUKy@>lsp4~djB7f`Uk2AK&6^dQmFTa{6=7XIILz@p9Wu(QvDUAdj9&oFlDHE z{pC_Z$rNSzNu^TB)J10}HY_c_0qO~D9mtj`Okwih0H(B6m^IX6(bCB0h@u=`St$c{ zL{$YgWerA@HSnrxFrul$IQ@SxwZNEpUhmK?U~H#ulCfFk@=PFx>=XmFSn2 z^Y3%Y(t-JI1*=&{YXw&ZP`Q;y*#uWdHUC=_2d56NNnImGq~%yNHRFoUjPK4*;=A+X z_z2?Kig&th;nXv3qz^ASU-R!9XrMWPfWA}weBaj^z&NGA4qJnwn zR9b8p(&Hn!WHC8598sYG$Vxnd9BNmM4MxtnSNy z>faZXCjpe;NhcNglL^=UUYHVC|CauIGPpN>Piud;x z@b7i^_X3q&`#b0G<(+d3R01o(^yT$4cy#e3ZfqUH_@EKxd2xsd4M6(QV5G%|AUZq% zq*7_s3Ay|cVTTx~krAN?4GBaLC8vUexJxP~CjoI=1$9Tr6 z#?F8V4<>tAq23;M;%t`;V~QFKNXl6SY8$d)rgp=&B5pVAkyT=l;AL&cj8lerw~|kq zB1LV4Gz!qsS!p}*W%vr>kFtlQ~jz}fCLo)3DuyA4#}P7|1D3FE0Q|L&z@<`$kCN^3)w9WsUu%|H--U&E>fj#*ON zk{(n1k?N31Wjb1@lrE30OH_!Swo4e_nlU4%eiT z*vO6!=HmYJ=nxbnN24es0a>&iHJr9y?B_!N)c9~vO*ko30%~4TDC+VOplHm)+<;*> zDMgSZMM}z)z)Ft=Wh$HmQ@T#Jw}VPhtAZk>_X|KKkP6oYunKUc8r1(!>rnp|Q2&d3&$nZeK90^0zk#K~C9>SqR2N85&Kf?CyM|^NF;)8<_7rYKobFX)xra>2Wm;$ZH9XyD z&7;HCsD-B+ZI9V-e#DG(gLEr(4aY3)pb>L^tH+G7fn9&v zhqcnx#!KKXdlWqW@7AD_-F{M_1l7l0>Sj{0Iwhczky5=sq-2#!^H={Kpi&H#YFwZB z%v|qEs`cKW1~Q%k`5C)1NLa@JTUNg6esX8uOMG_EHF_lo+M@+3Xm9w-l*UT8dei9*^AQ zXe33^OkscLR8mX`(&G;^P-)r}x%^dGF;F(;W2R4shZh&|zy0YsC!YwU31Zmi(x<&$`{vxEoR$FO>A z2>snMh#Lz~lz9XRM*G=Qf)P!D@~BWmM-fm1aWF6d2f4@iAQD1? zK@+NI!W0dCpbi#OLq3jmb>hZYHy%#A@Op6wua~?G*E8KRhRlejp6daJjm@k!X{dz& z%42R71CyXR-!0=r!mPa$3l9I}A$mMzYUkJ(snB_=gw-hh!PAHGM7Inpy&9bJ7#Mt; zLndqv8F^eB&Dq@Yny^g+jA<0yuz_b|(z)T$`e$$U5j<5qlaoGp^ffep^IX3gXL=Pp zRO3{)6x$;fT%hmmF=EqW;Kw_|76^9MslXYB9Q5COx?9HQa+ee*EFD-h(g#z-MlhW- zHgJ57)E!NN-{_Ix>X3>T!U;en^|=exVa=|)&oK4Mch%|N3seH>^D)b=QPS$+upV~^ zsvZ?j#iE6D*9KL%+%M<#$(ubLAlq_@`P!8M1&1amJaJ_}#p4QTvKH-Jy6Vy3hF6cf zJ{ulPbmQTq1NX-4xal?F@}LoGJ!+ikQSwdbB>jJ}ce2rAx>3F+JSjX8~5y=bIb9?$}s+T#jjHT zeB~Jausw~h&wBBCc@UR<1|D`j*jdh15FJHHpi;f8BL|TbzK_?UWXB&yL0TMJ=Fuo5 z9tq(JoA}5;WG6)-H}wc7rKlFQC@Bn*noM}D5^OH@gQm(H+Cu{q=fALUYGxKFco5_Z*H$KNC~E-OrKv}#^Z~}@#NA8 zJiT%XH?|hAIO#;6-4E5|Sjz4PAR{RpX-C76oDhzqu_1_$2}eTgVH}AJMR3r59H5~M z2lpX1BnU}i!8~2+$o>FiMIS&@emvZg3RZddrh4#X#)Vgl19(2yiz`DWoV1GB4fg38 zG21Q0RCgyE6;o>zz4RHN!Mg4VlG7tpN{9juxPpU22@|QDLo5i*x-t2J>;77$@u!oa?8? z5ewIY&KpGxQiABUX**B(-xyTm>Vy>!j}74FR1fI)cF||Y&X@yRqYi9%?N}YMV_4OU zX=^9u?Q#wsQEln0xs8E3qif(1jd!NH@y+>3j-UQ~ah_wTR95wNWeB&YtT^kEaCpaD zmjiJ@B1)6Oc8DWr6sV+H>Ff8p`~NU5zW~(V zi<|C+>gN=y0Mxy4Qvs%Q3P7dD6h|e6`r_JYK40Hj#kKQuI5F$OaIXgPwi2Yo9blkl zCLd;nN-#~Np6mEX25NZNAsjpqfWSlh5E&kXqoF}a4GTgn%|P8Bfc*GFkX9sf;(=C8 zJe_yp^UYL6RN6D2TssL0{sSidBxJxyvv?FWMga=b5+?z1qmQRc8!z#8LBU;=X z)!~-U$m199OjfnL8l)`gqn4u1bt`kNT*!nFwp&xIhxN%JA-Mo2fh zYm;5LHS55|QRBy{QZihhvf|ck7jIdh?!EidF5I7Wd(uMuzsfD%~g@!l}NUZ_$C;D7lT>RyoUb@2sN zDnRvfK-~*cdb}5=6fY%ZDrENwsIPCHWuQ_Fl@#jr&3UXWc`)Qsp}ip&sqqKd02Qg>Fp6?8YiY(s%1STv z@ba}6vrgQnwH9s#mMpC}W*6gBp9&}Y)L5kzBGXP>nsZ}krUw@$yV)*II&k-d7q=HZ z4AS$1Ms^1$)eSsv)YD!HOLZ2sWhqeP$3vPE16gh~q&ZO#r-z|6IS9(!NT~Cppf8Mt zp(qBX!Wb9}qWPr9w$enHOOL`-lCWz8U2T3e)VW7MVC_r`K}Yf-v?U%ydr}}nm;sy_ z4s&?|?A6I|HD+R{qmZYzA2T*FC^vi6*dEaFO@!Rr8^Z(@8=qJD_1Jc+vEfuOVAr}O zSnU$yoTC$4JyKl!2-NF?zqE4Ut&U`j^7B@+@-bpBpa>hZ8) z7pN~M{5}5EN%e@JO6qh}=iiMrX=I?@rfs658n){`4em^tacA0wd$V1*KiAEzm$$~v zxHe({?Fzd)WoNrRVaLreE3OV3K}#9wzkSoGz{LS0F7)fM>C&)rUp94MN#BBnk3(cm z8rpEe*akXJn%Z&NEXImmigVqxaa6@#z(&80LoAnlc90QdX_d-@r2#xSHHhbDhWRA0 zUKuwrOrI`$@a6g#uVHz)BvxHI>EvG>;9aUNK@Z<%GWEM}G^OO|ZO z7Be$rm8v9Fm6#bVW@ctEvy(W?&}mA#J4vTuX6`-revjv_z00p!@k!6jnsw)#wNCdR zd%aaObMdGXa57ph>wh%pG|*?2znYj2Jszgj;GL)chh(byM6eRa4#Y>)czT zp4(7i68ALe$R5QE-FvFc;%}g>MhUi?^0CzV7AkTvSC)<0(ku?jh9(th7%NQ1 zurvV!)N05KM{9B*J4IDTdZHrC10|uZh_JqZaGP_8us(-Si_-`(J&iE)vxu=$LxP@Y>hxovQii%! zmx1-#6s*-GbF9>)V!k>Ri}hJpZO+4HyA)e(GORaCuw0*mg_=yx-ssR?Pj)CTEtCdd zLB5wYvfNCN?qY~=P)s&Id(5x4sru-;yV=~^i!s>B$p$OTnNqotXz29h+;Oh;dS9B0A@9ZI|y ztH-mUD!ezWFVdsAI5`R&d0 zd0UD^{j{w}tEaZ6nq2ZbTWI2%jUN16P53$mmHZ@|A{{Cn>LXwh6e%+$sM34tqYB`B z9jHRT^>v_9)+)3C{x@W(bFa=v)AMKImD|+coARH`P*1{>0Qz4As*sV=lORi3s*tG) z@2TwHo@(ckf9O^Pa#Mp?I^|-c0|!ejmQFcZ>%-N-3}!}JY{_@=ya;5`r=fO+`>5*Y zM9>k5V0vBz<8va|Xo(Pc)tt{olQaKveKro;3UIqsio+%;)~hlxUKo$w{Ai4nrem?W z5UcGTH0NWtMan^^iPvhgu~AQ6mZ~e8 zbZL{Owp0cZd>6_y*spc2B!fL$7t6Ex`YByNrJ%1Ta4gnl^7&#iD6WsYh9W;3v)D6v?926fsySio$YXB)_K5gx)IYRo6=sSrI_nRdg7TgT(x=wxk5vlrY(+ zq12t~9NewT!@YVj?$qZoSP$y5uvM9k?b;0NHRNKqF&jG#S$s>0pAA`9Z_dR^Q!abl zjuywEGdlp~kuJ!)VTP0|x(G27!QW5>Z*390G(_;x79q^!G!pH#kmYKKJU2r~+>KG_ zX^vuFThxTQpgHzBuio}%1Y$5d1OwS2{N#%VB*jV(KzFJix>Een5bKGu5LbqDj=LE$ zT@8`wq=QhiGw{|GA<#&KC~GxD*agBfij_7c);fx@)Lh8Q5E@X@P?Mld?ovlxB|P1yVbmKV z75H?i1@F($a7xJ;Je``Rt+Gr%X9PK!uy=&D&S~hKQSI`RWXjdn1UAOH>?ce>r76E9 zX;Y0g*|GnMl`ebv#`s)Dr8pLAqfJ=suV9$cmJ|)9-oHD;ASDp~+@MP6sS->HyaZVR zpafBRExdodkNUr)L9k~x>?+x5aNOS)Nmw(c){9G17vJV4RRM7b66Sc!9eQ*F44x+ zMRK1ab7>K@&Wd2Feg-yL=V7CH3QpRm5pmfR^{FA;*CI2N=Rb z6f9RKVW}z+3l;GkiBQkI!YmBS z(lIVe!=x-36Zx^2DTu>jVLWdztrU~vii5VS zN|UfsmW;J>D&aG*U6F~siY$)(@+|C?reRBwg!|RGc+yQLu1rcbSB-zV0JL33SxMmwOXEpm5L;+RV0HvMK`Kau~CzT&FVDn+pd%)VzpA$ zcAyM-uOS=z&AGVUD#4w$d>l2)I1XD1aL_EnZi58t)!BS~mf8-3bW%FQA62xm1TQ@iQr(Oo_O{{w#z^t8+$hCPR|y_WwBYU40e(K5Y{l*2daQRSu-sC> zL04DlWHrg6)|HV+Y+rw|( z-{+_B`nMk(fa04E5Ap3sM;rulA%4ye_2g&di~71Z>g%4UqSxX1bMOCm0+q^r%1#BC z3Vl=(_8-i5W2~zZtyN;=CI+KImWl}PtFY16fQ6n0oGne^W@iIiV?!8gY4BB3f~pRc z`)a4zW=!{#>KLDm<{7vds3FmVwxc32Ur8r|3$R?7i#NubI0K-pPnf1JHWi?^Fafdv zN5na5;ijGleug6MNj4;VW2h(&<0Z*FP}piO!eMV2ZueJkKWw{04*G1Toy;icSXu#> zZj=oRanPC%ioG`RE1+gzt0_|j)22*p)|1(F0#>Wzv0NF8#qwy5rHWWkER@A!zBn2S zC2^Q9R>^`$9yD7RhqSYz~B4?2%3l!j5lhtvC}BVZeu={ zt1@}uL|K*6-vQzqw(!wEhfpg6L3+1eObsiv6Yx9JXZPPD?JHbQR%gml7{}O7TX2CCBsrN<8T+$D`hIyc}=D zvyoan=&!=TtrD(Umg@6(*PbMB*}}!(x+^p}N*8LuXD9M&wa=bFv1%-08tvV`X@7OM;gp3VgmyyZ$wNDrK@X ziRD|gln_O(Waip%xOASSQ~DQFKy@_N!xhd_wb^NkvQ!82OK`C@f{TSduG;FetC=!0 z3Uj@6`0&vNzId^LFWy)`1}VXl-hcjL?HI8C9#9FMKL=C-ErC=Bf-A*8JWx+&s{~f+ zqf)s~vMJJ`_BAO`El-6!I~FD4M7UWS!RX>CIGF0g!PF40w$`vQGJuh$IxeZ5ho1Ub zhACyLom-W>V956dV*%<@ zgOKZM4_7r2LM_gsD9920vS_R} zC>X9(;#2H&6mpq=&?(1WdjWP@rPyl8!)9|XwwkiB-k6Ei+BD8gSE}N%ToHrCvM7$F zGJ+#PG79s`2rMY0F|UZioSZVhsJ~@@MYLy6TTGGsb&DlYs&D?Xcr2I4W2r0wi>2`l z6_OXx&8)R*)$Oc>k`&ArCv#tSM4rk%sW)_~G(Lk&cXL!lc%UyQ49hgwAuvkAF)Izl zQei08Zg*B z|DZhWI1Vc^@vupXgYpc{N}to;WqBGt7_P@bZ5|$XD6v_Vj{am{6nj}9)#?JGjYLSY zJda#wJ=90I;8w~_Ov)k|+^ZF-pjfX|$*ov&MW2-#%P+N8ouQZc+51I5h8(f5y?l~B1s9gCi^)JHN+K8cQVWJ~nKv4@WzFXPi^D-2HpDP^HT_DN3xru6)|3{`+BWu`*VXRibG zWR^-9s*t4$*(p6wW}|{z|H;q(kH}Dk%#>hC*{J|j682LMW@)q)-Hk;k&Pzai@HO6a z(mN}HwShM5O$^{~ zthSb5tx1l z$SIw`Nlzg*S_>Gm^mTUzDp{OO0`1*f3}J%tZf6m;+Y7MWlFuf= zG?6BK;Bs{uRx0AKTo#QL0%CC_=o^?~NvQ(m(kq}+CaMCcY88}BOX&T4Q3Mv`;r#Uk z)s>Q1EWHZKZkK5yUP|o&m41^piRMd^SZ1`@AjW!=l=YB(l1P+=yCTs+17XG@H$SB7Fb*BcuJ5m=W+Voe&s?SRGnFf2&JFeg(5 z4X{WRAZS;~LzPUbkIGZ{Nm3~qL=i+ObA7X?6pz}A@J4S1R!dSaloo(Oy5prGg1@>5 z;w$>-N%6&kA`vU)Y1pXFz*cP*cItEZNqSVu+&N1wjON7v)y7p6w#at@-GYMxrR{8k?f~*j$3Ei8`$H&hklVD)~*c&%)6{A0AGY zaIn+|$)?C{iY{neHq(RGWm6;vUq@Ab5|##=@WI1%eDGiaA3j>(lApjznJK}OU`l}e zkANybRCo#*D*^RnoCKO}m;6GxuXW}W_f<8{ia%0fimJ6d`-_G*2R$b;}3euxfG*JbE~xws|^y4&6WbrJn8fOuHv6$qFm~C zQr23E?e22y^j2c8w;BfnH5_|=71;0j8*C}NC9o1yX}@~4F%K)GI;hU%l5?#z8mk1u z;z)kd>t#hG78McvB)Ae-g;Vq{XmNHhB_IkZCpz(+HxZr==&!zzCwklavda{ko;+qEx_|=^me7Zf1cbB{I#%vq^ zfUl0bj#M`TMBAxzTZ*omZnnwr)^rn|j+Ar%luG_z?{wo{XC9vR7jhq!fcnmC0}i?s z4C&HXFC<>Kg1?O(+)UNk_rhBL0?hR;uuB`6p}0F*z}eOq<_7A#dP*7UjmuU@4!;3K zMl>oVi5PD$$Gi7dj!S-_#3!gyeDZXe<39`3zXwtQswYeTe|Vq@AQh(mG^ipSDgjmK zq0+xBT5WSQ(Se_x#d=pgHacst-`9Z6&I;TgYeTm*o-@-Z7X$PtlJQ`&6+4|YkuL%Plt6jdUCKeP zY3M}d{K=rt3B2_6l)VZ--5;pI;ZPk8hY6}x*zGOn?3I3hZW(kc`S;&!lwz$;%mXqK zp>LKaVv|bBV%mi#E4*k9+Kpe5s{py8BtXU-2Z8k@Pzk0CR7E%gm|#r*8_IOY^8zp~ z3Bq(i7`F}b%GiT)fP42k`DSVpB|U$!?=9nT=%QiR%YTg)oL zu~-_7acLk%B)*s|2v%jrG8#~YV<|t3gECYOSvVGD;aHVNvl4(@`N;!-?Ej84)XH=m z*5&emiTa~22CA@Lmd1VJRGW)PwozlK(g2Bil5f!8ZL<{f%0%AVrymL=`lo>swH8R$ zwN5I7vLuiyVZI=ep9IsTf+!B^1q-o6*|jqEC+o9Wc9HGoex2J!XL1in6)WZ6|`Rxq-z z8zart0Qo+ati642z6E!?3h;cSl&AYI$I9@PeW=>z^z6g-li`^96v?^L5C+o~064|KT!Jn*Ixu{gXhY40Uy+ z5lyAp$Vv1^T#yG$wM4Mgy}+j#%ycfo&R8E-2A8;hN+rMEg>yXVr#>pfl%D5AFwr;% zF9%D=lA_R4DaS-(Ip$j`vD#6Ko&F{q3^ZZ6r4-pdj)=Z&h&Iw=HWy;0O@Z6}Rk+hv zaSTx^fj4McOJ0w?s_d192?W}so-+Pg`g-~`8dUA{lwh~F6nlMT*zYgrpmL1F+|(8z z_)<@Guf32j1&~Z?wI&;DRaw}ia)| zv8?f=q1cEd7-Dxlj@k$(Och140%0gW7=w}!hVra59P{~q3+kT|$QBBtuviogf|($> zI<^3;d}TOYl?hrArOEjH4keCS3(=S6k3vr~DaEz<~}X;Yv&8;2T%+L{r@h?BKgln@LZM0@`)AlTcuMg6!e+^zb=nq$1KXC zDd^t={W}n1uObl?2UV(bFLacU?r7a_%)$feq1L72etiZWG-cs&Yc8I3NbsV&fWb-! z^gf)Z!Y8v0_;RTgU#)iF7i*pP<;E@iX1gEX><{7H*;ahI)sNrO<x`0n8XetfZt ze|d8ge|~cvf1>rx+Y|V7y$>I)_we)KNEOHpEbFR1BF#mZkVoV5)lPi9-OXpFKbmjE zueN*e@lrEBU1`PpOKo^GUW0{3F&eXiknUrLAO~Gsx6ptInMl*=pmQS7^;5bbWkFS< zfja9@Y3ffv^>nmAYNR)63)0b6mWP?{8V2eoPgL3H$v!GUl3+*xJPFnR3{dHRa}uT} zp(+4X7*72|0#$IBqAXPyP*ES1dZax^OQQc#*2i_*jh)MmsY?y4=wbU8opDtwI9 z*q-g)R2z1O>acmM3>&RQD(KO~{#AKTStvnurCxkIY$7mH@X)DU&QB7NAM`4**Q3C0 zx15891k~3$x~0JFZY3WDB>m|==}(&^T(YiJX7JF2G?on1a&p6uKi-8WkvwHblx1>B zFAryk{tc$#m@5p&Y(W?Umq0260d-BOY8_B3fq+ZD$9z%Paj%trpE*T1X60cFR_eJ@ z=1M);iTqHEN`iS$ezPtMBa(2WJL@3U>O9MTwwtLRoq}F*1Z!kz0bnveiZ7}5<~{%b zAOJ~3K~$8IE7Y_s1~Ub*Diwk}0rT<%?sqN~Cu6lNjkD2>%1mrmWnrs28(X!xtdQ8J zUam3;^$~6e(HF6U)brtLR!z{h+eU3B1C>C!RiDkTCuCuub_QjnLTOJRC&&{}sl=a? zgmGp{*8u2d)v_!K3zBdwNmM=GHF@MQPz9LM4>$@s@3LE-z(C!vOu}Jx3ZKg+px$f9 z#QnxhJZ;Ux)3zKuZ5OLx+9k!CuYmfpUxBxWN*JnNF0|m6Yn}M@#x4AIs|UZ^?Z@x- zhw;t9D87HRfFGYO;|~w!@Vk36_~G#){`$r`{^iXLe0z5qzr8()uXcv;$yyKhU#SQC ze7ugc(}J58NU%GPg^FZ+z17QL{bH>PAI>-9v-K`~xYB|5mfP`kx)G~w1!&HT0Nt$$ zak>OgOLf@lodw;B(z_snvDO(b@u}>$GS*_KQa{z*$(&36#86K(7w2N8rw(_Phw<@~ zt>X-pBvU6#eF3ol5m1F8mXM*I1S<7aUk9oHRf6e%3s6ZCCB#Wx>Fb))zxQ6ynbPy5 z`3V`I{KN!hdt9YE-5SFqS}_&k=Wa#4>Xi~i37#~V62K~KO_6MBXS#!@{EFOYgx$Q% zvJA2kvp3R)mA)1%FKKgjN}5!45&Z;J0hM~FYNu3v)Jqpm@yc9ckT;@kxbbyRX9ErB zi$t(EC4%KC5e!8lxao-440yg-fvvtOZ1-2Qu%Ffg2@({$twq>xSAe!oXqAuN)43Gd zXrkALoy9EFC$T=o(JdwJ4^YT)ufGVldt^B1$j44gF1AU4-jK!9cG~jUsmtWjlmS5J zL8?@1l_Y|vvVXfWmElV7X#;6V9>rNGL6au=LO+xy{xl@w&lIY*z=}MAdzJL0SS||3 zd_gG3vN8foif}B*!!TDE!ZBYIig{%?s{^RdNUly4v}Q`f9(HUhqU<#hv`o;Q5z2!2 zx_BRKHY<7Gd`y{%r5Y(_i!<4^X;zV{G8-vO!el|>agYHCt-Mmu*DRG~VY6O_jT#BB zfZpjS#(Y^i9(0$ZKE?x~`XY3u`SG#2gZ4t~HsxWvAqNC^f~l~2x>%N=QZf`%=1ofn zs_iY>;G(}fS~{STUU)7^!*Mc5PrD+Ez)E2_PC}LZT`5k&mG5Sq$Wm|DrZHG=*QRo2 z`lvMvPug?vyi1HXd!%^TSAe$%6dWHp9KCi;U}oF5iaRZt&I?V!xjE6wtVCMijfwKPl@25DZ*vVQ@ElnVmI}| zi0fFpRfg5B5^VNXuuz(Mp#)5dot8odDM6KhO7E%XDZrLMOB*Q^1lPkZISx9+IBd_s zUP~sn8d6m&krnjK9>=j>nS|}yH0;!+W3xI1o0Un}s!GOAO)9Tel7O6KKBSW*n>vCT zP4r13HC+(F&>(#&iO%UsV5QPrfa-ifIF<@23sZrV03u|il$lZ=mSD;dC6E?{VpblC zIYk&}sVbNzVo9Ea1%)c+i|V2I)nPmC*bFi|YVt-K^Or-VZp zc#i_L-_H|7=E}ni60)#;V(~A0R8jh1%Cg>2ebJ8;Vl03 z`HBj%kLL01oeBJEXAlHb+Sh+)wh3=dH={Yx8?iPQu+or=Umi{1)2#t~_jDPbZV%$4 ztwFrA){Fa-O?WulfyqWGa>HE_>uCuu8y(o{pXVMbWvB#I^Gg@mvX7?x_7;~|LgjJU zg1^W7u3Dp7nu@KdZam$g1D>-Wpb|JKBc-4os!-aW1n1v-{c}M5drM51_ z!Y)4nl^my5hUzigT!cDBIw(Vp3AhS3n@b>XMi&bMT(&TRjiDZdVH9PjCfb@X)K+7l z(ol+waLFm>nw>GCeXk-h;5stHeGzum0VbzKFcGP;Q)f*Pf^GFspBav=?g}h474T2% z%`OEGmreqeU@8EWvQmQSNzk7BHCiLxZ_UAOQyRAFld(o3{qk7WgB}aQtCFxLbB0|#I!typH${jZ*xQ(#HIOk zei&;+RlQ3p@2O1?!9ivITwy3?7@}cZ;uA<`6rrjp49B88;T23%u%Jl6f;wnUbP1M+UTBGuIn!DiaHd`bkDvm&^j7s3642%c)H@VX#^ zmzoIfr$ulUiQsxl1aD0dd~{FYhK>j!X6i_HHA7oU0B5*lT9fLei`uBGIA|}zW?c@p z8&ugT0d>1RQ?<)qovQl5QX0z|UDD|a!NWR*Dzm2_G=g-CG_-S)5X|HSVLCUEV=5;A z6m$7OtVW=$UdZ%mAV@72x|1b%6wq*ruDjA;iYNWGsW_@j#ofjX+;7gnqqb~3?aad) zJq38#FUQ*hO1v{zj1R{u@X2H~zL;sm*9)!q^>PP(x6y+ib_em}(I|enGl4%on8sh9 z%;T?57x0(IbNJJvS^VkY41Rn#gFoJ%!VmYS`1#%43H<(O6u;gbz}K5S_+qUazdf44 z-TrDMI_V+zh7}r;eR)}>TNZ<|*z0VhLJ7oHe>HZ7>oC6DC1w(q5d3H zPXhI1milv0{U=ag%TB5Mr=W6wZKM(7?ZxP6C_V_}nkM^`(hy7)1T$1;NycY^iCr{OQZ^26;!XD7vZX!2sd>^@TJgF z8IX|gz+y!vK3clPTSl~XM*ULKm%3&-)V&ld4-&zJbu=+}jyjFw)1cV`^GI~vC?_ondm;XGQ?L*Zw12G_Ji zFcpb#{gMc-IwJU3T;yx2be6hZo{F)iA{3#9*4Wxt&m4Hef8t#`Z zaqY4dt~#3WP%0thIuE6K>x!^C(u$Y27g;tXNTvv=^qRo=pUqNV*Ps4-Q2i%RUy1pJ zlAmBo*(m{)T>D8jHPu^-ih?A>2D*bvit7&Ma5T|{xvo0QbTl|arJ)qT)Ko`{r~4OA z3njk@7TTxa<7kX1FGqxV*doEl4FS$(xN58pakw|ilEa{k^M$wR1$L2oFwumKPC2%^ z#d-BOxGznA1393-WVp1N*2GBGJnt2sdvPgbCDUHBHemKVRLpUa6A($)( z#gzPSFVU5+g7LvL5B)ytVB+tYdcU(Xise?MR3pwEB2 zH-R7SjNy-W$B*N?yHoh}?FIbi;RZH3%Hd;j9s%Z>2({Noq>BlkMJI>;6n{FQ?TWIj zNKAEApdv2@p0+yhb1{Xzp&IDC2}!0-%BDz%>gH$;H+wVOaI-~#yCW~&ROP2&q_qq? z)7^ZV?&OqT7)1Sh(y7<8Q~{_b2T&)Wda{@LPoS<1aj8#0r4WEh!hQnl{@g9h4m6-f zkp}wd=kIQVYxZW`L#17Qb6rgyLR&*2X&&xO^kAx?2-oyPn64G$Xs8Ms?J}OsueVBgMN|MP!BYqV=muq?HMv+J_os?X z_R^%=M0BT!O4Jc)3_IJCAv2j^jL2d!u1vy2X$r`ra!8)Y1}qa*IT$ThSq1je&8XsZ z+>)oDMH+)Pc>+30lF(h2hMw{?^p&S!pga{Ll^K|<$p)Q2p{<$0!dMIzL~#tuBKbTC z-BFsB#hwV&{iX4I)ls`qaVW+lbS@+WW71Ge6sm$@S`@1+s{7vU&LU?UdVq#`d- zis|AMELG*AKEW4JHd-j~cScprO+Eucu3b|KS`<)u3oI1TalKf~OQJE88^L?{YlS2` z%EDoFE_N!juwR#l+bspGb{LmNV=O-oaaLNmsV+jMixFN7*W=C6Mm*`Oz+R&S`wbFy zn%b|+!ftIE_n&FIi4_p?a7-0arv0}deeA?5n2zTMU`*nVQL!J!a(yw9?Tz8An+#P3 zYt~JS=J+sdr}6`N8*H{9gcT8_grJpE((;~MJ*90aT0a$HuPz1q^{F^&%EaB)96aa{ z<55>W9^Wd!lkP$m`M*0-fe*%O8LFR5H>#kzbPK;;>&EYQhwz8PVTL3@mEuqLCpqXf z!Iho_-S3V@7_5JNG{fNi%adjN{?P`0{csES$2;M!cLvuD&Lh;p1pYSq@U_)P{0%1z z)D>Z>s|pq3cr?hKI<$UdE%%aeVl2@pwy0=%b#@R9^?^>+b~}ssL7k>B;yfP+yr!3u1mj zE+tI-g|eScp^zWyWKRvRp3qv$=ncD`Z_#_qTVTGr!gju+t^O zW~&&xZK^DEn+8*43fz#-nWz9!G9#uVZv@e?f;fgKd8!UcqA)0l!lWVvV+uNxLHC?8 zFhMT<1WZ{XJFM4agrhDy3MDB)$c^wsUZfYw(j!rk6AO7tFmhwBBRSLwQ8%p+>1l>U zUmIkHIztxi4tcBx%9C!QBGD5yiC$<*_2z4y{n7}G6hvdJAch^G$i#$#Ora-bG3>%L zA&ugjORD=zAq>@FX%I$a!5A$F!FW*^$E-32bH%aTnxOW?LTMuA%2Y91nt=I=RFIQV zO`Hef9W~fjlicSg%Thsx8{_%mn3jfczmkSPtA$aZ^U^ztIP5Cpu~iVQdj0BT%6?TU z4(do7tJ<}HccK+{J1WqT7 zjs9}p^M8A=3hxfr;KT6-5L~}r>B4U|yIDr{-N6t}#`lNAJh-CIe!n*WdjHo4Q}`dx z7V!T(U&Oz?SjV>y*6_`feLR@xhNrkiYNHD~BQ*x9sm?iuDgl)a^Vyl}F;uDi_xHSv*Z@x!_K&ny;OXuh-n+lf z87i%w3e)|QrN7WieI1~$zbByndrriKVDjBG=gH32G%|qZdJ2;qVvP8qf!HW0!jWyL^s;dDL9d#IJoIf^3p=m#zjJDM~ zjX)O@1YI$Oul*&&c{=b#;d#oKxElN0^6Je*P3=hU?*gtctLx#1cJnYi8 z6PZ2N8M}l_W`=l{^T&-K02o6~a zU#@J-jp6gZdEuT2bG1aw4M&8!+we{Ea8E}RWkjPvnS-jrbYv&^A?T(Z>`l(YNJ9j3 zZ4n$z&%o8}Jg%6X!4;F!xN3R|K6EC<)d1Q44k(Sgj=FR@5EqOAX*5HATpG(~O9-l} zh+&I5&QQfFZ7B`2C|f0*F?A&&$Bm4f#EsrO5Qeu}xWSj?8kW3ih2UenQ@?Tgd_KPVP+0XL$A0oPcVm3DTnSaLU>Up3YWmtJz#C#_DJrwr9HV zV0{>0z1-ytmDWrNpcDjEp^r*g=j#A{{rySPX~7GXGE_31=I03s)&H`R|8@PT@LrHq z2~sM-Kw5Z`jOqos^1q7byOW?0E|t=gu9XV$bN8bjZw}+}<{%zzkZ`{r57)`AuMhWE z`*DA@7X(v!5=8H<^e|NKEZxHG#cmuf^x$xD5ChF+kR*j7A?O-n0zBa5WXU`I^e@)n z;u+rSC*xa!s>W%OOPyuI6x!pr(msU%XH!I7vqq?kDKh)VxrDxBmCX0K|{Bc2p{aP zPU7=-A7g&J2k*RjAAUElz~!Y=9CCd4#x2FafZ2>8cYmN!$?mA6Fm_u4Mngq zJOvwl5gbfT!^83dq+u>-&hW)}aRTPbQ+Oql{60r>!`K{}hEzit{v0I3npH$&P!fbb zaRA1PqCjOgT?Sn$Nj!G0TB(f1YIOqUD&nwEmyYG8T$Dz+LE>Z07J&5olaoJXr1N=! zY~{Bq4Z#{okXVKk#;#NwG%cqU*h1C&{qh9du1vyFMIs*7XW-4Q0=DY=bh-`w=>bTx zRbyqt{ecoZ9x7))+1pLjmn_2lhCJ+)CiBT@I{ru7SF|lQB?|{Zbs|3)lae6rhfe1C zV>-`|V=C8|pA)%$7|rs=K>7{zr`|+w+D-JN`KZpmNMbNjl*pH8hm>icTVizGwox37 zMrkZxzpc*>Lrr=RPtB_mZ}PR;%2-c6>D?-cLZ3Y8)%ouP_SapgCFAcbELCRU4!Mps z(g~hS+;1yjsFF+7vu*{R_bBnAw-_%6D)I4n9ey$2f#0rnvQCgqx)ayd10%;O2;Hq(ODJ zMWrMGE5i-Azut%Edn0(~?j$~XyvTB?lNqT1R^j=2PgPI>5KMpba_4^vcJP1sx7$)= zG)*uSw5P(8KKqY!s3*0kf(}*CrqZvS^hf>i^9NuZssKJ0E1>qj z0%|XVR0Y!>hUwkqZcq?VDUO!9u{YO;(T-}AOOlZrAB4ov8}MZ_BW{|rqeFF;@IH0*TG4 zG)p3(i1S5uhzF9qoe=9qEeA7Pv($#Wg*G2F3%zEKP)};;dm`M|4N(CeXsj&6#6TM= zm12}CrEqezfq}j@OwBIA*hClBcE$({^@Ph+D_k-rEHCqI@nuD@9DvMpMv|y)q z3RW5-T+u%T7qU9E)PT3S8Xvuj_OL{hs~JKs>m%icEeays+0m>kFM=zX#i|VKP%pSq zf;+8+xYsJfL47U`YIAVAL5#ai`FPkO!_y8qUiOsXgP|IHKHh|1Ot;~?%_01_KaM{i zPU5@$F?@e8jvw#M;Kx@${qgw*etcsSPsSP$Zh0D8%@X|U%T->i*Tzdmk;d`P#sM#!q)H{EVR$?(LR%lr(t_Z3+@(XxM637n+}$^ZexPz8_sA_ zq+x5S36Hk>@M3=uZ{HciCr=lTGg1O2L6mx^LO)f=Sm|>iJAECf-@M#`5dRZk-`V90 zsQ(1&stTwAM1SsiXQdb0)7_ZtsRfl21!<9p_IJlM2NO8c6-FClT(&d-ooBGTq{*48 zzWO=noIk}tB}Xbp{fqFj(L?ZMQ)CCaVz4|LN5c)+>#Jh-bF$^5RZ_aM)R^SW=Si09 zB$zBo;{$d)P|6MARmYwTU-V`8VK9gKZ^0Osg>e};u878XaXiLK;u)xI;!xD4`Jp)e zCenNz5an(Ge|vp+S!u!5=o~H^oPnpcF2b(aAi~Q5QNGTcfs@~>GB+M=HF8W3wqc~F z36-TX6v=WB9B>0pP8RU+aD=AzDL7xTgr&6}Of58EW_}S?mKw0OxCl#=b1*kJ1sl`z zaI;ZI^fePCTr)(5ml>bdpv$E+C7&xwz)(gYCUe6vl^21jyf93P!}ybE^QY| z(pWA&pV~QUS>B!)EGCL5<;$ST21z}wr%s^eq z55|HxkRdiNC4FbG3Z`WGqNLtx6b{Q1@VGt`Z#L)QMT;13bSdz>y9C>{S;)Aejj6H( z+#V=a^|xD9y-2dfyH}r!qe?nAoq;t)9HvR6Pa0iGC?>@rYyv}N{6w}7$7GHVC`e~Y zQ+>)z$0Z@`v^6e^0-ZDIOb>=M&;`-1W^gw+18a2=EHuriCqn=LAOJ~3K~(4pDDAY1 zphrjSv_!BnJPRi?b$B@$BFN1QzD}25qalK)`9&o9I6xBZ1%hgzy$+JSY!KFf&yoq&1VQh>L*O7OuzHNKc? z!Pg6&_-3sS-);{vP=B~Hg+Clk;J5o@`1bw+zJIoc$D{Rp?q#=4hX412ZT#EYYj{3g zh5F=c$i88MOg{@0#9YOEcL}O+NPL+wp9F2=Ck-$0twc@!4}#xlfR!Ab=7~1-Gex0` zN}1@-!IVE+?c)q}cAycrYUSKp4EA)w6{|~ZXiICT&Q^x7HP!~1rI3`$LSGw(niqJ# z-`+?U_Iej^(^?NC50QjjW1w#LRA8gC1S?H4HZ`IB`)HessEhZ)US|o03llI@K!@AH z`9JhNx<#KEgn^u3wumFAcQWB1y(bN3XedKK?JtZ%YgQo2;yw9-WTvk@TcL$rHiD0( zCa#;Q!^1=ko|c*jayCZnO(&#=cpx+KCOh`!_HO*_IBEEvekyYl{)Or)!=NS0dH4hM0wjnk>Ues#1*7@ znIqZV7{wu1xQv}GO2Vu(7UMbLn9V0?RU}4ogE5r-(;pV|iWJb-(#90I*RS(pLNwND z60zBqi}|`tmT-mHYN9zkP&M^0O<|y}7DQr29E?@T-+(%w7l7G3f6R$VG#`k?f)IAm z+ANO7hCGsi`m8AjZ?%Z=s6Gqt_LqZ>@0UFTlxK3my)a;OAxvD;*J1 zL$0DUGXk9@S&%0LpgcVky(L+krMhW}_yVrCz6kzCBGA35$}m^dhF`^CPAGQj#jIf1 zuF7D?Ejssdw?Pa(R9KV4mkXY^$?>dRj<h@qg#ZPMUbwUyeUMp2at}NAaiUbNG0p8+`>4kcB!x7VU=FE+ra@k`Qvu5`J#x zxNNQgTf+;Sp;~C4gO!dNXQ(d5`tYzaMyQ7~qHbJ4etaN$Yo*5->iZ9-@b%lYA+>az zp`Of638)0te**Qt1XMc4M?F*;N>LA$`li%FRSlxu`2T87Zx!8eBXFZ92-QuK{bVQ*bv?N05^d^24uVs3M1t znawvyFjBT z%Th3*h(nJ!lpWPeBi$hma6-lnYb0H_K$No)e^XNV=Vz@Af-4;gjJ+iSC?`E6IO#(fa2W&Hn~QxbHgO5k+ z@zGQZK3(iW{tYu!#JJ*}l}!EzO0>1ziN(@YgXKQziz9? zS*d}B2v#O)aCS0=oxMH`jL$<;TLf(#5i~SKFg7|12Ww5-bT@~yjTXuz@n|c}!EmDz zT_w4=Guw;L?{A>9Fa@!$=1BLlMUaICd<;$@+FBc#uBIH7p;!5Y^>kqzU*g@Z$vQ6k zDMO`m+5}cQTF8eB8zp$sUc@SakEfgQ<;pGmYHI+$+8f0m?l0mucV>CfB-L3Pj|VI9 z?coSMTj{`$PiF8xKG?<6se10G(huI@1~F=7@hqF7jN8Rhi+iYMnx`ND)mrx=91XPK zYNiiQTT_I1*g={Yh`zdfY)&@f{zf-vsGq-}{r!cXfKw><>G_}Sp$g?bJ^#T={?S)G z)V~kZp9SeFz}{Kz$L>rI=K2~i+F6NuWhRnBJQ3sP#>1(bE|%O!z3FVjyZw}<3P7dd zl$G8^Sg4EOphM-C2J%AP_$2gltDJ`hojDE5=8a56xMoi0M{ z^$_Q7j_d$u+=E2!ZWp)%giZe0aQ-k{}!+5Yd!e=Btd3K1!;ZE!= z3`3e00q-joaJJTkgSk3%)kLs0Jr75-^Kdp-gPWxqd@t)GA;1B$MA`}qMP8%_GJ>3u z;Aw?$Cp`q4t0B%_7qyYsStL)T|8#y7#&SY2lpTnXT#^(8V_d3gX)KncFnHM#H&L15hltCUK&Q2*%QCp{JenPZ+1wD!X8L0x+aC)#0UWbA{-7YB zE>H^~KbXx&2&QB(eY+x=GgB(}pS4Nx*;F&WUhBu_E4`?SaYMG3F`iC0;GnM;vE=ToSMO6JhCPD*mEsr=w$pbn+qJONZ+&RVI*N-q9$r737h^5HvL1XGF6 zWfX*aA~nbjfgV;|_Uc{~L0|V2Y^-!(VWo>p2Irxra|#AVYOu7@##MJKga)}GHNh8> z%rMLhHsHzD3?8mcU~l3Ue)rxZ{N?4jVF<7X)mhjoPvZ-)J9XK(-6q2uqt*Cu zu@k>JoW}1TE@8YV0jW+}crs9d@9#}ARKGbK#P1(W<2QGwu+yvL0cM9X361h(MBcRH z-Y~6u)1=>&S{>SFV5NJ3vsC*_8gMbug`M67_+PPvG9v;r-4%GS(T_K8kKw)hllb__ z96owH&*eP0_|Rt<(4i!s?zg$8*B^5XoE80dyrKPPx!HsAWoL;~ulBoLFd@2;SXlrEB{VYM`l57TYcrLh8_HsLyAT?~-n>xc+vWArQ1FkF<3 zL2)DoGlMXm>5tKr8< z$BuhVGMk;J5c|^Ko!b=0jdH_ zX>E#5P$xUfd39>0w~jMaiH9{@FP?#e@kt!nzJ*WTyzR_ja^fI%JgKuhp;amZDyj7E zevBrsKZn`Ar{Qj}2NKKU5St%D*u{fLb~Av6Zr$bHXifBo*zhI3!zY0gK{z4-@2uxpA8!JHi_Y0S?HF@Iq>+ z3&Pw@AoaZnk@GqDSRF%%{TYU5jJpxyz08o{ZH6dE1I~~o_GjU4w4c9rp9}lAZ)dyv zaYUIOMx)G!g{&(?wkY;8;gX-$jH*LPT*ZQcN(TVs%|x!Gq>0*_D6HJcXQ4 zCxqIZ#nC7A5M*{7IRUn)iuB+Ef?{_AsND@v>0y8x@AC}ST7P4PDrKo${)b%Tj|sG# zy#|``j_O#vC)P`3xKfdhTP?+`;8iX6hVeE%r1_h`@BDTIo!^dpUn7j?gyD)tfyuNG zwk#1O`r2Zg_zu55)Pm1S9|dZa*ox0qI}-ws>U<6sbnE_<9^6jsg2dt+0?ke%MdS{t zpB>yUp2FD!FYu!K!5v$$`-NZP*(daHXwP%d-~T*L9@>WUr*^~H>MVSmjnUVv#L8$Z zzI^irUSFNSa&JAZkGEs8L51axDtvZ(8QPixbY#b&FvJZW$9BN{#eam?(H-zVwFdzw zb|czEA8{rJkYRfa<$mVub2XnA#X!AYmW-=qNw`&=j_XxvxLTEpC3QT1J>(`!J$@3? zp}puSO%jR&taz|GRT#rt4`gwDr6vh)4^`mZiFz#5rX$7I45`7ka4_79Binuk+Y5(z zm5;8a2&goeI9znLk&up;%xo`S3&@0^Y_K-fX0=U-wERX8gZ?)3$Ae&JGz)TJl{wJF_# zzwY#u&QHf$RhaFq#dup8>WXw(TC|@%eC&*1ci||!Y>Z%XoYtteVb{~YVDafa&pw77 zPyQngZ+i+mf2oIqPwKIygX@`Ha6a||ulN*-ZJ~*D!azy*yahc(0R0JZ&&l;(o<|q_7A;-^# zKc@F`{4I5_1FVn}V8fB&V}W$KWA`-WRT{a=dB~j3A=dE>qz-2xbui#eR_1DgI1e)h zrrg^M6medr9C9xc#CaMc&fN&~>*Jja5a(ck7>BcLx)yGKhTSZ~txrNkQ)iRIP&l0B zZ?X=BKd*#U1lurB38s{#k}V2}Nt4G^Pf{RfKBRy(lpX+*#-qM*Z=MvX{HsjzUEN-nxfpx2pV?-s9ewRv&P#9jREG|3ZQmCa}c!xtoUR4T#cUz z>yVBo`GJh>Ry3(ts>nott`rIGhHyIeG}433p^S1wUw$~2tCKOBEy21b9&@?j7>L*D z$5K{GXQFh2Ps1mgCxq&|}-4;L~P#kPBNVFZ9*p#$+e% zO!wgGXe(BGYH@wI3Gc2>;DbwAthHC5J}DehyYonNF-4-Y3BpZ|!S}>2hH0eH5hPfi zMuMe2vYk(((Cr)#25E(AsaS?LJ4*0=e>pxHuExh>b$F-03^yCIL0`{;O3p1QonVd+ z8!g6LALoJFKuQSj+0qX?(ugJZS84;iJXFDF%nm1C#6|tBFg)}u%uelw>8ZUqxa|qH zlRm!dS)4tv4f;Et!jTuAz?r?z!Q#{&J_M-Fi^Wv88n+fYaC@nZr~6d)6EuYo%6%$vs{djwQfY+wpy*z}sHwE=mX$O^pE~ft2V!z;cD(sgEPueqm z_xdRBstW(iqkE^qZmRIq`(q##-v4U{>O{MSrNBm-RcKPCq9i4fZEC~4Y`K>j>S+h_ zQwLZ+?8uI1S&8cG!JRnx;xjn(;uh?GLJ#`S=;7l2r$8B6l-+6M1=;XvWOI@~TR4-d z(^6#${Ej^Xjo40i8I?t1&^jS$vU{d-pE6Uj+aQ?Emc(MdG>*TS+v0sdZlN^PsE+bP zL7*LjvsmPW5)KEHhB%-^^k~?jDA)$nvn5ltY(H~k`j{fa+XU%e7m)5{jAVBsqQ_%Ton!7P?E2O&`A=S-@e@&vNDFZvv!-Qe0 za56xik2&iM(8U++*pg2@P5B9?1X2phRvXA;Dc+kkSX;?oDcPGXMre@No*jiOu`8U; z9zcwT4UBg`1Ak+E6p9>qlc2=M808e6h741B*7=$+JX?Y-u{j8?^trkKGxS6|V=*_3 zv#&K;6faB1NO1y!%?`kH_s@|MXpUix0<$%#m@P}dbdi+LG%u^;*=2Mf(Hjl4mL(;7 zYiow6ZU|+{a3#SL>aWrk06CA+WZ(b93oLQxduA8hPwYa7=}GvX*GGuSF@#y1MufE? z!YmEoZ*&4428ZEx<`7)Z9D>uy{Tv>KM-b^`hQern?vV~?GB8x0h1NV7nzE&+N)$sC z>yOI#VALo?C=$6sW=Ab28z@6vp_aHK-^T_?c7}*GKY>`2V~909f^>&dC=0ScMW6*M zhf(Q2lN*V5d(`;NXf3{+X~lPoUHEdY4Zotve!qr|{w_CWVzM+&C+?FcMfioiXo~f~ zaC#^z1I>|Ve;lRmXQA>jK{dG(qy!-+zzU8hUWD<1r(vYO6&KI!#rdNz;qZaQ87j|xu$B~Nl0^Z zqKHa+DaH$>+&5*AmdbclXQn8MZ?Okb1K5_B95-p*r9$k8@=zC4gu8L+TNCZY0|C1A zr@_FFLh8n%Db#jQhuWc3WCLZ06-t6FH-*)YpiAJT)hr>he9b^X?S@<*6XbcDp}@-o zg`Q^onucWrX@WIHmX9%Vyp7p&s3yvVEu(1-jDad9nA$T;X;{-3^Gz-|J` zzG#d0LcQDSDuJDr3_aqlRyjp+Vmg{r}%Mp%CdwJwx|uYL`}#=p6Zk62?a^^(V@b;GKLQ} zLeIT~unT)3wLAfd$q__Zo<^j_DM*YCBgXs$PFGZgTJ$*c$GG&G|zxIJ}L|y(ufD?3CIbCw4yrv*TnLeHP_8F_`Qw!}3Ti zu1+^IOs~x}$LbR;i|-`5sKfnvHi3Nt0qm@W**cvdhAc#v2# zX^U2gZJ-IVLRF{(8l_%5LDxym`LPNWN#6Ys-t3RmEc4V!?2(*blndK7*F-q*x)ND9 zQ&8qhpQArpIfK_0Dlug>HYk36B_1Xy@-#-iml1M(j8Wik zhQa`I6a|=~B*+{ZD(xd27?^YcRu*iD3eHgNP$MCoR0o}RJponW$->uUHBHU{BzE19 z5Qw^D3Bv77VXnUiVkb)+e)?w!u`ob_hdDHnZcqnXLFIh`WuAtp^uEC5JeB(bPzk0T zA{#UZTx6(H>0j$_iu$07m`V@EgZ3hHr%2G65{5BN8bYm4V27R_+>CZYTc3fkas`&_ zGqF^jz$cp{N&cLnPGknNVIj%$(O`-u{q><%3{@)qsh3K9RVsOB3&Xi*tgt$QB>R)d zaJzs6M+3<1&q3jE4k>nLk#2tunNG$Wsg6dVNOLqrhO;?R9ZZnoNMXd0=yV>5PUjxR zS;*~9BE!>|ukdpHF7hTpfu9AGK{il@*dfd1Jn}qDP~c&Te0Tb9W(Jj?6*Rt9{NJ)x z;)tJXPExW&2jvA?kL91vLsMjr6$l4#U4foGk6JN|fvPrID7g481QL`R%2Xyr(!AL`BfoWf2gP0s0@m8P+@Oiq1DmdBHk%Dhf# zo(4eFv!o!~6Ur3pA{;^LP?Zu}l!xh}Ok@L1h$S=umQeYdLG5h@m6tIzo~Hbyn{-v6 zF*L!ZC>NRY$!txyEf1XPqezX(o=<5tR91?tQB6WA4>Q%qC};jX>As(`Q~tBWx$*98 zjm#f;v=@BlFwXDW0kb1}vHfRyusXaQu}-9XbrD7W7g6MH2({;VRCpVs*3TS`0TyTp zv_gBJH9CT9&=q3GAGZbDpiN|pDsL00+|IF4-gI6xdr}pP-H;Jr$8MZk_4HtU;u$Dq z?kI||$An6b%XR5kD2`=;l&Kssv{@m%-bHFq(85{{k9AEm-1jDkp@? z{~|9#6nb4iiN87WyiJhmd>$FD=aKJWgnYO2$aOJ9mg6~O*y$q6!3f#TCMfc<;>hUgMWs5eJF&otpE)Z1 z%u(%k5w&zy8fby403%d~n4nrjx}MZKwAyeqB~fV-4k5b~q2w2US`+HP{Zj%tU4)UX zG-av;f4V)dit&To-4dqzcEE7&b{u@>acuhsJ(h-xuruU+T(T=Ea5aF+!w^-zrl=2~ z(%y0dsGY&K=oZ<7o}FTQw2SRf?PCh1%UNi=E}&lGi01fUBzat90r2xXf5Fx@wkNmp znPj-lVU$NXGf=Npr(v;}uBO63BGbJI?&wMyQ4Rk903ZNKL_t(=<9q(baC;q4Y0wsI z3c8dcag_EbTed49(P+wK)d8j`^*00kkjnEgLXkIRj)o|3J%c>wGsty1i(E$o6u6v6 zvAZdhp5{<_TR`n^jf!Ar{a660@cf$xs-WOc87c)0r-qwKG18>QSPM=5QxV~9hpZSe zG#T-T@O6Qs$r%_Q-4BC(FT!xwQw-D?XCpLcghN}If%%#Y%vb9M8cS74yaY`P;&ZAv z$Sn>b%hdqWrE(rVP2`7hW;#<8f!RU{1C_jjMw7fSoJdx}I!j?TY>W3qzuXJmG72B` zD*Vxx6wEPH)M?xP#CTI{Dp^Sx@9d!Z{W1QpRf5Lujo<>5WBJ#`ePcW%S+ZO_2r z)PAG|I6&ci9<WH2&Cv=3`^PipITjp&9 zrI!inV*-%wYllf!WDdayqEJp3;nK(N^!DG_NwXoy0>vKZQ0#e@pGvRu zPh~)> z_}y9`es_6b1E`;`cHy(NE_|`x$ET+e#{1Eo6oN12JMqm-2fmtUV4!|AR)cRQTk!RC zJ6`S4Kq+?QlAnO;W_A=8j&8?+7azy5UC+bl=x*2;9)W|&QFvINfh^boC8?p9AFRUt z^*%27ug|vN&Qd3C&bR%|45c0g=%XJCAQhf}l|Y^As)P`;ofVkvsKQi7B_`V|I40W5 zc}{bd zjAexAM3K{jF_s?4L88j!L9`KRI{OUzMyH_3^goiaz>(Ilfj%FYPPB;Q9+pv;$`LM;i> zL8aCJIf&A5iq3D_Qp8Y7Jb10>+)K~E{Lmhp+VLDtzOV(pM#qunX9Kyz8N^v0VW1Km zDO;vN2xXz|A-3oc{Q%Q}a2NDNxS%V{9_?Xv>^52#XpR!k3($l*qa@rNcKXj@*FWgN z=EPQ*9ohmv(*p>%ImS)}mm9J%QzQjR-rcBDV68L?b9o~4k-VVPkxP0yK_zb}58JW-!4W!%3bPkh}8l*B|GCv1D&{NS#a% zz*JfQCR6<}ogRpV95I%%#hA$yar@uDu#F?Nyj;uY|U}665U^7-_5Ipquv5R?S9cI@DN< zA3}+)iagZhC80Vm17s42=sL1HXIy7eFjHLQw zHb0aN*+$d+Fp(L^y;XXSX9V%InT8`XdEq=zpjDUY+%W#8ryd`PBGW%d|BUc!wb_9T z>+wu~jAi(7Or-lmn-KtdQjn`A`4&-@(<7&>))_tIZxrLgnHFo1hT5Pp#8Q`u(LScc zl0ia7b7Uz^?wy;1-Y3{JMp!>|KDB4>C29#YN}bRmb7dV>(uO6N)+vHfDDi~B3y=Y&DIGlt?_ zFp}T~ZHg}@l1W(G2a~COn8^slY<4i_vVuWBtmy~$6xpZb1o8hH^uv56Uxal{EN<2& z;jNxxR_Xs}qKa)#zF+TROO!7bTJgnV2L?03;eGHayg5*TFBaNC7S(@P@4y$@Dts|j ziSHJg@a23HzFzBLhu=`sBk;YT59`A(@ejxoFVPTcKdcOn!rRsu3b7l*v??zeeYNS_ z7o}e5)v0=1oodAG*;d?J=*0bn9**1d9Uxz+drRH8zucoU?OX2QkMAya@y9Q(^z!qS z)jm*=Q>qZOiz@7+3Ifxthk9iQZ*23w01>i;@WXZk8Z@hDIiJE}pk&{q8rs5O{utA@6{8sqI%7-_3!pprk0wzCow9TgaB zSA()t@|qfHR&wUrUsK3}BAw;=7-}p>U#$i;g;_`n7s1==0z6C(!ozSoazZSy-jIcP zQbI3J;6?CD74cZDR$!zs6f>1F%-1PUC^CcnUOiS|pHav0U9>ho5_DNYt5QShL9D?! zl@|(aj)>t(PwK6XX9O@{$^DXDFct0$P|BPLrW7-Il8uK`2&@E30wiT(RNj)SCk@TWd!At18R^J2Bwf)Cpy(v4 z=tx_JOk;!Fx&GSLd?&?UVjIh zzj>V8iAeLKh_gC|WQSA8_b}w%Zf%eSLx+JA=7{caC!O_4v@1qq+&M<1E*O+Lqc74P zB=grMw%|;%Ok#ubXcr`VoQL(k$5{5x{nSp-?>l`^d7 z_+u&4o8d*8s{~8}D#4V3UJDSVr|_D9OQO@Y!6w{qrR{)v`T-^WA(}#M(Gp6Tv_0Cx z9nlu%fOd%kx+0v>8|{Yv7!M4@da||4gu)Y(iJq8F_Qq_gFJ{twF`Mp(g{(j<jO`f&TsR5`{k<^Sy&Xqid=BQPkHXgQBwMkkM*5(qHb*;{3)Q)djd@9`KN$NV$**IYF`z@^rwMZiN%geaE97Z zwJAdtfU3(-NwI&lO~oJ`ZYp9o)S-qv4A$qfP0Dza61`RV7_2M7SW5*4>eOg1%|n4g ziU?0z_*)-^zu8{YCi!BmK9hlZy(X2_&~MhKVnH2)(SlIS*TiF~F$wMIez4l92c^gY zvl=-@vO;-re4#Xs&-zBQMC=E&SQ5h}*v!MpKeYk~s6)x#=%*50;m)NxWvCP+F{g_# z%oT)h1ZBAtWHC%JTOj5PgtCz7ybw%g25tm_l}b~xDyH^=@OyAe;Gsvn09DFF36!+f z)fVlD&S)oeNuALh{V=4C4AhQDJI-3^pXJMzvZI;=iP43L)>u{!+Hy>!thnDPH zQX+71*A}>)-iP9FU&K0^!r$-^LW~Zwl2wB3No2bkLKAoq75*2|AhKrg5Ny~>O6rE; zhalC;JTNYE$5^ZzhGJaMALW3aNIO>d=RcFw71hzMP>St&Pm;djGyJR(Wpxrhr+1<+ zHx^@saxAD6c%>~LtHqJHu8PK8O%!I+Jh{)^AMeU#w*XYqVHGk{Av^7gao|jqVA~ja zk)cYxR%)X(OYAsW!t7Z%yFJngosrJyigH1Bv@1tXlq-XDRPKXuk`YYs$GE}=v#I`= zPxr@ib}&|RMOZ5c#igP!TvbNmhFXf76*AnajKiJkc-*f`#DnHkyxKyR(kZy#kc5{T zlXb5flX1INf$Nnr4ua|3rc~T*Ov8HvO1#xqgb&Bc@ac3N2l+~UI8lQ%+mk5vF~b|Z zW%zui3EwO<;WKSHJ{T;<_bUzfex(H;Pgmo!#da)LXCmG6A_5Hc;jF)h`{QT!Y=gDo z2{@Uag`a~7)EQDNk2Y|&$r60?l##aK9u1}D+u8Eu#!NeI%yi=BY!@B{DrKoc{2i!t z$3IkuMY2A57z+b65MsW+8WeMVRU1JteYE7K{wbCHe+sB$ZIu{nD`$V2!G;11H5OvH zF(0E1`50-)!DxLR$85U>qjg0Xt|`J`brCw$xo9lRKuKaO;)7h^een>2EDoT*FbXTR z={zaDRiD8?yVa0}S!EQaRneHMmSd(m4pZeagq(YxwKu8cC*Pl$;ux%yCGf;`wm2H& zIiYN>Hc6Rh{=>-CWvNuYQ%qCYmM3Nl3$n7H3G{qn6#u?7i56nMFbot6#k!a;l7K>h zEB$+fnBo#JU?WQj1VMEomNHdp0XShG+L5Ct z#z}WH5$?#A+$ADAD8Vru2Dw(&w5a77SJDwF*Ebm{Om*Bgz?FQu=#zM_;T5 z`emN{q>OY}?xXt}Q-U#*8iJYBAQsDB$_iqbuIKAudZi?SVS1}9mO*;AMuC^>lkj>= zI^OKa!dso$c)cxy;Yxsgtu-C5wx;7jOB!A#&^9LH<<<;5XwTvd_5C3gXQ&@dRB(1m zB|HI@e5m{mK8f+{NPIHch%aZG@%xoFd@`=VuSbgUyOjp~cC{71o~*LRJ z-?N9{aA+rNj_ifysUvVUH-yOD4mt4>^w$^jc{;h7zCpcHZ5?jSG%-*Ks<-9{q#d|D z*N1yc{kXf>vyq_+S*ie3p#>mhsejK<2WvNAN>KeNp#D@3RRAhM^@j|#64Pxol&Zu; zTLs2jb%QA?@5fpSFy2~-srF*bw3lG6y%_VYB^*obrI>0c#AJODChCgOU!IR1bslQ7 z6ObA11IM%55o~#obvqZUQm|UCYv#}8N^re833JK_tk)_qt&w7+Bn&Hc$=0$5763iDxV=`9^D*uI2p0Z5><TbE&~tObfw6auDX| z;{;#K#Cu~}?uDs14`^fEFc#y2(T6caJGoI#d>YxC9K;fP1a)mm0%~IY5MsEG6{6-e z$+%pX2^!wqX-LJDGAXW?MPn&H7&F=Q1IPz`au?1(H-l7wX%9IDJhWn=jFqxfD*dUS z+7xQdL11kqslP}^&hqK+v0vtn!8i|&kvLDzNT*W*S;uugLxlN^V31h$N=^tErUeqt zPA?aS<63DHL-lr*d?P!3tvQW>N>JSlRDvqOl;V}g3^n^Mq5rd6tEDbebb)*58#_RE5r3Y8XYjA72k%4-Du@krFyBMms z=KFAW6Huw_7fS!lU=?8c_mclVn4$ik0+pbuZ7at_D}@@`mSRk{6=J%r2(xVkm~Sb- zd{Z7~8*(sPmyN0FEKHPVV7fXFvvtLotWiQ+t3-Q2D)J(HV5R>wA{>rFt5NWIDedsl znc`wW1lBciSkg#wr6CCu$_NY>OR!Xvi1DHbm~PQSj=KT(P)TfJUMa(5ek5qQnw~VN zC;ML^OBKp^&Nhp}bwE|gew3jSP#20Ku~ZTbTJKpYCCG+ju{eTZNbm~d!RSogMms=B?xSWDh*D!6~Hc`&b$NL8tcpsr=27; zlHiB-7*AgPnpY-5VSNhb&*>r2@dAp2olqX(gQ6fu>KvQqZ=qNL# z5_l##kYT!*5{!k!K!)jp!WWAPejE!5AI!2C(=sN4$^3BH(33&uhwP3a{(sb9|z!{x#- zTrG~^pzM^&eQHbG)WmFLs8sF~P~T|J4H>KkB&O9#p-y13g zWvDcq`h2zluXh)s%-o8!2j$%c%ME1&vW_+urozvei~*6TCqIRiYpVHxHH?0+taPMIn{tWQ;oPg z*Mj@=9lElAP6yN*vpu*mOTE)x2B`p40jiH?r+)|Pp9xf9ZECKg0u;0D<(O$JgQ|UWTS!ufHVRjmT`9vK=mlS?jOAg$K)s#RiC;MV9!3#6- z9?()&P2wyOPM}pZ5>XyX3Bi&k2@`qIAf>FJ2hUWvNv9bNMf_LbKQ!Eul8N&P5r$ZhG&Ee(L+m zJvqkWy)l{O&tL0Gb{JN3!m*kw!R107NNzis~aJyWFyOnb8n-WZ^hRTc1%AKMiZ5pB@X1UgKAG!4Z$<>dO!XnNyMP!M3uH$J^RV~Y zR6nk2yI4KzwZ%TXGTV;Z6ZLp`rUmz>n{jWZ6?bRbaCc7EH@!L6y8%?nNC~7g?f*Ma zhwCA%PEr5#|Fnnt$1>DE1=Q(Q4Q86vm}x1&Vp|awTXHbhkb$YnB#f5CqBm2__PZ@I zZ`4P*u?!ulD^3KzpTk8?&%n6os3W3apew z;(Bc&=1Ls)i>~l>S!$GogYic=vesjq$fOlCLg_Y81tf-G4+moO9>Mfcpl;4m39htqMaFhraUSSZc=O#pT}06(*F;u019dV_ z%IB9BPw64f{3z<9yiiFZFk)w@1ME=hYYDZ_MN|gpR*9&$s7(pbfh8v#YuRB~Nf%=& zB@j!A{#Z#2z-m$;uBL_HTDk~VGsL)(F2bd>K&+(rVIjc_(+Up=t5n1BUfj2&>!HOG z8M}jy-pgf)N3V?AfVn- z$8c6E!1U#s1O_R=l;YKtOQh{+~?B2EfcS_W#WEw23~E?!5cjV z_+V560jMkLSa|Kx!8t}7fcRrRPrpRRHYf9;(nw<@b7PFyC9l_xzi0`DZ)JKr!8_;+ShyW4=wp!LM7@SZFE5 zN^1dDo3pV{lM1a;rn4Z)mhd+^Ez8s5e5c$G<-zvI^)%;Rp493LywB``_5LleJoroG zOKdPrt5S4PQ%*|fu~;bx$4XHIu2#_`-ye(RQmj_XF_IgCm8y7NjS4;WEW!EBNPrRdBca4koSwKPA>Dm*ch?zU#* zMnf8|*Qa8=T*iN=wCGPzrR93cK!x(2fJvDuWvBEx8eY*;$W*Dv%3BZ-wmiI}0Uo;w z#5iLl&K)FzJ+7cq-y74(ewa-SzykM8MOe-jb6hQs0s-~9GKzsJ!1R8#0t8gbPG4zA z)@7${nVgvtP&Wqw^|iJPUGKChMF-ZlOuX8W%|QKpx)yhu((wCBop^Uph4+Tk$aXx6 zO#35ve@MeU)=$RE@!3QfzL+S-SK}Idqb+Bkem_@-Z|58E^?WlM`^~5n2s1f|1g8tA zOA5zuWdW{@b>QvQalA6si5q>@xI0*l*C!hAhPEEB3|Hc{@mjn#)r1FA&A2nsjN95) z+@0yhD@y|#L#dz2PH6}wl>U$IpVA&Gy+`X(LeM_ytE;{IG3}tzo~f{tD(s;?x`Qgn z^9ehp!j36Df9k!>pBG;LXb<(T9jG&HYETeFIa*YhYbwEPqZ0Ftg;;IK#cEAD)@#yn ztuBLwAxNcsnKH)YU<}6xVlXiXeTqOdM0z35#|lvvC*XBrC+rVC1G~ddpg6(~^OXs> zT$_Sx<%wMGuN6gNtt66xI$0pXVp%j6%Azrn8-%qg1@EfTwT%5%J-+F_QJ;flbt1$xna0l7>Solq_|fSjqAB0tY-LQCcz!rcsGp3 z>Zbn$)d86+h7)~QrjJ(9Dgw>nvQ3Y#z1|s8^8p4ymCD|0RSH}wi{)M_oeUE&DF~tj zR{|;llzOZ}(8rXy($t^!bP1|L5Kw!iPN0DqL6v|?#)2~`v>p|Nr7RKKUz5q;TAl>g z=xb3%ZDgo-D&lajDxP8bO0BNcf6$o16aKf_vo^9)%1kNV>&@rqn>6`v&t$L?TnVPH zb>`rsv2xB(DLbV;>eq`cxZRizm+g8OPV?u_3o!j`OocDU)cAU$4Bt;z;rDa3_;#`i zUr*Qa!0N+^I;>Ttv#mAB3|7Yn;ZjcxRyry$S)Gf)qIh-%o>IkQMj6L~LMxR?pi8xT zy=sQ+TXS7_bFmk1EcWBo<$m0MIE?ypfJ*zP1XW?lpI#F{|2?1zaQ#z@{Q@-q)bpEq zj`v!N@OoV~E)~eIRw&18UJSbA!6@{#L8RF+wv@0t@HCu{KFv0{3ss2>)aw;VxTcol zYKatAN~O4@mSV9q49jIw%&Q|YNlVrhGF-1s<{oL_k*6U(^&z(1I} z6#?i<2tZF#5VU!*=#U4%@@YMI?RydfX<|0*D+{y+38;{{U%l84jZ_XtIbtNi2Mc+j zpdVP53L|m3Fp?ci*Rpj$y__A2YuOT9r>rzff_wQ9xL**7`^C|CT_eNWl?uF7rNFD2 zSlm%YVj;yFv&o*ARJdX|)(L}B2MoqKV?^P}XPfIKFxuDg! zyUm%rr%6CvCB+-gYSg?>6qc6w2dzxL0xmH1ps*{K=? z)GtO=_+~ypXN`Ox zb5u(l*@tT|$q#)BPd<&ED~!T=RSIr*6yuelYCITgz}?XXTpzCcive{rR0W_CFn=mT zrT2ySPnV$*O#dT5oo`q18q{KQF_xNivDR3GSKCYRPKO%5>QdvK<{~^OPsRPxM7&*- zjZZt(__V7WZ`2iFDNlxWsUHeFEg7ipN4LXj@8fVg@fI_}!pB{=EwOLqF z#&Owyr92teDpUE!nzB(+k0+m_8#Sr8UY)W5*30GbxU>nXYrI+|<^JhrpbD!~OSD#1 zAlX=(qH^1%hlOvi1tLl z(dXf?{U4z6w`QPH_DZsIbnnmVT9J-?g+S~slGxDnik+@cD_W& zc1kd%^VruKbTECRH3M&VWaGW=JO=3p14R(x!@*)u&>}v?`vXM`*SC5L@J4qYu2&~; zN&m%MJ+DsD50TIlTafR162BTO#itWx_*|>O7ZVzMHKD@S<2s=JeyR$8n61S(;}!UN zvIgJIH}df6Mq@5yR!0zcb_d&OONJ4q#MLjQ{d;=V~>8|@$NLqawd8u@jlDJctrJ`#%KBy%2?i~o~o%kWXEo8`Pgy8fb>E4`MF|MG28{0`iTgj#jt{xGbWm_6{-MG{a0Q=te z+6;;~s~MR;q&rFp$P4Z=t-8LV693_eHJlW*jh5R*Hx5s297z9~OSj^eeOB2q2BaZq zjJpXLN-jOprL^-GGPTCcJqA+b)hUCUdk@&V%QRuHdHHqA3#0UWF!J?qdfQhpczT-t35oS~dPvZlE3_5RnuY7GNPCaeUC{tge3He(y zrL8Ixx82bIKE7Nr6USi}Pwzc^S4??6V&Ag4)oCV$V*X^4CByAKKhqJW{)P)*Sp>ex z&`_$YjOi&!BImqC0bPuHe8whCAygrY7S{U0Hj9%8rft)Mz(=j(PW&D7XJy*fSl)(K zeNA#{WX-kcWY3JB{fkv>^soU|8_HewScRzVjirnP!W}KKXUD~$K{dN&*q(fV2rZ!5 zi2Br%*7Pen06to64p8$xT|bC(88Y>MgSv}=4RqAuPn%=0O~eX++U61d7f8MSFj>U+ z5qa61;!hYvbUKkM19cXWHm_;8wgX^sw9oH5HJZ%rREtbF~X=Ow7uwa z;gi5d2EsDCbQt?qJQZ_tU)sc|Xg#gP;#4|xIQmMA+G^cG1lKWs4WH_%+zx1Zy>YTP zcWpOH5HfVH)g(tb945mLfT6IH4Q?4*aIPP+^xHe?w=Db!rP4mHl>KZEY{*uU+LLg6 zgRh5CC~d7&6GePVo-}Kh!il!bSeM1n>x-NE z0+oR?a?-=EWx)@D&ON9Aib5HNyYG@BmAfmC8*$}QQr>s8ap1ET7nY5`vmCF^j1}B@ zBLmoqh@B^(y-5e5sg)Yf<;OUazrfT{F^CRICx@XpOS~TZ@(n&_Y0jczBTXmdu&8eGdDQ***=wFTg-1IDRLVK+@=e>00vGbZ>nhspRyH^gPrFXw>t+d z{io6HM=CNlZ|*XH^W#?*-X?m{B>q+!)fe1Ie4-xTUp^T`hu(tE7!cAd}v~62$a+Ba+;Z>u=`Z? zxz&PyoyGza57&2`Kt2ksSYopS0h%dG%U+D?V7ZN~ZE(N@hOfd2Ax?dgNG*6F1_bdz zdYLTj#K}r7a!=1##0%V~hn3*qQ%JL4Y%L@@db^qm`#u=N}8j1)!V~xSh zqY1>P#B-&mnsPhSMx@uKsqmm&$NnG_+ktK)SYJ>lZ?JQk-}zCiT8Bu@irBL|AF!Z- z>^G|=JQCqAU*>B*DHsc>?Kq_#I0D#jXM4A(pyj0`#R_!)vIok3x}Vo%7fLtnY(>^J zP*N8qXQ@X5JRA=Fcwz8W~_#+4fE+bTVHVM{;f z-CTkn%kQtrWZub2b54fW7cj}S>Ft80S(#YG^d4X9o~Ok~O$kP^s@u6HDf5&1w44y| zain}zcQZ)|4QTLGcFnRJQ8Ex1$VwOZ#2&rNr!8WiJ4Py&@<69u@$N?;YvweDNO^Ip zNXqf3RE>~*SyG@~VyKs9r|`pez&FJ%6N2Et&+po-y2#ajn)34z?uFo@LxT{!46ir4 zZWa0aePs;U<%6=w#fE!q(;q=%6UkitS#&h_w{(AMrnh~qK2?J)YJV^deo{S*r4yDR z8F|@rAegWB1a#)G4Z<&-(q%XESSf3C`nSfjkUM67^p?B~<+k1x3*njIlDYarb0c&i z=Cw(Ov6-^E?4^D?tT_1Y(k>;;g#Wxrx2ygdJz0aP`!G#}9j0aKMk$PH;)W`!GO?kC z0vOoOsY&RZaE?>y!iPA!V5CG`^?9!vd-~i5mh9_<9H7F($n=ar7B{-eP4N$7f%fU_4ls zl&4c_3ohqgLZ~Ra(v#nwJ)}IXc=1(165)A{QF<=t^%uJ57R{a7yiMM_D?7CFhYRX9 zCWW?$9C4}_Y^1Hb@baSaf>+jqWILwcLhsrjObt-Roxhq=4`0l_D;5-bxA&uzFWFcKElirdjK6`h{m7TCbbP^sG4roYc%vSYycz+zd7{7r^t>_dGseIMh){G^@dl+>s z;w6ba@3L(aMM>>ZOEFn2i@ihxSOikfk=ke+nZ`xzDy&Xf7WJu4-M1m&|mv*|5VSo41iT^TyDFAqK?p!$KoDa&82>GPP`5%251tu51VOq$h1K zv~;H7O1-@nS=UTSl{24zx~x7m?~3Q7Zh}OK$566Df4ak6G>;;3`U-$u7ISB3%l$DU z-$RPNL%!xPz#yn_OHC2ITL*h_7`U zu6TZ#Y^x@A+3v5iVESrqZ9V!9i#@jILu}^%e;5ptGEahO_$*pfHO1Q}j@p7A{&d?W z~Fz)=Z{XT24I7d%ELKkVO^FXrTR_?TR{?RFO{GQ#xecegY&Y?RKC@e|PNF zK5gS=P>DANdbU&d{6UzC=Ugcv)k$^I)~i9Svb!~aE>_8x%-I1~DnIA0q4JA3$;Dpk zG_*O$WFL7ov^l09YOeLPPmx)(UZO-=IM#Aapnkd?G}uw;5>ngq-L_1KGRkMe>EDC7 zDAMzY232ul=-MT@Gz(C5zlHo}3b1O?NoQm$b{4SugQ~TY-W@wGkr^%>b=|U-L~n7w z&W6=L_rPpa6F+Tvq0gy3e#cTk$+3R|Q7~e`>FX0zJ5leQi?pPkzzl!x9bW7-<@K6) zBIwZV#2g&Hf32`_dva|SLBM0%ab+DN#X(ipXu9zv=Jok?be$HUbk%^PJ-&arKIG;9{0Jn3&xBpJ7P&Y22 zfkA=AxMUbp(+{t1FZz;mkuVcX=wBXC6Y&6s$_ger)P;Ya1vFUL#f>7M?`k^{FK;i0 z?8_JC+Q6;EdlCQl=ttAt=kV?ui~f#lcLY0V_9UItI#71fkEHyF6g0eq9k!MCozDpG zalrYv^%4~#@OeqAc4sa~K4*!tA$+NjV@4wJo@e`XVW1H3#0z=%Z3cQ^qKf5|5=>$d6a(a@rB+Y^GT+q@}b0okffD- z1ot}O9oz83zgYL5Ev&y@9T7;umy6LlLGG=8F)b{1P05cw2iI7 zSNy3ufTpm&OGgP*RMZXev53m6!MNyLLp5DH=58>!fWKLLZRQpYk_izGn~#yAN`)=xXDdJJEg42aqE7+xE$5IxjrHG&Y8UGDOr89 z%8WB~oy1)?iXtVPx*gN=PAh~ZWTehV<>vdgve)2!ujFcZ;*e--m+iSAT!_EXTli0< zH_b#PX&kkP%o;KR;F~KzOY_HyOe^^JLnk1hfs?A&pM-@~t=MkxXGG zVM#6LWh_0o5fXJyzpZ-vaDY=M=?!KP3H2)AFfGf;@gAx3XJ4dEXzmNy6`Sds91~yj zYrAJp70Eq{s%V4K*?-b*-sa~#$l8jvR`o}{tlb>Fsg_j8p!g=WKjk!bL1di z>Ptl3E@y7f#nHEKJT&*NJX>J(!7{MSEme6KnRu>#dIw!LT74^;Rl?s^hd83 z)<|BvN-`*<62QIFY>!t>N%{v(6-^0C`Hit8hk}*BcHQ0Fs6c7Y!sq5-r4k4b5(?Wu z1PAE97uLj&4nY?MQgX^%gzgiZKLouCocN`XafxVd)6FaypTmb!5=q6qx&OUrxBz@v z|2b*N>(0qAB=@pZ%6Z=MK<$;lTt%mVrC%<1nWU9UMTDT#K^cn5x?{gA>6loHuwUZE zBwWa}t~gKPJ4(`^2Dw31xwH{tGL zAdIqJVf{hL`zJPKL2oh40jo|%dCI8)btOR;>n!WvB7&U2$Zf-4Nh>^1s~K5{wXY#HGi-S+M0hKSq&9#S_ z|IChJUlC)4^5ugk{C7W+7mEME9e=N8i`^j8*v>O@dn{SEHqSHrvr|8nx@W&j%X~(x zM+Z?$x-m+|W-tzxGH?Pc3oqwI0YZS%sjR7(*Rrc`bJRQ#LLQ9U(!o%+h@KW5>X;Q0 zjTT)RHi|tW#R>Al7$(qjoD28-TPCeFmk$FZHuW7YjUS{j=WDe2E_32!pBePdCzERr zR+3Hm_wu*e%|&=s7eGJR>^^xFtk06;7&Dr8{N-C0y3Z&W(I6waSpitLe=fClJ^k8s zFT#VHQoa65rfcg!Jh1Oq(j_4G3h=L#3s7x_jh2FxcJE%DSWM(5S4rA$!kHn51W`c2qt#Jh*bnd?ph)878=k;#!bNR2P zCqB}AO$ztz=0(>%>T`{c2ABG*Ix75LYx7yHQ2&he+SQnE&ej|k>p6{+>? z$@jNa`#;)Ec_AL_y#x|;t6Z_aYuaO6n;B@yD0y9*SdfMc-CSxpsESU$k)MpEH$nTt z?feiDn#s0h;b+V*8A$t^Arwer3T!r5sg@OV@s$0hv7Hr(fA2;;9QKL~IKoW&T+p=3 z0OH^yM1~b~xVT2eHgieNJniE@|DF6%fA+bUGbg4PrRJUMmWS-PAIiAkgD~k)Vl2Z~ z;VhD{2T7*zf6K_fBKXX>?RlFzFS-dD?IWR^> z*r!PB6MN{%t{8=jLcfW2ngfZzmkn3V$W+Pe}(_EMV=vDlN= z<3vvHgm_%bY{6ypY7LI(ObVk=}Tqj_=uQrC`D88gc5nwObm&NFJrYn6Q2Hvmo*5yj1lbDzV$U zh6-_m0E)a?X<8XFYzt)l7=x1wK7^{34WLq1#`nUQ$Ll^U2JYb)1H2cJ16N0gp2+ zeAB>_I?`gzrJCM&w8#`=^Fer8^`1S`^y2fS7<^i@?1o5V$Lt4V7-r6dqR%c zeJc6LK*$0pLNW3fBZdlgU5k+8a&NdZ81_uPRQopR{Zzd?fd0hidCE95y>RLrAt<5D z<8|kWx(s5oZCGEZ?*Y0+fUPZ0qskEWNKFTJMey!a~H*8ae;d7LHTF9g9t>o zJNhD`24vm?OyTmS(EpV$^*3~X+VK~uklWL_m2NZ`rmVUoy!Io~Vtgr!ysC^sX=YKS7h*uIvWrLS`!9)wFk}r9h9O1 z(=1INOyUmota3*){dLTX@BcRW!Rdxi;R`>?*H~kzk-|d-<4+dUV4GxV*LD#+GS*+y z1X~fmPuNWP9~p*koWI?h5LnmB4xR}_7+}zUG>hTZmOR1bBg!BI$5jzP)-;;Tsq=U< zj_Gr?#OlTlL<_hkXk;+*WRY}wV;_%RHB1G(BDKRv)M^TseQ7Z znug;4X#rko**ET39IPdK$eFPjb>s)JDWc==d8SOjlcng*xnHKddr^88KCyIKvVTw~hf7@&Q zp7oI{eQ3^CT99H-%G;RTHaB8<>^^b)uCKSla|gC$DU5U0%w38&b7D5g!FQ+V6(!<` zJULGPb&S{HV!J{XF{NK7l21k|p*~a442G(EKP(kaERla4q{45qCZ#qGLPhPq;}m>e zp=W=dps##wR;=~AWa3@*4N4-bh8AzCDdV=dBw8s6QEIxhGLq_+3uhC$v3_>L&(UoM8gbGc!& zKb!6<1x$i{OBl$?U|O!lJVf&CElzFdkIQZ^c9PnFfaY#Q{t{rSXwAvYtAyu$X6=Ir z*bZn9Q8{>VPu5hAEwDps6p+w(h{S+CFTF1etrzNu4sV@A2PE&SOI=dVQA9pm`|Fv2=S1;dee(-X0-A zYX}!D5a^}IV<@LOw)A(v67a4%>%F1$&UN~q;AH9cDrV1lB)$g*HBn0}w&v=2UtaoJA}cjt z-lG&5IpM;@&0U3FMhPqzaRl{1<>riPt}mwXY-4&Ll(w);(-n?7t+of694mOO>2yqd z`CbJF1-#5{r5VEmY^SG?gHE1)iNE^lpl$(b?LqiDbYK82^FSU{vhjYg#KE>XC`z>K`wS1aC~>@ zU3wWh^Y8_|I9Lt7`` z-^bGyc|5BeyDtod!TC^oj^B+<{yCM(Jp~UQ2(YcZZCB6>1Lx~f7q13bshkxAxpYQ^ zGRa&Ap@Qc!>)rv{-7G#ABv_-scY7hXW?R4i)`O*xBSyh;S^DnVDKUcGa?%36Xpl%2 zhxewY7xwA=?zY=E#%1X*o4>xkXWv(kI33G3eclZUeVuP*_7swJ3@#_WWdlLTSxF$j z`TJE+Qvn4xvMXPuk$BpzOwVnT_-@L4ZFz6twA7?|`(fRfB=sWQnqbM`!O zUg`)obyT9xDUuylS}v@;|?QXrb;$gsIkQzI_SfyQ2ZMYZW?CSVO|1UhhI^d^M2 z1d!R;rTI46`x36NmBOB|jM{NYqLs4{<00G$>B5(9@X-e`{dwEjgX=bVWUcN_Yyf*_ zed&M489w@ zOl!(sr;ehPSEwl?u%{J8=UCz&Q!Swli*S%YIE>$}b*&`?s{qzm6Zhy5xaM6DFWnozBI+q3OF9|12Wf}Bbg9^MjI7SM zDVQVVzI!;I4ancE0-n!)s^oul{G|GMoUFdE*O!QQTS?nL7Et1ljllbL_Qf25b0cUmnE}u_P0YsmYJ;TDdwUhA6{?c<0OBBM z@Pnt_IsABgfi0iKyio7h=bp9&?-&{UPEXQL>D_Ugp3d(!+~`oB*j)sdh`iah&ps=Y zaszPTk_1#4<93}Qr-37I-YcQq-_G!d2rUiX$B&j>=S09tUlcJN`}06AW+y?*9c!DP zZ#;ukW8Pfr1!dBg2;*s|s^%WE50=-}mnSD}1^K3#AZSa$V->od#a^zJOD@9zypOBy z;?)jJhzBI;hS;!$r#Mcmxx7+DY47}`T6g7pphN)EZMM$*gk-9xJssZPW6Ok z;~N2sX*N&^M@GzX3EvO?TPymB{79YHla?%!ctfkN!pS5dH}B->$!o%9>vii~FK$76 zd--O~y9~t!)kGjcv^t^@orm^vrOXsq{8S2nCz5scaw+z$8Qt8Q$K>1s9x?=&OUExs z_n;&++!EhWS(c_uw|Zi}0_wpY#ESww(YhXH!>b6xqNvYLQtTc=GV-8u>}%U|fh2?v zlh6zd-P@t2=6IIYY-8Z+gg?kX|BJ13e>+lKGuHKw~ z+SOE!-JKIsx`~Nzy^Wz|RjBzKKX78BE?nUIZj3UVg@iR(%j0oF@%r~8#d^z+!?00{ zYKb1-c6LJV3Ug!#X0=0s<-+83y^E^zH+^9zpxln9u=V1HXZySHB60PyXpsh{|PXXuuCQ|huX>6~!Wr;>BS8)c{4-4iag1UV# zI>r}dUsf*Cm6Qp0|-JzITVF|?1mz*eRDCnLPXRZPf1-I$88gS z+lba2^Wn_OUhoC_6VHQWTgd7h5jrw3JKb`n4TT33td*kGq4RCnohu%L#Wnh=?gUoQZTd3J;!;R-ZN8=AV83a zWM^-NObnpHN=61>w?^BJC8UzW)}Isr1quDFg-dQo^|~tZ6ZI5-40vfMVoTq9-`gt~ za;qk3Ii{_+i185$DJQw|3XoR?3Ys2|SS?{Y1Ra{dW8bg#%O{ktI!78i&WMPqR$5^^ zO*3!Hae!&6)uDZ`s}GG``% z$m4{qhWAbHcpihHGZQSd9`IiO#Q*YjG+~Jtyp?bD;fd{ zVJdj%!T|WvRMhhYFa9kh$O}J^x}B^Lfi)WsT@6uNDizisnnGb`T~XDAI2&!HRVfod z30UG8(1X1I*bpEwC6Egi#On{SPwr2yo$ttZB&)u^jbbIz#)A>LbaNVme1Cl)eq)9iXbG(8&6Z}v<>Jqr~KPtF@zAOt&Q_G%&7O*spCV!&iN z%9flAb>t5953mrKajZ%3zxwh&+^0@9zp(h=Lp@5qx9L9!HRm`8I+f zC9_iv4yZ8FjyTx2WQ~uv--st3KC-5DvrCF)?{ZjarDwY%gU2q|K)j>s5f2M*ATb4M zKyc84WNt=A7CQ75bFK!lv5Fa!{g?@`B=9+68JNNz@r=w$cEvN=T@xIpA?->(hnDNL z0;v6){>S8Aq&~eXrthB%QY75_o>MvsKv2hRSZcy+i7H0Nk2jS9D1%;`bH@OUikmJ{{?O__}CHt`Hl$Q zeHkM(il$_vJ4{hHaGYzk^)JJ&TqUh&U<)k3G&L4bLZqJbfQI%Eu{Hz|mb&@|0anEm z;am0z)0?gEyp|JzR*-&cr5CBAr|92AHGXghl%$_W3~ zUv;UTq9Rj%b}jjUt_zWIDSD47l)dB93~#!wt#>X1817D9FrQvb1p>W6m_eV6VmD4} z`fF}U;T6T{XwT4dxLwn*)8VDNI@JA4Mf*JcBAmsUaS{gEYP{D=?*Dtd=}oO}kZ zUYm2}?;BU71}9D1wtt+ACa{0kP|XNPo^TB2+a>X|`C-}VOi1orWNx1lfweCgi+m;~ zH99Y>JhH2LSBAw~W^>TeR5c3faZ@9nRg`!l{|m}c7IhL)?R^s(Fc759MS188-XRN0JR5Z zV+rM8R!q+xwm*h9S#JdF5A6@?=LfFixL5xq4xIa#@PEsA@43&4T%C_Hsy`Vl*_iRj zPN<@T3HbOfLek1i!mq7eS``Ie9x5iW&d8w_!TX(azuyy-p(&@IY{ctt5;2&2Q+S}W z-^_$Fi9)qndxQ<~Luc<1gp;;Ho`?NhxCaOxEgZNh%@Vfo`LI!DI|X`7@sGF<5s!)% zqEP;|9bC`@nu~_ACD%fnxWqhsVB(};ObF%=brGgsAQf0(Vg-2unNja~JQ7*l+q;{kd|6 zJ$iT`P(3zm`K$s7A0}TUoWTOf=JIJL&PjN|iZunzBCLaegOh4{yFsedcy6Ui?)sF( zc3W6#LG|EbF$Oo0_3`w32p+wqcze z=m8yEHE<4)bYzPmj!**eMk;{>Ns1M)QzdD}aE4su-r@GQTLcFj9@)?Z4cPzD6DBE# z19THf6o^2^(g#Nz7dk%bg-dgnPwP~<;%S5`iEDMp6UwF1K@WIlf{$e1dG$W!rD$Sm z!_;I{217*fJE;Pun+_7|h%!!9-F}X}^mxz?Z}MexQ9M`TQ;*^fM6bH!aDML{?%<}d z_Ag}yGCsN3JSdF3{mQayJ^GWGtvr<)TObuT|HTvnB)USjB^1c*$`VmcD6$YVTAOur z@RL?Ns4ouOa6f%gAz9`_>DqQLcIMOa^W`29(C9S z&?E@>oST4f?W+GWgpiu6i3tyDWOzLqpBYFZQ!*++08an)((bopxS%iqC*)Ti_+yIG)lviMC~FxkBU~vUdIKz#HyC~ zjUVvhATmX^!_|sA>B!6aBe@DJXJ{l8tF(vS!yC)M%$=9$U)0K5mKu{{m$uQ^b_g1^ z7i|mh{Cus6LbMuI(9TV49oMRtMs?e(ZL0&dOF3f5%RV%2s8X%?`8#19mD&}fE}zPG_c(bmWwyKgQMVB{R# zzZdDEQBEzrw(Iz&+ls5#ef<}@;YXxzsLIp-oWd;%np%FG#;e1U&sLh)K}@vWRf_$! zow%_1j)cKfK8<#lm^Y1q!^A+YZv^91CVf+<@xu88%#vaz>70^c!>P;`nAbHJ&>FVm z*9xS@8bK=c`mzClcG|0}k~V@4f@h(oBb%z6vSJLj{CmJkY|&>pVeSZbMdgf<`C{Dh zrm>Zq5&-^GJR>5(Zo{@#06YLTzt7)B)ISe%gF5?cz-U35wIkrZV z(Sy;#&e+IH!`0;uqpIku{8T#b`6LmP^^Tk)`a~3PD1$PBm1ouzPI2k)PPV`#D?3%B zm{g*)R=Kmbqr<+!&EpB)af>BUU@uQs0^p%Z1j_q^Ljum@#Qqu5jWz>EGlvoAqH)O+ z>V{lWI8gg4r)bUJ5AGuG#8M}W=@(@6|Cy-k|NhtVsbN4XnOXyX@18zb&41zdE|Dr0 zSjCp-1>W$ZDuZ~7Hcp)xlUpopV@UxdDw%u#u-9<}+=IDEE`^dSg^vJVAzDgmK~1@* zN%LASg@6(*r2yVN$KRw2XVMUK&on2mIYl|X{7k}-`QI6ooSegK-*mPf5` z@NtldJtBn)SIcMax$S1M%Qp2;1D9%2U2xD$F8ul|04^1#Wf12=6x?(WxZ@Y>;yWQj=UhE%$QfvN8|Y;ZcP&!s$%4zUk#(n0ao zJqY*T{p35dK6ap9<^ zgITBh*a}*c5tC5mYzB2@xdoOII5dSk;1hFLIEeypXT+LZ|zNzi-DjC_LP>RVHK#? zoHeCg!VT!lj%4bXe+S(S<8e=yr7p`9t>SrF@3Ty%lyDA7oD4;eaK_v4u*3Im0Usm~ zhumcP)rgU|6cX?vwQ_iVn6h10_$_^azh`Dy!84RArip5hs!5;S{3Ul|W!Ag2OUP_<~%b%|bwGm)w zG=Kq6^A~wjE|41?=z6Q%+oJ~?F9dL>DbWEXDwT;-l}bihAYkZ)-YREes>sObeSr_t zI2zOTm!4&%(V#fQfN;mz=%e=3sa-64bai;)IHs^Hq4 zh8NF^9M^3fF0uRS*sYv5xO4OLG>6gH;TfjPW7vLu<8@rU(jBCO3wVP|+kg(51bUH8 z%Pg$*;q%^z!Z$`0=*d>Tw<|=h&0=qFMU&6WoFo5hflBV4dsuk}0T@s&`4MDD{y#QE z?c=hrk9Wn17FU{QQih=|k3=E9jSPrnb}}wqB6>XIslNIK*3r>8Hh0e%jZ9YKjCJKVxPK@qUgRh9M*Vy2DvM)w# z-&2aAt;_s}drW}L6p<-?Zezj!fKy_HZ{kkEBk+^Eu>g{C*ssMhCtn@Ji(JaUvU&A# zQ>dp=?(u9GQz#1$(?P|Y#&T`~)un0MQS9{ka+!#qGduqLQ@A*yX+;ie)VrLy(W?VB zh30G2K!=Pd-!-ci^23lxrDPWYI`SyG93H|pw9Xzc#9;q+4)nFIH)^9MA>DA0Rpj4~ z^(Vnl{(fqsaQUJm^@x$^Q^Z+WCb&e(ls~?@o$03Rej8vNyx0>biNH>V_ErJ!_jw0^ zdK@E7Om64`(M5QL$}c%*ip)OtMQ`3oq);NML{3n1VR%_BH0F){wGfSjJ`%(+eqF9U zKbk1n!2b$PtJWYL^zS3viH!z*y5^U>UObNvf!yCVyhUS)eO%(1+qDQKrPVq#Pu>pf z<^d<1H=Sgn90)7uYh&H1d?VGow8)p11a8l>^D_wR+X|HkiNR0|UxgRFWj{DX<6&lM@E*YlQ}it}2z2}~4HkYh!sZZD&20szspPEK)M5^_UI ze~bW`{MOF_P%D6ssZopzaqZ*Q!6ZhXsTVpJQ$C<_+N^_sgo;!lvfJ(1h`7oJ>CoMz zmq6EIRTZPZuR~#VG;uIfmgIX%->$4Md?rwm@qeN-cN zak&~paIGx+5Lp!OCzL^>yuq^`m)^G&ZlCZSW2FYIiyWs%2mC8Nad^;}E@oT4*9-)a zWj)7PTJbN)2|bW27*$Lw)2ik@*j|}NC%-)y!D3(YU>F<`uBd0!O}ns-o77X*-xn_h z4yn!O*9$f-TV;dI2h|Q?_9=XGd{N&rl*+JI*BOu zB6xt)AXn2((iXrmb?6wWhDUS-myu1b=*6)We>IvJvRUP5Tvz})@c*HX>T~SJjnLom zX%Ji2(0`#0QdFq3jG@uuA5_PfJ;#L<0ub1C%4vn@V_h>w*4kuOE2I1N>d`yWX}`}N z!e!pOF*2@kMavfaq1xm+N&J?*F3hH6@a=ttlTnW~R}A`pSh2GpzfC<+s}?2!c@?*? zU2p#(pJTvxf}02m3;tD=q~u4sF$OO`dMBX-2HTXwX?l5Tb=Te{cDx*}tD)2jz$!Qa zd9?Jj!FIbW{E+Fn6{K9_dOwO>`MPf#zk2!6Y}C6DfOawX>lw~nZ5n$Mo_a8DddYus zY8u!w&|>FYkRMh`&5l1mz-p9@IW@98n2@P{AtXLA3USg!!uEmf0DfSsD|!qJ31AS) zJX_ccigRMhC*HF{D+5vD?aK;0Px$#OeK6*fjiqT$0xUGi>3t6V#L3uzB_4w_sj4G-br2abpcLBp-)7mh_vAA$sB z6S>eO%1n_tQZp{eDm-o(i(m``8Fou)iDV6Ux&)o}gb*{um9`|Tya0u$Rc`TZ33K?@ zX(z6d)(+%<1?*D1Vn+fm9-y z%pd}YxdmK}q5V#~433J3&$c`x!{{nJS2!gZfE3n%VP;kGUh_|3>I}=f*MHFGb)4NB z?)5-@lS;wMd-f4d67~oX$+->GwJx25i#plnbc%;g4(`pbtn>fOLIWqike~6AQe6pt zV+DL1Ogt&WEJSA6DdRW(#gRJL1QahidaY$NUJc4ro6BG~6ywsB3syc8j*qd=`Ajpo zsGvv{rGpohW$Jv!i9Ib=2Dw_|Nh{w7d7EEjP*d}^LG@8A|MvdS;@xk2Bm~q&Du?hb z09{;U_O@hk>tcbe@+U+HO#ERL$dx$jO?zCO$AI5YFoYvTE^@VUa?2YBt zV#qWaudMiw#(Jbg19IX$h8hPyb<7$C&&Ib3FQtg$Lh0g4>=04`+NN-Yy^qxE!kg3| zPa+`RomX!hs00?o2&$XJEk6Dq#g!_Vnqen}EOJRVl}g4aN%IG1=w%GBWG4bMkCc0E z{PU&97b;Y&1@Ty8?;x^`QpYNEr5mT+-|2K^9aIfoK5`BdN&lj-(THkXVKQ|3EqSZf z7IWLHN;bFq<8ouL!O<@*kW#7=h%gYD^+*8&D4iT!tXV>%;7*GM31tiM4WCV{2OEj) zQAJ{-Ya^x(<}2#4f$UhZTP|cRR(oW@c44XQyV(JYQdW295Cc~DBfZn!hYLe9)R0-F zlsrd#IEOBH1eJC?i^`%i5RYU*goP$Ny>pWWpyeZr5OJB^^{H!QCD8>l(Ul8G2`xJ%4K80o#wKd(B*m2a+FQ2b zP=~lO8*M(%nmseYw{x!r|1flNl*pB5f=E8>#8nuIAoJ2>>nS94czU8>9rAiXQJZ&3 z?Xa&dm(rsN{6{B^hC`SDq+>dydXS>po3`5;!(R1P-T9W!d^an$9{X%I|IC z(v7qGp>(e7^9Y)xKbqc zRcPkw=JWCA)E%Xc~Da2|dXE~;5+xV0YFa6fYC?HX2y<7@!>k0XH`%vZ| z!9tOwWfNhA4X}k>-Bfhq&dB@O{Cmq7tcsGSK>z+0kiE|{Q8H4UhKT?qP4#QNFP=W} z(0Y+9>{A>`#|^v7nU;uqI9QOK&2tu;9OqUlpW(~Zdwm{A8Z53M?%axEH|AbB@=_|3 zX88JT)V4cX_*6YJF%o9U?37e|)F_qz`o8^{Zpi`AHh}fi_M#fC#!fSV$nVVA> z-;RSRU)>ovng$C4sxcBn0%Kf+BSQNgYYKpTA^_ynCJe;X<^^*2dS-{QJr9`VG$i=W z^p1I0Yi{*rCg)h$`5H9)S(V-8D!7&CDeCQdWbNx9`x$pJAG9%eH);k+zaX@F9YzI&K3lEg^%D}+V z7z&IZ$R~uMbb$BH5|P+7CrwA7zpvkNvXFXRuyw2eoQG%H;g=4|KIG^PGZ@O_wO|s< z`!X6dHaA`o1>PTfuVN8Gr&bHlf#t{@9?MO-bkU*~(;vBf*D4XrOMc4F_DbW=-~;+E zQY>pxkNjxK1F{Mi`&dr`$svvn^xHCqWDpm71)kKueT{;OOl7JTr% zA?kf;S|sy982S}rOR4_r1MrLcW!Asl`##-@nVd07Y{HD|4=uT1+iX;&_3{>)I3Tm& z@NGt*+`AM*dVa2tcv7f=hN7^0o$-aoY+W{YUCh|W)3;0xmGK{++*iNys8vW+Br2*H zh>6gC$Y6^f0m1R<*0q3P2Yomq_wdo6=3|&;aEXq%A{&WlPxwoHJ(T)}vyiKeBC0J^ zPDj19igfCdaW;&3-h#qF2`SKK>s)dVG%G(Q@8O`??15tU+A-ap-zP8-9| zblaS-iVh%w9MVT`%!~6CLAnIq(`R&rY-ov96~tu2^&u_Cs$#A=k$7VP&48tNSM|uh z;L~(^kZ^C>$R%ZytjRZZB#86n8}&eOAuib6LD+&tMl{d&>97$gz{o{gh=r9yG4GQq z)4Af5;BlbdfBXilf*=GNtbQzl*PC9YsO%wgpckk6V?lfeT0G%Zt0d;>uP-fb7^Vz6 z!u2Hee`t~Q52=2VVrXW`JC&I@K*w^c%grq86wO$Zi6qT+J8U}DIZHjQ}0R8Lr_^lal=eG2;IU-l0DX=YtuL2~Dc{ zizF&G733LtACc&1OQ>|6N_R8v;|#t>?$`*u4u=Yc~J9S+fm!C76I; zrt9%XEEYnG20#EX86hid7>LS_)mxTf*nf)??O1N$l6m|*lyE6HhDvN_hCH_DD?!N+ zt+R(fNYfzA-hXF7ndmE^gLpqfGjfO)>bGNKC-skrZJS1Y^G}NIr6+!=#U4NIev?3f zG$eT?(cKdK>BrxTAy}Ci)AznHfYnB+Exl5uY^%DXCY;CF2g%A zR{Ol2WG5!}=GxFBWx>tv=7N|Q&tB(JgN+(nEJX6xHU`rHIS@Wo9-VYrVkel{^= zF%5e1tDaMP@D7O4xN0G2N`44eCz`$}KXrbQ`dbIX1rIDFo?KpCS~Zd}_kt6>SfI6z zU4{hep@8!U7#m{!Lx_13q@ft`U&!uF1yXwdU*iV>g>dZ5o9e}<|5^{}nk+CgWjF}; zClHJx2CRV9?Jd*Bc#2%8G}B_!gjhYwX&6ymDyQu6JeDmPGKN6{NiHP?tmytNE zz8$;eLTsA6Cv^`)N0)wMX0WH2<-b`Ge6+7PtxCUfSaJJG4Jthhh&Tu?V#BX6QM40Q znBAT|hIpK1t#vI@@kDALG(3r1)UBQ$ir;x6MWUTgT3T=@*k2t>+MNnY7edwEpkpE0 z1ASG1FROKtfk(N_O?=?Xvo-pDq?rt`5qq_kH@eiPhU_U1G^J zbeccx#Voe;oY%|ZY(2%z_HzI6_1;O&vSR9(6M97!&&PB{v3j4don<#ZXF#~w;Ohae zwtd0(8=K0vQZu*6C#%M5iVaxKjV&~!4*o%=;Qi`&9Pk-FZB}} zDEaXAzo2uB&3L{*GSNka_Ff}_wO$JRxN8@rwWxO>ff+wmMLTBb9?8&K*h#HILxfz@ z-Y{HynD5A34=^^Ero9ObvoFQ{4SKB%_0kS=TrXXifUUy*uYrGfeZ_NRB0;al;NaE+|qbB*+2A}W}RWI9{5l$OnGIz?vLbK zPFhIv@0~#k@0%@l$*J!BaZNKeAQGeR-6jzZ1%t z3)l&_=|)NeWVKWa~I2PV|GrCnr0NkKIzzgqbKZi3`(K~@Fnls|9!iqmp7J;9Ch?zSqi_4n| zcBqZJ$EAgVAT+D*f&KF5uVXy)Px37{Ww81f@uV5sf8q}t2Da(cb2XMkT^**){^*pl z0DXt<=*J4-eDl(xOscdQU3@R*6j$7|dwAr&p9j_4>tcJ_a|qCohw$jnr+dIbEltE0 z&@tLEiFSxLhV~TkPIj=>` zBW$Q8n$1$fMrOY>Pi4oZg3K3klWu_ROX$}DZK-<8hw8T1tk}dXC<3c8dvpt(STgjD zN9hOKSyEs{5Q$LNc4*mquM6Nd>;=gRDpG=vw}@OGhYub(Tqie_4WEZhS&VGX8=&v< zjQ&f_R473ebX+8y%>dkIE$T0g3TON14oivFO2aXU7f4QCi}Ace>=Xsf35K))yT3ww*iKOHss5duVe zr>lrHz12nkJ|s;#K7WB;3#jHeO9Da< zlOYK>DC9^erYRcU{Qc!N7^TxiiJnc&n_4QkH)HP?Tp!3%oWrK{NP>~HZeZCx)`KP9 zJFSx%B=sq8IIU!gg?zBQdKvTuSuXtVs%4PhAO#Vl6YjsiQF z_yP?=vXeLTe&UtMjbDtc6Zrn+AGKfphbNHG`MlUWQAnb~KZZnQge59~%bUb7<{la< z4i=|r8Yv=ZhSid@<*w((P>J&WIQ%z(h_k>i8UFD%KnS9*4z_eW5dSn8H+wG%8!+zo zeg?y3_sC;=^okp<6y>xwP1j+I=`!dA#=Db3N_Wt7Zpw(qg@Bl85 zh(2xmI0Yn60v>V<%kPd1sGD8a@vRQ0%24Pv8_-9Tix=Wf%V-1f6SvvH^?d;g+udi1 zKaVk=r_I7X%NqeGCjp@pWXD!arHe5>fh&TfBR^wk{) zEAdsa@<71*TNR>Yb?Fy*yG2fn7jSOQ4L3}-NKIsO3f&yuJNagD4=7_7o_66rT?71| zN-5*#`R-h@Bqs737|UUR9Xq2ygk1otMYtU-k1KAA*Ivf4$jC|W@oT|olGjg*xZ=S3 zBku=Z0&%;#UXO?TSwsabp*~L;KOFp{7%`@V zUloKmR>#xlbCB?Eu~9Lm42{v)GjrhQO@&sd?h~^(X;6r(5!qN`TygcjM=@Io&IgsI z=z&O3VPGFH=PMGk2pIh-zrSOOx$nj&__9-mK7csNee}zM3^oV>_VwL3Qp9kYP-V^H z!yOpk4B-Q_`T%B9EsPGy^x8`za`gjhmL%W7mx&2a@=phvBN`oES+=$K_|Ar1aZj9zVTtQoGAqqeVu+XIxbn%^ zELy}Ujw5>KvQCcs#PmJ&pv0q)dj4BT9ybswcx%O2V-#6SAqsI4;^>nnOu5&- zf=KY&opvu3CyHJ4Dp~ffPx6A)5mew;K+$_KMNrhPf?i<=EmFi4yIzbtQn+(;zAcFZ zT)Mky(D=NCUsA{EEa|lf(0C``{Zr($d$6^jURajzoQ0Xf*ogx%vg5Iyjg4#QkkMR$ z;;f=L3EO}Mu0D>VN3GVy?~>5o22M#*ybIy25%Rv5u2QGmSJqOKEQj9a_yfH(KOsKYRT|QImITG-TE_)m^s!)eK|n%2QJK*5Z2u%tI| z9)xdC7b)J$jvYpz(VP-6BODFRtR(}ppuvR_o?Juug6PKI_uf-%2nl{NkA&tlJhWvo z^ZRTM-Q1xq<1(NBw7Q^WF6^Z= z%KPrZN@b}%oL+Ov83~>B;-}3_MJuU37&XR!!ZZl13FLbK7%gI2J&ZyNk!XY9xUjJ2 z5}ohoL8Ze^oeu3M#o14Spc#)-Q{+qIE8_!8zwRVS|8TzSp>3!=WUODQ(n z1Pl5BFm&f^^N6w5B(}(BdcwAqu56vPByQcnFMsd-`a`<8?BvGZjuqO)1{ZrdxbVgO z(A<$~OYp;~G!Zz@O1T^HtMG$P=5X#FjRysPeoB%S$-cqgQpx%EB=dMll3=G_0!{$k z|LXxLSEl?NfTWM2E;SqYufNks?=*NV{-6x`=?MXajit+2oRXpW6KPRp+tr1`7tjS*L59YsTSE`StU(i6te@NZm-u?Z~&e=Gs|0@}Fr>{gigHH6{ir>`rp4_D0 zOnw*hS(Yhnrg7Q-d?WZ`5Pc@D*wH0#qU0O5cq?UCKni2(!Q}0i1;Bm9ruBc}3XSM; zDjH{CTg&{lo1rLZ57r-K1>TsjXuZPLShQT@gPb%;^agbi)TI<-i%&vK-n8LtO6)@H zI~Y&~P7v!BlPV@t7ms=MjB4Q+C0`qmBUqLeCavb9Erdk!*gxozm_P9Y*d z6KzTpY0R(H2h*R`ZPqVMlMA{IzV;GV%1JFutNT=l@ZUrtCsxcS3lqH+V$Yh$oS}eINvrRM=*sn7#-FfI0r3f#IBGt ztT!pEdLElB{r&#n=HeW#OL@LuW@da|B1+5A_$CZ&selBz#1GsIG6qegJRD3Sd~l36 zaZnnIrq`$La0Yocj?(*>v<8!qN{p&@tdZ6;K6_FA#oD-8^7HmhzWvle(x3oRp6$k9 z7t(wS_g-}CN69Mua0U-v2{K8UWW=YMseS{ZgL!Wmw?8ACC{;i1-2(sOimXN;h{>_B8hyg)o)Dm)SWEGc$Nud-GWW7|^$)wTq1X2+%HJje+unXc&5ldM-PCMy2d%J;eST1B17u zMPQ^!zQ}H7{=XN%h+w8~`v6zB7uMzk4u|u>U79R<(s)F#VWkxL0qC=DkB;;Qbuc={ z=x6-USB>GDdScwgXr1ys2~sWkmkELfg`a~^VF*Q+zhWwGVc(^IZKiGQb%acEe;}|P z`A^l~q=7Vxw}5?8V9)JX2uIR?ius3cVbTNgt?lL->D4S#i4?C3k_P5vC%jD|Q7)S{SW2gs%*K3#l_Y+*be{hh(cE)y=I4*QB zJbDi=?JzL-upu9T&=w&%Hb==Fa-5x9hm4!Zd~yG%+u1ZOHUfD+&b_Nxe03)l`_0zh zT407wbaL*YR!gT!j55!6o9ADtH8GT3WjYNfsD)Zy`e$$r-qs7!QXXRlIC}-&o08^> zC=7af?n(PM#G^%gbEZ+eBt<)N1b+cW2XPbBVjQLs7SdU+y*ezDjVlO*9dQw-J+I`J z3pP(9XxbIvF@D^ds+dkWy?8(F5nE*ee)fQ1KcwZzdp(z+XJWtZTg~+0%So_IxL)!O z<~3PQ`N(moZ8gFM*vE{$sc90u=y<+8{wW0Vg8K-`GX(yp2<48;ubEVQg7U6}h zBTrcJzWMv9i2u~Wg}-|<-;-4!uE)Q*m>u0vdcSDw9A}1k>Ahnyk=~n2V$vpsFlYkL zho%jjez|MBeuZ0Q*mLK8NPX%(xXj;a-Sx7>LLK`6%O?ZI|7E+3bH}rx_Gct|`B=(X zDl92-2eyOYM>8n{FIZ3fAvo_iPuQS0%{~(ih1g-}tcKI|8sB>^q~U_v^3{BV?B1ps zH6!L`?~BZqLkXsR4=X(-SzV*Qs~A?;Uaq_AJt3Z+p4E`jPfgT^e<`}g!0yvI+Mq^{ z#~tv&x_6dQw3mIXLR1Iu3ST-Tsz}-7{z?3sX8Q=iXC=+P8UN*_gI2VR75C^GHhR%& zP7(EVKsvIK^{~VcGkU6z^1MuAme8*8WC6wM(AK;X{W?Aq6}l`cF&qFx!4&eaeQrkU zb>G78GTnNr?ZwZnt2B_8N?ssJySHSJvf>JSbS)2P5XybxwQ#Fcn`irvVxx={4J#on zQ76p`Yh@@c1J!du6En3iySAqy6AkCY9bqGPF}?9UaAw z;0f2D2XE8`@L1B@(nH>2f8YPT`{%%)Pd*nzh3-^s3auw5#{*V!r0A^h>zYs)9ccDV z$Cn$%zhbJ@`)c0Cvf(5dE{t9QtelkhZKhl}8Km5$`^`-{LzfIGw8Yn7DKe!UO{+l~ z#LER0{bU<(DNSVZ+nkD1hWb(5Q;)av<^i90xIr(g8|T(rYNEvB|q`k_&d&q6!xu7 zDuw0*SRFu)m!n^OtjC>=%A%-(|zYUlNU$Tv;dY%8G0sT-nG=DmtpG>zfUnI1CotgR6y! zOxnJNp`v&l1)Wh$6DKToDG6Pn zLc>t_d?UrgV5}}yzx4wDP1zx(_qnrr+nL0trwW|gi}{+KeO06PSOwz-zYOE&R_pdf z$9U&fYg3~F>UjZ`pn)lr;nK^QBi7e1RvO7U!)^xD*j6njQKE!JKZIC!<333}3*Yrm z6XkxKD@45=_6cH|7|Upc7B5wD5n{7X$a0qn-#!T&{z*4q1i-dm_ZZW}6h{{VM74-M zf=Ay9Xy4^w%#Aco`fs&d9`8CEOXXK44Y05=od>nk8BJ8}c7q?(R7CHD3N)-4{?+zx zk)w_E3_ekWC!Ei$%T);#QkOb~gYB?kSj&J4DaDy>lE$?3x-bR0GX6f5k2FOwr_OB* zXv5hzoli^V;sEv5t(fuzKrDjHq zd@-{{R0sEWYsDoOY?m1IcO=O_{M?HXHH@y|BPU1xZk_DoS_W%-DuR?c zGgk9PmAnA?gS2!nzLgrH>%qNK+vp6aJ@e@4O;^4w6H^HvP9!$&2G`h3PvMb9F?MsD z&k`Hh>*Ml$<`Bo{P=)L?Q8IzA0lR#WRj33%nsI6?>kNt}eQ?cZ%8Dl1U$6^}`3rLr zUNKC#$Y<{O>SGvL4sD)r!`3Oyq1-=lB>CYkC3|k?7AeV1=#f(v$WP`bq@KKis(=60 z$+XFRh8*51do2`vuR-SE#YtluK^01dU2*O7>O;dCB^~3^`;s9y<-xf&RTpj4<*-VC zuQo>M?u$3agb}o%?qwULorPW0s2Ug5eVBUO(FH`X?9yqa<@Be&e#*Cxms0N4GjYFc z_uc7RZ}2^m7&^&GsHR|@V&834xnA`rgBmev>kw5sO1O%3G{5N-Fc#G~Yfb@` zv#h{i6ZwhPNw`WX|6T2%e+j)>@2D`Hb$sVT{eS1C$fZScHu+y$r%g&t1#|?Patb<9%W}mDZSxF@`L~juLX`o&csnB-H6-vB5mQ**5A~PwLgK(@-YF9jK zg(^)_AHGj__p6U~?}#S@I4i<5&T$6w6kC5KUo>?Iw+8zn=f@e9!+$Z7ed*M zo^9*xvaKQO_-VI(^s;{gh^nAb6_2x}8zxv&$M$WSqQZOCZ=~{kz*)|G|I5I4EU%WT zvDM>VTpKHU#`}^P{-8VZwiI;seoaa*1I&SGw@G0HkEmA8Lug1daa{d4*aHYml&j)c z4<+Dv)QT}W@b`IiN{~L-wQ(;r&zW`jk=9nZbs!otOs+8dSoBDXu47y^$O~S3Y;3v! zi_%TsJ^KEXBBZ5^qHAFu^!wSV*oN2X$)PJv=J9PpFx$C5Mki-9d)|Pg2CA5|Up=^( z3io#@p*z%_UmpM_%!ryqw@C5K7|Vt^ZUjzP`YN>U6{r+!02{hOjBELjuyYr+@|>>q z4=YjbyhiKcw`2y_qwZWhR0St=xFdo^TK9il4!4IJK49^vucj)qXLb*IQLgrWv_8z& zxs<-V&c%A@_kxFGmGa)dAfB{5|SG+VAWa__PJmIIFSy) z2umIar-7lCw1l*sv~%~C5lK^FSa=zWcXC!Z+=BHn0T^7t4Vk-@)H(Ytq%-A^O>fY? zrQ@K{gT+t|bUD7GO>5fCzjNlo!DF16>}8(2A+%^KQ3LKwpq{A|*TjBBPa$cv<;_=NI_L1Xm!|&+vI=FoRnkOeJ*(eSUj`)! zZ`nlQ9I`PUOZ57OJ-6p{siCrYe<39!z$Fb{y9sAiUQs3LCt^)RosGaR&NG^tS zD7y7^&AS3%G}R7mNfdT3k$HH?G!^CV(E3X8a!rXs-l$^Wifkbw$W`FR8>JTp_9uNw zGMPtl{%&PjaFx^h;(7S6%&l~gfnu;%D}$T%?E2RuP>|5{!^&ob-Ql5^AD)96SE5aT zCGUJh)w-XrQg9Q1; zZ#fSlCWV~Dp35c&{3XIii>oQ9&d$l`b=;KkN`~BvHa(x_6EPSGX5SG8W?j29ha05%~C*REEhCUd1ledYD zKrc;Sp?xz0+J5V}jt+TB^nDn1lZwzN($NJ_PtJDj75LwWvS++4_P~F8ZPVn`IQO{B z7q*>3wIOVb{H9D8e zM?2bwFUpo|wi-iOmn7a74PEN}n-pMI{+&!DY~8>gU%lIqaUej_1^ zxqUe!L38wAd}h7nLXDLTM2noVQxKa5C=x>A`2U5qQ95sFN+t2I&{A3B$jb*rFnYq~ z{M~8_95E}qpM!&y7)P%ilX;79pGs@`rWHjDGcIBn#-xlRP(Fp*pcQa+)-DX z;#Ah}8}G4{is-^5n01@6wR6?mV1_1XQi)MXM&bbEBTdcC^;*+WDrutet4 zMs9*-Elk2fzy9qZRi;R?rki#53Y{`eDdUl(YS+9k&W_5v=cO3v2CJRN%B{1--tVVX z>x}jN{tpKN@LsWB%S+tu&I50RQS4%8E2Y9^xlc{UZri)%TdJMw3L)0t5iL&)_rALK zeR=Hm3PU`YQ^|DhUqjcG_2!I4fT(kECwb6_GwQ)k@e#essv^kWSJ z$!y&WbEY?Vzn?4D8_B=J$w=C&3&qWYVGZ6R=Xa>RnH7j#KO>d$JQiY}pRs*ou}|-;zbX;+n;YbAhb0_R5^egdm+W_008s;vgo@$PaeB>Duf-qdj|S-wSM zR(uJfntTM$gHvjxn7sZcc5Fgw3O}6d;SoIRVEhs`hjI*WjkOB9R>axyOm0#{D4PB3 z2jwYoX}RIUKr@|+{BZ>$$yhl0muJ(5y+~U6xb=eq-h_cKQ%0;`?$7s%O|p?4RWXv- z@ud?jM4C}w{0#Qr+YOCgoU80R>#C((5f0l?s4|TWUAwWU>?>Y5XK7x(3jX=rS=}!& z=gD1wa^(b@WsDAojrUtO^^D&V-q4O#SDN_(M<0QH8ZY7G)v3-FDI#)0=Heb3vd4`- z@cznlB?WeNQm&XcQQlRE%7-5E@48>z84;x}c1GjZ@gPYWA5`1OFOd zttT}K1c^Z+#+h{K(Wk3_F9_Qga$=Qpb#s0`@qon@s+nwuw@S`xhqcOlRkcRP{8uUG z=;}Z1WG{hJOO3PXwK8Ho&n!4b=kX9b|B5fNo#;^Ao+!OEzS(W{ADj&k&i!Jb5rtK{ z7gZkL2Kq)*1jZcy^fQ(}>Cs|aX0Ps-v7xV}NEdIbxN`9eVuddrQu#=)w=&)M>LUBD zUwCIJymPH1n(W*N@n%sFP|WlF5zjR5@{P?lF5zvse>MLDi_zJQjyTe5=MwS^B29PK z3euq=>?i3;K+=Yx6Z1ewfSw0nf@c1-GeHm_as1yFxk`2sJ8F4 z*m?bmdG3mxkZ0*&G&6Hs*)JIoSMo3urp=VJLD6MosO1#5!hp+4*Z!Vbq~PSQX7-a` z_v6bg8jpPGBzUlt(8rKB{VASYg4g!H#zN_<$%nw-_X36 zt?=O_RH7SAI%$zp_^?Ol==wBT>$y>M4vc4N2_Flx$6A8t@BF>upOhQ1b>q{A2Ym3U zl;#AYbR;lt)YkDd8cG7VlO0lW@k>e3!+>KBcuWif>Fbr<0tpnmSF^a&9tY5FT_2#7 zCml*C_TZJI(~JYAY`N32P&BBA0;8|MWi`qKD-$N)^*oT{#(EKmCDEwJO!n=G6KSN*&d3@ z++3epS>^|t#kT3ccPq2}-H?o3`Sb5a?#fZz?c%V+RPrwOOus~m(&Ea2B?nfYN5g6~ z`Y<#gn{{fbU^4j-0OMc(@RwoK8(OF|U`@|p-YEG{a3Bu{>83x^D+CdPHuMe&q2LIUZGd(64b|CILq0z~Alsw#S)5KDTlRNKe0P5mR+H-2>cD3;XQRgM0Gc z3-a+e+$9wps71LYt|Ckk`sLOeT0soI^l_@^@fhXP{SHGtr;w$eY)klsN zVB%vZ^eIq+1$#h1Vn5-T1pNl9h6?nteSH?xTZJg)2@(Cj0pl z$_@V0`=6Ko(Avs+uy{(Y#Qhu!4V$4*Q0l$pc>L?rVd20EU009@q)EF%^S79LTcvK2t--@HiQqO76Xr2uXk(?fJNAAfvi zdMqTD#=*Vg9cu8wJ7197KTLw*SCp$lAf1VG_|^VO&*0tfa{r&9x8etv3(`RumeVf| zOr?D;yYDVooNo^9!uOX}UaY42JsP;Ct|u^wUmQ0Ag)eM4Mc{B(;*JV!xq&3u9g|S_ zhODEM-M7x6iP6S|qkHU8a(|xHoZl)~-ZXV42j0yadJL^p_1*8n-UMF+PTjiXF&rB- z1(R_-wP)1$)92qV`Aa{@yHevk$BJT*-Q6e$cgNDSMZV-{h+f-kE87>HuJ6 zX{k)^7bMj5f{SQROIu$(K#%U}XJNnbnS~5$zky*NIDV_+;Md>-!MKai5PHb>9u>eY ziPcd?io6&I#7zMs+{IzVQ9R+;^-?X9$#YQ<{+|OFmwZ-v9}z9SBcJ)f@L*k%#%nKs z{G?xJ$k|JrdZQn)5_N%-Z`3|4M>e|n71|8xPCA`Z1tdMsc9XMTYP6XgVkCOJZ?`iO z2*5H1f@sazp7ybLQAo{OBzn;{NXe{3D5su?ET)mdab|^>RNsNbFJo~L6R>XEU-{#t zB|ET!@}fHyyYshq4&wlY9(*+J?`JIq~xFD ztmmK0KW4vdyyx?9%oqk5DK&`a#7E2gRUX(}F~kbGKx<$CvD;1--f|ga@P(JaBCdLF zKtpLqMH3qav%7@vgLaK5!UHngt&shXp+L%ZRdK<(~`HENqoCn8Tzsl9F`G|Llo~8-0#b> zp9^c<-sJf29o{kc1=+EM)VQ*_-VICtxbq853hZj6JOds&cV1DzTC#1p`4oNQ1^WZn zRbEKtgWeC2`Na8Ga^bn1F}z#68}O`qg35Q%7&uCy($E5&3&8j5BR^$gjRuMXT#VIq z+QIGSrIGAxS{Q$}|Mp@TC^)d5(JhHCZgJcdRq*T$z_ilO$Hx{52kNQr!(g&?D@zWwh#NbJOfU&Qxk^EIvoNC?|GxS1;%t9rH%0{w`Ue}3l zJ@Zo1>Aqj_+rPR$S!;qAZ|v_|F1+DP57v4T5+Lw}ZQNkc(GdKsVa+aC^OfsBOQC0O z0d^=F<;%+I*1cn0_5?*9?znYu_dE>Dcw2T4fzp>0QAU~{ey2i%^0Bb(1^oeiiWk_2 zj+vPvT3{x5mUO6IUcAq27)qZk5B}}Dc}#~3m((|Na?p%^WlQt7^jJ|JKB>$H@fVDS zi9{wgpBL%!PFZ@!FzYUUoHs{@oVPups(X=l@y+U;k>@;jY{qJSg)_H$-kzU5u|(;l z5d+^A$G`DefuliYdI;(OI2MUjY=zPYKu{)jDe*jO!w$IV2Xd);VoE1k>ZKAJ)hs5J zhZWXspt3vtJaeA^P^ih^Xsk6lv3Tr>l(qEoixlYarUMl0sMjaZAdbWlFcVRZt^Q=d zb(v$8c=JyqUn-L&Irsntr^NaKW*v-;_;D{7Cs`)h$ieybr@ zUA-5lZhhOQp^;Y|O+AMnWvE(Ca7q@Pl`ye<%(yO-%xmuscpWsZKgC%;{K0%PzfBqfot6<-fU;8f-hlAg&3A=XiferT->ck!MOm1B~$At&8}vuf`zB5L=Q_p9f9 zZavo)x9l>VM?TIsS6w~Hq36sMT^9<}zK3UePE7=XXTT&@sb&6uABi4TL}Z=Kzj16zK?$0PsCKu_f9E=W(^Ee%SsUURI5ns)k1m!YSbRSKESaV)? z_k2;?E0|gBo|zT6J9!m?oo+ZIt=|!Y__bke ziZdo|`);>YX27tNS)1@Xa>b`js{phR@St{XB_{DiLFF{P0C{z>s`>w3fbO5{KXX=M zt#@M~Yya@2dj;$?INC}W{xT_3^j7sk!uduriGlJ4J2T<0z6mme(68Z6?cyLv(1GVHE`1B2vx?C;ce>^}9%o4$Ekq$*T_E{d-n+7d1;zkUMD~>S+v%R(ungzZb zQSXavr1$35@GKC-Zv1c;`O5O!D-wW8+XpuC&fJe3dD1st zi^*v7axWF3Q73JNeE1>+G}b)Z@eJ14db}JWI@p2RjYwa0{KY&j90LbLqL~aIpEB<= zg-mSsP#yj&M87WJpUxRewX};VK>)%(>ri#~v<>2`(bcZP$ze`a2ak0ru3ej4TNB}#v0zx!g(n*C-vL%Wio%=3f-FyT?`LMTKp zqe>&N(r)-rpSuSXuwFQ3#xxrH2tonhIY9=PAx~$(PFMysJ)xpt|Ce;xT(>WM1ls8{ z`c(`n>kzdMd*KD7jjGjGlw#jxlTCKjC%2l-EkzjZBRkz$ya}^_;st-dkbyDLF9mb+ zKPVm)%3|Ux9@)hJ7|}M$WHDgCAc08%aTou3{`1MWZtZnq0azPbC5L$0^$44zQ6!=DYBme8Q*K)E+IR&qH03$)pf$G6!+sCe39lGi+ zyd>`XR=v~2ZGC(0LcQ$jMSC8PCke_#f;>>NU~6=>kL^ZYr&7D533v1jpkNc)0K~*H zz(nx0|Mjk}aV+@E!belMui6sGB_tMtqOm%Iy3b|@R$J0-+h-8r^KcqRv|`xhwi4Ux zsBH%smZOml!OMtXk9{8>^ko2yVQZy->ykh77*==>WIFf;#o`1U@$cz0f|^zWIkDOy z5o%<(C$3_QE8*P5G82y8JlRcm_}Zo+iF5mY$e}&+Q7O0X_%30Cja&~t1^jBqsXuG( z1oHWg{W7A=vXZbQ&AwSF8G~oj7lvgyFObkY_N?6rhYNU&MR*#I^1YZdeC#8wi;5i` zdLzKAg!}93m;yc8iGEL;9=JdnhBO9hIY~mXq%|?|@Rr+9G_>O>q-_@;y?5bY9bczs zoDfitQZ)Usk{L;s^t}1UhiEc!J}JYG@1|LUa@l#SR#ebz=NZ0Fm$lVq*#r}MZc|4-+QVk3&|nle0{a*&jXGr@w9&N+Ge=d~TKHV4qPXi$r3Q zO%tdqqP8LEq~>e=Pfu%Kx;-6Jwgme~GaWouWTWuycK<*@81!{wzlFkOEN61Bp2_8@ z%*2{~qOYHReM{Eo?`wA9%lBNq?pS8Bq2IM#YftVtMcH%MybjVr9*L+GUs1mP(O5KV zL)6-#ExhW+S9J$LqUy1fu}0QHGc?Lp2DL?YvJ319M^z#+J`$spoVWH{9*fBaR}>;u zAOE_URu(9h&lW?KpYM0DwMCA8QkbEM?GyBPGRQup|HGqDO6zol7Px(MiW^1EUmYJQ z1;*H3kieeq*j&&p1u^{NM?M|+9rEEvSnt7W{=4X=hq9VxwOdH1@c^%(ZS79R@vFi zq%xM;BP}zAr|Dc9Dj`oO?P6CUu0qN5>Z^cT;;Fd9sa~}adcq>CD$iR`&_Y!$UD3H24~eJi|y4nA&328YoMd-_3nP zHO*%VWLIYlW zm3gG%)W67;yq|nFcNY7mvE1^aab%IWvTAW+yRfn?B5%Jkk%>Y_wwdVN#6qYMA`_;|fo;%mmbmh7X^89u2cWPvMa0POAH6oj-lOA~cx|V>b zZ1DxM)@=n6T?I$)?kH(CL(sH)l^DCj2rU3zqs{<2UMMcwaqpk&V8f?6PS7V8qA5QUd;E#Wxuk|m zFbJiC(5c4%qv-{H(s`S2%VfbS>Az2#KGZMIk=@+R)+Mz8s6AQng?=G9~qwrv=#yo~I3x3EEvPiQ1=e{+`raGRZ0iaMW3Y1ZdwHQxle9ZG6dl*e^9WGuW~ z{QRXs((#r8aXXLJby!9gQPKV)TeArvpxwN*H_48n*5E0Pr;+Y+FJO-*N|gHbnWnFE zL6W|Po2n2va}IID9!=n!-=W2r{eXhbr7U8#(}6Q;<*H}BrI&s=pu0nHlQ1q3%9IE1 zl1>)#_rrpPMe)AO8ToyNyLs#j5ecXn>gw3fvcRZ!mFf_tt$+KCcykL^Zy3sEMqX=CL??$Y|H6 zQn*xoE?Dy6l%>^j_K_oGe9F~7x$PR|qbfq^LRF5qFpu@XGq*MUK05!KSvWOinwNFK zOWBm7%DUbr6PNRRB@Fe-`eNu8>>2qPE18{epU!Nj`{6xv*EqeGbVaPd$?v5AFzZ(>AIG$(Cm`HAX(O{YpwhZn)*}&-%;@`d&HUeonfNG~M%z~Os?}7j^ zS|ob-h!K~6@VbR^%G~|p4cYW(r;)=WKf}IPJW>S?pSCpC=)-9vI^!xdP5hnilqTJ@UUUR z>0$E!C(H!sj6VQ6qbgrsfJ{NW+8&VIA>M$r!8B5fh-rRbM#QRT2XW2)T6>}XsJYkg zjiXR{YETV8>JLo4sTKTkCvYm*A!&1a*fa+hH`Frt!s69vcT2h~A?S0iQK65vxxLVr zXFo&slh-Jn9sl~*$-0P{BCpdL%Sg6>rdTDoHw}~~Xc;sHeLSBNFY}sxQflCp>Z(3K z4zVJ2;Uk~E5gnauxuHY{pt3i`VU|!2IrppA{7(jYgpG_*zhk#G9uYPFN9)r%i3nfI zzWP*{yy-*;8gw&|nP;h}T~6d^qe1)p3ZT#t&}hRX-5na zl`s0?Nae!aR5UR_KDuA#d{_smNRA>valhOn+_c->dvhwC0(SYd~K!+3$2wyxo=Ekj^(7lmOM%JQDNZBZGN{d z-E62QQvuJ{lW)FHF}s}&8OGX_rpVoss3t_%w#edhA_T2wVTGRGq{{PYff8~=7+(B6 z0Wcs{Mh+lOpTCRP?Jz2g7VIO51RbP-kb(!zk1k6;24&ftPC{tUSpSAD7{9BX4$U7& z5VtKH_CW6A(zI6)I0shVi+tt6De#D!_FuwgK$13etvmc45Oc%4(N8>|~~6ce}^JAr#D# zStSfmWp)tP=1 z9eihEMc}jfcN-X!dzpMo_bY3$xj(~xENs!e6`G|HsIZm7-RNO#*^VOCaAc$~Vb$#i zKh?72Ah_0@7!3)uW<0rkS$~K~t;%zBKD?(pI#hCa%w>CF=J7#R9?f1;T)6rBe9O6eldP%(2YsraP| zIF~a~hu^Rn!Sen%v6MAtUCo~_51Wwjz!!@o)owldx+zmJuEAt(aQ8*?x@po~edar> zL7HH3r1q+(UPGpr#>_yhqQmaV#TlZbV%#uz+`Du{LugQ%nVdpdg)!QC_w|5;ulzb| zTXug)V>zkp5`8oNR!gvtEP4=6IQtpfBa%4ODQ}&?dgbX+C`>PL@?w1|ifo(ZYR{9Z zGt;$SqD9=XhUty3j zKi6ZlIXTY#hZx7OZS2^Fs=@+=17I^iz~sLEs!%#rP%W-__i~Ov{D3FzzEGsl%=Re* zBD%ZXN_ggn=*38TCj_tMoIF zgOybl`hWWE+7sM5%iPWbS~<@=?zwAbUT-K{a0|N@$E4Kf6PMPjML94pY`7!7xZ0uoF(W@&UT?Bg)J=cGh{J-RG(SP9@;0O;v4 z4TlRR6uZpr95G&vWA2G{lyDgIlTK4ix9kAL@vs+?kOcJpKB4%TeGyhQGZ3vi03Jdx z=!B&IK4~J6xmfI+{eAjbGdZ8eY*Ekfpn(S2#A&!wL#p@ndTQow%@f}bxu#AZGUeFcR)fqaw+W>DcJSyRzPHxmMmcV8!A^^;MBWm401Ptd&e7j-WY|1PQ z<2R*POK6-(nKvmlsy^Fz+QO7-SWUgPK8lgv9(8&xY>UNfQA}GOxH5*`x|C8hSRc62 zugg>rrloXDyd;OKRFi@PZ@UzbVXRk29xV#Y65d;DTlF-57om4T+P=pxkIAhkY-?K~Vwle_uy1Y_1nN|Me%m7*9}_OkEWg ze`k>RUTFHF*G4oWIss}aPK)xxPDgt7ss!#F6W6qXH5>t)n_xH!f-JMamO&2#Q~X?> zP7mp`tCnI+LFxoSW$_#57p@GIIX?`5*VZ$Km+D4AQd2MAZjNcBykYnR1ZFkjuFc#m zA+55?Qgqd+G^PLW3pDuP5(C!mFyc4Odg6Y;jKF$47x# z&t5f7EV8}sOedPSl@z4bY_$^_)+;-|t2J*AUV2g~KS?PTvH)aq5jMK*7#`HpS9LB7 zv|hh2HTHQhOHYN#`;OX6e(XA@V5sb?*s8yEaPC^7JI`HjHP0pC2nUg5LM|VR) z;_av8rqmWJ2_8qn%B6EYwEYuiShl-k0_iZNk1BUrE2+N8iq-(Sh!2qrR|hSfzx-a_ z(?^l6JL8hOPY|~E#?m9nVG;-z`!Ym12`JU@l}xE(aH%|}C@R3WQe%N$&K%gUgkkFr zyr#Bi|2e*ELr+Wi$n|{-X@NidQo$L9SmgZQLh@-?V>trY3cn4+ixdy|;gqN{%u^2Q z^OS?6;mOP5pI7IONB{2SkXh@_tWFhrwl8GG$Y&cJLW3Vzy?)xell`LIC_j`HzxF3Q z`q<+5&*cjmtGqY8D0ZNvn;v-~OoVb%0k|_DU={rt3uAU>*D0+4^m(Nq6YD34T)Y(_ zz@za7eSTNM7^IQ)`y+Olfn`q?ONBmH##r%LNMCg0~3J({ojdIoLo&{M5qLcR;CqSm6r*vtVKg)MlVoyx0X%$#)YvzV|c;bj)zy3B(~he*MD7 z>B=VS;hA*1`@Ip?E9rIz=Elkreb2s5rn_9@w7ps3?(8YOU*M7Wi#j0-Tzrp=H^oX_ z=a%djBfLhGe~Xm9&l3+)*|2~jNdiGCBKKCIr=dW?fm&L8x?rlIfxIB}6QF`J?~C$# zSEP$q;cvoJh&d<$cQ$HRW1979;m-mwcaafBml=jqbU1{qqaL?sz_gl^UnFg%(1E7l>dUNPAt*4L#!A-kZ}@15@R z!kPu1+!Qkp7DLjJ?7)IWRSf}Pvy_SurjVWt7^*VFK7|K|C@(jg6C<4m&DhG^0tkNc2 z`Q%Z?Zc>(p@BEY;eTAi1ulEGvQ{)Tl%v4Cd$bb5Z#b&``6ZAF_V-WK{IKloWoqdgb z(GYHZuU^xX`s=B{|K-O5Qja(#Xc6)s3XuK7g8dicDuy5S@lobecd|PgA{qJ5LyW<6WnREQ_*~{m=4za!;zI6zTu0UtICC$i_=3ci zZ7fZTTz5Rfxy;|E%o0)27Q2`c7Br9R*IpNOGX2@I;k=U6s8w(Z zcjV(QR^M}f#Vul%>|8RBo}!rph;&O*oyA8vMf`gL3igF5Khl&S(3AGo^qA4!9Wr$h zxo00h_Nywk!`nvqeXZ^dSy0FU!n~DQ->~CWS{`Xa)BS=a)y!n*GRlrsr|pQi!DjTB zbOb|gLi(NAuv~Z7&!vwuYssjuC3Bx5%%x7rG4*Fn<|cpBhhg?2t4zHkx`Hvj06Xa( zVv85x;fYuZ9=2F-)V5)Vp*~xz&!A0W0^}`tOwU;NICs!{s+}{=SJOK2@umG9N!eri zbZ07QmV!qCugTuu4?Tm}pG2G42o1BWAL?i7ozi{ImqN@I*4?II5tU$)m=+F!aqC|8 z$|ajGY~|Myd|=x*t*lARB1DYaj?D66@NO|#Nl09N^pvMm@&ho~`F)Zu) zT;9qw3REvHUw1WahgZf{WgVL2+06@fr6$Z>u8&3wn>kXJ4n05Ve zq`!Zho0DQLm)?mKjGZAUVcVA#A49G#cSx~q*;I|Ns`389K~b)m7wcZ|rd=IHbB>7A zD0-q9^(?}IJ%i(cF}}O*lM|-sMxOzXOq5Uq%7T`U0+kn{KUOX+E9#J9Ht_=-SImHx zCDos)sD=o?E~A+X!G(?-pbvx#j&dcL3m(0!Afz6_G`PJJ@|oIm3QwFuA8qqoCG35f z@`1k$8%_e9-3IFDl}~#+y60hIy3+=Zb+(rPuzDK)grh*f-!4bw6C9`J{ozldFYA9t z_3Zm=(9;3aqVmwRz*aCZYL<5+bcvjkuEf%Ivq=BbbyMMzYid8NB8PWQu#9|q)mcdl zmWr+m<`-@h88Qe3c}x}E;}V_bNHqe$$>;O;AJN-JeR=9y$=3#;VDTRNP$gw zqTZsUh^9xpb=CM+=Qo)YF24R1UeJ7=Ic{}5aw_F##+Y2bgK@U!tFNZ~i)4s*Q)w$K zd59I%sn(xo9!L@jPa=jg!4&>PO7cI|Y!RRSJyJI72-sj8?C@F}M)+GtNU(nmB*jp0 zxUa^HA(m=m)ek4mQth1b#~2Q>0woXDYuftZL^-PE%T}wJEZXN&V(tcv{7J}i43b@r zpA*>mv+K?;J~6oCVcSYkE|Bfv|sKOd&Sa7YiS*A@zQJg$Xc;D5pudAua0ISa}u& znz~kM6e(-zHqbj-p0|j#%nsTGvg9Ffaa#F}6+bww_#?;FAO{A0Ce4T`^!MeiY|f;J z?Xd5;zu#}e0u$@nhmslh^(1-LLvs~wTlxJ-OeE1pr#rb>iFU4N@weldf{Sm}jIzQD z!%M^YY<2#CeuLz&)1ul}^p%u21a4?2wH9FE+c(C6jkqO1S+zeq27ai1A`)SIWv8(8 zgW_N7eNcO9>kOBwa7w<;aX%uZq94Rwo%8Il->dFUS!%mv>aN(JQ|nc+2aZkWupbtG zCz@eVGIIqqxb>0GH&GzaMs$LE{TUCN!8cs?K25!*FZoF6s|j9PiN^A(TP2M+X-6pX z#|lO)%WfNyF#brk=%D5X;5w zA0=r-l|+IDsCny81=0vKS9mXsm>Kl$-{-**_jYNnn4{odU8@(De(lpA?y+CX%f|T? ztI$gr53XFqo3>A8CY`tH{F#6-tMFikv{Og@9NG!TJv5e0xy6%az929%se0hYQvy3Yh!lx}7jq~yhwRUL~SXGz5du`jrg5{F7jGJ$S?BP;I(K2=PsDWDt(^taL zkj55*K(iwUz2S*XuADc+0|P%0IaRuYm=x0-&~#G?k1ka=<gb_g>SQ_qz#OT4NJJ zN}^6z6gA{VVZyEu?^<~4O*F*eD|{`F44V>)kYpCZBLts7ANnzS&3yUay)^yLqOTDG zfPcIRSQc=kK=^x`~|yk^Qae(1k5M>*n1<&Y2w6?Q=78=aR2drsC>Q_Dxd+ZVKbcC zaf`s}!fKcEpT8S~pF3Rq2W6(MQZZ%*HVQ=HrgYEqy# zkQa zL^CyKi2TKT%rx=MMpzJ+7;Vbz^Jr0kebA$GTI*M@!2U)~aD8u6w%s^CHiI+ekE1rv z5@%)i)kAN;ca`*S3>sH14z-l!CSrB$--G3sLZ=uxa`ImFV6uGTP*}SV^@2R}-QE^C z2vU;ywDo&cwPpvhz-qklUl$KL8aP6*o8Tz3_gPEOuP5m{V^H05#LKF-K?3ZCsk20n zo$LK{bIO{@Yzf%o?>P}vVo}m@cu(~tY6At!?0X%zF;nU_stN=m9y~=xS3!v{9tsLd zKTFTr`7}Rekckh4I{eq4b{~cm6TXkt?Mbt-c&#^3o6f}b654C4_kdPT;J+{D#iL(5 z$5WS;meR}Q{RLw=GfSWY6PJ8kIKA#wESO6uIUTS-c?g$6&)*4d(f!(914KD3L3f#o zkF36)d@LCcYQ4+Sye&6xZdYnwi!0FUXRKVx)IaJ$)Fl&m^Ns50_j)VO=paOp!ZZJa zMegx2UMOg^4lJvFS5(=qc>UJzBbEh0aOlp=K;~ zLfqS4Xm&=>mKRcXY;IuPPW=H+R$y(r?1hEf(+}{*#Lge7G*W{aN)7i3uqKX2FC#Ht z>fTP2x-$Y(bJ~;+`$9AKd&=rAKmZc`Iq0ioo3{8TIY|n*mFhcKei@hD*Io00=b`0@}Dlj*j3o7``Q?3{Om0v zOawl8I9Nm+Grk8a;XV=yl?$4Cc($s$=oyTi+j*B!4LP;(hhUlTW(7;+K+XRKU;+ZD zDPRN_d^7jr6zBZdXtT@XS`~jaFCB!=ark{Bzhr9K|#=}xW(PTSnlont&03Ac0 z`&FCUKXB{PF9Z!>3IGSf$}==WnKc=rFaP;#UE=pPkB!Q`ukIoTU63x%o86RLV*BC9 z6acL_V^|7UJUH+DgTZpgN}3ZYR6pVQCAl4>h1J^1UIi%gZL$AMFqSHBT z#p>EWcf|{-F0i_YOqKo!*8R5D$*qSoFZ7s?)L#Z-z?Y&~l1H80LyQQ_?2jd#8=I2< zd;a?3o=X+4R{c~!L)+_g=BdY43sQ785BS}brhby9MS^;s#qvl{Wu%TntE8#B$0?Av z)G-61e64mSt)GA9SH?0GSh?sj6sVMb0&CWEPJc|A3wZk{z#4b9`=!@)F-!WlhF!%T z<}y(QCCmr|n7Ewr!)Z5{KN(9cUeD%B8w0XkCQ#V0UC7L5gMzx#G_6b!{1mPHh72Lc z31L2AEV(?wY(te7Qj!???}IIw!dW@io@90|e2gC_JNlDQNOW!2%*K0{WwmdWAxPOW z=B}gMWcj}}zlVA3<)E4HG$2SjRSYaOgL^HKdoX~B>U0eqesEiVZ266-k=u#YdG3vZ zoG8i&){!^z?qMd*d+*K3?ef@$31q|nF&g`K8&D>2!^*EJBxg+GFiS4AU-CF~edlbj zZANK$3nzt5C7s%DR*_LnM50YBHYRXfnqltLuT>*Bq4-N+S)xenG@L?;&3Wn#mSIz3 z?2zQJivrLz!iCv-=l!^%d%LTV#gpz*L^I#^oYWkuRiCT z`mmO8rTiC@D(bwpXGR}XSq{Pu`Kma$b&fxDnE&jM%ljn|(Gp|NCB?KC+VfP2I%;9~ zR?yAVp$)V}@SiThn}>#!da$d>J6fx=>JXPOdv=+AS3LWe;bTm0;uMK%%CuA8YaN8u?Ka@mm^Mr(u$t@ zG5NIbPO1`%P!uNnmV@kI&8f67#D%* z*Tp>Dx^(yKw7!ejPP$|$!16HxTrt##R^|dM^=%c}NWJ;?Gckw}As-GR43sGtJ2i<1 z6fC4z#RC1)S+&YGqXNY#BrWO8MU&ds&rCMu0(b80NV~U3^CPmr@Z7k1h*+j#zwk=j3~Qh$I$dA(tv1wcOJ_XYZv@pK_YtJ`3Tts&HKr zGyH4CuVhMa1f)G+0czzYO z{%4>%oxAg+^i@11VE&~-f@VJv0!han2(>hPCTv4S{Vw90piZwx-97U0>Hd|fBwdeF zRs3i#Yw`cswPhoR7Y#mtPPIiw>v~QuwzYD2tNSpA0Xdn|v?>ZJi?o9}sDyVxO(q4c zic=58{{b~+cZ+|OTB%tFb0z~|NkvEBv!sIePSWMg1>U{^;yokqRRk#53~^%@S!(c1 z=57V^r{B0)B9t6=T|PK`Tmol>@hHzMni^&K*89ra3W z9aHuDJR^%uq6;anpQUR^MGz`%<-FC`xaZmWpTbsRLLlMK$o`yXp*BpI7hjBPs%*aa zoV)3nJT@QqKWGW^CyhT!y#lk?K>!0&4#K4b9;CZ~7 z9~iL4xy5h?{lPHdMl$@t*lIQNu$g6%>qF0qN>u z*CDMX`|mBkDZlgksMT*$cd~H=9?}Emh{ML`VVU~J%yisw=X5&=EbpdtM8POU?{zKA z`PiTP-cR8$-2#2jfRL0J8g!&^a(0%%Nuu<3 z4pEVP*p(E05G>S7YLGb^>?htMaE{D%G5DeP|><+XNZL0pJ(6rpnwX$6(2@9GMJh zc&7!+k%Q)8p6MaXZbjFH8S=t`3dMoNfBWYV)+%XK4e@U7VL6kzHX%kfAWu!6%)!Gh zaMGd;yfGM+yJf=&HXR0AmAuf?I;I?Poxv|fewB6JAbBp4mcq5K!aR0EFQ4vy${9J2 z!0gsTO5q!ca0)~%5-}s~jYGx!aadOiq!su1MOlDdEcYtF129&TQ>EwKYX=|J4$@kt z-_mRoVPBOpz&0|wv;Ar-bZ!ko-LjQBbscIYS+t+z^Ty9t5|~#oR$sgVgxj+Ps{Gj( z#FF`(qDx}TS~jbuv7v_+WxS4)?NYgTQa8O^oihe)47n3WF(9h3e0mhEGDfUC?)q_g zpv6Y|C>GrLB5cS+FaW|iu-+zIfUw`ZmdVd1LJxON)V%9k_8w{8?nDgGxCzB7w#Meg$y z>2xe)z5lEY?Z5ByGv?ozX&ha(e+~C>iSlryKRkXvP0|7QVZNBUi0KRNMMU4!{X8o(Y#$i%!@l)d#%Ikwxd*2_`1)*G6TH%96S|8Xi*and0fs(cS#M)xa1it z*@S6VEe!snuTpQlA%CrKmV+H| zI=b)~D*iL?v)Y*>Ie_d%S{4}P$GWh+j{GTB%7iv8G1B<2?kT@n#j9X!qs?Cfsd5** zP*_U~fllMRsgOa~t=|Kdgf$z{_?S{5p37aB=tg9yxmb*Su13P$^V7GK%spOMMGC- zLFOrx{yffoHL~WiBe0tLh4aH$X`UYc@*DC*)rKPb8T&dNWzcf*tQ|8U;&zT8n6T!RrhU zDl|BRCmF=KGYFP|V)hl{`)(YI7A0AC1Z;+{Wyiy_-+K?r#yq{l-L3oI{crEZ2b$Gb zSIJ+0r)RTUbeEPPXHC*v(+vU7)`z=G3u-`4q5ec;JjuP=MdTLf*gn*c7eeZNa1!O} z&!y{HzK`6_H&%_`h~t1L1~Y8|aSt-Ftq0TmaWr&5yp1FiN$eAmj8AZnH)yu%WK?XN z?t!k!stFvW)|FF9=Ooqf*ecw&Z1~Sk7G=9UJj}Ozq)9(W>^o`qM%3yV!VJYr{>*e>^{R>T=^!jH17q5k_H1 zfs}*sBYcUlY$?4@gpECPu#wvlga6FFp3jj>UCW;#$k80xRE2Xd)Xnqa=ZnC)Tbj0t zO4P>+t9GBqEdV^kn&mg{)zHpNb(_v_77S6TfWgHuH}Mq9S7|IrUf?-79e1fgIGs9* zDPqPG!hi%<1=cOIq%a6GNHY>SXWb9qbOgxp>bt+&kRGfiA~S zc^IWe&*1qoMHp&L^CC6X8kH$pCrO+W?4?YA*mn==&17x+LRpsM0s2fa@_|=RB)v2X zzp=(VF=3*%d_qTkv0C#>yE})K)?Q!eWSfu(U4NLD83&Ybk&Ie>+yfM4BzV6_MuB1r zNzQfg-jGehEG2HLw*-ARU+C^g_UBXhbQ5vEOyp#FkVAra@39a5NFV#we-)g|8r}F6 zQdmFqz`YY}w(D+Bx#H>l!0nOKs(xVJe=(CE8Im~nwwotDMJy0sG*9FwjP7$;xP9qH z&5G7~y0FHKz_?8HR+f0hdUhB${tkGNE@fkwc0R#33YM}#jD3X^qvuW{QRIjvox>2N z0w}u9rk`uegl5`6bguy1oIQ5V2xkl_uAr9`3|;0D?*Fo`B3aJUZ;X_*a!nfAc^&8X z22H@LXR;Qt%@HKI5No|-)^8j5M&e`z8O-W7?rW#M5aw#ur0pH?zc-Z|yDQJHTg}E3 zy}d<<>`klakU^a;PVt>MEDa}?z(-%tyvMhbfG;@9?*%*Tj8qfbY=ky8wx|n$W6SP1DMh5Ip z?MgxPgLQttp=$*a2HkcJ44XRZl5n~>41h#rili#w5MiuE@FWbZ8=8W7#QW{5F{SIa zro&VbrS}*_G$$l^69~@#zO7t#PLqj#$VCc!4Wlvnxs8yeg70VAix_{mt$i6D+*!FY zmCJyxzaLYO?8N}FO!Q)Lmm3JQdHfg>c_mmEQJYPF&rzasizK0{H)o(Gn=|okY3+BH zUnS+rKerX5tIkA$(bbSvpn%)i#`-?&V<@P)y3uJpz(mFEgo|-#iLPea(d3caDQ}jJeF4QwwIc*hr_ZX?k_IG`@VTC<=NI^-lzjC+2<-*4nW-N(ByE#z8y z;^{8Zk{?;)Ruds!{jG)KzX?FWzJ)5k2rd;mard}JkY7wI^alc7$A2@kOaX63_LZ<7 zjm(!z`vx>Am=m17dfVxaE~*;FL-^@Fn@8=u(kHdW_+VVRhg~TUn;yKOX*iT1#2OGk3U}3CWX;V;2!+^%okuQHfkMt6S?h~ozLd1{z2U7Z(kaoSUvl$=yO8wbG9&< z(uwAY^ayiq|K_RGWD~Lk_jiB6`|r7ia(nEFGR+q+*3uT*B8EJi3fSZWsUpb%U7g>O zQ54dFsH8fHd+27uuKkf!xcp#p1cYCfLKmurR5Zo~odM&!p#O@P7RnG1hk;yi)Pg2^ zFYra8L!KAJhlwb=1(aGgID0$&yiEJWO#7oKEV&3dmKg?sWa#b`}sSy^x~70ICX(`aXmdz^67&U;Tb z^o50YoK*syKs^`eQ_g~Y0))3AbPq8DL8>DkUFbBc1dSmgz@FLTClS$WvgFRbpPaV3{AbP)dTBcJ>s;VVW-=kcT}2ck{c+z=E`^MBvJeEwIqU~ zo1~$fO0&cMd1kaYUsn6#HWKqbWV6zgs7=7zPMS{vq-Cruite_xoEg-?%?+}lIy&l) z=!;w)i^CjD$4?FEkX`@C&_0kx-s}g2AQL&~8AxOG?LQ0z)rUCgX#94Hc(OdY`45`e zT2V7;9>pBqSkBAm?$jyI0r5V0AYCu2796v~^ z&MVGI<}ok%DwU(Gy(#LrjPO-9nfs!%;LZvo1wu}AZ|D@W{NNYWS-S<%;XSi8V?PtpI74E zwjuZQ_jhLKWRk2hC{ex)jgzf9qvERw=^f8BrY-wSVPWST^ zG!N-ih1CFO_2tc3@lfDht!r94@m^+~i9FL-uc4q=8EV5kQ~i@6Gbo+05m9Xp7l97+ zp7CUOZ4M8$eVuB$(Y5Uud9?83r=$p9T@9tUM+gtPKP6(lfg z-s)b7GM7KIUR9 zZuF0`FQj#PJpMq41y#c2`y*Tx=br8&bKCqgQPniNQoKVt&it!{r+} zezJ=UZQ4-aXwug%{T{oGHzlkJe0Eg)b2)j>%ABj4+w$%{=N%87uUcKW!p*En&@MJuTTt~zAO#$^OyGT|0Jw@5g-rs1 zmk62}lJ&uQ!8*C6N9+Ds#TY%d!#i^u*Q4tsSEdA#T(+cnt*x-RFdXT%w~_fqqUV(k zec8@iDU&QBxSpahXFVw*LoU8;-DAR~U^1=_TuO%DPSQN|X z9(hTEe?|i*Q2r$W|7DaFV2aa=#0Xd^44|~_GqkD1(zR_0MY%SIoj)=fo7H5B=+i+g zMQI0&Y%{-04LrMkY&-Uw)?33mlW1zJ`=RsMs>)6AZyJ^OPC8PYx-E{4w*05$u-soE zEwyADp>Kr5w|69&*T~hwtBJ--2%IBwYnZleiLs$CQ@RN7E&=4m(rPwO?a&8Q_Gb5} zF@)a+{o}7it3GkfiW(q(}Zq9`E@rsA~9ccCv%Uo*OZ>`{hJEIc6$i| zA3SSeXDRmqhndH_CYCwvVfWw$qp#u}pJgKhH>G}BarEX6JZX1i9}h6{P-ocEj;PRJS_92Z&1fs4eDU|&^8Cwc~Ai%LJTz!LgKA8p^s(ngkWIupn(TT5sZ zjM2*4w02n;=95hYb9|+12tHj2e4S7Bqtk5F!bu4f893vOw8yrPJVa)(3C9mu_!Ch# zzBI)duwD!`UNU{uc6jQYt>1Y6S%VZk+R3b*1YsasZr^bq$<9(WoC*~hM(&wy$lxYX zIAB{EDe&Yejd7En;bb90nIJwza|9@nOf}4_p0W4?*`k%;FQ_qK^PyxZ8b>FcF%)}T zpGF(4QA;2C{u;i$WCv*gOMred->mKvl`Zy+IiIUW8dpa+AAOGyI1hIAT7GXlPW<~w zDKd{h`-Ft62Ua5@P~86Q;2`uPopvG#??7l5v16}AZ3;`g%yUCi9f}@{4>Gz^onRDw z*joiDFp52HCXFsLH6qejy0_-TujF|)gRcVt6nfe%@m3}*T@4ggY{_6yymdXrzUgC@ zqzdnCzpBqn2fDMXjUOr7`IkRAN-QJLf(GW7YWqgTRzPC$<2RdumQS+&A=ME(m(us ziF_x~<S86;&QILl*Fe1}W*elO^RFLNkHOxMlmmfA3WESF= z{2U>)OrMv=ffn3h_B-zIN~^nzBtnV7BZbX7(kmD=Ppz6KCZGOJiUDe9>K{e0udLDJ zVk|LzFovq#GSGWMUo8(=-txV3ZG~cy-$Je7IgyG)NkyXvl4iojAH`6H7I z3cI8-z7$N`44HoeQh$eIKzkKOq94QfbycNi-;tF8*L~#nK?diaI|&@<_kX|tBq2Ke zJYwm$@GZ$)hNfB3P>}42_1yVdv_B>1=F3-^W$vTkB)vW`j#IG4A-g|4ZqEL@Wb#V3 ze?R5)6AKF-I!K2Ndp9%H^7}B!n*(OF3wpThwwe^iuRNoVRDs7_TYoQ1YUq)ij4oX@ zE*vOidAfZkyC5CcMQ?N*O!Mtb-n0h;LA1`W_fF%jDCV;A6m`8Nhs+XM_7!zM8{4(x z2#Pm^GjY)9PH~#eLD5P%2a2s0+%w~*0vE8m*_YxxTj%kbE`A!pY4m{;e z4CIYg`O3H>yb8`|Og{Ff0B3L}*I!V8O+G}y@KJ>_i-S}UtLSN4=;`V z^#F7-llr^)n9EI5sU;4P!G-mqD7ZryH2R7J>s2Xzk}-zBkqB%0f-Ers!CWywE?mK6 z?(LF=(_2hey)0Ehr_*--P5`akYFx=^Gj4}||Lt3UN)u6;W|yoU=3^#YR$0x(OZ7q9{gR1FRbrW2Y-@uJU6sSe3~37fTpdC1gi() z>c6}&$Qq)Qo@L*0t|EdxlafXa)tT5~3Yb@=va>26-GMGmINSc7b%Odd=#@X?O$5tE z!_ubZhl5VCPK4kB$Pb{qN~KMseQUY)Fd+13-rQwQeX-BAt8d=?`8Fblm_X(IJSA$>K0g%Q<1VwE(n>z~<{4W4ns(Nb3N_;-mcxD?Tifj}X8z&4;PaR7ySxIL!P#|qkrS!_`31{=@fe*C7M9o{|L@+vn64cH*h7Uv^P`uCe zD{LC>pfA7K)#B5YkxSnzlkq>+SOf={98fY$W1%zBPf)kdziO)>IT`tmVD12%Mr?Xzs%jedSM>IHP zciH#Ti<*_V&s1z;?9FA3K?q#9FkD8Yh+75N2KO84B*O;npG=wX6Ke43HXe}+7NpY@ zhkjKEw*b#9^dGb?VV~e4?^+1f^o4WLkr>Nj`L#C!k`tLbK;Dv1U+JwUuD2E%bA%Cr zNOU=b#fzt_@L7T^@w`jE5Y2K@e9f)RauMxL<0qz@EXyj>4=a!$D<5n$eW^j-V5i;l>ZVBHO0RuM?Nl($uAXMx=gF`qvs4MH;wNQBA0VU2@rjhgBtwL?6Z zGhn_Ndh{=Nf+QHWBC-WtaVO%$eNHaf)na~ger?{@93N#GS;x|1Th8r7Hqj%FOEkLC zl7vh5UOf8C{5~m}eQsZ@A$5C~a^at=r!Dm}VsJ^)^fgU;PP_In#nMv%b$9*LOT6DfSy#rRuljGI~1C%G` zfzN*}t**Vmov;>>UhUCUtkjnYE4bA=X0EK#T`hFN+Zdp0aLnuCJN`IW{3?rIMPfJe zc`)43kNkbV9k5TLKTQg~zvT;sP(!r)TCR?)ZvM^OeDKNw^?m<=L!glm8kA%efKe;L zCzDSNC@;B|p)6RPOe7Uz+5CzPb>JFWY48kfgt;Tw{?9d68$?3<8zCHu+4-e1WfpT; zN2)9H$F@R}WtAb$6g}Jyfh8MdVRUF!6bFC8(rRVBF%p+Gp-8HMJ)1sPUg%nYl0{iE zF4=P+!i@#LKRwbZ(X9mA;U>|WM!Y2?e#%I_m+Y?Tkak~=CwGKlE3s0W=|rOeB|Jg6 zr<&||CLivff{%8eiGcJzLn|CfB2#uXDO8)T%;;~fdw*PQz55Z2J$Q3d)J6xn7z)ws zSiEMSy*s+)u=L zTK%^h;=8Y@=@zsIZ3F^2B>rrL;-2F(|MhCGUNk)M=g_PgrXeSkeJ;|4sL0*F8d>>D z_CQ~(VEON{nv1>|YWO8r^fkNqW&m~PZH$JGs`aMoz<<7BtK`F;f(`s2fyd)@(#E?R zGMSOFJ7jusvWr=v{hx#yW-^6m0cQVHG}+%Cw=g&K_DY)9M>D>PfEJj47u6>#tMXAMSKIcT>@yU;EB+j*;LH%(Xw+fkcyL^11rmW==XfAN4?Q7Z({K_Puc&jEk}2)4l5s#R{VPc+v-Q`%Y^x*D1IYxu_=bk;vj( zP4_>KQgYV|f<@r&v&!ALldzWBK9crZq5*Vh)5x=ws3GLQqjkFm9#E0};mFG|!hfBV z`FphNM2;`+1kBrA){IN6u81^dHYXnD(sv@r_;J&UWuYH>n}9RPS<;Uft#*Sb69<{9 z2kAT!Nh~%rmE+`lktO+&OXs*prI6Tvb&gQuy*g!q#1anc^`|3Gl`o6;9%0$la(jc} zatEq2%bC!Xzj*Of3Ms2s`C8wPm1!v-oo^l7+lg6Z03vo3Z-VF*j(I)uu%aG$fp~rf zH@TsXhX#2ahxxbE2<1D__L)M=>&zfW@0o-bB_PUM_Q~cv)h$nDmCNBgjWth$0+&0o zO|R*wWcB8e&vzRm->zX3dsq?V`&wL7gpW2^bcb_yb_HQP5wChF-06w%fV9KZhab~jKYt-<@ z7Jj8TJ>m0Dl9rp!K_8f_JCuOQe)_HDH@Q@S=p^w!nNdPlsrlze*#o6O1!8OxMRk&X z;aD?EgiwPu8A++^0rljAQ)$##I&H~>Ko2W5nk$Fxu(gq;YEWhc0KP@_rI(v*P5)>Q zv-P<3$cBF@F|_=exY~EbTlv5s%nuQLEuuUB$Y9#5UlJ5w7H-iGYp9WodcX5fjkZE& zir)pwXX(;@Z9)p~fKkA#bWp9YU!UbG|H(`bk%AWkAXq--gmkg}wr9K%0AWO99^}hS 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 Rdi;auTU^*BRZQMv@^y4rLyP#C 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 E0lvQZ_5c6? literal 0 HcmV?d00001 diff --git a/docs/images/vantemoon.png b/docs/images/vantemoon.png new file mode 100644 index 0000000000000000000000000000000000000000..d0499e055e76bc21a68f1dcc5220bb4cb98267b4 GIT binary patch literal 118509 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∾1*G+fY$*1C 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

  • d4FPmN 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 literal 0 HcmV?d00001 From a81c43b5b332b2dadc276860486c4d92ff6611e6 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Wed, 28 Sep 2022 22:25:58 +0800 Subject: [PATCH 016/208] update dev guide for v1.1 --- docs/DeveloperGuide.md | 69 ++++++++++++++++++++++++++++-------- docs/_sass/minima/_base.scss | 2 +- 2 files changed, 55 insertions(+), 16 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 46eae8ee565..75efd3fedb5 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -257,33 +257,34 @@ _{Explain here how the data archiving feature will be implemented}_ **Target user profile**: -* has a need to manage a significant number of contacts -* prefer desktop apps over other types -* can type fast -* prefers typing to mouse interactions -* is reasonably comfortable using CLI apps +* Teaching Staff, either a Teaching Assistant or a Professor +* Teaches multiple classes simultaneously +* Has a need to manage the contacts of their students +* Requires to filter their students/contacts by their classes +* Prefers to filter and profile their students/contacts through other information -**Value proposition**: manage contacts faster than a typical mouse/GUI driven app +**Value proposition**: Customizing their focus to each student’s needs ### User stories Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` -| Priority | As a …​ | I want to …​ | So that I can…​ | -| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | user | add a new person | | -| `* * *` | user | delete a person | remove entries that I no longer need | -| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | -| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | -| `*` | user with many persons in the address book | sort persons by name | locate a person easily | +| Priority | As a …​ | I want to …​ | So that I can…​ | +|---------|--------------------|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------| +| `* * *` | Teaching Assistant | store all my student’s contacts in one place | I can easily contact whoever needs to be contacted. | +| `* * *` | Teaching Assistant | remove student contacts who dropped the module | my address book is updated for the current semester | +| `* * *` | Professor | store all my TAs’ contacts in one place | | +| `* * *` | Professor | view the availability of the TAs | I know who to reach out to should one be unavailable to teach due to medical reasons. | +| `* * *` | Professor | remove contacts of TAs from my address book when they are no longer a TA | my address book is updated for the current semester | +| `* * *` | New User | view the summary of all commands | | +| `* * *` | New User | go through a tutorial to get started. | | *{More to be added}* ### Use cases -(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) +(For all use cases below, the **System** is the `Teachers Address Book (TAB)` and the **Actor** is the `teaching assistant/professor)`, unless specified otherwise) **Use case: Delete a person** @@ -307,6 +308,44 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * 3a1. AddressBook shows an error message. Use case resumes at step 2. + +**Use case: Add a person** + +**MSS** + +1. User enters the command to add a particular person. +2. TAB shows that the command is successful and displays the added person. + + Use case ends. + +**Extensions** + +* 1a. The given student details are invalid. + * 1a1. TAB shows an error message. + + Use case resumes at step 1. + +**Use case: Edit a person’s details** + +**MSS** + +1. User enters the command to edit a particular person’s details. +2. TAB shows that the command is successful and displays the edited person. + + Use case ends. + +**Extensions** + +* 1a. The new student details are invalid. + * 1a1. TAB shows an error message. + + Use case resumes at step 1. + +* 1b. The given index is invalid. + * 1b1. TAB shows an error message. + + Use case resumes at step 1. + *{More to be added}* diff --git a/docs/_sass/minima/_base.scss b/docs/_sass/minima/_base.scss index 0d3f6e80ced..51e349f0b7d 100644 --- a/docs/_sass/minima/_base.scss +++ b/docs/_sass/minima/_base.scss @@ -288,7 +288,7 @@ table { text-align: center; } .site-header:before { - content: "AB-3"; + content: "Teachers Address Book (TAB)"; font-size: 32px; } } From a4c72b4ed1724f68b83470b9c6bc473dc53e67f3 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Wed, 28 Sep 2022 22:28:16 +0800 Subject: [PATCH 017/208] small naming changes --- docs/DeveloperGuide.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 75efd3fedb5..f4ed65ae07d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -291,9 +291,9 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli **MSS** 1. User requests to list persons -2. AddressBook shows a list of persons +2. TAB shows a list of persons 3. User requests to delete a specific person in the list -4. AddressBook deletes the person +4. TAB deletes the person Use case ends. @@ -305,7 +305,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * 3a. The given index is invalid. - * 3a1. AddressBook shows an error message. + * 3a1. TAB shows an error message. Use case resumes at step 2. From 1cf53832f73186bd572c470f4ad2ceb62c89b901 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Wed, 28 Sep 2022 22:32:54 +0800 Subject: [PATCH 018/208] Update site-wide settings --- docs/_config.yml | 4 ++-- docs/_sass/minima/_base.scss | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_config.yml b/docs/_config.yml index 6bd245d8f4e..093e66fdbda 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,4 +1,4 @@ -title: "AB-3" +title: "TAB" theme: minima header_pages: @@ -8,7 +8,7 @@ header_pages: markdown: kramdown -repository: "se-edu/addressbook-level3" +repository: "AY2223S1-CS2103T-T17-1/tp" github_icon: "images/github-icon.png" plugins: diff --git a/docs/_sass/minima/_base.scss b/docs/_sass/minima/_base.scss index 0d3f6e80ced..3bcf61a51ce 100644 --- a/docs/_sass/minima/_base.scss +++ b/docs/_sass/minima/_base.scss @@ -288,7 +288,7 @@ table { text-align: center; } .site-header:before { - content: "AB-3"; + content: "TAB"; font-size: 32px; } } From 6888d808613897ea37cc72e866fbaeb64a05e5c1 Mon Sep 17 00:00:00 2001 From: yellow-294 <77526609+yellow-294@users.noreply.github.com> Date: Fri, 30 Sep 2022 01:59:09 +0800 Subject: [PATCH 019/208] Update DeveloperGuide.md Update Non-Functional Requirements inside DeveloperGuide.md --- docs/DeveloperGuide.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 46eae8ee565..a25a1f27a56 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -312,9 +312,11 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli ### Non-Functional Requirements -1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. -2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. -3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. +1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. +2. Should be able to hold up to 1000 students or TAs without a noticeable sluggishness in performance for typical usage. +3. All user operations should complete within 2 seconds. +4. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. +5. Unauthorised users can only read data without modifying anything. *{More to be added}* From beebdf1ba7608424e34c79066f8c04fbb320dadd Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Fri, 30 Sep 2022 16:05:22 +0800 Subject: [PATCH 020/208] glossary update --- docs/DeveloperGuide.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 3f23c549c57..36c31cb585b 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -363,6 +363,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * **Mainstream OS**: Windows, Linux, Unix, OS-X * **Private contact detail**: A contact detail that is not meant to be shared with others +* **Authorised Users**: Professors and Teaching Assistants handling their respective modules -------------------------------------------------------------------------------------------------------------------- From 1db8245d796bc4e9f2fc1ac11d7df7c1954c7ee9 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Mon, 3 Oct 2022 21:16:52 +0800 Subject: [PATCH 021/208] add remark command --- .../address/logic/commands/EditCommand.java | 4 +- .../address/logic/commands/RemarkCommand.java | 92 ++++++++++++ .../logic/parser/AddCommandParser.java | 4 +- .../logic/parser/AddressBookParser.java | 4 + .../seedu/address/logic/parser/CliSyntax.java | 2 + .../logic/parser/RemarkCommandParser.java | 34 +++++ .../seedu/address/model/person/Person.java | 13 +- .../seedu/address/model/person/Remark.java | 40 ++++++ .../address/model/util/SampleDataUtil.java | 14 +- .../address/storage/JsonAdaptedPerson.java | 14 +- .../java/seedu/address/ui/PersonCard.java | 4 + src/main/resources/view/PersonListCard.fxml | 1 + .../duplicatePersonAddressBook.json | 4 +- .../typicalPersonsAddressBook.json | 7 + .../logic/commands/CommandTestUtil.java | 2 + .../logic/commands/RemarkCommandTest.java | 133 ++++++++++++++++++ .../storage/JsonAdaptedPersonTest.java | 24 ++-- .../seedu/address/testutil/PersonBuilder.java | 17 ++- .../address/testutil/TypicalPersons.java | 4 +- 19 files changed, 391 insertions(+), 26 deletions(-) create mode 100644 src/main/java/seedu/address/logic/commands/RemarkCommand.java create mode 100644 src/main/java/seedu/address/logic/parser/RemarkCommandParser.java create mode 100644 src/main/java/seedu/address/model/person/Remark.java create mode 100644 src/test/java/seedu/address/logic/commands/RemarkCommandTest.java diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 7e36114902f..82c88eb12cc 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -24,6 +24,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.person.Remark; import seedu.address.model.tag.Tag; /** @@ -97,9 +98,10 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone()); Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail()); Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress()); + Remark updatedRemark = personToEdit.getRemark(); Set updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags()); - return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags); + return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRemark, updatedTags); } @Override diff --git a/src/main/java/seedu/address/logic/commands/RemarkCommand.java b/src/main/java/seedu/address/logic/commands/RemarkCommand.java new file mode 100644 index 00000000000..4d6874853dd --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/RemarkCommand.java @@ -0,0 +1,92 @@ +package seedu.address.logic.commands; + +import seedu.address.commons.core.Messages; +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.exceptions.CommandException; + +import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; + +import seedu.address.model.Model; +import seedu.address.model.person.Person; +import seedu.address.model.person.Remark; + +import java.util.List; + +/** + * Changes the remark of an existing person in the address book. + */ +public class RemarkCommand extends Command{ + public static final String COMMAND_WORD = "remark"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + + ": Edits the remark of the person identified " + + "by the index number used in the last person listing. " + + "Existing remark will be overwritten by the input.\n" + + "Parameters: INDEX (must be a positive integer) " + + PREFIX_REMARK + "[REMARK]\n" + + "Example: " + COMMAND_WORD + " 1 " + + PREFIX_REMARK + "Likes to swim."; + public static final String MESSAGE_ADD_REMARK_SUCCESS = "Added remark to Person: %1$s"; + public static final String MESSAGE_DELETE_REMARK_SUCCESS = "Removed remark from Person: %1$s"; + + private final Index index; + private final Remark remark; + + /** + * @param index of the person in the filtered person list to edit the remark + * @param remark of the person to be updated to + */ + public RemarkCommand(Index index, Remark remark) { + requireAllNonNull(index, remark); + + this.index = index; + this.remark = remark; + } + + @Override + public CommandResult execute(Model model) throws CommandException { + List lastShownList = model.getFilteredPersonList(); + + if (index.getZeroBased() >= lastShownList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + } + + Person personToEdit = lastShownList.get(index.getZeroBased()); + Person editedPerson = new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(), + personToEdit.getAddress(), remark, personToEdit.getTags()); + + model.setPerson(personToEdit, editedPerson); + model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); + + return new CommandResult(generateSuccessMessage(editedPerson)); + } + + /** + * Generates a command execution success message based on whether the remark is added to or removed from + * {@code personToEdit}. + */ + private String generateSuccessMessage(Person personToEdit) { + String message = !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS; + return String.format(message, personToEdit); + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof RemarkCommand)) { + return false; + } + + // state check + RemarkCommand e = (RemarkCommand) other; + return index.equals(e.index) + && remark.equals(e.remark); + } +} diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index 3b8bfa035e8..a301131d772 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -17,6 +17,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.person.Remark; import seedu.address.model.tag.Tag; /** @@ -42,9 +43,10 @@ public AddCommand parse(String args) throws ParseException { Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); + Remark remark = new Remark(""); Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - Person person = new Person(name, phone, email, address, tagList); + Person person = new Person(name, phone, email, address, remark, tagList); return new AddCommand(person); } diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 1e466792b46..b650f13a6b9 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -15,6 +15,7 @@ import seedu.address.logic.commands.FindCommand; import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.ListCommand; +import seedu.address.logic.commands.RemarkCommand; import seedu.address.logic.parser.exceptions.ParseException; /** @@ -68,6 +69,9 @@ public Command parseCommand(String userInput) throws ParseException { case HelpCommand.COMMAND_WORD: return new HelpCommand(); + case RemarkCommand.COMMAND_WORD: + return new RemarkCommandParser().parse(arguments); + default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); } diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 75b1a9bf119..16669d93bb1 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -12,4 +12,6 @@ public class CliSyntax { public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); + public static final Prefix PREFIX_REMARK = new Prefix("r/"); + } diff --git a/src/main/java/seedu/address/logic/parser/RemarkCommandParser.java b/src/main/java/seedu/address/logic/parser/RemarkCommandParser.java new file mode 100644 index 00000000000..4ae052d4385 --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/RemarkCommandParser.java @@ -0,0 +1,34 @@ +package seedu.address.logic.parser; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK; + +import seedu.address.commons.core.index.Index; +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.logic.commands.RemarkCommand; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.person.Remark; + +public class RemarkCommandParser implements Parser { + /** + * Parses the given {@code String} of arguments in the context of the {@code RemarkCommand} + * and returns a {@code RemarkCommand} object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public RemarkCommand parse(String args) throws ParseException { + requireNonNull(args); + ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_REMARK); + + Index index; + try { + index = ParserUtil.parseIndex(argMultimap.getPreamble()); + } catch (IllegalValueException ive) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, RemarkCommand.MESSAGE_USAGE), ive); + } + + String remark = argMultimap.getValue(PREFIX_REMARK).orElse(""); + + return new RemarkCommand(index, new Remark(remark)); + } +} \ No newline at end of file diff --git a/src/main/java/seedu/address/model/person/Person.java b/src/main/java/seedu/address/model/person/Person.java index 8ff1d83fe89..42ca41076bd 100644 --- a/src/main/java/seedu/address/model/person/Person.java +++ b/src/main/java/seedu/address/model/person/Person.java @@ -22,17 +22,20 @@ public class Person { // Data fields private final Address address; + + private final Remark remark; private final Set tags = new HashSet<>(); /** * Every field must be present and not null. */ - public Person(Name name, Phone phone, Email email, Address address, Set tags) { - requireAllNonNull(name, phone, email, address, tags); + public Person(Name name, Phone phone, Email email, Address address, Remark remark, Set tags) { + requireAllNonNull(name, phone, email, address, tags, remark); this.name = name; this.phone = phone; this.email = email; this.address = address; + this.remark = remark; this.tags.addAll(tags); } @@ -52,6 +55,8 @@ public Address getAddress() { return address; } + public Remark getRemark() { return remark; } + /** * Returns an immutable tag set, which throws {@code UnsupportedOperationException} * if modification is attempted. @@ -110,7 +115,9 @@ public String toString() { .append("; Email: ") .append(getEmail()) .append("; Address: ") - .append(getAddress()); + .append(getAddress()) + .append(" Remark: ") + .append(getRemark()); Set tags = getTags(); if (!tags.isEmpty()) { diff --git a/src/main/java/seedu/address/model/person/Remark.java b/src/main/java/seedu/address/model/person/Remark.java new file mode 100644 index 00000000000..38e568e5449 --- /dev/null +++ b/src/main/java/seedu/address/model/person/Remark.java @@ -0,0 +1,40 @@ +package seedu.address.model.person; + +import static java.util.Objects.requireNonNull; + +/** + * Represents a Person's remark in the address book. + * Guarantees: immutable; is always valid + */ +public class Remark { + + public final String value; + + /** + * Constructs an {@code Address}. + * + * @param remark A valid address. + */ + public Remark(String remark) { + requireNonNull(remark); + value = remark; + } + + @Override + public String toString() { + return value; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof Remark // instanceof handles nulls + && value.equals(((Remark) other).value)); // state check + } + + @Override + public int hashCode() { + return value.hashCode(); + } + +} \ No newline at end of file diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index 1806da4facf..5dd3d5b44bd 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -11,31 +11,33 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.person.Remark; import seedu.address.model.tag.Tag; /** * Contains utility methods for populating {@code AddressBook} with sample data. */ public class SampleDataUtil { + public static final Remark EMPTY_REMARK = new Remark(""); public static Person[] getSamplePersons() { return new Person[] { new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), - new Address("Blk 30 Geylang Street 29, #06-40"), + new Address("Blk 30 Geylang Street 29, #06-40"), EMPTY_REMARK, getTagSet("friends")), new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), - new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), + new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), EMPTY_REMARK, getTagSet("colleagues", "friends")), new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), - new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), + new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), EMPTY_REMARK, getTagSet("neighbours")), new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), - new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), + new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), EMPTY_REMARK, getTagSet("family")), new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), - new Address("Blk 47 Tampines Street 20, #17-35"), + new Address("Blk 47 Tampines Street 20, #17-35"), EMPTY_REMARK, getTagSet("classmates")), new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), - new Address("Blk 45 Aljunied Street 85, #11-31"), + new Address("Blk 45 Aljunied Street 85, #11-31"), EMPTY_REMARK, getTagSet("colleagues")) }; } diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java index a6321cec2ea..f4e6ffee5e0 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java @@ -15,6 +15,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.person.Remark; import seedu.address.model.tag.Tag; /** @@ -28,6 +29,8 @@ class JsonAdaptedPerson { private final String phone; private final String email; private final String address; + + private final String remark; private final List tagged = new ArrayList<>(); /** @@ -36,11 +39,12 @@ class JsonAdaptedPerson { @JsonCreator public JsonAdaptedPerson(@JsonProperty("name") String name, @JsonProperty("phone") String phone, @JsonProperty("email") String email, @JsonProperty("address") String address, - @JsonProperty("tagged") List tagged) { + @JsonProperty("remark") String remark, @JsonProperty("tagged") List tagged) { this.name = name; this.phone = phone; this.email = email; this.address = address; + this.remark = remark; if (tagged != null) { this.tagged.addAll(tagged); } @@ -54,6 +58,7 @@ public JsonAdaptedPerson(Person source) { phone = source.getPhone().value; email = source.getEmail().value; address = source.getAddress().value; + remark = source.getRemark().value; tagged.addAll(source.getTags().stream() .map(JsonAdaptedTag::new) .collect(Collectors.toList())); @@ -102,8 +107,13 @@ public Person toModelType() throws IllegalValueException { } final Address modelAddress = new Address(address); + if (remark == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName())); + } + final Remark modelRemark = new Remark(remark); + final Set modelTags = new HashSet<>(personTags); - return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags); + return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRemark, modelTags); } } diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java index 7fc927bc5d9..7e128b0ced9 100644 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ b/src/main/java/seedu/address/ui/PersonCard.java @@ -41,6 +41,9 @@ public class PersonCard extends UiPart { @FXML private FlowPane tags; + @FXML + private Label remark; + /** * Creates a {@code PersonCode} with the given {@code Person} and index to display. */ @@ -51,6 +54,7 @@ public PersonCard(Person person, int displayedIndex) { name.setText(person.getName().fullName); phone.setText(person.getPhone().value); address.setText(person.getAddress().value); + remark.setText(person.getRemark().value); email.setText(person.getEmail().value); person.getTags().stream() .sorted(Comparator.comparing(tag -> tag.tagName)) diff --git a/src/main/resources/view/PersonListCard.fxml b/src/main/resources/view/PersonListCard.fxml index f08ea32ad55..d1a7eb614f8 100644 --- a/src/main/resources/view/PersonListCard.fxml +++ b/src/main/resources/view/PersonListCard.fxml @@ -31,6 +31,7 @@

      - *
    • - * if this method is called on a thread other than the JavaFX Application Thread. - *
    • - *
    • - * if this method is called during animation or layout processing. - *
    • - *
    • - * if this method is called on the primary stage. - *
    • - *
    • - * if {@code dialogStage} is already showing. - *
    • - *
    - */ - public void show() { - logger.fine("Showing help page about the application."); - getRoot().show(); - getRoot().centerOnScreen(); - } - - /** - * Returns true if the help window is currently being shown. - */ - public boolean isShowing() { - return getRoot().isShowing(); - } - - /** - * Hides the help window. - */ - public void hide() { - getRoot().hide(); - } - - /** - * Focuses on the help window. - */ - public void focus() { - getRoot().requestFocus(); - } - - /** - * Copies the URL to the user guide to the clipboard. - */ - @FXML - private void copyUrl() { - final Clipboard clipboard = Clipboard.getSystemClipboard(); - final ClipboardContent url = new ClipboardContent(); - url.putString(USERGUIDE_URL); - clipboard.setContent(url); - } -} diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index c3384e3291f..5db82117724 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -34,7 +34,6 @@ public class MainWindow extends UiPart { // Independent Ui parts residing in this Ui container private PersonListPanel personListPanel; private ResultDisplay resultDisplay; - private HelpWindow helpWindow; @FXML private StackPane commandBoxPlaceholder; @@ -65,8 +64,6 @@ public MainWindow(Stage primaryStage, Logic logic) { setWindowDefaultSize(logic.getGuiSettings()); setAccelerators(); - - helpWindow = new HelpWindow(); } public Stage getPrimaryStage() { @@ -137,19 +134,12 @@ private void setWindowDefaultSize(GuiSettings guiSettings) { } /** - * Opens the help window or focuses on it if it's already opened. + * Opens the help window in a new browser window */ @FXML public void handleHelp() { UrlLauncher helpController = new UrlLauncher(); helpController.launchWebPage(USERGUIDE_URL); - /* - if (!helpWindow.isShowing()) { - helpWindow.show(); - } else { - helpWindow.focus(); - } - */ } void show() { @@ -164,7 +154,6 @@ private void handleExit() { GuiSettings guiSettings = new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(), (int) primaryStage.getX(), (int) primaryStage.getY()); logic.setGuiSettings(guiSettings); - helpWindow.hide(); primaryStage.hide(); } diff --git a/src/main/resources/view/HelpWindow.css b/src/main/resources/view/HelpWindow.css deleted file mode 100644 index 17e8a8722cd..00000000000 --- a/src/main/resources/view/HelpWindow.css +++ /dev/null @@ -1,19 +0,0 @@ -#copyButton, #helpMessage { - -fx-text-fill: white; -} - -#copyButton { - -fx-background-color: dimgray; -} - -#copyButton:hover { - -fx-background-color: gray; -} - -#copyButton:armed { - -fx-background-color: darkgray; -} - -#helpMessageContainer { - -fx-background-color: derive(#1d1d1d, 20%); -} diff --git a/src/main/resources/view/HelpWindow.fxml b/src/main/resources/view/HelpWindow.fxml deleted file mode 100644 index 5dea0adef70..00000000000 --- a/src/main/resources/view/HelpWindow.fxml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 5efc5b0d7ef05bc4c2dd42c66bf705d636bd06cf Mon Sep 17 00:00:00 2001 From: vantemoon Date: Thu, 13 Oct 2022 02:31:50 +0800 Subject: [PATCH 043/208] Update UserGuide.md --- docs/UserGuide.md | 82 +++++++++++++++++++++++----- docs/images/Ui.png | Bin 103472 -> 103529 bytes docs/images/findAlexDavidResult.png | Bin 19640 -> 97527 bytes docs/images/helpMessage.png | Bin 8435 -> 0 bytes docs/images/userGuideWindow.png | Bin 0 -> 110731 bytes 5 files changed, 67 insertions(+), 15 deletions(-) delete mode 100644 docs/images/helpMessage.png create mode 100644 docs/images/userGuideWindow.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 8ca0dee9f00..390f2552e08 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -13,7 +13,7 @@ Teacher’s Address Book (TAB) is a **desktop app made for teachers for managing 1. Ensure you have Java `11` or above installed in your Computer. -1. Download the latest `TAB.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). +1. Download the latest `TAB.jar` from [here](https://github.com/AY2223S1-CS2103T-T17-1/tp/releases). 1. Copy the file to the folder you want to use as the _home folder_ for your TAB. @@ -25,7 +25,7 @@ Teacher’s Address Book (TAB) is a **desktop app made for teachers for managing * **`list`** : Lists all contacts. - * **`add`**`n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book. + * **`add`**`n/John Doe p/98765432 e/johnd@example.com pos/Student a/John street, block 123, #01-01 t/CS2103T-T17` : Adds a contact named `John Doe` to the Address Book. * **`delete`**`3` : Deletes the 3rd contact shown in the current list. @@ -50,7 +50,7 @@ Teacher’s Address Book (TAB) is a **desktop app made for teachers for managing e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. * Items with `…`​ after them can be used multiple times including zero times.
    - e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. + e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/CS2103T-T12`, `t/CS2103T-T12 t/CS2103T-15` etc. * Parameters can be in any order.
    e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. @@ -65,9 +65,9 @@ Teacher’s Address Book (TAB) is a **desktop app made for teachers for managing ### Viewing help : `help` -Shows a message explaining how to access the help page. +Launches the user guide in a browser window. -![help message](images/helpMessage.png) +![User Guide](images/userGuideWindow.png) Format: `help` @@ -76,15 +76,17 @@ Format: `help` Adds a person to TAB. -Format: `add n/NAME r/ROLE p/PHONE_NUMBER e/EMAIL c/CLASS [g/GRADE]...` +Format: `add n/NAME p/PHONE_NUMBER e/EMAIL pos/POSITION a/ADDRESS [t/MODULE-GROUP]`
    :bulb: **Tip:** A person can have any number of tags (including 0)
    +Adds a new contact with the provided details. Required fields include name, phone number, email, and position. Tags representing the module and tutorial group a person is associated with are optional and must be in the format of module-tutorial group. + Examples: -* `add n/John Doe r/Student p/98765432 e/johnd@example.com c/T12 g/A-` -* `add n/Betsy Crowe r/TA p/92498754 e/betsycrowe@example.com c/T11 T12 T13` +* `add n/Alex Yeoh p/87438807 e/alexyeoh@example.com pos/Student a/Blk 30 Geylang Street 29, #06-40 t/CS2103T-T17` +* `add n/Betsy Crowe p/92498754 e/betsycrowe@example.com pos/TA a/Blk 30 Lorong 3 Serangoon Gardens, #07-18` ### Listing all persons : `list` @@ -96,18 +98,64 @@ Format: `list` Edits an existing person in TAB. -Format: `edit INDEX [n/NAME] [r/ROLE] [p/PHONE] [e/EMAIL] [c/CLASS] [t/TAGS]` +Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [pos/POSITION] [t/TAGS]` -* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ +Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ * At least one of the optional fields must be provided. * Existing values will be updated to the input values. * When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person’s grade by typing `g/` without +* You can remove all the person’s tags by typing `t/` without specifying any tags after it. Examples: -* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. -* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. +* `edit 1 p/91234567 e/johndoe@example.com` edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. +* `edit 2 n/Betsy Crower t/` edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. + +### Editing the attendance of a student : `attendance` + +Edits the attendance of an existing student in TAB. + +Format: `attendance INDEX attendance/ATTENDANCE` + +Edits the attendance of the person (whose position must be student) at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ + +Examples: +* `attendance 1 attendance/10/13` edits the attendance of the 1st person to be `10/13`. + +### Editing the grade of a student : `grade` + +Edits the grade of an existing student in TAB. + +Format: `grade INDEX grade/GRADE` + +Edits the grade of the person (whose position must be student) at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ + +Examples: +* `grade 2 grade/68/80` edits the grade of the 2nd person to be `68/80`. + +### Editing the availability of a TA : `avail` + +Edits the availability of an existing TA in TAB. + +Format: `avail INDEX avail/AVAILABILITY` + +Edits the availability of the person (whose position must be TA) at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ + +Examples: +* `avail 1 avail/Available` edits the availability of the 1st person to be `Available`. + +### Editing the roles of a Professor : `roles` + +Edits the roles of an existing professor in TAB. + +Format: `roles INDEX roles/ROLE1, ROLE2,...` + +Edits the roles of the person (whose position must be professor) at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ +* Multiple roles may be added and must be separated by a comma. + +Examples: +* `roles 1 roles/Coordinator, Lecturer, Advisor` edits the roles of the 1st person to be `Coordinator, Lecturer, Advisor`. + ### Locating persons by name: `find` @@ -182,10 +230,14 @@ _Details coming soon ..._ Action | Format, Examples --------|------------------ -**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
    e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` +**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS pos/ POSITION [t/TAG]…​`
    e.g., `add n/Alex Yeoh p/87438807 e/alexyeoh@example.com pos/Student a/Blk 30 Geylang Street 29, #06-40 t/CS2103T-T17` **Clear** | `clear` **Delete** | `delete INDEX`
    e.g., `delete 3` -**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
    e.g.,`edit 2 n/James Lee e/jameslee@example.com` +**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [pos/POSITION] [a/ADDRESS] [t/TAG]…​`
    e.g.,`edit 2 n/James Lee e/jameslee@example.com` +**Attendance** | `attendance INDEX attendance/ATTENDANCE`
    e.g., `attendance 1 attendance/10/13` +**Grade** | `grade INDEX grade/GRADE`
    e.g., `grade 2 grade/68/80` +**Availability** | `avail INDEX avail/AVAILABILITY`
    e.g., `avail 1 avail/Available` +**Roles** | `roles INDEX roles/ROLE1, ROLE2,...`
    e.g., `roles 1 roles/Coordinator, Lecturer, Advisor` **Find** | `find KEYWORD [MORE_KEYWORDS]`
    e.g., `find James Jake` **List** | `list` **Help** | `help` diff --git a/docs/images/Ui.png b/docs/images/Ui.png index e428ea4e82f3a503ce57e4ab0ce03ebda2106a35..00ba7fe9f9de36c84d74dea6d815830a9ec3cc28 100644 GIT binary patch delta 28090 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 delta 27994 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Π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 VTX+(j!pyleuIs23{m(M+{{U7G=eYm? diff --git a/docs/images/findAlexDavidResult.png b/docs/images/findAlexDavidResult.png index 235da1c273ebc2117b862aee21de72a412008be7..973e533a5b70715974926a4fd0d15ca0668a4f62 100644 GIT binary patch literal 97527 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 diff --git a/docs/images/helpMessage.png b/docs/images/helpMessage.png deleted file mode 100644 index b1f70470137ec75b2bfe4d29458114d1aa75dbcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8435 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ÐxTGMs?~ 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

    4ShsZL{e7JS(Q>kEI>|~K?0vuA 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 literal 0 HcmV?d00001 From 475fd7b83959dd98685aeaddee354975d511d7f9 Mon Sep 17 00:00:00 2001 From: vantemoon Date: Thu, 13 Oct 2022 02:33:57 +0800 Subject: [PATCH 044/208] Fix cosmetic errors --- src/main/java/seedu/address/logic/commands/AddCommand.java | 3 +-- .../java/seedu/address/logic/commands/AvailabilityCommand.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java index 6d6b0e72fa4..dc55e196044 100644 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddCommand.java @@ -33,8 +33,7 @@ public class AddCommand extends Command { + PREFIX_EMAIL + "johnd@example.com " + PREFIX_POSITION + "Student " + PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 " - + PREFIX_TAG + "friends " - + PREFIX_TAG + "owesMoney"; + + PREFIX_TAG + "CS2103T-T17"; public static final String MESSAGE_SUCCESS = "New person added: %1$s"; public static final String MESSAGE_DUPLICATE_PERSON = "This person already exists in the address book"; diff --git a/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java b/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java index 7493452f8fe..ab2614dcaed 100644 --- a/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java +++ b/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java @@ -27,7 +27,7 @@ public class AvailabilityCommand extends Command { + "[AVAILABILITY]\n" + "Example: " + COMMAND_WORD + " 1 " + PREFIX_AVAILABILITY + "available."; - public static final String MESSAGE_PERSON_NOT_TA = "The person to edit is not a teaching assistant, there is no" + public static final String MESSAGE_PERSON_NOT_TA = "The person to edit is not a teaching assistant, there is no " + "availability to be edited."; public static final String MESSAGE_EDIT_AVAILABILITY_SUCCESS = "Edited availability to Teaching Assistant: %1$s"; From 1880a0cdb6317906c256083a79f9c794fda5ebf8 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Thu, 13 Oct 2022 23:29:34 +0800 Subject: [PATCH 045/208] Add Filter Command --- .../address/logic/commands/FilterCommand.java | 43 ++++++++++ .../logic/parser/AddressBookParser.java | 4 + .../logic/parser/FilterCommandParser.java | 29 +++++++ .../tag/TagContainsKeywordPredicate.java | 31 +++++++ .../logic/commands/FilterCommandTest.java | 81 +++++++++++++++++++ .../logic/parser/FilterCommandParserTest.java | 33 ++++++++ 6 files changed, 221 insertions(+) create mode 100644 src/main/java/seedu/address/logic/commands/FilterCommand.java create mode 100644 src/main/java/seedu/address/logic/parser/FilterCommandParser.java create mode 100644 src/main/java/seedu/address/model/tag/TagContainsKeywordPredicate.java create mode 100644 src/test/java/seedu/address/logic/commands/FilterCommandTest.java create mode 100644 src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java diff --git a/src/main/java/seedu/address/logic/commands/FilterCommand.java b/src/main/java/seedu/address/logic/commands/FilterCommand.java new file mode 100644 index 00000000000..ed87c240ba3 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/FilterCommand.java @@ -0,0 +1,43 @@ +package seedu.address.logic.commands; + +import static java.util.Objects.requireNonNull; + +import seedu.address.commons.core.Messages; +import seedu.address.model.Model; +import seedu.address.model.tag.TagContainsKeywordPredicate; + + +/** + * Finds and lists all persons in address book whose tag(s) contain the argument keyword. + * Keyword matching is case insensitive. + */ +public class FilterCommand extends Command { + + public static final String COMMAND_WORD = "filter"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Filters all persons whose tag(s) contain " + + "the specified keyword (case-insensitive) and displays them as a list with index numbers.\n" + + "Parameters: KEYWORD\n" + + "Example: " + COMMAND_WORD + " alice"; + + private final TagContainsKeywordPredicate predicate; + + public FilterCommand(TagContainsKeywordPredicate predicate) { + this.predicate = predicate; + } + + @Override + public CommandResult execute(Model model) { + requireNonNull(model); + model.updateFilteredPersonList(predicate); + return new CommandResult( + String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size())); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof FilterCommand // instanceof handles nulls + && predicate.equals(((FilterCommand) other).predicate)); // state check + } +} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 13b8334f4ed..e8747e5c39d 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -14,6 +14,7 @@ import seedu.address.logic.commands.DeleteCommand; import seedu.address.logic.commands.EditCommand; import seedu.address.logic.commands.ExitCommand; +import seedu.address.logic.commands.FilterCommand; import seedu.address.logic.commands.FindCommand; import seedu.address.logic.commands.GradeCommand; import seedu.address.logic.commands.HelpCommand; @@ -64,6 +65,9 @@ public Command parseCommand(String userInput) throws ParseException { case FindCommand.COMMAND_WORD: return new FindCommandParser().parse(arguments); + case FilterCommand.COMMAND_WORD: + return new FilterCommandParser().parse(arguments); + case ListCommand.COMMAND_WORD: return new ListCommand(); diff --git a/src/main/java/seedu/address/logic/parser/FilterCommandParser.java b/src/main/java/seedu/address/logic/parser/FilterCommandParser.java new file mode 100644 index 00000000000..510b88c52b7 --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/FilterCommandParser.java @@ -0,0 +1,29 @@ +package seedu.address.logic.parser; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; + +import seedu.address.logic.commands.FilterCommand; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.tag.TagContainsKeywordPredicate; + +/** + * Parses input arguments and creates a new FindCommand object + */ +public class FilterCommandParser implements Parser { + + /** + * Parses the given {@code String} of arguments in the context of the FindCommand + * and returns a FindCommand object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public FilterCommand parse(String args) throws ParseException { + String trimmedArgs = args.trim(); + if (trimmedArgs.isEmpty()) { + throw new ParseException( + String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE)); + } + + return new FilterCommand(new TagContainsKeywordPredicate(trimmedArgs)); + } + +} diff --git a/src/main/java/seedu/address/model/tag/TagContainsKeywordPredicate.java b/src/main/java/seedu/address/model/tag/TagContainsKeywordPredicate.java new file mode 100644 index 00000000000..71b80f562ae --- /dev/null +++ b/src/main/java/seedu/address/model/tag/TagContainsKeywordPredicate.java @@ -0,0 +1,31 @@ +package seedu.address.model.tag; + +import java.util.function.Predicate; + +import seedu.address.model.person.Person; + + +/** + * Tests that any of a {@code Person}'s {@code Tags} match any of the keywords given. + */ +public class TagContainsKeywordPredicate implements Predicate { + private final String keyword; + + public TagContainsKeywordPredicate(String keyword) { + this.keyword = keyword; + } + + @Override + public boolean test(Person person) { + return person.getTags().stream() + .anyMatch(tag -> tag.tagName.equals(keyword)); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof TagContainsKeywordPredicate // instanceof handles nulls + && keyword.equals(((TagContainsKeywordPredicate) other).keyword)); // state check + } + +} diff --git a/src/test/java/seedu/address/logic/commands/FilterCommandTest.java b/src/test/java/seedu/address/logic/commands/FilterCommandTest.java new file mode 100644 index 00000000000..9982b10fb37 --- /dev/null +++ b/src/test/java/seedu/address/logic/commands/FilterCommandTest.java @@ -0,0 +1,81 @@ +package seedu.address.logic.commands; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static seedu.address.commons.core.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW; +import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.address.testutil.TypicalPersons.BENSON; +import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; + +import java.util.Arrays; +import java.util.Collections; + +import org.junit.jupiter.api.Test; + +import seedu.address.model.Model; +import seedu.address.model.ModelManager; +import seedu.address.model.UserPrefs; +import seedu.address.model.tag.TagContainsKeywordPredicate; + +/** + * Contains integration tests (interaction with the Model) for {@code FilterCommand}. + */ +public class FilterCommandTest { + private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + + @Test + public void equals() { + TagContainsKeywordPredicate firstPredicate = + new TagContainsKeywordPredicate("first"); + TagContainsKeywordPredicate secondPredicate = + new TagContainsKeywordPredicate("second"); + + FilterCommand filterFirstCommand = new FilterCommand(firstPredicate); + FilterCommand filterSecondCommand = new FilterCommand(secondPredicate); + + // same object -> returns true + assertTrue(filterFirstCommand.equals(filterFirstCommand)); + + // same values -> returns true + FilterCommand filterFirstCommandCopy = new FilterCommand(firstPredicate); + assertTrue(filterFirstCommand.equals(filterFirstCommandCopy)); + + // different types -> returns false + assertFalse(filterFirstCommand.equals(1)); + + // null -> returns false + assertFalse(filterFirstCommand.equals(null)); + + // different tag -> returns false + assertFalse(filterFirstCommand.equals(filterSecondCommand)); + } + + @Test + public void execute_zeroKeywords_noPersonFound() { + String expectedMessage = String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0); + TagContainsKeywordPredicate predicate = preparePredicate(" "); + FilterCommand command = new FilterCommand(predicate); + expectedModel.updateFilteredPersonList(predicate); + assertCommandSuccess(command, model, expectedMessage, expectedModel); + assertEquals(Collections.emptyList(), model.getFilteredPersonList()); + } + + @Test + public void execute_multipleKeywords_multiplePersonsFound() { + String expectedMessage = String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1); + TagContainsKeywordPredicate predicate = preparePredicate("owesMoney"); + FilterCommand command = new FilterCommand(predicate); + expectedModel.updateFilteredPersonList(predicate); + assertCommandSuccess(command, model, expectedMessage, expectedModel); + assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList()); + } + + /** + * Parses {@code userInput} into a {@code TagContainsKeywordPredicate}. + */ + private TagContainsKeywordPredicate preparePredicate(String userInput) { + return new TagContainsKeywordPredicate(userInput); + } +} diff --git a/src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java b/src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java new file mode 100644 index 00000000000..8cc7f53ff9e --- /dev/null +++ b/src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java @@ -0,0 +1,33 @@ +package seedu.address.logic.parser; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; +import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; + +import org.junit.jupiter.api.Test; + +import seedu.address.logic.commands.FilterCommand; +import seedu.address.model.tag.TagContainsKeywordPredicate; + +public class FilterCommandParserTest { + + private FilterCommandParser parser = new FilterCommandParser(); + + @Test + public void parse_emptyArg_throwsParseException() { + assertParseFailure(parser, " ", String.format(MESSAGE_INVALID_COMMAND_FORMAT, + FilterCommand.MESSAGE_USAGE)); + } + + @Test + public void parse_validArgs_returnsFindCommand() { + // no leading and trailing whitespaces + FilterCommand expectedFilterCommand = + new FilterCommand(new TagContainsKeywordPredicate("Alice")); + assertParseSuccess(parser, "Alice", expectedFilterCommand); + + // multiple whitespaces between keywords + assertParseSuccess(parser, " \n Alice \n \t", expectedFilterCommand); + } + +} From 94d7f60e8ab5379870afe69d1f50e56195835fd6 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Thu, 13 Oct 2022 23:33:52 +0800 Subject: [PATCH 046/208] Edit minor bug in filter function --- .../seedu/address/model/tag/TagContainsKeywordPredicate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/tag/TagContainsKeywordPredicate.java b/src/main/java/seedu/address/model/tag/TagContainsKeywordPredicate.java index 71b80f562ae..9b8af330baa 100644 --- a/src/main/java/seedu/address/model/tag/TagContainsKeywordPredicate.java +++ b/src/main/java/seedu/address/model/tag/TagContainsKeywordPredicate.java @@ -18,7 +18,7 @@ public TagContainsKeywordPredicate(String keyword) { @Override public boolean test(Person person) { return person.getTags().stream() - .anyMatch(tag -> tag.tagName.equals(keyword)); + .anyMatch(tag -> tag.tagName.equalsIgnoreCase(keyword)); } @Override From e12e5fc6d146714aeb0563c7cedaf4b64a86e6c5 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Thu, 13 Oct 2022 23:37:16 +0800 Subject: [PATCH 047/208] Edit minor details in FilterCommandParser.java and FilterCommandParserTest.java --- .../seedu/address/logic/parser/FilterCommandParser.java | 6 +++--- .../seedu/address/logic/parser/FilterCommandParserTest.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/FilterCommandParser.java b/src/main/java/seedu/address/logic/parser/FilterCommandParser.java index 510b88c52b7..07c620c18a4 100644 --- a/src/main/java/seedu/address/logic/parser/FilterCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/FilterCommandParser.java @@ -7,13 +7,13 @@ import seedu.address.model.tag.TagContainsKeywordPredicate; /** - * Parses input arguments and creates a new FindCommand object + * Parses input arguments and creates a new FilterCommand object */ public class FilterCommandParser implements Parser { /** - * Parses the given {@code String} of arguments in the context of the FindCommand - * and returns a FindCommand object for execution. + * Parses the given {@code String} of arguments in the context of the FilterCommand + * and returns a FilterCommand object for execution. * @throws ParseException if the user input does not conform the expected format */ public FilterCommand parse(String args) throws ParseException { diff --git a/src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java b/src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java index 8cc7f53ff9e..fc9eac238a5 100644 --- a/src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java @@ -20,7 +20,7 @@ public void parse_emptyArg_throwsParseException() { } @Test - public void parse_validArgs_returnsFindCommand() { + public void parse_validArgs_returnsFilterCommand() { // no leading and trailing whitespaces FilterCommand expectedFilterCommand = new FilterCommand(new TagContainsKeywordPredicate("Alice")); From a7c9e9f8748c8ebf714ff0238f3127b866cc62b6 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Sat, 15 Oct 2022 19:18:33 +0800 Subject: [PATCH 048/208] add tab under file to handle new address book --- .../seedu/address/logic/commands/CommandResult.java | 10 ++++++++-- src/main/java/seedu/address/ui/MainWindow.java | 12 ++++++++++++ src/main/resources/view/MainWindow.fxml | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index 92f900b7916..c6b3e7c8abf 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -14,15 +14,19 @@ public class CommandResult { /** Help information should be shown to the user. */ private final boolean showHelp; + /** New Book should be created for the user. */ + private final boolean showNewBook; + /** The application should exit. */ private final boolean exit; /** * Constructs a {@code CommandResult} with the specified fields. */ - public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { + public CommandResult(String feedbackToUser, boolean showHelp, boolean showNewBook, boolean exit) { this.feedbackToUser = requireNonNull(feedbackToUser); this.showHelp = showHelp; + this.showNewBook = showNewBook; this.exit = exit; } @@ -31,7 +35,7 @@ public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { * and other fields set to their default value. */ public CommandResult(String feedbackToUser) { - this(feedbackToUser, false, false); + this(feedbackToUser, false, false, false); } public String getFeedbackToUser() { @@ -42,6 +46,8 @@ public boolean isShowHelp() { return showHelp; } + public boolean isNewBook() {return showNewBook; } + public boolean isExit() { return exit; } diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 5db82117724..000b294563d 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -146,6 +146,14 @@ void show() { primaryStage.show(); } + /** + * Creates a new address book + */ + @FXML + private void handleNewAddress() { + + } + /** * Closes the application. */ @@ -176,6 +184,10 @@ private CommandResult executeCommand(String commandText) throws CommandException handleHelp(); } + if (commandResult.isNewBook()) { + handleNewAddress(); + } + if (commandResult.isExit()) { handleExit(); } diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index a431648f6c0..ce46fce62c2 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -26,6 +26,7 @@

    +
    From cc7a40ba9c925defe8751d9ee02f752384b3c446 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Sat, 15 Oct 2022 19:21:08 +0800 Subject: [PATCH 049/208] bug fixes, add test output --- src/main/java/seedu/address/logic/commands/ExitCommand.java | 2 +- src/main/java/seedu/address/logic/commands/HelpCommand.java | 2 +- src/main/java/seedu/address/ui/MainWindow.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index 3dd85a8ba90..eb7560413f9 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -13,7 +13,7 @@ public class ExitCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true); } } diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java index bf824f91bd0..07d26e2a23c 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/address/logic/commands/HelpCommand.java @@ -16,6 +16,6 @@ public class HelpCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, true, false); + return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false); } } diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 000b294563d..b84c456fc22 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -151,7 +151,7 @@ void show() { */ @FXML private void handleNewAddress() { - + System.out.println("New book created"); } /** From 0c5dc232f0221af109f00ee69eeb5f5892788ee0 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Sun, 16 Oct 2022 14:17:36 +0800 Subject: [PATCH 050/208] add 'new' keyword to create a new file --- .../logic/commands/NewBookCommand.java | 19 +++++++++++++++++++ .../logic/parser/AddressBookParser.java | 4 ++++ .../java/seedu/address/ui/MainWindow.java | 4 ++-- src/main/resources/view/MainWindow.fxml | 2 +- 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 src/main/java/seedu/address/logic/commands/NewBookCommand.java diff --git a/src/main/java/seedu/address/logic/commands/NewBookCommand.java b/src/main/java/seedu/address/logic/commands/NewBookCommand.java new file mode 100644 index 00000000000..8750976948d --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/NewBookCommand.java @@ -0,0 +1,19 @@ +package seedu.address.logic.commands; + +import seedu.address.model.Model; + +/** + * Terminates the program. + */ +public class NewBookCommand extends Command { + + public static final String COMMAND_WORD = "new"; + + public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT = "Creating New Address Book as requested ..."; + + @Override + public CommandResult execute(Model model) { + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true, false); + } + +} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 13b8334f4ed..997014fca56 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -18,6 +18,7 @@ import seedu.address.logic.commands.GradeCommand; import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.ListCommand; +import seedu.address.logic.commands.NewBookCommand; import seedu.address.logic.commands.RemarkCommand; import seedu.address.logic.commands.RolesCommand; import seedu.address.logic.parser.exceptions.ParseException; @@ -67,6 +68,9 @@ public Command parseCommand(String userInput) throws ParseException { case ListCommand.COMMAND_WORD: return new ListCommand(); + case NewBookCommand.COMMAND_WORD: + return new NewBookCommand(); + case ExitCommand.COMMAND_WORD: return new ExitCommand(); diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index b84c456fc22..94f7b4f4d2a 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -150,7 +150,7 @@ void show() { * Creates a new address book */ @FXML - private void handleNewAddress() { + private void handleNewBook() { System.out.println("New book created"); } @@ -185,7 +185,7 @@ private CommandResult executeCommand(String commandText) throws CommandException } if (commandResult.isNewBook()) { - handleNewAddress(); + handleNewBook(); } if (commandResult.isExit()) { diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index ce46fce62c2..49473065c18 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -26,7 +26,7 @@ - + From 15578c2ff9e227a6042cff643f73ba60597530af Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Sun, 16 Oct 2022 20:04:32 +0800 Subject: [PATCH 051/208] add storing new address book information in JSON file --- .../seedu/address/commons/util/FileUtil.java | 1 + src/main/java/seedu/address/logic/Logic.java | 5 +++ .../seedu/address/logic/LogicManager.java | 5 +++ src/main/java/seedu/address/model/Model.java | 14 ++++++- .../seedu/address/model/ModelManager.java | 16 ++++++++ .../address/model/ReadOnlyUserPrefs.java | 2 + .../java/seedu/address/model/UserPrefs.java | 39 ++++++++++++++++++- .../java/seedu/address/ui/MainWindow.java | 36 ++++++++++++++++- src/main/resources/view/MainWindow.fxml | 1 + 9 files changed, 115 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/address/commons/util/FileUtil.java b/src/main/java/seedu/address/commons/util/FileUtil.java index b1e2767cdd9..e655217bac6 100644 --- a/src/main/java/seedu/address/commons/util/FileUtil.java +++ b/src/main/java/seedu/address/commons/util/FileUtil.java @@ -77,6 +77,7 @@ public static String readFromFile(Path file) throws IOException { * Will create the file if it does not exist yet. */ public static void writeToFile(Path file, String content) throws IOException { + System.out.println("file saved to: " + file); Files.write(file, content.getBytes(CHARSET)); } diff --git a/src/main/java/seedu/address/logic/Logic.java b/src/main/java/seedu/address/logic/Logic.java index 92cd8fa605a..a6ce6ec8306 100644 --- a/src/main/java/seedu/address/logic/Logic.java +++ b/src/main/java/seedu/address/logic/Logic.java @@ -47,4 +47,9 @@ public interface Logic { * Set the user prefs' GUI settings. */ void setGuiSettings(GuiSettings guiSettings); + + /** + * Set the user prefs' Stored address book array setting. + */ + void setAllAddressBookFilePath(Path[] updatedPaths); } diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index 9d9c6d15bdc..c1643e56dfc 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -78,4 +78,9 @@ public GuiSettings getGuiSettings() { public void setGuiSettings(GuiSettings guiSettings) { model.setGuiSettings(guiSettings); } + + @Override + public void setAllAddressBookFilePath(Path[] updatedPaths) { + model.setAllAddressBookFilePath(updatedPaths); + } } diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index d54df471c1f..dd1f65ffd42 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -7,6 +7,8 @@ import seedu.address.commons.core.GuiSettings; import seedu.address.model.person.Person; +import static java.util.Objects.requireNonNull; + /** * The API of the Model component. */ @@ -44,13 +46,21 @@ public interface Model { */ void setAddressBookFilePath(Path addressBookFilePath); + /** Returns the AddressBook */ + ReadOnlyAddressBook getAddressBook(); + /** * Replaces address book data with the data in {@code addressBook}. */ void setAddressBook(ReadOnlyAddressBook addressBook); - /** Returns the AddressBook */ - ReadOnlyAddressBook getAddressBook(); + /** Returns all address book's paths*/ + Path[] getAllAddressBookFilePath(); + + /** + * Replaces all address book data with the data in {@code addressBook}. + */ + void setAllAddressBookFilePath(Path[] updatedPaths); /** * Returns true if a person with the same identity as {@code person} exists in the address book. diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 86c1df298d7..86fc14726b7 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -3,7 +3,9 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import java.io.IOException; import java.nio.file.Path; +import java.util.List; import java.util.function.Predicate; import java.util.logging.Logger; @@ -11,7 +13,10 @@ import javafx.collections.transformation.FilteredList; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; +import seedu.address.commons.util.StringUtil; import seedu.address.model.person.Person; +import seedu.address.storage.JsonUserPrefsStorage; +import seedu.address.storage.UserPrefsStorage; /** * Represents the in-memory model of the address book data. @@ -75,6 +80,17 @@ public void setAddressBookFilePath(Path addressBookFilePath) { userPrefs.setAddressBookFilePath(addressBookFilePath); } + @Override + public Path[] getAllAddressBookFilePath() { + return userPrefs.getAllAddressBookFilePath(); + } + + @Override + public void setAllAddressBookFilePath(Path[] updatedPaths) { + userPrefs.setAllAddressBookFilePath(updatedPaths); + } + + //=========== AddressBook ================================================================================ @Override diff --git a/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java b/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java index befd58a4c73..74c70823965 100644 --- a/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java +++ b/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java @@ -13,4 +13,6 @@ public interface ReadOnlyUserPrefs { Path getAddressBookFilePath(); + Path[] getAllAddressBookFilePath(); + } diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 25a5fd6eab9..a7055249e4b 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -2,11 +2,18 @@ import static java.util.Objects.requireNonNull; +import java.lang.reflect.Array; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; +import java.util.Optional; +import seedu.address.commons.core.Config; import seedu.address.commons.core.GuiSettings; +import seedu.address.commons.exceptions.DataConversionException; +import seedu.address.storage.JsonUserPrefsStorage; /** * Represents User's preferences. @@ -14,12 +21,17 @@ public class UserPrefs implements ReadOnlyUserPrefs { private GuiSettings guiSettings = new GuiSettings(); + private static final String DEFAULT_ADDRESS_BOOK_NAME = "addressbook"; private Path addressBookFilePath = Paths.get("data" , "addressbook.json"); + private static final int MAX_ADDRESS_BOOK_LIMIT = 5; + private ArrayList allAddressBookFilePath = new ArrayList(); /** * Creates a {@code UserPrefs} with default values. */ - public UserPrefs() {} + public UserPrefs() { + allAddressBookFilePath.add(addressBookFilePath); + } /** * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}. @@ -36,6 +48,7 @@ public void resetData(ReadOnlyUserPrefs newUserPrefs) { requireNonNull(newUserPrefs); setGuiSettings(newUserPrefs.getGuiSettings()); setAddressBookFilePath(newUserPrefs.getAddressBookFilePath()); + setAllAddressBookFilePath(newUserPrefs.getAllAddressBookFilePath()); } public GuiSettings getGuiSettings() { @@ -56,6 +69,30 @@ public void setAddressBookFilePath(Path addressBookFilePath) { this.addressBookFilePath = addressBookFilePath; } + public Path[] getAllAddressBookFilePath() { + Path[] asdf = allAddressBookFilePath.toArray(new Path[allAddressBookFilePath.size()]); + for (Path a : asdf) { + System.out.println(a); + } + return allAddressBookFilePath.toArray(new Path[allAddressBookFilePath.size()]); + } + + public void setAllAddressBookFilePath(Path[] allAddressBookFilePath) { + requireNonNull(allAddressBookFilePath); + this.allAddressBookFilePath = new ArrayList<>(List.of(allAddressBookFilePath)); + } + + public boolean addAddressBook() { + if (allAddressBookFilePath.size() == MAX_ADDRESS_BOOK_LIMIT) { + return false; + } else { + String newBookName = DEFAULT_ADDRESS_BOOK_NAME + allAddressBookFilePath.size() + ".json"; + Path newBook = Paths.get("data" , newBookName); + allAddressBookFilePath.add(newBook); + return true; + } + } + @Override public boolean equals(Object other) { if (other == this) { diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 94f7b4f4d2a..a2c7c1e6ac1 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -1,5 +1,8 @@ package seedu.address.ui; +import java.io.IOException; +import java.util.List; +import java.util.Optional; import java.util.logging.Logger; import javafx.event.ActionEvent; @@ -10,12 +13,18 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.StackPane; import javafx.stage.Stage; +import seedu.address.commons.core.Config; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; +import seedu.address.commons.exceptions.DataConversionException; +import seedu.address.commons.util.StringUtil; import seedu.address.logic.Logic; import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.UserPrefs; +import seedu.address.storage.JsonUserPrefsStorage; +import seedu.address.storage.UserPrefsStorage; /** * The Main Window. Provides the basic application layout containing @@ -151,7 +160,32 @@ void show() { */ @FXML private void handleNewBook() { - System.out.println("New book created"); + Config config = new Config(); + JsonUserPrefsStorage userPreferences = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); + UserPrefs initializedPrefs; + try { + Optional prefsOptional = userPreferences.readUserPrefs(); + initializedPrefs = prefsOptional.orElse(new UserPrefs()); + } catch (DataConversionException e) { + logger.warning("UserPrefs file at " + userPreferences + " is not in the correct format. " + + "Using default user prefs"); + initializedPrefs = new UserPrefs(); + } + if (!initializedPrefs.addAddressBook()) { + logger.warning("Maximum amount of address book created"); + resultDisplay.setFeedbackToUser("Maximum amount of address book created"); + } else { + //Update prefs file in case it was missing to begin with or there are new/unused fields + try { + System.out.println(config.getUserPrefsFilePath()); + logic.setAllAddressBookFilePath(initializedPrefs.getAllAddressBookFilePath()); + UserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); + userPrefsStorage.saveUserPrefs(initializedPrefs); + } catch (IOException e) { + logger.warning("Failed to save preference file : " + StringUtil.getDetails(e)); + } + } + System.out.println(List.of(initializedPrefs.getAllAddressBookFilePath())); } /** diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index 49473065c18..6aa08f776fe 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -27,6 +27,7 @@ + From 0d39f86dd74b9ecbe90f7f634ee4a50dd5b21814 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Sun, 16 Oct 2022 21:05:56 +0800 Subject: [PATCH 052/208] add creating new file --- src/main/java/seedu/address/MainApp.java | 4 +++ .../seedu/address/commons/util/FileUtil.java | 1 - src/main/java/seedu/address/logic/Logic.java | 6 ++++ .../seedu/address/logic/LogicManager.java | 19 ++++++++++ src/main/java/seedu/address/model/Model.java | 5 +++ .../seedu/address/model/ModelManager.java | 9 ++++- .../java/seedu/address/model/UserPrefs.java | 13 ++++--- .../java/seedu/address/ui/MainWindow.java | 35 +++---------------- src/main/resources/view/MainWindow.fxml | 1 - 9 files changed, 54 insertions(+), 39 deletions(-) diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index 4133aaa0151..2766ae00794 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.nio.file.Path; +import java.util.Arrays; import java.util.Optional; import java.util.logging.Logger; @@ -146,6 +147,9 @@ protected UserPrefs initPrefs(UserPrefsStorage storage) { try { Optional prefsOptional = storage.readUserPrefs(); initializedPrefs = prefsOptional.orElse(new UserPrefs()); + if (initializedPrefs.getAllAddressBookFilePath().length == 0) { + initializedPrefs.addAddressBook(); + } } catch (DataConversionException e) { logger.warning("UserPrefs file at " + prefsFilePath + " is not in the correct format. " + "Using default user prefs"); diff --git a/src/main/java/seedu/address/commons/util/FileUtil.java b/src/main/java/seedu/address/commons/util/FileUtil.java index e655217bac6..b1e2767cdd9 100644 --- a/src/main/java/seedu/address/commons/util/FileUtil.java +++ b/src/main/java/seedu/address/commons/util/FileUtil.java @@ -77,7 +77,6 @@ public static String readFromFile(Path file) throws IOException { * Will create the file if it does not exist yet. */ public static void writeToFile(Path file, String content) throws IOException { - System.out.println("file saved to: " + file); Files.write(file, content.getBytes(CHARSET)); } diff --git a/src/main/java/seedu/address/logic/Logic.java b/src/main/java/seedu/address/logic/Logic.java index a6ce6ec8306..3c4882673e3 100644 --- a/src/main/java/seedu/address/logic/Logic.java +++ b/src/main/java/seedu/address/logic/Logic.java @@ -1,5 +1,6 @@ package seedu.address.logic; +import java.io.IOException; import java.nio.file.Path; import javafx.collections.ObservableList; @@ -52,4 +53,9 @@ public interface Logic { * Set the user prefs' Stored address book array setting. */ void setAllAddressBookFilePath(Path[] updatedPaths); + + /** + * Add and create a new address book + */ + boolean addAddressBook() throws IOException; } diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index c1643e56dfc..ebe3295065f 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -1,5 +1,6 @@ package seedu.address.logic; +import java.io.FileWriter; import java.io.IOException; import java.nio.file.Path; import java.util.logging.Logger; @@ -83,4 +84,22 @@ public void setGuiSettings(GuiSettings guiSettings) { public void setAllAddressBookFilePath(Path[] updatedPaths) { model.setAllAddressBookFilePath(updatedPaths); } + + @Override + public boolean addAddressBook() throws IOException { + boolean result = model.addAddressBook(); + if (result) { + Path[] allBooks = model.getAllAddressBookFilePath(); + Path latestBook = allBooks[allBooks.length - 1]; + try { + FileWriter file = new FileWriter(latestBook.toFile()); + file.close(); + } catch (IOException e) { + logger.warning("Error creating file" + latestBook); + throw e; + } + + } + return result; + } } diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index dd1f65ffd42..332a3c67cec 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -62,6 +62,11 @@ public interface Model { */ void setAllAddressBookFilePath(Path[] updatedPaths); + /** + * Creates a new Address Book + */ + boolean addAddressBook(); + /** * Returns true if a person with the same identity as {@code person} exists in the address book. */ diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 86fc14726b7..eed1374ed70 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -89,7 +89,14 @@ public Path[] getAllAddressBookFilePath() { public void setAllAddressBookFilePath(Path[] updatedPaths) { userPrefs.setAllAddressBookFilePath(updatedPaths); } - + @Override + public boolean addAddressBook() { + if (!userPrefs.addAddressBook()) { + logger.warning("Maximum amount of address book created"); + return false; + } + return true; + } //=========== AddressBook ================================================================================ diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index a7055249e4b..632c0c375f0 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -70,10 +70,6 @@ public void setAddressBookFilePath(Path addressBookFilePath) { } public Path[] getAllAddressBookFilePath() { - Path[] asdf = allAddressBookFilePath.toArray(new Path[allAddressBookFilePath.size()]); - for (Path a : asdf) { - System.out.println(a); - } return allAddressBookFilePath.toArray(new Path[allAddressBookFilePath.size()]); } @@ -86,9 +82,16 @@ public boolean addAddressBook() { if (allAddressBookFilePath.size() == MAX_ADDRESS_BOOK_LIMIT) { return false; } else { - String newBookName = DEFAULT_ADDRESS_BOOK_NAME + allAddressBookFilePath.size() + ".json"; + String newBookName; + if (allAddressBookFilePath.size() != 0) { + newBookName = DEFAULT_ADDRESS_BOOK_NAME + allAddressBookFilePath.size() + ".json"; + } else { + newBookName = DEFAULT_ADDRESS_BOOK_NAME + ".json"; + } + Path newBook = Paths.get("data" , newBookName); allAddressBookFilePath.add(newBook); + System.out.println(allAddressBookFilePath); return true; } } diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index a2c7c1e6ac1..b3cb6ffebae 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -1,8 +1,6 @@ package seedu.address.ui; import java.io.IOException; -import java.util.List; -import java.util.Optional; import java.util.logging.Logger; import javafx.event.ActionEvent; @@ -13,18 +11,12 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.StackPane; import javafx.stage.Stage; -import seedu.address.commons.core.Config; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.commons.util.StringUtil; import seedu.address.logic.Logic; import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.UserPrefs; -import seedu.address.storage.JsonUserPrefsStorage; -import seedu.address.storage.UserPrefsStorage; /** * The Main Window. Provides the basic application layout containing @@ -160,32 +152,13 @@ void show() { */ @FXML private void handleNewBook() { - Config config = new Config(); - JsonUserPrefsStorage userPreferences = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); - UserPrefs initializedPrefs; try { - Optional prefsOptional = userPreferences.readUserPrefs(); - initializedPrefs = prefsOptional.orElse(new UserPrefs()); - } catch (DataConversionException e) { - logger.warning("UserPrefs file at " + userPreferences + " is not in the correct format. " - + "Using default user prefs"); - initializedPrefs = new UserPrefs(); - } - if (!initializedPrefs.addAddressBook()) { - logger.warning("Maximum amount of address book created"); - resultDisplay.setFeedbackToUser("Maximum amount of address book created"); - } else { - //Update prefs file in case it was missing to begin with or there are new/unused fields - try { - System.out.println(config.getUserPrefsFilePath()); - logic.setAllAddressBookFilePath(initializedPrefs.getAllAddressBookFilePath()); - UserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); - userPrefsStorage.saveUserPrefs(initializedPrefs); - } catch (IOException e) { - logger.warning("Failed to save preference file : " + StringUtil.getDetails(e)); + if (!logic.addAddressBook()) { + resultDisplay.setFeedbackToUser("Maximum amount of address book created"); } + } catch (IOException e) { + resultDisplay.setFeedbackToUser("Sorry! Error creating File"); } - System.out.println(List.of(initializedPrefs.getAllAddressBookFilePath())); } /** diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index 6aa08f776fe..49473065c18 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -27,7 +27,6 @@ - From 49776085cada9600939d8ae6e19e82fa571e21a1 Mon Sep 17 00:00:00 2001 From: Markus Wee <77526609+yellow-294@users.noreply.github.com> Date: Mon, 17 Oct 2022 21:00:02 +0800 Subject: [PATCH 053/208] Add Assignments class and AddAssignmentsCommand --- .../logic/commands/AddAssignmentsCommand.java | 90 +++++++++++++++ .../parser/AddAssignmentsCommandParser.java | 31 ++++++ .../logic/parser/AddressBookParser.java | 4 + .../seedu/address/logic/parser/CliSyntax.java | 1 + .../address/model/person/Assignment.java | 93 ++++++++++++++++ .../model/person/position/Student.java | 104 ++++++++++++++++-- 6 files changed, 315 insertions(+), 8 deletions(-) create mode 100644 src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java create mode 100644 src/main/java/seedu/address/logic/parser/AddAssignmentsCommandParser.java create mode 100644 src/main/java/seedu/address/model/person/Assignment.java diff --git a/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java b/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java new file mode 100644 index 00000000000..5481148b464 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java @@ -0,0 +1,90 @@ +package seedu.address.logic.commands; + +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; + +import java.util.List; + +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; +import seedu.address.model.person.Person; +import seedu.address.model.person.position.Student; + +/** + * Changes the grade of an existing student in the address book. + */ +public class AddAssignmentsCommand extends Command { + public static final String COMMAND_WORD = "assignments"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + + ": adds assignments. Format: [name] w/[weightage]"; + + public static final String MESSAGE_ADD_ASSIGNMENTS_SUCCESS = "Added Assignments to all students"; + + private final String assignments; + + /** + * @param assignments of the student to be updated to + */ + public AddAssignmentsCommand(String assignments) { + requireAllNonNull(assignments); + + this.assignments = assignments; + } + + /** + * Executes the command and returns the result message. + * + * @param model {@code Model} which the command should operate on. + * @return feedback message of the operation result for display + * @throws CommandException If an error occurs during command execution. + */ + @Override + public CommandResult execute(Model model) throws CommandException { + List lastShownList = model.getFilteredPersonList(); + int numOfPeople = lastShownList.size(); + + for (int i = 0; i < numOfPeople; i++) { + + Person personToEdit = lastShownList.get(i); + if ((personToEdit.getPosition() instanceof Student)) { + Student currPosition = (Student) personToEdit.getPosition(); + currPosition.setAssignments(assignments); + Person editedPerson = personToEdit; + + model.setPerson(personToEdit, editedPerson); + model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); + } + + } + + return new CommandResult(generateSuccessMessage()); + } + + /** + * Generates a command execution success message based on whether the availability is edited for + * {@code personToEdit}. + */ + private String generateSuccessMessage() { + return MESSAGE_ADD_ASSIGNMENTS_SUCCESS; + } + + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof AvailabilityCommand)) { + return false; + } + + // state check + AddAssignmentsCommand e = (AddAssignmentsCommand) other; + return assignments.equals(e.assignments); + } + +} diff --git a/src/main/java/seedu/address/logic/parser/AddAssignmentsCommandParser.java b/src/main/java/seedu/address/logic/parser/AddAssignmentsCommandParser.java new file mode 100644 index 00000000000..d7fd2ef0c7e --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/AddAssignmentsCommandParser.java @@ -0,0 +1,31 @@ +package seedu.address.logic.parser; + +import static java.util.Objects.requireNonNull; +import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENTS; + +import seedu.address.logic.commands.AddAssignmentsCommand; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.person.position.Student; + +/** + * Parses input arguments and creates a new AvailabilityCommand object + */ +public class AddAssignmentsCommandParser implements Parser { + /** + * Parses the given {@code String} of arguments in the context of the {@code AvailabilityCommand} + * and returns a {@code AvailabilityCommand} object for execution. + * + * @throws ParseException if the user input does not conform the expected format + */ + public AddAssignmentsCommand parse(String args) throws ParseException { + requireNonNull(args); + ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_ASSIGNMENTS); + + String assignments = argMultimap.getValue(PREFIX_ASSIGNMENTS).orElse(""); + if (!Student.isValidAssignments(assignments)) { + throw new ParseException(Student.ASSIGNMENT_CONSTRAINTS); + } + + return new AddAssignmentsCommand(assignments); + } +} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 13b8334f4ed..763422282e9 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -6,6 +6,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import seedu.address.logic.commands.AddAssignmentsCommand; import seedu.address.logic.commands.AddCommand; import seedu.address.logic.commands.AttendanceCommand; import seedu.address.logic.commands.AvailabilityCommand; @@ -87,6 +88,9 @@ public Command parseCommand(String userInput) throws ParseException { case RolesCommand.COMMAND_WORD: return new RolesCommandParser().parse(arguments); + + case AddAssignmentsCommand.COMMAND_WORD: + return new AddAssignmentsCommandParser().parse(arguments); default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); } diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 5efdac939be..70b620541b0 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -17,5 +17,6 @@ public class CliSyntax { public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); public static final Prefix PREFIX_REMARK = new Prefix("r/"); + public static final Prefix PREFIX_ASSIGNMENTS = new Prefix("assignments/"); } diff --git a/src/main/java/seedu/address/model/person/Assignment.java b/src/main/java/seedu/address/model/person/Assignment.java new file mode 100644 index 00000000000..75cad404a28 --- /dev/null +++ b/src/main/java/seedu/address/model/person/Assignment.java @@ -0,0 +1,93 @@ +package seedu.address.model.person; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; + +/** + * Represents an Assignment object that encapsulates the + * Assignment's name, grade and weightage + */ +public class Assignment { + + public static final String GRADE_VALIDATION_REGEX = "\\d{1,5}" + "/" + "\\d{1,5}"; + + public static final String WEIGHTAGE_VALIDATION_REGEX = "^(100|[1-9]?[0-9])$"; + + public static final String GRADE_CONSTRAINTS = + "Grade should be in the format [number]/[number], where the first number is greater " + + "or equal to the second number (max 99999)."; + + public static final String WEIGHTAGE_CONSTRAINTS = + "Weightage should be in terms of percentages, i.e. 0 - 100"; + + private final String name; + private final String grade; + private final String weightage; + + /** + * Constructs an {@code Assignment}. + * + * @param name An assignment name. + * @param weightage A valid weightage. + */ + + public Assignment(String name, String weightage) { + requireNonNull(name); + requireNonNull(weightage); + checkArgument(isValidWeightage(weightage), WEIGHTAGE_CONSTRAINTS); + this.name = name; + this.grade = "0/0"; + this.weightage = weightage; + } + + /** + * Constructs an {@code Assignment}. + * + * @param name An assignment name. + * @param grade A valid grade. + * @param weightage A valid weightage. + */ + public Assignment(String name, String grade, String weightage) { + requireNonNull(name); + requireNonNull(grade); + requireNonNull(weightage); + checkArgument(isValidGrade(grade), GRADE_CONSTRAINTS); + checkArgument(isValidWeightage(weightage), WEIGHTAGE_CONSTRAINTS); + this.name = name; + this.grade = grade; + this.weightage = weightage; + } + /** + * Returns if a given string is a valid grade. + */ + public static boolean isValidGrade(String test) { + return test.matches(GRADE_VALIDATION_REGEX); + } + + /** + * Returns if a given string is a valid weightage. + */ + public static boolean isValidWeightage(String test) { + return test.matches(WEIGHTAGE_VALIDATION_REGEX); + } + + @Override + public String toString() { + return "(" + name + " Score: " + grade + " Weightage: " + weightage + "%" + ")"; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof Assignment // instanceof handles nulls + && name.equals(((Assignment) other).name)); // state check + } + + @Override + public int hashCode() { + return toString().hashCode(); + } + + + +} diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index 314ade48fee..62b038db6ea 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -2,6 +2,10 @@ import static java.util.Objects.requireNonNull; +import java.util.ArrayList; + +import seedu.address.model.person.Assignment; + /** * Represents the Student position in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPosition(String)} @@ -18,12 +22,17 @@ public class Student extends Position { "Grade should be in the format [number]/[number], where the first number is greater " + "or equal to the second number (max 99999)."; + public static final String ASSIGNMENT_CONSTRAINTS = + "Incorrect Assignments"; + public static final String GRADE_VALIDATION_REGEX = "\\d{1,5}" + "/" + "\\d{1,5}"; private String attendance; private String grade; + private ArrayList assignmentsList; + /** * Creates a student and initialises their attendance to 0/0. */ @@ -31,6 +40,8 @@ public Student() { super("Student"); this.attendance = "0/0"; this.grade = "0/0"; + this.assignmentsList = new ArrayList<>(); + } public void setAttendance(String attendance) { @@ -50,17 +61,42 @@ public static boolean isValidAttendance(String test) { } } + /** + * Returns true if a given string is a valid string of Assignments + */ + public static boolean isValidAssignments(String test) { + String[] splitStr = test.split(", "); + int len = splitStr.length; + int totalWeightage = 0; + + for (int i = 0; i < len; i++) { + String[] weightageStr = splitStr[i].split("w/"); + if (weightageStr.length != 2) { + return false; + } + int weightage = Integer.parseInt(weightageStr[1]); + if (weightage < 0) { + return false; + } + totalWeightage += weightage; + } + + return totalWeightage == 100; + } + public void setGrade(String grade) { requireNonNull(grade); this.grade = grade; } @Override public void setDetails(String details) { - String[] gradeAndAttendance = isolateGradeAndAttendance(details); + String[] gradeAndAttendance = isolateDetails(details); String grade = gradeAndAttendance[0]; String attendance = gradeAndAttendance[1]; + String assignments = gradeAndAttendance[2]; setGrade(grade); setAttendance(attendance); + setPreviousAssignments(assignments); } /** @@ -68,13 +104,15 @@ public void setDetails(String details) { * @param details A valid detail. * @return a String[] with its first element being the grade and the 2nd element the attendance */ - public String[] isolateGradeAndAttendance(String details) { - String[] gradeAndAttendance = new String[2]; + public String[] isolateDetails(String details) { + String[] gradeAttendanceAssignments = new String[3]; String[] splitDetails = details.split(", grade - "); String[] splitDetails2 = splitDetails[0].split("attendance - "); - gradeAndAttendance[0] = splitDetails[1]; - gradeAndAttendance[1] = splitDetails2[1]; - return gradeAndAttendance; + String[] splitDetails3 = splitDetails[1].split(" Assignments: "); + gradeAttendanceAssignments[0] = splitDetails3[0]; + gradeAttendanceAssignments[1] = splitDetails2[1]; + gradeAttendanceAssignments[2] = splitDetails3[1]; + return gradeAttendanceAssignments; } /** @@ -89,9 +127,59 @@ public static boolean isValidGrade(String test) { } } + + public void setAssignments(String assignments) { + String[] splitStr = assignments.split(", "); + int len = splitStr.length; + if (assignmentsList.size() > 0) { + assignmentsList = new ArrayList<>(); + } + for (int i = 0; i < len; i++) { + String[] weightageStr = splitStr[i].split(" w/"); + String name = weightageStr[0]; + String weightage = weightageStr[1]; + Assignment a = new Assignment(name, weightage); + addAssignments(a); + } + } + + public void setPreviousAssignments(String assignments) { + String trimmedAssignments = trimAssignments(assignments); + + String[] assignmentsArr = trimmedAssignments.split(", "); + int assignmentArrLen = assignmentsArr.length; + + for (int i = 0; i < assignmentArrLen; i++) { + String curr = assignmentsArr[i]; + String[] splitStr = curr.split(" Score: "); + String[] splitStr2 = splitStr[1].split(" Weightage: "); + String name = splitStr[0]; + String grade = splitStr2[0]; + String weightage = splitStr2[1].replace("%", ""); + Assignment a = new Assignment(name, grade, weightage); + addAssignments(a); + } + } + /** + * Returns true if a given string is a valid grade. + */ + public String trimAssignments(String assignments) { + String trimmedAssignments = assignments.replace("[", "") + .replace("]", "") + .replace("(", "") + .replace(")", ""); + + return trimmedAssignments; + } + + public void addAssignments(Assignment assignment) { + this.assignmentsList.add(assignment); + } + @Override public String toString() { - return "Student: attendance - " + attendance + ", grade - " + grade; + return "Student: attendance - " + attendance + ", grade - " + grade + + "\nAssignments: " + assignmentsList.toString(); } @Override @@ -106,7 +194,7 @@ public int hashcode() { @Override public String getDetails() { - return "attendance - " + attendance + ", grade - " + grade; + return "attendance - " + attendance + ", grade - " + grade + " Assignments: " + assignmentsList; } From e687b677124f472452c7407b4eabe9110b02b79d Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Mon, 17 Oct 2022 21:37:03 +0800 Subject: [PATCH 054/208] add Ui updates corresponding book when swap, saves user last left off --- src/main/java/seedu/address/logic/Logic.java | 5 ++++ .../seedu/address/logic/LogicManager.java | 30 +++++++++++++++++++ .../address/logic/commands/CommandResult.java | 14 +++++++-- .../address/logic/commands/ExitCommand.java | 2 +- .../address/logic/commands/HelpCommand.java | 2 +- .../logic/commands/NewBookCommand.java | 2 +- .../address/logic/commands/SwapCommand.java | 19 ++++++++++++ .../logic/parser/AddressBookParser.java | 4 +++ src/main/java/seedu/address/model/Model.java | 3 ++ .../seedu/address/model/ModelManager.java | 5 ++++ .../address/model/ReadOnlyUserPrefs.java | 2 ++ .../java/seedu/address/model/UserPrefs.java | 23 ++++++++++++++ .../address/storage/AddressBookStorage.java | 5 ++++ .../storage/JsonAddressBookStorage.java | 2 ++ .../java/seedu/address/storage/Storage.java | 3 ++ .../seedu/address/storage/StorageManager.java | 5 ++++ .../java/seedu/address/ui/MainWindow.java | 18 +++++++++++ src/main/resources/view/MainWindow.fxml | 1 + 18 files changed, 140 insertions(+), 5 deletions(-) create mode 100644 src/main/java/seedu/address/logic/commands/SwapCommand.java diff --git a/src/main/java/seedu/address/logic/Logic.java b/src/main/java/seedu/address/logic/Logic.java index 3c4882673e3..aa736db6154 100644 --- a/src/main/java/seedu/address/logic/Logic.java +++ b/src/main/java/seedu/address/logic/Logic.java @@ -58,4 +58,9 @@ public interface Logic { * Add and create a new address book */ boolean addAddressBook() throws IOException; + + /** + * Swaps between the address book + */ + void swapAddressBook(); } diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index ebe3295065f..488d30332b4 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -3,19 +3,26 @@ import java.io.FileWriter; import java.io.IOException; import java.nio.file.Path; +import java.util.Optional; import java.util.logging.Logger; import javafx.collections.ObservableList; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; +import seedu.address.commons.exceptions.DataConversionException; import seedu.address.logic.commands.Command; import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.AddressBookParser; import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.AddressBook; import seedu.address.model.Model; +import seedu.address.model.ModelManager; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.person.Person; +import seedu.address.model.util.SampleDataUtil; +import seedu.address.storage.AddressBookStorage; +import seedu.address.storage.JsonAddressBookStorage; import seedu.address.storage.Storage; /** @@ -102,4 +109,27 @@ public boolean addAddressBook() throws IOException { } return result; } + + public void swapAddressBook(){ + //storage.saveAddressBook(model.getAddressBook()); + Path nextAddressBook = model.getNextAddressBookPath(); + Optional addressBookOptional; + ReadOnlyAddressBook initialData; + try { + addressBookOptional = storage.readAddressBook(nextAddressBook); + if (!addressBookOptional.isPresent()) { + logger.info("Data file not found. Will be starting with a sample AddressBook"); + } + initialData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook); + } catch (DataConversionException e) { + logger.warning("Data file not in the correct format. Will be starting with an empty AddressBook"); + initialData = new AddressBook(); + } catch (IOException e) { + logger.warning("Problem while reading from the file. Will be starting with an empty AddressBook"); + initialData = new AddressBook(); + } + AddressBookStorage newAddressBookStorage = new JsonAddressBookStorage(nextAddressBook); + storage.setAddressBook(newAddressBookStorage); + model.setAddressBook(initialData); + } } diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index c6b3e7c8abf..49ee4767fc0 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -17,16 +17,20 @@ public class CommandResult { /** New Book should be created for the user. */ private final boolean showNewBook; + /** Application should swap between address books */ + private final boolean showSwap; + /** The application should exit. */ private final boolean exit; /** * Constructs a {@code CommandResult} with the specified fields. */ - public CommandResult(String feedbackToUser, boolean showHelp, boolean showNewBook, boolean exit) { + public CommandResult(String feedbackToUser, boolean showHelp, boolean showNewBook, boolean swap, boolean exit) { this.feedbackToUser = requireNonNull(feedbackToUser); this.showHelp = showHelp; this.showNewBook = showNewBook; + this.showSwap = swap; this.exit = exit; } @@ -35,7 +39,7 @@ public CommandResult(String feedbackToUser, boolean showHelp, boolean showNewBoo * and other fields set to their default value. */ public CommandResult(String feedbackToUser) { - this(feedbackToUser, false, false, false); + this(feedbackToUser, false, false, false, false); } public String getFeedbackToUser() { @@ -48,10 +52,15 @@ public boolean isShowHelp() { public boolean isNewBook() {return showNewBook; } + public boolean isSwap() { + return showSwap; + } + public boolean isExit() { return exit; } + @Override public boolean equals(Object other) { if (other == this) { @@ -74,4 +83,5 @@ public int hashCode() { return Objects.hash(feedbackToUser, showHelp, exit); } + } diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index eb7560413f9..9e00bf17e2f 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -13,7 +13,7 @@ public class ExitCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, false, true); } } diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java index 07d26e2a23c..492a3633fbd 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/address/logic/commands/HelpCommand.java @@ -16,6 +16,6 @@ public class HelpCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false); + return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false, false); } } diff --git a/src/main/java/seedu/address/logic/commands/NewBookCommand.java b/src/main/java/seedu/address/logic/commands/NewBookCommand.java index 8750976948d..8f26ba89d78 100644 --- a/src/main/java/seedu/address/logic/commands/NewBookCommand.java +++ b/src/main/java/seedu/address/logic/commands/NewBookCommand.java @@ -13,7 +13,7 @@ public class NewBookCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true, false); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true, false, false); } } diff --git a/src/main/java/seedu/address/logic/commands/SwapCommand.java b/src/main/java/seedu/address/logic/commands/SwapCommand.java new file mode 100644 index 00000000000..83ec1529dcf --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/SwapCommand.java @@ -0,0 +1,19 @@ +package seedu.address.logic.commands; + +import seedu.address.model.Model; + +/** + * Terminates the program. + */ +public class SwapCommand extends Command { + + public static final String COMMAND_WORD = "swap"; + + public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT = "Swapping Address Book as requested ..."; + + @Override + public CommandResult execute(Model model) { + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true, false); + } + +} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 997014fca56..9ef579a067d 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -21,6 +21,7 @@ import seedu.address.logic.commands.NewBookCommand; import seedu.address.logic.commands.RemarkCommand; import seedu.address.logic.commands.RolesCommand; +import seedu.address.logic.commands.SwapCommand; import seedu.address.logic.parser.exceptions.ParseException; /** @@ -71,6 +72,9 @@ public Command parseCommand(String userInput) throws ParseException { case NewBookCommand.COMMAND_WORD: return new NewBookCommand(); + case SwapCommand.COMMAND_WORD: + return new SwapCommand(); + case ExitCommand.COMMAND_WORD: return new ExitCommand(); diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index 332a3c67cec..22e55e70c65 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -62,6 +62,9 @@ public interface Model { */ void setAllAddressBookFilePath(Path[] updatedPaths); + /** Returns the next AddressBook */ + Path getNextAddressBookPath(); + /** * Creates a new Address Book */ diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index eed1374ed70..7d8739e1940 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -98,6 +98,11 @@ public boolean addAddressBook() { return true; } + @Override + public Path getNextAddressBookPath() { + return userPrefs.getNextAddressBookPath(); + } + //=========== AddressBook ================================================================================ @Override diff --git a/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java b/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java index 74c70823965..a5a9e9e4eb5 100644 --- a/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java +++ b/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java @@ -13,6 +13,8 @@ public interface ReadOnlyUserPrefs { Path getAddressBookFilePath(); + int getStoredIndex(); + Path[] getAllAddressBookFilePath(); } diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 632c0c375f0..3b7d88ffe78 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -22,6 +22,7 @@ public class UserPrefs implements ReadOnlyUserPrefs { private GuiSettings guiSettings = new GuiSettings(); private static final String DEFAULT_ADDRESS_BOOK_NAME = "addressbook"; + private int addressBookIndex = 0; private Path addressBookFilePath = Paths.get("data" , "addressbook.json"); private static final int MAX_ADDRESS_BOOK_LIMIT = 5; private ArrayList allAddressBookFilePath = new ArrayList(); @@ -49,6 +50,7 @@ public void resetData(ReadOnlyUserPrefs newUserPrefs) { setGuiSettings(newUserPrefs.getGuiSettings()); setAddressBookFilePath(newUserPrefs.getAddressBookFilePath()); setAllAddressBookFilePath(newUserPrefs.getAllAddressBookFilePath()); + setStoredIndex(newUserPrefs.getStoredIndex()%newUserPrefs.getAllAddressBookFilePath().length); } public GuiSettings getGuiSettings() { @@ -96,6 +98,27 @@ public boolean addAddressBook() { } } + public Path getNextAddressBookPath() { + incrementIndex(); + Path nextAddressBook = allAddressBookFilePath.get(addressBookIndex); + System.out.println("next book:" + nextAddressBook.toString()); + setAddressBookFilePath(nextAddressBook); + return nextAddressBook; + } + + public int getStoredIndex() { + return addressBookIndex; + } + + public void setStoredIndex(int index) { + addressBookIndex = index; + } + + private void incrementIndex() { + addressBookIndex += 1; + addressBookIndex = addressBookIndex%allAddressBookFilePath.size(); + } + @Override public boolean equals(Object other) { if (other == this) { diff --git a/src/main/java/seedu/address/storage/AddressBookStorage.java b/src/main/java/seedu/address/storage/AddressBookStorage.java index 4599182b3f9..6a7d812fcb2 100644 --- a/src/main/java/seedu/address/storage/AddressBookStorage.java +++ b/src/main/java/seedu/address/storage/AddressBookStorage.java @@ -17,6 +17,11 @@ public interface AddressBookStorage { */ Path getAddressBookFilePath(); + /** + * Changes the current Address Book storage location + */ + void setAddressBook(AddressBookStorage addressBookStorage); + /** * Returns AddressBook data as a {@link ReadOnlyAddressBook}. * Returns {@code Optional.empty()} if storage file is not found. diff --git a/src/main/java/seedu/address/storage/JsonAddressBookStorage.java b/src/main/java/seedu/address/storage/JsonAddressBookStorage.java index dfab9daaa0d..7458cac79a4 100644 --- a/src/main/java/seedu/address/storage/JsonAddressBookStorage.java +++ b/src/main/java/seedu/address/storage/JsonAddressBookStorage.java @@ -31,6 +31,8 @@ public Path getAddressBookFilePath() { return filePath; } + public void setAddressBook(AddressBookStorage addressBookStorage) {} + @Override public Optional readAddressBook() throws DataConversionException { return readAddressBook(filePath); diff --git a/src/main/java/seedu/address/storage/Storage.java b/src/main/java/seedu/address/storage/Storage.java index beda8bd9f11..788014cab0f 100644 --- a/src/main/java/seedu/address/storage/Storage.java +++ b/src/main/java/seedu/address/storage/Storage.java @@ -23,6 +23,9 @@ public interface Storage extends AddressBookStorage, UserPrefsStorage { @Override Path getAddressBookFilePath(); + @Override + void setAddressBook(AddressBookStorage addressBookStorage); + @Override Optional readAddressBook() throws DataConversionException, IOException; diff --git a/src/main/java/seedu/address/storage/StorageManager.java b/src/main/java/seedu/address/storage/StorageManager.java index 6cfa0162164..29eac0638cb 100644 --- a/src/main/java/seedu/address/storage/StorageManager.java +++ b/src/main/java/seedu/address/storage/StorageManager.java @@ -53,6 +53,11 @@ public Path getAddressBookFilePath() { return addressBookStorage.getAddressBookFilePath(); } + @Override + public void setAddressBook(AddressBookStorage addressBookStorage) { + this.addressBookStorage = addressBookStorage; + } + @Override public Optional readAddressBook() throws DataConversionException, IOException { return readAddressBook(addressBookStorage.getAddressBookFilePath()); diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index b3cb6ffebae..4263806f1a3 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -18,6 +18,8 @@ import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.exceptions.ParseException; +import static seedu.address.logic.LogicManager.FILE_OPS_ERROR_MESSAGE; + /** * The Main Window. Provides the basic application layout containing * a menu bar and space where other JavaFX elements can be placed. @@ -161,6 +163,18 @@ private void handleNewBook() { } } + /** + * Swaps between the Books + */ + @FXML + private void handleSwap() throws CommandException { + try { + logic.swapAddressBook(); + } catch (IOException ioe) { + throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe); + } + } + /** * Closes the application. */ @@ -195,6 +209,10 @@ private CommandResult executeCommand(String commandText) throws CommandException handleNewBook(); } + if (commandResult.isSwap()) { + handleSwap(); + } + if (commandResult.isExit()) { handleExit(); } diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index 49473065c18..790e4295c65 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -27,6 +27,7 @@ + From 3502d82acf2406407a9ee3977465f6ae4ec045c5 Mon Sep 17 00:00:00 2001 From: Markus Wee <77526609+yellow-294@users.noreply.github.com> Date: Mon, 17 Oct 2022 21:41:40 +0800 Subject: [PATCH 055/208] Minor bug fixes Fixed a minor bug that causes TAB to fail to open if Assignments are empty Minor fixes to pass Java CI --- .../model/person/position/Student.java | 6 +++++ .../invalidAndValidPersonAddressBook.json | 24 ++++++++++++------- .../invalidPersonAddressBook.json | 12 ++++++---- .../invalidPersonAddressBook.json | 11 +++++---- .../typicalPersonsAddressBook.json | 4 ++-- .../address/testutil/TypicalPersons.java | 22 +++++++++-------- 6 files changed, 51 insertions(+), 28 deletions(-) diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index 62b038db6ea..273d6bac5f8 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -144,8 +144,14 @@ public void setAssignments(String assignments) { } public void setPreviousAssignments(String assignments) { + + String trimmedAssignments = trimAssignments(assignments); + if (trimmedAssignments.equals("")) { + return; + } + String[] assignmentsArr = trimmedAssignments.split(", "); int assignmentArrLen = assignmentsArr.length; diff --git a/src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json b/src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json index 6a4d2b7181c..ace6535e701 100644 --- a/src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json +++ b/src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json @@ -1,13 +1,21 @@ { "persons": [ { - "name": "Valid Person", - "phone": "9482424", - "email": "hans@example.com", - "address": "4th street" + "name" : "Valid Person", + "phone" : "87438807", + "email" : "alexyeoh@example.com", + "position" : "Student", + "address" : "Blk 30 Geylang Street 29, #06-40", + "remark" : "", + "details" : "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", + "tagged" : [ "friends" ] }, { - "name": "Person With Invalid Phone Field", - "phone": "948asdf2424", - "email": "hans@example.com", - "address": "4th street" + "name" : "Person with invalid phone field", + "phone" : "8743dedwq8807", + "email" : "alexyeoh@example.com", + "position" : "Student", + "address" : "Blk 30 Geylang Street 29, #06-40", + "remark" : "", + "details" : "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", + "tagged" : [ "friends" ] } ] } diff --git a/src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json b/src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json index ccd21f7d1a9..65a9efdce76 100644 --- a/src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json +++ b/src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json @@ -1,8 +1,12 @@ { "persons": [ { - "name": "Person with invalid name field: Ha!ns Mu@ster", - "phone": "9482424", - "email": "hans@example.com", - "address": "4th street" + "name" : "Person with invalid name field: Ha!ns Mu@ster", + "phone" : "87438807", + "email" : "alexyeoh@example.com", + "position" : "Student", + "address" : "Blk 30 Geylang Street 29, #06-40", + "remark" : "", + "details" : "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", + "tagged" : [ "friends" ] } ] } diff --git a/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json index 795eb8cbd19..f4dd1d031f3 100644 --- a/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json @@ -1,9 +1,12 @@ { "persons": [ { - "name": "Hans Muster", - "phone": "9482424", - "email": "invalid@email!3e", + "name" : "Alex Yeoh", + "phone" : "87438807", + "email" : "invalid@email!3e", "position" : "Student", - "address": "4th street" + "address" : "Blk 30 Geylang Street 29, #06-40", + "remark" : "", + "details" : "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", + "tagged" : [ "friends" ] } ] } diff --git a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json index aae84f15058..f9d3d4b39ae 100644 --- a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json @@ -16,7 +16,7 @@ "position" : "Student", "address" : "311, Clementi Ave 2, #02-25", "remark": "", - "details": "attendance - 0/0, grade - 0/0", + "details": "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", "tagged" : [ "owesMoney", "friends" ] }, { "name" : "Carl Kurz", @@ -43,7 +43,7 @@ "position" : "Student", "address" : "michegan ave", "remark": "", - "details": "attendance - 10/10, grade - 45/50", + "details": "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", "tagged" : [ ] }, { "name" : "Fiona Kunz", diff --git a/src/test/java/seedu/address/testutil/TypicalPersons.java b/src/test/java/seedu/address/testutil/TypicalPersons.java index 03cd80aabee..b69b81c8e43 100644 --- a/src/test/java/seedu/address/testutil/TypicalPersons.java +++ b/src/test/java/seedu/address/testutil/TypicalPersons.java @@ -26,34 +26,36 @@ public class TypicalPersons { public static final Person ALICE = new PersonBuilder().withName("Alice Pauline") .withAddress("123, Jurong West Ave 6, #08-111").withEmail("alice@example.com") .withPhone("94351253").withRemark("She likes aardvarks.") - .withTags("friends").build(); + .withTags("friends").withPosition("Professor").build(); public static final Person BENSON = new PersonBuilder().withName("Benson Meier") .withAddress("311, Clementi Ave 2, #02-25") .withEmail("johnd@example.com").withPhone("98765432").withRemark("He can't take beer!") .withTags("owesMoney", "friends").withPosition("Professor").build(); public static final Person CARL = new PersonBuilder().withName("Carl Kurz").withPhone("95352563") - .withEmail("heinz@example.com").withAddress("wall street").build(); + .withEmail("heinz@example.com").withAddress("wall street").withPosition("TA").build(); public static final Person DANIEL = new PersonBuilder().withName("Daniel Meier").withPhone("87652533") - .withEmail("cornelia@example.com").withAddress("10th street").withTags("friends").build(); + .withEmail("cornelia@example.com").withAddress("10th street").withTags("friends") + .withPosition("TA").build(); public static final Person ELLE = new PersonBuilder().withName("Elle Meyer").withPhone("9482224") - .withEmail("werner@example.com").withAddress("michegan ave").build(); + .withEmail("werner@example.com").withAddress("michegan ave").withPosition("TA").build(); public static final Person FIONA = new PersonBuilder().withName("Fiona Kunz").withPhone("9482427") - .withEmail("lydia@example.com").withAddress("little tokyo").build(); + .withEmail("lydia@example.com").withAddress("little tokyo").withPosition("Student").build(); public static final Person GEORGE = new PersonBuilder().withName("George Best").withPhone("9482442") - .withEmail("anna@example.com").withAddress("4th street").build(); + .withEmail("anna@example.com").withAddress("4th street").withPosition("Student").build(); // Manually added public static final Person HOON = new PersonBuilder().withName("Hoon Meier").withPhone("8482424") - .withEmail("stefan@example.com").withAddress("little india").build(); + .withEmail("stefan@example.com").withAddress("little india").withPosition("Professor").build(); public static final Person IDA = new PersonBuilder().withName("Ida Mueller").withPhone("8482131") - .withEmail("hans@example.com").withAddress("chicago ave").build(); + .withEmail("hans@example.com").withAddress("chicago ave").withPosition("Professor").build(); // Manually added - Person's details found in {@code CommandTestUtil} public static final Person AMY = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY) - .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build(); + .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND) + .withPosition("Professor").build(); public static final Person BOB = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB) .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND) - .build(); + .withPosition("Professor").build(); public static final String KEYWORD_MATCHING_MEIER = "Meier"; // A keyword that matches MEIER From bbaf4f6bd5a9c72a830e273a813ac38e709adeb9 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Mon, 17 Oct 2022 21:59:21 +0800 Subject: [PATCH 056/208] fix test case failures --- .../logic/commands/NewBookCommand.java | 7 ++++--- .../address/logic/commands/SwapCommand.java | 6 +++--- .../java/seedu/address/ui/MainWindow.java | 6 +----- .../logic/commands/AddCommandTest.java | 20 ++++++++++++++++++ .../logic/commands/CommandResultTest.java | 15 ++++++++----- .../logic/commands/ExitCommandTest.java | 3 ++- .../logic/commands/HelpCommandTest.java | 3 ++- .../logic/commands/NewBookCommandTest.java | 20 ++++++++++++++++++ .../logic/commands/SwapCommandTest.java | 21 +++++++++++++++++++ 9 files changed, 83 insertions(+), 18 deletions(-) create mode 100644 src/test/java/seedu/address/logic/commands/NewBookCommandTest.java create mode 100644 src/test/java/seedu/address/logic/commands/SwapCommandTest.java diff --git a/src/main/java/seedu/address/logic/commands/NewBookCommand.java b/src/main/java/seedu/address/logic/commands/NewBookCommand.java index 8f26ba89d78..0c9634bce57 100644 --- a/src/main/java/seedu/address/logic/commands/NewBookCommand.java +++ b/src/main/java/seedu/address/logic/commands/NewBookCommand.java @@ -3,17 +3,18 @@ import seedu.address.model.Model; /** - * Terminates the program. + * Creates a new Address Book. */ public class NewBookCommand extends Command { public static final String COMMAND_WORD = "new"; - public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT = "Creating New Address Book as requested ..."; + public static final String MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT = "Creating New Address Book as requested ..."; @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true, false, false); + return new CommandResult(MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT, + false, true, false, false); } } diff --git a/src/main/java/seedu/address/logic/commands/SwapCommand.java b/src/main/java/seedu/address/logic/commands/SwapCommand.java index 83ec1529dcf..f0951939dd2 100644 --- a/src/main/java/seedu/address/logic/commands/SwapCommand.java +++ b/src/main/java/seedu/address/logic/commands/SwapCommand.java @@ -3,17 +3,17 @@ import seedu.address.model.Model; /** - * Terminates the program. + * Swaps between Address Books. */ public class SwapCommand extends Command { public static final String COMMAND_WORD = "swap"; - public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT = "Swapping Address Book as requested ..."; + public static final String MESSAGE_SWAP_ACKNOWLEDGEMENT = "Swapping Address Book as requested ..."; @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true, false); + return new CommandResult(MESSAGE_SWAP_ACKNOWLEDGEMENT, false, false, true, false); } } diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 4263806f1a3..8a7feaf586c 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -168,11 +168,7 @@ private void handleNewBook() { */ @FXML private void handleSwap() throws CommandException { - try { - logic.swapAddressBook(); - } catch (IOException ioe) { - throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe); - } + logic.swapAddressBook(); } /** diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index 5865713d5dd..702337c4f6b 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -118,6 +118,26 @@ public void setAddressBook(ReadOnlyAddressBook newData) { throw new AssertionError("This method should not be called."); } + @Override + public Path[] getAllAddressBookFilePath() { + throw new AssertionError("This method should not be called."); + } + + @Override + public void setAllAddressBookFilePath(Path[] updatedPaths) { + throw new AssertionError("This method should not be called."); + } + + @Override + public Path getNextAddressBookPath() { + throw new AssertionError("This method should not be called."); + } + + @Override + public boolean addAddressBook() { + throw new AssertionError("This method should not be called."); + } + @Override public ReadOnlyAddressBook getAddressBook() { throw new AssertionError("This method should not be called."); diff --git a/src/test/java/seedu/address/logic/commands/CommandResultTest.java b/src/test/java/seedu/address/logic/commands/CommandResultTest.java index 4f3eb46e9ef..9bc88993c7a 100644 --- a/src/test/java/seedu/address/logic/commands/CommandResultTest.java +++ b/src/test/java/seedu/address/logic/commands/CommandResultTest.java @@ -14,7 +14,8 @@ public void equals() { // same values -> returns true assertTrue(commandResult.equals(new CommandResult("feedback"))); - assertTrue(commandResult.equals(new CommandResult("feedback", false, false))); + assertTrue(commandResult.equals(new CommandResult("feedback", + false, false, false, false))); // same object -> returns true assertTrue(commandResult.equals(commandResult)); @@ -29,10 +30,12 @@ public void equals() { assertFalse(commandResult.equals(new CommandResult("different"))); // different showHelp value -> returns false - assertFalse(commandResult.equals(new CommandResult("feedback", true, false))); + assertFalse(commandResult.equals(new CommandResult("feedback", + true, false, false, false))); // different exit value -> returns false - assertFalse(commandResult.equals(new CommandResult("feedback", false, true))); + assertFalse(commandResult.equals(new CommandResult("feedback", + false, false, false,true))); } @Test @@ -46,9 +49,11 @@ public void hashcode() { assertNotEquals(commandResult.hashCode(), new CommandResult("different").hashCode()); // different showHelp value -> returns different hashcode - assertNotEquals(commandResult.hashCode(), new CommandResult("feedback", true, false).hashCode()); + assertNotEquals(commandResult.hashCode(), new CommandResult("feedback", + true, false, false, false).hashCode()); // different exit value -> returns different hashcode - assertNotEquals(commandResult.hashCode(), new CommandResult("feedback", false, true).hashCode()); + assertNotEquals(commandResult.hashCode(), new CommandResult("feedback", + false, false, false, true).hashCode()); } } diff --git a/src/test/java/seedu/address/logic/commands/ExitCommandTest.java b/src/test/java/seedu/address/logic/commands/ExitCommandTest.java index 9533c473875..8f7abe04c91 100644 --- a/src/test/java/seedu/address/logic/commands/ExitCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/ExitCommandTest.java @@ -14,7 +14,8 @@ public class ExitCommandTest { @Test public void execute_exit_success() { - CommandResult expectedCommandResult = new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true); + CommandResult expectedCommandResult = new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, + false, false, false, true); assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel); } } diff --git a/src/test/java/seedu/address/logic/commands/HelpCommandTest.java b/src/test/java/seedu/address/logic/commands/HelpCommandTest.java index 4904fc4352e..930083d3874 100644 --- a/src/test/java/seedu/address/logic/commands/HelpCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/HelpCommandTest.java @@ -14,7 +14,8 @@ public class HelpCommandTest { @Test public void execute_help_success() { - CommandResult expectedCommandResult = new CommandResult(SHOWING_HELP_MESSAGE, true, false); + CommandResult expectedCommandResult = new CommandResult(SHOWING_HELP_MESSAGE, + true, false, false, false); assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel); } } diff --git a/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java b/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java new file mode 100644 index 00000000000..fb7c2c111c6 --- /dev/null +++ b/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java @@ -0,0 +1,20 @@ +package seedu.address.logic.commands; + +import org.junit.jupiter.api.Test; +import seedu.address.model.Model; +import seedu.address.model.ModelManager; + +import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.address.logic.commands.NewBookCommand.MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT; + +public class NewBookCommandTest { + private Model model = new ModelManager(); + private Model expectedModel = new ModelManager(); + + @Test + public void execute_help_success() { + CommandResult expectedCommandResult = new CommandResult(MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT, + false, true, false, false); + assertCommandSuccess(new NewBookCommand(), model, expectedCommandResult, expectedModel); + } +} diff --git a/src/test/java/seedu/address/logic/commands/SwapCommandTest.java b/src/test/java/seedu/address/logic/commands/SwapCommandTest.java new file mode 100644 index 00000000000..53cf147d33a --- /dev/null +++ b/src/test/java/seedu/address/logic/commands/SwapCommandTest.java @@ -0,0 +1,21 @@ +package seedu.address.logic.commands; + +import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.address.logic.commands.SwapCommand.MESSAGE_SWAP_ACKNOWLEDGEMENT; + +import org.junit.jupiter.api.Test; + +import seedu.address.model.Model; +import seedu.address.model.ModelManager; + +public class SwapCommandTest { + private Model model = new ModelManager(); + private Model expectedModel = new ModelManager(); + + @Test + public void execute_help_success() { + CommandResult expectedCommandResult = new CommandResult(MESSAGE_SWAP_ACKNOWLEDGEMENT, + false, false, true, false); + assertCommandSuccess(new SwapCommand(), model, expectedCommandResult, expectedModel); + } +} From bec7567fd363577e7f12a035e184a05e1f491b3e Mon Sep 17 00:00:00 2001 From: cxyterence Date: Mon, 17 Oct 2022 21:59:36 +0800 Subject: [PATCH 057/208] Add ShowCommand command which displays details of a specified person on the right pane in TAB --- .../address/logic/commands/CommandResult.java | 29 ++++++- .../address/logic/commands/ShowCommand.java | 65 +++++++++++++++ .../logic/parser/AddressBookParser.java | 4 + .../logic/parser/ShowCommandParser.java | 28 +++++++ .../java/seedu/address/ui/InfoDisplay.java | 79 +++++++++++++++++++ .../java/seedu/address/ui/MainWindow.java | 15 ++++ .../java/seedu/address/ui/PersonCard.java | 1 - src/main/resources/view/InfoDisplay.fxml | 42 ++++++++++ src/main/resources/view/MainWindow.fxml | 57 ++++++++----- .../logic/commands/CommandResultTest.java | 9 +++ 10 files changed, 306 insertions(+), 23 deletions(-) create mode 100644 src/main/java/seedu/address/logic/commands/ShowCommand.java create mode 100644 src/main/java/seedu/address/logic/parser/ShowCommandParser.java create mode 100644 src/main/java/seedu/address/ui/InfoDisplay.java create mode 100644 src/main/resources/view/InfoDisplay.fxml diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index 92f900b7916..097368f347c 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -4,6 +4,8 @@ import java.util.Objects; +import seedu.address.model.person.Person; + /** * Represents the result of a command execution. */ @@ -11,6 +13,8 @@ public class CommandResult { private final String feedbackToUser; + private final Person personToShow; + /** Help information should be shown to the user. */ private final boolean showHelp; @@ -20,8 +24,9 @@ public class CommandResult { /** * Constructs a {@code CommandResult} with the specified fields. */ - public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { + public CommandResult(String feedbackToUser, Person personToShow, boolean showHelp, boolean exit) { this.feedbackToUser = requireNonNull(feedbackToUser); + this.personToShow = personToShow; this.showHelp = showHelp; this.exit = exit; } @@ -31,13 +36,33 @@ public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { * and other fields set to their default value. */ public CommandResult(String feedbackToUser) { - this(feedbackToUser, false, false); + this(feedbackToUser, null, false, false); + } + + /** + * Constructs a {@code CommandResult} with the specified {@code personToShow}, + * and other fields set to their default value. + */ + public CommandResult(String feedbackToUser, Person personToShow) { + this(feedbackToUser, personToShow, false, false); + } + + public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { + this(feedbackToUser, null, showHelp, exit); } public String getFeedbackToUser() { return feedbackToUser; } + public Person getPersonToShow() { + return personToShow; + } + + public boolean hasPersonToShow() { + return personToShow != null; + } + public boolean isShowHelp() { return showHelp; } diff --git a/src/main/java/seedu/address/logic/commands/ShowCommand.java b/src/main/java/seedu/address/logic/commands/ShowCommand.java new file mode 100644 index 00000000000..3aff59a5992 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/ShowCommand.java @@ -0,0 +1,65 @@ +package seedu.address.logic.commands; + +import static java.util.Objects.requireNonNull; + +import java.util.List; + +import seedu.address.commons.core.Messages; +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; +import seedu.address.model.person.Person; + +/** + * Shows the details of an existing person inside TAB + */ +public class ShowCommand extends Command { + public static final String COMMAND_WORD = "show"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Shows the details of the person identified " + + "by the index number used in the displayed person list.\n" + + "Parameters: INDEX (must be a positive integer)"; + + public static final String MESSAGE_SHOW_PERSON_SUCCESS = "Details displayed successfully!"; + + private final Index index; + + /** + * @param index of the person in the displayed persons list to show details of + */ + public ShowCommand(Index index) { + requireNonNull(index); + this.index = index; + } + + @Override + public CommandResult execute(Model model) throws CommandException { + requireNonNull(model); + List lastShownList = model.getFilteredPersonList(); + + if (index.getZeroBased() >= lastShownList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + } + + Person personToShow = lastShownList.get(index.getZeroBased()); + + return new CommandResult(MESSAGE_SHOW_PERSON_SUCCESS, personToShow, false, false); + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof ShowCommand)) { + return false; + } + + // state check + ShowCommand s = (ShowCommand) other; + return index.equals(s.index); + } +} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 13b8334f4ed..53012eb0898 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -20,6 +20,7 @@ import seedu.address.logic.commands.ListCommand; import seedu.address.logic.commands.RemarkCommand; import seedu.address.logic.commands.RolesCommand; +import seedu.address.logic.commands.ShowCommand; import seedu.address.logic.parser.exceptions.ParseException; /** @@ -87,6 +88,9 @@ public Command parseCommand(String userInput) throws ParseException { case RolesCommand.COMMAND_WORD: return new RolesCommandParser().parse(arguments); + + case ShowCommand.COMMAND_WORD: + return new ShowCommandParser().parse(arguments); default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); } diff --git a/src/main/java/seedu/address/logic/parser/ShowCommandParser.java b/src/main/java/seedu/address/logic/parser/ShowCommandParser.java new file mode 100644 index 00000000000..35e60a045ac --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/ShowCommandParser.java @@ -0,0 +1,28 @@ +package seedu.address.logic.parser; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; + +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.ShowCommand; +import seedu.address.logic.parser.exceptions.ParseException; + +/** + * Parses input arguments and creates a new ShowCommand object. + */ +public class ShowCommandParser implements Parser { + + /** + * Parses the given {@code String} of arguments in the context of the ShowCommand + * and returns a ShowCommand object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public ShowCommand parse(String args) throws ParseException { + try { + Index index = ParserUtil.parseIndex(args); + return new ShowCommand(index); + } catch (ParseException pe) { + throw new ParseException( + String.format(MESSAGE_INVALID_COMMAND_FORMAT, ShowCommand.MESSAGE_USAGE), pe); + } + } +} diff --git a/src/main/java/seedu/address/ui/InfoDisplay.java b/src/main/java/seedu/address/ui/InfoDisplay.java new file mode 100644 index 00000000000..87469b06f13 --- /dev/null +++ b/src/main/java/seedu/address/ui/InfoDisplay.java @@ -0,0 +1,79 @@ +package seedu.address.ui; + +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.layout.Region; +import seedu.address.model.person.Person; + +/** + * A ui for the details of a specified person displayed at the right panel of TAB. + */ +public class InfoDisplay extends UiPart { + + private static final String FXML = "InfoDisplay.fxml"; + + /** + * Note: Certain keywords such as "location" and "resources" are reserved keywords in JavaFX. + * As a consequence, UI elements' variable names cannot be set to such keywords + * or an exception will be thrown by JavaFX during runtime. + * + * @see The issue on AddressBook level 4 + */ + + private Person person; + + @FXML + private Label name; + @FXML + private Label position; + @FXML + private Label phone; + @FXML + private Label email; + @FXML + private Label address; + + public InfoDisplay() { + super(FXML); + } + + /** + * Displays information of a specified person. + */ + public void setInfo(Person person) { + this.person = person; + name.setText(person.getName().fullName); + position.setText(person.getPosition().toString()); + phone.setText("Phone: " + person.getPhone().value); + email.setText("Email: " + person.getEmail().value); + address.setText("Address: " + person.getAddress().value); + } + + /** + * Clears any information being displayed. + */ + public void clearInfo() { + name.setText(null); + position.setText(null); + phone.setText(null); + email.setText(null); + address.setText(null); + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof InfoDisplay)) { + return false; + } + + // state check + InfoDisplay current = (InfoDisplay) other; + return person.equals(current.person); + } +} diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 5db82117724..f7ea7d920fd 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -16,6 +16,7 @@ import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.person.Person; /** * The Main Window. Provides the basic application layout containing @@ -34,6 +35,7 @@ public class MainWindow extends UiPart { // Independent Ui parts residing in this Ui container private PersonListPanel personListPanel; private ResultDisplay resultDisplay; + private InfoDisplay infoDisplay; @FXML private StackPane commandBoxPlaceholder; @@ -50,6 +52,9 @@ public class MainWindow extends UiPart { @FXML private StackPane statusbarPlaceholder; + @FXML + private StackPane infoDisplayPlaceholder; + /** * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}. */ @@ -119,6 +124,9 @@ void fillInnerParts() { CommandBox commandBox = new CommandBox(this::executeCommand); commandBoxPlaceholder.getChildren().add(commandBox.getRoot()); + + infoDisplay = new InfoDisplay(); + infoDisplayPlaceholder.getChildren().add(infoDisplay.getRoot()); } /** @@ -171,6 +179,13 @@ private CommandResult executeCommand(String commandText) throws CommandException CommandResult commandResult = logic.execute(commandText); logger.info("Result: " + commandResult.getFeedbackToUser()); resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser()); + infoDisplay.clearInfo(); + + if (commandResult.hasPersonToShow()) { + Person personToShow = commandResult.getPersonToShow(); + assert personToShow != null; + infoDisplay.setInfo(personToShow); + } if (commandResult.isShowHelp()) { handleHelp(); diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java index 9359e6edc2c..fcbeef0a894 100644 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ b/src/main/java/seedu/address/ui/PersonCard.java @@ -42,7 +42,6 @@ public class PersonCard extends UiPart { private Label email; @FXML private FlowPane tags; - @FXML private Label remark; diff --git a/src/main/resources/view/InfoDisplay.fxml b/src/main/resources/view/InfoDisplay.fxml new file mode 100644 index 00000000000..8322b3671d6 --- /dev/null +++ b/src/main/resources/view/InfoDisplay.fxml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index a431648f6c0..f7653ef9330 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -12,7 +12,7 @@ + title="TAB" minWidth="900" minHeight="600" onCloseRequest="#handleExit"> @@ -32,26 +32,43 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/java/seedu/address/logic/commands/CommandResultTest.java b/src/test/java/seedu/address/logic/commands/CommandResultTest.java index 4f3eb46e9ef..859e45d828d 100644 --- a/src/test/java/seedu/address/logic/commands/CommandResultTest.java +++ b/src/test/java/seedu/address/logic/commands/CommandResultTest.java @@ -4,10 +4,18 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; import org.junit.jupiter.api.Test; +import seedu.address.model.Model; +import seedu.address.model.ModelManager; +import seedu.address.model.UserPrefs; + public class CommandResultTest { + + private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + @Test public void equals() { CommandResult commandResult = new CommandResult("feedback"); @@ -15,6 +23,7 @@ public void equals() { // same values -> returns true assertTrue(commandResult.equals(new CommandResult("feedback"))); assertTrue(commandResult.equals(new CommandResult("feedback", false, false))); + assertTrue(commandResult.equals(new CommandResult("feedback", null, false, false))); // same object -> returns true assertTrue(commandResult.equals(commandResult)); From b03b862cc2e536eda8ba6db57d8e7f80820b77ec Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Mon, 17 Oct 2022 22:11:20 +0800 Subject: [PATCH 058/208] fix checkstyle --- src/main/java/seedu/address/MainApp.java | 1 - .../seedu/address/logic/LogicManager.java | 6 ++--- .../address/logic/commands/CommandResult.java | 7 ++++-- src/main/java/seedu/address/model/Model.java | 2 -- .../seedu/address/model/ModelManager.java | 5 ---- .../java/seedu/address/model/UserPrefs.java | 23 ++++++++----------- .../java/seedu/address/ui/MainWindow.java | 2 -- .../logic/commands/CommandResultTest.java | 2 +- .../logic/commands/NewBookCommandTest.java | 7 +++--- 9 files changed, 22 insertions(+), 33 deletions(-) diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index 2766ae00794..d64cbd8529b 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -2,7 +2,6 @@ import java.io.IOException; import java.nio.file.Path; -import java.util.Arrays; import java.util.Optional; import java.util.logging.Logger; diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index 488d30332b4..0544a35c67b 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -17,7 +17,6 @@ import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.AddressBook; import seedu.address.model.Model; -import seedu.address.model.ModelManager; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.person.Person; import seedu.address.model.util.SampleDataUtil; @@ -109,9 +108,8 @@ public boolean addAddressBook() throws IOException { } return result; } - - public void swapAddressBook(){ - //storage.saveAddressBook(model.getAddressBook()); + @Override + public void swapAddressBook() { Path nextAddressBook = model.getNextAddressBookPath(); Optional addressBookOptional; ReadOnlyAddressBook initialData; diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index 49ee4767fc0..e4899647700 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -39,7 +39,8 @@ public CommandResult(String feedbackToUser, boolean showHelp, boolean showNewBoo * and other fields set to their default value. */ public CommandResult(String feedbackToUser) { - this(feedbackToUser, false, false, false, false); + this(feedbackToUser, + false, false, false, false); } public String getFeedbackToUser() { @@ -50,7 +51,9 @@ public boolean isShowHelp() { return showHelp; } - public boolean isNewBook() {return showNewBook; } + public boolean isNewBook() { + return showNewBook; + } public boolean isSwap() { return showSwap; diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index 22e55e70c65..7f83749b021 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -7,8 +7,6 @@ import seedu.address.commons.core.GuiSettings; import seedu.address.model.person.Person; -import static java.util.Objects.requireNonNull; - /** * The API of the Model component. */ diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 7d8739e1940..7844a89c3f4 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -3,9 +3,7 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; -import java.io.IOException; import java.nio.file.Path; -import java.util.List; import java.util.function.Predicate; import java.util.logging.Logger; @@ -13,10 +11,7 @@ import javafx.collections.transformation.FilteredList; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.util.StringUtil; import seedu.address.model.person.Person; -import seedu.address.storage.JsonUserPrefsStorage; -import seedu.address.storage.UserPrefsStorage; /** * Represents the in-memory model of the address book data. diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 3b7d88ffe78..e4ff3705b18 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -2,29 +2,24 @@ import static java.util.Objects.requireNonNull; -import java.lang.reflect.Array; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.Optional; -import seedu.address.commons.core.Config; import seedu.address.commons.core.GuiSettings; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.storage.JsonUserPrefsStorage; /** * Represents User's preferences. */ public class UserPrefs implements ReadOnlyUserPrefs { - private GuiSettings guiSettings = new GuiSettings(); + private static final int MAX_ADDRESS_BOOK_LIMIT = 5; private static final String DEFAULT_ADDRESS_BOOK_NAME = "addressbook"; + private GuiSettings guiSettings = new GuiSettings(); private int addressBookIndex = 0; private Path addressBookFilePath = Paths.get("data" , "addressbook.json"); - private static final int MAX_ADDRESS_BOOK_LIMIT = 5; private ArrayList allAddressBookFilePath = new ArrayList(); /** @@ -50,7 +45,7 @@ public void resetData(ReadOnlyUserPrefs newUserPrefs) { setGuiSettings(newUserPrefs.getGuiSettings()); setAddressBookFilePath(newUserPrefs.getAddressBookFilePath()); setAllAddressBookFilePath(newUserPrefs.getAllAddressBookFilePath()); - setStoredIndex(newUserPrefs.getStoredIndex()%newUserPrefs.getAllAddressBookFilePath().length); + setStoredIndex(newUserPrefs.getStoredIndex() % newUserPrefs.getAllAddressBookFilePath().length); } public GuiSettings getGuiSettings() { @@ -80,6 +75,11 @@ public void setAllAddressBookFilePath(Path[] allAddressBookFilePath) { this.allAddressBookFilePath = new ArrayList<>(List.of(allAddressBookFilePath)); } + /** + * Adds a brand new Address Book to the data directory + * + * @return boolean value indicating {@code true} = Success or {@code false} = Limit reached + */ public boolean addAddressBook() { if (allAddressBookFilePath.size() == MAX_ADDRESS_BOOK_LIMIT) { return false; @@ -87,13 +87,11 @@ public boolean addAddressBook() { String newBookName; if (allAddressBookFilePath.size() != 0) { newBookName = DEFAULT_ADDRESS_BOOK_NAME + allAddressBookFilePath.size() + ".json"; - } else { + } else { newBookName = DEFAULT_ADDRESS_BOOK_NAME + ".json"; } - Path newBook = Paths.get("data" , newBookName); allAddressBookFilePath.add(newBook); - System.out.println(allAddressBookFilePath); return true; } } @@ -101,7 +99,6 @@ public boolean addAddressBook() { public Path getNextAddressBookPath() { incrementIndex(); Path nextAddressBook = allAddressBookFilePath.get(addressBookIndex); - System.out.println("next book:" + nextAddressBook.toString()); setAddressBookFilePath(nextAddressBook); return nextAddressBook; } @@ -116,7 +113,7 @@ public void setStoredIndex(int index) { private void incrementIndex() { addressBookIndex += 1; - addressBookIndex = addressBookIndex%allAddressBookFilePath.size(); + addressBookIndex = addressBookIndex % allAddressBookFilePath.size(); } @Override diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 8a7feaf586c..0569d26a113 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -18,8 +18,6 @@ import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.exceptions.ParseException; -import static seedu.address.logic.LogicManager.FILE_OPS_ERROR_MESSAGE; - /** * The Main Window. Provides the basic application layout containing * a menu bar and space where other JavaFX elements can be placed. diff --git a/src/test/java/seedu/address/logic/commands/CommandResultTest.java b/src/test/java/seedu/address/logic/commands/CommandResultTest.java index 9bc88993c7a..92a648386ee 100644 --- a/src/test/java/seedu/address/logic/commands/CommandResultTest.java +++ b/src/test/java/seedu/address/logic/commands/CommandResultTest.java @@ -35,7 +35,7 @@ public void equals() { // different exit value -> returns false assertFalse(commandResult.equals(new CommandResult("feedback", - false, false, false,true))); + false, false, false, true))); } @Test diff --git a/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java b/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java index fb7c2c111c6..67be478399e 100644 --- a/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java @@ -1,12 +1,13 @@ package seedu.address.logic.commands; +import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.address.logic.commands.NewBookCommand.MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT; + import org.junit.jupiter.api.Test; + import seedu.address.model.Model; import seedu.address.model.ModelManager; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.NewBookCommand.MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT; - public class NewBookCommandTest { private Model model = new ModelManager(); private Model expectedModel = new ModelManager(); From 26a7fca08fbc49ae4217f1af267c6f34f57606ad Mon Sep 17 00:00:00 2001 From: KJunWei Date: Mon, 17 Oct 2022 22:36:09 +0800 Subject: [PATCH 059/208] Edit UserGuide.md --- docs/UserGuide.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 390f2552e08..7bc22e153ff 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -105,12 +105,29 @@ Edits the person at the specified `INDEX`. The index refers to the index number * Existing values will be updated to the input values. * When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. * You can remove all the person’s tags by typing `t/` without - specifying any tags after it. + specifying any tags after it. Examples: * `edit 1 p/91234567 e/johndoe@example.com` edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. * `edit 2 n/Betsy Crower t/` edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. +### Adding a remark : `remark` + +Adds or edits a remark of an existing person in TAB. + +Format: `remark INDEX r/REMARK` + +Modifies a remark of a person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ +* A person can have at most 1 remark. +* When editing remark, the existing remark of the person will be removed i.e adding of remarks is not cumulative. +* You can remove the person's remark field by typing `r/` without + specifying any message after it. + +Examples: +* `remark 1 r/Interested to be a TA` edits the remark field of the 1st person to be `Interested to be a TA`. +* `remark 2 r/remark_one r/remark_two` edits the remark field of the 2nd person to be `remark_two` and not `remark_one`. +* `remark 3 r/` clears the remark field of the 3rd person. + ### Editing the attendance of a student : `attendance` Edits the attendance of an existing student in TAB. From 40d404071de76f5e273cddafca536fa09c9e0cdf Mon Sep 17 00:00:00 2001 From: cxyterence Date: Tue, 18 Oct 2022 00:17:39 +0800 Subject: [PATCH 060/208] change the contact list panel to be more compact. --- .../model/person/position/Position.java | 2 ++ .../model/person/position/Professor.java | 4 +++ .../model/person/position/Student.java | 6 +++++ .../person/position/TeachingAssistant.java | 5 ++++ .../java/seedu/address/ui/InfoDisplay.java | 18 ++++++++++++- .../java/seedu/address/ui/PersonCard.java | 19 ++++---------- src/main/resources/view/InfoDisplay.fxml | 26 +++++++++++++++---- src/main/resources/view/PersonListCard.fxml | 20 +++++++------- 8 files changed, 69 insertions(+), 31 deletions(-) diff --git a/src/main/java/seedu/address/model/person/position/Position.java b/src/main/java/seedu/address/model/person/position/Position.java index 307b652c54f..85d017aaae1 100644 --- a/src/main/java/seedu/address/model/person/position/Position.java +++ b/src/main/java/seedu/address/model/person/position/Position.java @@ -55,6 +55,8 @@ public static Position buildPosition(String position) { } } + public abstract String toShow(); + public abstract String toString(); public abstract boolean equals(Object other); diff --git a/src/main/java/seedu/address/model/person/position/Professor.java b/src/main/java/seedu/address/model/person/position/Professor.java index b48c721bcfd..0e75d83f51e 100644 --- a/src/main/java/seedu/address/model/person/position/Professor.java +++ b/src/main/java/seedu/address/model/person/position/Professor.java @@ -49,6 +49,10 @@ public static boolean isValidRole(String test) { return false; } + @Override + public String toShow() { + return "Roles: " + roles; + } @Override public String toString() { diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index 314ade48fee..f5f65bcbeef 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -89,6 +89,12 @@ public static boolean isValidGrade(String test) { } } + @Override + public String toShow() { + return "Attendance: " + attendance + "\n" + + "Grade: " + grade; + } + @Override public String toString() { return "Student: attendance - " + attendance + ", grade - " + grade; diff --git a/src/main/java/seedu/address/model/person/position/TeachingAssistant.java b/src/main/java/seedu/address/model/person/position/TeachingAssistant.java index bc46df75deb..2d90768d9ad 100644 --- a/src/main/java/seedu/address/model/person/position/TeachingAssistant.java +++ b/src/main/java/seedu/address/model/person/position/TeachingAssistant.java @@ -49,6 +49,11 @@ public static boolean isValidAvailability(String test) { return false; } + @Override + public String toShow() { + return "Availability: " + availability; + } + @Override public String toString() { return "Teaching Assistant: " + availability; diff --git a/src/main/java/seedu/address/ui/InfoDisplay.java b/src/main/java/seedu/address/ui/InfoDisplay.java index 87469b06f13..c46d849f8b9 100644 --- a/src/main/java/seedu/address/ui/InfoDisplay.java +++ b/src/main/java/seedu/address/ui/InfoDisplay.java @@ -1,7 +1,10 @@ package seedu.address.ui; +import java.util.Comparator; + import javafx.fxml.FXML; import javafx.scene.control.Label; +import javafx.scene.layout.FlowPane; import javafx.scene.layout.Region; import seedu.address.model.person.Person; @@ -31,7 +34,13 @@ public class InfoDisplay extends UiPart { @FXML private Label email; @FXML + private FlowPane tags; + @FXML + private Label misc; + @FXML private Label address; + @FXML + private Label remark; public InfoDisplay() { super(FXML); @@ -43,10 +52,14 @@ public InfoDisplay() { public void setInfo(Person person) { this.person = person; name.setText(person.getName().fullName); - position.setText(person.getPosition().toString()); + position.setText(person.getPosition().value); phone.setText("Phone: " + person.getPhone().value); email.setText("Email: " + person.getEmail().value); + person.getTags().stream().sorted(Comparator.comparing(tag -> tag.tagName)) + .forEach(tag -> tags.getChildren().add(new Label(tag.tagName))); + misc.setText(person.getPosition().toShow()); address.setText("Address: " + person.getAddress().value); + remark.setText("Remarks: " + person.getRemark().value); } /** @@ -57,7 +70,10 @@ public void clearInfo() { position.setText(null); phone.setText(null); email.setText(null); + tags.getChildren().clear(); + misc.setText(null); address.setText(null); + remark.setText(null); } @Override diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java index fcbeef0a894..50639766c17 100644 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ b/src/main/java/seedu/address/ui/PersonCard.java @@ -1,10 +1,7 @@ package seedu.address.ui; -import java.util.Comparator; - import javafx.fxml.FXML; import javafx.scene.control.Label; -import javafx.scene.layout.FlowPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Region; import seedu.address.model.person.Person; @@ -33,17 +30,7 @@ public class PersonCard extends UiPart { @FXML private Label id; @FXML - private Label phone; - @FXML - private Label address; - @FXML private Label position; - @FXML - private Label email; - @FXML - private FlowPane tags; - @FXML - private Label remark; /** * Creates a {@code PersonCode} with the given {@code Person} and index to display. @@ -53,14 +40,18 @@ public PersonCard(Person person, int displayedIndex) { this.person = person; id.setText(displayedIndex + ". "); name.setText(person.getName().fullName); + position.setText(person.getPosition().value); + + /* phone.setText(person.getPhone().value); address.setText(person.getAddress().value); - position.setText(person.getPosition().toString()); remark.setText(person.getRemark().value); email.setText(person.getEmail().value); + person.getTags().stream() .sorted(Comparator.comparing(tag -> tag.tagName)) .forEach(tag -> tags.getChildren().add(new Label(tag.tagName))); + */ } @Override diff --git a/src/main/resources/view/InfoDisplay.fxml b/src/main/resources/view/InfoDisplay.fxml index 8322b3671d6..19be53abe35 100644 --- a/src/main/resources/view/InfoDisplay.fxml +++ b/src/main/resources/view/InfoDisplay.fxml @@ -6,6 +6,7 @@ + @@ -14,28 +15,43 @@ + + + + + + + diff --git a/src/main/resources/view/PersonListCard.fxml b/src/main/resources/view/PersonListCard.fxml index cea6264cee8..7d440b5801f 100644 --- a/src/main/resources/view/PersonListCard.fxml +++ b/src/main/resources/view/PersonListCard.fxml @@ -3,36 +3,34 @@ - + - + - + - + - + - - - + + + From 2aba3b6a19a4977131a7297eac49445c731b97f5 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Tue, 18 Oct 2022 01:00:19 +0800 Subject: [PATCH 061/208] Resolve merge conflicts --- .../seedu/address/logic/commands/CommandResult.java | 3 ++- .../java/seedu/address/logic/commands/ExitCommand.java | 2 +- .../java/seedu/address/logic/commands/HelpCommand.java | 2 +- .../seedu/address/logic/commands/NewBookCommand.java | 2 +- .../java/seedu/address/logic/commands/ShowCommand.java | 2 +- .../java/seedu/address/logic/commands/SwapCommand.java | 2 +- .../seedu/address/logic/parser/AddressBookParser.java | 1 - .../address/logic/commands/CommandResultTest.java | 10 +++++----- .../seedu/address/logic/commands/ExitCommandTest.java | 2 +- .../seedu/address/logic/commands/HelpCommandTest.java | 2 +- .../address/logic/commands/NewBookCommandTest.java | 2 +- .../seedu/address/logic/commands/SwapCommandTest.java | 2 +- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index ed1371ff0b0..57b08fadfb5 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -30,7 +30,8 @@ public class CommandResult { /** * Constructs a {@code CommandResult} with the specified fields. */ - public CommandResult(String feedbackToUser, Person personToShow, boolean showHelp, boolean showNewBook, boolean swap, boolean exit) { + public CommandResult(String feedbackToUser, Person personToShow, boolean showHelp, boolean showNewBook, + boolean swap, boolean exit) { this.feedbackToUser = requireNonNull(feedbackToUser); this.personToShow = personToShow; this.showHelp = showHelp; diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index 9e00bf17e2f..a2bdb3942ba 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -13,7 +13,7 @@ public class ExitCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, null, false, false, false, true); } } diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java index 492a3633fbd..18e1f5035bf 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/address/logic/commands/HelpCommand.java @@ -16,6 +16,6 @@ public class HelpCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false, false); + return new CommandResult(SHOWING_HELP_MESSAGE, null, true, false, false, false); } } diff --git a/src/main/java/seedu/address/logic/commands/NewBookCommand.java b/src/main/java/seedu/address/logic/commands/NewBookCommand.java index 0c9634bce57..c046d9b861b 100644 --- a/src/main/java/seedu/address/logic/commands/NewBookCommand.java +++ b/src/main/java/seedu/address/logic/commands/NewBookCommand.java @@ -13,7 +13,7 @@ public class NewBookCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT, + return new CommandResult(MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT, null, false, true, false, false); } diff --git a/src/main/java/seedu/address/logic/commands/ShowCommand.java b/src/main/java/seedu/address/logic/commands/ShowCommand.java index 3aff59a5992..50e9454a2a5 100644 --- a/src/main/java/seedu/address/logic/commands/ShowCommand.java +++ b/src/main/java/seedu/address/logic/commands/ShowCommand.java @@ -43,7 +43,7 @@ public CommandResult execute(Model model) throws CommandException { Person personToShow = lastShownList.get(index.getZeroBased()); - return new CommandResult(MESSAGE_SHOW_PERSON_SUCCESS, personToShow, false, false); + return new CommandResult(MESSAGE_SHOW_PERSON_SUCCESS, personToShow, false, false, false, false); } @Override diff --git a/src/main/java/seedu/address/logic/commands/SwapCommand.java b/src/main/java/seedu/address/logic/commands/SwapCommand.java index f0951939dd2..f3c504b1ea8 100644 --- a/src/main/java/seedu/address/logic/commands/SwapCommand.java +++ b/src/main/java/seedu/address/logic/commands/SwapCommand.java @@ -13,7 +13,7 @@ public class SwapCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_SWAP_ACKNOWLEDGEMENT, false, false, true, false); + return new CommandResult(MESSAGE_SWAP_ACKNOWLEDGEMENT, null, false, false, true, false); } } diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index f04a91969ce..c2abea855ff 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -25,7 +25,6 @@ import seedu.address.logic.commands.RolesCommand; import seedu.address.logic.commands.ShowCommand; import seedu.address.logic.commands.SwapCommand; - import seedu.address.logic.parser.exceptions.ParseException; /** diff --git a/src/test/java/seedu/address/logic/commands/CommandResultTest.java b/src/test/java/seedu/address/logic/commands/CommandResultTest.java index e9f2b177a97..b3e6d45c905 100644 --- a/src/test/java/seedu/address/logic/commands/CommandResultTest.java +++ b/src/test/java/seedu/address/logic/commands/CommandResultTest.java @@ -23,7 +23,7 @@ public void equals() { // same values -> returns true assertTrue(commandResult.equals(new CommandResult("feedback"))); assertTrue(commandResult.equals(new CommandResult("feedback", false, false))); - assertTrue(commandResult.equals(new CommandResult("feedback", null, false, false))); + assertTrue(commandResult.equals(new CommandResult("feedback", null, false, false, false, false))); // same object -> returns true assertTrue(commandResult.equals(commandResult)); @@ -38,11 +38,11 @@ public void equals() { assertFalse(commandResult.equals(new CommandResult("different"))); // different showHelp value -> returns false - assertFalse(commandResult.equals(new CommandResult("feedback", + assertFalse(commandResult.equals(new CommandResult("feedback", null, true, false, false, false))); // different exit value -> returns false - assertFalse(commandResult.equals(new CommandResult("feedback", + assertFalse(commandResult.equals(new CommandResult("feedback", null, false, false, false, true))); } @@ -57,11 +57,11 @@ public void hashcode() { assertNotEquals(commandResult.hashCode(), new CommandResult("different").hashCode()); // different showHelp value -> returns different hashcode - assertNotEquals(commandResult.hashCode(), new CommandResult("feedback", + assertNotEquals(commandResult.hashCode(), new CommandResult("feedback", null, true, false, false, false).hashCode()); // different exit value -> returns different hashcode - assertNotEquals(commandResult.hashCode(), new CommandResult("feedback", + assertNotEquals(commandResult.hashCode(), new CommandResult("feedback", null, false, false, false, true).hashCode()); } } diff --git a/src/test/java/seedu/address/logic/commands/ExitCommandTest.java b/src/test/java/seedu/address/logic/commands/ExitCommandTest.java index 8f7abe04c91..b37a266271d 100644 --- a/src/test/java/seedu/address/logic/commands/ExitCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/ExitCommandTest.java @@ -14,7 +14,7 @@ public class ExitCommandTest { @Test public void execute_exit_success() { - CommandResult expectedCommandResult = new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, + CommandResult expectedCommandResult = new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, null, false, false, false, true); assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel); } diff --git a/src/test/java/seedu/address/logic/commands/HelpCommandTest.java b/src/test/java/seedu/address/logic/commands/HelpCommandTest.java index 930083d3874..4885d8f340b 100644 --- a/src/test/java/seedu/address/logic/commands/HelpCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/HelpCommandTest.java @@ -14,7 +14,7 @@ public class HelpCommandTest { @Test public void execute_help_success() { - CommandResult expectedCommandResult = new CommandResult(SHOWING_HELP_MESSAGE, + CommandResult expectedCommandResult = new CommandResult(SHOWING_HELP_MESSAGE, null, true, false, false, false); assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel); } diff --git a/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java b/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java index 67be478399e..14cbe939be7 100644 --- a/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java @@ -14,7 +14,7 @@ public class NewBookCommandTest { @Test public void execute_help_success() { - CommandResult expectedCommandResult = new CommandResult(MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT, + CommandResult expectedCommandResult = new CommandResult(MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT, null, false, true, false, false); assertCommandSuccess(new NewBookCommand(), model, expectedCommandResult, expectedModel); } diff --git a/src/test/java/seedu/address/logic/commands/SwapCommandTest.java b/src/test/java/seedu/address/logic/commands/SwapCommandTest.java index 53cf147d33a..4438e423c06 100644 --- a/src/test/java/seedu/address/logic/commands/SwapCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/SwapCommandTest.java @@ -14,7 +14,7 @@ public class SwapCommandTest { @Test public void execute_help_success() { - CommandResult expectedCommandResult = new CommandResult(MESSAGE_SWAP_ACKNOWLEDGEMENT, + CommandResult expectedCommandResult = new CommandResult(MESSAGE_SWAP_ACKNOWLEDGEMENT, null, false, false, true, false); assertCommandSuccess(new SwapCommand(), model, expectedCommandResult, expectedModel); } From 80e52359eeda2b2d891f0bdb907404e6915aa082 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Tue, 18 Oct 2022 17:02:31 +0800 Subject: [PATCH 062/208] Add displaying function when clicking --- src/main/java/seedu/address/ui/MainWindow.java | 4 ++-- src/main/java/seedu/address/ui/PersonListPanel.java | 12 +++++++++++- src/main/resources/view/PersonListPanel.fxml | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 00bb191089b..9523a1c7ea2 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -114,7 +114,7 @@ private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) { * Fills up all the placeholders of this window. */ void fillInnerParts() { - personListPanel = new PersonListPanel(logic.getFilteredPersonList()); + personListPanel = new PersonListPanel(logic.getFilteredPersonList(), this); personListPanelPlaceholder.getChildren().add(personListPanel.getRoot()); resultDisplay = new ResultDisplay(); @@ -197,7 +197,7 @@ public PersonListPanel getPersonListPanel() { * * @see seedu.address.logic.Logic#execute(String) */ - private CommandResult executeCommand(String commandText) throws CommandException, ParseException { + public CommandResult executeCommand(String commandText) throws CommandException, ParseException { try { CommandResult commandResult = logic.execute(commandText); logger.info("Result: " + commandResult.getFeedbackToUser()); diff --git a/src/main/java/seedu/address/ui/PersonListPanel.java b/src/main/java/seedu/address/ui/PersonListPanel.java index f4c501a897b..488627ee634 100644 --- a/src/main/java/seedu/address/ui/PersonListPanel.java +++ b/src/main/java/seedu/address/ui/PersonListPanel.java @@ -8,6 +8,8 @@ import javafx.scene.control.ListView; import javafx.scene.layout.Region; import seedu.address.commons.core.LogsCenter; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.person.Person; /** @@ -20,13 +22,21 @@ public class PersonListPanel extends UiPart { @FXML private ListView personListView; + private MainWindow mw; /** * Creates a {@code PersonListPanel} with the given {@code ObservableList}. */ - public PersonListPanel(ObservableList personList) { + public PersonListPanel(ObservableList personList, MainWindow mw) { super(FXML); personListView.setItems(personList); personListView.setCellFactory(listView -> new PersonListViewCell()); + this.mw = mw; + } + + @FXML + private void displayInfo() throws CommandException, ParseException { + int x = personListView.getSelectionModel().getSelectedIndex() + 1; + mw.executeCommand("show " + x); } /** diff --git a/src/main/resources/view/PersonListPanel.fxml b/src/main/resources/view/PersonListPanel.fxml index 8836d323cc5..c83df816375 100644 --- a/src/main/resources/view/PersonListPanel.fxml +++ b/src/main/resources/view/PersonListPanel.fxml @@ -4,5 +4,5 @@ - + From f366036baf68be8251e17fb2b7f931475ad16a8c Mon Sep 17 00:00:00 2001 From: KJunWei Date: Tue, 18 Oct 2022 17:10:04 +0800 Subject: [PATCH 063/208] Add method in MainWindow.java --- src/main/java/seedu/address/ui/MainWindow.java | 6 +++++- src/main/java/seedu/address/ui/PersonListPanel.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 9523a1c7ea2..6cbe943237e 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -197,7 +197,7 @@ public PersonListPanel getPersonListPanel() { * * @see seedu.address.logic.Logic#execute(String) */ - public CommandResult executeCommand(String commandText) throws CommandException, ParseException { + private CommandResult executeCommand(String commandText) throws CommandException, ParseException { try { CommandResult commandResult = logic.execute(commandText); logger.info("Result: " + commandResult.getFeedbackToUser()); @@ -233,4 +233,8 @@ public CommandResult executeCommand(String commandText) throws CommandException, throw e; } } + + public void handlePersonListPanelEdits(String s) throws CommandException, ParseException { + this.executeCommand(s); + } } diff --git a/src/main/java/seedu/address/ui/PersonListPanel.java b/src/main/java/seedu/address/ui/PersonListPanel.java index 488627ee634..d47399b756d 100644 --- a/src/main/java/seedu/address/ui/PersonListPanel.java +++ b/src/main/java/seedu/address/ui/PersonListPanel.java @@ -36,7 +36,7 @@ public PersonListPanel(ObservableList personList, MainWindow mw) { @FXML private void displayInfo() throws CommandException, ParseException { int x = personListView.getSelectionModel().getSelectedIndex() + 1; - mw.executeCommand("show " + x); + mw.handlePersonListPanelEdits("show " + x); } /** From d3b47e19afc61f8b20cbadc081409ea127a891a3 Mon Sep 17 00:00:00 2001 From: vantemoon Date: Tue, 18 Oct 2022 23:01:50 +0800 Subject: [PATCH 064/208] Edit the grade command to update grade of individual assignment --- .../address/logic/commands/GradeCommand.java | 40 +++++++----- .../seedu/address/logic/parser/CliSyntax.java | 1 + .../logic/parser/GradeCommandParser.java | 23 ++++--- .../address/model/person/Assignment.java | 32 +++++++++- .../model/person/position/Student.java | 63 ++++++++++--------- 5 files changed, 104 insertions(+), 55 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/GradeCommand.java b/src/main/java/seedu/address/logic/commands/GradeCommand.java index 8daee8a6c88..74bac95e356 100644 --- a/src/main/java/seedu/address/logic/commands/GradeCommand.java +++ b/src/main/java/seedu/address/logic/commands/GradeCommand.java @@ -1,6 +1,7 @@ package seedu.address.logic.commands; import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT; import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE; import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; @@ -20,28 +21,34 @@ public class GradeCommand extends Command { public static final String COMMAND_WORD = "grade"; public static final String MESSAGE_USAGE = COMMAND_WORD - + ": Edits the grade of the Student identified " - + "by the index number used in the last person listing.\n" - + "Parameters: INDEX (must be a positive integer) " - + PREFIX_GRADE - + "GRADE ([smaller integer]/[bigger integer up to 99999])\n" - + "Example: " + COMMAND_WORD + " 1 " - + PREFIX_GRADE + "1/2."; + + ": Edits the grade of the Assignment of a student" + + " identified by the index number used in the last person listing.\n" + + "Parameters: " + + "INDEX OF THE STUDENT (must be a positive integer) " + + PREFIX_ASSIGNMENT + "INDEX OF THE ASSIGNMENT (must be a positive integer) " + + PREFIX_GRADE + "GRADE ([smaller integer]/[bigger integer up to 99999])\n" + + "Example: " + COMMAND_WORD + " " + + "1 " + PREFIX_ASSIGNMENT + "1 " + + PREFIX_GRADE + "18/20."; public static final String MESSAGE_PERSON_NOT_STUDENT = "The person to edit is not a student, there is no " + "grade to be edited."; + public static final String MESSAGE_ASSIGNMENT_INVALID = "The index of the assignment is invalid."; public static final String MESSAGE_EDIT_GRADE_SUCCESS = "Edited grade to student: %1$s"; - private final Index index; + private final Index indexOfStudent; + private final Index indexOfAssignment; private final String grade; /** - * @param index of the student in the filtered person list to edit the grade + * @param indexOfStudent Index of the student in the filtered person list to edit the grade + * @param indexOfAssignment Index of the assignment in the student's assignment list * @param grade of the student to be updated to */ - public GradeCommand(Index index, String grade) { - requireAllNonNull(index, grade); + public GradeCommand(Index indexOfStudent, Index indexOfAssignment, String grade) { + requireAllNonNull(indexOfStudent, indexOfAssignment, grade); - this.index = index; + this.indexOfStudent = indexOfStudent; + this.indexOfAssignment = indexOfAssignment; this.grade = grade; } @@ -56,16 +63,17 @@ public GradeCommand(Index index, String grade) { public CommandResult execute(Model model) throws CommandException { List lastShownList = model.getFilteredPersonList(); - if (index.getZeroBased() >= lastShownList.size()) { + if (indexOfStudent.getZeroBased() >= lastShownList.size()) { throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); } - Person personToEdit = lastShownList.get(index.getZeroBased()); + Person personToEdit = lastShownList.get(indexOfStudent.getZeroBased()); if (!(personToEdit.getPosition() instanceof Student)) { throw new CommandException(MESSAGE_PERSON_NOT_STUDENT); } Student currPosition = (Student) personToEdit.getPosition(); - currPosition.setGrade(grade); + currPosition.setAssignmentGrade(indexOfAssignment, grade); + currPosition.updateOverallGrade(); Person editedPerson = personToEdit; model.setPerson(personToEdit, editedPerson); @@ -96,7 +104,7 @@ public boolean equals(Object other) { // state check GradeCommand e = (GradeCommand) other; - return index.equals(e.index) + return indexOfStudent.equals(e.indexOfStudent) && grade.equals(e.grade); } diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 70b620541b0..abcf4b750f3 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -17,6 +17,7 @@ public class CliSyntax { public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); public static final Prefix PREFIX_REMARK = new Prefix("r/"); + public static final Prefix PREFIX_ASSIGNMENT = new Prefix("assignment/"); public static final Prefix PREFIX_ASSIGNMENTS = new Prefix("assignments/"); } diff --git a/src/main/java/seedu/address/logic/parser/GradeCommandParser.java b/src/main/java/seedu/address/logic/parser/GradeCommandParser.java index ac46c199584..39b2472ddae 100644 --- a/src/main/java/seedu/address/logic/parser/GradeCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/GradeCommandParser.java @@ -2,13 +2,14 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT; import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE; import seedu.address.commons.core.index.Index; import seedu.address.commons.exceptions.IllegalValueException; import seedu.address.logic.commands.GradeCommand; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.position.Student; +import seedu.address.model.person.Assignment; /** * Parses input arguments and creates a new GradeCommand object @@ -21,22 +22,30 @@ public class GradeCommandParser implements Parser { */ public GradeCommand parse(String args) throws ParseException { requireNonNull(args); - ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_GRADE); + ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_ASSIGNMENT, PREFIX_GRADE); - Index index; + Index indexOfStudent; try { - index = ParserUtil.parseIndex(argMultimap.getPreamble()); + indexOfStudent = ParserUtil.parseIndex(argMultimap.getPreamble()); + } catch (IllegalValueException ive) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, + GradeCommand.MESSAGE_USAGE), ive); + } + + Index indexOfAssignment; + try { + indexOfAssignment = ParserUtil.parseIndex(argMultimap.getValue(PREFIX_ASSIGNMENT).get()); } catch (IllegalValueException ive) { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, GradeCommand.MESSAGE_USAGE), ive); } String grade = argMultimap.getValue(PREFIX_GRADE).orElse(""); - if (!Student.isValidGrade(grade)) { - throw new ParseException(Student.GRADE_CONSTRAINTS); + if (!Assignment.isValidGrade(grade)) { + throw new ParseException(Assignment.GRADE_CONSTRAINTS); } - return new GradeCommand(index, grade); + return new GradeCommand(indexOfStudent, indexOfAssignment, grade); } } diff --git a/src/main/java/seedu/address/model/person/Assignment.java b/src/main/java/seedu/address/model/person/Assignment.java index 75cad404a28..6a97e0819d2 100644 --- a/src/main/java/seedu/address/model/person/Assignment.java +++ b/src/main/java/seedu/address/model/person/Assignment.java @@ -21,8 +21,9 @@ public class Assignment { "Weightage should be in terms of percentages, i.e. 0 - 100"; private final String name; - private final String grade; + private String grade; private final String weightage; + private boolean isGradeUpdated; /** * Constructs an {@code Assignment}. @@ -38,6 +39,7 @@ public Assignment(String name, String weightage) { this.name = name; this.grade = "0/0"; this.weightage = weightage; + this.isGradeUpdated = false; } /** @@ -56,12 +58,18 @@ public Assignment(String name, String grade, String weightage) { this.name = name; this.grade = grade; this.weightage = weightage; + this.isGradeUpdated = false; } /** * Returns if a given string is a valid grade. */ public static boolean isValidGrade(String test) { - return test.matches(GRADE_VALIDATION_REGEX); + if (!test.matches(GRADE_VALIDATION_REGEX)) { + return false; + } else { + String[] split = test.split("/"); + return Integer.parseInt(split[0]) <= Integer.parseInt(split[1]); + } } /** @@ -71,6 +79,26 @@ public static boolean isValidWeightage(String test) { return test.matches(WEIGHTAGE_VALIDATION_REGEX); } + public void setGrade(String grade) { + this.grade = grade; + this.isGradeUpdated = true; + } + + public int getWeightage() { + return Integer.parseInt(weightage); + } + + public float getGradePercentage() { + float gradeAchieved = (float) Integer.parseInt(grade.split("/")[0]); + float fullMark = (float) Integer.parseInt(grade.split("/")[1]); + float gradePercentage = gradeAchieved / fullMark; + return gradePercentage; + } + + public boolean getIsGradeUpdated() { + return isGradeUpdated; + } + @Override public String toString() { return "(" + name + " Score: " + grade + " Weightage: " + weightage + "%" + ")"; diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index b5ec5d5b562..ec03ec597a4 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -4,6 +4,7 @@ import java.util.ArrayList; +import seedu.address.commons.core.index.Index; import seedu.address.model.person.Assignment; /** @@ -18,18 +19,12 @@ public class Student extends Position { public static final String ATTENDANCE_VALIDATION_REGEX = "\\d{1,3}" + "/" + "\\d{1,3}"; - public static final String GRADE_CONSTRAINTS = - "Grade should be in the format [number]/[number], where the first number is greater " - + "or equal to the second number (max 99999)."; - public static final String ASSIGNMENT_CONSTRAINTS = "Incorrect Assignments"; - public static final String GRADE_VALIDATION_REGEX = "\\d{1,5}" + "/" + "\\d{1,5}"; - private String attendance; - private String grade; + private String overallGrade; private ArrayList assignmentsList; @@ -39,7 +34,7 @@ public class Student extends Position { public Student() { super("Student"); this.attendance = "0/0"; - this.grade = "0/0"; + this.overallGrade = "0/0"; this.assignmentsList = new ArrayList<>(); } @@ -84,17 +79,38 @@ public static boolean isValidAssignments(String test) { return totalWeightage == 100; } - public void setGrade(String grade) { - requireNonNull(grade); - this.grade = grade; + public void setOverallGrade(String overallGrade) { + this.overallGrade = overallGrade; } + + /** + * Updates the overall grade of the student when the grade of + * one of their assignments in changed. + */ + public void updateOverallGrade() { + int totalWeightage = 0; + float totalGrade = 0; + for (Assignment assignment: assignmentsList) { + if (assignment.getIsGradeUpdated()) { + totalWeightage += assignment.getWeightage(); + totalGrade += assignment.getGradePercentage() * assignment.getWeightage(); + } + } + overallGrade = String.format("%.2f/%d", totalGrade, totalWeightage); + } + + public void setAssignmentGrade(Index indexOfAssignment, String grade) { + Assignment assignmentToEdit = assignmentsList.get(indexOfAssignment.getZeroBased()); + assignmentToEdit.setGrade(grade); + } + @Override public void setDetails(String details) { String[] gradeAndAttendance = isolateDetails(details); - String grade = gradeAndAttendance[0]; + String overallGrade = gradeAndAttendance[0]; String attendance = gradeAndAttendance[1]; String assignments = gradeAndAttendance[2]; - setGrade(grade); + setOverallGrade(overallGrade); setAttendance(attendance); setPreviousAssignments(assignments); } @@ -115,19 +131,6 @@ public String[] isolateDetails(String details) { return gradeAttendanceAssignments; } - /** - * Returns true if a given string is a valid grade. - */ - public static boolean isValidGrade(String test) { - if (!test.matches(GRADE_VALIDATION_REGEX)) { - return false; - } else { - String[] split = test.split("/"); - return Integer.parseInt(split[0]) <= Integer.parseInt(split[1]); - } - } - - public void setAssignments(String assignments) { String[] splitStr = assignments.split(", "); int len = splitStr.length; @@ -145,7 +148,6 @@ public void setAssignments(String assignments) { public void setPreviousAssignments(String assignments) { - String trimmedAssignments = trimAssignments(assignments); if (trimmedAssignments.equals("")) { @@ -166,6 +168,7 @@ public void setPreviousAssignments(String assignments) { addAssignments(a); } } + /** * Returns true if a given string is a valid grade. */ @@ -185,12 +188,12 @@ public void addAssignments(Assignment assignment) { @Override public String toShow() { return "Attendance: " + attendance + "\n" - + "Grade: " + grade; + + "Grade: " + overallGrade; } @Override public String toString() { - return "Student: attendance - " + attendance + ", grade - " + grade + return "Student: attendance - " + attendance + ", grade - " + overallGrade + "\nAssignments: " + assignmentsList.toString(); } @@ -206,7 +209,7 @@ public int hashcode() { @Override public String getDetails() { - return "attendance - " + attendance + ", grade - " + grade + " Assignments: " + assignmentsList; + return "attendance - " + attendance + ", grade - " + overallGrade + " Assignments: " + assignmentsList; } From 38ba5d4e3719ac213cc329247754f5d57ebae82a Mon Sep 17 00:00:00 2001 From: vantemoon Date: Tue, 18 Oct 2022 23:13:13 +0800 Subject: [PATCH 065/208] Handle the exception when the index of the assignment is invalid. --- .../address/logic/commands/GradeCommand.java | 1 - .../address/model/person/position/Student.java | 16 +++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/GradeCommand.java b/src/main/java/seedu/address/logic/commands/GradeCommand.java index 74bac95e356..68494698f1a 100644 --- a/src/main/java/seedu/address/logic/commands/GradeCommand.java +++ b/src/main/java/seedu/address/logic/commands/GradeCommand.java @@ -32,7 +32,6 @@ public class GradeCommand extends Command { + PREFIX_GRADE + "18/20."; public static final String MESSAGE_PERSON_NOT_STUDENT = "The person to edit is not a student, there is no " + "grade to be edited."; - public static final String MESSAGE_ASSIGNMENT_INVALID = "The index of the assignment is invalid."; public static final String MESSAGE_EDIT_GRADE_SUCCESS = "Edited grade to student: %1$s"; private final Index indexOfStudent; diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index ec03ec597a4..b09418cf8d8 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.person.Assignment; /** @@ -16,16 +17,13 @@ public class Student extends Position { public static final String ATTENDANCE_CONSTRAINTS = "Attendance should be in the format [number]/[number], where the first number is greater " + "or equal to the second number (max 999)."; - public static final String ATTENDANCE_VALIDATION_REGEX = "\\d{1,3}" + "/" + "\\d{1,3}"; - + public static final String MESSAGE_ASSIGNMENT_INVALID = "The index of the assignment is invalid."; public static final String ASSIGNMENT_CONSTRAINTS = "Incorrect Assignments"; private String attendance; - private String overallGrade; - private ArrayList assignmentsList; /** @@ -79,6 +77,11 @@ public static boolean isValidAssignments(String test) { return totalWeightage == 100; } + public boolean isValidAssignmentIndex(Index indexOfAssignment) { + return indexOfAssignment.getZeroBased() >= 0 + && indexOfAssignment.getZeroBased() < assignmentsList.size(); + } + public void setOverallGrade(String overallGrade) { this.overallGrade = overallGrade; } @@ -99,7 +102,10 @@ public void updateOverallGrade() { overallGrade = String.format("%.2f/%d", totalGrade, totalWeightage); } - public void setAssignmentGrade(Index indexOfAssignment, String grade) { + public void setAssignmentGrade(Index indexOfAssignment, String grade) throws CommandException { + if (!isValidAssignmentIndex(indexOfAssignment)) { + throw new CommandException(MESSAGE_ASSIGNMENT_INVALID); + } Assignment assignmentToEdit = assignmentsList.get(indexOfAssignment.getZeroBased()); assignmentToEdit.setGrade(grade); } From 274875c3f1abf7d1b78f1a56377976de1e556076 Mon Sep 17 00:00:00 2001 From: Markus Wee <77526609+yellow-294@users.noreply.github.com> Date: Tue, 18 Oct 2022 23:14:10 +0800 Subject: [PATCH 066/208] Improve Code Quality & Ammend JavaDocs --- .../address/logic/commands/AddAssignmentsCommand.java | 7 ++++--- .../address/logic/parser/AddAssignmentsCommandParser.java | 6 +++--- src/main/java/seedu/address/model/person/Assignment.java | 8 +++++++- .../java/seedu/address/model/person/position/Student.java | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java b/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java index 5481148b464..e6cb8e54a40 100644 --- a/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java @@ -11,7 +11,7 @@ import seedu.address.model.person.position.Student; /** - * Changes the grade of an existing student in the address book. + * Adds assignments to all existing students in the address book. */ public class AddAssignmentsCommand extends Command { public static final String COMMAND_WORD = "assignments"; @@ -62,7 +62,8 @@ public CommandResult execute(Model model) throws CommandException { } /** - * Generates a command execution success message based on whether the availability is edited for + * Generates a command execution success message based on whether the assignments are added to all existing + * students in the address book * {@code personToEdit}. */ private String generateSuccessMessage() { @@ -78,7 +79,7 @@ public boolean equals(Object other) { } // instanceof handles nulls - if (!(other instanceof AvailabilityCommand)) { + if (!(other instanceof AddAssignmentsCommand)) { return false; } diff --git a/src/main/java/seedu/address/logic/parser/AddAssignmentsCommandParser.java b/src/main/java/seedu/address/logic/parser/AddAssignmentsCommandParser.java index d7fd2ef0c7e..eb920c58878 100644 --- a/src/main/java/seedu/address/logic/parser/AddAssignmentsCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddAssignmentsCommandParser.java @@ -8,12 +8,12 @@ import seedu.address.model.person.position.Student; /** - * Parses input arguments and creates a new AvailabilityCommand object + * Parses input arguments and creates a new AddAssignmentsCommand object */ public class AddAssignmentsCommandParser implements Parser { /** - * Parses the given {@code String} of arguments in the context of the {@code AvailabilityCommand} - * and returns a {@code AvailabilityCommand} object for execution. + * Parses the given {@code String} of arguments in the context of the {@code AddAssignmentsCommand} + * and returns a {@code AddAssignmentsCommand} object for execution. * * @throws ParseException if the user input does not conform the expected format */ diff --git a/src/main/java/seedu/address/model/person/Assignment.java b/src/main/java/seedu/address/model/person/Assignment.java index 75cad404a28..53312be1c28 100644 --- a/src/main/java/seedu/address/model/person/Assignment.java +++ b/src/main/java/seedu/address/model/person/Assignment.java @@ -61,7 +61,13 @@ public Assignment(String name, String grade, String weightage) { * Returns if a given string is a valid grade. */ public static boolean isValidGrade(String test) { - return test.matches(GRADE_VALIDATION_REGEX); + + if (!test.matches(GRADE_VALIDATION_REGEX)) { + return false; + } else { + String[] split = test.split("/"); + return Integer.parseInt(split[0]) <= Integer.parseInt(split[1]); + } } /** diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index b5ec5d5b562..ee2e4db82ed 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -100,7 +100,7 @@ public void setDetails(String details) { } /** - * method used to isolate the grade and attendance values in its details + * Isolates the grade, attendance, and assignments values in the details * @param details A valid detail. * @return a String[] with its first element being the grade and the 2nd element the attendance */ From 3039f10f5b3b7be8981f4bb558dd73923055510a Mon Sep 17 00:00:00 2001 From: vantemoon Date: Tue, 18 Oct 2022 23:15:39 +0800 Subject: [PATCH 067/208] Fix CheckStyle error --- .../java/seedu/address/model/person/position/Student.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index b09418cf8d8..38fa1655236 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -77,6 +77,11 @@ public static boolean isValidAssignments(String test) { return totalWeightage == 100; } + /** + * Returns true if the given index of assignment to be edited is valid. + * @param indexOfAssignment Index of the assignment to be edited + * @return whether the given index is valid + */ public boolean isValidAssignmentIndex(Index indexOfAssignment) { return indexOfAssignment.getZeroBased() >= 0 && indexOfAssignment.getZeroBased() < assignmentsList.size(); From b0c50ec84b349b0c57608b842ad9d35cd9651043 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 18 Oct 2022 23:44:34 +0800 Subject: [PATCH 068/208] change dev guide (TODO: diagrams) --- docs/DeveloperGuide.md | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 760e8f6157d..e2066a16c70 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -238,6 +238,61 @@ _{more aspects and alternatives to be added}_ _{Explain here how the data archiving feature will be implemented}_ +### Multiple Teacher’s Address Books (TABs) +**Feature Summary** +- Users are able to create multiple TABs (currently limited to 5). + - Through `new` command +- Users are able to swap between the TABs + - Through `swap` command + +**Implementation** + +Current implementation consists of two parts. First part is creating new books, second part is swapping between books. + +**Creating new Books** + +This feature builds on `MainWindow` class to facilitate communication between the UI and backend functions. It +communicates with `Logic` to create new TABs and uses `Model` class to alter the current `UserPref` instance. + +**Swapping between Books** + +This feature, similar to creating new TABs builds on `MainWindow` class and communicates with `Logic` class to swap +between TABs. It uses `Model` class to fetch the next TAB from `UserPref`. The TABs' information are stored as an +array under `preferences.json` as well as the current TAB's index. `UserPref` loops around the array when it reaches +the end. `Logic` then make use of the path information to call `storage` to update the current TAB. + +**Example** +Given below is an example usage scenario and how the creation of new TAB mechanism behaves at each step. + +Step 1: User enters the `new` command into the Command-Line Interface (CLI) or user navigates via `Files -> New Book` to +create a new TAB. + +TODO: Add sequence diagram + +Step 1.1: User adds X amount of TABs (up to 5) + +TODO: Add State diagram + +Step 2: User enters the `swap` command or navigates via `Files -> New Book` to toggle between TABs. + +TODO: Add sequence diagram + +**Design Considerations** + +- Alternative 1 (current choice): Toggle between books + - Pros: + - Swapping between TAB occurs within 1 window + - Open for future features + - Cons: + - Might be more prone to bugs due to complex implementations + - Might be slower to load between books +- Alternative 2: Multiple copies of .java applications + - Pros + - Easier to implement + - Can have multiple books open at once + - Cons: + - User need to create multiple books + - Less open to future feature extensions (communicate between books) -------------------------------------------------------------------------------------------------------------------- From 0ee08cf1835086bd153666650468d4e08c2f5cc1 Mon Sep 17 00:00:00 2001 From: vantemoon Date: Wed, 19 Oct 2022 00:54:10 +0800 Subject: [PATCH 069/208] Improve the code quality related to command executions --- .../logic/commands/AddAssignmentsCommand.java | 15 +++++--- .../logic/commands/AttendanceCommand.java | 12 +++++-- .../logic/commands/AvailabilityCommand.java | 11 ++++-- .../address/logic/commands/GradeCommand.java | 13 +++++-- .../address/logic/commands/RolesCommand.java | 11 ++++-- .../model/person/position/Professor.java | 9 +++++ .../model/person/position/Student.java | 36 ++++++++++++++++--- .../person/position/TeachingAssistant.java | 13 +++++-- 8 files changed, 99 insertions(+), 21 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java b/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java index 5481148b464..b2ea531de85 100644 --- a/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java @@ -18,8 +18,7 @@ public class AddAssignmentsCommand extends Command { public static final String MESSAGE_USAGE = COMMAND_WORD + ": adds assignments. Format: [name] w/[weightage]"; - - public static final String MESSAGE_ADD_ASSIGNMENTS_SUCCESS = "Added Assignments to all students"; + public static final String MESSAGE_ADD_ASSIGNMENTS_SUCCESS = "Added Assignments to all students."; private final String assignments; @@ -49,8 +48,16 @@ public CommandResult execute(Model model) throws CommandException { Person personToEdit = lastShownList.get(i); if ((personToEdit.getPosition() instanceof Student)) { Student currPosition = (Student) personToEdit.getPosition(); - currPosition.setAssignments(assignments); - Person editedPerson = personToEdit; + Student editedPosition = new Student(currPosition.getAttendance(), + currPosition.getOverallGrade(), + currPosition.setAssignments(assignments)); + Person editedPerson = new Person(personToEdit.getName(), + personToEdit.getPhone(), + personToEdit.getEmail(), + editedPosition, + personToEdit.getAddress(), + personToEdit.getRemark(), + personToEdit.getTags()); model.setPerson(personToEdit, editedPerson); model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); diff --git a/src/main/java/seedu/address/logic/commands/AttendanceCommand.java b/src/main/java/seedu/address/logic/commands/AttendanceCommand.java index 45cfaf369c7..e2e7830a90a 100644 --- a/src/main/java/seedu/address/logic/commands/AttendanceCommand.java +++ b/src/main/java/seedu/address/logic/commands/AttendanceCommand.java @@ -65,8 +65,16 @@ public CommandResult execute(Model model) throws CommandException { throw new CommandException(MESSAGE_PERSON_NOT_STUDENT); } Student currPosition = (Student) personToEdit.getPosition(); - currPosition.setAttendance(attendance); - Person editedPerson = personToEdit; + Student editedPosition = new Student(attendance, + currPosition.getOverallGrade(), + currPosition.getAssignmentsList()); + Person editedPerson = new Person(personToEdit.getName(), + personToEdit.getPhone(), + personToEdit.getEmail(), + editedPosition, + personToEdit.getAddress(), + personToEdit.getRemark(), + personToEdit.getTags()); model.setPerson(personToEdit, editedPerson); model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); diff --git a/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java b/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java index ab2614dcaed..335c79d121b 100644 --- a/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java +++ b/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java @@ -64,9 +64,14 @@ public CommandResult execute(Model model) throws CommandException { if (!(personToEdit.getPosition() instanceof TeachingAssistant)) { throw new CommandException(MESSAGE_PERSON_NOT_TA); } - TeachingAssistant currPosition = (TeachingAssistant) personToEdit.getPosition(); - currPosition.setDetails(availability); - Person editedPerson = personToEdit; + TeachingAssistant editedPosition = new TeachingAssistant(availability); + Person editedPerson = new Person(personToEdit.getName(), + personToEdit.getPhone(), + personToEdit.getEmail(), + editedPosition, + personToEdit.getAddress(), + personToEdit.getRemark(), + personToEdit.getTags()); model.setPerson(personToEdit, editedPerson); model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); diff --git a/src/main/java/seedu/address/logic/commands/GradeCommand.java b/src/main/java/seedu/address/logic/commands/GradeCommand.java index 68494698f1a..36f3ca72dbc 100644 --- a/src/main/java/seedu/address/logic/commands/GradeCommand.java +++ b/src/main/java/seedu/address/logic/commands/GradeCommand.java @@ -71,9 +71,16 @@ public CommandResult execute(Model model) throws CommandException { throw new CommandException(MESSAGE_PERSON_NOT_STUDENT); } Student currPosition = (Student) personToEdit.getPosition(); - currPosition.setAssignmentGrade(indexOfAssignment, grade); - currPosition.updateOverallGrade(); - Person editedPerson = personToEdit; + Student editedPosition = new Student(currPosition.getAttendance(), + currPosition.updateOverallGrade(indexOfAssignment, grade), + currPosition.getAssignmentsList()); + Person editedPerson = new Person(personToEdit.getName(), + personToEdit.getPhone(), + personToEdit.getEmail(), + editedPosition, + personToEdit.getAddress(), + personToEdit.getRemark(), + personToEdit.getTags()); model.setPerson(personToEdit, editedPerson); model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); diff --git a/src/main/java/seedu/address/logic/commands/RolesCommand.java b/src/main/java/seedu/address/logic/commands/RolesCommand.java index 5146503ee41..da75e87c5b2 100644 --- a/src/main/java/seedu/address/logic/commands/RolesCommand.java +++ b/src/main/java/seedu/address/logic/commands/RolesCommand.java @@ -65,9 +65,14 @@ public CommandResult execute(Model model) throws CommandException { if (!(personToEdit.getPosition() instanceof Professor)) { throw new CommandException(MESSAGE_PERSON_NOT_PROFESSOR); } - Professor currPosition = (Professor) personToEdit.getPosition(); - currPosition.setDetails(roles); - Person editedPerson = personToEdit; + Professor editedPosition = new Professor(roles); + Person editedPerson = new Person(personToEdit.getName(), + personToEdit.getPhone(), + personToEdit.getEmail(), + editedPosition, + personToEdit.getAddress(), + personToEdit.getRemark(), + personToEdit.getTags()); model.setPerson(personToEdit, editedPerson); model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); diff --git a/src/main/java/seedu/address/model/person/position/Professor.java b/src/main/java/seedu/address/model/person/position/Professor.java index 0e75d83f51e..cebc9d88233 100644 --- a/src/main/java/seedu/address/model/person/position/Professor.java +++ b/src/main/java/seedu/address/model/person/position/Professor.java @@ -29,8 +29,17 @@ public enum Role { public Professor() { super("Professor"); roles = "Unassigned"; + } + /** + * Creates a professor with the given details. + * @param roles of the professor + */ + public Professor(String roles) { + super("Professor"); + this.roles = roles; } + @Override public void setDetails(String roles) { requireNonNull(roles); diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index 38fa1655236..9577d57d4d4 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -37,6 +37,31 @@ public Student() { } + /** + * Creates a student with the given details. + * @param attendance of the student + * @param overallGrade of the student + * @param assignmentsList Assignments that have been assigned to the student + */ + public Student(String attendance, String overallGrade, ArrayList assignmentsList) { + super("Student"); + this.attendance = attendance; + this.overallGrade = overallGrade; + this.assignmentsList = assignmentsList; + } + + public String getAttendance() { + return attendance; + } + + public String getOverallGrade() { + return overallGrade; + } + + public ArrayList getAssignmentsList() { + return assignmentsList; + } + public void setAttendance(String attendance) { requireNonNull(attendance); this.attendance = attendance; @@ -95,7 +120,9 @@ public void setOverallGrade(String overallGrade) { * Updates the overall grade of the student when the grade of * one of their assignments in changed. */ - public void updateOverallGrade() { + + public String updateOverallGrade(Index indexOfAssignment, String grade) throws CommandException { + this.setAssignmentGrade(indexOfAssignment, grade); int totalWeightage = 0; float totalGrade = 0; for (Assignment assignment: assignmentsList) { @@ -104,10 +131,10 @@ public void updateOverallGrade() { totalGrade += assignment.getGradePercentage() * assignment.getWeightage(); } } - overallGrade = String.format("%.2f/%d", totalGrade, totalWeightage); + return String.format("%.2f/%d", totalGrade, totalWeightage); } - public void setAssignmentGrade(Index indexOfAssignment, String grade) throws CommandException { + private void setAssignmentGrade(Index indexOfAssignment, String grade) throws CommandException { if (!isValidAssignmentIndex(indexOfAssignment)) { throw new CommandException(MESSAGE_ASSIGNMENT_INVALID); } @@ -142,7 +169,7 @@ public String[] isolateDetails(String details) { return gradeAttendanceAssignments; } - public void setAssignments(String assignments) { + public ArrayList setAssignments(String assignments) { String[] splitStr = assignments.split(", "); int len = splitStr.length; if (assignmentsList.size() > 0) { @@ -155,6 +182,7 @@ public void setAssignments(String assignments) { Assignment a = new Assignment(name, weightage); addAssignments(a); } + return assignmentsList; } public void setPreviousAssignments(String assignments) { diff --git a/src/main/java/seedu/address/model/person/position/TeachingAssistant.java b/src/main/java/seedu/address/model/person/position/TeachingAssistant.java index 2d90768d9ad..cb169fd7e29 100644 --- a/src/main/java/seedu/address/model/person/position/TeachingAssistant.java +++ b/src/main/java/seedu/address/model/person/position/TeachingAssistant.java @@ -22,11 +22,20 @@ public enum Availability { private String availability; /** - * Creates a teaching assistant and initialises their availability to unavailable. + * Creates a teaching assistant and initialises their availability to available. */ public TeachingAssistant() { super("TA"); - availability = "unavailable"; + availability = "available"; + } + + /** + * Creates a teaching assistant with the given details. + * @param availability of the teaching assistant + */ + public TeachingAssistant(String availability) { + super("TA"); + this.availability = availability; } @Override From 59d50f03114646eb6bcff67fc349345832e738b0 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Wed, 19 Oct 2022 10:15:24 +0800 Subject: [PATCH 070/208] Add Filter Command to DeveloperGuide.md --- docs/DeveloperGuide.md | 71 +++++++++++++++++++++++++++++++++ docs/images/FilterDiagram1.png | Bin 0 -> 12726 bytes docs/images/FilterDiagram2.png | Bin 0 -> 14160 bytes docs/images/FilterDiagram3.png | Bin 0 -> 10339 bytes docs/images/FilterDiagram4.png | Bin 0 -> 38495 bytes docs/images/FilterDiagram5.png | Bin 0 -> 7315 bytes docs/images/FilterDiagram6.png | Bin 0 -> 26264 bytes docs/images/FilterDiagram7.png | Bin 0 -> 67694 bytes 8 files changed, 71 insertions(+) create mode 100644 docs/images/FilterDiagram1.png create mode 100644 docs/images/FilterDiagram2.png create mode 100644 docs/images/FilterDiagram3.png create mode 100644 docs/images/FilterDiagram4.png create mode 100644 docs/images/FilterDiagram5.png create mode 100644 docs/images/FilterDiagram6.png create mode 100644 docs/images/FilterDiagram7.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 760e8f6157d..9f3c29b4900 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -154,6 +154,77 @@ Classes used by multiple components are in the `seedu.addressbook.commons` packa This section describes some noteworthy details on how certain features are implemented. +### \[Proposed\] Filter feature + +#### Proposed Implementation + +The proposed Filter feature is facilitated by `FilterCommand`. It extends `Command` with a checking predicate, stored internally as a `TagContainsKeywordPredicate`. It overwrites the following operations: + +* `FilterCommand#execute()` — Executes the command, filtering the list of people according to whether they have a matching tag. +* `FilterCommand#equals(Object o)` — Checks if two objects are equal. + +Given below is a Class Diagram of this feature. + +![FilterDiagram1](images/FilterDiagram1.png) + +Given below is an example usage scenario and how the filtering mechanism behaves at each step. + +Step 1. The user launches the application. The `AddressBook` will initially display all Persons. + +![FilterDiagram2](images/FilterDiagram2.png) + +Step 2. The user executes `filter CS2103-T17` command to filter people that have the `CS2103-T17 tag`. The `filter` keyword causes `AddressBookParser#parseCommand()` to call `FilterCommandParser#parse()`. This creates a `TagContainsKeywordPredicate` with the keyword `CS2103-T17`, and returns a `FilterCommand` containing this predicate. + +![FilterDiagram3](images/FilterDiagram3.png) + +Step 3. `Model` then loops through all people in the list, checking if they have a `CS2103-T17` tag. + +![FilterDiagram4](images/FilterDiagram4.png) + +
    :information_source: **Note:** If the filter command fails its execution, this step will not be reached. A Message will be displayed, letting the reader know how the filter command should be used. + +
    + +Step 4. The filtered list will then be displayed to the user. + +![FilterDiagram5](images/FilterDiagram5.png) + + + +The following sequence diagram shows how the filter operation works: + +![FilterDiagram6](images/FilterDiagram6.png) + +
    :information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. + +
    + +The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. + +
    :information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. + +
    + +Step 5. The user then decides to execute the command `list`. `AddressBook` removes the filter, showing all persons. + +![FilterDiagram2](images/FilterDiagram2.png) + +The following activity diagram summarizes what happens in AddressBookParser when a user executes a filter command: + + + +#### Design considerations: + +**Aspect: How filter executes:** + +* **Alternative 1 (current choice):** Updates the displayed list by hiding information. + * Pros: Uses less memory + * Cons: May have performance issues in terms of memory usage. + +* **Alternative 2:** Creates a new Address Book. + * Pros: Does not modify the master address book. + * Cons: May have performance issues in terms of memory usage. + ### \[Proposed\] Undo/redo feature #### Proposed Implementation diff --git a/docs/images/FilterDiagram1.png b/docs/images/FilterDiagram1.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc7f8c5e1da1b0a9d2edc0ed1b5eb6094abed46 GIT binary patch literal 12726 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 literal 0 HcmV?d00001 diff --git a/docs/images/FilterDiagram2.png b/docs/images/FilterDiagram2.png new file mode 100644 index 0000000000000000000000000000000000000000..a648a1d42c0027db62721f50cff0ed132716346b GIT binary patch literal 14160 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 literal 0 HcmV?d00001 diff --git a/docs/images/FilterDiagram3.png b/docs/images/FilterDiagram3.png new file mode 100644 index 0000000000000000000000000000000000000000..56a1b04eb8c3e52799e026f769feef1abbcb39ea GIT binary patch literal 10339 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 literal 0 HcmV?d00001 diff --git a/docs/images/FilterDiagram4.png b/docs/images/FilterDiagram4.png new file mode 100644 index 0000000000000000000000000000000000000000..b44c4c3c79cb2d970b9e5c1fe16d5ffdfe0ff391 GIT binary patch literal 38495 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 literal 0 HcmV?d00001 diff --git a/docs/images/FilterDiagram5.png b/docs/images/FilterDiagram5.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f1a5b4922a31e6474cd1653a4f4aaf9737fe63 GIT binary patch literal 7315 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 HG7tVAc|dT} literal 0 HcmV?d00001 diff --git a/docs/images/FilterDiagram6.png b/docs/images/FilterDiagram6.png new file mode 100644 index 0000000000000000000000000000000000000000..ad5021cb3b6a6d994cfc3dfcc041b8c9b71e4e25 GIT binary patch literal 26264 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 AbN~PV literal 0 HcmV?d00001 diff --git a/docs/images/FilterDiagram7.png b/docs/images/FilterDiagram7.png new file mode 100644 index 0000000000000000000000000000000000000000..4aeda813c8531657bcb1fb3f0159e110b2df75ac GIT binary patch literal 67694 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

    ?L zU!PC`BkcUoxT)syjii4`l z2%pY~XhDi54Q_^?@0f^r$MUw&v4F8!>Q!152W)>w6$3#G^Zrc!`eI8sZ$(z42WtuqPa87fyK#W6d*<>9L?kRi zFQVjMoOyz+7LY|O@`fFGa(yq5jz-w37qc7rg%f-71+B@%Jw`nRs!!FkFVjRg0qO2y zCR9k1+u2>jsi6opx`5R_FGhE(v`=w~`*ty|t^ddzdO!xkYeWUt2R!{6ZDvPfAgM zW+~4S&=&uz-wlWm!v?er8pBrCWk^my`eiFAP7$CA#$aJ1IUFww?Vn`irpx=MUT?MXHqdC|b1fk}=WZ5zYZ}6 z%p3JsN3@R!&93D=HY|xqdLJc$@quoLfNE6+R2Vi#HdOV)FJm77eUCenThVB_^VrSz zH{S)*aDF?6L;@7_+)l*buwHKscw8R*np%9ls0WwkrGLjc@bWPFw zKyFG291rGOlO2SeFNy-5GS%S)6a`OERK~nAv0HhG1RAI9sx{ByaxP5vu zM&j`SM!l+U!so)JHTU;5pO7VZ$3xKqX$TY;citV{+<85S$fxjfCTG&Lhg4IjyZjr` z{P!>eP+Vq?TcN)=`pi1?7vNsGoJkWugOv;A7A3#q&x4agnN`Y`jSQ0g{y?s_ z5T}RORnWy*2Ws>?5>2y2X?s?$l{WLyxoo?0Gp-|S~B89Lv|yV)*po_IkO|Z09m7CPatPrwBiJa;Z-s$ zntl1`vjce?-NjgHu^<}TAC>Ob-uIz;WAQ6`Ql#>*r5HuTVVOnj9)n&PuP$xVSs;su z9o4lC-j1whN5s8J_lkvlX*HXOElHzH?MSV6!O^J?|s2k*Ib9YS>Vm_9KwJ{h}sw=VznE&agrtC3MI?GNnHPeR4^^P z^;nOVu?>Z|M?J`ja)+#znuk}*Ag|+bzP5M|p!4im(Mo~mOU)|X)(w@{Woa%M-gJhU zaFfxOCvQ|Q@zTKh4Ea5~f7n5Sh{MgW)76vB(~~o8L4nObVll4us1I~BT$1fjoi-kF z^LrEq@mN#fJajRd(FYn>tGAaD;t2aF3?f5W@-3Jy=WHa>kXmDkpAB7;ZGe-#jF5P zi@Tp1PHJiwQq5gnIMJfIcJFFM42`I*>J}j-`GU7JKD@y2*TPZG&?!8l_mR{hj2MG> z`gdC}YMd)vJDSJuIk^Q|_))nVgQk09II#&$OtvRQ?2ab}jMUIDFn_iXTV!7!*eR}? zx%28r69j}djgmPrMPqcvKsmx~W(-3lLYu_RMgrN%IdDl-P0Mx*hH~W@Vi=^0`g@5v zUz1bm*G^SMr)CRhl-_Ir)yq5hV*u=$)`S+UF#enNYsaHmV@LIvTkMxpXe6r|ukgQh z%7ceNF&yDtM2(DvQxi}YYE^!~WjHny;zeiUs2SZKzqR?C^A^p@U0};C-_ci$HYSk9 z3aZR{mKw=28C@xo%YEn2mAd%*mC&P-5&SSDNyc>Z4@M%kJ&`FX+S+%=b$z-Cq_fsV zR{I9;Z<0U2@4(^^#NX}nj1u`X3nj<~fB?)On{h7klGc;mm7iVXfiQVwD^P4uA#$>=h85jfJKv<@Ers^Ac`k9J&-)*uxpx@e{R_V16Wp$>yjoD&&4~E) zz(#vAXI}`Hs*nfno#_Bb8SB3FX0;aR-G2s9I^tcKmxGUBvlfk5&( z_GGHK2{WUStw20_mM5|r2mJ!%`^6Of?XNfADhp!V&eqI{f#3ZV&oc--6HWc=mGckk zmNNV^6CO!DV#9BOhU5g;k9W0_Y-Di33M)ukmif~XRE!U#?oM%Lr+%0ttoNNVmfZ@x z1cUXBX1;?d+as5 z%}RV+g%a0}XEUjAF?Ep3XHWkF#0qKbp+JQB5kne@Lg+nlNQSY#JKGHUupd0KPRXki zwUyQ8Mf6Z!UfZF8mel5PxHo$N@$S~nuw7F1Md!gP0O@b^+TV~6Ncjq#@PxuQj#V5x zJsEZyA|J42b7(-U8}Tts-hBf|YWbawI4|v8+EOL?RlSs1iqus&WwZ22p%N@X{4cKx zDgpwg519smYNq;CSoW|u>aRbbu!& zj47b{`Iy6b73fqwq1ctsBzXJE0hBF^{k{Bpw(RbA3!qx?8!El>M&>sr5GqbRpq#PE zmP02Z+gY5vY5=N~X=+|KmzO*tdoV&PbOfHF=~V#=hV}@2fXPMIlq=x+QWle+VxF#o zLBg<3!nwov-o%tqE_pX@vnvF3B=0&XPvvPCH*UYb3j`JU8_(?$J%N~!PC^jl1yo-c z&K9iMO@Q+h1#IK=2i|1cK@F#0-}1Hesfy3F=0Kpc2@Tb4b0Co(_Z_ly%;jWDD~LaP z;|8i{I`v#VOa@=R3~H1T&u_q&EcL1#x*Y0%t%r|1xYW#Y2&}y-1+822d!efqDvJyG zBFY4lG3U=t-L!5v-q{>U^YJa(1g&&Fq7b12>LD5l5lk6vlHqSqCj8#(vkjAK2gUg4%r2x8DLeom1&HGuUrXFZc=kX)8D zONoE`C=Gs>D3YfEXb${a=;VhT&&RP}ssQ&-boLxI?I3c+X6Aice$@3EP}{kLH)Y;>>fN)quOg>93nXcXR)HQl*Bhs8dRv!}dp*u0a zG2Cu88LxK}S{X6>rPKmh<6TeFbRev{BQx7$NobB5)dd5pk|&|FGn1i*t{)-=Fu9=o z!Z2#Na@=D>1ov<$`o?u$X?cpg{Zfy))5iJx>x6_U-8HVKqasqp_x~&c5wid*Fhv0o z*ejrre!&H-$Ex)7M$22rzD#g`XZXG8hB&E6nB$IsHBNxB+vZWqyzzcFJ8kw zX2Rw<1?C$_T_nLdoPb#@0Ohrd+Z5!$z+`P4w?I&TbcylobxoHEe6MGq*9UEtEg{O5TCrip>hOB8Ht zWiBzg+b`c+#bKhIpU_sU7S{Hz@XN%Wf@&#eADwa?`Wj|B(59~JnN{GIlF*gGkIrrv zqwer8-y+zD@4o^i>sWRfR%0so&sDBC*Rz&6B$JnALB%xEZU0-!ss%0QK?|qTy|7cq zjCh?Pwl8EuqUBW{A2Wc0&CI7S-oLA3hRl>|7@Dg!-OZSKn1Mj%O zr|6l%cj-7~J)T*3#ZZM7x{o{CTT>f7ht5SN?X(n5Oe)^{7D(e#U$mQ7!oScq^FF}$ ztFOF$H4dgAAKlo7YK;%IZ6RZbCX$05W05dMycBu3-WyG$@Lrh^Jx zZ$74I0gNp)4T>LMBTh^)7mR$_PF9RZIDX2NV$zrP?{rfg_r?_{rX$$LIm+ zm*w8Z#02OZvmTfbemq<~f|?LbcM-ZkJS(^Q?rg?EAj8}I07Lc~+mr%;3y{3Ej`o;~}v`cM~JD)_7;9rcu z2#`0324{K?JpeP<0)rPSgv&D12lR)+z))zmZ;xqRpK5y0Dgd+PMPDf=pD<1j+~h9( z4Tilp9)W;%KsY7+-#^ZWJh0X(sQX2Jln`V3zML@HCYrcdl! z!a;9^JLp9Qc;ICz$m&Tu_$BtDyVY;twtv=O@nUJI+!>wQ#7Yv zgw@#HhPq&fe}U51lkPDn9DG#>V!6LIw>L$p>wuO?*m<#0JU2O&cIdnMw3BW8e7;-QE{{HVq_^>R;SxVmZ ztx@qGb}(z$*ut3g_Lx%xA?f9>uQgY|Hsq5blL*gc>REvHc=9&c`Ga+sulh`>4FLZl z(lG=Th?23@3Xs>SZyD!%8c8yQVu4uVWtD}5GfSNBhMc07d1WUD;yOTQfc^US2vSMZ zw*je7pcmm=+UCY>hW7*eMw7w&l;xR+)|eW%-(U+-jC>I1Y8Ck82IRpZArBB9AArNm zGzPYnwCy1;HH9;*t|*2HT{$+fzM^_%k!yso5Z`NMlin z?o5W=1|^_@1D(m6G?oI_cmiJy-#zu2t{I`#xvWIz+8GJF3O40Ss8RS5e6m&MHRYe5 zBJN&4TSS8`lGem$)V~XI)GU}X++bUkw`08)oQbjlQ&Wn2J?>(jYo+8R|M|-f&%JNk z8EW`WI)9fb-FMOm9UB|^!W{8vcx+-i$1IRu$_`TsDSSFJbFk`w2MQj+>!KuE25_g*SkbV1|`W^L#W8@g^?`MYlk!~>_(a+>3I)FgOy^9I%L_%d{s;^91>F!_w zEVKI0ZYV1^M9|?bQ-iTE?=j40a5|`Hy}?`s?E$iOLF2#KCvLxGR@hvee21Clfs*(P zWNR{<#&h*GQCg{pKObJ1)6Zin2x{{PXvo_2=Aev?LNGU{;@xM#5+n$Epo9GzOGY7o z-9V>C5S$E0`(s{?>;q#(6&0QDV;a$UQwR?^d_5A=6f)4y!}_vda09QZqVq8WZIb2& z_1S-@tM9ae#00adIP=e!vMIzTs@5fEQy7I>(d`Pf}AcJXYYTi5y^9bxC22l3UhvPC6ePVI0X6JwAgXoEIff% zf%Zf*Zr5YQ3MVmIxU=dXbbH3EgEo~wLtP~!lz=fb$zn>>V zun0XfJ@GUp)pdZ!To6>6r0ZtU8v}(IH>UQ^4zD$dpOmGU5z~zfG=-c&udT*3%A+bX z$MWSP8kz*-hc(UZlVe8`Va)a8sB#Q zJ+KisR2c%`#bO_p8k!TchUqN%v<^{t(Rvbm@IsS^WfKm9KRt%O03_gdzClQ1t0S-q zXu?L-v$@cA@b>=%CWgiLh&RDz2^^cIXlrfoSU?Y0giQ1P;gi!Dn*>x8m}$c@#2!}J zWU&E}8h#UcV7JFhyiVy#>N#ePSa+Yn`vv;E0?VQLXJhqo;8x&wsv!`;a|95&!gRUw zxTzQ4jw$HZ;(fUXMK`~LCf?MaKr39P)L_n#aqZQqcpbhPf1&5-kra`;u_!mE-{RK0&nZKClQSg+?Th-)$tQ@_bnJDl#Lx^ zEe>c~-0pX%Tv8sd0?_32Y>5$82w-n4%-W{(Od@h+j158u3 zy4fo?B`q5}^}jp}dNpQE^+1O+Yp^QIfYLQ5x}!oWAy<&8D?i~$3_cD8+YLG8XCaYj`k%bT)+5t*dYpM{T z0nSUWxA>TF1y+qD57fQ*D#M*XZWWln+yf@8Y>6M&;P)Yri>dwR-ktQ|um7MdIWT$8_Fj3~VaGAz2iQc%CrH(KpzPzq6ig zaT@y(Ol+Smb8oe`qJS0>k*&8^n5sT*VqxRI(1vt=+V<^?&w0AHk3xsF#FgU~M>scB zJEv-oDU;TWo&`A=VIk0xg;sPW)cJ!SDlucEJNKJ@X~B zQF7M!Y?^eVbM*Bh1Otv!M}hWyF1DbJ-Gm$it_-u2blF<^+R@{KK}^h)ntg6;9fZ^)ANt{0T{6&IbmCuXcKcB#DsjKIlA2kHTgvOK^Z&!%C6#oS@hC zcZ!L4VrJp5Z;I=D1k7p#G0vQove?mRa#+vt*@KjM)Uktn7k9mnC7B`fxBF}OFy%KK z7&W|M-n(1j374d>1PMRmuMFScUXToh=NvH*1q^@HitThMpD)kFS3p*9D(D7y19c9LG7L&`HayBf5oKk_{`3rV$yV@soHA$p3PXw$zX;}# zpJUzZ12N#{-}mv~1&>}N7R79Ek4wr)kgwJ&xIF5ZP7-3%C=yGTZF4;Z5FB5Y&r;)~ z?bp^e5DiCnMg(Yk+9M}VQMfkq#RB6APcU90J}id2AC`NjO~+2gzXPUZ%F1!uL(C%# zRE~yT=O_3nxQ63AD$XllngcG2&m=Sc*?oG$&RKh=SK zlQA68WKzp(lv*e!cdGU3`7EX&3gsHyWX_usLDoZ@`$I4w--Qh@gV> zLa*hPzwgR3NJ&3D79X!Q=?A;cJ!mgs zAJ$Er1NV*%KFj~*rh1cj?w&~M>=tG)O4-o&Jo#eQUiFi!RYwVHsF9So;Dq6ZX}Awj z4bhoUlS#8Zdzl`QOg@~HdV__BTE=PcVdTsVQTl-Y5@N{Jk{Fh@SGDP7{O(uKLBkDU zPk&f5|4jC?QPQLrOmOxo1t>=zaVO)r(3ios7U5YRj?91y11o|&*W(tEUV^zq1C%~2 zLNdNj%e^K_vw-Z~K(i3s^{PK=bF3nfp@->-7KQPxDMbd6Xo6H%z5tV$jl#Pn2&QSp zk1b#8`bLb-^m${iqIDME*e@*(Yb&ppuT8|yXmX4f6_f{|8X=TOGw~ydBh`x1_Z@po z+lJ0LwFzb4-&ZuhQhx2E2ux%d7+QH5rEp|q;dl@)u7%r0{>OLOT@~@wmK&<94E3ZDS zIf^TE6Ctf_^Yi5DLhsTnlH{sZS!I$l|A)j!R(+T?eC_nhzdv99_3L7s;Lb-szUZpf zwP_@Cl8>=G5v3-w4jWXl;sf3V@XbAKff<=uToL^am%_EqnG?DA#0Y)gj?vx5W3W=Z?T`G3(w!G^2I_v%JzqtQFSV5H6x8EkOP1

    w7Wah0&31K@x&)2el(El8;Z>?ki)`f+`jgj7ct? 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 Qo8XWBiBsB7G;Oc`4^%e6@&Et; literal 0 HcmV?d00001 From 2207092fc0bd376ca68790a4ec0f9fb81fc882cd Mon Sep 17 00:00:00 2001 From: cxyterence Date: Wed, 19 Oct 2022 20:29:54 +0800 Subject: [PATCH 071/208] Update DeveloperGuide.md to reflect implementation of ShowCommand. --- docs/DeveloperGuide.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 760e8f6157d..eef51ca98e2 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -238,6 +238,12 @@ _{more aspects and alternatives to be added}_ _{Explain here how the data archiving feature will be implemented}_ +### Display Details of Contacts in Secondary Panel + +#### Implementation + +#### Design Considerations + -------------------------------------------------------------------------------------------------------------------- From 5d57e8c33cd070adc6e5d2130b80e2c7402c9ff7 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Wed, 19 Oct 2022 21:37:28 +0800 Subject: [PATCH 072/208] update developer guide for tabbing between books --- docs/DeveloperGuide.md | 17 ++-- .../CreateNewBookSequenceDiagram.puml | 54 +++++++++++ docs/diagrams/CreatingNewBookState0.puml | 21 +++++ docs/diagrams/CreatingNewBookState1.puml | 22 +++++ docs/diagrams/SwapBooksSequenceDiagram.puml | 84 ++++++++++++++++++ docs/diagrams/SwapState0.puml | 22 +++++ docs/diagrams/UndoRedoState0.puml | 2 +- docs/diagrams/UndoRedoState1.puml | 2 +- docs/diagrams/UndoRedoState2.puml | 2 +- docs/diagrams/UndoRedoState3.puml | 2 +- docs/diagrams/UndoRedoState4.puml | 2 +- docs/diagrams/UndoRedoState5.puml | 2 +- docs/diagrams/style.puml | 6 ++ docs/images/CreateNewBookSequenceDiagram.png | Bin 0 -> 28471 bytes docs/images/CreatingNewBookState0.png | Bin 0 -> 6236 bytes docs/images/CreatingNewBookState1.png | Bin 0 -> 8197 bytes docs/images/SwapBooksSequenceDiagram.png | Bin 0 -> 45818 bytes docs/images/SwapState0.png | Bin 0 -> 8497 bytes 18 files changed, 227 insertions(+), 11 deletions(-) create mode 100644 docs/diagrams/CreateNewBookSequenceDiagram.puml create mode 100644 docs/diagrams/CreatingNewBookState0.puml create mode 100644 docs/diagrams/CreatingNewBookState1.puml create mode 100644 docs/diagrams/SwapBooksSequenceDiagram.puml create mode 100644 docs/diagrams/SwapState0.puml create mode 100644 docs/images/CreateNewBookSequenceDiagram.png create mode 100644 docs/images/CreatingNewBookState0.png create mode 100644 docs/images/CreatingNewBookState1.png create mode 100644 docs/images/SwapBooksSequenceDiagram.png create mode 100644 docs/images/SwapState0.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 5e58faa6367..b21d2ab179d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -338,15 +338,22 @@ Given below is an example usage scenario and how the creation of new TAB mechani Step 1: User enters the `new` command into the Command-Line Interface (CLI) or user navigates via `Files -> New Book` to create a new TAB. -TODO: Add sequence diagram +The following sequence diagram shows how creation of new book work: +![Creating New Book](images/CreateNewBookSequenceDiagram.png) -Step 1.1: User adds X amount of TABs (up to 5) +Step 1.1: User adds X amount of TABs (up to 5): -TODO: Add State diagram +![Swapping Books](images/CreatingNewBookState0.png) -Step 2: User enters the `swap` command or navigates via `Files -> New Book` to toggle between TABs. +![Swapping Books](images/CreatingNewBookState1.png) -TODO: Add sequence diagram +Step 2: User enters the `swap` command or navigates via `Files -> New Book` to toggle between TABs: + +![Swapping Books](images/SwapState0.png) + +The following sequence diagram shows how swapping works: +NOTE: Sequence Diagram Only includes added portions +![Swapping Books](images/SwapBooksSequenceDiagram.png) **Design Considerations** diff --git a/docs/diagrams/CreateNewBookSequenceDiagram.puml b/docs/diagrams/CreateNewBookSequenceDiagram.puml new file mode 100644 index 00000000000..cd7b4138832 --- /dev/null +++ b/docs/diagrams/CreateNewBookSequenceDiagram.puml @@ -0,0 +1,54 @@ +@startuml +'https://plantuml.com/sequence-diagram +!include style.puml +box UiPart UI_COLOR_T1 +participant ":MainWindow" as MainWindow UI_COLOR +end box + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":ModelManager" as ModelManager MODEL_COLOR +end box + +box ReadOnlyUserPrefs PREF_COLOR +participant ":UserPrefs" as UserPrefs PREF_COLOR_T1 +end box +[-> MainWindow : handleNewBook() +activate MainWindow + +MainWindow -> LogicManager : addAddressBook() +activate LogicManager + +LogicManager -> ModelManager : addAddressBook() +activate ModelManager + +ModelManager -> UserPrefs : addAddressBook() +activate UserPrefs + +UserPrefs --> ModelManager +deactivate UserPrefs + +ModelManager --> LogicManager +deactivate ModelManager + +LogicManager -> ModelManager : getAllAddressBookFilePath() +activate ModelManager + +ModelManager -> UserPrefs : getAllAddressBookFilePath() +activate UserPrefs + +UserPrefs --> ModelManager +deactivate UserPrefs + +ModelManager --> LogicManager +deactivate ModelManager + +LogicManager --> MainWindow : result +deactivate LogicManager + +[<--MainWindow +deactivate LogicManager +@enduml diff --git a/docs/diagrams/CreatingNewBookState0.puml b/docs/diagrams/CreatingNewBookState0.puml new file mode 100644 index 00000000000..2493be3c1e2 --- /dev/null +++ b/docs/diagrams/CreatingNewBookState0.puml @@ -0,0 +1,21 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title Initial state + +package States <> { + class State1 as "addressBook.json" + class State2 as "addressBook1.json" + class State3 as "addressBook2.json" +} + +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 +hide State2 +hide State3 + +class Pointer as "Currently Loaded Book" #FFFFFF +Pointer -up-> State1 +@end diff --git a/docs/diagrams/CreatingNewBookState1.puml b/docs/diagrams/CreatingNewBookState1.puml new file mode 100644 index 00000000000..acc44321d75 --- /dev/null +++ b/docs/diagrams/CreatingNewBookState1.puml @@ -0,0 +1,22 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title After command "new" or clicking "New Book" button + +package States <> { + class State1 as "addressBook.json" + class State2 as "addressBook1.json" + class State3 as "addressBook2.json" +} + +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 + +hide State3 + +class Pointer as "Currently Loaded Book" #FFFFFF + +Pointer -up-> State1 +@end diff --git a/docs/diagrams/SwapBooksSequenceDiagram.puml b/docs/diagrams/SwapBooksSequenceDiagram.puml new file mode 100644 index 00000000000..09a9ba4cd76 --- /dev/null +++ b/docs/diagrams/SwapBooksSequenceDiagram.puml @@ -0,0 +1,84 @@ +@startuml +'https://plantuml.com/sequence-diagram +!include style.puml +box UiPart UI_COLOR_T1 +participant ":MainWindow" as MainWindow UI_COLOR +end box + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +end box + + + +box Model MODEL_COLOR_T1 +participant ":ModelManager" as ModelManager MODEL_COLOR +end box + +box Storage STORAGE_COLOR_T1 +participant ":Storage" as Storage STORAGE_COLOR +end box + +box ReadOnlyUserPrefs PREF_COLOR +participant ":UserPrefs" as UserPrefs PREF_COLOR_T1 +end box + +[-> MainWindow : handleSwap() +activate MainWindow + +MainWindow -> LogicManager : swapAddressBook() +activate LogicManager + + + +LogicManager -> ModelManager : getNextAddressBookPath() +activate ModelManager + +ModelManager -> UserPrefs : getNextAddressBookPath() +activate UserPrefs + +UserPrefs -> UserPrefs : incrementIndex() +activate UserPrefs + +UserPrefs --> UserPrefs +deactivate UserPrefs + +UserPrefs -> UserPrefs : setAddressBookFilePath(Path) +activate UserPrefs + +UserPrefs --> UserPrefs +deactivate UserPrefs + +UserPrefs --> ModelManager : result +deactivate UserPrefs + +ModelManager --> LogicManager +deactivate ModelManager + + + +LogicManager -> Storage : readAddressBook(Path) +activate Storage + +Storage --> LogicManager +deactivate Storage + +LogicManager -> Storage : setAddressBook(AddressBookStorage) +activate Storage + +Storage --> LogicManager +deactivate Storage + + +LogicManager -> ModelManager : setAddressBook(ReadOnlyAddressBook) +activate ModelManager + +ModelManager --> LogicManager +deactivate ModelManager + +LogicManager --> MainWindow +deactivate LogicManager + +[<--MainWindow +deactivate LogicManager +@enduml diff --git a/docs/diagrams/SwapState0.puml b/docs/diagrams/SwapState0.puml new file mode 100644 index 00000000000..1b0961bfb28 --- /dev/null +++ b/docs/diagrams/SwapState0.puml @@ -0,0 +1,22 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title After command "swap" or clicking "Swap Book" button + +package States <> { + class State1 as "addressBook.json" + class State2 as "addressBook1.json" + class State3 as "addressBook2.json" +} + +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 + +hide State3 + +class Pointer as "Currently Loaded Book" #FFFFFF + +Pointer -up-> State2 +@end diff --git a/docs/diagrams/UndoRedoState0.puml b/docs/diagrams/UndoRedoState0.puml index 96e30744d24..34885420931 100644 --- a/docs/diagrams/UndoRedoState0.puml +++ b/docs/diagrams/UndoRedoState0.puml @@ -15,6 +15,6 @@ State2 -[hidden]right-> State3 hide State2 hide State3 -class Pointer as "Current State" #FFFFF +class Pointer as "Current State" #FFFFFF Pointer -up-> State1 @end diff --git a/docs/diagrams/UndoRedoState1.puml b/docs/diagrams/UndoRedoState1.puml index 01fcb9b2b96..0e2c8c72d33 100644 --- a/docs/diagrams/UndoRedoState1.puml +++ b/docs/diagrams/UndoRedoState1.puml @@ -16,7 +16,7 @@ State2 -[hidden]right-> State3 hide State3 -class Pointer as "Current State" #FFFFF +class Pointer as "Current State" #FFFFFF Pointer -up-> State2 @end diff --git a/docs/diagrams/UndoRedoState2.puml b/docs/diagrams/UndoRedoState2.puml index bccc230a5d1..0ce7073e187 100644 --- a/docs/diagrams/UndoRedoState2.puml +++ b/docs/diagrams/UndoRedoState2.puml @@ -14,7 +14,7 @@ package States <> { State1 -[hidden]right-> State2 State2 -[hidden]right-> State3 -class Pointer as "Current State" #FFFFF +class Pointer as "Current State" #FFFFFF Pointer -up-> State3 @end diff --git a/docs/diagrams/UndoRedoState3.puml b/docs/diagrams/UndoRedoState3.puml index ea29c9483e4..50bf43b3f34 100644 --- a/docs/diagrams/UndoRedoState3.puml +++ b/docs/diagrams/UndoRedoState3.puml @@ -14,7 +14,7 @@ package States <> { State1 -[hidden]right-> State2 State2 -[hidden]right-> State3 -class Pointer as "Current State" #FFFFF +class Pointer as "Current State" #FFFFFF Pointer -up-> State2 @end diff --git a/docs/diagrams/UndoRedoState4.puml b/docs/diagrams/UndoRedoState4.puml index 1b784cece80..83cbe4c740c 100644 --- a/docs/diagrams/UndoRedoState4.puml +++ b/docs/diagrams/UndoRedoState4.puml @@ -14,7 +14,7 @@ package States <> { State1 -[hidden]right-> State2 State2 -[hidden]right-> State3 -class Pointer as "Current State" #FFFFF +class Pointer as "Current State" #FFFFFF Pointer -up-> State2 @end diff --git a/docs/diagrams/UndoRedoState5.puml b/docs/diagrams/UndoRedoState5.puml index 88927be32bc..fc89dd99d2d 100644 --- a/docs/diagrams/UndoRedoState5.puml +++ b/docs/diagrams/UndoRedoState5.puml @@ -14,7 +14,7 @@ package States <> { State1 -[hidden]right-> State2 State2 -[hidden]right-> State3 -class Pointer as "Current State" #FFFFF +class Pointer as "Current State" #FFFFFF Pointer -up-> State3 note right on link: State ab2 deleted. diff --git a/docs/diagrams/style.puml b/docs/diagrams/style.puml index fad8b0adeaa..658edca53d2 100644 --- a/docs/diagrams/style.puml +++ b/docs/diagrams/style.puml @@ -13,6 +13,12 @@ !define UI_COLOR_T3 #166800 !define UI_COLOR_T4 #0E4100 +!define PREF_COLOR #Violet +!define PREF_COLOR_T1 #DarkOrchid +!define PREF_COLOR_T2 #DarkMagenta +!define PREF_COLOR_T3 #DarkSlateBlue +!define PREF_COLOR_T4 #Indigo + !define LOGIC_COLOR #3333C4 !define LOGIC_COLOR_T1 #C8C8FA !define LOGIC_COLOR_T2 #6A6ADC diff --git a/docs/images/CreateNewBookSequenceDiagram.png b/docs/images/CreateNewBookSequenceDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..2885b4ea8392231b131dcec09a684e6ae07534bb GIT binary patch literal 28471 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 hU_jUXr(4S-g_CIX$r^?SC6+isL?{8cwfP?@5 literal 0 HcmV?d00001 diff --git a/docs/images/CreatingNewBookState1.png b/docs/images/CreatingNewBookState1.png new file mode 100644 index 0000000000000000000000000000000000000000..0787173753e09072a6157b427874fe18c6e10964 GIT binary patch literal 8197 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 Sq(Ywo2s~Z=T-G@yGywpbt&0Kx literal 0 HcmV?d00001 diff --git a/docs/images/SwapState0.png b/docs/images/SwapState0.png new file mode 100644 index 0000000000000000000000000000000000000000..e5fa39f12b1a2ba2ffbc5200723b26e0119ba824 GIT binary patch literal 8497 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 NWF!<`6^a>r_%}I-k{tj5 literal 0 HcmV?d00001 From 7c89c6ac42293e4ee746f567822aafb87e755c1a Mon Sep 17 00:00:00 2001 From: Markus Wee <77526609+yellow-294@users.noreply.github.com> Date: Wed, 19 Oct 2022 23:51:51 +0800 Subject: [PATCH 073/208] Update DG with AddAssginments command --- docs/DeveloperGuide.md | 68 ++++++++++++++++++++++ docs/diagrams/AddAssignmentsDiagram1.puml | 27 +++++++++ docs/diagrams/AddAssignmentsDiagram2.puml | 35 +++++++++++ docs/diagrams/AddAssignmentsDiagram3.puml | 62 ++++++++++++++++++++ docs/diagrams/AddAssignmentsDiagram4.puml | 17 ++++++ docs/images/AddAssignmentsDiagram1.png | Bin 0 -> 18925 bytes docs/images/AddAssignmentsDiagram2.png | Bin 0 -> 36635 bytes docs/images/AddAssignmentsDiagram3.png | Bin 0 -> 28065 bytes docs/images/AddAssignmentsDiagram4.png | Bin 0 -> 16519 bytes 9 files changed, 209 insertions(+) create mode 100644 docs/diagrams/AddAssignmentsDiagram1.puml create mode 100644 docs/diagrams/AddAssignmentsDiagram2.puml create mode 100644 docs/diagrams/AddAssignmentsDiagram3.puml create mode 100644 docs/diagrams/AddAssignmentsDiagram4.puml create mode 100644 docs/images/AddAssignmentsDiagram1.png create mode 100644 docs/images/AddAssignmentsDiagram2.png create mode 100644 docs/images/AddAssignmentsDiagram3.png create mode 100644 docs/images/AddAssignmentsDiagram4.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9f3c29b4900..7eb619cf7ca 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -224,6 +224,74 @@ The following activity diagram summarizes what happens in AddressBookParser when * **Alternative 2:** Creates a new Address Book. * Pros: Does not modify the master address book. * Cons: May have performance issues in terms of memory usage. + +### \[Proposed\] Add Assignments feature + +#### Proposed Implementation + +The proposed Add Assignments feature is facilitated by `AddAssignmentsCommand` and `AddAssignmentsCommandParser`. + +This feature allows assignments with weightages to be added to each `Student` in TAB. Weightages are separated from the assignment name with the prefix: `w/` + +The `AddAssignmentsCommandParser` parses the user input to check the validity of the Assignment. Then, every `Student` currently listed in TAB will be assigned these Assignments. This is done with the help of the following methods: + +* `Student#addAssignment` Adds a single Assignment into the `ArrayList` +* `Student#setAssignments` Adds every Assignment in the user input into `ArrayList` + +Listed below are the possible scenarios as well as the behavior of the feature in each scenario. + +Scenario 1: User inputs assignments with weightage that does not add up to 100% + +e.g. `assignments assignments/ Assignment 1 w/50, Finals w/40` + +It will be detected that the weightage of the assignments does not add up to 100 and a `CommandException` is thrown + +Scenario 2: User inputs assignments with negative weightage + +e.g. `assignments assignments/ Assignment 1 w/-50, Midterms w/50, Finals w/100` + +It will be detected that a particular assignment has a negative weightage and a `CommandException` is thrown + +Given below is an example usage scenario and how the Add Assignments mechanism behaves at each step. + +Step 1. The user launches the application. `TAB` will initially display all Persons + +![AddAssignmentsDiagram1](images/AddAssignmentsDiagram1.png) + +Step 2. The user executes `assignments assignments/ Assignment 1 w/15, Assignment 2 w/15, Midterms w/20, Finals w/50`. The `assignments` keyword +causes `AddressBookParser#parseCommand()` to call `AddAssignmentsCommandParser#parse()`. This returns a `AddAssignmentsCommand` + +Step 3. The internals of `AddAssignmentCommand` loops through all the people in the list, checking if they have the position of student + +![AddAssignmentsDiagram2](images/AddAssignmentsDiagram2.png) + +Step 4. `Assignment` objects will be created according to the user input and added to the `assignmentsList` field in `Student` + +The following sequence diagram shows how the AddAssignments operation works: + +![AddAssignmentsDiagram3](images/AddAssignmentsDiagram3.png) + +The following activity diagram summarizes what happens in AddressBookParser when a user executes a AddAssignment command: + +![AddAssignmentsDiagram4](images/AddAssignmentsDiagram4.png) + +Design considerations: + +Aspect: How AddAssignments executes: +* Alternative 1: Only adds assignments to indexed student + * Pros: Each student can have different assignments + * Cons: Will be tedious when there is a large number of students in `TAB` +* Alternative 2: Save Assignments in a json file to be read so every student added after will be automatically instanciated with those assignments + * Pros: Eliminates the need to run AddAssignments command for new students + * Cons: Difficulty in implementation + + + + + + + + ### \[Proposed\] Undo/redo feature diff --git a/docs/diagrams/AddAssignmentsDiagram1.puml b/docs/diagrams/AddAssignmentsDiagram1.puml new file mode 100644 index 00000000000..cd11b804777 --- /dev/null +++ b/docs/diagrams/AddAssignmentsDiagram1.puml @@ -0,0 +1,27 @@ +@startuml +object "__alpha:Person__" as alpha { +role = Student +} + +object "__bravo:Person__" as bravo { +role = Student +} + +object "__charlie:Person__" as charlie { +role = Professor +} + +object "__delta:Person__" as delta { +role = TA +} + +map "__:TAB__" as Tab { + :Person1 *-> alpha + :Person2 *--> bravo + :Person3 *---> charlie + :Person4 *----> delta +} + + + +@end \ No newline at end of file diff --git a/docs/diagrams/AddAssignmentsDiagram2.puml b/docs/diagrams/AddAssignmentsDiagram2.puml new file mode 100644 index 00000000000..9da3f5bfe53 --- /dev/null +++ b/docs/diagrams/AddAssignmentsDiagram2.puml @@ -0,0 +1,35 @@ +@startuml +object "__alpha:Person__" as alpha { +role = Student +} + +object "__bravo:Person__" as bravo { +role = Student +} + +object "__charlie:Person__" as charlie { +role = Professor +} + +object "__delta:Person__" as delta { +role = TA +} + +map "__:TAB__" as Tab { + :Person1 *-> alpha + :Person2 *--> bravo + :Person3 *---> charlie + :Person4 *----> delta +} + +map ":AddAssignmentsCommand" as AddAssignmentsCommand { + +} + +AddAssignmentsCommand --> alpha : check +AddAssignmentsCommand ---> bravo : check +AddAssignmentsCommand ----> charlie : check +AddAssignmentsCommand -----> delta : check + + +@end \ No newline at end of file diff --git a/docs/diagrams/AddAssignmentsDiagram3.puml b/docs/diagrams/AddAssignmentsDiagram3.puml new file mode 100644 index 00000000000..3dc36c4c296 --- /dev/null +++ b/docs/diagrams/AddAssignmentsDiagram3.puml @@ -0,0 +1,62 @@ +@startuml +!include style.puml + +box Logic LOGIC_COLOR_T1 +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":AddAssignmentsCommandParser" as AddAssignmentsCommandParser LOGIC_COLOR +participant ":AddAssignmentsCommand" as AddAssignmentsCommand LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +end box + + + +[-> AddressBookParser : parseCommand(assignments) +activate AddressBookParser + +create AddAssignmentsCommandParser +AddressBookParser -> AddAssignmentsCommandParser: +activate AddAssignmentsCommandParser + +AddAssignmentsCommandParser --> AddressBookParser +deactivate AddAssignmentsCommandParser + +AddressBookParser -> AddAssignmentsCommandParser: parse() +activate AddAssignmentsCommandParser + +create AddAssignmentsCommand +AddAssignmentsCommandParser -> AddAssignmentsCommand: parse() +activate AddAssignmentsCommand + +create Model +AddAssignmentsCommand -> Model: setPerson() +activate Model + +Model --> AddAssignmentsCommand +deactivate Model + +create CommandResult +AddAssignmentsCommand -> CommandResult: execute() +activate CommandResult + +CommandResult --> AddAssignmentsCommand +deactivate CommandResult + +AddAssignmentsCommand --> AddAssignmentsCommandParser +deactivate AddAssignmentsCommand + +AddAssignmentsCommandParser --> AddressBookParser +deactivate AddAssignmentsCommandParser + +[<-- AddressBookParser +deactivate AddressBookParser + + + + + + +@enduml \ No newline at end of file diff --git a/docs/diagrams/AddAssignmentsDiagram4.puml b/docs/diagrams/AddAssignmentsDiagram4.puml new file mode 100644 index 00000000000..2f63357fc51 --- /dev/null +++ b/docs/diagrams/AddAssignmentsDiagram4.puml @@ -0,0 +1,17 @@ +@startuml +start +:User executes command; + +'Since the beta syntax does not support placing the condition outside the +'diamond we place it as the true branch instead. + +if () then ([command is valid]) + :Parse inputs; + :Iterates TAB for Students; + :Creates Assignment objects and add them to an + ArrayList encapsulated in Student; +else ([else]) + :Display error; +endif +stop +@enduml \ No newline at end of file diff --git a/docs/images/AddAssignmentsDiagram1.png b/docs/images/AddAssignmentsDiagram1.png new file mode 100644 index 0000000000000000000000000000000000000000..f46b0156bcbc3131273ee7274d802c31f9c084c8 GIT binary patch literal 18925 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 literal 0 HcmV?d00001 diff --git a/docs/images/AddAssignmentsDiagram3.png b/docs/images/AddAssignmentsDiagram3.png new file mode 100644 index 0000000000000000000000000000000000000000..f667363bdb860cd74cfec07d3f408c651378c57e GIT binary patch literal 28065 zcmdqJXH-;K*EL#*AVEM;KtYlq2nYxYC`c-h97Li-$+5^eih_s;6gf!F8G#}v$w@Mj zgXElZzPqryAMNhv9p5|d{c*=vqsM4GwQHZV!&-Z-Ip;dwFQkNVu!ylB5D1Q_h~P^I zkt&sjeXRrf~3{(!)uksjpzJ0VdfOtK`E3m zQnat3DRei{MI4(c69=&jzTBg434YvrK3>=!cIkbWsM+A14Ws?lk?&&VVPZGZr|%=W zt~8!L#J#U@^fZZfTFxL|n599I^r6-vl*9J>dL_!uz z30~=duW~nz(zI|{v3-;}g_CYAvdBHGVn3Ogq-S}`VoP6WIs8E#gYt)iNXZW=%eI(t z%!?+B%x#3qcHw!=1?G~ehhOQe*VaPW8;s)Ltf5qquRri@YAD{G2(2RRo_*o)$eUo_ zaBQYT{7&*RlY*RGn%rBGACI)Lb-ydNQt9cqYChI}9rb}x;wm>$FWs&-4E-3Z6*_0= zL{iNLzaun)t!0;Yx=&nnu1dcuq{KVWwvV3!-%%D0YjZl^%@q11FcyF@@PU_D!~t8VN`^jc=Z+KtDT2hd;AuQpDhp{s#chrRe^Bf#%B4n#8o2~SClB8;!V4S_*SkKNTt(x2Ev11?=V9VA z%=ljQaM$OL9X&=&_GTX~>SweKCI67G5KBDD6%e1iNwz-ig!|x_&-Au}>@Vd;OZA;_TvHRqU%eBRfv$}-Eb zYi5N~HFbmLIq|KsQe#E}9+wB-!{6sHxnout$G@7tgsnl%-PurlDwO^-U(Q~ACHjie&8BlN8Et;;Dd}kq6twGkjUVoQ z{Md-kuvf31Afru5EdH2%&o(!)J*d4{bz4URs49`R4tXOK&Z#KlvZEg@H z_0yY?0W2(Z$QBSjDhz1gGb7F)?(q9JFffsq-lV*NH=|I>&|JfZ@R`zbaz?;ItI@{C z-Fs7Wx$QT+5x`G-Aj}xkQv+X=UM8cjG#N$Bg27{ z!;#v$Sg}k9Y*X6W5(xW6b!J3GjV?_3kq#I-9q+X(4^(V_e03LY@Ci%UlIDd?6t6$&!5>~5Fnc!fy$BX&V8_6~ zHJl@tK36=^vD%{>9;;EZ(*=RRNgRlvQ!j@bLoORL^p2i7!w5FS=Gig1 zkYGhH*>$iIZ0jN-H0A6m=TB4n&C1e5KfgU39~sRlr=ZSMwn>2*H4fvYt(gSS(Pl~J zz4cW0?HfCm%F)^^hG!WJc^C20y*iScFzYW~gpSyVgOY@kYWzwAR8om{wpOhfv z=IscPR?T>6k-@d+K4*A};JN3TxbX3ZOEdiubhZ$K@bnoICKv3l!R3dcf=7nCwStesVU-Q$k& z-FOgK4KeO7d}-tJ?IC69BkO0z{p0cZZp)o+M#HvARxZEJkS1Y`eqS1zT$QD+$2$Qw z1*q*Nu*ZTuY$EibVa}@aGq3i~cCcQdeIGh6+~^j&hBI8uRrPpif2y|oB~QKfVG8cY zVBv%$n5Y%jiF7&aM@czdpSMXR-9@x})K@y+>z{k!&;MQQg#1`KWJX7{z&0!D4vpJf z=X;~z2i#vAVZ*mHIF^e|NLRTLIr6vnj?1xT+UAYq6`n+)dDKTCy-PTU)BgBa={C9s zG^Iw&_576h5&Wsur6exay;bozJsBC%9(o9*IXPTag`vk^hXm1igF3LolKu z0RAnaV7{QUvAoO=t<;Z@k;dh8H|q45Ttq_w+0XzB!}|`nvsMLMBDySH$QP}n<2psy z)DkhL$)M^Y12(eJpPhdq3iKmQ6&Wa@u;XV=*a<-c-~Dw+G-7*~AL}e$BAQ`ZcphAp zkNjcR&1?8iFUFlf2Rs_G`JX2W==0)e@({$u@Md*~g9o`dbSS7T`9y*-Jp^TurVKuR zjtdM483jXrK5s%6++_6D`Iy~&^6dLex#rPQMc0$fNQ5fvx1Rx{wq7uQz{q%7>q*o@ zA2Tz9C^R+`Z^KcH@Q_W7NlDhd#;lP-_GBZ@?Yy^#z0vAmW4bprRo7Gut?FPi$v?Uq-69cfGXHGJivriMx}35n#h(^Io$*jM(Xe$6UR)ue#~9RsUkO2bj}`!RlP7P zbyxdsnrW^FlDk#do}E}tPR8-Oz3fz14~yk-iH5^hrnaQp9Cs6nVCCYoc;qSIP}$yH zwyxp4DkpQ8qlP&?uDCWXsa$zPXng0Ey%#aB)1G79`zJ(UBK`SJ`$5P1yc9$U8L@6v zrg3mZPu?^8@X%28YS){v@-m@7!EX1LFMAe6H;Eo!mD_~oTQA})mAV{jCnSE+d{xck zSClI0$AD(8r$ zIYQEF*J3xq#|GD)vqLj&hf{VrN$);UDwcc` zucl^0bUTuRSAu(e;`~jaVGs5DEUE_*`(1n?+Y`vs?KbBs4oSY$C(?VAln&oBRKl36 zlTb;Yz`v`*`w-4vHSR9~T*Q z6v-A!jQd9&H}CEa=F#Gi2o;#gx5u7$8ou~U!hs)sepVYYPCx(cQPLSXuhdh^8Sf1= zdfS`$*_nzrsHn)h3$%x)qYk4Pq&t03P&Th$FH>1EEb(wX&|k`0pTT+Nvbc8l_iaxU z7#`j!4E~aQW+cN&U2O?>wXUEt? z%vG;(uHM|zNYTP)vzU60ho{#0NMFxo^5YY`H3wByd>Hs?$FsU}yC8i0K=NlIrUPrS zpQjHKG5XSPIGh~Z$Pe3Hp4RKEiqd=`5_Jzbsmo*0SAO*!TFR7$W6JxmyKd(rYiq){ zxgDb<#KmdFklB+9<*;edT4B2G=wb75}d3n|cv9?PE%*xC6c;B{7N{M^GwydD^) z^(c*`)(n<|{H-S&S8*C5*@~O*8BFg_6jW)?%@Inb)<}&b*I$3I^0;NbQ#Myk{H9-~ zqKJ_1kxyA9r@X#KwlZlv?2P7GrBF?5g?lP`pZdq)1oaBnk_z87no76D#W&&zmO8?oiCF`d+x~ z4faTZI76Ya@a4<({&x-)kN27q63BR+!=b}*#a&Nj2~5WvciTDi4JQ~B)qC(`$4tqt zZ+?)f8#%_}*0GE7za6xDWg15gQ~!zmMy!rPsuXv&qO{$BmpbKQudtnQdnluw!RSJ; zfz$TfgBv%vWlMtwj(3vF#gXAX`20Ni!UaW6PR(fVC3iQ@wlOCr7BCTGd?Iy_QJ2ZPc1kxhRHmU5LwWu(ZKfVZy; ziz8yq?&Tt*^_;0uY8~mbgRb63%PP|CpUM3`IS1z~EA0!99*!sjf2aRMvlh*$&eSax zTIrU<^W=%UR1C!g2A-P;X-9VdkE8hY$_)%}kk|b(Q+y(i(SF?lAY1$29oF8P(4L~z%NIvKr}f6) z&i;CP%G_^s}tvZNBO_D3*x}X-_~pRXl_V}9Kf51zoMQ?RKios63B}W-Tn$8AU}}N0M~9 zwot}`FJDBYrS)TR;jK&1L6

    r@;J@PHKi$j2139Q>Rn6DS< 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 literal 0 HcmV?d00001 diff --git a/docs/images/AddAssignmentsDiagram4.png b/docs/images/AddAssignmentsDiagram4.png new file mode 100644 index 0000000000000000000000000000000000000000..5a500b949e01df2d39f3bbe8b97a324d25f47efd GIT binary patch literal 16519 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 literal 0 HcmV?d00001 From bc9895e704e13dfcd6dbdc89b1fd041ea7b43d3a Mon Sep 17 00:00:00 2001 From: Markus Wee <77526609+yellow-294@users.noreply.github.com> Date: Thu, 20 Oct 2022 00:05:39 +0800 Subject: [PATCH 074/208] Fix JavaCI issues --- docs/DeveloperGuide.md | 4 ++-- docs/diagrams/AddAssignmentsDiagram1.puml | 5 +---- docs/diagrams/AddAssignmentsDiagram2.puml | 4 +--- docs/diagrams/AddAssignmentsDiagram3.puml | 8 +------- docs/diagrams/AddAssignmentsDiagram4.puml | 2 +- 5 files changed, 6 insertions(+), 17 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 7eb619cf7ca..9e505d9f7d7 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -224,7 +224,7 @@ The following activity diagram summarizes what happens in AddressBookParser when * **Alternative 2:** Creates a new Address Book. * Pros: Does not modify the master address book. * Cons: May have performance issues in terms of memory usage. - + ### \[Proposed\] Add Assignments feature #### Proposed Implementation @@ -240,7 +240,7 @@ The `AddAssignmentsCommandParser` parses the user input to check the validity of Listed below are the possible scenarios as well as the behavior of the feature in each scenario. -Scenario 1: User inputs assignments with weightage that does not add up to 100% +Scenario 1: User inputs assignments with weightage that does not add up to 100% e.g. `assignments assignments/ Assignment 1 w/50, Finals w/40` diff --git a/docs/diagrams/AddAssignmentsDiagram1.puml b/docs/diagrams/AddAssignmentsDiagram1.puml index cd11b804777..4013595ca7e 100644 --- a/docs/diagrams/AddAssignmentsDiagram1.puml +++ b/docs/diagrams/AddAssignmentsDiagram1.puml @@ -21,7 +21,4 @@ map "__:TAB__" as Tab { :Person3 *---> charlie :Person4 *----> delta } - - - -@end \ No newline at end of file +@end diff --git a/docs/diagrams/AddAssignmentsDiagram2.puml b/docs/diagrams/AddAssignmentsDiagram2.puml index 9da3f5bfe53..fc9d50592c9 100644 --- a/docs/diagrams/AddAssignmentsDiagram2.puml +++ b/docs/diagrams/AddAssignmentsDiagram2.puml @@ -30,6 +30,4 @@ AddAssignmentsCommand --> alpha : check AddAssignmentsCommand ---> bravo : check AddAssignmentsCommand ----> charlie : check AddAssignmentsCommand -----> delta : check - - -@end \ No newline at end of file +@end diff --git a/docs/diagrams/AddAssignmentsDiagram3.puml b/docs/diagrams/AddAssignmentsDiagram3.puml index 3dc36c4c296..6857b9e37c3 100644 --- a/docs/diagrams/AddAssignmentsDiagram3.puml +++ b/docs/diagrams/AddAssignmentsDiagram3.puml @@ -53,10 +53,4 @@ deactivate AddAssignmentsCommandParser [<-- AddressBookParser deactivate AddressBookParser - - - - - - -@enduml \ No newline at end of file +@enduml diff --git a/docs/diagrams/AddAssignmentsDiagram4.puml b/docs/diagrams/AddAssignmentsDiagram4.puml index 2f63357fc51..82084081ac3 100644 --- a/docs/diagrams/AddAssignmentsDiagram4.puml +++ b/docs/diagrams/AddAssignmentsDiagram4.puml @@ -14,4 +14,4 @@ else ([else]) :Display error; endif stop -@enduml \ No newline at end of file +@enduml From ecb1e2abdff7ca6be5df6b242fc130312db35955 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Thu, 20 Oct 2022 00:38:41 +0800 Subject: [PATCH 075/208] Update DeveloperGuide.md with implementation of ShowCommand alongside UML diagrams. --- docs/DeveloperGuide.md | 35 +++++++++++++++ docs/diagrams/ShowDiagram1.puml | 19 +++++++++ docs/diagrams/ShowDiagram2.puml | 17 ++++++++ docs/diagrams/ShowDiagram3.puml | 20 +++++++++ docs/diagrams/ShowSequenceDiagram.puml | 57 +++++++++++++++++++++++++ docs/images/ShowDiagram1.png | Bin 0 -> 10799 bytes docs/images/ShowDiagram2.png | Bin 0 -> 8955 bytes docs/images/ShowDiagram3.png | Bin 0 -> 10377 bytes docs/images/ShowSequenceDiagram.png | Bin 0 -> 31703 bytes 9 files changed, 148 insertions(+) create mode 100644 docs/diagrams/ShowDiagram1.puml create mode 100644 docs/diagrams/ShowDiagram2.puml create mode 100644 docs/diagrams/ShowDiagram3.puml create mode 100644 docs/diagrams/ShowSequenceDiagram.puml create mode 100644 docs/images/ShowDiagram1.png create mode 100644 docs/images/ShowDiagram2.png create mode 100644 docs/images/ShowDiagram3.png create mode 100644 docs/images/ShowSequenceDiagram.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index bc7f0f26256..a262995bec3 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -313,8 +313,43 @@ _{Explain here how the data archiving feature will be implemented}_ #### Implementation +This feature is facilitated by `ShowCommand`, which extends `Command` with an index, stored internally as `index`. +It overwrites the following operations: +* `ShowCommand#execute()` — Executes the command, displaying the details of the contact at the specified index. +* `ShowCommand#equals(Object o)` — Checks if two objects are equal. + +Given below is an example usage scenario and how the displaying mechanism behaves at each step. + +Step 1. The user launches the application. The `AddressBook` will initially display all Persons with their `Positions`. + +![ShowDiagram1](images/ShowDiagram1.png) + +Step 2. The user executes `show 1` command to display the details of the first contact shown. The `show` keyowrd causes +`AddressBookParser#parseCommand()` to call `ShowCommandParser#parse()`. This returns a `ShowCommand` containing the +`index 1`. + +![ShowDiagram2](images/ShowDiagram2.png) + +Step 3. `Model` retrieves the `Person` object located at `index 1`. This returns a `CommandResult` containing the `Person` +object. + +![ShowDiagram3](images/ShowDiagram3.png) + +Step 4. `MainWindow` from `UI` component will process the `CommandResult` and display the details found inside the +included `Person` object. + +The following show diagram shows how the show operation works: + +![ShowSequenceDiagram](images/ShowSequenceDiagram.png) + #### Design Considerations +* **Alternative 1 (current choice):** Passing `Person` object to `MainWindow` + * Pros: Reduced coupling throughout the program + * Cons: Changing of many method signatures, unintuitive to implement at first. +* **Alternative 2:** Passing `index` to `MainWindow` to retrieve details from `Model` + * Pros: More intuitive to implement in the sense that only `MainWindow` would be primarily modified. + * Cons: Increased coupling, violation of Law of Demeter. -------------------------------------------------------------------------------------------------------------------- diff --git a/docs/diagrams/ShowDiagram1.puml b/docs/diagrams/ShowDiagram1.puml new file mode 100644 index 00000000000..c96419b3d09 --- /dev/null +++ b/docs/diagrams/ShowDiagram1.puml @@ -0,0 +1,19 @@ +@startuml +'https://plantuml.com/object-diagram + +object " Walter:Person" as Walter { + position = "Professor" + phone = "91234567" +} + +object " Jesse:Person" as Jesse { + position = "Student" + phone = "98765432" +} + +map " :AddressBook" as AddressBook { + :Person1 *-> Walter + :Person2 *--> Jesse +} + +@enduml \ No newline at end of file diff --git a/docs/diagrams/ShowDiagram2.puml b/docs/diagrams/ShowDiagram2.puml new file mode 100644 index 00000000000..90bb3c2a9ce --- /dev/null +++ b/docs/diagrams/ShowDiagram2.puml @@ -0,0 +1,17 @@ +@startuml +'https://plantuml.com/class-diagram +class ShowCommand +class Index {} + +ShowCommand *-- Index + +class ShowCommand { +-COMMAND_WORD +-index +equals() +execute() +} +class Index { +-zeroBasedIndex = 1 +} +@enduml \ No newline at end of file diff --git a/docs/diagrams/ShowDiagram3.puml b/docs/diagrams/ShowDiagram3.puml new file mode 100644 index 00000000000..e14912aac22 --- /dev/null +++ b/docs/diagrams/ShowDiagram3.puml @@ -0,0 +1,20 @@ +@startuml +'https://plantuml.com/object-diagram + +object " Walter:Person" as Walter { + position = "Professor" + phone = "91234567" +} + +object " Jesse:Person" as Jesse { + position = "Student" + phone = "98765432" +} + +object " :List" as lastShownList +lastShownList --> Walter +lastShownList --> Jesse + +object " :CommandResult" as CommandResult +CommandResult --> Walter +@enduml \ No newline at end of file diff --git a/docs/diagrams/ShowSequenceDiagram.puml b/docs/diagrams/ShowSequenceDiagram.puml new file mode 100644 index 00000000000..926ff710c18 --- /dev/null +++ b/docs/diagrams/ShowSequenceDiagram.puml @@ -0,0 +1,57 @@ +@startuml +!include style.puml + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant "s:ShowCommand" as ShowCommand LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +participant ":List" as ListPerson MODEL_COLOR +participant "personToShow:Person" as personToShow MODEL_COLOR +end box +[-> LogicManager : execute(show) +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand(show) +activate AddressBookParser + +create ShowCommand +AddressBookParser -> ShowCommand +activate ShowCommand + +ShowCommand --> AddressBookParser +deactivate ShowCommand + +AddressBookParser --> LogicManager : s +deactivate AddressBookParser + +LogicManager -> ShowCommand : execute() +activate ShowCommand + +ShowCommand -> Model : getFilteredPersonList() +activate Model + +Model -> ListPerson +activate ListPerson + +ListPerson -> personToShow : get(index.getZeroBased()) +activate personToShow + +personToShow --> ListPerson +deactivate personToShow + +ListPerson --> Model +deactivate ListPerson + +Model --> ShowCommand : personToShow +deactivate Model + +ShowCommand --> LogicManager +deactivate ShowCommand + +[<-- LogicManager +deactivate LogicManager +@enduml \ No newline at end of file diff --git a/docs/images/ShowDiagram1.png b/docs/images/ShowDiagram1.png new file mode 100644 index 0000000000000000000000000000000000000000..097cb16590d8f8f12abd1cf17d9cc71fc9636285 GIT binary patch literal 10799 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 jm{xH7|NWBQ6~QTQQ942E literal 0 HcmV?d00001 diff --git a/docs/images/ShowDiagram2.png b/docs/images/ShowDiagram2.png new file mode 100644 index 0000000000000000000000000000000000000000..558c573789108dd08308d04bb6abf4b540f66a5f GIT binary patch literal 8955 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�Gpft_0b4=>puj%{u;~4d;{~!LZ_tI-` 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 literal 0 HcmV?d00001 diff --git a/docs/images/ShowDiagram3.png b/docs/images/ShowDiagram3.png new file mode 100644 index 0000000000000000000000000000000000000000..856921226a83f97aaefd669c895da4659162ff73 GIT binary patch literal 10377 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 literal 0 HcmV?d00001 diff --git a/docs/images/ShowSequenceDiagram.png b/docs/images/ShowSequenceDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..55d47f6b53eeab8b24320d3d945544d34db96feb GIT binary patch literal 31703 zcmcG$Wmr^g*fu(VfRak8h$sliNQ0mtsnR73jihvU3@}KDfP|9L4MPY>Hz*<9-QC^& z-Kfv=KK1S&``g>Y;}BUh>#i%#>pIW1d}O4Aaj|Y=K_C!ZQIQw25Xcow2m~eODk}KR zl#YKm_=nEsrIL+~xrL*NuAU7W(7F*=3b~mXU$;b1}Qx^wvyp!)OE28D|Z8w@IInvaED{GE%9;V3!!9Ag}>_mAZ zHNj89;$e#K%Ws4l`7kO|B*@e{&{TO-O40=~lrh^|x?!{$gbwo81qIb^?q*f9v8?DQ zi;q*|Ms#lo-3y%*F2ykTu@G1@->*d}(J8QQTKlpbTSMQnkITvy?<)PhW_EU>#K^~i zLXl%~xB*e36L0TJDsQ^AwgsjHP=6z+$rU1KRS~#|RMcx&yA$|0O()y2UdKefUTH^r z5dF(wQC67MO{m;3Nyg1yq4jwUJeN1(Z9Gs41SzRv{G#KGt zrT5y!U>dX{VYxN;CF+X?KK}Rb<4rxoE@u$o!)*;!m&d1D9Mui5qC=;RwW$3m3OM|1 z4Y^UwExokT7gW8xWV~q2hge_eI6J-A-Ff9sy5AEoz0Sh?uBq^V+cho!B9)~n*PYdQ z8vp$S-X?r9cb`FF9NFjahT)VmBKF`NTgl;ktUjBySTR{(7}vLudwcQ zNc+6S8$z|?il&U?_94D*H5vl3UlDyF0CP}Z9m7=Wou|OGu;}PlzJ>L}>XGk5sL>dl zw79?0B4@hB-?q0%LABsLoK$hlR|WI?p5jP`?M5Xhbn*g|Nm9p(YU--`C-c~jnc$YP zS(gcJSB-Ud4hm+iZ=Tl(X(S@R56K%%LM4#j|M~e_uBafazkH(m#1rQB$EQ871&`Av zqyGHnuUqW$-Y3@l%k2)9deYo$J<`x1Znyo(IOPswV~ctUhW*n93_(Pq+Z?l>*qV5i zO-Wo=SAhnB^c~G2-CQ#&$yskeAhHl72s5&nvM3NYr~AZ^@>iu-;GH12DhjXXg!KJc$#BN1Hx*ekC1Iny#N+!&SRJWZr9g1=jGSeL3IzsYU zQsvHa36T!O6x`cK>(A>lAt7!sNDx6*h(^Ifl?t&hajwJrWAFIaytPg*T4)RvMBswH^tFc2I6v*^Qp7jKF;jOra;dQXGn^im%5Wu#1-2k z9}9OS&Z!hG&#bOKb=b5w2@MaY;2Etrg0`8DI^?NW7TMW(eSOn3zp6GHu3_gFce}>u zKA8Ng&t}Ft;^ybB0qrKD;(^odFpDoEnkpiyuCY(Wsl5eNRqV7|0_~R-hid7B8zkni zp7dH+&84|lm*J#q3{pvlWfdrHu<}Y{ewd5JLqfUjF zYMfN}tr^lTL6!Qu9LD`I)Si=*q3kZ8XR(ckfW4U-;wRfR_Yrp z9FB`rcl14#PUodlJ6i4ojq%R7`A37qv$5?MVDGN~-a8(rD_!59^0&WwPdM+e@z5)@ z!Y6B%*k{(xs8z=cR}9FWBje!*dF(SQs*0yJkPKi^!ws^vOJC5IDu)>q@8&SAsyY!( ztWAW9qYH!@bvk=|Ynq^mRLvBfjzXY#FZC^VN$d%F4OyMLpqr3JnwXm0O6#z)l-BnE zJ972+j<#c4(3q>2r>778_%Q%G7`Z8iZgLR))Osc# zRfaAZwUZ+Z%i!I)Zp!I9J@P}Ort6p<`^L7TS@Ku}Ot|{;+aO z+aC#5F%iA93%B+YR5xM)A9wNZtR}F+;~Cy`McJ{IV~;k(NVEnYS=Vl zr>(=}WTSdwc6Rn7RpWx~a)H?(^A^+4-WvC3#KZjy;?DK;^(H=MR^4Xs7i&unO^M-h z?@sPK9ST3+*vD0q$w8k(iPT5Ne>A>P)K+W9BR+fPUg<9<7@_*eQ9?H8N5t-<1lFT9 zrx2(#+gsw`3yiL=0GCI@q;C*o59N+`tMS+_u>v`#ahEL8uFjva@4wX6&7>7XVkz7j^o0kbjU;L z#t!Twh{Tsz{8XH1btAYNmI0$CI*aE4#|ByUy1Yih6mW~z*)CsiOto;CO|LblB2iO<=% znk&WA>Ai=O>`J^uYQ7g57(7D z*@#oz+e=sL`FQ)Z9Z9_D3UB)|LFLoSbhEq@T|%@M)yO|RCX$cFdd7q4+d`BZw7Xv{ zlO&{5-+}j+8{j?N_Cq*lyx)BkD!#^`!xOUdb78@|3GZPLijU*xB!bXRNHXemey9jr zcMgoPu=vBC%$Gn}oS01MZf{Ci6z3OCC#qMG{AfW~{1D{5Hj!%C(%x~_{^zB_wU+FD$5*Ut$;OpMxq6Q{!q#d3^gT&T zUCU7-rn9w!Qjo*bI56glT;YfPhXcZNsYmUvKUGe?>y{sQ5~?1-NKq`)j4d{jjQ`R< z%{`blE{6L+w&EFjVp3f6lP!sg=;s~86c<`epQ28^Tu#mLATZ5e8Rowc(F|ke-zJ>pRLDMq}GhxEU3V%kaD?rRA@G%nn;ZA zGxpuG_-WGkg~Xj|+Z9~I)H_^z!>Q0mIrSr|w3jEYjGP?M$jP7TN^QHSGk!`Vh9Jz8 zMc+G*;m*s~d(G>x$r7`WB)riaPHILKlLxDb)t#=xj^Y?|Io{>rc~$L-@Z%I`6G6Wh z-vr~|yFz|+G?#hmwICSY{Vh$u!>^cAk__o4wXqeKhK?;Q5lQz$3Kg?z-JbOjzGbDe zsI0D5ZkapcX06qtL&2MfG4U!b#epp|MU5gQBBcFncK_J^EXjq*%5I!;d6$q-Ki8X^ ztboM4RXKw9A~ULZgM#-Q?lnx-;&OC=e_u6&T{APeBA))uoR0jlOs_38H`z?*P*@Y` zmKs1V{gs;dkq|FDOsNbYtTo+fB<>g1NAdzK28?GzRiWPCdF9=~40*dn&N zbJB{i{L&EK$)QL_RT$?|`>~R|cL|BOz)eOSsrW`s!NeJaWzg3M7p2oq)Aj3DzHUZXmdZ{T1n8tohg4#5%f z1v=XB;LY`U}VzDNxd*OAwe zmjL^s2|b+hex%<~rMZJ4_cq7;0dctfMne@moL_YtF``mx)eCF{8G<-H96LQ4K%&l6 zjZ3x^o0fNw-=|+~Xp1tRo*`TxgLCUPqwlL_-BBx8#27KDaqGEujl$r5I2Mh>6N+0$ zhxL9X!hr;V9Xw3jhn)%fi?^1BjtX<~UQ0w9rHH+nnzA?O+gaF9%qp3iA#6f~E%h*U z6< z9Nmv~=)(U5G4S?N^@exym-A zyn3}f$~Jx><+TBu88JEYecsr9S+gmU$ka=#yek@zti`ofP-@Se)jS4$}CeV*+_jIvRg1? zv+88s%3yKt@DN`vO?@_&nuFtf>U%M4>Xl>@36=Dk-Eb((B>zGNmd4KZnK`gy@{5)SEw)2Rvk)DO4>TcNj~IqHNnjlaH3k?g@(czbu8 zbygTTr1>^FnAElwXEi#Q)b+&Mnbd9d5wmlT$x2|G9XaCD6V+*RnC1A%6x|`WTytbj zs^vGvW6r2e%va0~5(B$Mt&sP&S}+3dHsaj2)$W$actUl8qtlZ8+prGPB-vmhYi7ge z`~&CZQ3Yw#uo0fq38Z52dgrGY+>uTDWYiGdcLVn8FYyoGSrOS^|I(dUbiBFI_?Tvx zVSSH`>uRVn?DMT>{>;HKFNGZrPSJ@i^ye8%wnu238YUj~Yh{w8wj2mI^0H&3^K$dh zhOpwOnz>s66w|;J&Ukv3Ign#E&ii!FdjyWx=_Ti`o5?F`%m(6%4;t?iyH7>c`zQPI zc=bo+5e}3(!sTDhc6tzuxu#!CM}^8y&(4^%MB@mnT#o6#9&|EyJ^JR`W(%7v3{{)|qf5jik&Idel}~&~AhRT~17k;sV1cGxTOYy74 zOx1&RM7Lp%(nn|QRps>wM7hP3zaJ@~dHQfMlOsI9LG7B8n)5adqeewJXarm}pdsGO zgISpLKHxeB?kd~X+>FXdoJB9=={l})?IOms`dJ{^*=ALltN66Dy1nm}aD{jI@_ww& z0*|T1(I2h(cB`+F`p$MCt2a(9-?ypiLnqmyu+m2pCJP=!Q6bQ_INztU=wJl8?o8g7 zml76|x^5yZoJ1sGyF63fE;FMsmixF>t^Ac?d2J?_{go}lh(&t4E6{It{Re4|8T3n{ zf&Q_rYh+=)9x&{x3fEv(9O_%^q{|p|0G{b(SucIl7^^BTlcC$+oZ6BL(frP9YwRcY zb_tE~WOS~fXsiHxuRS)W%mRK3PDv=t-D`Z+w5S2ej@xy>q)`dtYFAVBx50xD0)lkq z5)U?oCkjUZ+>NE6?pOM4RF$_fl-ev2KiWFk6;*qz(?D%Te9^L~23;KEwq$e7Zpejo zW(~2ZkdfHwEOxTNB4iz#rO}Cq-QC->U&Bv26Y4gSW%aJ#8RgEa<9m@g-ywZoRZY*c1sRtCDp1N>`?&5@3ep_ zt;|a{^4&T;Th}8`?@Y6b6GvagMq}|1vMiTbJJ}tr&rQ|{qWyCFS)^+Hm|||WketfP zl$(86p367a-|68dyU*x&5az7UuPwfPJ38^6C>hnLm{gJQ;#1wy&`!APJpB_DrS5zg zIliaX>ka!?jlRG9y!!1;QPd&3giYAw)dC*VCKrFtKxlo^TOYcQ+pX#sU#4+yULuhX zwqN3x+TYPjy!T6@Jn1PadO{q*t4TRhfmwE?0)Fm}wODCdmhaUN`=hR_|4Dd)JSH4x z_|-;c$$+`RJG>IgILyKiwF9Yr0rElsro4t;y?PiGtGhiroAV~9Crx9tjCkd2BPX%c zw|PW_Zm8IN`UVO8;l{`a4%h)V*!bF@yL{&%VwH0(=8`c^A1~Az zWZzz54=6W}(>|RXBQs3NFRuRPB>?t8-lLgsLU_zf&^>&(Wj}RxOs&3DV%bzpdNBV# zPCXlCe*V;coqD9E?wef2#(wStHmBXEzdSmbtpd)ue|}bsPf=ysJzHHKcGU5Wg+pY} zvW|!Gi6ddSxrIINufvP~j43Srj2p4k-MqOHW#9RnkvMnc4$^GWE`dQqtu(A8LrPrb zWj$`OuQ>XM@#8dkn}X*&m~04}#kQgwia6Sr^&K694hOL(^%?c&x{YTKUQ?-3ilAfn zEbw&}@;&YyN$Uu}lq9|wKfAl3dh1T<8qE`2!Wil&?s;N)YKBn?7}bQ(B->jKGD53^jt^!&9Q;>MX813T0@Vu zV9r^UOUmn4!&V?S<(Q26$}n`QOOH8b)Sm0d4*j#MAIx^`JwUV}L~(T2_h zQdEzW?x3hXHtOZ0z!_7NsXqVc>4`r*{Xra^@7%%bbxQ<`PaknO);k>0Q#HfW!#dee z7s>Y*=w=?snn6YysY3P2x*l$a&FYOg>sAuSafL9f+w3BzRxO{XImsS#H5VA$Q}Xhb zR%a;qyB;uV?JbXtHuQ#O-2i?@Qt07BqLW?-P^@%^YLd{0Jg-xyO5wmd#l7izP6-?i z!pw>bp6^Ab(iILjggw0B>X&2Qn+l*B96y-}=CnL&uv@r<^+j^EAE#yp^G~~~6mK#S zXIX9~dM%Jg9zQ`h_wf4AzE6 zJTT)7hj(v2J_l87`g2^yU8&_WGS2bcjSJ2-_)_MX802*50tJ}dzp9LmK#2;VD(1s$fidwPOAm1h-%DBkkVE+6N0 zygi1PrP;V0u9%a?=3_AaF}tkt;9fQttM+NF8JfD9=qVP3eeu>&edc201=1X$r17o8Cm5SE3RK8~_f7$!d3C@|fLJ#wu5(y-QF7FJ%W(-8&7SMtk) zv)OSNNNR~%Y}PA(GGi_|nCx3CAEgLqS2FYxHRq&C(@M;jfT@5Wg0MU928{zyWaO<{ zlb#>lO!{RcDcFICg8(iA)2XkGjV|JS3r%$SgBjA@!yiE0eloe9x+X1kruF=@(W7n0 z7yIN=ErA$PtS6vCAPHli94f~uw?EpT5HyJWiegXWuIRbh)Kp%I)+M~?n$+S4$QUQ^i;UK`9DYc^m`8QKJv~G~L%$dkNf`9bx@M6&4fpvZ5 zyD7Nny&KH7FnHRG`qIoK@GxlC$@O4bw>5}mG@%G)xOr?g&Gc!U2kx4CQd7ctafU#L z-Rb#=L`^D$1)m+L){G%KgRO*_MUF$8b+dG@m{J-Xp=lhPTw023%Yz4%1JAhj4gfkB zR42+DG*>l0JL$ti$?#17G@}v~pto6_A3AI%B=!A;{#IZOlmYs2=y}Gci)dcBqx!)` zfO)`gQ19faJ?@c2OK`$^f2upfcGR0AF1hgYS#AT;#|+n?Mb2cfvm$Kh(b(moXA zHA?*x*;9#secDjpaEbYOM*GqkOszq&Vun`x7f65ahP0%ntt*~f_mO?=JL)fKRsEw6^|ewFPPKeC>2m%ZhEo;&Gc3{f=4CR$gQ=RCi(0K6=Q!nkx^BVd~Pw9a5O&vCIpoTi~S|+$X*y7eQ+^`PN@Y1TAgarRO)05MIjv{gyYm z6yrdKPewg_4?5M?W#3|eln9X(i2Mi|naE1e)xI>HMKzaCm-C*ay2Q*P=(hn`1)3~| zLcm;8_QUe-Ht)UiO|ae*J(hu4LLVxa#2GkWQ_p1Oes?CN@t z@Ny=xjUZ_42O0as^)#I%&G+j>mJgUSaQ}BpzR0|KAib+ZEL7Sn`>!Jt^Xwu{`+oV^~h9i7<=egCANiE1kGY_GF_3UN*ldSf{B< z>`fd8s}?)>xoV;H%T>#KM91FuBXuuI=n?RSgh@evhykHKI& zv4-7-YY|vgqf`5f;LeJBqzxa4!0rnKlcJ|yjuwRVq~Dq*(sLfYlvytsa0b{VTQKk6 z1C0)+KV)b6;l)CQ{=YCbm&{KP*Cn;n3uxNE5bnw7qYfF*7i~HLhk$2h3M2ZzoKfuYm&gqJ3x*90eFZ+@b??1ghDyzWcwHk6FwC z#cIR0(rOh+h=JuIF4(pNX`Y>~hA|A(waC@fOQdR7mI3pDdS{7F0w;K6V zI6FIoX&4QBaakSALqWqB92&}-Bczp*h~ss6@uF_7B^)g7DdOB&hpZZLG2YVhNILde z2qjo!zF|*lNy!rxGjnr3*V99MQDnUFKo>d|Q8EQHP*B)gKT59>>WmBy4oXB7h0P}=j?XrSR=@O%y%Z;O^HENtoCv%`-g7y|sj9Ly z%%84zNnh6|gF88umJp>_#i3%f5izI)#3ll*g^9=O^7Y{dlB*|zL}Zbi8v<-0mR;&_M;LMRXU(jO8#I3AI6?fTB2?8gA=ULo=tHuno|42<({MYo<>G4iMtJap<# z)?MmONfWtFL?pyL-+osA{s!OL$bsknH1C@qk&oeVyupXkTDP%Y{Bd?!3li+te)-pZ zPzR}3MvCbxDh?1_NKH*mne>%fFBpVoXRqz83`l~xn+<)PtM;Igl$EUwp?hSYA>8=w z%a{7k=GCv+%*WMLN^F*H6yZ{1($eCqOfL)=GzO@e+`p&-QlM%bq#L^@q%-_P@yqF}SLWKEzG9N!zjrTU?IHUAHrL#V zUGI1Au)-P}8wb9;E;kwaI+U-!(VtDGYG5&wp8infiC*i?^KZb4GLgzHtfQia3OXleCi74Pia+`yNydqp4#KKZGHpynpdT>@5AY(7E4_?Y$9 z=wYn~X5d|(X(q>mb#jIqhz)nFEy*ax{KV)XKvtbRN{j}!J4kVr@=}n2dj*q43z$5& z{rC+g(vhMyp_VY7N3isIzFQE8=Fe37$P39|DjJRT;5M^nq=Qz*O0Qu=e!g)G7sI!2 zcs>KDki|ixmeIarU3qwkZ(az2; z1oz?nh_giqXYBHIE^?czNH-5vGGebkk->e&o4Gz;-}(gN^;*3O^8Gg$xhjXEIIsQb z@zWxxw>UXFf`VRu>q`_p?IB_Z0;kJ+>hS0%ivGqmTF^xlGIH}@3k{;BUv={qezoO| z27oH$5_0{Nx7-5_Ax;`;b?wdXD4_WYxr8=91uQaGz;0iHte;ZDho}Guft&u)ybu9p z%YO}W`5gnD2WUUs{{d*;QUX~98PzR*l4R7sQ{5bRPzI|H_^5qNRYF&KA zY_7Q#Rq2Xb{{@>Se<2w#rF2T-Eajc>%1Ub>s5?2q1WK<;<^1)d?IDo42+R$64v~|S zwWJ_2VP26SHg8DQ2DQAod8&l+H=qkqM1f%bv9($;NVgMWZlHqWgztAKWOLOs`1tzr zSWK2W2(Q#iqlaKV?33ZR{___1G+c)&R0?UP=O8r#KS33kic$pD>FI6T6^>NPnH&Ho zWu{;C+Nxa7j+FB`oE(pITO;TY zuHJ>l()p$wW)(_#+A#q5$=qtIy0$Z7uAg49-c2oYx;lF>k>h-%n-7w0@a@Mc78C7h z3(H+pi|{X#=ZVX!A{R)E}p~hcUqY@C`PX#X>XKO$Gx^(2QEY z>SpF0-D2wxrIYj06BMNEP7wzztZmUK{irFS|C~vg%@P1CH||t` z0J#iXT^~7!2s>EeoEtG80KnLH8D_r0RO)YPYD&hjDiX?K8um!>oP@#2Y|!GZ@8tXU zm@J}k5E)4cFVIS5IX_2n+@aw;v7a!F-#$)@EAolsfiC-}rIChC0$$8B{&V8XmM(#F zp1fTc`^Djmp0Myh2XBj9g@Yp(Y_1viq4}oNcq>N(S~y>lIB`-5S1p`6mWTr!siA4Pl6WVtI|bMEQSlqZT;<4-9h9 zhzX?)Zl0JZDFhmyqvI9xuevQwrmbU^;&WD2&ik-=Mzx#urq!CY0$ixX(+LSDbb6hq zUv(QBJ{*PWJ*3@?3%`U^nW$(8EqvjCXmNZ}24B67xrKrEXBkz7Jzq4Or%LQMs3P@+ zbr9*o%^V*N1uH5}@yMNC?zo&t0R;P~t@Bp5dXjL5{)olIJ*;a!@t@~f0vm6Z8tGuN z+t~)wFeEWQ|9J1=!w+_?F(-aEs9Y1-k}FH_ZvpchPwRMaE*BB+{}JaNP&fa*?(@xk zMr@(+KJbHc4CCuE#@9mi55jV-v4|c<07C;P>{L7QV$HD`A|-Vfwj^s_Jg2$KXF*Cb)i95PftEh6a}Z*eLmudv4&MI zoV%ywkEWGB03qj9RiMLl+}Ym__sba`MDc%3K8GTP4valpAzL)?u0Tk0hJvXC*+O$D zA9Pt#LUuo%>dKWX`Q&Zg{~g#sR8Y#BM!<>!?mP`Yvx`3Kcdl_W#PBl&ePC!RkP3{K z?)->A@cl$+h$wPyGdcg28M)x#~A#Mmfap6HBj;FqsntENhX+AMYF zo6m0=Yh;unkJEfV+qK3`B#Vf-yiKX~8)ek@jf4R{9A%c!XCrk{9WKB8ih|AXA(_nRVEcGkxZ2A}6! z6ti5WxxW$zrgW8)|wcwOb3gN>dX_9k;Z24VSl_j3rfIEVfMr6^hW z?g73gx6q4c78Vu>mFce8G6@_9nAYj*OsYk<*TgeH>BwU}e;koq9)wg#O&WS2c`0!Y zbfNWb)>RysHYo)lY=6(C)|y)WRNdr!2BxV;Mn}r}<_En>`#i0riV(VsY~}iJ-VAdT zLQVkSaic^~hTSgzuoiHFJlhH7N;N?;+TGeprvj%Ww zOXWAJ!$$JoKz_oiYY_nQDZ^(#yrqrzSK9&t0(xCyW9wt0)lSdgQ%PtLKsNruDV|+V%i0WB*jDKzX+w9r5~ zCbz-+7k-K7>b>iG1rIME1nZCj?`r&nz{0`KOSe-Lmd=jZ9pE%+g4cwl$_k=aoD z62eSI>~ywgsWJHOT>mw#pF-rflrrSYgg?jr1F$X2#C2}OTmNYYFz;heSLv60r@7^p zGc1pdF}~6ECX34O*X;7Z@A`88xcA5Qf{C~YR!7mC;rWXOD}*y$coZMpKb*}_oZ!@~ zk+7t=^{?KGE+B4=M3#7pXO!#2Vw@G1#AiJZaEPV z4i<^cSAgo(Dg%1Hj-!&(0D{ zc&#v|2)Y6~@*euXjtQ(gJOCTRPBb_;82cg#Eg3b_9TtT8w}zq2<*HdnHX>T3ys*o? zJy!*xxlj>wI=8>p4l$lQ$otdQ+AS%qr+?$YAHOnv!n)1?>f={}ufyt)sE!_NUqCrL#G z8ZJQBvK!g-HZD|qvFWKD15qOo&x(gaUzrY{=2+@DbpuyhDgHxW45zvr4egK7#^`}C z|2?pc+y}&0&|?s1TmgkgBgI=T$EWpSpw%+li(HsqV*rJo51YRFg9i`nZPe7h6&mN% zM=3uw%1jYA_YME&E!meYiYI9M&QD%0w9|6iJSo+#&o&!7f0IchhQ2lu z=WxI{)t6avjj)~5$R>o~TOgl$0^xOY!?_?VS<=6@PWf-7E)z5|40m zt41P){f~t!eB-b_teKgVUPGL2y^qb)@0gW-@PWnU&AAGpYUJ1llG|!#PNW`^J0wH%Lt&omptF zOm+#UFKx=+-t$lP{;d~nTpHLgFFLLB(cf9n(Ah~6jw`oWlAow*%2fDLQ3y6(r4Wzy zfpa{SUtIg{$0i^vy(HjK-rtJ$PXvfS^uP5g_|G@a7UyqO`8X%R^>6fE` ztDWztW^^F&P<)M)CCX0mG6_G}AOsuq@oz0(qPIVt7g_%T8s8kdJahkfyF|1@?71#> znnbC^r9Kfc-->Otc6LJ1mxJ)Ers`XViSi-NUE3l@z>^1tQ90GT^$OX46EH4+#yV?{ zk?ywgrBKYFnYdrWO9+q$NtAjpe5r%Wr*hHd>Z}!7B{OsZx&@>fU96*0&aR| z9NWS&;1OZXEyE^bW!yHeFKNaa{t;lMA=Tx1nW+ypN6hU}(Jqd5Iu;7BkoSm{|JuL* z^SC9F-M#TAWF^&7#6ld1KtFavNi&Q^MKi78HAeT(UnQL<-~tJh zpY-?LkCnmg-p$8&*w%8ghL3Zi0aIHWuWoU=<-H4ga*o* z2&UEq-ty26Q{=^ZdCTZ}IAf(Y;st1YCKVWM&tjjQT#%EINweA104oBlmzMYP0Mix+ z1{dMh(+J+L2aO9oMW)lFaaBh&N3dd(Qeo1E#%#?D0s;&DUn*S|Wwa?1pHYp+Ao^aH z)3`RX822L<-ktn!4h95%g1TF!)=WszQVmC zXU|U5YE&LO9js#-_m7TOU%VPC^Qkt*$2na9`k#D#+VcTS$*8+Y)UX)r*ht`yK66ze zZBW?zXRfD9KC!?@RFgR`}zh)hg&|>yeE;@bL3^AWnjFLY$aRo3|~ridGR1D!E9266f^v=mdznZC4#Wjb(G2C~f0jvw73+ zvN}FT{K%~988ym!$RH1fbX*k$=elz+O=H#Z@?i)asZ^ZQ`30859c8gnCd+)O7^&`U z+m-dsA=&)S)5yn7b5%Z>yiU7xF(a!(iZoIc7Ap#?m;l;9;?4ia7ze%Dl*DRPr(C?e zc|09)h^ICN+Y|RxzRv2Im{izzhx?UW3?70*15$LTqEr==vKmE4RJa<&0Mhyi>o&_t zhmS_3?+jw3N-Q+J*nFlVTJ*~{CaxIHwS7@&k>5FO_=IVwjf_#Dla~l6O8M zctPq3D?7aLG3w)zke-d{McuWLWsH+TiUudGGTr_Rh+)){!dI{Upca1v3b+wV z4AwpW`^3p^{~1xyku@2BZ2bS}BIG~QTo6_k)@4)eF6d4C_6G4Jp`^M(0FET1Fnmt_ z3BA(7roNMg(m$0`i~W|Co3Gzt_!B|>4cH+K4mT$%E4{<$*j~II9V_oKBztaLU#^tD zJ?C9)%;^Yp#nX5IcKz*3@jEPT|HPDn3!!h#5&$68f&2@$E>^I1GVF3MI^+BsFvloj zlzF*g#sq>M;y)UE2|LaF#Q=N$9PMv3=UYk}^;?T10H^X|0A%;~1N`e~zd`L^KmC)N z<-fs|gJXjYz%d2dpUC#FQ~6yXv_C={69lNe5y%4mQRiKLT34%D_{C`4Gsh;-3$4rK zXQ01>W(45&e@s@v_r#?u@dtW$6?(4rm#SP-d0FC3nHH`rT{<+|#vnqpEZ&vzUqGPZ@x!Ye`n`fbA{{q!C zh!+Dqa`>O$$vVlXVJP}4*Ke{1Qxj` z_E6XlI%W$zTzI6u2gQz294Alx`*;4JBKp1MtF7|h)35o_TK7*PA0r+cbT)wcNs)@f zc;EITCH1BU0XA$!~>i}6x1B!?GR?0U8CXVYH8@BV41l)8QQ z(__5O0xm|BbPBf2X#S%ul*@G`RInN?j$^#-4cLmm=?H$~5IpB$2hQMsx0rv{Bix&Y zGh-6}(X#%D$7;OG{d-)$#!{UA-Ee<>^*8bUXUe-Q@qXLvPrQ3s&;71;e_{XMoVp(lL#WiVpt{w1HPQ{JOJEHQNx$$42Zz4`jIW&lrK@ z;@Fd=oxS1VJGA^C$pXL`%&O#E+@$l{kSHu-D?FU&=i$;jSvQz-8XSA%J{Y7!48W6y zzbK+_?P}2X?@RbVL+3LqubEjaIyP4qfpDWcdte9F?`Nffpoaejz=g$gi7!89tL#}= zS%IF-^yK7w&0kMj|7rjQ#bVuDPeKFBr=``uf(DVH`lB7;ISQ*$E_m2IQB8VYjf&ej z6_a`|{`;~i`zimDU>t5dm`&jkGts6|3nW4)%HOGIKmR#aN zs9P^NC`x0t_p%4dY%i92zSkSqa;2=_ltKSjP6nhKf$;V>ua7S(qBs8JrDFbvkt#-c z^uQA5@@)UnYv+f`lrJt8PkS}o995bYVU%w!ew8HU?&XdqdpEb(KGlSO=MPe9#*O&X z6O4i@|H@kTh|>oe{7D}vWChd7kwEK)25iHa_|{j|-gL&_GV$;s40mvHS{rq2oNRcr zGoM*#xjmX3 zNNdt4d6_p!b;yK;s`hv3FJGXcQjDimdED`tZ2)AtggHR+9W36c3+OLgSwuz0>c$~& zYs-EEh#nHg55rYwskLa`9N_p5Q!`LcnVkl+ugwaB0&h0Z5zv(2mxK~ z+S*J5*P*XEETS4qTRX-8M^sV1Z0`Qx<3IEbkNh20fC)2ko%1O!r3WU?Z%W15yZM)z z{>9mcPpeMGt%S*TTZFf~BvQw*(v@RscOU z@y%zG6^?MjDbV8|w)o;Ij{W|>rD=kTh+AhvUj!sUx zZIP9t!HhHu;##a5yww-!k$*5}1J;N4!@7)P9}GfDPCa;0e{BS8;hX^%q_=Qt&uc<)MK^ zCrW%Z9vA~Iq^|C|HjGOU$MMjY%M$c(Z`|;ilH?jSjouI5OGf>xO7W6C?==G${wI~q z`D3!75+0bu6 zfKi}<_r&}Yh60H!hY;)4T+PYJNu>R&puvPerqmlf#$+4ff^*Vzwgd!YYOTXBP1RRi1oT^Yd?k_f~GCp ziG)eDKl~(%e<8=^&+Gvz0Z6v?$C~l+OI=2LyO(P5Izvg$zdj===6l5l;qm@r%FV4^ zA$aCPinasQ23sFG10(9@zI6)n_H0eREf^^;mkwVE@7h;HJPqxxS z>%4|}<%<0xbI8uwL6pH%ya0Heic%woh4rJUjS1-r9iwYFr}YgDH23en{bDm*VE8>a z)rXLFeK3!Tmsfr8{}lGsaZzpG+an4nh^R1tk`jVLi69}Zq)G@wrxGF^(lLaHfPx?) z-6GQ6T>_GVbb~ZQ4>H7W4_v)^@BO~7AOF%bXRp0#ueJBHpF`66kOg`M-KW<5S!eC5 zxkRDUq|C4{0x!}s&*rF%ZS|CaE8<=0v<7gGn?JF%9<)M_4Is*Q0s3U-ep~+`SoB^v z&(F^rTOc)y&B+ZnW@Za=o-ee<+#z^MzNYA*I}QgZ3v+YxtgI}8t6ZN$nMqlf`_jX6 zSVJOIVV3Qob4!;Eu!UD({JaFrNXEk(pZR*TNGGX;sL5txnUTGpY`@a0H98;p?Emf`(d83k48KaCj*bWoKi(p{um}_iF6y zJO?U=XVT39^`H@mX4Q}#GOT;i$RVNN5vP+hR>_#-$Oe6df>Ot=45zexEVCWfZ;y;VA!Y808KsTUf5co;!JN!c00-&|B`HH||_Z{O4VNhw{U*xU*&3)t8OavlT7 zE0f}fhhkzceBoW63qQYTy*;?!^qq2_B8D?X4*7OEzqtCZD`yNey&=ExpzC#UF;Dp;kDd0n*X~t1Z37#qB;54|XvrukY=#ZD?*4Sz_6jNi zA;h<3!3W{O+dy||A*nq!y&o^`ymh_i14Dv(rspBR@fvweOek?x zn-1oZbr-ucLG?QiuXy7rlsz{n>e7W>TsB$WEvU@45F{FwzZ)OXoivwkc4nLgCLa&c zVrNaD#mu(5yPNB1rFdLILIU7g!@dJ}^p9(4dD%MELMGHh{QxytBy2r%w%>?@!?*Jm z08;PVq^EyDMJ4DIvZ4V_YwVF@-TS?1iU3OiV}LeXh|rCrds>Qhff%w&zE&+-FkHOJg?$bdHZraI;XcXgR$wqm#n!OIOh;HXj9PZJ;n)JI28lBpQapn7aCU zVS1&V12k$b@>QKzYAU1IV2RZ<8ilmsrxJFHHWP7lr#jpjw(xXC>`vnPrnyrX4S%Jx z*S;frPo)zuf8}}a!*fz?dDNXt?osc&^%VPd{)*SZ;@N<6ka*x%emTjvz;;;POkp*k z%>qqteEiKFfPH<;0?ir!3V@t)If6<%1XrI=P_@cnk5v67H?#77Ac-tMjtf!koxAtANO4sfLp1C|GS+qi^Oym#*GEPVAL=>gcQEH^hd5M>`KU0hv9M@OF}=<0~V zj3yuLYZlj@@7uC)Oq*D6&%I_FsW6I2@8r3_C$ywAtnx`EyCdK&zx}FA6nA%>LdtytvYYN^Yg-Fnfx*5G0Vr{Q znj%IkrhMKWml^I4(90OKhVa=g5^HpfqnfD^U&2_)!|?{1OgFy71d@b(QHj@4fB}xk zkhZx}Gc(h)uI$<6rUQe712bn{*D&ULWzRPkxsrUC$qPH;ZliUyaM_H9zV#<`0rI>C zVbN0%&>xCiB2mVPKLtvZIED2>owDa(bD(WKe0gxwvMtPHpP{?k0^n6BpxY7^~Z0)s&@Zz-|j^zLVgj1_dYL+_YPDvWK-v=9wR0D>(a5IDjvyYeMl)6#o!S4#UW zdcEAcJ-u`9UDsUX*xH_0U!GJQXLk;P34c;}v#gfClcu^Y-&{2{P4)*s7+fj?vMGQ~ z1e$Q~>;tFmA?3859L3a2jsD>n_QyN6g%0E<*BPKpcckU8FUzDW+skG)jrToM=&G&l z9;-4AdUB0GW0a`zTrOOgXyV?_8%_Y1*b3poU}9(T)(VfN12vqs&KeKo=%vcmmmb-O zh!=$8@zxezeS`|N-!#%}ZA*Hqs55T-LHLgR>ca_EaPg=fa~eQ>U*cL|w zI9yO$>u1_!n&S3yMAVc_PS@Rk;+^GRfC~7PD6ES)Kil=8dSq+4V^?*oceEW~QPO0L zY!G(8)+j&eadHcb3GCvy zhzISLLx+nZQM7Y4$0P4B{_wBmA-L{pBh zl>H@?>_n9w7veX$uR+Q3tM4HbWjkD5(<2UvT@VaTFr3&E-yqKWt*X-^ZX}fc|V>}-t-${5#!ftXWm=<1)B&8w1 zETzln@ZYV;q`?aAMM{D5vY#6J|H<-Cm4ZQYx)@z-;~1 zxlnelCG+tbqL|YSZMA2tk{(TO4htK&uAdvHfMe3W;dpgJxqH)b$^DmC^u(L?70C@( z03O-wr72lX&QE>#7DKWX9vs5`=1=tWi1_tA9h9z?3_hK?h=gGs<@2V1hVZdZu-{W&Ha8bew}n6|PkF?%aCcKN}Lzk8==QR3SgJ(nXRG*h_wW$F59iD3OR-@Rac zWXoDV{7w1p&lL}MFPaqXKM71&F7^A~GTxKKt1{six1^ft_FM=UPmiC?ysLEyA3f|^ zJt-TNJ2MlZ;?)$+Jn@#$ux?MO!3qbb=pz*foFPDe1n@CIWadMeZ$qsha&D^)F9qB zmHQh|2jB_54VZYADkaW-zXrwRA50vC9~IlPPdo~>r)oZD{j7wTsrcb_dnqXz5qHaX z@gp-~5Q$fs1n^U(>ckH&v2UeK6)Ll8RV2hK6e=TvDH0l8&_ncC7!8J zylSp>+qGc1t-{(an&)W;A19xF2ionZb8eE)<`z2ja6iG%B^1hgqP zgg->Nl|5dniFNgJ+HzVPVd!kHmddD@P29{U7$;44%q0`7n4h|Bkc75d?IBk44BuJg z7p%^4>u$AYAERgUV?HwdhUKW}<+P)w#XU4+-e0uBS9;JWCu#Vi+0c+j+zp$}TxWk? zWv)+%(;`BZwz-sjGBTH_aZ#Bb&r0&i?IStGC%Bfk2*=8Tn42G7%$(WKGAhb+k$7g- z6Ly}3DE-HgrhQ5Yd#(h+W#?|L9Vt1j%Bz<$L2#PbZNko2?J*vK>mdg%_F0$sv(w*i z81?O|nDoEFpNo!(VW)OPZgnuf3^`g)e9%ZFQ1uhITH>Y+ul?08Hci`$8xO5uh`D`@D!gssBcqVEu z#Jt=-r$lo8ZDu0F=0wUpd=~>zzDW#GyqLX|HNs_F@rp+#D3xTfM@j$OrAJfag<7eN&#SshU45uu zM`f5NrM$&+ncO{0;XW0As(wx=ttM-VU1O3dV%0U-xJp%%n@yX6UERM!kkh0=!mXI< zwDV37Rc7S)*0%SyMMt%~=G^DBB9640p~K0+uLiKU%vwu(0Vsz3;k*Y8fjvXXm8JW) zN*UE}5mw#UkQDHD+G?F2+3rl|(coVhk`ShIq+D_%r^QD}(yHWFi9Vm$_wSH0(cqlW zAKP6|hFya0Jzu0XSN`DnK?;Xyxm%HoxMglsiBY)RXeVps4(o@_Myl?XVVG>}4rS#V z5;54C_cS_u=uG6KsUGJQA(S+>9TYK$C)x5GIn2yXYO)&h_0w!)TWfQRc%we+bm%&A3HWwgh@$*A#$KQ`1Fx6O z`vo^jaoJx<4oLhczh`Hb6c?l!G>%xDdExvamYI!8GpFJP40<*n4fSVaL!_}I1`*S0 zika{(Vzny&F+iMBPS?ycIC5->Lk(tbKYv=42GjC}!6x&c#_%xQB5PS|{msepoFxtP zw-eyae1ilvsQ z0)j4Sa@r-1*geF)Yu9f+UB_1)Q?1D|+i0xHX1TJuw3tieoN9j<2n`qJwb73HXt8Wc zW@We%|Ja&;68C7yv8^GLQGbqyP1}GE6BR|>ol?u4$Zz)qfw*je-!W$w?S>O<%Jz03D;WS?bMnaE~FB^6u5+)VnK2B-OkqP_NNm^l6Ek_x(g ztUv$uI0=gOTXWvz&||%Z`zmhFo~p*lBV}V|4_{F4+d>tGm>3WYu^Z{bt)< zK<^`JRvL>?=t5!U;;2$ouW;B<1|~I6c?|3tt&mu?Smc)ldZ&Qxq;zy8+Vw>zTIJqqTy-!F2XU!PFD2@XzO_c z{qr5nCAN#vgi&Z-TAZik<)S~|=8p5X;|P_Ja){mhOyJY_ATHw4<#V-5lDI}BKiv#+ z^`^_}JG^B-1C!u+?T;C{G|Y^g%ZEv)x%_|58A3pIoLw68Zc7J@K6sQUvBOM!L}DzruWDUt9_m$crx^)N?;KU z7DLrB|1R6h{5S3T$1Z#Fnl-=Qr1@!<6REX1{vQ8V;Q?M5qK|Sbv1?l$#0MfIAD%6{ zZ~f)HFUA_VAOBvsz-(?zu2!ag`r!2WRd95Lmp{8Q0`CojfZ;=lzb5tjOJ@q5k8-B+ zQfBpRWDmvB@}kPzK{X=U&F3Sfu!XFS)%vIC;AXz_C*xK$)KJV=L3$y+!iCl&VkGd2 z>i;rB^J<|G#al;_-X8{ZzGtr6P;eRph`h@rFG=6^uGds_SF}$Ssm9Cnz>T7)JMKVn zt3E|rI-p-0bI>;wQIMHN6;W14hCIdr*1HuwR^9s_ze7(BvD$Y;^OqgD2ai;^sSQ4n zGi1uY$?wyNM^iWzbz&r!S%2A=9tHw`B{I(U+LiHe)pHhX}l9d z(Mm_FPW^h}KNgCOM$~TbvUdFcOk0g=MPrIeih}xQ5cG^yFUm>(sfFLNZkg#pyr53f>ojV*c`~H#xXR)bWQHmgH(Vsgd%Z z%iG`H7P_0ZJ?Z}CbYcfPxir0HORjU@brG)Xk>Hyge-@z3>tFXR!$NWOXJ6D0KZW}@ zvlPwJJsmb5&W#LFIpeMZp4aE4r0Ts6;nF=>HFg(#Oo~SUcPPj`_pLYg3=I4QBND#U zEmOF8pQ8ag0WOmc4)RgI0;Rk9i%^07c4HFrM!i~!s?j*@^#L>Y(CAT>2=9#AfAdmis@JWibVXPW# z7Fkm)>w%Q~c3)+9WMTzMi;C=;11PPZK6|!MX1i47CO%9HB};_r7@Z;hZ4SReqdQG^ zFwX#=4t$lUKji^wDeEFQnhID9KFVgV-p@lE9X2*Lg0ssQ&Zix(F44`nDV&1;TV0sA zfX0_1b}iqPaZ0zlc^QFws@~q-xz3?O#TGhI+-BM?>*9{<)JMBMAX|v^{kKVP+(t3O zVC)rZt)D)nXqDR`hk2G3)9qUioKaOAfX0>bjtd=eYvsa+=1gXG4ZFtPw9T(y`H!YZ z5f$6tDh&*v05k*P-Qe zfl^&Xh4dh!4{iyFj20Icse&TGnSwL2lF{y4f4@K6@?g7PQfE^P@J?x0I!!mdaYgUE zsaiL*pf5%jo5%4gQjL8lBy&+#jvaAx*{QRdq}aYV;7Ot5RCw-k6CNR0!%h<8FXMvg zp|{C0IhUw~k;#k9WI|WhwFJE@zfK+h%ZA0kSo*u&v zP1+6j5_LdRoSv>C@MESM@cs1n9f)ftBuwTfCgxRCOhs9^-PJ#r`$$tjb0pH#x#`LZ zpmb4JROC1A{m9uVz`3W^ob1V7wfh8|Ju@&cIHOiwH(D4Qn}9*9_BS4^CxP#I`RmFn zDcNq#KU&(Og%+6fn*-#6oWS}E+i5!GW(e)dQkmq#gW>T@r0Mv$Y@nv3 z!qRv<{UDoLw2s$?`1d)ViuVYKL_f(D(rbEBdazcX?Z>e3hDWH#W)A;}UVG%yY9%UO z3jYZ@!ACnxg$kThR%}ex%TzjfHza}^dE^-y<;bdgQ>{@v$hV|CW_!LRB_{ok2a7T? zrn(Z2D!)f+WPuayt*x#3rf z2dP|4)7{@)M;xKY8;dZL%ClTs@+pH;-w{FGe85AXP}~KKPuOVb%&yZor#QT)Uv+w zN!EzNMtv5kwKZPjZQ#==BtmXEh=AH*;#Gy`=hJ4gZj*D}^F_4K5xZftb;a7GKq1)G zs*P6WjYQQ}fB!(io%gohJYx7xnchHtQf!^(Tz49*~gd`LHov@_RN~tTmjuzw)jNjU$xDUkKlyeN)w5+mND1}A} zfGaL6#F&`y`1;$A+KO8vyI>zN;;aR zMn*YVH1{=MkL*@5nksmVz8QJmk>O{#y6o1turgHbQhW6hVVT{$s@hH6#*2t*p@bdH`q>h6k;uH#>I*z+bm-08Z< zjvPgQsK^V&yFj&Xafv+EX;CimF>)+oE~Z#vnONn5&n5_H)MvVEU*(jPr2M=+-y$z?C7$j>>)q6C3>aU zezEt)o?1G>ODba;m*6VB#nbt&gzUYqPwD{$V&Y0Y*tX$-bGIyK>Oh@2YSle83 z+##QbR-qPY-0vqyE)ji$&>A#nmHa;rw-c^|Pn9)BB!R;GpNs9ePS;Cx%*>=vlCTl` z@fPGv!Py_o`ygw@0YeZF#5L}3@l^l#y!SP+-DziVdg{(1z|4$0e~%DON0XZYlymtV z!1yLf?MhrZ=MOT`0TOZ4!H*O}zSiO3>G4CjbgieTMA1C{@1g?$R zc_tp7YHT`DJ)2a#-F8LTT9W#D4H6TlZ*!Dg5-!QVzQXgjSp+3+Ragt7>{kVNpY<$% z`I0lB28S!axpEBXJk~~$hr5!(PWMNV)Szko-<1MihwD=PsR&%L(69@ebe9Xjncsgu zef}wVREyQ>+{{eNP2JFee8)|@^>2(tv*fy##mvl|L~@E0Dh)*fWzmObj?1J+vER*_ z6$opj$o^X5H!6E!3ZiYFE!D4l#Oy6vVWvG^vi@yqswX4Ev{aP^275O6?zKixOB@s; z(uJu#N^Tt&Y3R~w6O{w7Al6N0$TPv^yL19|0nF8Xf)>;l2dxly*$Oa;B(KloG_Ckf zHvu+V#1iv!TLXv);knKOt@6dE?PWCcab)0*2Tci3pp=6F#LTiNHzGJ1&5A~l$GIhA z;iq!%`K@}ZoTymJ+5kfEch4ssBbmrhM*4FNSPMM`Nbo)!cdsmIn^FbG{orvOLsoT5 zgf6WHe%vfD*i!k1&1*X}zPIv%Px#ZT;D{cXb6|dY-+C37GOZ@~PN3L>=j;_vzF_(Y z@j7O&7=A)!Wj4IM@oS=VK;y8<(rjD>4{t?sS8+_wc|3-L)|K9$J`+@}7Ar>&!D?L^ z=|2xHS$JX^c+~NGWFxsicg$i(0u3dG63}0U)XuuCn)m`ld#yO8S8T1>vlRJ$>QPEc z{i`z~UBD9xePscZ@}edtlVzQ^w%*Vu%elWiSm9Xiu=hm64r|ynpR!?Px9?+x*8GdV z-Xs1}5%w{izshPlv#~KnO>NLRQyvbllWw{Lb|}es0l=9=)@%zpivP0~evg-7vO1(B zY`a)t$;(WP2PNKOBs01f81!2I`0=n_M|$-{=bvTiNGev#-aO3)&#R5II9I#$=;^ND z1b_?sf9e)LJFO-Ucu9sD>6)(x4%k_gdg-C(4%hwDaoJ%-&6Xf08siQl~fAnB#0xi1k!7knCFcDl*?0cRMcu)DlLkKJd-1?te}C%>dkTqQ(QP#aD1LE<4*T4_wQF6&aj9DoTBrX8xK& zrm;xi1CAAcecIK~q#Imxl2{K7C&*}^stR*KMqsZ86E8EKBcHN`m`hfQhH(g~z)1sZ zcn$y>ZK3J)(hCFvjDI9wq-MW!o&s<=JXjRC%zC0x2~KdmlTI?Ax3^c{z`*-%LS0?m zSEBRa2Ui_>t~qo+J|2d*uv_IMKrXREKj#VEnXtHc3Nm#Z41tyK|^B+#RwYb zpNjQ?)A%0^lR>&z{xZ;nJpjwn#Gm-K=hxbrcNc2?FPv@$+dFk>Z>oMeTkS&p?7O=z z74!d6XR_y4(Kbf!-JeqZHhC%RRIe~Oy!G|O`Wg-q@V&1Nx^B?OpLn}0E^8d|)U>$I zKYdZE6rN+d#JUH#{Vv-wZZ%<~sVOqcjK(w9M#m869`1WD$`%lxm>xVV@`zX*^B2BE zlIEVspiJ;NY&VuFGuqQB&fnWT&r_W>;m4qZG9L zIo^qY#CW4A(WB8{mILP@o3^Wt|7uDFiQaV&TB!WV5FrcVu=tY^n7;b|8u Date: Thu, 20 Oct 2022 00:55:05 +0800 Subject: [PATCH 076/208] Fix checkstyle errors --- docs/diagrams/ShowDiagram1.puml | 1 - docs/diagrams/ShowDiagram2.puml | 2 +- docs/diagrams/ShowDiagram3.puml | 2 +- docs/diagrams/ShowSequenceDiagram.puml | 3 ++- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/diagrams/ShowDiagram1.puml b/docs/diagrams/ShowDiagram1.puml index c96419b3d09..bb692399f87 100644 --- a/docs/diagrams/ShowDiagram1.puml +++ b/docs/diagrams/ShowDiagram1.puml @@ -15,5 +15,4 @@ map " :AddressBook" as AddressBook { :Person1 *-> Walter :Person2 *--> Jesse } - @enduml \ No newline at end of file diff --git a/docs/diagrams/ShowDiagram2.puml b/docs/diagrams/ShowDiagram2.puml index 90bb3c2a9ce..f735f9f8935 100644 --- a/docs/diagrams/ShowDiagram2.puml +++ b/docs/diagrams/ShowDiagram2.puml @@ -14,4 +14,4 @@ execute() class Index { -zeroBasedIndex = 1 } -@enduml \ No newline at end of file +@enduml diff --git a/docs/diagrams/ShowDiagram3.puml b/docs/diagrams/ShowDiagram3.puml index e14912aac22..5823850e1a8 100644 --- a/docs/diagrams/ShowDiagram3.puml +++ b/docs/diagrams/ShowDiagram3.puml @@ -17,4 +17,4 @@ lastShownList --> Jesse object " :CommandResult" as CommandResult CommandResult --> Walter -@enduml \ No newline at end of file +@enduml diff --git a/docs/diagrams/ShowSequenceDiagram.puml b/docs/diagrams/ShowSequenceDiagram.puml index 926ff710c18..a03861c9471 100644 --- a/docs/diagrams/ShowSequenceDiagram.puml +++ b/docs/diagrams/ShowSequenceDiagram.puml @@ -54,4 +54,5 @@ deactivate ShowCommand [<-- LogicManager deactivate LogicManager -@enduml \ No newline at end of file + +@enduml From 1dad85e7a34e5a64924dbe7d92046bc4559c567d Mon Sep 17 00:00:00 2001 From: cxyterence Date: Thu, 20 Oct 2022 00:56:11 +0800 Subject: [PATCH 077/208] fix checkstyle errors --- docs/diagrams/ShowDiagram1.puml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/diagrams/ShowDiagram1.puml b/docs/diagrams/ShowDiagram1.puml index bb692399f87..7e9d4ad1bfc 100644 --- a/docs/diagrams/ShowDiagram1.puml +++ b/docs/diagrams/ShowDiagram1.puml @@ -15,4 +15,5 @@ map " :AddressBook" as AddressBook { :Person1 *-> Walter :Person2 *--> Jesse } -@enduml \ No newline at end of file + +@enduml From 6bc95fba681e00bf0982d89128ebc019b490c23c Mon Sep 17 00:00:00 2001 From: vantemoon Date: Thu, 20 Oct 2022 02:26:55 +0800 Subject: [PATCH 078/208] Update DeveloperGuide.md with the implementation of GradeCommand --- docs/DeveloperGuide.md | 49 +++++++++++++++ docs/diagrams/AddGradeDiagram0.puml | 24 +++++++ docs/diagrams/AddGradeDiagram1.puml | 16 +++++ docs/diagrams/AddGradeDiagram2.puml | 30 +++++++++ docs/diagrams/AddGradeSequenceDiagram.puml | 69 +++++++++++++++++++++ docs/images/AddGradeDiagram0.png | Bin 0 -> 18924 bytes docs/images/AddGradeDiagram1.png | Bin 0 -> 13138 bytes docs/images/AddGradeDiagram2.png | Bin 0 -> 19141 bytes docs/images/AddGradeSequenceDiagram.png | Bin 0 -> 32386 bytes 9 files changed, 188 insertions(+) create mode 100644 docs/diagrams/AddGradeDiagram0.puml create mode 100644 docs/diagrams/AddGradeDiagram1.puml create mode 100644 docs/diagrams/AddGradeDiagram2.puml create mode 100644 docs/diagrams/AddGradeSequenceDiagram.puml create mode 100644 docs/images/AddGradeDiagram0.png create mode 100644 docs/images/AddGradeDiagram1.png create mode 100644 docs/images/AddGradeDiagram2.png create mode 100644 docs/images/AddGradeSequenceDiagram.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index b21d2ab179d..f2f6f1932c6 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -225,6 +225,55 @@ The following activity diagram summarizes what happens in AddressBookParser when * Pros: Does not modify the master address book. * Cons: May have performance issues in terms of memory usage. +### \[Proposed\] Add grade feature + +#### Proposed Implementation + +The proposed add grade feature is facilitated by `GradeCommand` which extends `Command` with an index of the student, an index of the assignment, and a grade to be stored. +It overwrites the following operations: +* `GradeCommand#execute()` - Executes the command, storing the given grade of an assignment of a specified student. +* `GradeCommand#equals(Object o)` - Checks if two objects are equal. + +A `GradeCommandParser` facilitates the parsing of the user input. It implements `Parser.` + +After the command is parsed, the given grade is stored inside the `Assignment` of the specified `Student`. This is done with the help of the following methods: +* `Student#updateOverallGrade(Index indexOfAssignment, Sting Grade)` - Calls `setAssignmentGrade()` with the given index and grade, and update the overall grade of the `Student`. +* `Student#setAssignmentGrade(Index indexOfAssignment, String grade)` - Checks whether the index of the assignment is valid. If so, calls `setGrade()` of the corresponding `Assignment` with the given grade. +* `Assignment#setGrade(String grade)` - Stores the given grade inside the `Assignment`. + +Given below is an example usage scenario and how the add grade feature behaves at each step. + +Step 1. The user launches the application. The `AddressBook` will initially display all Persons with their `Positions`. + +![AddGradeDiagram0](images/AddGradeDiagram0.png) + +Step 2. The user executes `grade 1 assignment/1 grade/86/100`. The `grade` keyword causes `AddressBookParser#parseCommand()` to call `GradeCommandParser#parse()`. This returns a `GradeCommand`. + +![AddGradeDiagram1](images/AddGradeDiagram1.png) + +Step 3. The grade of the specified `Assignment` is added. + +![AddGradeDiagram2](images/AddGradeDiagram2.png) + +Step 4. The internals if `GradeCommand` creates a new `Student` with the updated `overallGrade` and `assignmentList`. + +Step 5. A `Person` object is created with the `Student` object as `position`, and replaces the `Person` to be edited in the `AddressBook`. + +Step 6. The `AddressBook` displays the updated list of `Person`. + +The following sequence diagram shows how the add grade operation works: + +![AddGradeSequenceDiagram](images/AddGradeSequenceDiagram.png) + +#### Design considerations: + +* **Alternative 1 (current choice):** `Student#updateOverallGrade()` calls `Student#setAssignmentGrade()` and returns the updated overall grade of the student + * Pros: The updated `overallGrade` can be easily used to create the new `Student` object. + * Cons: Can be confusing as in whether the `assignmentsList` of the `Student` is updated as well. +* **Alternative 2:** `Student#updateOverallGrade()` does not return a value and only handle the calculation of the overall grade with the updated `assignmentsList` provided + * Pros: Separates the operations done on the `overallGrade` and the `assignmentsList`. + * Cons: The updated `overallGrade` and `assignmentsList` are not available for creating new `Student` object. + ### \[Proposed\] Undo/redo feature #### Proposed Implementation diff --git a/docs/diagrams/AddGradeDiagram0.puml b/docs/diagrams/AddGradeDiagram0.puml new file mode 100644 index 00000000000..a0152499e25 --- /dev/null +++ b/docs/diagrams/AddGradeDiagram0.puml @@ -0,0 +1,24 @@ +@startuml +object "__alpha:Person__" as alpha { +role = Student +} + +object "__bravo:Person__" as bravo { +role = Student +} + +object "__charlie:Person__" as charlie { +role = Professor +} + +object "__delta:Person__" as delta { +role = TA +} + +map "__:TAB__" as Tab { + :Person1 *-> alpha + :Person2 *--> bravo + :Person3 *---> charlie + :Person4 *----> delta +} +@enduml \ No newline at end of file diff --git a/docs/diagrams/AddGradeDiagram1.puml b/docs/diagrams/AddGradeDiagram1.puml new file mode 100644 index 00000000000..cdb92c2b8e0 --- /dev/null +++ b/docs/diagrams/AddGradeDiagram1.puml @@ -0,0 +1,16 @@ +@startuml + +object indexOfStudent +object indexOfAssignment + + +map GradeCommand { + indexOfStudent *-> indexOfStudent + indexOfAssignment *-> indexOfAssignment + grade => 86/100 +} + +indexOfAssignment : zeroBasedIndex = 0 +indexOfStudent : zeroBasedIndex = 0 + +@enduml diff --git a/docs/diagrams/AddGradeDiagram2.puml b/docs/diagrams/AddGradeDiagram2.puml new file mode 100644 index 00000000000..16ab05c1f79 --- /dev/null +++ b/docs/diagrams/AddGradeDiagram2.puml @@ -0,0 +1,30 @@ +@startuml + +object Assignment1 + +Assignment1 : grade = 86/100 +Assignment1 : weightage = 15 + +object Assignment2 + +Assignment2 : grade = 0/0 +Assignment2 : weightage = 15 + +object Assignment3 + +Assignment3 : grade = 0/0 +Assignment3 : weightage = 30 + +object Assignment4 + +Assignment4 : grade = 0/0 +Assignment4 : weightage = 40 + +map assignmentList { +Assignment1 *--> Assignment1 +Assignment2 *--> Assignment2 +Assignment3 *--> Assignment3 +Assignment4 *--> Assignment4 +} + +@enduml diff --git a/docs/diagrams/AddGradeSequenceDiagram.puml b/docs/diagrams/AddGradeSequenceDiagram.puml new file mode 100644 index 00000000000..18d75161fff --- /dev/null +++ b/docs/diagrams/AddGradeSequenceDiagram.puml @@ -0,0 +1,69 @@ +@startuml +!include style.puml + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":GradeCommandParser" as GradeCommandParser LOGIC_COLOR +participant "d:GradeCommand" as GradeCommand LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +end box + +[-> LogicManager : execute() +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand() +activate AddressBookParser + +create GradeCommandParser +AddressBookParser -> GradeCommandParser +activate GradeCommandParser + +GradeCommandParser --> AddressBookParser +deactivate GradeCommandParser + +AddressBookParser -> GradeCommandParser : parse() +activate GradeCommandParser + +create GradeCommand +GradeCommandParser -> GradeCommand +activate GradeCommand + +GradeCommand --> GradeCommandParser : g +deactivate GradeCommand + +GradeCommandParser --> AddressBookParser : g +deactivate GradeCommandParser +'Hidden arrow to position the destroy marker below the end of the activation bar. +GradeCommandParser -[hidden]-> AddressBookParser +destroy GradeCommandParser + +AddressBookParser --> LogicManager : g +deactivate AddressBookParser + +LogicManager -> GradeCommand : execute() +activate GradeCommand + +GradeCommand -> Model : setPerson(personToEdit, editedPerson) +activate Model + +Model --> GradeCommand +deactivate Model + +create CommandResult +GradeCommand -> CommandResult +activate CommandResult + +CommandResult --> GradeCommand +deactivate CommandResult + +GradeCommand --> LogicManager : result +deactivate GradeCommand + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/images/AddGradeDiagram0.png b/docs/images/AddGradeDiagram0.png new file mode 100644 index 0000000000000000000000000000000000000000..07c4f2cf941b9d0fb5afa1c4e1dd7343189ce54e GIT binary patch literal 18924 zcmb7s2UJtrwzi`54ib8mDxoV~kX{576){RD6p<2o6A+s<^7-fc0|#N4fV`yCe#2JjBhlXug~YU$%iCgoweHUk z&-zF!Aj?PH3`VOZ(}a&2QwcP@y!r(9B`KwBUuA4U9evrQ^qCk=54{@yINF5ke5mpO zpSGDHV+Z$LAsof$lf{C1xQM6n>{MS<>67!y;)*j}%OtmBa(Nz4(u{gB7c3N|kt0t( z-a~e#ELuOe^byvpetm5I@x`0Y@*cWJbKgf`t_inDGUBj!Won2g~Q4^%lSQ?-@jMdO_lX{nj|FUhbSmA`;|G#s39 zL&)!N+py{J;iM{7bUeZAdi)oQsO$?EQ<-mSd}C#9duy*QP% zsm~4@<%24k6sdPuBpEdI8%(hbn$voC_<~o6nqNCK0~yJ%_4mtSiiwE{^~XJZ>ida> zq;?vjs3Qk^k0*7V#a@y(MCjZ_^CP0ubQncZu~9{6)5C@cJ6pJ z)girkO7?DUZ=OoOs;|%K{m%FFO6}+RV1+L!XEKmkNpN>!22%XulTDp6y=0z?7cZ9R zCfS8rG=`oWC6B*&8IQ;3y>xl?>eVr`(j)BbBUp#i&JxxQ*Dqc~)M}}j{+WmLIc%k! zy*)qo<`f+TwTjBiG@;X)*PNY2Ybn$22mSc6h?ATM`#ws;<}e{yrx~0X5rKI99Af z?XDw=df~fxvGl^@#Kc6nNGs;e9ffM+6y#v3nM&}+(zC1Ys8}Uc(VYyvztE@fb|bJZ z8lTYmV~ zqP_VlKQpqDl8o_bLbkgt&or?(9InaI=GnOiMmc1(9EAGd+rdBoc{jLg;GO}q--VXT z&zu?Gb%hj0;qMBa&e{#0yI%5VV4H1p-SsWmwPk#}h2AZ$s+yW;oUJk@-J#AzF+_Ch;)^L(g-<&>JI65z;aIY#PGOfus$-twUc8WZ`pb|SH{-t9goS$$+L6+yb0`5HtFA?GLUU8XR)F;6Y*&~dOY^cqjE=t5*$jv z=-AWSE&keLrK!*^l7U(i9(~;LKbvM+nvk5_+LysHT$k3LU1_dF+ukmfuzH1yh-iKP z_`E0mI}Ww$0rf#Y;#tH$G=_x{UjL6Pvr3cV>K)H%RJEf9Hjz`|mfM>FyD)8>vF4}9FEpXz=f%uQGf;xv#|3!z$_(K0 zf%K@CuO$>v*(`44bX*j*-^Lops-60h)%S3&BUpZZ{$yTt$8Dc)pX*5qm#EHvh^-iJJPzcF5g7VIA)*5 z>WB3j6l_)q3nd8Xt9R91BY35g3Tvkzdo;;0oF>7W#9W zzPx*QX0*o5HeqMut9|aJf%KV~?%SJj()qk6-7H!`-qlvUsoRv+HK-~7pzuXQ(I>NTxC zA}lOyRxjW%MLsR3eA8EP^YSKL5tF>m&$szyP!G-&E-x?haB;nI>MO|0W@p)DWXy7;zz|F5u2Qze*Xkj-Px({$hb5XxJA+8t2tG2Qk^QnM`HsBX%~6b0jnvi-rTzpb5{JwS_cR-_?)?+NWhV=0*H+0DN#f;Snhb~@wgiaf7J9t4pbYp_ha2`)`l$j-u_c~UuQ9AO zoLtH#CMMFu(eCiiwGU5hzg)d~6_z|Aoc_J-0VYPq=Fd?(6h_!YZj~%IiObI(v5>bR zM%y~n5nDEw51&^8BOI=0JgR%jt3G50;m<^-5qFyFT!D9XZu9w-i5OnZrCU5FbDw%2 zjo3P^+QVCR@#$qO8c)ZqOsMmY88x2cU5MgAZJD#ow}qV$gACDSS}vt{1C}R!&Y!bo zq#OAmxoN?3qJ?x>;beD07&0E`yNEEN%2n`Ko|ri3)QL|Q@uauB#j8&D5K%sxwwgyy zN=iyj-qFz^XRokPMu)=>=@M^E;5~?; zVtRE^6TAuMEMEH2&XQtChRQ8DL+j_Z=I$LlL`D&nVAZ$v`2551;}L7=TZ}>pNl9*?yYynhn< zYg^8-=f)cC&$l<5>GFb=TXp7@=57Y+Sy*rxE!uF|-v9OB@`GDxQ9A|HJ?Ec1eQNvi z5oNuE(0ZqZRs5^cQzCz2=DAy5)UE0WTJP=k1z3ThC#ZKF9ZrzJ6+Av`bMyH_R&Jrc zty;JSh@u%Y{_c!=)IpLSMM2@yU~G3qmdIQt3myq1_q2l-Qtg(K3oedVmA&1I7W-aCSlRxu7(q@?$1ZzVm=Vy1b)AG7{+M=p1v;Vw>_DAfM0m=5wm}A@d%! z#?a6CPZ6j8Wcpvu*tsTJs|pKkH8L`y;=fEoN$Kh1v%CEA+xU?vOjUKYiq|y7JB==H z9tMW*;fTEA(9lrK12FT`YkSsX6RwdxH2SHF^5R}%Sa!_rHlKhF&~*+Lpqaq7+ERB(44t)bOD45sf`zQE7|6U#_V zZElO92KNDVfXQI-UMOcUrHi@lf-opPJ=~lY_%;_hp70iVW%8i*Y}x?vc0|i(O;tG zdrr26s(}M{H6mmkx>SSKDNcBPq{LThD8194i!9|NX7dYqM|ejD_uUht>nQK4elk)sZ~K(*h~iH?;iT z0d;EX1+qh2Y!9kf7ma^mx_Z-%fisqhCPQQOw zjhZ@wdsxzcLdWy(Ep>^%?(=@177-D#eidMvb?y7kk408q-sCdb-zK#6+-+38^N1qL z`E%zmchCdLUhSa>gs#i?qj|0}b>&v|UB?&N;BAezy(P6pA3Ibz_ZI_-x_p&I%8H9l zj-Yj>J)VVAH9)$&E0SpbY;>XZwO8LgfPZ^L2&-D#rsczZEqin7`?e;B5Hw@MDyx6j zo?6BVs~WnC(~P15pV;~NEv7_VP!J8l)QDMIey2=FYRd?*@^zJHAzIVZ(>($P^Z(_Vttsi`A&RA-NbM`{uYTsX7~FQwouj<|2k2uSTEyESw|U?cdzld5Ob~ zmrDDEZQ=zQY9AR~fBAa}J)}E5z}iopIzU5N+9g51f9bePexK65oo4DHSsh-$ z$G6y)j#rHaPeLF21q!X3rh-dx)zxxb;T&Hn$7(&SAN+t&b=GN3R8Ee0PlY#R-E?bp z2BIi!iMc!~a^vE>q5hs9C$nYuDl&Ue3mS?Qhu1nhCl)AJAMj#uFYp4BEDE{~k{VEw((=bE30$jUN3Xn@$* z>bCU&VxTM0M10idjIfog%(H=?_|lOA@bDks#`b@`{}twX9P{agZ&~2l?8T3@FD{l_ z;6L;~(H2G7?2=TqSQy;xFJGWNN+*oc-l$3ao|$r-Q#PJe%BsoZhDYNs#Ov2MW4fhc z?b4ftr0Ek`G(Dfygv*elMzdu51-8={T3$nVTdNs&Iw z8cR>eoSMd`OA~Im$*3C|WkH$Q>bBhe))gDOBq5Zr00uWaG{pL#1iMSCAKP0(z!I(T z-Bw-+IyKEh1Es($uAUE=@Qfh9US}nRA#<~P=eUFtbXR>N zV1GHtbQM~oX;p&Oor8k5q0qA}fil`LSJ*iBuzI<5V*x5(MO2jH!D+zhTrzft6Ag#a z2d%??omf)hsy8(?mF~q(zKRfkRx5zNS(ES^VQTahs>kFND0&LGOOxd5)r|xK@-sB- zienbR@fIM60n2F4`b@}8{O z$!CAUOmT)zAK#<)V-xn#q@H1`taW~g{OvqfoSoQO4JPft+B+s`g@F>S&Zxf&2nL)X&y?twQv&of0fi1}vg7~?i<|w@S zQsSn61mtLDxut&+*wXijR_VeX@2A3n2I^gJ?6@uH>FGB-*flphisKCasRp})-Nzbe z=V*2Y8-*dY6jqG;Vr&O^pcGxX$wIWt#+^i?k(pC{Ihp@3G3OG+m29eoKh zzXuUTwY`D>)|>U{kto6DI)rU2sw?EI%k8fss7J{C(TmD59mTpY+ucTMqN1WSUTd^9 z?M*p#DEhbH-6{{DTPolUgDwixX9p^Wr^ukxo~`(jYU6xFpzZ?iKKi7b*}y{1aq$7e!HfbCCa~M`NsqaLpIcM&NMn-gqpXB>|>e89>pI$1I=ccTqO_!8$P%D6kQ>(TBiYo$RJ+% z^tO~W+(Gxg0O>K-@MCQ)Avw8&_JPnz)IE5on#9F%tCxOXo5Bwfi(Ky#4oW-;px6PkXg>apgh8*Ad)_BIqsLiZ6pwuL*v$Inpf^5P?gTW9%Ei8kA_d_r++$hst zd4C7#zfAD-^_6%;eJSNbL%b>WPUdNLsNW!TM<9a+301A7Ag#_PmN5=m8 z;GaPEO&&9q&lK+du{dPgRGc>!nSm6@LZX0f(6gClPKJ)jAwL`Mwe`syk~pZaS}49&sWu7_^!)AtukcenEJlY%u-po;Fe8gd*Wq6re{ks6x)S~GvvQdL+*nCf>jor436f^ z(0Gj&OYz0TIg;g)b%MSl6+JddPl{HYeMu*^-0>1@9`GlKizhj8z;Cmob6DXn$*tmvG9cQ#RcJ$f@;q zbA&x4iqzCp+_7T<0s^Y4T;_341R2cpkPIcYQC6MzoJoNyJ3MB<`8dEk+_5)6TnGJJPAY2?L`tKGJYVQF z5gC6dieoA&q{7!301_cC{}{3kgN%xXAs}W^(bBe?+0~F7Is{x> zQrY$;;550J9ynda%R0a1dx0HIdtYt|sb>GRSx8f5`@47PYF}*a;9iJ*>oK|sMg7i8 zU%#&Hue1Pn-Y--q>}ZN#-CVJU1j5qrC?99ii| zF)=YP@fKL0ixpP+g^Sz1@rjA|D(=eCb{k{?p>T^$hQvH>ghR<|8fsC@iLilp@9OL8 z7eXwUVSILZ*WpsLGBAUuSrS(YR0EmJ*WQec?RTag#TiaJD&Z&R=A4?k?6q?sKRVot zIyf=ZcjMq8OlIdBueA35ei?CbYOs%+{f5NMYDUMA^cs(kySSksPi>Hum`DRC*+R%s zTweZSd6~!7&4>tQCMLMKOEXOfSXu}<;A1fF`b7W!DTv(4eoL`s+7}UNNaA{*3_1=A zH#0He`Ss%oi%c+CI@P^TFa13ar6xxSQn$q~g%t^s&VbbeZ?5}m^!q)7bcCb@jGzW1 zNV6#W%rn5!J_C3L#=&Fm;0uKDi}Ha-NI?|g)2D?}w*(o#rC})ACQ1pQyaX?PkgyPv zt%^kB`^*OzNL~7i+pFw5FlO#haacjBDrd^Mq={|ntN}ZMiN6CirD1cD+TP-5OrC1s zxh&GfSd*+2BuEsCBh@1CXrJ}@evlxhN*P~;?9>1%J02&`bXp$(?IVx`8DZseAtd6h z-oRr93XdeUF{L@Q#WI2ubeP!{kdTn9ZjovYG;hWtOo;a(6cO}XiZ{yIXdIlJR1_7R zk8==gxFA)Oo0jN0ItshPfJ&~~nh-`+OB{|nNHc)^*KE0w~apLLw_wRL+I3R>&)Cp5N zk2RcZ>zXSJ17gULpxZ-5qZGC^!)kFtX`4`;*rN!qa-m2wilojZy|WA=U)Zl7tmU~D z`+L6>+&)H@wedOTA*K1TwY3kaFZFPv<2BXJbMW$>@fgPI_!D*SeKZ|l%f!=NYioV# zQ**a5O{)6*b8CRlA>=^F)Aq+UZQbRUEkZMbep5?C@Gb{e*4OVz@u!grCG?wOV>^3$ z{d|0`uTE3Ci}Do}6;V=B;tbdI@OC}`(n0e0GB+1fMmh%xf?E;8SI+c{y#NW!KLtH~ zhgpjj99h5J)%NQ{3sfmg3GVQQvk<&m)fz*!~jD%hR>T5vA5t^HA!M<@ZvQQd) zUs+KKToo)wJOb%`fR}5nFEO38#_I98`{1eWpI(Hl;zdAq0?&Azf8<7*PA5d6PXq$! z0uh{4M|z@}n3+8@=M4(b_^z&?#uaPA1EhqBJx`lT>xVM)ie5s&iE9YKZk*@T@WmCk zqWZ~ayQd%ZGI-1sqZzR-gQXyajJs%Dsj_R2Wju<>oEK}v%ZBakLSTk!1`APATF)W( z1tdSn$T@OO7oS}6gv@j{?$#~$4^Kv7ctbChThxKBAomI6o6j%(zY#j#xe{>wBO^ef zb%XRzK}#F8g8-EYOo5Q99}u8;A$yd79%%?s5v1O&2_OCWZS31f^;`#Um_?22NJ>fy z;32t?&EU-6S}^Bu;Jm7B%i#xiIzQz6BmRZgn?}O=F_JV)4643 z;;JT#AD$Kk{P<#qQ;`ceD4pa1NWuF~qj`#~b;yrFsA-4eH$O};^7%koK2Td>QAffF zL0ll%nm+@n%&i)5w#s^L^^^Zt&gQjb^o}N{;wN7E^W?{a>yu3V{0v2|5%4#;z zy^T>1jDM`E!qap24WYD<`Lz{%B6K%ko~E^Y;oU>^z*X&Zl`^J}%0C(Js;_g&Ins=t z2bs#``*f=m3)FmUbBJ*g|16CfG!et(UF~^Kb^>%K3NpIF&}}gqq45(_!rd8S=WWiy zR*~w5L!8refC^ygRJ1A7pU{d^sgA`}^M8P>IkEix?3y>UPh?-66rsLUWk;$?;mvAn zb>$&CHMO=@!6@F-jNQg&6zEP1q3sk2l&Y#KpNfyXkf30b0UI-O2|i!D@>_^S!*zB? zUg=LaCIR8x_1fDF#C>{x&HRCut}dC;sodjNSND_Ki+)Sm{H2#`T;slQe736MI|}ig z=8$CePOL|MnvNty!rKoYij*IF4N0Gii;K!HNyYni1v(tx38(}5XcQo`DISWU=k1mE z?3*}5PS<2GT%woU)}{>t6ONmUtEWcO>CuJK3voHg2eM@{C9e2EL1SQG(4*1-F~Tu- zoUx^)C3{pko%ApnnWhm9NMOTN_R#PXmz3o2#km5D#oG8mTz>%*Xt4s+Oy{M2^o6e> zqOK|7H{)T(v^ld59z1?56={t>SE5UsjclSMYmEdotVD3f6dFv`tSrL7hv@0_AxW4IBvQD_LeX$KJ3jYKe4>rD_^zz zxqcK9%P@k#jZNnEyjy=0?dj!plabjcqHZ|%#I@`fogeCwn*^z~kBuISOpB^G|Ih^3 zr4}=xiBK&bnHv*$ubmAy#h4QxDe2Z;KgF%D`#ez38vvfZbIq_C6vk5uetabr3ohUy!+D>%lB*NXELx}W>JAV8xlrYECKw5b<%>USSwK!4qIKF zpPvuiG0B`655a5T*==S5Nj6yIm6|1yG!H;y5786Qf8_G%#fkD`=d`ukKx6mJ)IXYy z+*FW~IU+8fk41(}@bHtyU0e3h+p23y60_zoV z92O;fOQ;*bocM)D;|mLQP~1Rnii(VcvNz!>=+?ICluvJ87f#sp6GO3aEBg%Bd4tDT z!G0_lTO4A`M$WHA?k2OYrt4gn30cT)&jCaj&-qMz;l=;foidQ)kk0_-NLe?u(Z&x! z*U06%fdfH;)L~zPQyrE;ae9{B@NbF}v5oJywKe}fyZZh64a`-L68#TG0tk5d^5y8qj{sq%Wn@fCEYU-KeaTm&I%+48 zREL7;t`2}_gK`TAgFJT_M1WCU66&98wFzgjH_9zvx{qK<&EFhMOr2oqFiT^tPmi+P zQR{P9&OtMxj0($OdFu+fLg_haEo$9AxqNWMVVW5!cMs#BXb5{!=V66yFlEs68qBQy^i%`{eaa zX)V_5n(^|>C={x{zh64`hT@ePSN8M36iRp97zK;`M^{3Xrlsj{waL&hc@7%A3jOs0 z0E;6>0%_-WbSkc=z7tjlFxnyC@XaPmCEyDvTWN<8Yb9;ykyn9o1jnI{K}?zs+CvOQ z^8q3kup<+tTQ^EXg@j1W<3wB2b^cDNy{+wf88J0rhJGq3DqeVWHoT73Nzwn*1)v%I zBwMeq$fYBRy*8?LV}yDrnwOM7f(sTeKq`~l(PWBrug&#kZdt|-B(cfZ{Vve80U2`O zy9v}14?Nh|K0%wx(tLl(!omVfBRUCYnsXJRKhrKQ^jDB$^QXIa`LZRSTGTP!qG8Ld z#FI4aZC@Mqj(rN^1Dg}d^K&x`XgFw%QJo6~Na<_xKf5oPKe@z+Ktz{mXYk-#tW&Mw zO*9i0ILWLWH%Kgi$Yr})J;qMVbN~NZQPd7-MVTU}_4O$tRmyW&vVC^8wJ^*$o3o%bzgf{bLmCTV?ZO?XuDv`x@s+X3YsUG?z5s-AhLNUNwtScLcDo0f;{ea^ zR~Wsg22B509tAbQZnsq9cxj+=@WzwmWcqR@+nadJ>Ed3rZ9`R$EZoqZzzPkYI#A-f z^O5+7Q1fp+1G15*j+(zgLC564zyKzb0@{LgWt`sizoq#{zK0L!~A*2eEBLkf7=k49y+xwap zF$c9d6cSCuVoMWUY14cYdMPJMg@QJ}7nPJ8{WF&cP-nT+L%GZ)j{KTHQ5hoAtZz$N zmRi2tfGp%05w!~SmiH`8c^c&AlwB%%`sCQyCbRBA@JuKHrj7+d!#JLmtu!Dg2$%{`hlM4o4Dl7R7i69$vsE?d8OJRx zxkAMcuwtAnA*-MOgf2G=p>HK<{^-#M ze2SR;s_eW$2YlA zWyhu#7w-@m-``)K0SX)Pn+E|G&UxVhq(v}TNH+;-QS(la*WEroYc~54mzYSjchAh} zVl@9YApJffD`*x1K!Ti>Bl6EkS{E;7m6Vj|mNe6T@dnA9C6wd5vLT{4267Vgvay<* zEdZmjy1Lr(XZYr^u`uY=#FZLKS-pB>QMU^9Gv-h~JmDPp48 zCesOv%5a9yV8;Xjfm;AiTwZ#`)pZFf??1zHzg0*llI8vVE3n`Mff0xwPX`15 zsLo?nrwx`BnkrD$4~VV3eyi$Xds|LWl>EID=!8S>csDwLNm>TH^Uh>%4oD|p9{)U$ z4&DVKSUXJl^VLRN8At_$?o0Cmbg#kWq0e@8cgve_3TDOtb_8v^uY&hwv%m_H*yVKH ztm8$CK^R$Y*HVTx_yin;rv4mv{XQW3YOzZzq=A~r|sx>Bv*rf>E znd|=i{5*t&kj;r0&@nlIP`?5W84PVrwguKzb~{Wjz?oI3`G?s*iGcfK7H~u`yq-#A3cd0PrSKS13ECVPe#rgM&NK0&5*R@=>4n~ zvi%Ht0hE_UYm*mvj~qDy^))Xq&@;i0pgSY=ajT_ahUm(OQ(>MyWb3Hk&@A=<@c{CGdg{jwLXoZA?;t01JeFF|VIn6=7jG|_32}@ca+aH0` z1qWuSsS(H<9a0w_y#*H@(PP+_I$e~4#`pF{qXaFZ0iJj2+F>o~gIIdcKzq-Hn0GY2 zP5(L!a8=%OQu{qI51x%#%i2m+s!irnYVmuUgX}@%9HhW_dtU=uCzuuCQ}g^ex4dgM zFh8#M0r+zC@2u9+iLDKqTf^EUKfU)Kjva{YJ1|liAkG5lz0Ap0gicLrLvMYp9UDKw zA#HP@)LUx;lKWeyo@|+(WNF^GgoH)t9Z8hBtLDFKv1hr-vLRosLp*Hom%s7+)_$W` zC;kYrM$a(^F1p9=c=68}kC5HXmACA({=m7%?B5jjzeqa8U6Y)UKz*lFVBbM3BOM90 zwti4N615%tlEEmGYGUiN^aQc>Is8zMHjO^QF#(#2@(Qm(rxPJq2H2Y{ zqMeY#(W@Kew#y{yE!y<%avp**p#P)p8?wySybVJM%m{Y-kA>6*|8%!7QvgTRH$t#& zv?d;S-S@^B>l5c#+t)P}(1+PZeb@Vn6ZS?^(<#M4(4~W*cN=19+w0e|z5zWT zOV8HyqWdYvSlv#72sV2S)+i$I;F43F*9@QDT{=13zfL2>1(Jhr5ANzoFQO^w>0@vm zX1)-vlGf36Av=D+j=*^?nz?gunkifT?O&S4h2@8DF) zTT3b1lRc>F?n|z-j{_IQ%kp_xAm>CRpU%TOmOg0e}QpPr5^`=Sfc zT|WyV(JyTyJ0P&T46=aL2IfpmMTJx05gUZw&|;Z{tFX79uMUkg1pkyQFC~5}iZU`X z#cQ%|9)-YOgqD%f5jqX4M^v!P+F|$Mu$5iBVHU9MPb^;|%*_(PxS=8X!6S5zqUR(W zQ2KLO`aW7FA@iqg&loW2khkP`(~zg&KF|q`b7V>X+_!ZGu_r>~AlN;y3kM0|n35gh zabiM3>zfDnAED!*#35?dEW}-g7Kqcg?r-H})bqZ^M!7*n4;+mmMSST`Jm^71!r25e)6F7klQuj5Y2z7ShdrUt4RnB+Z%~ zny-uLaixep#?hZYEj3wDE!rUQ%>FtoFq9e4IlBdf34lVPw`L#-wI+h)4pLYdzZ&#bsx~ONonjH#Z+NAB<0nVh9ACJFB5DQ3tOX>q^A+ zz&V&@ilQh|jiF-sO@x+e6aTimyL%40=>PuB#%3JU|9?K|>+9Ru36z&I!Kq;^K;@pv z_JqHqya5!H>6dA&0l-vS9)utc^-$HnSE7I=gS!5oE1}YY2pL`W=Xp>w&Jue({(J&X zWB8HjQ42F6I9ZAI21Xjt&fiaS3mjPPj7I76i-?dbJc5Fp-wTxC(Dix7 z^3va*N&&wI1u6gi1Pt94L`bNbi0^wIe4L(J8R8k#$+3CFngxQrg&8kAary`c#|y_d z9DhF@w{3~U;S~RV(mwr6`u6}vMm-=c{4?D3>(?(`V*C53kFNr~F&OE8J~f7gL3#bp zmB3U(F7o^{jdxI+Ij=nQC%(!e6lu^O-(vQIxOyhgtI^-jXg(MN`=&HAJ$(V_tUsS} zLRQ*Yp-H;KER%SpBPiv4;CO#OK`JY8m?2IP63Uz2LUr(a;yd;<{Ms0W=Gci+IK|B% zPz^m7p+rKYRF?SgCs273_0zwDfGT*UKIlYwDGe;EYze9O7!*DNFQG>iIIYRQBS6H} z(bgXS`-w^S=~x+}af2z$+cM+c?{;+y#2(e>fPiU+g;K7&(%d9Qz7 zHoFOL%npfMSVTmw7V4I-i;Laz8r+vhc>nxK_4?-9!NE+*+aR99sU%t7M{q1iYcaUq z>;}=sX}A%LOubvFF??>pe9vS&csC)P34Xxb_ zSXB(wdrxx~DB!i_0WU#Ixxis68Y{rMu5NBuo;ioBJU&D;cmqR2FJIs1{czNb$ta2r z`aS;q!E1Yav4a16Hs-Nay|Vj7TB03gq@(~5PgzBBz6ih);Ry$Er9pW!he9vHHX%Qs zoACNgDNqctJf1W1CgCe(1ip9J1D;$v@TFdA~lHhm!T|X{FKGHXrR8> z)%{3p|Y23sCm$ z8VDS>Z?l#g&VK!Bd8sU5WfFSHKo)90Nd?jge-NCphj;`HxAkKMw7+irxPhwCG08Yp9|?1GuQ?oB9v8B$PXVrC8VtU0*szF zbki1K-gv*4LNNfk|EEmS4e+iEh9j{BO5Tppste$eDiib>ApSCtC?;j-`wd^%0HW&c z+q3hBb`Jg9nQEe}4%C(AI$s77^FbpQIySEX2!htk@U=W+ME29BKt-}<1wHULC{!PS%EWwF)=R!Rs_6nLxBi&{mr^J#)#p=KBo;0?cAx|%0Z|v z4B23BqY`9XqeyW8D!&rs(IMGSaN!eyZggog(0sOZ^i{YM z6NC`V4m90W_QSyq>`(aJ1d9HMUUawyd7dLtzlaJcoPidg2w`G9B$53C+)*Y(JB`%w zIEdt61<{ODgb;uWuFTZS)Sk1`(}&lDhmS*nl%~)DjIF9q`Prft$Tx5vt{9(h)*KM? z^-!>bhesb_R*hsmrojGnqHQp!M_`vuSXZ!8lj`B&OEoRR-2fVkD5K^6h}R1MW2C3U z!(Trv45iYd&+d*Dq*mdyGaztX1Kaq{*JC-}0fbJo8;*6f2#R&EI9vDgSOz-`Eh>Sd}c-7v{?s#1~-9|l=WIo^? zZ;Ssvlidd!Z|e<=n?o+pY~$+0-*A}K0~1Tsf$|0zyBE*^4Q*g?@$omUS1;!IV-6iU zH1P@;%z5B|pbxc`&J8E>1#;22BrrfRDavr1lt7di?CgpG>Ha=W`a&bBehJ2NzUO9A z@~c{=rv?^*ctCsD@NYr1CbgN|^ZRsmT;M+RKtMf2jD;qecq~u?pv<-6FT$@*kWwR# zNLhiUQzU>|-7FR6{JX$8Or)>ih*i!gaP}B~{}?*VMoaQvDf=5p*+0N9HBKHs{tOHn zmb3xGIxBxW-;H?FI5+#<04+YR_gPHO9 z^(`-=yMJd+Lfs>VDf$c~6Xe2TayYL=H0eV^37`-}&WESz0Q;}Gp0bawS`ykp5x?W# z#|y0IOznzWzBpc;tKRY}pdSzj^n>_@j_X_fHcdPpYu6rc{R{wzt%Jh}m-nKx9UzNV zhurP7IB_R0ucxkTm-ra10{l%i<<5OUesxsa(1^k*IBk#a0Q)oLuCW7}4vRK$X0hf~ z+5hWi6H*CMSQ0e_ROE+|K9M4{Euth(!Gp)O|HB7)bzX;F=D#r^DWH2Yq2dNnM^)bW zqodaOEHEwSo`%zL-Vp4&Iy>R~OKoOq<5nVZ@xeV_B0~$r$B9S9dezK<)ZE`c)c$Ra zSU-3#7-d0n&jjA6h0a~8MGxu>F3M3{Wvi8aiQazg0}=se1kUDZtrRPH_`SXj};T zcecAHn9#=ZUFXBd97x?;7jKK5e=uHNw~6=KT6M?{q-B?#wv)_$iMn#7I#@{McLWzg z9ZxfFV!iC7Ubu;u4O~U*BQ~yBurs)veP2iC4!`{ZyPS`|nbkg|Z*|bxIse!7n@V)5 zeA+Bm;4BOTd9jDx`)wT^S_=95CA%P6XwwJf$1s^U-NyAc1pc;_AfbfZ|I1iT;RP6p v8?hOu4-kz)#vW|qU%$cguOH^wCns$v$k#n2?h3!VbihEzM7vzm=H`C^%mUte literal 0 HcmV?d00001 diff --git a/docs/images/AddGradeDiagram1.png b/docs/images/AddGradeDiagram1.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2852127016554d29fb8aedef708aac906d11a5 GIT binary patch literal 13138 zcmch8cRbbq`**|M^N=kO#~x)ywrny^M)u53vgO#DvQr!@LWpE!@2C($Au~#L_P8&7 zzMt>!aX%iv``^1is^gsVe!t$=d|uDzB}!XUnV5i%;M}=$#J5xwbkCi;UXTN}$D5wwz2aFpS??NZajx5A!&$nEU&xn* zr#DTvgCxAUX^Z#t>4hcozRxl(PFKfxKjSm?pb9S0|KW_yJ+QKw!9SF4FN(5Y9sj%a3)1>k?6a!Y1j~DU@g4iZZ0joK;pwAs64V zRJOUY%e)go7)8gXl)Is0wT5FAjAFyVM<eyuSHOPn=NDR}`1l*^>yJEr z{QO911-@5(l8%Xqk@VjaP#~|Hg!emn|9sz=>mIw##pTc)&)ApB`&7U}t~v17-`}65 z=;OzaH+;9##oT8zuidL498zo>Wud-;x3#`9UUmD0Chy&MVj?2Ly}kJFX%L9(u2WL> z7OJZ6pIp`IAdZg6%F43pjxR%1TK1<4svs~izbD?bC-I;v&h1~;)pfs!uHXaLwB_d) z6m)iUVBzA5x_qluOXGtJPd55Jw6!fneN>-cSTL=1JFm(>O-)Tj6&kWKfVqg}F>2{vO=fdFNU^qmh_eL&CMdw@n147k$(f*cv1c{=8!p$RaWR=%%qsR!9%KrS~ zq6-{zWvsG?+|<-`aO%OY(aCo{w|SJwQiTF zzk7EoL)Z>NF2d&~oV2a2Z9usB^rQh5&%%SFD~lFjxDqtio!~lJI-VmN5_q(sZ2t(= z7A}i?2Zyj|53j^>U+mAgs`Wgd?=lZDe1TJh|L(i7DmyK6^PGr??p(!~C0?8Q;LT^! z0d#j>XJ=+&mHJBLg<8+$p<4Gj1_lNWt>@}dF@wE*eUk38ShloNQ&YS~)#(Bj zZ8Pl=%lo=*)`+UOiQg-1`#&^chJY1Vt%b!#vb%OxB47E_{cz z*}T5)W@z|@zxikr?wb2lfL9E=!Rz~ZLIWK^THbf1} z?=lKnVr|MSP3I{mD2Q4ZJeLW2o}Mmd^FDdB%=oS2h~wsbFFrp0b}XNcC-{7}ytK3w za#T`6;$yZ{#+JmJ~$==|yNTF}~bGe6=o-ZL;%OoRB9GQ<_eMQ`jeeM%4Csoz zRC9zOl@rZJhdR42yr*_`U4wv$A!$>+rKOcE9Z>)Dsqv@hHy*Bx$tI*wfc-*=-S;}%Bm29LDHW*VM}FkqSlpdGwA8>cY=axVv@DQ;uJMJJlxZx z0{IU?Ha~AYs4>O_7t>f@8f24^X}0N0jUs8|&?(mIOXJ^NU&kXLknrEDSmJQPhf8tL zzEY~DsQCcZQq*Z|pwg8v@ zD~|pap)=%C+xy=4?>*ezZ{4~@&WN=k1kPP+I&^_Rftsm)YGW@6Mm6||%j_@kaMff` zmCQ)YYh_Gw?cL|5fJ5fMz2NEr#MxakptAb<`bq~Lp*+b#HRBn?hoDfJnN9EQc@HY1 zXyB2qg# zZ00Yqot0gSFsSWsTqZN8C~i?ve#(|Hd*hfA64Kty9F+C+DR(`-qAZ-3^{Qsp(s1z; zdv?4$4=}BuRhNkCl>dj!Yn~x`b!TVofpU<_XNrWg((Wy!nN8_#{VH#cmXvN>u5Np?dnt`Jvn*sm}KBl z?GhUgEx2w1)#UGEZJiGXcv9gyEe)}!C3C#}N#>L)AXHHfj!56y+6u0uD8sTq>LEv# z2J;%TE}6>D^ELd6xxkdoQ{4B^1Q zK=4_AD|671pha6Kg4c*a%k;P=Q+(MLX@k z6$gd?;Lk5bTniF7{jc*Oeag%MSB&u6HdWNrz{!N9q%ThM1SBCE|E%|3&E_$#QHR4R zLRF*O=~1_|%w1wrkF=%E(jeooo_gnFiASdZ2&b_uL>m!7!szkvVK$VAtskEhnJp+p zO1{Tl64nFL#^$2Iff|`2b@zY7FR|eDafpiU9z&GwPCl%vs#0XuIRb|-c5@=V7v86& z@*0CjwJ$&qLsgice=Juo>F5i`-Lj&h{sv7=MI{nEy5P3AZXqiAmR&6sf-y=ucTD>^ zfvt^=MSb$)#~!<@rh|sw(nssx zbd6NVE4eTNK|w(kELJtB@pWlwX{c9;OKe0=U#Phal2_}Yrdf)|C}($NV&@g*ynXx7 z$S4!eY4iI24^3!>(3zs+{f9n(R;08bgNp*>q`x)x%CtctA{JuxR$4)cuB34yVTeEF zjfZ9K$_z6_SDvSFR-_-T=i7TO+n0uEds6$ae{Y3c(=4~UQW^!IY5(9Lo>p*nFi$ym zt-QG_o{>8fFGM?>z}DJ2nNueh&|ofGcJM`9=m??`67_(O;90`4eT<=ooB1rH&|Py> zPZtPI>+kKAok8lq94@^>xieItcHg4s<3|!g!V*XW@GaZr%VP;a*sBN7F4>ghI|7sV z>+9;AC+kxh#&pW=HrC&%vK_OswzjslwJpEfm^fH-?+Xc+EhgIG9{E>)0A+l9d}7`V zL=WLH6m>kQ)z#IB@bJjWurO{pL9{XTp35F{UBs;;6&CH^zL~VD&^{8M5o^BPM6t2Z_w!H$oCIyp89vFKUUJwAS^ z?Yi?swQ34dww^#=-8iPgr!$%w^Nrbmy%n0nMVk1GI!}?&T+Vue+^rYt8J8gkktoRh zl9G~j{X#GnFRJ3EBP)^oC1j)&KHJ{rLZ70tv^sVIqa=rf-b-j`R>q;^sr+V5MEXmU z4Wjoan*!+Z87RZIw>>$h*Js)@`g(hd0}gjyqP+q(W)+=A@{~zye4$YnneVPnjw9m< zguLc^$a&T#8)*Kpn6+wFMhpGh_s*aK^c8NySM!J>79OqVQc1~|iDWM!YajeFAX>e@*q=n#yf;f|t>|<~ zb>O8wcd@9Xq#xK|W@hH(M`xg{*N?*YJ3K~YyUsrT&d?zY=r8U##otX77Gv1r>OIyaAqTI%5{1J3rz@u6DW zMO+dErmj?MYK5r~^;cm0p5F*Qlb&lKwxZ*O5L8mjzo@+YVRMS7vklSIKUTZ#$R}Cj& zd>>skr_xo!QP9+RqISeidq9lQK$R3DSz#4*)hgK02z90+_wHxv^1fQn$Ii{5g%! zG&=u-=4OkEn_ER=<1zG7fVDrswCg+s_{?5_Sx@Ox&4P~qK$lZFN!$`FZ*G=B#>U4h z@x17QIF+#Ve`c@JiMlwYY1MfwK(ov!fpHX2c`Aa0fB;#*AtlA&8?_02 zAR=J8DFFIZhhu?iN-EDC-5RGmd_*eG<>cflqMjXeibxgQE`B&!q{CKY#%T#Af{84h z@bS00`*u4<83feG{w(n)uIx9E9IlCOH3Xe-50|qFmE?K95S<-(z-2r#h>FSOMDFcv zSOIW_w*f#@AOx0~CB2*gjo&$m5DexOxEpl*;DGcXH|GkqwMm@^yR`HP+ylEwS%i)4 zVq2l^>DN8LsrxbsR_y?McgPAEVqX9b-Q$)R)-tvHB6e;NqYHB>WdrAWVsvB;V)^Dn zE8fuDqVJFphuh0+P*Z-kgsy?T%>wsr?CtHh7C+Dz2NPW8Vvz7GLS+unF91Rbpi;z6 zy42m-8D)U3@Oov|+yvvUPM(sFukU5X{L>uKGbnXLTZ+!e$VjI;-RNe{%}Z2JRQ$k_ z9NWsOhvE^|D}>~7o)8&SwU=W;0(RI>>MnTR54^)r{;k|M>)I{cj3M$x71~9dj6Oy7 z2C~aq?4Yph&~`c<;-rsQ5N{`KLokq|TjKVbMcL5z)5P`NA6M6h0SyWn|7+wLD9 z{ORcE= zp@$1t>FPdiY-}tk;pR6$5#581J4Pl%>x{{j3I9_S72>$Rxv^H#HKb3%KZsad=J+5Hs+Xa`1(Tz<>ukp6Yll&^ng#IM$w$J*a;g&5H8mohg-f~ znj3}+6}C|Xod#%?(iWgJ1h3zk=D_PpVE)v_{HR2x4vz~6mPK6AOM%QQ$ zGPfU$C(Ay7?k(})XSLI~5Ck7k0_5c6fYhxz38cs;IA=HL-!Lic&`7 z`5UxHwu9;@?0?Cj}J_{ld-=dzGehZVC-stcS8*}W$;@6P3R zdJ6>lQ~=wHi!***7iI#)eFEl z(G9PkTK6m-_Qy1ur$3qxjfiM}17M(uHJ;h38>WslUgI4A{l5fM>CecF@vmR=CZLL2 z3Z&GiD9f~jwYQ|8bx0``(|HMM`H|{`xI^+oHWrYD?IrRM;SCE zJJ^Q+mi6{G!l%snu$a2yzkfI9v0BBZ5s7u(`&m*h7m@!~>&+z}D?y&w#6%t;Ne-`f zilymYf#!VGk)~XL62iDySROUDBVth7APZ6g&_OdOyYtGPN4J^P*hDd`d-3T0~l2TV| z2(EjlrRA@gnL#LOz~NboTgK8+JD=w#LeVvwheaV%?LK67zMZW~eJ1&^O~1r|_v$q< za$-7>@11}%$mKW(pc%S+1Ja3SiOj{K!r=sRLhto?Liy*D2;Q&&1ZSQHu2QC@DH7fKl-zPJl5WH*fI*uI&DRfx0~* z^|6kEcJc6&<@9t~^@_xc6-T=4lH?P50~K>$M(L5`|GHG}oP&C{J`Vewr*La53!l6G zaJd9W^-2f~(w#dAF~UQKYvQ%->%b6QoKFWV~G<{T-;MHoh_gflZt?C@+6nT5cM|nqKJA z{d-i~YSYY(9>F_!4q)WUqZ|r*;B`;0)Vf`UyxS-1U`j9#N&mkB$r$^ZSB6DzZL|wV zI;oFICav@Na;0Wd+E0(PPVIv_|3N_jsQaCUxuA#H$h`%$Ll8cK;WT}@eLDG!bOeHKJ8 z8CX7m`mu7D>7kC0n~+ls;*lvDEjLSeNkKsY^cR8$bxyJ^mYPyi!QP%zNxc7$%>Fzj z(QU8C^hP)g&GA#50_V1snUDrW=y3KqWPOIY^t`)+Wi__{3(aRnZ(VrJY;PO^BlCI$ z2CNa7bP@fz|G|-gt#i4=`1q~ou=sWTQ*$v=dIT>LQd%p*@Z+}49tlwT9{>6Bdo!5s znV37;Z#)1G;R*;I_{VRZkufpy=S2w6KfZr|6ksuO>o~Mb^@idTdVPLTvU*x_@|lH& zu=9i$ISI5fMQ+_yU&1YpDQ0P=LHqt3E$d6Ywi8uRr!CAUZ)j+U+8eoI{+etEfjqF< zmkp~UJT)taN*fUtwt-t5O6d+v6JU5N>dfe2NTnVExrPh1<+Q4t8e6_h(_G2HXTEGW)x z_B6$UhiHk?gs|;?8N-t>?Lk0U{j_@N$m4@w<>~M3{Sl^O)0gmTkNgLh zWYWeEd*82wP=avpKa#p}gS=gZrGo+y-YXX=r?}iBuV{fRl2Ov?()Sd`j3q+qRiYog zb^q@*4NB0V=(8Wowm?Yw;$YM*t*kTAT?$+2DkA~Ovl>~}+uJUV}|>=|pN%#_9v z4!AU(Clo#zFQq3^V$KV6p(S1>f^H%?-rt^^ zz_SPE{GJm3?_ojA5Rlod6%ia|Tn8H20?2TCULwVE45zi79mr)SUxSDR|DL^`%a>TO zwL)8`f`G21q1>z)1c{#JZjJ?@Jz&^AfBrn6|AHm9*a#^;jo9UjO&U+HvybSNqR7wJ z1f2#}hHfMV(i8*cfA#7W{~@8$$uqkrf_5Jnc5Dk^)LA!t{{HXdE-6J}EXk2ezkYEC z=)^pyYHXmSpa7k4%7r!NI|!K2?a7ot+&VEZpvjE+f&iXW=06 z1}dQB%UwU`(b78rc@*~`dv4E3B4W|osvAIEczFemn+Yg3j}nD6N(Z)u;$OOS=^_ph z=k3CNP!~Go9RGP_9m^tAD1nlaQas%?Reea&+@sgMvm6XC-H^nw(Dqg+avM3fw8@hDr>}afs+j;iSD!oHS21qm<>iG!p+Fh|+J%9f z-2KN##+u%i;EUtWLh2v3Rc`R!Yc%jElCX(Z0BP5Xt7jW=Sd)6>&G zK9g+Te9xVpZDHBhXEl1p33V{-#PnDzIV(e74+&{aCh@t5EOHvfh?*ua^0*+hMV&JL_0K2`5`jUN z#uW5*PELYfxbD2pZ*C3>oD2$yFVQQeK-hlFx&u0QkttN^eYK*8zbCN!{sqv7FunTA z$0fZOJv@4;aNkFz&d;1dQL+8Sb290t}%gQV$~+=Jk7m@rG|Q_2;px z5{^olF?4R^xqp$f2ytW|%#D#c_Hy&*6P`5iWJ3(G84Zk_9!{TrC&0&-ZElTx9uY9p z7Uo3Rfp42r-gJQMx)vI(IynN&009Zf-PhLmzVubEK%_CCm8TC+2SKy){r>OZfq?;5 z`S6a;PHY^U%VT>#?&~o9uz_JyjOk>Y-&q-bJo}SY%G=G!sTA1VXY)_53}J|IO)4!F zL%TsLTK_1ymNN#p8)Z&B;q|^r@=&$g)1$4ueTHK3-e%8d`{e68jk{Cr{Uk7_G$06gos;4N9}z~hay)_#6SUR ztf{4?Y|o#r#gNs`L-YQTB1WwUfjx70(%kQ{euC-y|S#>;raL4H2!Tza9E9ZvWI zU1r(Q!Ie6dG2nHDmfS648<6%m6p*-#xEc&G+Zx=aGWOSn24K>oSLv#M>lJ85X^UTW z116cXJ;CIAUV`*2aavom*oRhcTuI9iFmhO8Gkg-BQ}Y*xPxgWM$!`J`bY;fe zL>$=B+siAIjMtuS#4m;5l7h|`yvP=?1}wLyrwB*0r3r#w;zA&7Oe|ei=NS75$yRCf z7dfZLuk+KYwWCskemru;8+aQ>FKXMz8KvJZC7{zj-Z5@r7Nqcwl}GTy=I-v>+gfd? z{aa5sEZzW!tQ{WLz=L>_us9P|ru{}vtP-{#6-?(3>x9%i6M~!_L{Ke#s}mL_`2M(m zIMlzTEqQu%p%}T?Dn@ZDDJbzDKIKnXH2cdO{CdByHO>_|lC@#29^J5iP-Kn7W3<6| z{R7wc`;Sh`6P2G|XLDu23GfEY)wl98OYSjjxK;7@N|c zNWhB1TRGb5d)Y?n3?-@Nb{B~EZGqRAg{<*J2};eH18X@zVheq|M7*p{!h&x^&QBJIDeN(Y@t@qqgl5lSGd|Ni}Z-0lrFwg3Nsd~SumCQ#!nsJy2@ zJv<0ir3Q;S*<*Q#J%0_9f;hTsa!oPf17}*|`iy*K7L!SHAmg1yh=c4KejEqYSW-Ls z(2PI;P+5~@4dK_x#hO*nU3U$|5P#<1c0S{1ksRtOt^0;a1@d2?-|*9>5Ed}mL7AUs zy&v)nWPTdFHS*TgEOZI9ifTrDiZI{;h!`c3%L)q%Et|vWCOn68oL?aS^fxNTAb?*^ z56?rMP(C_m^yM}s;BlImmwKQZ7A5k6;PnCk5j0Tmx}Ir!Le@NajAZ~OmzG+@_u(9a zAz%R3HeTRt6bIJ7Zs<~Xtg5~YO4IB;(>OW%*-}{Jq@0zeZjON)<5{0mTZuZv6`&;! z6qG;MH;BYtzqDCP<$bj0E+=+e@Ggb>vQDK<#>Ll_iwFiB@A; zCo|u^vd9h`k8~z!10^*BLu{2ed=wP0eQ06+wj4yxEz{G?hE|@Q+pv%^&PD`^FXMg8 zJjhfh?W8j1TecrEXRI;(uw12WJCGv_RKWJuR#jhi{aKp+cTfmvREncp;Rvl^YmIz# zY+3Q>CtE>cSBkX!)3XZV3F(>c@?88r$JMJ5H@w+{qA?XY4J*U9bPWs;B@83od*%QU4 zM>@nx#VL*S5qGTo9Zy;YVjHb8Zd~W3626J8KXC}A15C(!L<*PMW%DZa=#4G18S zMy^UwBFEJ|)v(McjPiw~hX3X~zGaU4ToP^DG6a?+Y^dzSgj;tZczBi#H&J@C(3# zEAzkt3d>lueJQPU8u4_(~LGuK;rzpC%jF7giqKs{_Y%%WoEnB#3gl?P{!iEsqZoQ06S^)) zRzZZh*9BAM!pMHoDu$jQ7)OV`!C*Y6u)F*jSC|#g0ygiGsCIsi`~ocrLBAgQoR&M3 zAoSmX#@>b{WEsLAas~vs5+G_oirO)cFJnzmv)X_O05;X&?e30_SY{b%PR=6OEBg8A z;Dork0*2|M!V4JfX#P+vdnY}KGxAyFDj-WDA|k-yJKNhtgoN@2$kYnrdG|XEQh-m! zDlEXb)(3{r@`3k!g{qtd5R>!BP@)hY(+n4p{x5?aNAh>Ai)TM%kJqe;VYa)GYF)J( zi?t(1TL*46Sc)DpR{ARfh#={&JGr^JK^LoH31s+RMke+PyyO}LvP@}Rv!I7G!17nE zd!Ew9Tt5qy=0;fJqgpFDhaUMby#e2|wLUZ_Pd<7Sb}wYf6f9V&tC?VR0L?-`So~ea zAGXCH=yLVNm$X}fLxJnaSHFZgMcjQhboDK-ifk{;AcHSYKK8-V*0rXAn-MXv$wC%d z$3lICyL^=~IZ}x_HY&tjx^JtSlnN30PF_S+urLZHs4L=@*J0H_m9+ z3umK-n!Wu}BCGuD?CjVN?tQxpf;Z)9|10{lmtkF#zW_av@zSL`udQ#*NPbL>GQmy? z{j)T9@ize;o;|E#Mv}9oGv>xm(TmuV2?>jein_YGp8S#h2o)HUjMf1?6*jW+PN3v@ zsGXi13qBb5O>q{RZ6=($*q?`na@1+3$B|vz(Ae>iMH}+%0EfG3-+>I1;u{-|wF5A? z&Skpk12^o_DIWvpZpW9;Pd0HR!9!C=fClFGYcZEjZU+?V^rQu!9GK{PFgK*6D&G0; zdn|`9-L-DlC6w20g?ZQNtN8szH^O%nET2YaW)V1lBSJ0-SqrigQ6Y>o3y5Vc-yzpx z;n!7FXMli-X?1NaftZHZC|@_olBREHy3w2cuQs1Mn~yUW2ojFBV2t7`v^`!vlzpZD%gaC+O<#zAtFCq%BLd)H4rQG5i||U5hAe@N%aXJiOq;zS66d9~HAT zlVD&Z1r-9c$#J2_eGuncS9KoL<^yYlWx+>PjLrebIv@;dX`)l! zc>pa?wh19Gt&!fanCXp6OjiwKmyC=I59uYL&^iGnD-&2qJAj`5>q|L*$`B|Detv$# z`&*x6m|>_nS&ziNY}g8_jR*nVneGYm*BQx!ShPHqK9jWiiBQq+%v&!sVPawk>%+>0 zfD4Uhx&dCgW8I5tc^5oBerm;H72cG4k+u3r`3@r=7c9NXrV|#tG>2ImmIl(&XyzRO z3(?-as*%}Y0u|43vi?oAo3^$#*EOJ;fPHAMg|%(}l!FDXo`?z~FdS^nnEU@gMyive zgEhYMn%0X{8yI11;H1!La(+Youy6){l8PkwC9PwoSB6=xDusVo0WDJ{jP>;0m5ar~ z-2FH0JidU6E$HxwJm74JTkZPL!t6g*On!;h6{xXHjEjq-W<29|$I4AWuaN|h-%J^a zkr5Za^Oc*=6&8$=ldlB)N@r&?l*KWMAX2yDhL!bT6HsFNbgf{E=y1P6JLe_rB=uyU z4*$0N@70r%lAz=QNvlM0yUgef=vY4%7o)?Rh@6oq)IjA>&;!x)|Jvz0xENyU*|TRi zZro^ZYl8*m4vLzHNH?aNBJz!0aK`!_vw&D}He@X-h ov^* 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%0DWIgBz``Dt2L%+e}f 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 Date: Thu, 20 Oct 2022 02:29:54 +0800 Subject: [PATCH 079/208] Fix CheckStyle error --- docs/diagrams/AddGradeDiagram0.puml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/diagrams/AddGradeDiagram0.puml b/docs/diagrams/AddGradeDiagram0.puml index a0152499e25..cba58635c92 100644 --- a/docs/diagrams/AddGradeDiagram0.puml +++ b/docs/diagrams/AddGradeDiagram0.puml @@ -21,4 +21,4 @@ map "__:TAB__" as Tab { :Person3 *---> charlie :Person4 *----> delta } -@enduml \ No newline at end of file +@enduml From 143be421c66cabf42c3320983210629739a7b82e Mon Sep 17 00:00:00 2001 From: KJunWei Date: Sun, 23 Oct 2022 00:13:44 +0800 Subject: [PATCH 080/208] Edit bug in classes that have non-case-sensitive issues --- .../logic/commands/AvailabilityCommand.java | 9 ++++++++- .../address/logic/commands/RolesCommand.java | 18 +++++++++++++++++- .../person/position/TeachingAssistant.java | 2 +- .../duplicatePersonAddressBook.json | 2 +- .../typicalPersonsAddressBook.json | 6 +++--- 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java b/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java index 335c79d121b..2311300cde2 100644 --- a/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java +++ b/src/main/java/seedu/address/logic/commands/AvailabilityCommand.java @@ -5,6 +5,7 @@ import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; import java.util.List; +import java.util.Locale; import seedu.address.commons.core.Messages; import seedu.address.commons.core.index.Index; @@ -42,7 +43,13 @@ public AvailabilityCommand(Index index, String availability) { requireAllNonNull(index, availability); this.index = index; - this.availability = availability; + switch (availability.toLowerCase(Locale.ROOT)) { + case "unavailable": + this.availability = "Unavailable"; + break; + default: + this.availability = "Available"; + } } /** diff --git a/src/main/java/seedu/address/logic/commands/RolesCommand.java b/src/main/java/seedu/address/logic/commands/RolesCommand.java index da75e87c5b2..4e550f206d5 100644 --- a/src/main/java/seedu/address/logic/commands/RolesCommand.java +++ b/src/main/java/seedu/address/logic/commands/RolesCommand.java @@ -5,6 +5,7 @@ import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; import java.util.List; +import java.util.Locale; import seedu.address.commons.core.Messages; import seedu.address.commons.core.index.Index; @@ -43,7 +44,22 @@ public RolesCommand(Index index, String roles) { requireAllNonNull(index, roles); this.index = index; - this.roles = roles; + switch (roles.toLowerCase(Locale.ROOT)) { + case "coordinator": + this.roles = "Coordinator"; + break; + case "lecturer": + this.roles = "Lecturer"; + break; + case "tutor": + this.roles = "Tutor"; + break; + case "advisor": + this.roles = "Advisor"; + break; + default: + this.roles = "Unassigned"; + } } /** diff --git a/src/main/java/seedu/address/model/person/position/TeachingAssistant.java b/src/main/java/seedu/address/model/person/position/TeachingAssistant.java index cb169fd7e29..6c7bfa3d511 100644 --- a/src/main/java/seedu/address/model/person/position/TeachingAssistant.java +++ b/src/main/java/seedu/address/model/person/position/TeachingAssistant.java @@ -26,7 +26,7 @@ public enum Availability { */ public TeachingAssistant() { super("TA"); - availability = "available"; + availability = "Available"; } /** diff --git a/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json index 4bee181dd77..cd11d9ee881 100644 --- a/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json @@ -15,6 +15,6 @@ "position" : "TA", "address": "4th street", "remark": "", - "details": "available" + "details": "Available" } ] } diff --git a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json index f9d3d4b39ae..8c2f36528c7 100644 --- a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json @@ -7,7 +7,7 @@ "position" : "TA", "address" : "123, Jurong West Ave 6, #08-111", "remark": "", - "details": "available", + "details": "Available", "tagged" : [ "friends" ] }, { "name" : "Benson Meier", @@ -34,7 +34,7 @@ "position" : "TA", "address" : "10th street", "remark": "", - "details": "unavailable", + "details": "Unavailable", "tagged" : [ "friends" ] }, { "name" : "Elle Meyer", @@ -61,7 +61,7 @@ "position" : "TA", "address" : "4th street", "remark": "", - "details": "unavailable", + "details": "Unavailable", "tagged" : [ ] } ] } From 6d1c8241c98236e28e99f0cc7ecacd11fffc22b4 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Mon, 24 Oct 2022 18:51:58 +0800 Subject: [PATCH 081/208] Add functions to plot bar graph for grades --- .../seedu/address/commons/util/ChartUtil.java | 55 +++++++++++++++++++ .../address/model/person/Assignment.java | 12 ++++ .../model/person/position/Student.java | 19 ++++++- .../java/seedu/address/ui/InfoDisplay.java | 19 +++++++ src/main/resources/view/InfoDisplay.fxml | 1 + 5 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 src/main/java/seedu/address/commons/util/ChartUtil.java diff --git a/src/main/java/seedu/address/commons/util/ChartUtil.java b/src/main/java/seedu/address/commons/util/ChartUtil.java new file mode 100644 index 00000000000..6720a23d215 --- /dev/null +++ b/src/main/java/seedu/address/commons/util/ChartUtil.java @@ -0,0 +1,55 @@ +package seedu.address.commons.util; + +import java.util.ArrayList; +import java.util.Map; + +import javafx.collections.FXCollections; +import javafx.scene.chart.BarChart; +import javafx.scene.chart.CategoryAxis; +import javafx.scene.chart.NumberAxis; +import javafx.scene.chart.XYChart; + +/** + * Creates JavaFX charts. + */ +public class ChartUtil { + + // private static final double DEFAULT_TICK_UNIT = 5.0; + + /** + * Creates a JavaFX BarChart with the given title, axis labels and data points. + */ + public static BarChart createBarChart(String title, String xLabel, String yLabel, + Map results, Map maxResult) { + final CategoryAxis xAxis = new CategoryAxis(); + xAxis.setLabel(xLabel); + ArrayList categories = new ArrayList<>(); + for (String string: results.keySet()) { + categories.add(string); + } + xAxis.setCategories(FXCollections.observableArrayList(categories)); + final NumberAxis yAxis = new NumberAxis(); + yAxis.setLabel(yLabel); + // Disable auto-ranging so that we can configure our own tick units + yAxis.setAutoRanging(false); + + final BarChart barChart = new BarChart(xAxis, yAxis); + barChart.setTitle(title); + + XYChart.Series series = new XYChart.Series<>(); + series.setName("Your Score"); + for (Map.Entry entry : results.entrySet()) { + series.getData().add(new XYChart.Data<>(entry.getKey(), entry.getValue())); + } + barChart.getData().add(series); + + XYChart.Series seriesResult = new XYChart.Series<>(); + seriesResult.setName("Maximum Score"); + for (Map.Entry entry : maxResult.entrySet()) { + seriesResult.getData().add(new XYChart.Data<>(entry.getKey(), entry.getValue())); + } + barChart.getData().add(seriesResult); + + return barChart; + } +} diff --git a/src/main/java/seedu/address/model/person/Assignment.java b/src/main/java/seedu/address/model/person/Assignment.java index 6a97e0819d2..27b466fa06e 100644 --- a/src/main/java/seedu/address/model/person/Assignment.java +++ b/src/main/java/seedu/address/model/person/Assignment.java @@ -95,6 +95,18 @@ public float getGradePercentage() { return gradePercentage; } + public String getAssignmentName() { + return name; + } + + public Integer getScore() { + return Integer.valueOf(grade.split("/")[0]); + } + + public Integer getMaximumScore() { + return Integer.valueOf(grade.split("/")[1]); + } + public boolean getIsGradeUpdated() { return isGradeUpdated; } diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index 591566c8eca..4efc7994c73 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -3,6 +3,8 @@ import static java.util.Objects.requireNonNull; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.exceptions.CommandException; @@ -120,7 +122,6 @@ public void setOverallGrade(String overallGrade) { * Updates the overall grade of the student when the grade of * one of their assignments in changed. */ - public String updateOverallGrade(Index indexOfAssignment, String grade) throws CommandException { this.setAssignmentGrade(indexOfAssignment, grade); int totalWeightage = 0; @@ -134,6 +135,22 @@ public String updateOverallGrade(Index indexOfAssignment, String grade) throws C return String.format("%.2f/%d", totalGrade, totalWeightage); } + public Map getAssignmentAndGrade() { + Map map = new HashMap<>(); + for (Assignment a: assignmentsList) { + map.put(a.getAssignmentName(), a.getScore()); + } + return map; + } + + public Map getAssignmentAndMaximumGrade() { + Map map = new HashMap<>(); + for (Assignment a: assignmentsList) { + map.put(a.getAssignmentName(), a.getMaximumScore()); + } + return map; + } + private void setAssignmentGrade(Index indexOfAssignment, String grade) throws CommandException { if (!isValidAssignmentIndex(indexOfAssignment)) { throw new CommandException(MESSAGE_ASSIGNMENT_INVALID); diff --git a/src/main/java/seedu/address/ui/InfoDisplay.java b/src/main/java/seedu/address/ui/InfoDisplay.java index c46d849f8b9..6114cb48cb2 100644 --- a/src/main/java/seedu/address/ui/InfoDisplay.java +++ b/src/main/java/seedu/address/ui/InfoDisplay.java @@ -3,10 +3,16 @@ import java.util.Comparator; import javafx.fxml.FXML; +import javafx.scene.Group; +import javafx.scene.Scene; +import javafx.scene.chart.BarChart; import javafx.scene.control.Label; import javafx.scene.layout.FlowPane; import javafx.scene.layout.Region; +import javafx.stage.Stage; +import seedu.address.commons.util.ChartUtil; import seedu.address.model.person.Person; +import seedu.address.model.person.position.Student; /** * A ui for the details of a specified person displayed at the right panel of TAB. @@ -38,6 +44,8 @@ public class InfoDisplay extends UiPart { @FXML private Label misc; @FXML + private BarChart chart; + @FXML private Label address; @FXML private Label remark; @@ -50,6 +58,7 @@ public InfoDisplay() { * Displays information of a specified person. */ public void setInfo(Person person) { + System.out.println("Setting info"); this.person = person; name.setText(person.getName().fullName); position.setText(person.getPosition().value); @@ -60,6 +69,16 @@ public void setInfo(Person person) { misc.setText(person.getPosition().toShow()); address.setText("Address: " + person.getAddress().value); remark.setText("Remarks: " + person.getRemark().value); + if (person.getPosition() instanceof Student) { + Student s = (Student) person.getPosition(); + chart = ChartUtil.createBarChart("Results", "Assignments", "Score", s.getAssignmentAndGrade(), + s.getAssignmentAndMaximumGrade()); + Group root = new Group(chart); + Scene scene = new Scene(root, 600, 400); + Stage stage = new Stage(); + stage.setScene(scene); + stage.show(); + } } /** diff --git a/src/main/resources/view/InfoDisplay.fxml b/src/main/resources/view/InfoDisplay.fxml index 19be53abe35..317ed15a496 100644 --- a/src/main/resources/view/InfoDisplay.fxml +++ b/src/main/resources/view/InfoDisplay.fxml @@ -44,6 +44,7 @@ + - + - + + + + +

    - - + + From 3eb260dac43487b8bc8b071c6890ac3d6dfc78e1 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 17:14:43 +0800 Subject: [PATCH 085/208] fix regex not meeting criteria --- src/main/java/seedu/address/model/tag/Tag.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/tag/Tag.java b/src/main/java/seedu/address/model/tag/Tag.java index ab1eb912ece..5d78f8c0a6f 100644 --- a/src/main/java/seedu/address/model/tag/Tag.java +++ b/src/main/java/seedu/address/model/tag/Tag.java @@ -11,7 +11,7 @@ public class Tag { public static final String MESSAGE_CONSTRAINTS = "Tags names should be alphanumeric " + "or in {Module}-{Tutorial Group} format"; - public static final String VALIDATION_REGEX = "^[a-zA-Z0-9]+(?:[-][a-zA-Z0-9]+)?$"; // "\p{Alnum}+" + public static final String VALIDATION_REGEX = "^[a-zA-Z0-9]+[-][a-zA-Z0-9]+$"; // "\p{Alnum}+" public final String tagName; From f6c7113d6c46df2e06495a7fff76721deab7e8bb Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 17:48:08 +0800 Subject: [PATCH 086/208] fix test case failure --- .../invalidAndValidPersonAddressBook.json | 4 ++-- .../invalidPersonAddressBook.json | 2 +- .../duplicatePersonAddressBook.json | 2 +- .../invalidPersonAddressBook.json | 2 +- .../typicalPersonsAddressBook.json | 6 +++--- .../java/seedu/address/logic/commands/CommandTestUtil.java | 4 ++-- .../java/seedu/address/logic/commands/EditCommandTest.java | 1 + .../seedu/address/logic/commands/FilterCommandTest.java | 2 +- .../java/seedu/address/logic/parser/ParserUtilTest.java | 4 ++-- src/test/java/seedu/address/testutil/TypicalPersons.java | 6 +++--- 10 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json b/src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json index ace6535e701..25b8ab83185 100644 --- a/src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json +++ b/src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json @@ -7,7 +7,7 @@ "address" : "Blk 30 Geylang Street 29, #06-40", "remark" : "", "details" : "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", - "tagged" : [ "friends" ] + "tagged" : [ "CS2103-T01" ] }, { "name" : "Person with invalid phone field", "phone" : "8743dedwq8807", @@ -16,6 +16,6 @@ "address" : "Blk 30 Geylang Street 29, #06-40", "remark" : "", "details" : "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", - "tagged" : [ "friends" ] + "tagged" : [ "CS2103-T01" ] } ] } diff --git a/src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json b/src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json index 65a9efdce76..e455ca26c1d 100644 --- a/src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json +++ b/src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json @@ -7,6 +7,6 @@ "address" : "Blk 30 Geylang Street 29, #06-40", "remark" : "", "details" : "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", - "tagged" : [ "friends" ] + "tagged" : [ "CS2103-T01" ] } ] } diff --git a/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json index cd11d9ee881..86a3e3b410b 100644 --- a/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json @@ -7,7 +7,7 @@ "address": "123, Jurong West Ave 6, #08-111", "remark": "", "details": "Coordinator", - "tagged": [ "friends" ] + "tagged": [ "CS2103-T01" ] }, { "name": "Alice Pauline", "phone": "94351253", diff --git a/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json index f4dd1d031f3..78a12c96937 100644 --- a/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json @@ -7,6 +7,6 @@ "address" : "Blk 30 Geylang Street 29, #06-40", "remark" : "", "details" : "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", - "tagged" : [ "friends" ] + "tagged" : [ "CS2103-T01" ] } ] } diff --git a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json index 8c2f36528c7..509358f40b7 100644 --- a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json @@ -8,7 +8,7 @@ "address" : "123, Jurong West Ave 6, #08-111", "remark": "", "details": "Available", - "tagged" : [ "friends" ] + "tagged" : [ "CS2103-T01" ] }, { "name" : "Benson Meier", "phone" : "98765432", @@ -17,7 +17,7 @@ "address" : "311, Clementi Ave 2, #02-25", "remark": "", "details": "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", - "tagged" : [ "owesMoney", "friends" ] + "tagged" : [ "CS2103-T69", "CS2103-T01" ] }, { "name" : "Carl Kurz", "phone" : "95352563", @@ -35,7 +35,7 @@ "address" : "10th street", "remark": "", "details": "Unavailable", - "tagged" : [ "friends" ] + "tagged" : [ "CS2103-T01" ] }, { "name" : "Elle Meyer", "phone" : "9482224", diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java index d8f4c48cc62..7c3110ce574 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java @@ -40,8 +40,8 @@ public class CommandTestUtil { public static final String VALID_ADDRESS_BOB = "Block 123, Bobby Street 3"; public static final String VALID_REMARK_AMY = "Like skiing."; public static final String VALID_REMARK_BOB = "Favourite pastime: Eating"; - public static final String VALID_TAG_HUSBAND = "husband"; - public static final String VALID_TAG_FRIEND = "friend"; + public static final String VALID_TAG_HUSBAND = "CS2103-T02"; + public static final String VALID_TAG_FRIEND = "CS2103-T01"; public static final String NAME_DESC_AMY = " " + PREFIX_NAME + VALID_NAME_AMY; public static final String NAME_DESC_BOB = " " + PREFIX_NAME + VALID_NAME_BOB; diff --git a/src/test/java/seedu/address/logic/commands/EditCommandTest.java b/src/test/java/seedu/address/logic/commands/EditCommandTest.java index 214c6c2507b..e06ab52abc0 100644 --- a/src/test/java/seedu/address/logic/commands/EditCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/EditCommandTest.java @@ -14,6 +14,7 @@ import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; + import org.junit.jupiter.api.Test; import seedu.address.commons.core.Messages; diff --git a/src/test/java/seedu/address/logic/commands/FilterCommandTest.java b/src/test/java/seedu/address/logic/commands/FilterCommandTest.java index 9982b10fb37..2158c9930d6 100644 --- a/src/test/java/seedu/address/logic/commands/FilterCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/FilterCommandTest.java @@ -65,7 +65,7 @@ public void execute_zeroKeywords_noPersonFound() { @Test public void execute_multipleKeywords_multiplePersonsFound() { String expectedMessage = String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1); - TagContainsKeywordPredicate predicate = preparePredicate("owesMoney"); + TagContainsKeywordPredicate predicate = preparePredicate("CS2103-T69"); FilterCommand command = new FilterCommand(predicate); expectedModel.updateFilteredPersonList(predicate); assertCommandSuccess(command, model, expectedMessage, expectedModel); diff --git a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java index 4256788b1a7..2867dbf32bb 100644 --- a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java +++ b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java @@ -31,8 +31,8 @@ public class ParserUtilTest { private static final String VALID_PHONE = "123456"; private static final String VALID_ADDRESS = "123 Main Street #0505"; private static final String VALID_EMAIL = "rachel@example.com"; - private static final String VALID_TAG_1 = "friend"; - private static final String VALID_TAG_2 = "neighbour"; + private static final String VALID_TAG_1 = "CS2103-T01"; + private static final String VALID_TAG_2 = "CS2103-T03"; private static final String WHITESPACE = " \t\r\n"; diff --git a/src/test/java/seedu/address/testutil/TypicalPersons.java b/src/test/java/seedu/address/testutil/TypicalPersons.java index b69b81c8e43..98e573b162a 100644 --- a/src/test/java/seedu/address/testutil/TypicalPersons.java +++ b/src/test/java/seedu/address/testutil/TypicalPersons.java @@ -26,15 +26,15 @@ public class TypicalPersons { public static final Person ALICE = new PersonBuilder().withName("Alice Pauline") .withAddress("123, Jurong West Ave 6, #08-111").withEmail("alice@example.com") .withPhone("94351253").withRemark("She likes aardvarks.") - .withTags("friends").withPosition("Professor").build(); + .withTags("CS2103-T01").withPosition("Professor").build(); public static final Person BENSON = new PersonBuilder().withName("Benson Meier") .withAddress("311, Clementi Ave 2, #02-25") .withEmail("johnd@example.com").withPhone("98765432").withRemark("He can't take beer!") - .withTags("owesMoney", "friends").withPosition("Professor").build(); + .withTags("CS2103-T69", "CS2103-T01").withPosition("Professor").build(); public static final Person CARL = new PersonBuilder().withName("Carl Kurz").withPhone("95352563") .withEmail("heinz@example.com").withAddress("wall street").withPosition("TA").build(); public static final Person DANIEL = new PersonBuilder().withName("Daniel Meier").withPhone("87652533") - .withEmail("cornelia@example.com").withAddress("10th street").withTags("friends") + .withEmail("cornelia@example.com").withAddress("10th street").withTags("CS2103-T01") .withPosition("TA").build(); public static final Person ELLE = new PersonBuilder().withName("Elle Meyer").withPhone("9482224") .withEmail("werner@example.com").withAddress("michegan ave").withPosition("TA").build(); From 4b5d8f85ca1a988ac2d62c041c820bdfad5011af Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 17:51:20 +0800 Subject: [PATCH 087/208] fix checkstyle :) --- src/test/java/seedu/address/logic/commands/EditCommandTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/seedu/address/logic/commands/EditCommandTest.java b/src/test/java/seedu/address/logic/commands/EditCommandTest.java index e06ab52abc0..214c6c2507b 100644 --- a/src/test/java/seedu/address/logic/commands/EditCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/EditCommandTest.java @@ -14,7 +14,6 @@ import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; - import org.junit.jupiter.api.Test; import seedu.address.commons.core.Messages; From 0d606e7ffe9497bb30399552d3c81c25c48a5ae2 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 18:18:13 +0800 Subject: [PATCH 088/208] add rename command --- .../address/logic/commands/RenameCommand.java | 6 ++++-- .../java/seedu/address/model/UserPrefs.java | 1 + .../java/seedu/address/ui/MainWindow.java | 19 +++++++++++++++---- .../logic/commands/NewBookCommandTest.java | 2 +- .../logic/commands/SwapCommandTest.java | 2 +- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/RenameCommand.java b/src/main/java/seedu/address/logic/commands/RenameCommand.java index c7c766f6088..2b52661db9f 100644 --- a/src/main/java/seedu/address/logic/commands/RenameCommand.java +++ b/src/main/java/seedu/address/logic/commands/RenameCommand.java @@ -19,10 +19,12 @@ public class RenameCommand extends Command { public static final String MESSAGE_USAGE = COMMAND_WORD + ": Renames the current folder " + "by the input string.\n" - + "Parameters: NAME (must be an alphanumeric String)"; + + "Parameters: NAME (must be an alphanumeric String with only '-' and '_' allowed)"; public static final String MESSAGE_RENAME_SUCCESS = "Renamed successfully!"; - public static final String MESSAGE_RENAME_FAILURE = "File name already exists!"; + public static final String MESSAGE_RENAME_FAILURE = "There is an error creating the file!\n" + + "The file has to be in alphanumeric format with only '-' and '_' allowed\n" + + "The file cannot be a duplicate"; private final String name; diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 8d58b27f95f..60e06611c1b 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -2,6 +2,7 @@ import static java.util.Objects.requireNonNull; +import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 719b475b785..fe3174e47be 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -16,6 +16,7 @@ import seedu.address.commons.exceptions.DataConversionException; import seedu.address.logic.Logic; import seedu.address.logic.commands.CommandResult; +import seedu.address.logic.commands.RenameCommand; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.person.Person; @@ -86,7 +87,7 @@ public Stage getPrimaryStage() { private void setAccelerators() { setAccelerator(helpMenuItem, KeyCombination.valueOf("F1")); setAccelerator(swapBook, KeyCombination.valueOf("Shift+Tab")); - setAccelerator(swapBook, KeyCombination.valueOf("Ctrl+Shift+N")); + setAccelerator(newBook, KeyCombination.valueOf("Ctrl+Shift+N")); } /** @@ -151,6 +152,14 @@ private void setWindowDefaultSize(GuiSettings guiSettings) { } } + /** + * Resets what the status bar shows. + */ + public void refreshStatusBar() { + StatusBarFooter statusBarFooter = new StatusBarFooter(logic.getAddressBookFilePath()); + statusbarPlaceholder.getChildren().set(0, statusBarFooter.getRoot()); + } + /** * Opens the help window in a new browser window */ @@ -184,9 +193,7 @@ private void handleNewBook() { @FXML private void handleSwap() { logic.swapAddressBook(); - StatusBarFooter statusBarFooter = new StatusBarFooter(logic.getAddressBookFilePath()); - statusbarPlaceholder.getChildren().set(0, statusBarFooter.getRoot()); - statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot()); + refreshStatusBar(); } /** @@ -230,6 +237,10 @@ private CommandResult executeCommand(String commandText) throws CommandException handleNewBook(); } + if (commandResult.getFeedbackToUser().equals(RenameCommand.MESSAGE_RENAME_SUCCESS)) { + refreshStatusBar(); + } + if (commandResult.isSwap()) { handleSwap(); } diff --git a/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java b/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java index 14cbe939be7..1054314afad 100644 --- a/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/NewBookCommandTest.java @@ -13,7 +13,7 @@ public class NewBookCommandTest { private Model expectedModel = new ModelManager(); @Test - public void execute_help_success() { + public void execute_newBook_success() { CommandResult expectedCommandResult = new CommandResult(MESSAGE_NEW_BOOK_ACKNOWLEDGEMENT, null, false, true, false, false); assertCommandSuccess(new NewBookCommand(), model, expectedCommandResult, expectedModel); diff --git a/src/test/java/seedu/address/logic/commands/SwapCommandTest.java b/src/test/java/seedu/address/logic/commands/SwapCommandTest.java index 4438e423c06..2a5710a696d 100644 --- a/src/test/java/seedu/address/logic/commands/SwapCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/SwapCommandTest.java @@ -13,7 +13,7 @@ public class SwapCommandTest { private Model expectedModel = new ModelManager(); @Test - public void execute_help_success() { + public void execute_swap_success() { CommandResult expectedCommandResult = new CommandResult(MESSAGE_SWAP_ACKNOWLEDGEMENT, null, false, false, true, false); assertCommandSuccess(new SwapCommand(), model, expectedCommandResult, expectedModel); From b5e6c12c5a4776939382a84e7fd53fe2e7245da2 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 18:22:56 +0800 Subject: [PATCH 089/208] fix checkstyle --- src/main/java/seedu/address/logic/LogicManager.java | 1 - .../java/seedu/address/logic/commands/RenameCommand.java | 4 ---- src/main/java/seedu/address/logic/parser/ParserUtil.java | 8 ++++---- src/main/java/seedu/address/model/UserPrefs.java | 3 --- .../java/seedu/address/logic/commands/AddCommandTest.java | 5 +++++ 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index a471139f911..171e2c98a03 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -1,6 +1,5 @@ package seedu.address.logic; -import java.io.FileWriter; import java.io.IOException; import java.nio.file.Path; import java.util.Optional; diff --git a/src/main/java/seedu/address/logic/commands/RenameCommand.java b/src/main/java/seedu/address/logic/commands/RenameCommand.java index 2b52661db9f..e7f984af50a 100644 --- a/src/main/java/seedu/address/logic/commands/RenameCommand.java +++ b/src/main/java/seedu/address/logic/commands/RenameCommand.java @@ -3,13 +3,9 @@ import static java.util.Objects.requireNonNull; import java.io.IOException; -import java.util.List; -import seedu.address.commons.core.Messages; -import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; -import seedu.address.model.person.Person; /** * Renames the currently stored folder name to a new name diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index ee7be7889e3..be0f69a8131 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -142,11 +142,11 @@ public static Set parseTags(Collection tags) throws ParseException */ public static String parseRename(String newName) throws ParseException { requireNonNull(newName); - String REGEX_PATTERN = "^[A-za-z0-9-_]{1,255}$"; - String MESSAGE_CONSTRAINTS = "File name is limited to alphanumeric characters, '-' and '_'"; + String regexPattern = "^[A-za-z0-9-_]{1,255}$"; + String messageConstraints = "File name is limited to alphanumeric characters, '-' and '_'"; String trimmedTag = newName.trim(); - if (!trimmedTag.matches(REGEX_PATTERN)) { - throw new ParseException(MESSAGE_CONSTRAINTS); + if (!trimmedTag.matches(regexPattern)) { + throw new ParseException(messageConstraints); } return trimmedTag; } diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 60e06611c1b..5c697b8bffe 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -2,9 +2,7 @@ import static java.util.Objects.requireNonNull; -import java.io.FileNotFoundException; import java.io.IOException; -import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -13,7 +11,6 @@ import java.util.Objects; import seedu.address.commons.core.GuiSettings; -import seedu.address.ui.ResultDisplay; /** * Represents User's preferences. diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index 702337c4f6b..13498b1c7d4 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -133,6 +133,11 @@ public Path getNextAddressBookPath() { throw new AssertionError("This method should not be called."); } + @Override + public void renameAddressBook(String newName) { + throw new AssertionError("This method should not be called."); + } + @Override public boolean addAddressBook() { throw new AssertionError("This method should not be called."); From 36d5fb39362d536c4371711ef0ad47004b7d616d Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 19:32:37 +0800 Subject: [PATCH 090/208] fix bug cannot delete file while active --- src/main/java/seedu/address/logic/Logic.java | 7 ++++ .../seedu/address/logic/LogicManager.java | 40 +++++++++++++++++-- src/main/java/seedu/address/model/Model.java | 2 + .../seedu/address/model/ModelManager.java | 6 +++ .../java/seedu/address/model/UserPrefs.java | 8 ++-- .../java/seedu/address/ui/MainWindow.java | 17 +++++++- .../logic/commands/AddCommandTest.java | 5 +++ 7 files changed, 75 insertions(+), 10 deletions(-) diff --git a/src/main/java/seedu/address/logic/Logic.java b/src/main/java/seedu/address/logic/Logic.java index 2bcb94bc705..64c436ba3eb 100644 --- a/src/main/java/seedu/address/logic/Logic.java +++ b/src/main/java/seedu/address/logic/Logic.java @@ -55,6 +55,8 @@ public interface Logic { */ void setAllAddressBookFilePath(Path[] updatedPaths); + void resetCurrentAddressBook(); + /** * Add and create a new address book */ @@ -64,4 +66,9 @@ public interface Logic { * Swaps between the address book */ void swapAddressBook(); + + /** + * Swaps to the address book + */ + void swapToAddressBook(Path nextAddressBook); } diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index 171e2c98a03..f44111c1fb5 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -89,6 +89,19 @@ public void setAllAddressBookFilePath(Path[] updatedPaths) { model.setAllAddressBookFilePath(updatedPaths); } + @Override + public void resetCurrentAddressBook() { + int index = model.getUserPrefs().getStoredIndex(); + Path newPath = model.getAllAddressBookFilePath()[index]; + model.setAddressBookFilePath(newPath); + swapToAddressBook(newPath); + } + + private void setActiveAddressBook(Path latestBook, ReadOnlyAddressBook initialData) { + storage.setAddressBook(new JsonAddressBookStorage(latestBook)); + model.setAddressBook(initialData); + } + @Override public boolean addAddressBook() throws IOException, DataConversionException { boolean result = model.addAddressBook(); @@ -99,8 +112,8 @@ public boolean addAddressBook() throws IOException, DataConversionException { Path latestBook = allBooks[allBooks.length - 1]; addressBookOptional = storage.readAddressBook(); initialData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook); - storage.setAddressBook(new JsonAddressBookStorage(latestBook)); - model.setAddressBook(initialData); + setActiveAddressBook(latestBook, initialData); + model.setStoredIndex(allBooks.length - 1); } return result; } @@ -122,7 +135,26 @@ public void swapAddressBook() { logger.warning("Problem while reading from the file. Will be starting with an empty AddressBook"); initialData = new AddressBook(); } - storage.setAddressBook(new JsonAddressBookStorage(nextAddressBook)); - model.setAddressBook(initialData); + setActiveAddressBook(nextAddressBook, initialData); + } + + @Override + public void swapToAddressBook(Path nextAddressBook) { + Optional addressBookOptional; + ReadOnlyAddressBook initialData; + try { + addressBookOptional = storage.readAddressBook(nextAddressBook); + if (!addressBookOptional.isPresent()) { + logger.info("Data file not found. Will be starting with a sample AddressBook"); + } + initialData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook); + } catch (DataConversionException e) { + logger.warning("Data file not in the correct format. Will be starting with an empty AddressBook"); + initialData = new AddressBook(); + } catch (IOException e) { + logger.warning("Problem while reading from the file. Will be starting with an empty AddressBook"); + initialData = new AddressBook(); + } + setActiveAddressBook(nextAddressBook, initialData); } } diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index ec224506ba4..3ec9f1076cf 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -53,6 +53,8 @@ public interface Model { */ void setAddressBook(ReadOnlyAddressBook addressBook); + void setStoredIndex(int index); + /** Returns all address book's paths*/ Path[] getAllAddressBookFilePath(); diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 04ba396335b..dd39a1cbcdf 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -4,6 +4,7 @@ import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.util.function.Predicate; import java.util.logging.Logger; @@ -76,6 +77,11 @@ public void setAddressBookFilePath(Path addressBookFilePath) { userPrefs.setAddressBookFilePath(addressBookFilePath); } + @Override + public void setStoredIndex(int index) { + userPrefs.setStoredIndex(index); + } + @Override public Path[] getAllAddressBookFilePath() { return userPrefs.getAllAddressBookFilePath(); diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 5c697b8bffe..922ae8b13c1 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -104,11 +104,10 @@ public boolean addAddressBook() { public void renameFile(String name) throws IOException { Path newAddressBookFilePath = Paths.get("data" , name + ".json"); Files.move(this.addressBookFilePath, newAddressBookFilePath); - Files.delete(this.addressBookFilePath); - this.addressBookFilePath = newAddressBookFilePath; - allAddressBookFilePath.set(addressBookIndex, newAddressBookFilePath); + this.allAddressBookFilePath.set(addressBookIndex, newAddressBookFilePath); } + public Path getNextAddressBookPath() { incrementIndex(); Path nextAddressBook = allAddressBookFilePath.get(addressBookIndex); @@ -125,8 +124,7 @@ public void setStoredIndex(int index) { } private void incrementIndex() { - addressBookIndex += 1; - addressBookIndex = addressBookIndex % allAddressBookFilePath.size(); + addressBookIndex = (addressBookIndex + 1) % allAddressBookFilePath.size(); } @Override diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index fe3174e47be..60d5c8caf51 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -1,6 +1,7 @@ package seedu.address.ui; import java.io.IOException; +import java.nio.file.Files; import java.util.logging.Logger; import javafx.event.ActionEvent; @@ -187,6 +188,20 @@ private void handleNewBook() { } } + /** + * Swaps between the Books + */ + @FXML + private void handleRename() { + try { + Files.delete(logic.getAddressBookFilePath()); + logic.resetCurrentAddressBook(); + refreshStatusBar(); + } catch (IOException e) { + resultDisplay.setFeedbackToUser("Sorry! Error deleting File"); + } + } + /** * Swaps between the Books */ @@ -238,7 +253,7 @@ private CommandResult executeCommand(String commandText) throws CommandException } if (commandResult.getFeedbackToUser().equals(RenameCommand.MESSAGE_RENAME_SUCCESS)) { - refreshStatusBar(); + handleRename(); } if (commandResult.isSwap()) { diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index 13498b1c7d4..d2ec50e792c 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -118,6 +118,11 @@ public void setAddressBook(ReadOnlyAddressBook newData) { throw new AssertionError("This method should not be called."); } + @Override + public void setStoredIndex(int index) { + throw new AssertionError("This method should not be called."); + } + @Override public Path[] getAllAddressBookFilePath() { throw new AssertionError("This method should not be called."); From e794269c9446cfada972357a9ff3672bd677a674 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 19:37:37 +0800 Subject: [PATCH 091/208] fix address book cannot be ran --- .../seedu/address/model/util/SampleDataUtil.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index a36633f9776..b840e15677c 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -26,22 +26,22 @@ public static Person[] getSamplePersons() { return new Person[] { new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), new Student(), new Address("Blk 30 Geylang Street 29, #06-40"), EMPTY_REMARK, - getTagSet("friends")), + getTagSet("CS2103T-T01")), new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), new TeachingAssistant(), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), EMPTY_REMARK, - getTagSet("colleagues", "friends")), + getTagSet("CS2103T-T05", "CS2103T-T01")), new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), new Professor(), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), EMPTY_REMARK, - getTagSet("neighbours")), + getTagSet("CS2103T-T10")), new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), new Student(), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), EMPTY_REMARK, - getTagSet("family")), + getTagSet("CS2103T-T12")), new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), new TeachingAssistant(), new Address("Blk 47 Tampines Street 20, #17-35"), EMPTY_REMARK, - getTagSet("classmates")), + getTagSet("CS2103T-T01")), new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), new Professor(), new Address("Blk 45 Aljunied Street 85, #11-31"), EMPTY_REMARK, - getTagSet("colleagues")) + getTagSet("CS2103T-T02")) }; } From 5cbfd52daf1095430823ea4cc4fc9e87682e5019 Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 20:05:29 +0800 Subject: [PATCH 092/208] fix adding new file sometimes does not create the file --- src/main/java/seedu/address/logic/LogicManager.java | 2 ++ src/main/java/seedu/address/model/ModelManager.java | 1 - src/main/java/seedu/address/ui/MainWindow.java | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index f44111c1fb5..11bc97c6de2 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -114,6 +114,8 @@ public boolean addAddressBook() throws IOException, DataConversionException { initialData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook); setActiveAddressBook(latestBook, initialData); model.setStoredIndex(allBooks.length - 1); + model.setAddressBookFilePath(latestBook); + storage.saveAddressBook(initialData); } return result; } diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index dd39a1cbcdf..d19e40923b8 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -4,7 +4,6 @@ import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; import java.util.function.Predicate; import java.util.logging.Logger; diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 60d5c8caf51..e5b4685b3ef 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -182,6 +182,8 @@ private void handleNewBook() { try { if (!logic.addAddressBook()) { resultDisplay.setFeedbackToUser("Maximum amount of address book created"); + } else { + refreshStatusBar(); } } catch (IOException | DataConversionException e) { resultDisplay.setFeedbackToUser("Sorry! Error creating File"); From 0bb1465552a36b50c0b39b2dec6d34b4a0cf531f Mon Sep 17 00:00:00 2001 From: KJunWei Date: Tue, 25 Oct 2022 22:01:36 +0800 Subject: [PATCH 093/208] Edit small feature in InfoDisplay.java --- src/main/java/seedu/address/ui/InfoDisplay.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/seedu/address/ui/InfoDisplay.java b/src/main/java/seedu/address/ui/InfoDisplay.java index d4a1a190bf6..6cedc8b1e2d 100644 --- a/src/main/java/seedu/address/ui/InfoDisplay.java +++ b/src/main/java/seedu/address/ui/InfoDisplay.java @@ -88,7 +88,6 @@ public void setInfo(Person person) { * Displays a Graph in a new window. */ public void displayGraph() { - System.out.println("clicked"); Stage stage = new Stage(); stage.setTitle("Grades of " + name.getText()); Group root = new Group(chart); From d533820758d9a22551cbdff89fc13f8030bc8d0e Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Tue, 25 Oct 2022 22:54:36 +0800 Subject: [PATCH 094/208] hot fix renaming same file deletes current file --- .../java/seedu/address/logic/commands/RenameCommand.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/seedu/address/logic/commands/RenameCommand.java b/src/main/java/seedu/address/logic/commands/RenameCommand.java index e7f984af50a..9d4cf29df9f 100644 --- a/src/main/java/seedu/address/logic/commands/RenameCommand.java +++ b/src/main/java/seedu/address/logic/commands/RenameCommand.java @@ -3,6 +3,8 @@ import static java.util.Objects.requireNonNull; import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; @@ -21,6 +23,7 @@ public class RenameCommand extends Command { public static final String MESSAGE_RENAME_FAILURE = "There is an error creating the file!\n" + "The file has to be in alphanumeric format with only '-' and '_' allowed\n" + "The file cannot be a duplicate"; + public static final String MESSAGE_RENAME_SAME = "They are the same name!"; private final String name; @@ -36,6 +39,10 @@ public RenameCommand(String name) { public CommandResult execute(Model model) throws CommandException { requireNonNull(model); try { + Path newAddressBookFilePath = Paths.get("data" , name + ".json"); + if (newAddressBookFilePath.equals(model.getUserPrefs().getAddressBookFilePath())) { + return new CommandResult(MESSAGE_RENAME_SAME, null, false, false, false, false); + } model.renameAddressBook(this.name); return new CommandResult(MESSAGE_RENAME_SUCCESS, null, false, false, false, false); } catch (IOException e) { From f1c723255ffb05ffb375e69f465f0ec9c0d78547 Mon Sep 17 00:00:00 2001 From: Markus Wee <77526609+yellow-294@users.noreply.github.com> Date: Wed, 26 Oct 2022 04:37:46 +0800 Subject: [PATCH 095/208] Improved Add Assignments feature Now, when new students are added to TAB after addAssignment command is run, they will automatically be instantiated with the assignments. --- src/main/java/seedu/address/Main.java | 2 + .../logic/commands/AddAssignmentsCommand.java | 30 ++++++++- .../logic/commands/AttendanceCommand.java | 2 +- .../address/logic/commands/GradeCommand.java | 2 +- .../logic/parser/AddCommandParser.java | 6 +- .../logic/parser/EditCommandParser.java | 3 +- .../address/logic/parser/ParserUtil.java | 14 +++- .../model/person/position/Position.java | 10 ++- .../model/person/position/Professor.java | 9 +++ .../model/person/position/Student.java | 65 +++++++++++++++++-- .../person/position/TeachingAssistant.java | 7 ++ .../java/seedu/address/model/tag/Tag.java | 2 + .../address/model/util/SampleDataUtil.java | 5 +- .../address/storage/JsonAdaptedPerson.java | 5 +- .../typicalPersonsAddressBook.json | 20 +++--- .../seedu/address/logic/LogicManagerTest.java | 5 +- .../logic/parser/AddCommandParserTest.java | 10 +-- .../testutil/EditPersonDescriptorBuilder.java | 2 +- .../seedu/address/testutil/PersonBuilder.java | 19 +++++- .../address/testutil/TypicalPersons.java | 21 +++--- 20 files changed, 189 insertions(+), 50 deletions(-) diff --git a/src/main/java/seedu/address/Main.java b/src/main/java/seedu/address/Main.java index 052a5068631..1a1aef768e4 100644 --- a/src/main/java/seedu/address/Main.java +++ b/src/main/java/seedu/address/Main.java @@ -18,7 +18,9 @@ * By having a separate main class (Main) that doesn't extend Application * to be the entry point of the application, we avoid this issue. */ + public class Main { + public static void main(String[] args) { Application.launch(MainApp.class, args); } diff --git a/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java b/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java index 7a06f1fdcc2..728d48df910 100644 --- a/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddAssignmentsCommand.java @@ -3,6 +3,9 @@ import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.util.List; import seedu.address.logic.commands.exceptions.CommandException; @@ -14,6 +17,7 @@ * Adds assignments to all existing students in the address book. */ public class AddAssignmentsCommand extends Command { + public static final String COMMAND_WORD = "assignments"; public static final String MESSAGE_USAGE = COMMAND_WORD @@ -42,15 +46,27 @@ public AddAssignmentsCommand(String assignments) { public CommandResult execute(Model model) throws CommandException { List lastShownList = model.getFilteredPersonList(); int numOfPeople = lastShownList.size(); - + String relativePath = "./data/"; + String txt = ".txt"; + String tag = ""; + String filePath = ""; for (int i = 0; i < numOfPeople; i++) { Person personToEdit = lastShownList.get(i); if ((personToEdit.getPosition() instanceof Student)) { + tag = personToEdit.getTags().toString(); + String[] handleTag = tag.split("-"); + String module = handleTag[0].replace("[", ""); + String filePath1 = relativePath + module + txt; + if (filePath == "") { + filePath = filePath1; + } Student currPosition = (Student) personToEdit.getPosition(); Student editedPosition = new Student(currPosition.getAttendance(), currPosition.getOverallGrade(), - currPosition.setAssignments(assignments)); + currPosition.setAssignments(assignments), filePath1); + + Person editedPerson = new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(), @@ -65,6 +81,16 @@ public CommandResult execute(Model model) throws CommandException { } + File file = new File(filePath); + + try { + FileWriter fileWriter = new FileWriter(filePath); + fileWriter.write(assignments); + fileWriter.close(); + } catch (IOException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } return new CommandResult(generateSuccessMessage()); } diff --git a/src/main/java/seedu/address/logic/commands/AttendanceCommand.java b/src/main/java/seedu/address/logic/commands/AttendanceCommand.java index e2e7830a90a..cbc16d140b0 100644 --- a/src/main/java/seedu/address/logic/commands/AttendanceCommand.java +++ b/src/main/java/seedu/address/logic/commands/AttendanceCommand.java @@ -67,7 +67,7 @@ public CommandResult execute(Model model) throws CommandException { Student currPosition = (Student) personToEdit.getPosition(); Student editedPosition = new Student(attendance, currPosition.getOverallGrade(), - currPosition.getAssignmentsList()); + currPosition.getAssignmentsList(), currPosition.getFilePath()); Person editedPerson = new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(), diff --git a/src/main/java/seedu/address/logic/commands/GradeCommand.java b/src/main/java/seedu/address/logic/commands/GradeCommand.java index 36f3ca72dbc..fa1e2630da7 100644 --- a/src/main/java/seedu/address/logic/commands/GradeCommand.java +++ b/src/main/java/seedu/address/logic/commands/GradeCommand.java @@ -73,7 +73,7 @@ public CommandResult execute(Model model) throws CommandException { Student currPosition = (Student) personToEdit.getPosition(); Student editedPosition = new Student(currPosition.getAttendance(), currPosition.updateOverallGrade(indexOfAssignment, grade), - currPosition.getAssignmentsList()); + currPosition.getAssignmentsList(), currPosition.getFilePath()); Person editedPerson = new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(), diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index c2f158f177a..bdd09d40797 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -37,7 +37,8 @@ public AddCommand parse(String args) throws ParseException { ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_POSITION, PREFIX_ADDRESS, PREFIX_TAG); - if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_POSITION, PREFIX_PHONE, PREFIX_EMAIL) + if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_POSITION, PREFIX_PHONE, PREFIX_EMAIL, + PREFIX_TAG) || !argMultimap.getPreamble().isEmpty()) { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } @@ -45,11 +46,10 @@ public AddCommand parse(String args) throws ParseException { Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); - Position position = ParserUtil.parsePosition(argMultimap.getValue(PREFIX_POSITION).get()); Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); Remark remark = new Remark(""); Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - + Position position = ParserUtil.parsePosition(argMultimap.getValue(PREFIX_POSITION).get(), tagList.toString()); Person person = new Person(name, phone, email, position, address, remark, tagList); return new AddCommand(person); diff --git a/src/main/java/seedu/address/logic/parser/EditCommandParser.java b/src/main/java/seedu/address/logic/parser/EditCommandParser.java index e15799d4f7e..bd1e6fc221c 100644 --- a/src/main/java/seedu/address/logic/parser/EditCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/EditCommandParser.java @@ -55,7 +55,8 @@ public EditCommand parse(String args) throws ParseException { editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get())); } if (argMultimap.getValue(PREFIX_POSITION).isPresent()) { - editPersonDescriptor.setPosition(ParserUtil.parsePosition(argMultimap.getValue(PREFIX_POSITION).get())); + editPersonDescriptor.setPosition(ParserUtil.parsePosition(argMultimap.getValue(PREFIX_POSITION).get(), + argMultimap.getValue(PREFIX_TAG).get())); } if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) { editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get())); diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index 19d1ca68cce..6b2d4ccfe16 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -102,12 +102,20 @@ public static Email parseEmail(String email) throws ParseException { * * @throws ParseException if the given {@code positionLine} is invalid. */ - public static Position parsePosition(String position) throws ParseException { + public static Position parsePosition(String position, String tags) throws ParseException { requireNonNull(position); + requireNonNull(tags); + + String relativePath = "./data/"; + String txt = ".txt"; + String tag = ""; + String[] handleTag = tags.split("-"); + String module = handleTag[0].replace("[", ""); + String filePath = relativePath + module + txt; if (!Position.isValidPosition(position)) { throw new ParseException(Position.MESSAGE_CONSTRAINTS); } - return Position.buildPosition(position); + return Position.buildPosition(position, filePath); } /** @@ -119,9 +127,11 @@ public static Position parsePosition(String position) throws ParseException { public static Tag parseTag(String tag) throws ParseException { requireNonNull(tag); String trimmedTag = tag.trim(); + String module = trimmedTag.split("-")[0]; if (!Tag.isValidTagName(trimmedTag)) { throw new ParseException(Tag.MESSAGE_CONSTRAINTS); } + return new Tag(trimmedTag); } diff --git a/src/main/java/seedu/address/model/person/position/Position.java b/src/main/java/seedu/address/model/person/position/Position.java index 85d017aaae1..3c9748d1306 100644 --- a/src/main/java/seedu/address/model/person/position/Position.java +++ b/src/main/java/seedu/address/model/person/position/Position.java @@ -1,5 +1,10 @@ package seedu.address.model.person.position; +import java.util.Set; + +import seedu.address.model.tag.Tag; + + /** * Represents a Person's position in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPosition(String)} @@ -43,9 +48,9 @@ public static boolean isValidPosition(String test) { * @param position A valid position. * @return The desired Position descendant */ - public static Position buildPosition(String position) { + public static Position buildPosition(String position, String filePath) { if (Positions.STUDENT.name().equalsIgnoreCase(position)) { - return new Student(); + return new Student(filePath); } else if (Positions.TA.name().equalsIgnoreCase(position)) { return new TeachingAssistant(); } else if (Positions.PROFESSOR.name().equalsIgnoreCase(position)) { @@ -65,4 +70,5 @@ public static Position buildPosition(String position) { public abstract String getDetails(); public abstract void setDetails(String details); + public abstract void setFilePath(Set modelTags); } diff --git a/src/main/java/seedu/address/model/person/position/Professor.java b/src/main/java/seedu/address/model/person/position/Professor.java index cebc9d88233..a2371460cd3 100644 --- a/src/main/java/seedu/address/model/person/position/Professor.java +++ b/src/main/java/seedu/address/model/person/position/Professor.java @@ -2,6 +2,10 @@ import static java.util.Objects.requireNonNull; +import java.util.Set; + +import seedu.address.model.tag.Tag; + /** * Represents the Professor position in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPosition(String)} @@ -82,4 +86,9 @@ public int hashcode() { public String getDetails() { return roles; } + + @Override + public void setFilePath(Set modelTags) { + + } } diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index 591566c8eca..6a50fd054b0 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -2,11 +2,19 @@ import static java.util.Objects.requireNonNull; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Scanner; +import java.util.Set; import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.person.Assignment; +import seedu.address.model.tag.Tag; /** * Represents the Student position in the address book. @@ -20,21 +28,44 @@ public class Student extends Position { public static final String ATTENDANCE_VALIDATION_REGEX = "\\d{1,3}" + "/" + "\\d{1,3}"; public static final String MESSAGE_ASSIGNMENT_INVALID = "The index of the assignment is invalid."; public static final String ASSIGNMENT_CONSTRAINTS = - "Incorrect Assignments"; + "Incorrect Assignment inputs. Please make sure your input is in the right format " + + "\n i.e. assignments assignments/ Assignment 1 w/20, Assignments 2 w/20, Finals w/60" + + "\n Please ensure that your weightages add up to 100."; private String attendance; private String overallGrade; private ArrayList assignmentsList; + private String filePath; + + /** * Creates a student and initialises their attendance to 0/0. */ - public Student() { + public Student(String filePath) { super("Student"); this.attendance = "0/0"; this.overallGrade = "0/0"; this.assignmentsList = new ArrayList<>(); - + this.filePath = filePath; + File file = new File(filePath); + String dir = System.getProperty("user.dir"); + Path path = Paths.get(dir, filePath); + + + + if (Files.exists(path)) { + try { + Scanner scanner = new Scanner(file); + if (scanner.hasNext()) { + String assignments = scanner.nextLine(); + setAssignments(assignments); + } + } catch (IOException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } + } } /** @@ -43,11 +74,12 @@ public Student() { * @param overallGrade of the student * @param assignmentsList Assignments that have been assigned to the student */ - public Student(String attendance, String overallGrade, ArrayList assignmentsList) { + public Student(String attendance, String overallGrade, ArrayList assignmentsList, String filePath) { super("Student"); this.attendance = attendance; this.overallGrade = overallGrade; this.assignmentsList = assignmentsList; + this.filePath = filePath; } public String getAttendance() { @@ -62,6 +94,26 @@ public ArrayList getAssignmentsList() { return assignmentsList; } + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + requireNonNull(filePath); + this.filePath = filePath; + } + + public void setFilePath(Set modelTags) { + requireNonNull(modelTags); + String str = modelTags.toString(); + String data = "./data/"; + String txt = ".txt"; + System.out.println(str); + String module = str.split("-")[0].replace("[", ""); + String filePath = data + module + txt; + this.filePath = filePath; + } + public void setAttendance(String attendance) { requireNonNull(attendance); this.attendance = attendance; @@ -108,6 +160,7 @@ public static boolean isValidAssignments(String test) { * @return whether the given index is valid */ public boolean isValidAssignmentIndex(Index indexOfAssignment) { + assert false; return indexOfAssignment.getZeroBased() >= 0 && indexOfAssignment.getZeroBased() < assignmentsList.size(); } @@ -170,6 +223,7 @@ public String[] isolateDetails(String details) { } public ArrayList setAssignments(String assignments) { + String[] splitStr = assignments.split(", "); int len = splitStr.length; if (assignmentsList.size() > 0) { @@ -227,7 +281,8 @@ public void addAssignments(Assignment assignment) { @Override public String toShow() { return "Attendance: " + attendance + "\n" - + "Grade: " + overallGrade; + + "Grade: " + overallGrade + + "\nAssignments: " + assignmentsList.toString(); } @Override diff --git a/src/main/java/seedu/address/model/person/position/TeachingAssistant.java b/src/main/java/seedu/address/model/person/position/TeachingAssistant.java index 6c7bfa3d511..2b51497ccad 100644 --- a/src/main/java/seedu/address/model/person/position/TeachingAssistant.java +++ b/src/main/java/seedu/address/model/person/position/TeachingAssistant.java @@ -2,6 +2,10 @@ import static java.util.Objects.requireNonNull; +import java.util.Set; + +import seedu.address.model.tag.Tag; + /** * Represents the Teaching Assistant position in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPosition(String)} @@ -82,4 +86,7 @@ public int hashcode() { public String getDetails() { return availability; } + + public void setFilePath(Set modelTags) { + } } diff --git a/src/main/java/seedu/address/model/tag/Tag.java b/src/main/java/seedu/address/model/tag/Tag.java index 5d78f8c0a6f..8dacc06b67a 100644 --- a/src/main/java/seedu/address/model/tag/Tag.java +++ b/src/main/java/seedu/address/model/tag/Tag.java @@ -11,6 +11,7 @@ public class Tag { public static final String MESSAGE_CONSTRAINTS = "Tags names should be alphanumeric " + "or in {Module}-{Tutorial Group} format"; + public static final String VALIDATION_REGEX = "^[a-zA-Z0-9]+[-][a-zA-Z0-9]+$"; // "\p{Alnum}+" public final String tagName; @@ -24,6 +25,7 @@ public Tag(String tagName) { requireNonNull(tagName); checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS); this.tagName = tagName; + String module1 = tagName.split("-")[0]; } /** diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index b840e15677c..c67b12cf3ca 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -25,7 +25,7 @@ public class SampleDataUtil { public static Person[] getSamplePersons() { return new Person[] { new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), - new Student(), new Address("Blk 30 Geylang Street 29, #06-40"), EMPTY_REMARK, + new Student("./data/CS2103T.txt"), new Address("Blk 30 Geylang Street 29, #06-40"), EMPTY_REMARK, getTagSet("CS2103T-T01")), new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), new TeachingAssistant(), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), EMPTY_REMARK, @@ -34,7 +34,8 @@ public static Person[] getSamplePersons() { new Professor(), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), EMPTY_REMARK, getTagSet("CS2103T-T10")), new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), - new Student(), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), EMPTY_REMARK, + new Student("./data/CS2103T.txt"), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), + EMPTY_REMARK, getTagSet("CS2103T-T12")), new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), new TeachingAssistant(), new Address("Blk 47 Tampines Street 20, #17-35"), EMPTY_REMARK, diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java index 50ab554d222..06d150f4942 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java @@ -115,7 +115,7 @@ public Person toModelType() throws IllegalValueException { if (!Position.isValidPosition(position)) { throw new IllegalValueException(Position.MESSAGE_CONSTRAINTS); } - final Position modelPosition = Position.buildPosition(position); + final Position modelPosition = Position.buildPosition(position, tagged.toString()); if (address == null) { throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, @@ -135,9 +135,10 @@ public Person toModelType() throws IllegalValueException { if (details == null) { throw new IllegalValueException(Position.DETAILS_MESSAGE_CONSTRAINTS); } - modelPosition.setDetails(details); final Set modelTags = new HashSet<>(personTags); + modelPosition.setDetails(details); + modelPosition.setFilePath(modelTags); return new Person(modelName, modelPhone, modelEmail, modelPosition, modelAddress, modelRemark, modelTags); } diff --git a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json index 509358f40b7..7df50051ada 100644 --- a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json @@ -13,11 +13,11 @@ "name" : "Benson Meier", "phone" : "98765432", "email" : "johnd@example.com", - "position" : "Student", + "position" : "TA", "address" : "311, Clementi Ave 2, #02-25", "remark": "", - "details": "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", - "tagged" : [ "CS2103-T69", "CS2103-T01" ] + "details": "Available", + "tagged" : [ "CS2103-T69" ] }, { "name" : "Carl Kurz", "phone" : "95352563", @@ -26,7 +26,7 @@ "address" : "wall street", "remark": "", "details": "Coordinator", - "tagged" : [ ] + "tagged" : [ "CS2103-T01" ] }, { "name" : "Daniel Meier", "phone" : "87652533", @@ -40,11 +40,11 @@ "name" : "Elle Meyer", "phone" : "9482224", "email" : "werner@example.com", - "position" : "Student", + "position" : "TA", "address" : "michegan ave", "remark": "", - "details": "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", - "tagged" : [ ] + "details": "Unavailabe", + "tagged" : [ "CS2103-T01" ] }, { "name" : "Fiona Kunz", "phone" : "9482427", @@ -52,8 +52,8 @@ "position" : "Professor", "address" : "little tokyo", "remark": "", - "details": "", - "tagged" : [ ] + "details": "Coordinator", + "tagged" : [ "CS2103-T01" ] }, { "name" : "George Best", "phone" : "9482442", @@ -62,6 +62,6 @@ "address" : "4th street", "remark": "", "details": "Unavailable", - "tagged" : [ ] + "tagged" : [ "CS2103-T01" ] } ] } diff --git a/src/test/java/seedu/address/logic/LogicManagerTest.java b/src/test/java/seedu/address/logic/LogicManagerTest.java index b41e93e24e2..164c75730b6 100644 --- a/src/test/java/seedu/address/logic/LogicManagerTest.java +++ b/src/test/java/seedu/address/logic/LogicManagerTest.java @@ -8,6 +8,7 @@ import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY; import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY; import static seedu.address.logic.commands.CommandTestUtil.POSITION_DESC_AMY; +import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND; import static seedu.address.testutil.Assert.assertThrows; import static seedu.address.testutil.TypicalPersons.AMY; @@ -81,8 +82,8 @@ public void execute_storageThrowsIoException_throwsCommandException() { // Execute add command String addCommand = AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY - + POSITION_DESC_AMY + ADDRESS_DESC_AMY; - Person expectedPerson = new PersonBuilder(AMY).withTags().build(); + + POSITION_DESC_AMY + ADDRESS_DESC_AMY + TAG_DESC_FRIEND; + Person expectedPerson = new PersonBuilder(AMY).build(); ModelManager expectedModel = new ModelManager(); expectedModel.addPerson(expectedPerson); String expectedMessage = LogicManager.FILE_OPS_ERROR_MESSAGE + DUMMY_IO_EXCEPTION; diff --git a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java index 8a7fff732b3..63ccd498c3e 100644 --- a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java @@ -80,9 +80,9 @@ public void parse_allFieldsPresent_success() { @Test public void parse_optionalFieldsMissing_success() { // zero tags - Person expectedPerson = new PersonBuilder(AMY).withTags().build(); + Person expectedPerson = new PersonBuilder(AMY).build(); assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + POSITION_DESC_AMY - + ADDRESS_DESC_AMY, new AddCommand(expectedPerson)); + + ADDRESS_DESC_AMY + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); } @Test @@ -113,7 +113,7 @@ public void parse_compulsoryFieldMissing_failure() { @Test public void parse_invalidValue_failure() { // invalid name - assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + POSITION_DESC_BOB + assertParseFailure(parser, INVALID_NAME_DESC + INVALID_PHONE_DESC + EMAIL_DESC_BOB + POSITION_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS); // invalid phone @@ -134,11 +134,11 @@ public void parse_invalidValue_failure() { // two invalid values, only first invalid value reported assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + POSITION_DESC_BOB - + INVALID_ADDRESS_DESC, Name.MESSAGE_CONSTRAINTS); + + INVALID_ADDRESS_DESC + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS); // non-empty preamble assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB - + POSITION_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, + + POSITION_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } } diff --git a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java b/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java index ab13f4aea1d..3fc83337a60 100644 --- a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java +++ b/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java @@ -69,7 +69,7 @@ public EditPersonDescriptorBuilder withEmail(String email) { * Sets the {@code Position} of the {@code EditPersonDescriptor} that we are building. */ public EditPersonDescriptorBuilder withPosition(String position) { - descriptor.setPosition(Position.buildPosition(position)); + descriptor.setPosition(Position.buildPosition(position, "./data/CS2103T.txt")); return this; } diff --git a/src/test/java/seedu/address/testutil/PersonBuilder.java b/src/test/java/seedu/address/testutil/PersonBuilder.java index 0c048fc44a6..18c0110cd96 100644 --- a/src/test/java/seedu/address/testutil/PersonBuilder.java +++ b/src/test/java/seedu/address/testutil/PersonBuilder.java @@ -21,15 +21,18 @@ public class PersonBuilder { public static final String DEFAULT_NAME = "Amy Bee"; public static final String DEFAULT_PHONE = "85355255"; public static final String DEFAULT_EMAIL = "amy@gmail.com"; - public static final String DEFAULT_POSITION = "Student"; + public static final String DEFAULT_POSITION = "TA"; public static final String DEFAULT_ADDRESS = "123, Jurong West Ave 6, #08-111"; + public static final String DEFAULT_FILE_PATH = "./data/CS2103.txt"; public static final String DEFAULT_REMARK = "She likes aardvarks."; + public static final String DEFAULT_TAG = "CS2103T-T17"; private Name name; private Phone phone; private Email email; private Position position; + private String details; private Address address; private Remark remark; @@ -42,10 +45,12 @@ public PersonBuilder() { name = new Name(DEFAULT_NAME); phone = new Phone(DEFAULT_PHONE); email = new Email(DEFAULT_EMAIL); - position = Position.buildPosition(DEFAULT_POSITION); + position = Position.buildPosition(DEFAULT_POSITION, DEFAULT_FILE_PATH); + details = "Available"; address = new Address(DEFAULT_ADDRESS); remark = new Remark(DEFAULT_REMARK); tags = new HashSet<>(); + tags.add(new Tag(DEFAULT_TAG)); } /** @@ -56,6 +61,7 @@ public PersonBuilder(Person personToCopy) { phone = personToCopy.getPhone(); email = personToCopy.getEmail(); position = personToCopy.getPosition(); + details = position.getDetails(); address = personToCopy.getAddress(); remark = personToCopy.getRemark(); tags = new HashSet<>(personToCopy.getTags()); @@ -101,6 +107,13 @@ public PersonBuilder withEmail(String email) { return this; } + /** + * Sets the {@code Details} of the {@code Person} that we are building. + */ + public PersonBuilder withDetails(String details) { + this.details = details; + return this; + } /** * Sets the {@code Remark} of the {@code Person} that we are building. */ @@ -113,7 +126,7 @@ public PersonBuilder withRemark(String remark) { * Sets the {@code Position} of the {@code Person} that we are building. */ public PersonBuilder withPosition(String position) { - this.position = Position.buildPosition(position); + this.position = Position.buildPosition(position, DEFAULT_FILE_PATH); return this; } diff --git a/src/test/java/seedu/address/testutil/TypicalPersons.java b/src/test/java/seedu/address/testutil/TypicalPersons.java index 98e573b162a..d38cff6599a 100644 --- a/src/test/java/seedu/address/testutil/TypicalPersons.java +++ b/src/test/java/seedu/address/testutil/TypicalPersons.java @@ -8,6 +8,7 @@ import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY; import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.address.logic.commands.CommandTestUtil.VALID_POSITION_AMY; import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; @@ -26,22 +27,26 @@ public class TypicalPersons { public static final Person ALICE = new PersonBuilder().withName("Alice Pauline") .withAddress("123, Jurong West Ave 6, #08-111").withEmail("alice@example.com") .withPhone("94351253").withRemark("She likes aardvarks.") - .withTags("CS2103-T01").withPosition("Professor").build(); + .withDetails("Available").withTags("CS2103-T01").withPosition("TA").build(); public static final Person BENSON = new PersonBuilder().withName("Benson Meier") .withAddress("311, Clementi Ave 2, #02-25") .withEmail("johnd@example.com").withPhone("98765432").withRemark("He can't take beer!") - .withTags("CS2103-T69", "CS2103-T01").withPosition("Professor").build(); + .withDetails("Available").withTags("CS2103-T69").withPosition("TA").build(); public static final Person CARL = new PersonBuilder().withName("Carl Kurz").withPhone("95352563") - .withEmail("heinz@example.com").withAddress("wall street").withPosition("TA").build(); + .withEmail("heinz@example.com").withAddress("wall street") + .withDetails("Coordinator").withTags("CS2103-T01").withPosition("Professor").build(); public static final Person DANIEL = new PersonBuilder().withName("Daniel Meier").withPhone("87652533") .withEmail("cornelia@example.com").withAddress("10th street").withTags("CS2103-T01") - .withPosition("TA").build(); + .withDetails("Unavailable").withTags("CS2103-T01").withPosition("TA").build(); public static final Person ELLE = new PersonBuilder().withName("Elle Meyer").withPhone("9482224") - .withEmail("werner@example.com").withAddress("michegan ave").withPosition("TA").build(); + .withEmail("werner@example.com").withAddress("michegan ave") + .withDetails("Unavailable").withTags("CS2103-T01").withPosition("TA").build(); public static final Person FIONA = new PersonBuilder().withName("Fiona Kunz").withPhone("9482427") - .withEmail("lydia@example.com").withAddress("little tokyo").withPosition("Student").build(); + .withEmail("lydia@example.com").withAddress("little tokyo") + .withDetails("Coordinator").withTags("CS2103-T01").withPosition("Professor").build(); public static final Person GEORGE = new PersonBuilder().withName("George Best").withPhone("9482442") - .withEmail("anna@example.com").withAddress("4th street").withPosition("Student").build(); + .withEmail("anna@example.com").withAddress("4th street") + .withDetails("Available").withTags("CS2103-T01").withPosition("TA").build(); // Manually added public static final Person HOON = new PersonBuilder().withName("Hoon Meier").withPhone("8482424") @@ -52,7 +57,7 @@ public class TypicalPersons { // Manually added - Person's details found in {@code CommandTestUtil} public static final Person AMY = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY) .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND) - .withPosition("Professor").build(); + .withPosition(VALID_POSITION_AMY).build(); public static final Person BOB = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB) .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND) .withPosition("Professor").build(); From 3d703a978169a064f4c19154e28e07d5084534ae Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Wed, 26 Oct 2022 21:28:19 +0800 Subject: [PATCH 096/208] fix unable to rename to uppercase file --- src/main/java/seedu/address/logic/commands/RenameCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/RenameCommand.java b/src/main/java/seedu/address/logic/commands/RenameCommand.java index 9d4cf29df9f..17fe6dfd160 100644 --- a/src/main/java/seedu/address/logic/commands/RenameCommand.java +++ b/src/main/java/seedu/address/logic/commands/RenameCommand.java @@ -40,7 +40,7 @@ public CommandResult execute(Model model) throws CommandException { requireNonNull(model); try { Path newAddressBookFilePath = Paths.get("data" , name + ".json"); - if (newAddressBookFilePath.equals(model.getUserPrefs().getAddressBookFilePath())) { + if (newAddressBookFilePath.toString().equals(model.getUserPrefs().getAddressBookFilePath().toString())) { return new CommandResult(MESSAGE_RENAME_SAME, null, false, false, false, false); } model.renameAddressBook(this.name); From 65c4e7a4012ac18a25909e43a8d36c3bca4f1a5e Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Wed, 26 Oct 2022 23:31:57 +0800 Subject: [PATCH 097/208] fix creating addressbooks by following internal system breaks file creation --- src/main/java/seedu/address/model/UserPrefs.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 922ae8b13c1..beaaa6d2516 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -88,7 +88,7 @@ public boolean addAddressBook() { } else { String newBookName; if (allAddressBookFilePath.size() != 0) { - newBookName = DEFAULT_ADDRESS_BOOK_NAME + allAddressBookFilePath.size() + ".json"; + newBookName = DEFAULT_ADDRESS_BOOK_NAME + System.currentTimeMillis() + ".json"; } else { newBookName = DEFAULT_ADDRESS_BOOK_NAME + ".json"; } From a1b81f1d0b3d4de720529058e0c004ba5066911f Mon Sep 17 00:00:00 2001 From: TERENCE CHONG <97284219+cxyterence@users.noreply.github.com> Date: Wed, 26 Oct 2022 23:46:20 +0800 Subject: [PATCH 098/208] Update Student.java for coding style violations --- src/main/java/seedu/address/model/person/position/Student.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/seedu/address/model/person/position/Student.java b/src/main/java/seedu/address/model/person/position/Student.java index 6c3a0c37f1b..bbfed1ed485 100644 --- a/src/main/java/seedu/address/model/person/position/Student.java +++ b/src/main/java/seedu/address/model/person/position/Student.java @@ -13,7 +13,6 @@ import java.util.Scanner; import java.util.Set; - import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.person.Assignment; From f301aa5971ef5e3a3ce886e1ff9212b29e30ee5c Mon Sep 17 00:00:00 2001 From: Guo Wei Date: Wed, 26 Oct 2022 23:54:04 +0800 Subject: [PATCH 099/208] change all files saving to lower case for simplicity --- src/main/java/seedu/address/logic/parser/ParserUtil.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index be0f69a8131..7f5d3397342 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -145,10 +145,11 @@ public static String parseRename(String newName) throws ParseException { String regexPattern = "^[A-za-z0-9-_]{1,255}$"; String messageConstraints = "File name is limited to alphanumeric characters, '-' and '_'"; String trimmedTag = newName.trim(); - if (!trimmedTag.matches(regexPattern)) { + String lowerCase = trimmedTag.toLowerCase(); + if (!lowerCase.matches(regexPattern)) { throw new ParseException(messageConstraints); } - return trimmedTag; + return lowerCase; } } From f3e24330c5edf14e0802455f5be35565a71691e0 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Thu, 27 Oct 2022 00:32:59 +0800 Subject: [PATCH 100/208] Edit Person.java so Student class can only have 1 tag --- src/main/java/seedu/address/model/person/Person.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/person/Person.java b/src/main/java/seedu/address/model/person/Person.java index c38a4f32fe5..c98c63c54b6 100644 --- a/src/main/java/seedu/address/model/person/Person.java +++ b/src/main/java/seedu/address/model/person/Person.java @@ -8,6 +8,7 @@ import java.util.Set; import seedu.address.model.person.position.Position; +import seedu.address.model.person.position.Student; import seedu.address.model.tag.Tag; /** @@ -40,7 +41,11 @@ public Person(Name name, Phone phone, Email email, Position position, Address ad this.position = position; this.address = address; this.remark = remark; - this.tags.addAll(tags); + if (position instanceof Student) { + this.tags.add(tags.iterator().next()); + } else { + this.tags.addAll(tags); + } } public Name getName() { From e8a477305f0f67e90b77388526eb763fe3fc5fe7 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Thu, 27 Oct 2022 00:38:24 +0800 Subject: [PATCH 101/208] Add colour changes to main UI --- src/main/resources/view/DarkTheme.css | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/resources/view/DarkTheme.css b/src/main/resources/view/DarkTheme.css index 36e6b001cd8..33e7d69110a 100644 --- a/src/main/resources/view/DarkTheme.css +++ b/src/main/resources/view/DarkTheme.css @@ -1,3 +1,9 @@ +.test { + -fx-background-color: derive(#8695b7, 20%) +} + +/* +*/ .background { -fx-background-color: derive(#1d1d1d, 20%); background-color: #383838; /* Used in the default.html file */ @@ -90,7 +96,7 @@ .list-view { -fx-background-insets: 0; -fx-padding: 0; - -fx-background-color: derive(#1d1d1d, 20%); + -fx-background-color: derive(#d7dce2, 20%); } .list-cell { @@ -100,11 +106,11 @@ } .list-cell:filled:even { - -fx-background-color: #3c3e3f; + -fx-background-color: #6679a4; } .list-cell:filled:odd { - -fx-background-color: #515658; + -fx-background-color: #8695b7; } .list-cell:filled:selected { @@ -133,13 +139,13 @@ } .stack-pane { - -fx-background-color: derive(#1d1d1d, 20%); + -fx-background-color: derive(#1d2433, 20%); } .pane-with-border { - -fx-background-color: derive(#1d1d1d, 20%); - -fx-border-color: derive(#1d1d1d, 10%); - -fx-border-top-width: 1px; + -fx-background-color: derive(#2f3b54, 20%); + -fx-border-color: derive(#2f3b54, 10%); + -fx-border-top-width: 0px; } .status-bar { @@ -193,7 +199,7 @@ } .menu-bar { - -fx-background-color: derive(#1d1d1d, 20%); + -fx-background-color: derive(#2f3b54, 20%); } .menu-bar .label { @@ -333,7 +339,7 @@ } #resultDisplay .content { - -fx-background-color: transparent, #383838, transparent, #383838; + -fx-background-color: transparent, #6679a4, transparent, #6679a4; -fx-background-radius: 0; } From 2b3b181589298b72e440758c188e7e56da40e7c8 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Thu, 27 Oct 2022 01:03:25 +0800 Subject: [PATCH 102/208] Add word colour changes --- src/main/resources/view/DarkTheme.css | 22 +++++++++++++++++++++- src/main/resources/view/InfoDisplay.fxml | 16 ++++++++-------- src/main/resources/view/MainWindow.fxml | 2 +- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/resources/view/DarkTheme.css b/src/main/resources/view/DarkTheme.css index 33e7d69110a..66e14280378 100644 --- a/src/main/resources/view/DarkTheme.css +++ b/src/main/resources/view/DarkTheme.css @@ -23,6 +23,13 @@ -fx-opacity: 1; } +.label-blue { + -fx-font-size: 11pt; + -fx-font-family: "Segoe UI Semibold"; + -fx-text-fill: #2f3b54; + -fx-opacity: 1; +} + .label-header { -fx-font-size: 32pt; -fx-font-family: "Segoe UI Light"; @@ -30,6 +37,13 @@ -fx-opacity: 1; } +.label-header-blue { + -fx-font-size: 32pt; + -fx-font-family: "Segoe UI Light"; + -fx-text-fill: #2f3b54; + -fx-opacity: 1; +} + .text-field { -fx-font-size: 12pt; -fx-font-family: "Segoe UI Semibold"; @@ -83,7 +97,7 @@ } .split-pane:horizontal .split-pane-divider { - -fx-background-color: derive(#1d1d1d, 20%); + -fx-background-color: derive(#d7dce2, 20%); -fx-border-color: transparent transparent transparent #4d4d4d; } @@ -148,6 +162,12 @@ -fx-border-top-width: 0px; } +.pane-with-border-alt { + -fx-background-color: derive(#d7dce2, 20%); + -fx-border-color: derive(#d7dce2, 10%); + -fx-border-top-width: 0px; +} + .status-bar { -fx-background-color: derive(#1d1d1d, 30%); } diff --git a/src/main/resources/view/InfoDisplay.fxml b/src/main/resources/view/InfoDisplay.fxml index 19be53abe35..9818877f26d 100644 --- a/src/main/resources/view/InfoDisplay.fxml +++ b/src/main/resources/view/InfoDisplay.fxml @@ -7,29 +7,29 @@ - + - - - + From 79f1160216baad2a8b73b1191dce45ee069a9f44 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Thu, 27 Oct 2022 01:52:11 +0800 Subject: [PATCH 103/208] Edit code so Student can only have one tag. Also fix test cases so things can work --- .../seedu/address/model/person/Person.java | 2 +- .../typicalPersonsAddressBook.json | 32 +++++++++---------- .../logic/commands/CommandTestUtil.java | 2 +- .../seedu/address/testutil/PersonBuilder.java | 7 +++- .../address/testutil/TypicalPersons.java | 2 +- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/main/java/seedu/address/model/person/Person.java b/src/main/java/seedu/address/model/person/Person.java index c98c63c54b6..f6167c4f3a0 100644 --- a/src/main/java/seedu/address/model/person/Person.java +++ b/src/main/java/seedu/address/model/person/Person.java @@ -41,7 +41,7 @@ public Person(Name name, Phone phone, Email email, Position position, Address ad this.position = position; this.address = address; this.remark = remark; - if (position instanceof Student) { + if (position instanceof Student && tags.size() != 0) { this.tags.add(tags.iterator().next()); } else { this.tags.addAll(tags); diff --git a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json index 509358f40b7..65181cc40fe 100644 --- a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json @@ -6,26 +6,26 @@ "email" : "alice@example.com", "position" : "TA", "address" : "123, Jurong West Ave 6, #08-111", - "remark": "", + "remark": "She likes aardvarks.", "details": "Available", "tagged" : [ "CS2103-T01" ] }, { "name" : "Benson Meier", "phone" : "98765432", "email" : "johnd@example.com", - "position" : "Student", + "position" : "Professor", "address" : "311, Clementi Ave 2, #02-25", - "remark": "", - "details": "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", - "tagged" : [ "CS2103-T69", "CS2103-T01" ] + "remark": "He can't take beer!", + "details": "Unassigned", + "tagged" : [ "CS2103-T69" ] }, { "name" : "Carl Kurz", "phone" : "95352563", "email" : "heinz@example.com", - "position" : "Professor", + "position" : "TA", "address" : "wall street", - "remark": "", - "details": "Coordinator", + "remark": "She likes aardvarks.", + "details": "Available", "tagged" : [ ] }, { "name" : "Daniel Meier", @@ -33,26 +33,26 @@ "email" : "cornelia@example.com", "position" : "TA", "address" : "10th street", - "remark": "", - "details": "Unavailable", + "remark": "She likes aardvarks.", + "details": "Available", "tagged" : [ "CS2103-T01" ] }, { "name" : "Elle Meyer", "phone" : "9482224", "email" : "werner@example.com", - "position" : "Student", + "position" : "TA", "address" : "michegan ave", - "remark": "", - "details": "attendance - 0/0, grade - 11/12 Assignments: [(t2 Score: 0/0 Weightage: 50%), (t3 Score: 0/0 Weightage: 50%)]", + "remark": "She likes aardvarks.", + "details": "Available", "tagged" : [ ] }, { "name" : "Fiona Kunz", "phone" : "9482427", "email" : "lydia@example.com", - "position" : "Professor", + "position" : "Student", "address" : "little tokyo", - "remark": "", - "details": "", + "remark": "She likes aardvarks.", + "details": "attendance - 0/0, grade - 0/0 Assignments: []", "tagged" : [ ] }, { "name" : "George Best", diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java index 7c3110ce574..461c533683c 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java @@ -35,7 +35,7 @@ public class CommandTestUtil { public static final String VALID_EMAIL_BOB = "bob@example.com"; public static final String VALID_POSITION_AMY = "TA"; - public static final String VALID_POSITION_BOB = "Student"; + public static final String VALID_POSITION_BOB = "Professor"; public static final String VALID_ADDRESS_AMY = "Block 312, Amy Street 1"; public static final String VALID_ADDRESS_BOB = "Block 123, Bobby Street 3"; public static final String VALID_REMARK_AMY = "Like skiing."; diff --git a/src/test/java/seedu/address/testutil/PersonBuilder.java b/src/test/java/seedu/address/testutil/PersonBuilder.java index 0c048fc44a6..32bbbb601fd 100644 --- a/src/test/java/seedu/address/testutil/PersonBuilder.java +++ b/src/test/java/seedu/address/testutil/PersonBuilder.java @@ -10,6 +10,7 @@ import seedu.address.model.person.Phone; import seedu.address.model.person.Remark; import seedu.address.model.person.position.Position; +import seedu.address.model.person.position.Student; import seedu.address.model.tag.Tag; import seedu.address.model.util.SampleDataUtil; @@ -73,7 +74,11 @@ public PersonBuilder withName(String name) { * Parses the {@code tags} into a {@code Set} and set it to the {@code Person} that we are building. */ public PersonBuilder withTags(String ... tags) { - this.tags = SampleDataUtil.getTagSet(tags); + if (position instanceof Student) { + this.tags = SampleDataUtil.getTagSet(tags[0]); + } else { + this.tags = SampleDataUtil.getTagSet(tags); + } return this; } diff --git a/src/test/java/seedu/address/testutil/TypicalPersons.java b/src/test/java/seedu/address/testutil/TypicalPersons.java index 98e573b162a..e933a59fb96 100644 --- a/src/test/java/seedu/address/testutil/TypicalPersons.java +++ b/src/test/java/seedu/address/testutil/TypicalPersons.java @@ -26,7 +26,7 @@ public class TypicalPersons { public static final Person ALICE = new PersonBuilder().withName("Alice Pauline") .withAddress("123, Jurong West Ave 6, #08-111").withEmail("alice@example.com") .withPhone("94351253").withRemark("She likes aardvarks.") - .withTags("CS2103-T01").withPosition("Professor").build(); + .withTags("CS2103-T01").withPosition("TA").build(); public static final Person BENSON = new PersonBuilder().withName("Benson Meier") .withAddress("311, Clementi Ave 2, #02-25") .withEmail("johnd@example.com").withPhone("98765432").withRemark("He can't take beer!") From b2baa749bbe5c26e970b61b446df4116187bde00 Mon Sep 17 00:00:00 2001 From: KJunWei Date: Thu, 27 Oct 2022 02:00:49 +0800 Subject: [PATCH 104/208] Enable assertions in build.gradle --- build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index 108397716bd..4db8855ad76 100644 --- a/build.gradle +++ b/build.gradle @@ -69,4 +69,8 @@ shadowJar { archiveFileName = 'addressbook.jar' } +run { + enableAssertions = true +} + defaultTasks 'clean', 'test' From 49cf8ce96a4132f5d142cd40441f155d62826501 Mon Sep 17 00:00:00 2001 From: cxyterence Date: Thu, 27 Oct 2022 02:55:11 +0800 Subject: [PATCH 105/208] Refine UI for better appearance --- .../java/seedu/address/ui/PersonCard.java | 16 ++--- src/main/resources/view/DarkTheme.css | 62 +++++++++++-------- src/main/resources/view/InfoDisplay.fxml | 2 +- src/main/resources/view/MainWindow.fxml | 4 +- src/main/resources/view/PersonListCard.fxml | 6 ++ src/main/resources/view/PersonListPanel.fxml | 2 +- src/main/resources/view/ResultDisplay.fxml | 2 +- 7 files changed, 53 insertions(+), 41 deletions(-) diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java index 50639766c17..4f0834c4e5c 100644 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ b/src/main/java/seedu/address/ui/PersonCard.java @@ -1,7 +1,10 @@ package seedu.address.ui; +import java.util.Comparator; + import javafx.fxml.FXML; import javafx.scene.control.Label; +import javafx.scene.layout.FlowPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Region; import seedu.address.model.person.Person; @@ -31,6 +34,8 @@ public class PersonCard extends UiPart { private Label id; @FXML private Label position; + @FXML + private FlowPane tags; /** * Creates a {@code PersonCode} with the given {@code Person} and index to display. @@ -41,17 +46,8 @@ public PersonCard(Person person, int displayedIndex) { id.setText(displayedIndex + ". "); name.setText(person.getName().fullName); position.setText(person.getPosition().value); - - /* - phone.setText(person.getPhone().value); - address.setText(person.getAddress().value); - remark.setText(person.getRemark().value); - email.setText(person.getEmail().value); - - person.getTags().stream() - .sorted(Comparator.comparing(tag -> tag.tagName)) + person.getTags().stream().sorted(Comparator.comparing(tag -> tag.tagName)) .forEach(tag -> tags.getChildren().add(new Label(tag.tagName))); - */ } @Override diff --git a/src/main/resources/view/DarkTheme.css b/src/main/resources/view/DarkTheme.css index 66e14280378..0ae5b3b97da 100644 --- a/src/main/resources/view/DarkTheme.css +++ b/src/main/resources/view/DarkTheme.css @@ -1,12 +1,6 @@ -.test { - -fx-background-color: derive(#8695b7, 20%) -} - -/* -*/ .background { - -fx-background-color: derive(#1d1d1d, 20%); - background-color: #383838; /* Used in the default.html file */ + -fx-background-color: derive(#1d2433, 20%); + background-color: #1d2433; /* Used in the default.html file */ } .label { @@ -104,19 +98,22 @@ .split-pane { -fx-border-radius: 1; -fx-border-width: 1; - -fx-background-color: derive(#1d1d1d, 20%); + -fx-background-color: derive(#1d2433, 20%); } .list-view { - -fx-background-insets: 0; - -fx-padding: 0; + -fx-background-insets: 10; + -fx-padding: 10; -fx-background-color: derive(#d7dce2, 20%); } .list-cell { - -fx-label-padding: 0 0 0 0; - -fx-graphic-text-gap : 0; - -fx-padding: 0 0 0 0; + -fx-label-padding: 5 5; + -fx-graphic-text-gap : 5; + -fx-padding: 5px; + -fx-background-radius: 15px; + -fx-background-insets: 3px; + -fx-background-color: transparent; } .list-cell:filled:even { @@ -132,8 +129,9 @@ } .list-cell:filled:selected #cardPane { - -fx-border-color: #3e7b91; - -fx-border-width: 1; + -fx-border-color: transparent transparent transparent #5ccfe6; + -fx-border-width: 3; + -fx-border-radius: 10; } .list-cell .label { @@ -153,7 +151,7 @@ } .stack-pane { - -fx-background-color: derive(#1d2433, 20%); + -fx-background-color: derive(#2f3b54, 20%); } .pane-with-border { @@ -168,12 +166,23 @@ -fx-border-top-width: 0px; } +.pane-light { + -fx-background-color: derive(#d7dce2, 20%); + -fx-background-radius: 10px; + -fx-border-top-width: 0px; +} + +.pane-transparent { + -fx-background-color: transparent; + -fx-border-radius: 10; +} + .status-bar { -fx-background-color: derive(#1d1d1d, 30%); } .result-display { - -fx-background-color: transparent; + -fx-background-color: #2f3b54; -fx-font-family: "Segoe UI Light"; -fx-font-size: 13pt; -fx-text-fill: white; @@ -211,7 +220,7 @@ } .context-menu { - -fx-background-color: derive(#1d1d1d, 50%); + -fx-background-color: derive(#2f3b54, 50%); } .context-menu .label { @@ -308,11 +317,11 @@ } .scroll-bar { - -fx-background-color: derive(#1d1d1d, 20%); + -fx-background-color: transparent; } .scroll-bar .thumb { - -fx-background-color: derive(#1d1d1d, 50%); + -fx-background-color: derive(#2f3b54, 50%); -fx-background-insets: 3; } @@ -344,9 +353,10 @@ } #commandTextField { - -fx-background-color: transparent #383838 transparent #383838; + -fx-background-color: #1d2433; -fx-background-insets: 0; - -fx-border-color: #383838 #383838 #ffffff #383838; + -fx-background-radius: 15; + -fx-border-color: transparent; -fx-border-insets: 0; -fx-border-width: 1; -fx-font-family: "Segoe UI Light"; @@ -359,7 +369,7 @@ } #resultDisplay .content { - -fx-background-color: transparent, #6679a4, transparent, #6679a4; + -fx-background-color: #6679a4; -fx-background-radius: 0; } @@ -369,8 +379,8 @@ } #tags .label { - -fx-text-fill: white; - -fx-background-color: #3e7b91; + -fx-text-fill: black; + -fx-background-color: #5ccfe6; -fx-padding: 1 3 1 3; -fx-border-radius: 2; -fx-background-radius: 2; diff --git a/src/main/resources/view/InfoDisplay.fxml b/src/main/resources/view/InfoDisplay.fxml index 9818877f26d..ba5a2fcad9b 100644 --- a/src/main/resources/view/InfoDisplay.fxml +++ b/src/main/resources/view/InfoDisplay.fxml @@ -7,7 +7,7 @@ - + diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index 414e1f65de4..5eb34ee715c 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -25,7 +25,7 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/src/main/resources/view/PersonListCard.fxml b/src/main/resources/view/PersonListCard.fxml index 7d440b5801f..0da8f5493b3 100644 --- a/src/main/resources/view/PersonListCard.fxml +++ b/src/main/resources/view/PersonListCard.fxml @@ -3,6 +3,7 @@ + @@ -28,6 +29,11 @@