From dab850faac712d0edd4a9035e0034bb3667a01a3 Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sat, 6 Nov 2021 17:14:29 +0800 Subject: [PATCH 01/10] Fix adding students to group in non-existent class --- .../address/logic/commands/AddStudentToGroupCommand.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/seedu/address/logic/commands/AddStudentToGroupCommand.java b/src/main/java/seedu/address/logic/commands/AddStudentToGroupCommand.java index 85d55fad1b5..a2f9294ca5b 100644 --- a/src/main/java/seedu/address/logic/commands/AddStudentToGroupCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddStudentToGroupCommand.java @@ -1,6 +1,7 @@ package seedu.address.logic.commands; import static java.util.Objects.requireNonNull; +import static seedu.address.commons.core.Messages.MESSAGE_CLASS_DOES_NOT_EXIST; import static seedu.address.commons.core.Messages.MESSAGE_GROUP_DOES_NOT_EXIST; import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSCODE; @@ -17,6 +18,7 @@ import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; import seedu.address.model.student.Student; +import seedu.address.model.tutorialclass.TutorialClass; import seedu.address.model.tutorialgroup.TutorialGroup; @@ -62,6 +64,11 @@ public CommandResult execute(Model model) throws CommandException { throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX); } + // check if tutorial class already exists in ClassMATE + if (!model.hasTutorialClass(TutorialClass.createTestTutorialClass(toAddTutorialGroup.getClassCode()))) { + throw new CommandException(MESSAGE_CLASS_DOES_NOT_EXIST); + } + // check if tutorial group already exists in ClassMATE if (!model.hasTutorialGroup(toAddTutorialGroup)) { throw new CommandException(MESSAGE_GROUP_DOES_NOT_EXIST); From c2d4e3d3505178665ee363247111ff2614f8e03c Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sat, 6 Nov 2021 19:20:24 +0800 Subject: [PATCH 02/10] Fix editstu tutorial group bug --- src/main/java/seedu/address/logic/commands/EditCommand.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 4c26f800458..aaa038dd68a 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -113,6 +113,8 @@ private static Student createEditedStudent(Student studentToEdit, EditStudentDes Address updatedAddress = editStudentDescriptor.getAddress().orElse(studentToEdit.getAddress()); ClassCode updatedClassCode = editStudentDescriptor.getClassCode().orElse(studentToEdit.getClassCode()); Set updatedTags = editStudentDescriptor.getTags().orElse(studentToEdit.getTags()); + Set updatedTutorialGroups = editStudentDescriptor.getTutorialGroups() + .orElse(studentToEdit.getTutorialGroups()); return new Student( updatedName, @@ -122,7 +124,7 @@ private static Student createEditedStudent(Student studentToEdit, EditStudentDes updatedClassCode, updatedTags, studentToEdit.getMarks(), - studentToEdit.getTutorialGroups()); + updatedTutorialGroups); } @Override @@ -171,7 +173,7 @@ public EditStudentDescriptor(EditStudentDescriptor toCopy) { setClassCode(toCopy.classCode); setTags(toCopy.tags); setMarks(toCopy.marks); - setTutorialGroups(toCopy.tutorialGroups); + setTutorialGroups(new HashSet()); } /** From f745191d84c69d737494ba33c890881925566cda Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sat, 6 Nov 2021 20:08:33 +0800 Subject: [PATCH 03/10] Rename variables and add comments --- docs/UserGuide.md | 2 +- .../logic/commands/AddGroupCommand.java | 7 ++-- .../logic/commands/DeleteGroupCommand.java | 10 ++++-- .../logic/commands/ViewStudentCommand.java | 2 +- .../logic/parser/AddGroupCommandParser.java | 3 ++ .../parser/DeleteGroupCommandParser.java | 7 ++-- .../address/logic/parser/ParserUtil.java | 9 +++--- .../UniqueTutorialClassList.java | 19 +++++++---- .../model/tutorialgroup/GroupNumber.java | 32 ++++++++++++------- .../model/tutorialgroup/GroupType.java | 14 ++++---- .../model/tutorialgroup/TutorialGroup.java | 12 ++++--- .../UniqueTutorialGroupList.java | 23 +++++++++---- .../storage/JsonAdaptedTutorialClass.java | 10 +++--- .../storage/JsonAdaptedTutorialGroup.java | 12 +++++-- .../storage/JsonSerializableStudent.java | 2 -- .../commands/DeleteGroupCommandTest.java | 2 +- .../model/tutorialgroup/GroupNumberTest.java | 3 +- .../model/tutorialgroup/GroupTypeTest.java | 6 ++-- 18 files changed, 112 insertions(+), 63 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 6aade6ef7f4..19054b3cf18 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -490,7 +490,7 @@ Only `OP1` and `OP2` are accepted as Group Types. Example: * `liststu c/G06`shows that Betsy is a student in class G06 with Index 1. - `deletesg 1 g/A c/G06 type/OP1` then removes Betsy from OP1 Group A in class G06 + `deletesg 1 gn/1 c/G06 type/OP1` then removes Betsy from OP1 Group 1 in class G06 ### Exiting the program : `exit` diff --git a/src/main/java/seedu/address/logic/commands/AddGroupCommand.java b/src/main/java/seedu/address/logic/commands/AddGroupCommand.java index a59e85c648f..3a650209394 100644 --- a/src/main/java/seedu/address/logic/commands/AddGroupCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddGroupCommand.java @@ -11,6 +11,9 @@ import seedu.address.model.tutorialclass.TutorialClass; import seedu.address.model.tutorialgroup.TutorialGroup; +/** + * Adds a tutorial group to an existing tutorial class in ClassMATE. + */ public class AddGroupCommand extends Command { public static final String COMMAND_WORD = "addcg"; @@ -31,7 +34,7 @@ public class AddGroupCommand extends Command { private final TutorialClass toAddTutorialClass; /** - * Creates an AddClassCommand to add the specified {@code TutorialGroup} + * Creates an AddGroupCommand to add the specified {@code TutorialGroup} */ public AddGroupCommand(TutorialGroup tutorialGroup) { requireNonNull(tutorialGroup); @@ -45,11 +48,11 @@ public CommandResult execute(Model model) throws CommandException { requireNonNull(model); // check if tutorial class already exists in ClassMATE - if (!model.hasTutorialClass(toAddTutorialClass)) { throw new CommandException(MESSAGE_CLASS_DOES_NOT_EXIST); } + // check if tutorial group already exists in ClassMATE if (model.hasTutorialGroup(toAdd)) { throw new CommandException(MESSAGE_DUPLICATE_GROUP); } diff --git a/src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java b/src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java index 2f180024bbc..02e253cadd3 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java @@ -12,6 +12,9 @@ import seedu.address.model.tutorialclass.TutorialClass; import seedu.address.model.tutorialgroup.TutorialGroup; +/** + * Deletes a tutorial group from an existing tutorial class in ClassMATE. + */ public class DeleteGroupCommand extends Command { public static final String COMMAND_WORD = "deletecg"; @@ -27,7 +30,7 @@ public class DeleteGroupCommand extends Command { + PREFIX_CLASSCODE + "G06 " + PREFIX_TYPE + "OP1 "; - public static final String MESSAGE_DELETE_CLASS_SUCCESS = "Deleted group: %1$s"; + public static final String MESSAGE_DELETE_GROUP_SUCCESS = "Deleted group: %1$s"; private final TutorialGroup toDelete; private final TutorialClass toDeleteTutorialClass; @@ -53,15 +56,16 @@ public CommandResult execute(Model model) throws CommandException { throw new CommandException(MESSAGE_CLASS_DOES_NOT_EXIST); } + // check if tutorial group already exists in ClassMATE if (!model.hasTutorialGroup(toDelete)) { throw new CommandException(MESSAGE_GROUP_DOES_NOT_EXIST); } model.deleteTutorialGroup(toDelete); - // rearrange tutorial groups in order after adding + // rearrange tutorial groups in order after deleting model.sortTutorialGroups(); - return new CommandResult(String.format(MESSAGE_DELETE_CLASS_SUCCESS, toDelete)); + return new CommandResult(String.format(MESSAGE_DELETE_GROUP_SUCCESS, toDelete)); } @Override diff --git a/src/main/java/seedu/address/logic/commands/ViewStudentCommand.java b/src/main/java/seedu/address/logic/commands/ViewStudentCommand.java index 0c1ac6ce62d..db2b93c9fce 100644 --- a/src/main/java/seedu/address/logic/commands/ViewStudentCommand.java +++ b/src/main/java/seedu/address/logic/commands/ViewStudentCommand.java @@ -11,7 +11,7 @@ import seedu.address.model.student.Student; /** - * Views a student identified using it's displayed index from the ClassMATE. + * Views a student identified using it's displayed index from the ClassMATE by showing a popup window. */ public class ViewStudentCommand extends Command { diff --git a/src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java b/src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java index 5551b6c7bc6..3dae18e89d0 100644 --- a/src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java @@ -14,6 +14,9 @@ import seedu.address.model.tutorialgroup.GroupType; import seedu.address.model.tutorialgroup.TutorialGroup; +/** + * Parses input arguments and creates a new AddGroupCommand object + */ public class AddGroupCommandParser implements Parser { /** diff --git a/src/main/java/seedu/address/logic/parser/DeleteGroupCommandParser.java b/src/main/java/seedu/address/logic/parser/DeleteGroupCommandParser.java index 986227e16cd..c6e198bbf26 100644 --- a/src/main/java/seedu/address/logic/parser/DeleteGroupCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/DeleteGroupCommandParser.java @@ -14,10 +14,13 @@ import seedu.address.model.tutorialgroup.GroupType; import seedu.address.model.tutorialgroup.TutorialGroup; +/** + * Parses input arguments and creates a new DeleteGroupCommand object + */ public class DeleteGroupCommandParser implements Parser { /** - * Parses the given {@code String} of arguments in the context of the AddClassCommand - * and returns an AddClassCommand object for execution. + * Parses the given {@code String} of arguments in the context of the DeleteGroupCommand + * and returns an DeleteGroupCommand object for execution. * @throws ParseException if the user input does not conform the expected format. */ public DeleteGroupCommand parse(String args) throws ParseException { diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index a13c60b04e8..ff7a79148a5 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -149,9 +149,9 @@ public static Schedule parseSchedule(String schedule) throws ParseException { } /** - * Parses a {@code String GroupName} into an {@code GroupName}. + * Parses a {@code String groupNumber} into an {@code GroupNumber}. * Leading and trailing whitespaces will be trimmed. - * @throws ParseException if the given {@code schedule} is invalid. + * @throws ParseException if the given {@code groupNumber} is invalid. */ public static GroupNumber parseGroupNumber(String groupNumber) throws ParseException { requireNonNull(groupNumber); @@ -163,9 +163,10 @@ public static GroupNumber parseGroupNumber(String groupNumber) throws ParseExcep } /** - * Parses a {@code String GroupName} into an {@code GroupName}. + * Parses a {@code String groupType} into an {@code GrougType}. * Leading and trailing whitespaces will be trimmed. - * @throws ParseException if the given {@code schedule} is invalid. + * Letters are set to uppercase. + * @throws ParseException if the given {@code groupType} is invalid. */ public static GroupType parseGroupType(String groupType) throws ParseException { requireNonNull(groupType); diff --git a/src/main/java/seedu/address/model/tutorialclass/UniqueTutorialClassList.java b/src/main/java/seedu/address/model/tutorialclass/UniqueTutorialClassList.java index fa85844ba71..2e69435b2c9 100644 --- a/src/main/java/seedu/address/model/tutorialclass/UniqueTutorialClassList.java +++ b/src/main/java/seedu/address/model/tutorialclass/UniqueTutorialClassList.java @@ -46,6 +46,8 @@ public boolean contains(TutorialClass toCheck) { */ public boolean contains(TutorialGroup toCheck) { requireNonNull(toCheck); + + // finds the tutorial class that the tutorial group belongs to TutorialClass toCheckTutorialClass = TutorialClass.createTestTutorialClass(toCheck.getClassCode()); Optional result = internalList.stream() .filter(toCheckTutorialClass::isSameTutorialClass).findFirst(); @@ -65,24 +67,26 @@ public void add(TutorialClass toAdd) { } /** - * Adds a tutorial group to the a class in the class list. - * The tutorial class must not already exist in the list. + * Adds a tutorial group to the a tutorial class in the tutorial class list. + * The tutorial group must not already exist in the list. */ public void add(TutorialGroup toAdd) { requireNonNull(toAdd); if (contains(toAdd)) { throw new DuplicateTutorialGroupException(); } - // creates a class with the same class code to get that class from the class list as result + + // finds the tutorial class that the tutorial group belongs to TutorialClass toCheckTutorialClass = TutorialClass.createTestTutorialClass(toAdd.getClassCode()); Optional result = internalList.stream() .filter(toCheckTutorialClass::isSameTutorialClass).findFirst(); + + // add the tutorial group to the tutorial class found result.get().addTutorialGroup(toAdd); } /** - * Adds a tutorial class to the list. - * The tutorial class must not already exist in the list. + * Sorts the tutorial groups within each tutorial class list. */ public void sort() { internalList.stream().forEach(x-> x.sortTutorialGroups()); @@ -126,10 +130,13 @@ public void remove(TutorialClass toRemove) { */ public void remove(TutorialGroup toRemove) { requireNonNull(toRemove); - // creates a class with the same class code to get that class from the class list as result + + // finds the tutorial class that the tutorial group belongs to TutorialClass toCheckTutorialClass = TutorialClass.createTestTutorialClass(toRemove.getClassCode()); Optional result = internalList.stream() .filter(toCheckTutorialClass::isSameTutorialClass).findFirst(); + + // removes the tutorial group frmo the tutorial class found result.get().removeTutorialGroup(toRemove); } diff --git a/src/main/java/seedu/address/model/tutorialgroup/GroupNumber.java b/src/main/java/seedu/address/model/tutorialgroup/GroupNumber.java index 6872330f198..40291cbe7d3 100644 --- a/src/main/java/seedu/address/model/tutorialgroup/GroupNumber.java +++ b/src/main/java/seedu/address/model/tutorialgroup/GroupNumber.java @@ -4,22 +4,25 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +/** + * Represents a TutorialGroup's number in the ClassMATE. + */ public class GroupNumber implements Comparable { - public static final String MESSAGE_CONSTRAINTS = "GroupNumber must be a single digit, and it should not be blank"; + public static final String MESSAGE_CONSTRAINTS = "Group number must be a single digit, and it should not be blank"; - private static final String GROUPNUMBER_REGEX = "\\d"; + private static final String GROUP_NUMBER_REGEX = "\\d"; public final String value; /** - * Constructs an {@code GroupName}. + * Constructs an {@code GroupNumber}. * - * @param groupName A valid groupName. + * @param groupNumber A valid groupNumber. */ - public GroupNumber(String groupName) { - requireNonNull(groupName); - checkArgument(isValidGroupNumber(groupName), MESSAGE_CONSTRAINTS); - value = groupName; + public GroupNumber(String groupNumber) { + requireNonNull(groupNumber); + checkArgument(isValidGroupNumber(groupNumber), MESSAGE_CONSTRAINTS); + value = groupNumber; } /** @@ -29,11 +32,16 @@ public GroupNumber(String groupName) { * @return Validity of input GroupNumber string. */ public static boolean isValidGroupNumber(String test) { - return test.matches(GROUPNUMBER_REGEX); + return test.matches(GROUP_NUMBER_REGEX); } - private Integer parseGroupName(String groupName) { - return parseInt(groupName); + /** + * Transforms the group number from a string to its numerical value. + * + * @return Integer that represents the group. + */ + public Integer parseGroupNumber() { + return parseInt(value); } @Override @@ -55,7 +63,7 @@ public int hashCode() { @Override public int compareTo(GroupNumber groupNumber) { - return parseGroupName(this.value).compareTo(parseGroupName(groupNumber.value)); + return parseGroupNumber().compareTo(groupNumber.parseGroupNumber()); } } diff --git a/src/main/java/seedu/address/model/tutorialgroup/GroupType.java b/src/main/java/seedu/address/model/tutorialgroup/GroupType.java index 2f318d25e88..59032814602 100644 --- a/src/main/java/seedu/address/model/tutorialgroup/GroupType.java +++ b/src/main/java/seedu/address/model/tutorialgroup/GroupType.java @@ -4,6 +4,9 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +/** + * Represents a TutorialGroup's type in the ClassMATE. + */ public class GroupType implements Comparable { public static final String MESSAGE_CONSTRAINTS = "GroupType can only either be OP1 or OP2"; @@ -22,7 +25,7 @@ public GroupType (String groupType) { } /** - * Returns true if a given string is a valid name. + * Returns true if a given string is a valid groupType. */ public static boolean isValidGroupType(String test) { return test.matches(VALIDATION_REGEX); @@ -31,12 +34,11 @@ public static boolean isValidGroupType(String test) { /** * Gets the group type in terms of its number, 1 or 2. * - * @param groupType The type of the group. * @return The group type in terms of its number. */ - public static Integer parseGroupType(String groupType) { - assert groupType.length() == 3; - return parseInt(groupType.substring(2)); + public Integer parseGroupType() { + assert value.length() == 3; + return parseInt(value.substring(2)); } @Override @@ -58,7 +60,7 @@ public int hashCode() { @Override public int compareTo(GroupType groupType) { - return parseGroupType(this.value).compareTo(parseGroupType(groupType.value)); + return parseGroupType().compareTo(groupType.parseGroupType()); } } diff --git a/src/main/java/seedu/address/model/tutorialgroup/TutorialGroup.java b/src/main/java/seedu/address/model/tutorialgroup/TutorialGroup.java index 451e3a4f03a..f87ff4a64c0 100644 --- a/src/main/java/seedu/address/model/tutorialgroup/TutorialGroup.java +++ b/src/main/java/seedu/address/model/tutorialgroup/TutorialGroup.java @@ -4,6 +4,10 @@ import seedu.address.model.student.ClassCode; +/** + * Represents a Tutorial in the ClassMATE. + * Guarantees: details are present and not null, field values are validated, immutable. + */ public class TutorialGroup { private final GroupNumber groupNumber; @@ -11,8 +15,8 @@ public class TutorialGroup { private final GroupType groupType; /** - * @param groupNumber GroupName of Tutorial Group. - * @param classCode ClassCode of Tutorial Group. + * @param groupNumber GroupNumber of TutorialGroup. + * @param classCode ClassCode of TutorialGroup. */ public TutorialGroup(GroupNumber groupNumber, ClassCode classCode, GroupType groupType) { this.groupNumber = groupNumber; @@ -34,8 +38,7 @@ public GroupType getGroupType() { } /** - * Returns true if both tutorial classes have the same name. - * This defines a weaker notion of equality between two tutorial groups. + * Returns true if both tutorial groups have the same group number, class code and group type. */ public boolean isSameTutorialGroup(TutorialGroup otherGroup) { if (otherGroup == this) { @@ -46,7 +49,6 @@ public boolean isSameTutorialGroup(TutorialGroup otherGroup) { && otherGroup.getGroupNumber().equals(getGroupNumber()) && otherGroup.getClassCode().equals(getClassCode()) && otherGroup.getGroupType().equals(getGroupType()); - } @Override diff --git a/src/main/java/seedu/address/model/tutorialgroup/UniqueTutorialGroupList.java b/src/main/java/seedu/address/model/tutorialgroup/UniqueTutorialGroupList.java index c093514863d..1206167923b 100644 --- a/src/main/java/seedu/address/model/tutorialgroup/UniqueTutorialGroupList.java +++ b/src/main/java/seedu/address/model/tutorialgroup/UniqueTutorialGroupList.java @@ -1,6 +1,5 @@ package seedu.address.model.tutorialgroup; - import static java.util.Objects.requireNonNull; import java.util.Comparator; @@ -11,6 +10,18 @@ import seedu.address.model.tutorialgroup.exceptions.DuplicateTutorialGroupException; import seedu.address.model.tutorialgroup.exceptions.TutorialGroupNotFoundException; +/** + * A list of tutorial groups that enforces uniqueness between its elements and does not allow nulls. + * A tutorial group is considered unique by comparing using {@code TutorialGroup#isSameTutorialGroup(TutorialGroup)}. + * As such, adding of tutorial groups uses TutorialGroup#isSameTutorialGroup(TutorialGroup) for equality to ensure that + * the tutorial group being added is unique in terms of identity in the UniqueTutorialGroupList. + * The removal of a tutorial group also uses TutorialGroup#isSameTutorialGroup(TutorialGroup) to ensure that the + * tutorial group with all fields identical is removed. + * + * Supports a minimal set of list operations. + * + * @see TutorialGroup#isSameTutorialGroup(TutorialGroup) + */ public class UniqueTutorialGroupList implements Iterable { private final ObservableList internalList = FXCollections.observableArrayList(); @@ -26,8 +37,8 @@ public boolean contains(TutorialGroup toCheck) { } /** - * Adds a tutorial class to the list. - * The tutorial class must not already exist in the list. + * Adds a tutorial group to the list. + * The tutorial group must not already exist in the list. */ public void add(TutorialGroup toAdd) { requireNonNull(toAdd); @@ -38,7 +49,7 @@ public void add(TutorialGroup toAdd) { } /** - * Sorts the tutorial class list. + * Sorts the tutorial group list. * Sorts by ClassCode, followed by GroupType and then GroupName. */ public void sort() { @@ -50,8 +61,8 @@ public void sort() { } /** - * Removes the equivalent tutorial class from the list. - * The tutorial class must exist in the list. + * Removes the equivalent tutorial group from the list. + * The tutorial group must exist in the list. */ public void remove(TutorialGroup toRemove) { requireNonNull(toRemove); diff --git a/src/main/java/seedu/address/storage/JsonAdaptedTutorialClass.java b/src/main/java/seedu/address/storage/JsonAdaptedTutorialClass.java index 878b7993035..56dff1cbaea 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedTutorialClass.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedTutorialClass.java @@ -68,9 +68,9 @@ public JsonAdaptedTutorialClass(TutorialClass source) { * @throws IllegalValueException if there were any data constraints violated in the adapted student. */ public TutorialClass toModelType() throws IllegalValueException { - final List tutorialGroupsModel = new ArrayList<>(); + final List modelTutorialGroups = new ArrayList<>(); for (JsonAdaptedTutorialGroup tutorialGroup : tutorialGroups) { - tutorialGroupsModel.add(tutorialGroup.toModelType()); + modelTutorialGroups.add(tutorialGroup.toModelType()); } final List tutorialClassTags = new ArrayList<>(); @@ -81,8 +81,8 @@ public TutorialClass toModelType() throws IllegalValueException { if (classCode == null) { throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, String.class.getSimpleName())); } - if (!Tag.isValidTagName(classCode)) { - throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS); + if (!ClassCode.isValidClassCode(classCode)) { + throw new IllegalValueException(ClassCode.MESSAGE_CONSTRAINTS); } final ClassCode modelClassCode = new ClassCode(classCode); @@ -97,7 +97,7 @@ public TutorialClass toModelType() throws IllegalValueException { final Schedule modelSchedule = new Schedule(schedule); final Set modelTags = new HashSet<>(tutorialClassTags); - return new TutorialClass(modelClassCode, modelSchedule, tutorialGroupsModel, modelTags); + return new TutorialClass(modelClassCode, modelSchedule, modelTutorialGroups, modelTags); } } diff --git a/src/main/java/seedu/address/storage/JsonAdaptedTutorialGroup.java b/src/main/java/seedu/address/storage/JsonAdaptedTutorialGroup.java index d8e6574dbc4..9390ce806f8 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedTutorialGroup.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedTutorialGroup.java @@ -18,7 +18,7 @@ public class JsonAdaptedTutorialGroup { private final String groupType; /** - * Constructs a {@code JsonAdaptedTutorialClass} with the given student details. + * Constructs a {@code JsonAdaptedTutorialGroup} with the given tutorial group details. */ @JsonCreator public JsonAdaptedTutorialGroup(@JsonProperty("groupNumber") String groupNumber, @@ -49,8 +49,8 @@ public TutorialGroup toModelType() throws IllegalValueException { if (classCode == null) { throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, String.class.getSimpleName())); } - if (!Tag.isValidTagName(classCode)) { - throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS); + if (!ClassCode.isValidClassCode(classCode)) { + throw new IllegalValueException(ClassCode.MESSAGE_CONSTRAINTS); } final ClassCode modelClassCode = new ClassCode(classCode); @@ -59,12 +59,18 @@ public TutorialGroup toModelType() throws IllegalValueException { String.format(MISSING_FIELD_MESSAGE_FORMAT, GroupNumber.class.getSimpleName()) ); } + if (!GroupNumber.isValidGroupNumber(groupNumber)) { + throw new IllegalValueException(GroupNumber.MESSAGE_CONSTRAINTS); + } final GroupNumber modelGroupNumber = new GroupNumber(groupNumber); if (groupType == null) { throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, String.class.getSimpleName())); } + if (!GroupType.isValidGroupType(groupType)) { + throw new IllegalValueException(GroupType.MESSAGE_CONSTRAINTS); + } final GroupType modelGroupType = new GroupType(groupType); diff --git a/src/main/java/seedu/address/storage/JsonSerializableStudent.java b/src/main/java/seedu/address/storage/JsonSerializableStudent.java index 55d681e8598..5e84b989302 100644 --- a/src/main/java/seedu/address/storage/JsonSerializableStudent.java +++ b/src/main/java/seedu/address/storage/JsonSerializableStudent.java @@ -23,8 +23,6 @@ class JsonSerializableStudent { public static final String MESSAGE_DUPLICATE_STUDENT = "Students list contains duplicate student(s)."; public static final String MESSAGE_DUPLICATE_TUTORIAL_CLASS = "Tutorial Classes list contains duplicate tutorial class(es)."; - public static final String MESSAGE_DUPLICATE_TUTORIAL_GROUP = - "Tutorial Groups list contains duplicate tutorial group(s)."; private final List students = new ArrayList<>(); private final List tutorialClasses = new ArrayList<>(); diff --git a/src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java b/src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java index ad0c96c2c51..0aee1ffc375 100644 --- a/src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java @@ -33,7 +33,7 @@ public void execute_tutorialGroupDeletedByModel_deleteSuccessful() throws Except CommandResult commandResult = new DeleteGroupCommand(validGroup).execute(modelStub); - assertEquals(String.format(DeleteGroupCommand.MESSAGE_DELETE_CLASS_SUCCESS, validGroup), + assertEquals(String.format(DeleteGroupCommand.MESSAGE_DELETE_GROUP_SUCCESS, validGroup), commandResult.getFeedbackToUser()); assertEquals(Arrays.asList(), modelStub.tutorialGroupsResult); } diff --git a/src/test/java/seedu/address/model/tutorialgroup/GroupNumberTest.java b/src/test/java/seedu/address/model/tutorialgroup/GroupNumberTest.java index bacbec0e385..c533de1899a 100644 --- a/src/test/java/seedu/address/model/tutorialgroup/GroupNumberTest.java +++ b/src/test/java/seedu/address/model/tutorialgroup/GroupNumberTest.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; - public class GroupNumberTest { @Test @@ -21,7 +20,7 @@ public void constructor_invalidName_throwsIllegalArgumentException() { } @Test - public void isValidName() { + public void isValidGroupNumber() { // null group name assertThrows(NullPointerException.class, () -> GroupNumber.isValidGroupNumber(null)); diff --git a/src/test/java/seedu/address/model/tutorialgroup/GroupTypeTest.java b/src/test/java/seedu/address/model/tutorialgroup/GroupTypeTest.java index 1a5c2434f9a..fe9d0f95cb4 100644 --- a/src/test/java/seedu/address/model/tutorialgroup/GroupTypeTest.java +++ b/src/test/java/seedu/address/model/tutorialgroup/GroupTypeTest.java @@ -22,8 +22,10 @@ public void constructor_invalidName_throwsIllegalArgumentException() { @Test public void parseGroupType() { - assertEquals(1, GroupType.parseGroupType("OP1")); - assertEquals(2, GroupType.parseGroupType("OP2")); + String validGroupTypeOne = "OP1"; + String validGroupTypeTwo = "OP2"; + assertEquals(1, new GroupType(validGroupTypeOne).parseGroupType()); + assertEquals(2, new GroupType(validGroupTypeTwo).parseGroupType()); } @Test From 4c4eef1e4a36cfda276e7f0e5ece332f5970621a Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sun, 7 Nov 2021 00:37:10 +0800 Subject: [PATCH 04/10] Update AddGroupSequenceDiagram --- docs/DeveloperGuide.md | 24 +++---- docs/diagrams/AddGroupSequenceDiagram.png | Bin 73940 -> 53865 bytes docs/diagrams/AddGroupSequenceDiagram.puml | 69 ++++----------------- 3 files changed, 25 insertions(+), 68 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ff7c75d55df..82eb8b961a0 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -435,25 +435,25 @@ ClassMATE allows the user to manage information relevant to the TutorialGroup. A #### Current Implementation (Adding/removing tutorial group to tutorial class) The class `Classmate` facilitates all operations related to tutorial groups. It maintains a -`UniqueTutorialClassList` containing all tutorial classes, where each class maintains a `UniqueTutorialGroupList` containing its tutorial classes. +`UniqueTutorialClassList` containing all tutorial classes, where each class maintains a `UniqueTutorialGroupList` containing its tutorial groups. Tutorial groups are identical only if all its attributes, `GroupName`, `ClassCode` and `GroupType` are the same. -The `Classmate` contains a summary of all the logic of the interaction between tutorial group and tutorial class -adding tutorial groups to tutorial classes (e.g. `AddGroupCommand`) executed on the `UniqueTutorialGroupList`, and adding students to tutorial groups. +`Classmate` contains a summary of all the logic of the interaction between tutorial group and tutorial class such as +adding tutorial groups to tutorial classes (e.g. `AddGroupCommand`) executed on the `UniqueTutorialGroupList`. The following operations are implemented: * `Classmate#hasTutorialGroup(TutorialGroup tutorialGroup)` - Checks if tutorial group is in ClassMATE * `Classmate#addTutorialGroup(TutorialGroup tutorialGroup)` - Adds tutorial group to ClassMATE * `Classmate#removeTutorialGroup(TutorialGroup tutorialGroup)` - Deletes existing tutorial group from ClassMATE -* `UniqueTutorialClassList#contains(TutorialGroup toCheck)` - Checks if tutorial group is in any of the tutorial classes -* `UniqueTutorialClassList#add(TutorialGroup toAdd)` - Adds tutorial group to its respective class -* `TutorialClass#getTutorialGroups()` - Retrieves the list of tutorial groups within the TutorialClass -* `TutorialClass#createTestTutorialClass(ClassCode classCode)` - Creates a dummy tutorial class from the class code of the tutorial group for checking +* `UniqueTutorialClassList#contains(TutorialGroup toCheck)` - Checks if tutorial group is in any of the tutorial classes +* `UniqueTutorialClassList#add(TutorialGroup toAdd)` - Adds tutorial group to its respective class +* `TutorialClass#getTutorialGroups()` - Retrieves the list of tutorial groups within the TutorialClass +* `TutorialClass#createTestTutorialClass(ClassCode classCode)` - Creates a dummy tutorial class from the class code of the tutorial group for checking Given below is an example of how the tutorial group features can be used: Step 1. The user executes an `addcg gn/1 c/G06 type/OP1` command. The `addcg` command calls `Model#hasTutorialClass()`, -and the model component checks if the TutorialClass specified by the class code exists, then checks whether the tutorial group already exists -using `Model#hasTutorialGroup()`and calls `Model#addTutorialGroup()` if it does not. +and the model component checks if the TutorialClass specified by the class code exists and throws an exception if it does not. +It then checks whether the tutorial group already exists using `Model#hasTutorialGroup()`and calls `Model#addTutorialGroup()` if it does not. The checking of whether the tutorial class and tutorial group already exists is done as such: `Classmate` calls the `contains` method of its `UniqueTutorialClassList`. This method is overloaded to accept @@ -463,8 +463,8 @@ to retrieve the tutorial class of the tutorial group it is being added to, so th within the `UniqueTutorialClassList` and get its `UniqueTutorialGroupList` using the method `TutorialClass#getTutorialGroups()` and from there check whether the tutorial group already exists or not. -Adding of tutorial groups is similar to the checking part in that a tutorial class is created for checking and -retrieve that tutorial class from the `UniqueTutorialClassList` to add that tutorial group into its `UniqueTutorialGroupList`. +Adding of tutorial groups is similar; It again finds the tutorial class in the `UniqueTutorialClassList` using its class code +After retrieving the respective tutorial class, it can then add the tutorial group using `UniqueTutorialClassList#add(TutorialGroup toAdd)`. This modifies and saves the state of ClassMATE. @@ -483,7 +483,7 @@ The *Sequence Diagram* below summarizes the aforementioned steps. #### Aspect: Storing Tutorial Groups as lists * Alternative 1 (current choice): Storing tutorial groups in their respective tutorial classes - * Pros: Faster when performing find functions and groups are better organised. + * Pros: Faster when performing find functions such as finding tutorial groups in a particular class. Tutorials groups are also better organised. * Cons: Splitting groups based on a category makes it harder to extend to support filtering groups with a different category from what is implemented. * Alternative 2: Use a single list to store all tutorial groups. diff --git a/docs/diagrams/AddGroupSequenceDiagram.png b/docs/diagrams/AddGroupSequenceDiagram.png index 7b0dc35ae65d51d3670586d2a731d82f133c79f9..853032b9bcd0fc20e8104df172b087bbadebe23f 100644 GIT binary patch literal 53865 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�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 diff --git a/docs/diagrams/AddGroupSequenceDiagram.puml b/docs/diagrams/AddGroupSequenceDiagram.puml index 367c914037f..1e7f7960da8 100644 --- a/docs/diagrams/AddGroupSequenceDiagram.puml +++ b/docs/diagrams/AddGroupSequenceDiagram.puml @@ -1,26 +1,15 @@ @startuml !include style.puml -box Logic LOGIC_COLOR_T1 -participant AddGroupCommand as AddGroupCommand LOGIC_COLOR -participant "**r:CommandResult**" as CommandResult LOGIC_COLOR -end box - box Model MODEL_COLOR_T1 -participant "**model:ModelManager**" as ModelManager MODEL_COLOR participant "**classmate:Classmate**" as Classmate MODEL_COLOR participant "**tutorialClasses:UniqueTutorialClassList**" as UniqueTutorialClassList MODEL_COLOR participant TutorialClass as TutorialClass MODEL_COLOR participant UniqueTutorialGroupList as UniqueTutorialGroupList MODEL_COLOR end box -[-> AddGroupCommand : ""execute(m)"" -activate AddGroupCommand - -AddGroupCommand -> ModelManager : ""hasTutorialClass(tc)"" -activate ModelManager -ModelManager -> Classmate : ""hasTutorialClass(tc)"" +[-> Classmate : ""hasTutorialClass(tc)"" activate Classmate Classmate -> UniqueTutorialClassList : ""contains(tc)"" @@ -32,8 +21,9 @@ activate TutorialClass note right ""tc"" is the TutorialClass -that is to be added -to ClassMate +that the TutorialGroup +being added to ClassMate +belongs to end note TutorialClass --> UniqueTutorialClassList @@ -42,24 +32,20 @@ deactivate TutorialClass UniqueTutorialClassList --> Classmate deactivate UniqueTutorialClassList -Classmate --> ModelManager -deactivate Classmate - -ModelManager --> AddGroupCommand -deactivate - -AddGroupCommand -> ModelManager : ""hasTutorialGroup(tg)"" -activate ModelManager - -ModelManager -> Classmate : ""hasTutorialGroup(tg)"" -activate Classmate +[-> Classmate : ""hasTutorialGroup(tg)"" Classmate -> UniqueTutorialClassList : ""contains(tg)"" activate UniqueTutorialClassList UniqueTutorialClassList -> TutorialClass : ""getClassCode(tg)"" activate TutorialClass -UniqueTutorialClassList -> TutorialClass : ""createTestTutorialClass(tc)"" +UniqueTutorialClassList -> TutorialClass : ""createTestTutorialClass(cc)"" +note right +""cc"" is the ClassCode +of the TutorialClass +that the TutorialGroup is +being added to +end note UniqueTutorialClassList -> TutorialClass : ""check for matching tutorial class"" UniqueTutorialClassList -> TutorialClass : ""getTutorialGroups()"" @@ -75,17 +61,7 @@ deactivate UniqueTutorialGroupList UniqueTutorialClassList --> Classmate deactivate UniqueTutorialClassList -Classmate --> ModelManager -deactivate Classmate - -ModelManager --> AddGroupCommand -deactivate - -AddGroupCommand -> ModelManager : ""addTutorialGroup(tc)"" -activate ModelManager - -ModelManager -> Classmate : ""addTutorialGroup(tc)"" -activate Classmate +[-> Classmate : ""addTutorialGroup(tc)"" Classmate -> UniqueTutorialClassList : ""add(tg)"" activate UniqueTutorialClassList @@ -108,23 +84,4 @@ deactivate UniqueTutorialGroupList UniqueTutorialClassList --> Classmate deactivate UniqueTutorialClassList -Classmate --> ModelManager -deactivate Classmate - -ModelManager --> AddGroupCommand -deactivate - -create CommandResult -AddGroupCommand -> CommandResult -activate CommandResult - -CommandResult --> AddGroupCommand : ""r"" -deactivate CommandResult - -[<-- AddGroupCommand : ""r"" -deactivate AddGroupCommand - -AddGroupCommand -[hidden]> CommandResult -destroy AddGroupCommand - @enduml From 2164ddef7549c722872523b4ac2bee4038ec9395 Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sun, 7 Nov 2021 01:33:21 +0800 Subject: [PATCH 05/10] Update DG use cases and user stories --- docs/DeveloperGuide.md | 69 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 82eb8b961a0..1a1fdc3e4b2 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -487,7 +487,7 @@ The *Sequence Diagram* below summarizes the aforementioned steps. * Cons: Splitting groups based on a category makes it harder to extend to support filtering groups with a different category from what is implemented. * Alternative 2: Use a single list to store all tutorial groups. - * Pros: Simpler to implement, without the use of multiple lists to store tutorial groups of different types ("OP1" or "OP2"). + * Pros: Simpler to implement, easier to add or remove tutorial groups. Storing tutorial groups as arrays in JSON is less complicated. * Cons: Searching or filtering the list of tutorial groups by group types may take a longer time. @@ -530,14 +530,16 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `* * *` | user | view a student's details | easily check the details and progress of the students | | `* * *` | user | add a new class | | | `* * ` | user | add a class schedule | plan my week in advance | +| `* * *` | user | add a new tutorial group | | `* * *` | user | view a class' details | easily check the details of a particular class | | `* * *` | user | delete a student | remove entries that I no longer need | -| `* * *` | user | delete a class | remove classes that I no longer need | +| `* * *` | user | delete a class | remove classes that I no longer need +| `* * *` | user | delete a tutorial group | remove tutorial groups that I no longer need | | `* * *` | user | find a student by name | locate details of students without having to go through the entire list | | `* * *` | user | find a class by code | locate details of a class without having to go through the entire list | | `* * *` | user | view all classes | see which classes I'm taking | | `* * *` | user | view all students in a class | see the students enrolled in a particular class | -| `* *` | experienced user | add class participation details to a student | track the paricipation of each student | +| `* *` | experienced user | add class participation details to a student | track the participation of each student | | `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | | `*` | user with many students in ClassMATE | sort students by name | locate a student easily | | `*` | user with many classes in ClassMATE | sort classes by name | locate a class easily | @@ -571,6 +573,35 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case resumes at step 2. +**Use case: Edit a student** + +**MSS** + +1. User requests to list students +2. ClassMATE shows a list of students +3. User requests to edit a specific student in the list with some parameters +4. ClassMATE edits the student + + Use case ends. + +**Extensions** + +* 2a. The list is empty. + + Use case ends. + +* 3a. The given index is invalid. + + * 3a1. ClassMATE shows an error message. + + Use case resumes at step 2. + +* 3b. The given parameter to edit is a Class Code. + + * 3b1. ClassMATE removes all existing tutorial groups of the student. + + Use case resumes at step 4. + **Use case: List students** **MSS** @@ -632,6 +663,34 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case resumes at step 2. +**Use case: Add a tutorial group** + +**MSS** + +1. User requests to add a tutorial group with the given parameters, Group number, Group type and Class code. +2. ClassMATE adds the tutorial class. + + Use case ends. + +**Extensions** + +* 1a. ClassMATE detects an invalid parameter. + * 1a1. ClassMATE shows a message informing the user. + + Use case ends. + + +* 1b. The tutorial class that the tutorial group is being added to does not exists. + * 1b1. ClassMATE shows a message informing the user. + + Use case ends. + + +* 1c. The tutorial group already exists. + * 1c1. ClassMATE shows a message informing the user. + + Use case ends. + **Use case: Delete Latest Mark from Student** **MSS** @@ -684,8 +743,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * **Private student detail**: A student detail that is not meant to be shared with others * **Tutorial class**: A CS2101 tutorial class. Each student can only have up to one tutorial class * **Student**: An NUS student taking the CS2101(T) module -* **Group**: A group is a subsection of the class and contains a few students for the purpose of small activities or group project -* **Group name**: The name of a group in the CS2101 class, which is specified by a number. +* **Tutorial group**: A tutorial group is a subsection of the class and contains a few students for the purpose of small activities or group project. +* **Group number**: The number of a group in the CS2101 class, which is specified by a number. * **Class code**: The name of a typical class in for the CS2101 module. E.g. G06. * **Group type**: The type of a group in the CS2101 class, which is either OP1 or OP2. From 3ce46005e664d13e8562798854404114eed7465e Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sun, 7 Nov 2021 03:36:24 +0800 Subject: [PATCH 06/10] Update AddGroupSequenceDiagram --- docs/DeveloperGuide.md | 1 + docs/diagrams/AddGroupSequenceDiagram.puml | 72 +++++--------------- docs/diagrams/GetTutorialGroupDiagrams.puml | 31 +++++++++ docs/diagrams/GetTutorialGroups.png | Bin 0 -> 16423 bytes docs/images/AddGroupSequenceDiagram.png | Bin 73940 -> 24581 bytes docs/images/GetTutorialGroupDiagrams.png | Bin 0 -> 16420 bytes docs/images/GetTutorialGroups.png | Bin 0 -> 16420 bytes 7 files changed, 48 insertions(+), 56 deletions(-) create mode 100644 docs/diagrams/GetTutorialGroupDiagrams.puml create mode 100644 docs/diagrams/GetTutorialGroups.png create mode 100644 docs/images/GetTutorialGroupDiagrams.png create mode 100644 docs/images/GetTutorialGroups.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 1a1fdc3e4b2..33e8bc2736c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -478,6 +478,7 @@ During the parsing, a new TutorialGroup instance is created. This `TutorialGroup The *Sequence Diagram* below summarizes the aforementioned steps. ![AddGroupSequenceDiagram](images/AddGroupSequenceDiagram.png) +![GetTutorialGroupsDiagram](images/GetTutorialGroupsDiagram.png) #### Design Considerations diff --git a/docs/diagrams/AddGroupSequenceDiagram.puml b/docs/diagrams/AddGroupSequenceDiagram.puml index 1e7f7960da8..bc1450e0f82 100644 --- a/docs/diagrams/AddGroupSequenceDiagram.puml +++ b/docs/diagrams/AddGroupSequenceDiagram.puml @@ -2,22 +2,14 @@ !include style.puml box Model MODEL_COLOR_T1 -participant "**classmate:Classmate**" as Classmate MODEL_COLOR -participant "**tutorialClasses:UniqueTutorialClassList**" as UniqueTutorialClassList MODEL_COLOR -participant TutorialClass as TutorialClass MODEL_COLOR -participant UniqueTutorialGroupList as UniqueTutorialGroupList MODEL_COLOR +participant "**:UniqueTutorialClassList**" as UniqueTutorialClassList MODEL_COLOR +participant "<>\n**TutorialClass**" as StaticTutorialClass MODEL_COLOR +participant ":**TutorialClass**" as TutorialClass MODEL_COLOR +participant ":**UniqueTutorialGroupList**" as UniqueTutorialGroupList MODEL_COLOR end box -[-> Classmate : ""hasTutorialClass(tc)"" -activate Classmate - -Classmate -> UniqueTutorialClassList : ""contains(tc)"" -activate UniqueTutorialClassList - -UniqueTutorialClassList -> TutorialClass : ""check through tutorial class list"" -activate TutorialClass - +[-> UniqueTutorialClassList : ""contains(tc)"" note right ""tc"" is the TutorialClass @@ -26,62 +18,30 @@ being added to ClassMate belongs to end note -TutorialClass --> UniqueTutorialClassList -deactivate TutorialClass - -UniqueTutorialClassList --> Classmate -deactivate UniqueTutorialClassList - -[-> Classmate : ""hasTutorialGroup(tg)"" - -Classmate -> UniqueTutorialClassList : ""contains(tg)"" -activate UniqueTutorialClassList - -UniqueTutorialClassList -> TutorialClass : ""getClassCode(tg)"" -activate TutorialClass -UniqueTutorialClassList -> TutorialClass : ""createTestTutorialClass(cc)"" -note right -""cc"" is the ClassCode -of the TutorialClass -that the TutorialGroup is -being added to -end note UniqueTutorialClassList -> TutorialClass : ""check for matching tutorial class"" -UniqueTutorialClassList -> TutorialClass : ""getTutorialGroups()"" -TutorialClass --> UniqueTutorialClassList -deactivate TutorialClass +[-> UniqueTutorialClassList : ""contains(tg)"" + +ref over UniqueTutorialClassList, StaticTutorialClass, TutorialClass +get tutorial groups +end ref -UniqueTutorialClassList -> UniqueTutorialGroupList : ""check if tutorial group exists"" +UniqueTutorialClassList -> UniqueTutorialGroupList : ""contains(tg)"" activate UniqueTutorialGroupList UniqueTutorialGroupList --> UniqueTutorialClassList deactivate UniqueTutorialGroupList -UniqueTutorialClassList --> Classmate -deactivate UniqueTutorialClassList +[-> UniqueTutorialClassList : ""add(tg)"" -[-> Classmate : ""addTutorialGroup(tc)"" +ref over UniqueTutorialClassList, StaticTutorialClass, TutorialClass +get tutorial groups +end ref -Classmate -> UniqueTutorialClassList : ""add(tg)"" -activate UniqueTutorialClassList - -UniqueTutorialClassList -> TutorialClass : ""getClassCode(tg)"" -activate TutorialClass -UniqueTutorialClassList -> TutorialClass : ""createTestTutorialClass(tc)"" -UniqueTutorialClassList -> TutorialClass : ""check for matching tutorial class"" -UniqueTutorialClassList -> TutorialClass : ""getTutorialGroups()"" - -TutorialClass --> UniqueTutorialClassList -deactivate TutorialClass - -UniqueTutorialClassList -> UniqueTutorialGroupList : ""add tutorial group"" +UniqueTutorialClassList -> UniqueTutorialGroupList : ""add(tg))"" activate UniqueTutorialGroupList UniqueTutorialGroupList --> UniqueTutorialClassList deactivate UniqueTutorialGroupList -UniqueTutorialClassList --> Classmate -deactivate UniqueTutorialClassList - @enduml diff --git a/docs/diagrams/GetTutorialGroupDiagrams.puml b/docs/diagrams/GetTutorialGroupDiagrams.puml new file mode 100644 index 00000000000..1529c48ab0c --- /dev/null +++ b/docs/diagrams/GetTutorialGroupDiagrams.puml @@ -0,0 +1,31 @@ +@startuml +!include style.puml + +box Model MODEL_COLOR_T1 +participant "**tutorialClasses:UniqueTutorialClassList**" as UniqueTutorialClassList MODEL_COLOR +participant "<>\n**TutorialClass**" as StaticTutorialClass MODEL_COLOR +participant ":**TutorialClass**" as TutorialClass MODEL_COLOR +end box + +mainframe sd get tutorial groups + +UniqueTutorialClassList -> StaticTutorialClass : ""createTestTutorialClass(cc)"" +activate StaticTutorialClass +StaticTutorialClass --> UniqueTutorialClassList +deactivate StaticTutorialClass + +note right +""cc"" is the ClassCode +of the TutorialClass +that the TutorialGroup is +being added to +end note + +UniqueTutorialClassList -> TutorialClass : ""check for matching tutorial class"" +activate TutorialClass +UniqueTutorialClassList -> TutorialClass : ""getTutorialGroups()"" + +TutorialClass --> UniqueTutorialClassList +deactivate TutorialClass + +@enduml diff --git a/docs/diagrams/GetTutorialGroups.png b/docs/diagrams/GetTutorialGroups.png new file mode 100644 index 0000000000000000000000000000000000000000..b8de2dcbab6cda0a69251440a1afeebf5b4993f2 GIT binary patch literal 16423 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 literal 0 HcmV?d00001 diff --git a/docs/images/AddGroupSequenceDiagram.png b/docs/images/AddGroupSequenceDiagram.png index 7b0dc35ae65d51d3670586d2a731d82f133c79f9..f1b95aebff3656d0756b5e31b809dda4cf8d0893 100644 GIT binary patch literal 24581 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 X@6F)m6+IZpe@szcRSqR{^WpyiX9t>_ literal 73940 zcmd?RXIN8N8#aoHqM#H(7^DeEkt#}WQHl>|fvBl_p(!Gr@*50Rbsel@6f@NJ0yU zbP$j(1On1q2rblvoE@EcXWp4{-tRiscbz|H|51{~-fKPUe(w7zYZI!cqj84%JT(Oc z#Tm_C)eI;oj@MF9P^z9h3Vb56^Y9+<&m~XwJDygq5B;2MY&|J7Y+P*I?|Ir-U%2mg z;en^;LwRxWhfeogJiVNq#H?JM87|AQ19xz=zkSE^_s=Pg0Jrf?!QPp0MN8AeSSCqN z3@uYAXhljE4etFCBdh)XbK0}7Sk9;K?h4-E;n5dUx9JW$#3}T}^DSxIufaYpGO)~; z9`|XjiTbdrb2c>SR_1#v;z!w2hEW-6%0XKXi-S0p#Vp_IuUvh4BeoL~%=IF+cV@2f z^Wq(k_tww5BoY<|HpSFax`W-A?yYjC+*Uj8(LbatOTVhM{DR+JkdD?V=x*Ds0P4r| zrp%MF+YdroVmFbQFDM!`vtFAQ$+xf{+%6pM+aDGxfkVil$m~wuYj?bH*+- z*R-V!-d~(Md(|??@v_0Bw(n$zNRBtX-o|5Vip7m%ucK+~<1^?#pDuZU+88YLJ?-8= zpm>BvTtr0NIr{jV4eQQE!}k`K|f(IQ=oc;)%HQOfJY_v7#A znJ(B$MpxMR2Osn1qM?-IJu(ejeC-@@5-r^k=jnBO;;`-Y`UYHaLa?R>IS=bUqmYXE}_5>9a!4W6v2JpQ&Xo93<39y*=ChyOg6 zy{#;0KZDVhQ*++BF2%jDbjql3iofGB613ybX6mwG1Y^6rOFa{4jQG~@hH>4HqwUlq z-lgI``F3>o24v%-tfYXfid~|jAhWycFToG@x5eV4@}nJ0!{yu+r>6Z5m4wrtqzuu;VA`mkT;JV%lrvb&mNc(m#B z{VTOw_;T|+2GnDP?2rCB4^Ak(=%TRGRh{!t6HEx3xtUILT*@ZUaE86eX80k&=={Np zq3wejG0%AIHxOJ!x!>o}58TFTc$*&l>Cs@{E zPsM}1mci=rT3vzGtj^JI_)^ zd&&lUbK=So|4yzqAzlZL7AUTH>JkXPJ5kM0=mOIg%&AD;_Wgy@r3wql6oqG*Po$ov z$sRvj8R9N@iXvQqMWy`k2!G)AK=R)3A_c``3Qe`^w|y;F#!n?OHIICBqh!A0El0^r zucsIJYsO=DNZ5(BYhvek^eGiz9o%TX+QR!w>|N!|Q0~bH5gH7Cp1#_Vh7hW!Vbs(| z-8&$;JK4Df4RaDuS-qd|Mhw$ zdG9ZmoB6Lve;p+&a#8!vUoLj$7=DqzT(mboX0?x9!BVKvCx8HEef-d{oU0+0zcYc0 zlKztWK0RqpruZ4CjoA?Mdi z1m{V(t5qEiZ+4n$8^H*Ub_Gx0WmD!HvsfwVYupfB#QcFSZ1l?MH`ww)jd4A(k(MZMsI=9QoH6%B*ws`@BXUk^<8XZ?I>U!KsPh{y70K1Rw_s$kBP=8P z!Qe!?T#htptwAGA4++Q7QBYuhO?vxSG0GqH>W%4InoVmYAxc?Z@bKKMQUGnIQNRv! z;V43s6i5;_vpJIyZ&U7CC%4tia(pCqWhG-(wl`Yx2t|`tooX9u_6e__UvS`89tT?2 z{q?qn+NbBM3f_-=bFF8YCD4JoP}5Pzxo$GdRxF1ZLw8gg8f}Cu_+4;xT}p?|UiU##IifDtjve%&N9FBi=74{leZ>|5LiON84|f zhdr#z=|CT%UNUlg2gZy7rG6U(Wz4j3h_Bt13G}+|&}e3)*DdNR9vxuU0QoBCJD*N% zywW3NX0*F3K!qbZHWYve*hI^N@)=b}xmure=Nbx%rsr9wsM|L4hG~MS>z__1N=C!2 z`(~!2G?Ub5|9DRFL75;s1_>b~?+`kd3ZA;_xLh~o*Itd$j6J3fr)9Ff5eB21J=BO? zj7#O^I;@?UMcFJ>AlD5rg!c zI`uo$j?XG^%Ev%<%lY<#)%OyOHgJny>(Vx7k?QcFbH)4C+N&QHGa4jN)b&-dI|GEV zOFLCAEC5PhNnSs4z$$7!BZMEeoGtVB>ZNNa2JdVZ6pGY?C=aHi_V#Hf)ztbZDd>gw zY_G-7>b?pI#2am}Xu>RMxs+w6A?k3>K;xnWlBk*2*06OEUtpIR^dW#(vKMb(HLJYi zSihGusY@G<SOCE3OMS1HF0<3ib8Eb@4|{5QBvv8E-3!VZK;- zZ(QQ+ZElFVlFr~|9?L()Z~md_l=b?A$-+FttGSjKNrv(m&buK`f!|+T*Sq!HkcnRI z<0&Cd7S{y{g*~RIg{eu6H$5Rq0fbooMqQ$6y{+!M*ENd+RC6(sPXy$kpCkC}H$2~5 zO%pNXV&K+6l1wra>2Be;WAr^sV}EkEZ7MT!Y*Y1V^}pAe*vD3Otg%+uOb`77JV$` z?Uc{@3(oRbeL_a~GcIijbtX+lSzi02yfOT1%>Dl_jmM{~fb!IlL2W!|u3r#Ze+D`K zT%6*lhXRv?`tAIiNw*T$f_`~8Rw=bF6#n3?$>>tP7=MyC6%>T5PS;nt)BRrR{l2{81RY^3490Xg(R8_d*l(uoR;b zpY^%&gwfBV#+q1Fl_tO(v3I}S9;F>$p5MWgJqWdQ-7+^TFX0Tl;<&s`7#p)lhaGOm zsTLW1^NkD*V&X$u~>6C9qwt0~r_j*Kw%L=^iHr_>O4Zu6n}yB%9-X zXL@0LEjS!=>l}_^*Ok<;M@46*;323m4;nvMw$O@4b5;-DbP49k2@&$rjBO70LG4Z% zub0$yxHm2GLyFR`%yzD3(86Z2h||nGcuG2dB!5 zvdOvQ5zbY}afGp}X@M-KE`T>`XrFa|a(H2fwrj1`;4(QJ$(Alh7#SSAq9^0<;vLyI zger?uU|O;JXj(~KDbIB=SBQjKaU31qGW4ud;MsF>hdV=oop%S;bqlX5ciJaxB~9O2 zeO$L7insKKYU;Ow4(+OBt^Btl$R30#k8Q@bEfbJiJ?A$U2Mm3ni2Y|0GClbLbFuCC zrtytKE@|=eo|#3a?SM!60V`NskZO$}X&<;Qrc2EQ9?*3wyy82oFh&L7wW)Si1BkVq zTb6u+Ut`^u&l#%46=${cB|NHh2D`LIb|PH57;NBm7B$(M^CW--i|+)?r#eQlquPDo zJ)H`Qeq}^nP9Mx3-ehQcRJGo#QEyW7lD%rbyl1usjV{K5q5wkZ2-iS$mWH`7j94By*ZZxL}v~G$mtw_ z1TxRwN@{y!z1VhXO5F#CT!!o#LDQ`mhG<5YGP~i%_9FxWK!}Cj$J!EGfn3-8dH9dE6zzAX4Lc= zK*iZ0r{BNz3+^IWh%9;RSRbyXlX7GnW-Y{9w`eU|o!cXac)O9dmMy zB(bK?!ji_S^J?D3)jSZ+V@XJKI?Ix@MvxEkHG6O7pfPZ z={GfQy`7JbgxVZ)EcJ>aLlxjZEzlg|{N5MuNZW)Wd^?Uy{=E(SWU{DheFElv_TX+s zF^YO>d;Dn>t*NSwq;vVVSyD)XzT2hH2S_nKc!R(WVLcO#GejPwLw3-J6;<$6q}xm| z6Rpj>6XY=Z>yaoeBSJ>!!6Z8Jy%{g{%@?|3JL4}J_xA43lhC;H;A3txAn4s2-NoZm z7wTm^KaBReUHdjYp(L17SIC8gN)x{cbPO9OFLL0|@4cUF;YWIY`@-|Sg88?vL9Iq-sIkV z1}kCG;m$U|=M&JKVSwOE>Z-A|o63pu6_d;A%50DDgNKX#!=b4R_$cLlVkAeEach+F zC@*c~SE>pW+RYFUEd5Xc?ZVkyDF}z0`4+w!U~Mt9$ckT(k?DJOWrErK%^4vHHM;eFKgYwZ8*_9|aE(CN9w5KOF#eW@J zECx;x*;(B%#!Z;T0mL11JpDiVo(~f92bdjZqbrrZqj|iPHz>gI z+`x%QQ6<}F>B3Q#yk#Q8@|-f@%buS2vQ$~2*wD&Fu8uO_=>R8qx=Fqb zS~W^(m`!2m4xLSd8TAReVbgdz8`JC|g>56p$OpVl^UH;*KV&ndu5;oxuhpVVe%jwF{vvd?t z8QXKVH=1@Mc>`7+%RiN`^DQr(OyFofnNB!-H%LcnEJa~@CBnx1flw@4(7q3W?JEL% zG&w(7{uHGXQkEADA1WO2S#MV7Qe*{mFFI3Z&joMX5bhJI)VE<>Ws*}D z|9u|j*)CU|NTkQj_M=I%JeB=D9@W(Uy_WN?2c(><)C_}u;?P+yK zQFx^*16@6#m2v9$Msn_40a#+S+&8D^w&O(zixFAWn-o$Ib)+X>;XZ*11W^5|0Cm6+ z48B@4Y5=08y1EkY%*>zBBRk z9y{YXIRpyt`v5#E!PXYPBz1pTq0@5=VBsBEZ5NB%`(pW0Wh=4@`CSNc(yy=UVfP~w zqlda5nQ=9^J^X>&JUVB%ig!F-0>6LfpgU~-N1UJz+CZFNerHx6fKS*kgn#m=NX8z( zG6&~^%4-&&MpF(zQR02kb<7iyby^KqC&wIv)^<$kCW<@L=?uGY6f3t&?<{l;pPR`! z!vY&@FSTU$hVJie;$fFMH%JR#&wu3%%h$cdYmACJHwdmCly%8yI`*+NyF2bG8Yd@D~=)hab|~qDMGuOu70_<_~clywVd$sE8jdaxS9)C zY?fm$EzQ-koosvomG+oxk(n4PwKr^7E*`u#&IQL{EAxRcJ+BGKsfbf6?)K`l1!vL) zA>eqM7uad z6wxvz>JGES5Nw^B>%ka5NUgqcO_SGmKz(ww2!I~WYs`|eKX^gD)IJjgy)p06O-Qk* zQTMZ)9?DPz)VQ_q3f7~6WTj90mhXqu8+NazH(4r~<}Wm+FjpamR9mOlW{g3 z)f>w!pmPQ|@Ysj}>V^|Eq7}QF?iSTQGo}V5*Ap}dDf)y)#&b(%5za5CYyC#v@&-Y!9n7SG!Y+Nv zG&onku%W!m*=o)-F#VQG&@HbBcQRbY%l{Z!b?-!e@eq$k{MOf8h^ah<-S8~cbA zmDBW{AiIKe%YizT@n-=$a)@CC`5V#Tl0=>YCO&OUVEv?MO?B;#Wp7VIfy|yoH4{Nx z4d)NPJ3Vxlbf{`I_oQ4)^tv zNjuwN)tTkrrrv)Qx$vDHMy=((lNIZJ|P*BPpJ=Tbhu~*AzGo>xhV_ZE+iTkmesLbxbF&R zNl7|xO#+6*Rx7a}{VPhqBhFw4zj)ja#8?LiPSAHITRRpNWw$zA0FPqg%%DVe0p?{V}S6Lb1EBE z)g{hak6zDO6NWV-&k z_L!-EK%7~L#t#&IxTx)q-%lr;x&y!Q8tK{-S1(uQkFVoY3ak5i#pzB1i-^rg5oSI3 z?kpE~ybU~iYc}CvK)hQP)|Ul@cjSy_wK@aT#Jg?2k}J}aQnlVdHEe3}{9yIKwmB@_ zdZfpgy)!b-!Edv#vXuiG0=IG{Wr8a93#9t zH@d&YlAb@buq-f_hnkVGX`-pZXUtaWqbzF$yYmBb2#}m$I*zlhuV>+@gM7sYyqzu3 zS0s(8Swua|Zqlm^<~?GDc;`enUcIur(9f$;pSFqhV0B(|@(L5@-Zw_D~P;R?( zo~cG)+H_}q4-8?;D3RVK_plR`AOm7%<|TZ?2qou$q4G zO}TR^QK;2FV8SZu<@eeTP$*y~uH;E=ko*?#3MQ}|n4AhRGI3hZ6pREzg#5mlq;5%& zNvZROuF*jlo0C-0oKoa$wnxogVamB4G6^Yw4sQ`-MmwFwm|WldfYADj%ft`NWdw)T z@U0W&kxGuoNAfbU9E%z)&Vm(nfWDDI5cPi4Obh1y5wU4})|CC#vE;x3G<*xFb!}A` z++r{?i{S?{U&1n^zTD^#>pDT&OlJeL9DYkC9n|9#d@P4*c1XrWqX9Du+I3*!K>qPS z_d8w5A!Yj-Aw}_h#GOF+q1y5=1ebsZYUSz)($3UZ_=Sy`2qib+2TOwoO*d-1iFdbG zxG;}Af(vm&&U-J;nBLFhR5DKS!BF{(m3sH2)!u7V-o%7eUyZbB)vBm@Vpm!RUv5$8G}^I?t3?{tcR?A$M8O#6J88jd-J|By2T@)Mv>V1z9~2GvY%%7Va|>vcHkye_pB zlw12XR5sdsJS`lIdbD8SjgBYH=V{%Z`MPa<_(iwZeT(H92iX7fiLx8xVP@0bV*}Ey zq?Z9H{7A8lcOv3kAZ=&f1Q{`61g39WPgJ~m>BOF%#f(tY@6;4@AOepYx{r8Kn5^~mB!;;3Lyd;_d7S6yw)*adfnsDM?O%y;t#O}RHS{+xc)vi z#OwMgk>&C3q_0C7{V);`Jx(=2frMg6J=gWql=N-$W0OFJAPN+|wJ>V02SF-MY$MK8 zW8Ribh>|;RFnMvZOzFy(t)Tnik&R}xsyCIG3INdrHXlest6j#A5Cv}cfJn#m#RF-# zzXjK$E0!nIl>F$FD_29@V{yjfq&qJwg0B$o6&ZmMVuVI{U8M?p9Htg1-N<0RatC@1 zp1%kpwE_5x5DdOqS>xH1A26Mn;BfP^CDtzF}xzfWM~L`JU#2-zA?fwo`lnZDcH8Jg_eIPsp$zL z9saWOZID)}nWpF6N(xY$*>q2)iDEj8GDYhlf?X_Z&(+< ztZ?uu>0Wu>#76f)S$5AffpDp--p|1WC_eZd(1pm{bKS1)Fq^fjap`F;vgGI|D>bP{ zKQ6DW6pN*)U-~fJ7)57e6W&Px;_rcZI7l2hat)h3T*)B=E}4GRVpo+8z#PHB9IM%o zKG)U3%o~zSplca(Dk`hE%{6K)3ZQ>1C7i}@y@GcT;7yzOgER$~PXQl*`l?)xbE$J@ zQ3=digj`+k3GgnvW7o<Ykk)F9B0p~f?)6tn5UXCA=Z7A?jcFv2of;39^_j|G><3a-XKUQMDGmzv8jVOXM7izn*lzM}c4IUK5$KlT@fho>5W{$GYjVU-8O#4`W$mX4StjvV-P?IJzH2A-nQ@_bTZz#B zv=ZJ&l!qZ1}AK{5o@5=xb*tWe!_ui6_Wl=oGbxRXL2UC^)G z=XuJAr2@LtN677Y3JQ7`;IIHCxx@RTBYK3Me1-zJz5(sBYuCsp2`DI@vuVbj{Yclq z1GEHpo5Y>o?S}BEF-Fr}q&9)5J{hzJuPo{|eHR&{mymraJo>R_r@LdLN@_JYhdXLl?GD6#^ z&IZB7d1QNGl(&+sZEW)CBFJr}tN4yPd;+;kaWSpCtgH}ox8{>5OMxWOJMWE4WUeSf zFT5t(j9X=$K|O?@hwE3S;<}JYwF3r^KI?;Rtn=uHONKeOu%i_kQJm1pk571me6$DQ zxkmZ!Wwmi>qs+Fe8tBB780tFn zEO#=A`J2AH#8nW-ISnqZvfbb!RbJzGNZ1XIi8ZwAHh+Y6jtc+ujIKMuF;_QT#&?Yg z>;oY2!uMVM#~HT0;>Oh-xL8_Z>YxXfzTblMGjDKQs&({VZ+4aUtX!xVmaZji>?54T zA1!9P&N>^FSUv*^)Fd&Bq>2Znp>7+u_@^~P_{I_{#-H13p z)T-1J6CdwAvoP#o>A#4kNJdMphpIlG;tiwMR#Sc@Xbxp)2;JtL%hHVE zR9Z38>dSIQ(M^@nAQ~YctxjqqCFH#xdnr~he)|1t) zfLo!Cm;Cl~P&K7U?sY;AuXxOT=7Q~VgFq7nOqsP?eaN763DccXM>cuy+OPZX+jrOL z#=X%XOTXC~n@;xubWx``m$G#mfRe!1GlvK1xL&Kb6$Ov>vH;^Z$sRlL(wLF24AvfV z?5b^TUx5(|Ze28jjnuJ?XGf|`mdsQ1{_gwDDUx!Y3tx`WDSpY*&vY0pz^{yK(gp4| zMt`cwaTs*S$+{hfG|0FM)wUfeTZ!hyDb2oqk)J;}io{7c3_#0Zy&36Z^#uOjTML7Z zYmOz(?^m00bkh@F-~RUbY7caKBra&8>XMd2$Ud;M03fTqmJ_1agLZb~uRr5g-1hpT4|9F2z;fYjj~Gi5(tAC*@{+yo+Yy2072iGp|$=PQpuhl=lqOrD(v(y$xTiRZ` zqEjcB+0wkJThq6n6^i{h60gTe|M3N&1nfM2=f{+DHn%#wQUbLmwq{&PEFa}!WwgIX zE&oJ&uO!{{5+yDXmgPD$ZaRG*_M12`)-(q~BuYAh_W$xltd)qLb7x>~mk;4V=owAM z$NxD$a~6=9zy1`eOZdbb7A2@6$*^}V;~`$1Qec!WhM%ld|Hz@&`!13X;rv8G$)a|_ zev0vLmZQ>)B_Bfk$&US)*uPGNylV3K#UB&$yCHbQw2{z}_7D@~(eNi)8Kdj|h4tc`77J^D3+Gq^r1h=xZrk`Ga3TgUq~)<-`_gjd&?7GJgso%R2`*? zP~{}-yQCYX9YzHyB7iJ?is7R=L6;_k5WZ12m(-4{uZLg{hQR269nPeb6o33+Y@t}- zUS}ub`o&fv^6O}L7ixcL2O-UgO{jT^^L{k8Bs$f8xE@7Q2vlX~Q9IkT?6Pw+v5v!q zraRpVr0mG6(EVC~Jzo72c|Xh21j3o83_CL>5G8wntePy4m8Hlf7ST~u?d9n zaQV%E5Rv;2A`fswbxtE?fC79S_5A=@y;6r>cZ2_~a1If5>i539T~B~0Kl=8mE1bm+ z6G++|EExP?tVAN%btP3?{5f7Jd0o1jyK0T%gI>NAul8Its&I&ynR)Hez34DVTGSQq z(7koL#1gKbdDX7RGAC+If7%!^kf%RighX_1fL)#8rsc(>mUEZbM{ana1CiUa9dUs; z6pC!z@fIHiWfy$>>(>PcyIfrP1=_Y`SC_%%Amjw*O_EszKpsDH%u_8A(Y=MHoxPbj zQcs|?s6`Tff0@l$W-XkVxV6!_tPxo|+~XQ}M+z{Btjo>!buSDPB}e!>{rj4PmYp0? zI}q22toD&|JMoH&^#?em@AhI5GAW*lmMo3b#V=Ki#qi^5%fo*V#}{6Evb)@6XJiF} zB&ChEPdga&!AiMsNwq_Y0mN~8B^$76*ai^enACS?M)8MA1BkEP9({4-*bTU&4G{pK z?PuR?Be+=EMv^0c6esZ`71s=P=8bW?1OG^8>p15k^kGd!;KDnWQ3Psj+-FC`>_fm* z6Nt2t;9QHYiTHuS-xRcU+GB6FG5B?EsNX-5n>?poj)z1Vcon*7W<)^86u3K?)%r4y` zzc>!`E+!=f=+D*zTW&pjfWy`AFKOD_<0pWL<7s%pyoG*r0$_ziL1n+uQRk zs<-@S<8V)Zo9MF>+P=VA2F|xmmp|y$O@P1*@k{n9K$te0eo#6}$Eg_iUzD6uIoAdD zn2qDb`;&MM1cI*y>w?k5eJC&PiwQYhILY;$_8Lw(FMI*xwMZ|{)Hv_;!Y>$TGTz&K z?6xWFZMG2(1E0|OGA#cOk@I(oIz``=6}kpZk6sk0NDnZmF@bv>OcCAz%B!|U|E}r3 z(>?PcwGD19TR@Z0-~^YbUBv4<&p{){n|&|hyPBtVjsWsQS)cH zV4aa78O=&wM7%IvUz2<<>oEAUd^{%c?7x$+->1uMKh^Mk8FWpj|C~+%plI{e$nrU&0)#14KW0LI z^?yy|=T`oGCS+S=p8eY8I5Tu{%3DLnb^uQF^{IfDZD| z9yL(lWmvG~+(#G?8hi=pdJ(p#UzjLtyJLRHb0H(_k5u#TwsE`7vq<4ckDBC{%71F< zH}=)rwdHsM=4(dRi*JT%ewH|Rfl1-acwJKwtF((+rcmOL zKa$YDZ*a5zn=3Y$O7{oA6g6!+ZMImg2cw(@>lWLkgcEeD*FIdu)Vk*trVJklk(J)y z-ThquT&a9ZL$0oEJ?+dpv$4W_oxu*-?*j=IhNIpL=ySZf4*h-;l{Eu(=o{K>`*07# zSfN`^<0DHO?)8pN&wh6~$G4e&*^n;d z3sQ6Q*fj3YeuaY-dLo-IcOlbnpfXN$3K0lcwPPc_#^OqTS5G@b?;*iZH+`ghBC;1r zoDbvvkKC_l3fSoGrWQqL9GEApk4Hvfm6}`)~JMN|I(5LVUz3XwM6>=3U_~VT_A|LOLpnVrmm{WH^`2%_qJavZ}vPe z&NOh>G6*Whvzg(=w^3%W`x(aWvsWFnM2XmkKVp?^@7V$8%$)X(p=jigrlt|PQ!$7a z{lJABo;(^Udt-(BKvrAnAJNI}BE8=2l`SZ9(~&*5nIeDGd#f$y!4IzInx9YDtNtYx z|Lf!cB?cCPnaFOVz^$!2ClW=k5nw}3?kd-KGZiL2YR`rQjx zeH$|lVS$Q8!nI*eImSSNvEl3*?6Mpp z+6YlWHW%!A`h?}fQC3g{%4#?fO&Y_-NP8^>Abr>XXjTq_VMgT$V0>h&oo_fo2DvOm zoqS_VF?aamlX_XS1B3u1*ueWu+&~myUCY~7L&2@u*YwOS>`To;2fKxnjav=OY;dW4 zHdf4Gz;p0bsWCKJ9?ylv)W95!*7Y!hH4(O&IH*yO`)qfSAr4sIK*ff@ZG#x0Eyun` zUGFm%jrv@^2PDu*kJ^FbD!rgRtDwztg(y zGF`*Lh4k;-9ZF^1+AA`f_I>0XRYlB+ckYideBMy+#77#78iZ+~?-S`ofT{n3(P^}b z234_v?y| z?*y&ZGXCiP!%f@*(GiU3t2MCmN=o{f~JaseA)@x7l)NwdK#I zwDfrG8w>S+YLgzCNt9L!4-tG%sVEsPmK=4#u(JY)rpd6~d|b*pO9LBGOEf8-eyWuU z$sfXoZw7bhCef>q6^$HKzI3(21M2>}wL_SMtu|D$#aL$*>PX=*#DpaGb6}{}G4jSt zbT0w1!tdfs&yh^^GSvjpI2Jpa&m~&=^MMS<>q%z$<%hjz*;GzaP`s4{njx>&v4ucz z@}F=(|J5JC#S8kQ?t4Kh7u9vkHdf=G~$$~vmf0){$2;Cw0@)j|Fibreop_Y zv&Qd#-N#Rc?jr5)<>$XmOpih3niy{GNz;Ey!AGyur4Ihd0V#x3PPWYgJM!;CezI`j z{y*6Z@**iH1kaFN{_iUz2YJ`XVHMi+PdrBRmgo6nbJ#ojU)g_DhrbK+--nESqPbo| z`H=mO(#T(Sm*O1v>xVWSuX}}`RaFrE{Idg_S70i<1OI^?Ie7e=9r7r%`Hj8^Mfj|B!!s ze|K&DtNGgV(CO6}ybW~%D~q|Ac!h((h&!OR?fc|l!N^@-Mxx9pKtgABLz5-VyCvC# zwqgmg>Jx#vGqf<>vkZ;%6*M-=*DEzd^%oL9gruefesC*3IIL8HaHDpNV$q(ZXV@6@ zPkO!eocg`){|}3NFjmD8jC@dI-_#Y*f{_3yIw?-5bHClW`g7%^f$5u<&_VCyKfp{cdP^n&wB$5M&C(48(pefAQ9J_0~G=B(7fqcXX|AZ3|ZgMdg}@ z;6GH~FDhmE@KKO%2}l2xqGAjm^)BEO|LME@lTQ@H#_UhGf${sJafZlqmY21Y2! z6h2`696VC?SJ7W`u5~Qj2#1!$r%UF?neTl*Z+|mTVQdKQ5EOPrA#=y5N(pkWbpc&q zRG2jkyeT>Tm@J#fa&rFhJHcL4KRF0!Yoc17g`C%N?>HeEGEtiEaUPpLEDCz+I&MI~@Toa2|+xy0Fz@pMb!pXHn|mqM#sOW)1PhfX2(8p8E6ZE#rX17>iN5dPYZWI$YF!M5nKR> ze)IJEjZ|9-utlqpaR~Q6E48hvb-*8*S_yLLF+rsFNoRm4fj2roMFR=WuD3Dn==0N> zjC4Sfh&!5h^4*s^N&|-i!B*#HL2{qPnU4O^8vF<1&`TWaTUA8$)!SoxhJ|%y-!$eH zVPV9&=;ISs8&P`yX-$#yg}*(D`*{x_sB)4`#TW1n+j_~ zFPAt41HS^~>CYj8l)v}c{%J8UxhbD(-q@q{paBJx{m9s1D4>lA`m3N~>gBJH^HBin z+)YEa{CR{R&qQpvw;)u&9%@?HW;;3r`e*YZ`!G%sBJXSoDa<77JU z9;ayDfGG(mh&Rx^K0#1^@S}wakn1^%|HcUS^IJbcC)_Te!cVyb&r}Zm=-&c7QnK(D zm*y@z341F!Y4%(16X3v%{?<(}S z6@-Y8C$bCu^6x`_YANy)C|(PF_tSrx;E~DQw(|iAmZvz#%<_+`oP2&k?8fttEaNYh z1X!g1vhz=?Y6HFQlQSpsK3X#nuG!xuK=s@t=4QvAGA7A}ZpMtp%1H2#qnW=MT#cE$ zCoPT1|2UK;(WEkF7e0p5MY@2pJybxhNDsx|Tai?Y+3QiAl(|573q z!_R#;Rc(VGc&{FCarNQ9L?hAaYsa#mteXKf&ZA437hR{GkR9eHw*#6~`gavVXSBzD zzK=R5FKVk?0|A5Bzf;iPKug{Vos;`SX&u=}f#}-M$e%v&p~}PBiOAS1HXRFbk^I+SgWnayK~l+CAvv1*Ve=-SiEn5qyb#BCvrB~O`yDDuwML|DZJ$d&k?!@v7q?_ljb&9En8`Zl`%t%<74HsKfxs1Oy zEf;g{o3Tcf3@YCI z9ly}RataAK|T!OhI45vgW2SQ6PRY8;RbmPOOVd#hMf;d#!}r(%=Q}9(nKlo*&kJ>SJy~zAinB^gvBRHy z1+NbbwAiJYUR6Q??|j6n-(03q9vYpQ*>K5c$1$)+y|l^>Z22XG_MfTvhYQyZX$jdI zAYD2T&gxuU53RgbFsNRe1S!+XHJLYWVz+D^Zkif{wzz4|uo-uCrwLJm5iga9TTA;V z_hk{mk(#kD&cNH9u^6S&>(7LYpLHeET;WHw7#I)ThURs|#cr>rIyo-dQMU3<-&stT zIFa#Pt$yNs02=P|YtynP^3YT`@EzzTIgMOFI1U>M-xf@WiTQB9nLaAsWj5?wXPjJh zh}#y!RvjYP*tCeLac*WzgnA0HY$%%X7w`rCh2zw?4 zEG;%Ypg1c1|I9Y@QCv^8wSvDPWhyS0=u}B*G>%a5H(% zUjs~SHBr|d1%kPaS6{-2a&+RCO&Ap3`h0M^nMBx~mR0KKmVBV64(qcXE1soukPReCW0z|3c<5I7a8b^LnoAS)BMA`Ngt&n1Th)s>9({d6G{cqwLoE@R_()@iw}25m=C;UN2pmRqy(AR4 zd+%jYf?3^qi?Of?ExJCi!z#*R;GHTIN{MpC^m^*r&Ry&sH_LWee!*sDT5r#j7Ni_v zRBT){6?RV5dnNI*=K~rg`wc9T*I~FAIOz#((hFySK$r53Aim$ILA$XJ!0dO89qzWrG>DoFh(YQKKi^*vrJ{ARta6V5CWk>dKT22D2Dm20LnjrWtYM8W z2Xh?SJ1LLcvo*M|_C*Fr{B+c`SXGvrmX<+JT5fn5Fi9O<9MHOq*vG>Oi@GdJKo4bo z3XVpW2;6WP+noVe1uyr*rKA4cw(LDwr_Mh8_c4G>D9wRseyXW&B|}>28m5{)J#ys! zU(&e1YIQ;W=e+)#i247EOE*jHl20o^3$@U)rCI~t$HMJhZ!V3*4ak;md@Tk;6~D{n zJG+-p7QUAq{w~zUwa+G|5gt8X6}GfwIHzT`v00lA-nmU ztd>xtbtITD?OHqZYtr+yfAMX;vxI+2XC31zIiS-W@9+k2{y5QuUb|O?W0F&ILtaav zMj4$U@mQFAlF~Y-#-XDq0;-p4ercr0hBcQM-GzuqlHM|z53897EmG**Cr;y%`Vcq! zV;#ek-VEey0=2t*EWXT_XE=4R+P_(=$RT}W?@KAdcHeuv5?k+l4Zbpj2_WI;g=@!v zMC?Len=!UoHm*~^!grL_)lzN%_=5zvwrPUazHB5q6)4HO{h~fCbWX^-z$Zy65{!zj zvuK^3Bv*N(G*w_Hz58<{j7?XnFdw5wZyFI8*!Q@k`6CAaaHGo8y$apVE-at{da=_XJQRGLXu_d^O(#&SAe(ul>)f_!SM4U*GiX_j`4O~<~4 ziv_ffUuq%UMBa3AW=Af!Sdk)Z!gmgrdxotf-E!P%$}iKD{E`t^pz?<$&IJLcAOd{&)@a~wN>v5P#7^<|3w5eQSdn^ay*3w>y0h&h*(RzDyPGB!9leGS zTmH~MYg0@*+`&X=T-qT?#FfJj{#B_0Wy!4DG)mIubwO0PjTN&Yr6bW^jyM!)f758V zfNuCSn*eQ{tm7rkbJatxd9F80+-BTheCcRtDQ<9sk*gv`INg-jdC@gEV3-Z4^A=&O z9w8aD^b}+GZC)z`R;+Xd-jtDupf|K4u?Kq$%X4TN!=TXkvR0wJ7)$?Vx@69`uzCARE6Sj!7PFNNO?dCr&bRON>% z83i2{o9sjSvtg=eS&U6*mUJrD!YHrZ6z=&!wWmovhNpGn@}rJCV{B1fhGG$MZ%Q*% zi2$940Ot-WMcI%fL+gO+O(9i ze$|wF0IfxX_9Y7=%>XwIRWk|OlvlFXCVU9#G6vXyU0daeL-gIr!E1pdn9Ks?_lhi= zsSZaE%Fu~=$p|SVVnHh`6PuQiB?pzQ^8O(4MdG%ruSpsu*+oYegls z8CFF%MO%4QoQ6VM48Gb`(@7}-~VdPxm zpf1DgvLfe?t?7|QiKDM(ncg#583o(+Id+YmhaSwh8#!=F*HZRWvz;-*xgS$y>yTqK z*}2%=cEFOr^ATXCEVtxmj;@k)#J%BtUo(l$_UO;(1eqX6Tb|WgV_e^-?=t0!Mo5}Q zkIF*+G5%63KFn2-a*{$n9xmM{4sQh${Zmp73yk(>G|P17*+o>b=%<+U8ndx8j#eAc za~Q~p8Ce0NB%+WuH9%K$)8AH`?y86mQ9$az;#ym!Kw|*EFVUeY%F~(;m(buS6kr|S zUwE}AkBPd>%0S-9z9#eGI;*@>unwVF^ehL$|i5Z9p-Z(8I zP%qvjn##!B#GK_`8Un$NVjf6meREk*d26SVZ!gc&_#9s<_vhf;uO6k|6ox8!xM|u24J~oK#+bl_1l5Aq-&NtJ9p?4=o!MUD z$&PEn>X8CCTh!PcV*oPXTd_YGu_$Xhj@p4C;4>f-LjkdVlG_XfN+S0zt%6`xqxGt; zWTHaJNhX(xmaA$bb)nD_!O6%J3Jzlx{hE*YU;_tPi^iCnjv2u}`67cD0NVBIk~?z! z$v2+xLZ^NH5+CI(jvD2DX{z)sUYrh{Yf&e&9C@HRJqRCu@-fJG>WpotMFUTlFYuKa zmv8<9RRON!qrGWi@&eoBDd~}gX@$;V*(>%l->ef$=ylml9?ye72RB;pkS>^fDh0s) zD-EG6X_uN*F2xsmpLbSFi%|v%;?JK`fQv=?jU9wwu1$H1Qh=BfIboB1Vcer68H53v z#V$=Kq`uY~U65gW>C$Ke2WNT_&v2uB`j~B=e}Bky2TyPKo0_A(0LLSfEU3D_XdYrK zy$I#(cF02U$)<9^O4JFYP(-zzNJ#dd9eTfDu4@e$**xn&2p`W}j9gbr9R$PjS00N@&fEbX2 za~mBC0ve+U5QAihI)8RkE#si4~Mx&35?+65+-hElsCq4|CZ&~JgGYtFfka|k#dL=lw?67K`=g<(vDU(DM z)l9{=JpUkN8}p)}dG{_BoRZ%d#7_FPY5sCwX=<%_Dp!5@okiZzEIkOwG(}GC5vw)_l-zzArJIY22-G^%XMl z0~if-Rk8Nt$DrYwNd$bhg2vbEqaU+Abfz#pJlUW%{mG5~<+0S$*E6a?5bqz%kDM)I z4dJ+0=*kVsgw~}MyALP!ULfv{a{Q{XaY@xv$|ikGvzpe(6Q~^}WRsVdO01mfq*Ml+ z)k{LC&j+3gy&k!XIUP{!3PQD8^2E0StM1N{YnU&!;d)OOr60DWXikhq%Vr{ZG5@*u z_a6QD{OjW3z8IU(1^-EtAWgs}S<8iKbFXzU$oQ^w zqQXOt7|F<@v8H{B3pCw}mvPrtkBme3m2L$b?Eff*6U}X=)i?R$@NX7K-?+~r&ifw? zFp2>v`5;>Sb(eJqTpa{e02>AKawdB;WSKjQ__XCM{O}F6pPMJ~5?);tb41U+8E@v- z(ol?SiUbymS~P46zhemLkEe`NEx0EmQ^+WG@6gY%e8bIbD(yh707sk%zu!2w-rkj% znc~y(`MoYO&BlRBc9Zh9{l*2<4|ARlYKKnJw_R4TN5)3WIP|_`8o0z{_;BlmbV^2Z zekgtD`)E)w|0B$DyijD*peHo<#(U80!X6B!wy%^@F;R)f0E@Zk$^Z1BD=|`2b1!g! z|6Y^xe7`Q0l``5gWiyff_wPT4@Jo4&0bd)bLo!Bxb9~FdY5Q zqg~{~@QVAtmQ}!;;ZxZL+p*!NH?=u9X#kFlcLP^}(2sKq|7oLuR-pN>G0}?n)T#fM zCk52M?e|R3WO)zy@QEGL2=6ZZ54`^I^HK2D>w4@Jp@wwv^}6`;Ks&{ zv&~I{`aS}O=2?ooar=5jNQ}8nO-8;L3&rjbtn*7>5W?v=qjiRP7C&3$8M-IL}Lviq(iSO~7 z8cl6Yj_qSsiQ>`oifazqiSm;c!h0o+>6=udq(&{8TRvo{$gI?4PU@75Wp-VVtA=(P zit`xM4)fTBPMj0yov>=w&l0amg$&z-m}f5Um_O>uc_@(KZ35>V7rcvt z4d1>hoYgo8`rPy+(lB7Nq6DMIxk3#Md`b3P8SkAaj(kN~$Z)gan^$^N`O!0)I)SI< zL|+`)WAXWD?w}ufI+IF9b*+Hgwu1gny0%Pu`5wH44lUYuwj5$q^7^lj?2&Yda(kYB zyZq=4p~HoWonjaSVhYnWQeuc7=Sdu3dKt<^P5M>dN}IN4modGlpjA>Z3)gt75W&Yj zH$-|~Nqz5va8c`lW$HkLvkfsC}z?w~Szf zXMDnk?itBhDd#8=$>zYbg3sO`(%KUmMlQcO4^1)5TXgGKfngR|5W}PmyJ|qrELm!E z{9sR%%jMMXDaCX3gyxsTqXUxRjr(};QX@FTI&MEz8YnBK-b=DC^_fJSd&2o!E_l3> z2fI?%myoqu-}*_p6X|*LB1kQdALI>_*fW)H2Rs5nCL`EhnU2^WZx+4zVM@UN&Yl=SmimMifx*CDctY zLT#2r=ez40s(4nM2_m?@I-tTW&Zn)czCvCVx&UN5*Flp zKOYez#n*RxNB69T=cQvFe0CuDPT3p1zo2NP`nLQ>Afg|gD- z(EIQ_dZ?dmjC#*yUIw^@CHKmng?&STyX=a0bRCS0TYzVwGy*@asZxDkDorm1sZyUe zBjj0rvC=%jj_Vi9`Eo&2bT8v;{gHq(`w}Wx1@RVmH{NkuAV4SZoaV;n6Qn+q4Dwn( z8QNl>)L(Lr6?mRN(B#!|=u$pd3vC*QUe(W2AjaJOpy|h2G8jQ7$qOuy70;I1yc)L` zZ+~!@lD3+9(UMpl)o2>-z`ZU&BdltE*D%<4Z`(6l!JG626#A!pfsd`(UlT zz`$D(pXK3A%6(tUJX?o1O{<`$a_gp6NR6a7<%o;H*W}cyE7ac5Tuh2I270i%H|rJ< z?7P)?vx9E+zGO7S*Ge0%vA1dE%EFZ}TC8syEOo181)Cq;%dDh>*Q2MO=+skbNg@@5Irz2pBbAYl^b6NWP(OPN2N*|VA? zw==SPmrq|=g%dVRNR2#b+O8zPA#@+RRL;>*K4Wpmo5k+_EAbx@pV%s$1N!k+ z!GR`rLYRrN%HhmGnFj8gcMI=acxGH~e?~FDA*AO9BkpQJx`ToKyo%2D7ZXaf?f*Vf z9%1Zs;RE|KlHEV6A$$ftGvIZ0>fjsCD+5Q~J<$+&$NbwUZ10}?HD$KjR$B~f#)nh; zne^HD=LTwvHk&?!{p?m#+{1$p@ml#~Q^>uxxUjF!R?`Y4{_(=~vR^2;U)QHM;yAYu z)UD6II6(@laD67a@24{Z3x|iI#5qsx+iU}Z5CLpwHFPyNRk@a9zrJ{nelbFQ{`7lyr*{r%EN^6n%) z%xBj%FMAg>8gPbs^Cmw6m!L%79{R(^wQv8tLnSWjMXEb-Y!2Yc8SNfMHrn!2TA`ax zlb>FXDFmwqyR9FXHi)p#T$z^WLT2j8ugMy|0G?}96WLAn)?RRpTjyasHie2s(eky~ zk<;(kXGlMgY@U-}z6?1c5#l&Ms@%;hpru(>r^xHlLG_Wrl$#W=AcPmvWhTxpPyrpv zpZlWUaE@vv0y~{mW}F2}w8ng?@~5s2y3XZ!bHA{$WH9=b}W;ggiTi+rAtZbI<@#TsJ zV@DXWB~>Dqfp#y;NsjgM?a!3p3gR~i#JhN-VciO{!2!J8KoGX^J0YFGiH7U$t>X}R zb=~08Fi@(-vHpDTqd5opg--ot zm#?A@-PmO%j){>zixRojp+>mN*ZwtrTq)f<&Df$Kjz@WTT*us{YQjn%I=;m5L$M#JIv zlh7@qJ!G)D-PWNA$8T*g8{J z<{j(;JlD+341-maib)1!hJ2u4`s+THBNlUXipgdGp+ZqZhS?xaw5=qgW zKkv*S{*m8y;aXODIn0*wyb=wEj_^!;zNF1!>k^j%T!CK5>8b$! zj7goc1pVq~T&KZ*J;$FfMncfN?U2ba;uxv5nYaV#SD=^_sc6jSny!N767`cOADQX9 zaGF-pS+;@3k;R2`Q=O_HNQDVFjy0|fx15I$H}_o+D4W(d2#s+Mp5uIAuD2m87M6&F&{;Rw*LhMSu^_s6;D z@nIkyA%XhV>N^ITR^5EnrXW&r#zFs{uCC31{D8j9rAu)kjws~gm4OO&RKPS8TMZ2K zA0zddJqHDIY0rc#H%h@mc#+YJq4wv^_F{`^^XEq*3Uu{sAJ>H)E^a=n?>Of}!Y1H< z9AhIY%iiblxV6sx-C55-)dDK$%AopnUX{w_822^Z6vV}D;}(vKth5xZkHO#s8_sn= z1YM301~H6vj;cG(IA;O}P`0xJ=wncK4hs(-i&y1eVa3js89R(?>o=$AjI*xh6kJC} z&;~!M0;lEbTCL4M^IpC0WchWo-$+?u3hByF4ms>Z>NG!kM%{-Iv7ZS6>&|gl9mXP6 zulpLd3y>{ovq}!sExH*3$gm`IMW(z#|7En~w zC!cDht8XWu1nsnJAf{RlQY*e2tLmJJf+xPrpLw~6Mmy=lg69&A*X~0(;4kl)nvSAZ zs*2Mv!oTjb-gUp`q>mxAKi=jr-Z4x^%;Bl>Jpp*?q#2L}aVSz3J%bTM>< zHFo@N@>1P;%Z;B7?RPS9Y8O6<{Wxi8z|o}M zP^$gFOZMP{8(t?ctlJwACrm_iVBnqzkyLv{Eo%Tb3=@hOwdzHQ1x>AuzLf8I)G%P6 zJ`ND@a3FDoEBG$nXA*FofSZLRh@tYsBj&QhS`deoYFLtvpC`cNc*3OX&&G4)664K5 zF-&H$H&H@Vq~~cHniW|2dWjWxbRc-fK@7o#NQRZvMmyOyv-oPVkmam5bvZlTM)pR5 z7LIAgbD#D!nUaNA=e((Vv+ZN@K@51gKdzcISM*xy^;)Y{Gi6S`!#}IRv;Rmr`PK_g zNH-AfHUTg9biGbMb6D$nX5?Ztcf!FoTC8-|Oj-X}=;@T6iprNDf;Gz;R|5}8B zPHj*t*JBq)U6B{KPz<-+YecvJavco1hl=^I$1BiWjPv#PyS>hPfDhDl{|36&EgU@U zEwY!`;B%r4nF?s(Dv6=z7<3R zR^ui{D>w<1R5BKL^sCNtb0RFtdy>0x$JjxI=2djPUZs>9~hiF9!|JgwY zWNE=iY0f7mYV{pVNx4tz9s_VeEM4o%JL^H7n)fDZLeO*qfD<#`Q@em9XhHRs(L0ci-w>hZtdV z8|+7FD5GRfoD!pXx-w5xjfyZ7MN9j!9nYDtvi|?OfIX5B}#vzayb-hr8lJ zzX;}Y+%b}77F)|I%+k{??7e<|FVbbO2WX_S9ZgJZ{88=EIcbQ}JSK^rJXG`$Hdhmj zcbqJ6uZz};6E=-#)Zp@$!IP{;+18(gI>wKjw+WtGa}o3Tbf?6Nh?tE_tY}T@Q8=eq zhW%&VIW5m1hK^{We|iIQO@pJ-C;dZ|zRViTJJcGsH1lc7z%eO(-r5MD)3X<5wrYem zVLu8PF^83=u`17-_2(P<#3O~Ak-(-MCo+)f5vBW?mhQ)|pg-QBoe&7OPs(7Ks#W=1 z9$^ZD7@@lxn~by7UfW8hquXf+=}EVc)S8X)C;^9t$m>W;24x>nar^P#KHGciibywop(nk{c434vS+9AC6X zyX`sUr)&~mFMJ?3A6$nd7t5>S3s7y{hFOeC-3t7yN&=~IgI?inQlv&uL!_(W37m)4 z-sYjd(qfeh68Vj_+Mkh2$gtS!st9@$O6*81Y&nWOzTF+!k%l*r5s~Kk*ZYP53EE63 z@gJAjSMHnLx6c=ULATZ_InJv)4^y)6(e1!W{Gy=_-av`BQX#v+(_tMMf&vtDsl>vx zlGK|d234ePA45w2SqRP4QR@o<``)*$v-w}SK|15(g`^d6UBi|Gy0q8kTW71f^Tuy5 zUL>%fYx;vZ`h(}}@eNZq%Qbl_oAVjvMn{NU60;h`7p4pIxqf1AYw<2T;#XSmHj5)4 zEf*pH(s*|Zw^@5|oAu|T-2fVSOV-54Y4C91hxb8ATtzcvJO62KlJNy;(K+Of6%Z%5 z2#`k|?RwT>3k3*xcCTIDf=dBdn7Q6MW4DE&8&BB6eSuugo?vCtn@I#SS0Dc-(Eb?f z`cvi%Y07DSb46P@$n^o-VC)`xKCy*^`(Js4)dhkS*I(?3{9j!5X8`JMKyTn^xNUO) zwtN6*%l}V&rLKbd@IR;W-jauh$1E}kzsVdhAhxF+Md<%wMPT_F-&D>K4pe$p|AZj3 zV^iZlA;>iTZ~NVGXSIW-+cB{p9-WUY7Ol!RZJ0AX>05}JzfLk8q+(b7?q0f9ZCao? zv#T=_U@LGtv!x{PLAYTNj)uvO!VgVn9?V2Q?lcVOr3ZUIUm+}0LM~Lgn5+T3QB_z- zk+rrMsow}2`*d^P%T%Gahg7wN^UBr9_FI(}gjfZVblMa*zAg%{C}x4?f0Bo$8IA_# zHR#a?AzzTh5-&*n=4ZE&_6kwo^*&x(Yf4=0HWXNxRFsuH(kKa zl?Os=ZE<}+gc~;yL_lUoYg6Gv<4I5ErM$fU9>ICCadk(`D78=A-SVTf%kRc+V888h zPC<@O$6B{_I*7O&S$wautEHLZazU5H4I)C?ACyFi|A674t!`CRphNzJS)S$Lf7^PJg4)nS#v=UMl!u?P;J9fVfTLU{_YC z+MPc9JTUukedlQngTNQC=r};s8mtI642Xf79$YQd+q?|U^sbqrFy!XEIV?HLi;3~F z*b+u(q+L{#y<<%{$y3^g0UfnrJzhmxWvMr^`yUb zXf>ogInk!_viY0aNr(JdnOJO|8usT@yEd8$ttqV4I_*Ws62HN52Z&TdGfRDB?vfR? zjec2SZF5Hq#J?6Af{%Bj`R~ldy4NtCz6RI)u>jDmX0fG@s!<170t8`Z4S=ba=HP3E zR~-krMmR^Rf|a=?t81&7s#)a(jEdd_VLA$QRI|12+uWJ`iVlM14*63;%=(+I@by=g z&!zQ7s*NQ2=cWP&Gfl-Bcc0=h$197?AgmrD zln}Q3BWLrsH>E4VO!_cAB4&~xR$gXZ59H5G6_NhaQOQdk6!v)gJXM@HUW%}cP+uj> z(3R>a-7w)Zm9q5&tJ~kX_RXBB&|$igngl(NTW2zGN+XI9SZ6#C`(*>)p>IIHuHEF{ z%=-PEc&1BScq^hf^*vgsYi{iIDF?g?61)*v9Pr+j+LjyztG(Fq;nH&?i0*|!J#@h> z+(kmF{3~6xuAF!$K&zrIc|}o0;rPv6li@GkZ(#~{e^w8(H|+=s91^pcVA-w}cr$PS zg}-as8fYN?PkmsDWNb5oyj`4dc4ZIV+F_h``7?X}_JmXBzo(B^2V1x0Z6XOUFT4dN z+>O1{>z-qt?WzFScxf2qani4J-wva~_y zsm@-F`^7L+UP1iIEB|d_g^K5(nYkbiO1fOd`i_ZKC3#@VtwF`8BigUsKPmRY<=00> zWbDrJjL!$&QF&ClL}_g*Rn;s)E8^+CT6p6ncC1F(EH5-b|5tkSZ+ina0_h7L613{N z0%VaobIDbq#yZ5T`PP=>nAl>WxWPDYNy`ju%}b-Acj0}H?_XoPk`z9dX*KQJPI9M> z^j^cjn7)g&-;wXC*M{PvWw{8Lz_==EtEHR|tg{h!4V!ZXrfh1b`EreI6Wj7BlC|q1 zO6CB?gC}zPrnEve2+IpmAOh_$=^Oy}oX8`3On*arvFynuM?pRMGC+6~luo+B*J9I{ zl~b)03^h`_=1h`S+;&uFtnUrxRa8aO*nQ0JJK0rxnKCH|{XI?$gzMNu>H}bm^{gp% zb_Aa~_TYDQTi#CMz8%YK_0*DEJgMchO8Tc$ejY(#AxmIksFC{duSKiJ`$J^&VqM8D zAMz_;gU$jLr7*>oe(8RwdD7s_hs02uuqc*_RigU|6u@J@$-kQ)QM0@ji$*tGXL#iC zj?S?U6ZX$N2#VHye1%bi2PKId9UQAU6!Mfl%~q> zMg$7@46N-3B!V-G#D#vxSM8yd0QOvm2SND>zOG}}olXLM+`Tj(G&7mRoH3PMIu%tN z<(}TqJo~wn-rA%!b9(v+;WuiMO|K5VOD2pf`4Q>4Fzn zJF9gXp-Wb&VPLS-L8Qz0@w+d&$ER@nnk&*kaD!pDlSrQ-mSmI|vIGbT0L+$K11XDr z(5%%tgX3?;pyo>|D`l+Pfdiikw9M(MY+i%Cu;DO(dJ>cZmyVy*eY1^eSRMiRr#8v( zh*5dl!vYz8e;bF6`Kb>w^D8`W1X>(!uP7NR17U(9gBbR^d)8P9cBykU1FEOxy+jEI z9L+$jIU8;ctrelec(2yw2RogwvvAW~r+<<%0VC}LW9Khg{%FU+Q#VfR;$|_|0O5ie^7bXY6h9#NKt<;j#-~`z3>t+D zr4m@@t>?3%Mhdt!O8;?T0(Vw`V+hR6%nr}ZjluF4trVxc@Q*&YelO{L-=elYl8@&a zHMopzKF2IJzGzof3{GPj7*?7;x}!h}CouCu-%z#AUu*zkyY~Ixty9c;Mdv9J$U^?@ zR3UXj7>6Hm86U|dl%Mu5m37$WCYRdx9@-E@?RbOd0&$wda5rP3q>r$T{S2B`Id1_3 z<$WxCYX7{wSdykMc^7FZ*tUO4 zRl%fiu-6rS%wSy`xm{{{4uX>c?Y<`9>$LBH{6T0#61si#B;~IFKHn}d1t0_jX9qNH z10=Xz6T3NZZYMFE=4`jG57QCr|8w9ZrgFQkJ&_sPTDe+Hc+eEes~9Do8N$+EwHiw3 z=YE-q_93rMEBsKz0iukz)0PL~hAVw5kXLeD|Fzb>P6N=)m3K724mPfr!85H^jdjG=`Xf*u0<3o7P+;=?kp#@(pbRlcmT;X!zi=jMKcxB$qu;R%xQRLQ`9{s!MS&)1uxI`H#Mv+PUU%B zb(sym+V0tIY&tGDR!tMHN{OM!g!awd(^bsYnoesg*Me}Z=`Hs57w&pS#$+qH*)(PP zzm0-vV2$QK8Fy!Ar^KAI7Y@d+rCd8?S-R>vxg?POL_OIIgt4LW>7%&lJ-t7Sx3HO& z_klidPWB;2S%XHHz`N+#p-Bz**Oagj-0teFU9WZpStXg1{-uU=w*=x~Zi>XQ4VW!J zhb)Mmd?`px-*lC^e|ZBgontG#lFzQS3jSo|paX(gG75zS&N=ey9yZ8%iRl1o&RZ__ ze5j@gd=$x!jwI317Y*1X5d7Xqnx5b#C$7n~6olAn-n5on>x=R`FY6)e={H37ot#q! z;#FfUNu3!CkAcsw!yR|{FSz60e(Qz3v?@ppQOHOxf(?JXf{en~;~wiDbZnq)f^tq| zy7wO#8VWJYX9YtRFxnV#Om5hfxv2sDDUP8g90Za>KdLW_QmqyU!|v>(!1}{#Jo?3r z*h7wVUt846lKdde*;m+h2WHfY?W$Q-)y-v08a;|37wve;c2~Zv08l}&>9+YBV!@7{ zp6<0lv-RbHfRp%=j{)EerrKhh0)9tJ)Jup6x26&*Tp>@otE^xHdveFyCQ(tO+_>F+*pw7iO>9#jL6-jSb3K zx{DG144~z}YY)KV*%=jQ3|&lJXhC=60^7z>{4Iv#`a&L@#*8Oy7U8pF17IW`g+x!T zk0IiQ57SmI=hCfAInAEbdrCy=|+{kREHpSv;u-!PM zcNsF7jRg!8$Ur$0z8Nc3S<7n6ew@c^NF$~4knak1hzYhbSgOSzmpI-P9=Wows!Yt< zv>~)Mvp<8>=IQvnIHkatzNM&;uWx)|VXNI~?^&Dv3|e>A@~R*<`vG&xj8RXmjv5e< zfaEQ3fU=FZ2JR;JN|Z7-(XvfsdJ-4FV+&MspN!3TX|C)8Kpaas8I??4R%Qq>Dkw=L znf%DRYQ08{3Ups(WPv%&u11;D%h}ui>t10|X63kzt>~Q^d$T3Q5{}*P16addiz~p5 z<)5}r?Jyt|_$87ivNn_j{G7du2$>*Ww(kP}^7+s6XY8w^+vl}1hyrFc28;ZMI5l!- zUbO!6BB>J!37V5N_-&L{xR|&{EdZ`s#Vd8XqFLa=KbyxyDNGf=0 z1VFQY;eiwe$g{2=eu`@nzJyIhvqgcjM(w7JT&n{w_Sql(K*1sAowAMr?(dA1K;pwj zT0f9aQfc+ghjI81f-A57112S^OLhXBWG8#s(XdI}0Wb9*w>7E=sAeX!XrJB(!u+!V z4ma-Zd^XQP>c(-DlFT}hQwa9*UzfNoqP4WS!7_*)kUqH2?p9Q@iBzs7tXF>Qh~#j} z?{8}VyMTed<)2_{_i6vX3Y3QFj0l4MKSGI#0%DktNwit{IUN}d`4(c1MqPjp$&yvN zNIO}ZFpWTuM8+#lS7rMjA4{CPHqy}QigDWw(#ohZ7W7&ybPfrcX;KwG?Hd>#vTTI; zj;Ds>P!orVbwOTu4lFgN-%i$eGP0{p+zN@D5QOZGp~rj&Ano?uixSldmo8GPC@ca& zglBxr5n9RUh;HT9DlTJm_oG*~#^*9-21ClT0*6HfgxoUcM)anP+ z{2|?Sm+|TQRH8BQ`BdCpY7lLE)!?hE?B~j~HCk%-WCgp|QYz(q-cNGr!bg6y`|w~m zQYMdW_1OYWkiI>d04rhqfi2#&ZvpTq0E*US8Y?TyOCJ~bTyw4|YqtG5afW5E+or*N=4&{il|S=rf#iEB(&t(>eu*RH^< zfIK6r8RVJX+Rmb^Er(!TbF_+6QtdW6m?z}tOFZfkWz4Q0mr^?vIxy~(pm(+%K~@rzEX`2#}4b^HLBJ?HK-O9ZCP?C{-Mw%pnWPl zdEWn|ztZ)zu|{f-q5s-1&<@I!F_K&&d7WTt)orfb|ADgU~ z*Lr)(i?*p($h&inW3pbatZ6BUr!XibU8)acP|WV+IHVe#k6BX|0uow*E*ppt4d+Cy zdw>7wMe{Jl+SSFk&IS4UwfLNtCtuzXX{KDLoWTF#x?_wLFY8?ZtZ9vX$l|GT%?wB+ z!Z2?nTu3ze3Nb%&74!3BFx*ztkF_@CO@qEPFW@i>@6E3^g`VvYU)C@6^%?{US)iL@l<`<@busJ(u_BCJPW7EXx8`#BaCQc% z(WQQC*R_wcbj29-h)LDz>-JjHb~n2&-C`k!M5ED|6f>lL9rNMRvPAG3cdf3Xgu7p# z-3PXESR(4iUDJ>3iv;ebl+!VgOpWW&0$_D-!npp<7QanHelDZ zx2Ma$LSr0z)VtCqkvUvrKzXHqLzh}^-FxVtFLn&`L>r6+;&`ef@-ul%r)XIdy#510 z0rn-IbV00<4<$bOk=8vA>Gpab>Lugu42J$3{s=Ruq6K={8_ZO!2{wZn)Ix@-65?`S z4|w4!UoLKN51`I)Ykey2J?2`E%*(!h5GsxmF+#d|x2b+tsP$!dc2h$S)TC5y_-9b> zMalu{z1DM*xP(oZr_w~gkr<<@;FYy{Q5D5JDcZ09;*#=Bz+3F5T&YRdfKuf@sG7fl z*Y4IpJEFW{05zc0jo{zg@c&ax|H~B9y1eOshu%BD^TBZ-Ilmz>x@vhY-?m>>JdWZj zJXvSzq^!zSon-e)KcIslDu_A)wh-j&cP{=0X|4sMdAh8Wbz;iys2QDj>7@OxV%?NJ z;HMNB9nK9l!f;Amst?4wpC7T-s`!~fJDVc8l|xct|7@moXYilG zTpb+1lKKs>Y&h5)fs}A8mR{XSjXV^A=I!^BNNSOLq!br2Ucfa?+?>g(>=POkO+z95 z;F{gQ>Gbq+!UvQPnF1Nrh75~pfNQ+eVtWBYpp2O!2sVl}+Q8rkg2MsP+R!VL2h!-=9Ak|^4KFx7wyy) z^^?)I4bOWcHBrl9B;F4-^Z^$sZ`NduWVyF4=Vc0IN@1}2`fTQ&PY+;LcrK$K3BXn? zOPLSQ>FGNkKJ4tfPEB$A&cq!lJFu?T#Q#|uTgTM~JFY#Op zAXis%H)I4=sRmR(%RVWsu6Vopd6+i@er)1@lz+=f+sMD6n#hBd9iI0Hsm7L)4GfBr z3(RFDO}cJlhxW&ButR!(X@OX~dbo^o=jzZUvPUSC{8X=~e>>ToXVTvS$5jonW7gtc zh9z1{p}NijAA|-xU|_$`I#`* z+$+Nkpql7+f{ty2JKEI*ak7(gsJLpoAAA37;e050`m&sw2acusN4CU)aU>|l#v&ZP zxEkTlr*c)b;2)pY6a#%8MrL2Hj1_FCg~}ebPxz3Yn)wgxG7Yk69al|;>ItcRGIBpK z-Wx)jE$&a^*mL9`Z9#D0Z{SIp#tloL7Mk{yFX9*bx+~j{!&N3)ntvdke^EZL>p)m7 zS7>1KpC~5GD%j9~UpbSfe?80hPm=I|l$86&b&E@??UogjA@RW~HGBe;S1ngYr7KU@v`rh&p|cvm$JvRLk#r%b5m_QI+~+(vkD&%ex~{MnNOcCqSm>O`{r zLIk_$*a^~8{=6WY_g7)to=C3W@HwFZD^rZ2RZdT1HrBE}yHw0%%>S@xP4#)#&!#ZD zwFbd8&8hIgf{qKGezlN5sYIC&Dj8g_mpk@#)|-tBwkw&kgU}#&D4WYlJydtysi5QL znCZ_x8Gp7~0jXL)^SJ^JSTFAINq$2z;63ZYB{sK7+_p6b!s~ek_VWKmTbGTr@NQB& zT%vw$&(Z1PhqIt4?!D(C6S*psYB+D<>Uhbjv&!*lgkqj`n3Vf28wZs+Ev^rg*XLwQ zuNp+>0JH#-jFm`o-$Al+-~FA`-8r_VtjJ(^R&%2LNYVri8Ki_-XJj|s#Zqu;^^zgB z@q3*24*=4-;kqmE*OfDLmK4~H(m13{2`Gk=pcati|9mS$JaD$=Wvb@W7IfJ2@1Uo}?#OexPZPQkx<2*KVRpg6vp@Fu@uBlkPjxCAI;P{U@a`A}r} z9WVW(;VzIWYiYK0qDa8W=d@)EZGi*}=%ixAm6~kKytmMqA<~L>#N&vV`o9r1Zi_*QjN zkRvp|>)~5_9-;C1sWm)QwKE$shZ-EeT7ZEMp1Eyk_~7QJd`=!j-`vd=SWvQ=Ke z8I$(?QG=IekO6zhHTfRZz}emkTtlaxa99IyU&G!LwG8;#-YPB*>R(`gq=|X88}QXk z9!uqNSqu?z#}jo^&bM)R_50*HX3-W!Rn!qepOC&=I^a>|T9Xu20TghZb8h;M4hWhR zol;pG>!~-h!FiGkjg?(B;WZ&P%SjI&<}%1xsnj2cJZj1oBCV}N&Isy197Y2{Isx*u9o6G_53{eR_m8D`%!Yc_H@~Cdz?m(a$po$Duno+*Ij$-%B6bo-EcaT{^o}jps!f>jFW|YXSMj zqUS}}1)2cpye|T6)?Y#iFZJ*w?Kt>U=iw}pY@_j*l(`T7 zo|wr_yFvZBl0iY>307W0CPCSt-TM(Rk_}Qc7L+?OjCjB3XQv@6w(jZQO_@mh>e{cm zg7dUvpOU?vi*|10B5OI%=dH43@7izeC~7+)%6}{ikH9~Bqp&O_&}0?#Y^o5dC*94$ z)>YOjuYpqE&Ti^^#vb+%s_YqnPefSwdVh9v+CfeUB<%tE{xM1UB9?%8lsKYno$xpV zSwy;PYde6aG0(D|jvhuaj2*n>NfLq$PRVj1l-Rw!T_9*RXEb{Hn$+5o+|Bj&1DQ^Lwp1@xqn?kx|?qpiBQ z^tDzHsDA^3y~gI>z5dq62=3Kzr?(3^ zg)1nW`8!BBryZ;hzl}^TMY-XSe+I52!e-lo^%j!b1BDxzr-vw5bZa=9*XvBTO*L`q zSBpg;=#0SE0_uS~pwHt;(EX4)TT#9K;!_GSpU*ptZEgSy;C}%;ksjJif8HE48T%PF zC<3{M!g<)2gE*~aHP_!_#e@o46$P{0n4y-h@_IznqZg%u*taJSviT5U0S-cye>y@6{5WEbSS5r~7Cy|N?N3=qs{a6a+Xb|YH zuygsybmO0~0amYf2q;J9gpVPD@bbQ1LA+zwwGm`f@c;z0hXaMDfV-HZ!>f=V zrugxEcg?@!f7N6BPd?DIt44oZ?Xaoh0i|r)05mA{WZ8bngNB588$CB^hiQ)%o(CN= z_u!2XZuflIQ&DxGF)FUBr`bpm@Of?K+WBVfPqV~&yz4qaQA(J^dZF5%1uNds4@`6` zzBsi4ch_>&M9a>IlbTfN2WTIOhex}9eE!57pmSr9sA#?v*AgI4nkZhrJtX-x5Y0w# z1J=Lm98;s}zBo}JyWc)%cYf;jgDVV0mdYJt4AJ9RCjQ1&<=+QdmtLffmikVHhxN>} z^PCIMp3jr$hH-FH9z8*I=PboblX0VL-3OE&*E$B+j^3njBO>aoew4Pap0o5L52KHD zbEO8``~aUmzr0Vy0+C0imktA2g!quncRrund}_hk-mh*gd=otw_!(nP7^ugQtb878ITT?gx7Dp>Q=f&UN3sXA$!9d#}0F z-7da%r~LR0-~5;2iAL82MqQF}10QP|-(=1@q*P>ZNP{o}*W8igpx9+{Xt3}3XX*#V zI5uA9Z1{%*?7U;A)BXe{wtD4@*rUFgfzc&BgTfyYtWVUNKuFA9FuY8n zcx6WebxudW(y3ZvWnTFf*cG1bT193x%*-c~`|2CPnzJt5SG6?Wcg*g%ew__}kH0?h zeA&J6)x+aXoaY!GkShxN;Z1$Ql}7J4kr8Hv6X@76<`{=q({YJ0t^-xQVp(#FHmxzL z7Sufz{2v;dv99F?X^z7p^0o*_Rg1^|e8Mfin3{AN zp4PNA1JP*vgN}UyhBKtWKtuoAd_hN_EjB`AyWcS!*S_-i8f|^!p|G2^UnML+H_YEl zzGY_MuyKrlu1qyR$zG3Z0!#6N!Ova$cFJvJ5ol-_ojRSxSX1u$Y<}OSN$=;!ht%V` zVg5dW?!taA9A}nT1swamLatUh&NM-NJogSC+caaMsfPXAzH=dCjZmUsWueP>K{+jo z2^N(DfBubt_{@eOulGnw+SrEI8TQy8-ju{v{#=XhIbXm>qx%$&lfs|>Jo8`~@v>ZS z$IAUecG~CYxY(Sut8xv#5>NI!n zX0&I{T~4)EVLbrNx40eU#{0?PH*X}U)n_(C9e=A5ybMC)-g(reG^&YgdH%;oLh&(%%-BrM2xTMZY#cbAaJm_p!jw-&l(3>OsfIKkP={mEjW^=&5-<*rAr+^sWHGN7jR4l26Fg zMn*v2$v+Ih<#Zq(*a;E0>jpdg>p?NRTR7{-Got7Ca$9Hb(Lmh)m{0;^zeW124!3pB z+JVnH7Kry^y|-h>U7aUxbp-!>pwIi3JEwWG5B_D#xCib$^PdmgY4Of-?AdK*xUu`Z zhZmpPzLe_^#2wonF5rn@Fwko>e)V*8fK#n{ou}7+!0JCcNzJ>!&8}UOlt9I9HRUbh z!{YsjJ~1mxD(OD!WybZMaGT#1x_jgcGVtX&O-*03!7_%$MbLbbHVfIj2HIGzb+1h+ zVvz-l9^~vd{oG@^y8IDIov}&e6PQDlp48Vxba3YS)exM-gJKilmwxoy(yBy7tH>_H zF-)p9yhl>%3KSB zAd^&gSUfaTq)HVtH~U3B-Wh>v&cqb75bl$h>&CQy8G(tc4!3GUGt~s!;ijaF_XF&~ zPrlJxBS$_JpyETA6^V~;wTkQAt6l973gJCYQmBzJ7t3)4>?yd znKKV5GSBng4TdtL2xZ!tQs#MPCn3o^&%`#*o4pNt_^oGaG`-*7&-eTJ=Xd@%uh%&q zkG1Z#)_q_1b>HiH;v(k4E4WebVg_Au#o-Yj-$^@~?HBat zTK@%loGD5#Ck1xr-%2Ox649Dn@$mp|`0mZyCMrQ+^tbE2s;{Fx@U1n^maIT2M8Z#k zZ*$07MI^eh$Ouk*m^)uh8*rs3zTS7@D$ss9;$_F8*5tBBcC0oE7>wXbe{*u&S)ea6 z6)Q2^6@$;etuL#9h9HN;zX=GzTYj2F@wnkD*!K7EP++o4NqX>Qau&c|)^NsPl# zc-g==gKbJCT~1oKiE7d)3QK7-zNl6Qb9|}e!v>k`(j`=`1v;}w>-`z>|bDMzWPJs-!YO!fgEIk)JH}ksvrBbNKihvA$Uil7IAy850bhT`;fJ2w?orU+ z%U@8~r))sLq?rh$X(u^Bs!tE4mYqA?jqMSwx2ofeVIGD~SfDpIFp!4^`-vPH2C2zD z^kG)GWKWEBaGnIGQ+n!jJAGG+(kEAT=q16+FA;WUBQW=~6_vph^M~G?M8ciE$#Mxo zZWtT_opKO}rYa*N8K1y>{2P!e^=!=EFYC{~ErOI1e+NvfJwYwc#J(DCv+W0 z9L|e@exaIb-Cr;j^{XFk%flExrbz_N|GMN1VLiNs-ywZ7X>y1|gB7qcX8~B>T=N#F zRsEjDZ!CG(jSb`rG8c@iL2H{AIg{85$u9m4DeS~q0pPYf5EOME`ooY>)gYTK|Nk|R z&o7uN5&#~i_`>@G>-|nxp#N>Lb0un}T50d!BPF9=@VbMuKv!}Q+|(R`)bV#hsm%Ff zf97RR!XB+T{GY>I*T%m<PIP@sV z$!4zq?D1%CdUcE1p|hzEqB_;y8-`R7-NfmM-`1uy?ZsZr76V{E3vCp3nz1nh-t@tor8vJzG{USGO9l0 zICZ$pe2N%-r@lCwJ79)xH+Iib6Nrg;ZwH2lKpETaJIk8j^SSALv(@{GzUvjAP_Z1F zCMN_O%&v$|!S8v6CL`d4oad1b#u@W21}6mpean1P4QKh8p^?fIb}Bu*+RGNKCA&10 z#>GtO>^r5+ji~A=7QOj}mnpqpECZnPl&COL{K*G}$ztmbfPETrWHc=)7cj5#yYz%*418q3`4{YGW zmqcUJ$!FS?{Gc>m-+3r#q@0`A_Pt?0`*y2u35GfMiVQE&5HbnZrUXa!pCy^AwvUaJ zr?M8z3T?`E`3o6CsnPG_QuoaGPz86WKw)}3F#dGIaP70j?7CFVtgb^`NP~ikY~ct^ zzjUTI${Gu$iB)C`b4_{d3i7e-?gH1uQ|?PGs!6sF4x+`Bg1ipS=RElIc_?YddT#Q( zfxv01Fk>t8XNyLUV!!*g#C^drZPPf>MmmdXb*_HxE1M%+@JeVCzuQJb12dqxaN5zh zEF6dJu#H7m4P8~=DWPE?ps&VU8^2K8wdD7&>ku;Q#_1#{!jr+~-!Ne|HibRY87M^7 zEqO)RBWEz;;pOvnsV%h6o7~uHi8*iM1yAzW`_*ht7TMs$f5?shKHruAHixr$MItuG z8rbG}EA@m*%lt%GBr3PBXF{g&AOsR3@Q=gxGin+LWE!mGBSC6QAjNZ zY}7$|?xnuMrAAsNAfi2G|^4wa1%I~{;rOTb9BGH631n6pTX8`jZ zYs2|!%ce^F-7%`9pfhK&kk$h-z>tnfC7WN_&Ui4q$NqxT_Yr+ZqWvx{_YEv5Yo;Qc z@WAMfcCB}y8nHfMJaQ|1kZ&6CC<31^}g4H+PA(o}J%7mF+dK7u>MsWuCi zZEjRoDmj@3Tfl6khUHohHhhh3qvj@}4^c*pi#iT)Ud)_1KLTA-Y$08`$NiowZkth# zMHL4pW#c#v7ih=-_;z)I{)-~o>@Yc=GfCsvjcU2e3XsCAtR)`BbU1zp1#}?l>{AVv za++8y7=iccKeEb=-}TH_6w5W#j#PW2alg`6e_?j(^=Mi zWZH5gg8_V{^3K2AAsXG&X5|rGkK17ABlf(2n?eX8bnT+4I5*E?+67+-{pM8uqTx1c zP|^B<0>cD8D26+KIwNCzWNZ5Fnrc(bW$Yik$zROnd>^o7*QeaKI~$~=bo7tDMUn*( zf3rG&F^f~5hvyD~@gUzU4!1-fKMTE`tU9>f^F^%zResX#&>cn5|7UdL=3BLpa%9fK zH91WJq)2x77p3thK?scd9!wFTb>xdbh49w(%m`k88HTFd)LQ%-R;*%3H(rVV?iH4h z#^rCaW(DUP;R+^c@edT;|5}8H9&{j6|FQ+zoj^G9CkY7P&?yz5$9aSv!XSUpqU2eJ zzr66Ehn=vPXLu0(b=FN8d|@ZmbuIfj?>Ohi!qALdMg~}Wz1u0L8@7E#z?U>~4m*(5 z-qyEm_|XTUa+W}z7VRq5ES)zyY+c#=HLHD>X^zEBvD?!iIFR7&6DOD?RhV00s6tcp zyP+fqDNxJm1V-oA!~3x^Rg9{#7w>;}g&CSCF^_Ac0I58;mikXm75}0NSI%4iY1e~G zO!x)h&yc4OM$LQqv(v`5hbv)oB{|#GZ-QEq>u`^wWGWajW@@@gk*f&?XEc zyxDvb02x&JESq&ODLcW~X728te}&fNn3s(i&YzN?yAXZ8EHFS}-+u0}i$dGEOZ@`~ zxpNa{3pYm9OXpsK2zti#*%#w~8};_rV)8RFFLEnQZMx6Di;@qx?DHRHbK;(o3_Mx8 z)$r1;f~>(pIZoSqJAMRFhJ>BcRn|;9>0>MWYwngwi1_hQNypcW{6&rab;K`=QSTJ9 zzEd)tp<12Uz4SdmecW<1VoIlMY>O?Yk&|t8t!AgW87}65_b7{!^y>plg92g;TZA|+ zY(4Ii(Asgv+9BJbIV7km=s2Rqk)&$uPD&*@5bdjK%)$2kgKJ#1ecdANmy{YP=vHj^ zG|BIuL7EVz+~Q5M4s{8d6*tFmzn%p{0hSWN&>d1;V6c|Pd3b|Ae5HJZA?>Eol3du{ zu5C6>2CZPt5P|?AVJYd&AT{DD*jhXPL`;4I6N%e>uB+2>mN_6Pm^b{QN-+Xx9!6vC z)?+ObB>KVUyq3en%ESE15a5FoO4p0-MT&c$;yR&h-?~3(BKy2b_now>CS$?%qnDoh zH^E?|0p}U>t9&RZ2I-+_v+^~Y*$eWca@bLsmrQ&8XcMUea;7#@yjWVZj-obK_q{zA zbz4K9wi`RG1hnf8cd-f!s;iGEH&PvA4f7bI+;FQdra@lYr=~Dm0WgnG)bRMHD z`6C1gXi)69R0@4@&R|9Q`j4EkIQY0S*^BIQG&WY1xnjKU@hn}Fb6o25)xM^w>$E}4 zU$!il(4IP<1%$62UOW&KD?Z)+C?EWioG*INJ&ud`92N7HOL?9c&7p(i314`m_EGs) zdS+_%XL=?^T_l;5U_4qCM|DuSAf451fYRbe4<kvw$Z9LqzwEl zd#v@>kI*0|Ve+PlC2*~KmU83Y-Rn}h4JFg$$&ra5@tku7 zM*}XoEo&&QXIsQAcsu-RV*Ke-0UXS^HVcQEzagU0TFD)0I(;p^buC+;c(B)G!A#%6n1@jzcP~DlA9F!!H ze0v2YyT3};YWiVC>xet7l3MJv;G$y&1?XO74DAonW7RoPCvXVVsx|3 zVUL?LWe6Z>cp_>@W*hZ(3~Ca-BN^?%#RGh z>LZ|W(pGSEw=^+fa>w5SM0v#FxK(vk5E{?_k!f` zMf>n`UYPlh0`VHhwoE>dgMHzWuwXd~zNlx>_u}B@tE4gX2sN8f*09VKaq*O=+JFn8 zWDMAnG~X4rbTgxa!EqKWD`}yX05C|&#O-6v>;)5_XTCPW=G7#_%R%;3@6=VJZ>+y} z+&zlGVCPqJwP@pm%baF-QyOGJu(1MCLS`}I4#L^Wm*jdJNgPS_M`iat#Fud|$8Ttl z=^9?(yAgUgQ4l0=%{TLAL$NGH7$@^#X$-rxw?c`|%aK$MK(T}wqi`UhY#VG6^U=7a zNbGnQ0Ah6k2j7;YXvmmLgUtx|bSi8j4>pzK_HGC{IQF`rC(+frD45iEh|(4jd!cf0 zr#i2;&KPnKoHfa%G$asEK0-#XYxoKnTfX@)$nFhe*-3U4i9@U;oa3b9+d>0}#umVI zN!N2Psfo(T*9n=)Gg+wIAM!)teyv01Yl~wdxT8n! zNxu)EIXXp7YMcC)>KjSm+Xv(zG^o-?>fZhE)q0+>PMw-j!uz0t+O6c7R1S?!^Oz2b za4m^)f7v?XSp1!1d^W{DaxSEG#habG-ids?1`42S2PT$Yv|-jqQ`AmW_|fyqN((jy7;^Klq@5cKol_k~LP3`GA17$zHF>u*YpNvB8HE zRD7*^sdS;Q!jce}gfLJH+_U#Mn~!+-s^$b;XA0cXwCURjU3>*H96{r9QzwjLF)kZX#mNZAV#0(Rw2I2;` z-Y)^%zx${rkdEn!I$0!oMbZqr^xRixHC90b8hPr&C#1e^CFZK>WrATH7PwYAH2vmL z3Hrd(LFYIfNRmmxv-pvFBNla-{2w4@aHobj3BPE0NTN|Cr~6-@#4aXB-&>^wx@X4B z`5oMo{JY!5)0`2XFzn-5QFAYQim?eD`v|-SB-S~Fw~i&HAP?7(SxPDYQ0wkPxt?Ve zZ}K9_I&uM*3X({>*x%)n0C>lKmik1cxuA%DlLbm<2lpKVd$Zy9z6HC`ZuD`>Rg z=Py#^zPPPvmL`e{umcKYJ;TMpa%E7>pArFZbbAx39v%g%A|Mz>-GBPhC-z5609YlO zKveeZI|2r_L*m>7UuD|y@hmThJ|}2T5>kwL+HvfHh&s5G3UkgohZ(8LLn8+lJP2)t zi$3jbAc+q+&g>I%(0Sg@Oqtwv79#g&6BTH*Geyf|WMbdrtw%d8oJk+c&Fl&j4w7m) zs3ZJF0Co+~ym;O&eVOGSd1h7WHxe}{8GF5rNQOM(zafwB?2fZDx2>h?Ebi*qqd|cM zKq%G8T{e-q1s$d%kt3SCKr|5Ry08G4ac|?uR^j0VKddTf-cT@?9IG$KbtH|)b&nO^ z_nKD{V-8*(^17Z+y{A;qAx}OfhQ>%O@U8N7ES*miHWMP*q{{4@_z&xpl_3Yw9ueBGR2UcYWh^$u} z^`ihUDeda~6EEdnbpwG5NExjg*~CAQ@@-UY;nKEUpV-SZaiHbY3uxsmLV|c}`&_^P zu=Jy&D?20U4s+a@t!|WdE@1$eY2yegeiPIV`rcnc4IsI*iM6#-4b(CRAO+%eg7Ucw zu!q`K@po%KBIjb7(yiZ!Bbk!YL0Z zZ8fAdrz0dJxCM&**$(%KC$9?-v|O$}la$d`?`dU-%Z{OXv4Och@aE-Vx@2xZ1%r)1 z%K@9;WX+ikR_{!HRi;&#QCrw_o$mqhjX}c3OZi`cl>c>xOW0#f z1YC^;L910rW|_?Zr2Rqe+^fPt6<$as($Iq8Eo4P@pzOiK!IU!*ku*6##c=H%WEd5! zX?byx43YL$Vpvap#DDQ(`Fq`v*aVRf}s{jcdm_P$MwJ1d5Y7hKo1uyPPe*F?R7ms+FUekf~P z0t$to-2+(U&0RASyiI%W#3R}YGjssQpkNxj9o(XG1g#KepK>g*NDVQPU=b3LWz?7{ zQ{^o}CuGm&qy;bjg@byWG&=3dOAvG+w@LSKLNW=Rr;yV7jqpm|e48iDj3f<~I&!s+ zF6tMtk1$``323BP4cDXHH&DaC5bx|WwJJePhSF4{QpU%Mpssqwtewo$R(vYGv_8{OUL+ul9O`q%k zCG(KLP5}K7oXt3zkmp<3{c0_;&k!S(PF!Vwvp9GMKKu<79SEQsW~SB)=rsa9hR?>@ zts)6@P~?Z?n%jkih|hjYaRmVEF&~3dE?^)^i19l7T&9ceXF>CZLcwt>T7kO zg(5e-q;dY)WwPnbbQ)y@A~AxL&k$H2|12PmTq1fa>Nn&ZJ4#B%5xtV4O-u`rx;_uE z_e;n9^s$!ux005?jv(R3h@k7GG~m^{J4t6xN79(lteL7Ag3W~v+Tu>fHNl)6(i_ZY z+A{SlF4Fy6m=;32JO-6(gyx>$-yQOZX2f2jBXzV?imO>I_O0*zhE+g`@n!W3);9jk zTk4ADPUB7B5O1AKb2bTG3|WcB4kz-!HF84kNvG#8Q(s!_l#XNEqe+1ZvZXkN1c?8g z3MsAD`)g(=(4#+@tgWSh$r2;&IAu^!o9re0QE1IP8*(L}Ryp~);0S-?4$#|h)9k^a zMCQ378KZ@j>=boXT)m)AE`I1ir}IA%c^=}hUMT&+RmOq5aX-|QdBWQ`R%DGFkBc(zxCP@lzfiO4YBebyOv?Wl8ppfltHO7lE*03VKRBxlgJh z@k1ECk25b~ocCN|wVAW|m7)$wISnSeu%QppGt(%U68jn{9sG61DZhjvGp}V0Wad7K* znLJvXEb*$O(K;}V7B}pPs|}8JH&DUa7T5^49gAv?ekkJ!G#`h z{R`BwAo|GSW`e%d(=y@Ae8PL&2ZW!xD0KjSVi z^GSBL5zu(y1wJgX-b;7nft3J%y!=1mGmYQfo;xDRDtK%AQ(#2sA`tkP#=6WIbkAp_ z)h1V`Hv-g93+G0wNFKnt9)Ed+8_;mz^_$MEonF=Ap~0=6TtHJ>-`M}nxc;v!M<=eg z_%hgg-Dc2JsuPI@4fsZ|B{o`sm))7nFF80oJH<9yuI*PvuM}ErbrP)E zTt2~BSLr@R!4eD>_*0+jht&%Nu&m)t0=z|-SM+r1eB*U7&AerYy^UeEb+3A&b=zHn z^_05DzT%bT=+Fy5pb?v&XRild2Q1ay?YQpV>@?r+sT#&1ndYATV0{Q^kS z19O8HpThyc1+h~~TTM?Z@4{j(jY~KvnZ$C%J-0R{&wY@hfw=+uPK9* z$1(`2X!b}budeV+}X3)838+g@+V`Sy5E>5K!52LL^3rZ(w4$N zZ6~ENq_=TsQyo;qSWR}=H{u)7*Y#8Tifj58hXc#KMIY?mO-Os?(2b7!SBavA_ zP}22B8i2X4d`*T0*h&AQ2N{ zeICY;nEy5&pCirLyVKTD$z=NjU2dyJmuGlP$WU2IEoGF%njHU3>_RbP(Q|IjJit@> zWQ~F9DguQo1fcJolJ_Aw*)|?RYBev9*zwLyIIe^fr!<6g101ZyNtd~H6W?<@8TX{# zK5#Q==KDvCgwH*vu)o0$xPfx6@crT~aNz1=O9S@Pfg}M9>s;*JX#z+zCxc;Wdhf$> zpx@hUMy#9IQ<@^l$X-xQ?5}1#jUQ?XmE(wez@0xIXv?%ssS3$6$05z}*uN-JyKS$K z%&&?Ztstpr3;5R91ZXu~hsMAg5&x{mE%X8Yx17V!%`+$`3MZRJO+rsC_ajzk+?!{P z*TpkAhk+8*+C`C>goR0!mIEQx^z{4U^T#}tY&%Z!eXJ=rRH&og^~ z`6K@k?R0^5x_aK-fmVaf*!|oN@ein!f+!r;MAx7z=D^Y0I(15F-4NROrqEHp`P$k} z7vk4?8%EUs2WaQ;_jNaiK3vN#)Oc91HC+e@8UBZG`Tqv5tP7Y#jfkKj?dAnzSbN<` z=6~PveXe!K>{&Mo>2>1oUl?=7&M43XUI5*}N13;1-4$A-$XdIaxV0TWsNxf%-?5nR zwX`R^>(j-(v>)5FB$#`s*4&qhivzGU?MWIgRd6Yteuy*P8Au*{-h9AgHj-wF-0icf zWLMFG2e;-6#H@=nH#v)0v$B1xVUR$c{>SO^n$G9k1%zoYGS&B*srI;(w<4PulDo(4Owsp3;D@oA#_}z&fOEH@ZE}wq3Q5!2OKJ+h*Yve=Injhi}fZfz1n~gXr zzzE>27`uhcbJWDka}%WPJJ<{Lp>`=2Y{^x9-+*ayYsrdw@bzwdQhb-Q)Av+Jq5&Q0 z@7>S#@yvJ6()G*MJ2Mv=sbv;D=DRH)_8u)e7_x5bN`N&6mFj@Ajp@dlodiN9#h1@F z_3Zs|uYGlcms<;Yg^b$ZnbC5>n~w-Bf5?_xU0wb3#?5H|vxcnodgq{8@5U{7Akle2 zeE|A4?6OeB%I>@6H*C}m01!8q*2WD6Kl=n?50Ma_THVi3i+?KVvDddL?i2vj*S#UOvd-xk1v3mfUu*P_j2 zJ(shCx@Gpvs&+5vjqD6cDs&o!d-9%&65?`0(g`3*Kde@>JHMJimwmZY?7hm;a$#4I zZvSMk60^Txu7l;6qzD7d^r{K67NA6vKlw%MkgIQ(50SvmNn%#Ipb)6=EtCh1Fz#mW z-V_2p9=EK9u|~6#BN}uU5jNeQBR5pfv@ADNQx0NdY`f+zJIh&}L#Au67%*Bp*ID#~ zCT;gb^}}2U&{?!Jh&b?kb31p=e08Bs@d&6Y4t~f`)pea|JqOpQ#6nlesJiL^_vf59 zJ{1_ywa<|>Lm28t)Xjw5KL1#qP#Mez^_{8E;Ldy?$L3WHo?wgN%2r*1l3W7S>))54 zps`6SAK?pI?;2FTWIOu@0H(3U;2Ks*7s?5?h(o615zm8~VJ~L9xVUa3cRtsaC1(c9 z9_7zMKV9XdPivzevyn2k?YSs)xkbJrl%e<~s0*)|aNIc2eL-H_oSs5Q)jmZnQ|D{+-E=d9W^%9` zLhbNLPgR?Y>IBc5ZMNSu%$h%yLcnLa6RRm(Bk~05E$F>|+y4WULKIm~q5$s*27G=6 zklWSV8rU*t93`k0zM2I}dM%Nl(a>Otwa9TI{>}^-Gz!!!0l~)S#ufx@!u%L58hOu+ z1TcU8>5AH~eV= zIVU*d`#$+;lO=-I_PjVsA%s|t7?Qs^Kr zpC`RWe>jW#`Xl^DtN%=y3KXHnF0Ae)qwr!HP^N~Ua3|Y}b}GZCm54v(nd(4cHu2zh zrcw4a$NK~Q*_6ftpM>ykI z&i>=(%4BF(tTm`S>lrEzP*O_!%3hRcQzFo4f|Kg@3vJ2h+>%k?nn4rTUB zQZ!O`57ZLBdbXtlK3tr`oblAegZzqW5<36x;4aix(+knnqtdzLUBk+`yuiIDv`qdW zOu=uhK!lSTPT+V3MLg(%ZPK1 zaehZs|3k6k{Mv`QsgeXfw=;PYwa_b@$OoPyujFbVumbnL(6H;i#qaY&!)vX>|6kys z4V&4?$8MdA1Upk)vlBK|X^I-bDT*Jj_nNP{u2n`YOC9Wr%p3`Wu-!%WUvn4!*}<|d zVttTI79XpS3SwqXOXmPmLh$in>+uBArush&5~EI$hU|r%Xc|aljXb2o}?`3fm@y|?yDD+ zLG^u7w(ySY$2#qKVXFCa?AF0g&{N10Y2RiRvODH#O9K{5?Eaz9>R;&xQK)-&$s!Bq zGHbv!RahKq99;hdXQcPdUC=e6TjH5b;!xXLdV)e2zV4;MXj4c44UY2-&ZB;ihj~yg z-E-ic)CL!*4jNI5(T8oO0o|{@|BXQ0BWf8UUfDn>hl=T~fi(q-$8Tk=zpu;19wko$ z(&jK8ens=o;2zz$O$UyyJ96kcr0t2#sqX8&aD#h?M<=kj&h} zAqc|%Jb(PW-zl=UhTzgyFJ@`7}rwz_@Np{ zaHkLRQfX2BObXis-J#wLdAC0WG<<8Iw_YL)xJ%`9K?+-6gjYVYw-KC(Ut0-0GT#CP z=|9xz)|LHuxURa$#_}A`MqELjee-^|rA)|6uzi8(%d&9c+M;w+gq}%Fr?ECsz-SVB z;z(@FTdG(#QV@w~!Ey@{2I`GTN~Uu&iTSRb$2}!)^Z@y>_5aN6bTkc-SR%oQwcgKb zwZG9e@bpANE?`kieoD*L^sJ>w5g{d&D@8|%*f}eI`uN#LK;vdv9ugSxg&_n>s-Nac zF&4+O)~VM`jboFTNn_nxDvFRre#zfv>aNRLcFq+TTa>>+3=zwoNN zu-WKb;=ZA>Hh*&4WTf@M=w^wb2^Z*_D!ilGn$M?Kq^q`ET*Qy4|9*R z;SrvTt~IRnRHC$QJX6>YIOkr}eQIg(Q{m-i$ya&qdps@g7hQf#%)U|1zlK$z`_r7l z$1TI>?Ic>VWEkw~T_VlPPfjA2CTKcwG9+{;8%s#dU4G?bLFdIj-<=8Pw9(vsFceH% zQs06}g4QpE_8!Xq`&d>!sqDTQI*cvSb-kxgm&{>5s&1XUCtHvaHMu#w{2Ch%!>)j* z12^`ZedDC>*-7sr4)h%F?hV>uFeSt`DY#Tdi)vYF@)Z{GdwE0u98-t3=jvx0gy6VR z%KKd!2t!F`@;iaH)cbAH=cuGpd3Q*^lUBWG+9jo$HPMYCO$G7hB^KCN6GC3bhrHqxU7X*fQo#M`_?(l9TnuLv-XLt5rSi~iQVhSjfzRn@QNZe3IfcYbn= zX+~1cJsvb0y1B!#LkZW3vmhu``Xlq<9TLz^y0r(I!QD%6eOa!aL1El%Q^FDu9qY1n zMO1K-RGE@gGBCQ#s=~%?btRsfoWf2MIh~Ca;FZ?Xy@k&1VF1$cI@13+JAQ(2; zj3SP^(hE;VG8=c~;cl7Z-&70w!>c5OQ{(4lY{xGu3u-tq1Zw1_;xd}mabrpFjKM6F zP`XYD){{%+Her&lE4y&sW_$NS)#A*zE+zl6zEV#7cY3A$%oAPC$qv19%}K4v+SNpY zdviiN0nJTHb#N;6LQ4hif-_vQJ*<{J<&UXa5+l%Jos|y-QYt902a*rq{%}dQaLLS9 zHBs@d)SAP2Gn!c@w&wT`GD3IYc12q%z?8AA)xzrV`Gsnj<^0qrH}`WGVVH08F@*$8 zRNh6)${_XOLBY9(=UtW_N%y}r(`8towZ6;Ee^pY%!IY@aZKq{BoxeDuNylu`k{sjI z|CIwd>|7o$>duYA4`rn}%vE*8cqGLVsg{J}pI1DIjrEff@#_WRXMb&Sa2BA|yRLr@ zYyv-aZsL@?PvN78RNKk$@2!%4bj_N|%7sp<(_@df1Pf0+Iu5o%4!=h3Y-5+qQs<;F zqE$~OpbTgmCUF&5>6rt?x87OH>wTp{#B!Nk!iA>Y;a$yiq|R3-r3wk-gAPcCnew8L z==tX!+>S&%iKBYVSwXWhC?gTq{zd@P`iz#|-~MZ)j|nHTEn`$`T6>yz7Ov39&NNf3 zdkD8DXa}X#Rm*ozU*8Z;FPWegi3E3ip4p(nRL zr5i|j_6^qu(v`Jm9y)Gu~qUmY)mpWFV4RT?3(@FxoshLGX|G?m2l$yCT3DEr%H>u61D#o`I>Qxl7WbifY zs}3XPwG4f^)h#w@4xGYD*Y|5z$RhHsz@I)D=Daw3Xb_1qTAYmrTOX()G{%Oa(>N53 zU^8t=gE!t-%r;xnaXN?w)!?(8+P@qRjL)CQyRJ~u*h`%CC?g@rXwP!SgWv2lw2)d74&&~!MN)XoE&AUr8U zU%DbZ8(x(4Vm7QE*GpeG<+hZA6>fA?vzzbbEO7^CT5vF=sQOOH2?fGzjKrjY?7&F{ zg-M<}ITmN$o{Y=&G$xSR^6jSxCnX$Ad}X0sY1hUh%au?@J=NStMkWuB+dVxYY zHsguTOS?EV@FT|qcXUzPXldzo3(V2nuT;r0ZhsW0(dO9aU5587cD1Y~*e@`O)4=kh zo%&U~RhICWCkP9>(Ix^q;cnb{W@oF>=Z7e5CIshObXDUn4QSZ)(#9!{LryYf8_;%a z(eds}UA;C3wS!vg`1rU>cvrgFamDWG!OC|00IuFztS>Ja z)rOor#^y(3oU-(|W@z7^KU+OtwF?r^TO^OIc5^vK&u`#>1HZZ&4p_7@y_o<(=h^8! zE2r9@DsZlon@W0b&T2FK{MnBg{Co>grOKj`KKJAAf%Sdc4lMIyWdA>&MVMQG~d z0H!K$EWN(Ve7Z!bxq5gnWW8S&>bU>y_1PGtFxrjL#C|B8ldsdtl;FZuyZ%xyc`=+H zcqyUr0oEm%tGPFbHT7?d2|3z|0b$)zuMe;mg$DootYLbgs0%@32c?WfCgm?zj0mJgPuVr*0?v z7@TlCl$A%ae>Hfir{WH#yeSmtA$5IIOo)BA0tw?+K}zH2B612p>$~kBxa1w0peoDw z`eqO(kEHH1{i=O?{L0-kTb!@xTY1dH#+(Y5j4gB>jr-mzhBM6}Ax-lL+(dX4Gg4?O z07vh$17G`DVDj}yD4UfVIM1uk?9Br~^7n;pFsWPWQ5U9~(gyM^+dc+YzX+~jSo5@A zr;)zi$S8BqC-jWj*Ebfl7cZ~5V(g4T@>{#@W{MDRFp0w!wBnb5TUaB`q>B30MJ#0r z@?)@NlU>RPkJ~Z%(ngnmE#E;mHY>>%8|t5%cyG`xs&w#iMyB)cnseP71hmW7u$c=RP(r`^_gZX+@G{l5HC+`ePdI3% znM0lie)`Z6$b*OP&FuU&M;A8vPnoKa)3yqRVv)=BpA%->5?=ngdE^o01*C14UQ8(V zxhHpFE?C{L9}lf^jAyrt_#IC|v#mPiFu`!D{ot69?uG}h*ahO!`ZHfxk{XyzU)F41 z?T61k5b;}lGX8&J43FEpgI+D4X%4cnR_^?g6CkGs_F5hhI5|TP{dP%XjXMj8l(rMC z^A?j&{yG0|IF*0$I2{z-I&Jobm*)mgI?ZoV>YAPy4rW&G!pVR16#w&)?=^Rusku2r z%sWHmszZcq@Z+XPHJKaFUA}Gm!^G{=B7W9<-S#*~*hR-Nm+w)Iq=AS91ib3Sv+|cO z7#^)_*{k|9i>gwkUfe>0Xv;FmpYQG1mPzz;)mRbNhG?WObmi$!w6iIhOBzh5R;v+A zvxG2}%yeZXs1p0RzM0&VdA={xRGc5wwMELl(FH}N{Owvn`i^nXx9HD6`J@eWBhq_> z=sTuk>IcFue&E;bsl5Nqu~~kSM;$T0)O57+%^9>Q1YW0Q)ZK*n>`e zmPOTTU5<)0k+IQf_2JmIMyhz;ib1s=7>jUFsJ#&K2=ztq3hcaMnQmivf| z`3sYF)vze`Bh-_f@*$e}BZ+BAaWJX-S6`EkE{Cp5!!>umc$n2@53x(ozWCe`b^XSK z-K5yb!SfDczaF9u3UQh3xT>@F`iq4mTJn}*;}H-L9bj|LN`LYCD(!tDP!C&mT#oVx z7|eA<;o1XVZ|)}_(b?4zPD0Z})_G|!t;n9W;-8$Ui7XuaG-A!4YWfH7gI{n=`0S#; z+Tcfd45GeDZ@noXrz64xJkUh4*oyQpXt8xHLr+H*zcl}`ZIQ|6bz*09PEOwqH1L*Eyr zhGHLLKsbj^78_4_ZQyHpV5Q*C`;3VkYmVcl3PFgipu4bx^~l;j#D$GLChYa;4+XWC zO+j0{?0(-y785 zaK0O_O%gpNOC{YfUE#B>G5^L(k2`FdA2PpAP|F?+y)EJwVo}MIkB`4y#tl0rk2xoH z>fRft=(baN+}8}O#Hpk$zP>*h{ag-y_5FaJhy1s53)eFgY&2ig4S9jrzq&1V{ZI`4 z>8;9&eIH)y&Gp3Op%$wxXY-QL)we%JsVp6P diff --git a/docs/images/GetTutorialGroupDiagrams.png b/docs/images/GetTutorialGroupDiagrams.png new file mode 100644 index 0000000000000000000000000000000000000000..6a4b64877e83349b6988f94558784e3b59a98344 GIT binary patch literal 16420 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 literal 0 HcmV?d00001 diff --git a/docs/images/GetTutorialGroups.png b/docs/images/GetTutorialGroups.png new file mode 100644 index 0000000000000000000000000000000000000000..6a4b64877e83349b6988f94558784e3b59a98344 GIT binary patch literal 16420 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 literal 0 HcmV?d00001 From 01db85f161b53a0452ccd10a9fad4db5de9d5dee Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sun, 7 Nov 2021 03:56:19 +0800 Subject: [PATCH 07/10] Add SetUpActivityDiagram --- docs/DeveloperGuide.md | 8 ++++++++ docs/diagrams/SetUpActivityDiagram.png | Bin 0 -> 13958 bytes docs/diagrams/SetUpActivityDiagram.puml | 9 +++++++++ docs/images/SetUpActivityDiagram.png | Bin 0 -> 13958 bytes 4 files changed, 17 insertions(+) create mode 100644 docs/diagrams/SetUpActivityDiagram.png create mode 100644 docs/diagrams/SetUpActivityDiagram.puml create mode 100644 docs/images/SetUpActivityDiagram.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 33e8bc2736c..ae8bfa2689a 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -492,6 +492,14 @@ The *Sequence Diagram* below summarizes the aforementioned steps. Storing tutorial groups as arrays in JSON is less complicated. * Cons: Searching or filtering the list of tutorial groups by group types may take a longer time. +### Recommended workflow for setting up ClassMATE + +The *Activity Diagram* below provides an example of how users should set up their tutorial classes, tutorial groups and students +in ClassMATE. + +![SetUpActivityDiagram](images/SetUpActivityDiagram.png) + + -------------------------------------------------------------------------------------------------------------------- ## **Documentation, logging, testing, configuration, dev-ops** diff --git a/docs/diagrams/SetUpActivityDiagram.png b/docs/diagrams/SetUpActivityDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8c45fafe26f35c844fe4e22bda8a4c0b5e32c578 GIT binary patch literal 13958 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 TKL+dwdm{NRd!+Mj6q6Sar%P?4nq6jm~` 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 TKL+dwdm Date: Sun, 7 Nov 2021 04:16:00 +0800 Subject: [PATCH 08/10] Fix whitespace --- docs/DeveloperGuide.md | 8 ++++---- docs/UserGuide.md | 12 ++++++------ docs/diagrams/SetUpActivityDiagram.puml | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index aee98ddfb97..989af9d9669 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -341,7 +341,7 @@ Step 2: The user deletes TutorialClass G08 using the `deletec` command. The `del of TutorialClass `G08` to `G00`. ### Tutorial Group Management Features -This feature is split into two parts. +This feature is split into two parts. * Adding/removing tutorial group to tutorial class (Contributed by Ngu Yi Yang) * Adding/removing student to tutorial group. (Contributed by Zhou Yirui) @@ -355,7 +355,7 @@ ClassMATE allows the user to manage information relevant to the TutorialGroup. A #### Current Implementation (Adding/removing tutorial group to tutorial class) The class `Classmate` facilitates all operations related to tutorial groups. It maintains a -`UniqueTutorialClassList` containing all tutorial classes, where each class maintains a `UniqueTutorialGroupList` containing its tutorial groups. +`UniqueTutorialClassList` containing all tutorial classes, where each class maintains a `UniqueTutorialGroupList` containing its tutorial groups. Tutorial groups are identical only if all its attributes, `GroupName`, `ClassCode` and `GroupType` are the same. `Classmate` contains a summary of all the logic of the interaction between tutorial group and tutorial class such as adding tutorial groups to tutorial classes (e.g. `AddGroupCommand`) executed on the `UniqueTutorialGroupList`. @@ -411,7 +411,7 @@ The *Sequence Diagram* below summarizes the aforementioned steps. * Pros: Simpler to implement, easier to add or remove tutorial groups. Storing tutorial groups as arrays in JSON is less complicated. * Cons: Searching or filtering the list of tutorial groups by group types may take a longer time. - + ### Recommended workflow for setting up ClassMATE The *Activity Diagram* below provides an example of how users should set up their tutorial classes, tutorial groups and students @@ -525,7 +525,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * 3b. The given parameter to edit is a Class Code. * 3b1. ClassMATE removes all existing tutorial groups of the student. - + Use case resumes at step 4. **Use case: List students** diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 5a808c5a5ae..1b31a891cda 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -57,7 +57,7 @@ We hope you find this User Guide helpful in using ClassMATE! 1. Copy the file to the folder you want to use as the _home folder_ for your ClassMATE. 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-annotated.png) -1. Type the command in the **Command-Line Input** and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window. +1. Type the command in the **Command-Line Input** and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window. Check out some examples in the [Tutorial](#CLI Tutorial) 1. Refer to the [Features](#Features) below for details of each command. @@ -222,7 +222,7 @@ Examples: ## Student Commands -This part of the guide covers all the commands you can use to manage student information! +This part of the guide covers all the commands you can use to manage student information! These features include the ability to: 1. Add new students @@ -394,7 +394,7 @@ Examples: ## Tutorial Class Commands -This section covers all the commands you can use to manage information pertaining to tutorial classes! +This section covers all the commands you can use to manage information pertaining to tutorial classes! Features include the ability to: 1. Add a tutorial class @@ -510,7 +510,7 @@ Entering format: `addcg gn/GROUP_NUMBER c/CLASS_CODE type/GROUP_TYPE` * The class must have already been added to ClassMATE first. If you are unsure, you can refer to [Adding a Tutorial Class](#adding-a-tutorial-class) - + * Tutorial groups are identified by GROUP_NUMBER, GROUP_TYPE and CLASS_CODE. This means that any two tutorial groups are identical if all three fields are identical, which is not allowed. @@ -628,8 +628,8 @@ If your changes to the data file makes its format invalid, ClassMATE will discar Action | Format, Examples --------|------------------ **Help** | `help` -**Add student** | `addstu n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS c/CLASS_CODE [t/TAG]…​`
e.g., `addstu n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 c/G01 t/attentive` -**Edit student** | `editstu INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [c/CLASS_CODE] [t/TAG]…​`
e.g., `editstu 2 n/James Lee e/jameslee@example.com` +**Add student** | `addstu n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS c/CLASS_CODE [t/TAG]…​`
e.g., `addstu n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 c/G01 t/attentive` +**Edit student** | `editstu INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [c/CLASS_CODE] [t/TAG]…​`
e.g., `editstu 2 n/James Lee e/jameslee@example.com` **View student** | `viewstu INDEX`
e.g., `liststu` followed by `viewstu 2` **Find student** | `findstu KEYWORD [MORE_KEYWORDS]`
e.g., `findstu John` **Delete student** | `deletestu INDEX`
e.g., `liststu` followed by `deletestu 3` diff --git a/docs/diagrams/SetUpActivityDiagram.puml b/docs/diagrams/SetUpActivityDiagram.puml index 8dca907ab24..719638d9b2c 100644 --- a/docs/diagrams/SetUpActivityDiagram.puml +++ b/docs/diagrams/SetUpActivityDiagram.puml @@ -6,4 +6,4 @@ start :Add student to tutorial group; stop -@enduml \ No newline at end of file +@enduml From 40294c6a045dcad3397866a440c52fb026bd43f9 Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sun, 7 Nov 2021 04:21:02 +0800 Subject: [PATCH 09/10] Fix checkstyle errors --- .../java/seedu/address/storage/JsonAdaptedTutorialGroup.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/seedu/address/storage/JsonAdaptedTutorialGroup.java b/src/main/java/seedu/address/storage/JsonAdaptedTutorialGroup.java index 9390ce806f8..c3a2e49d07c 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedTutorialGroup.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedTutorialGroup.java @@ -5,7 +5,6 @@ import seedu.address.commons.exceptions.IllegalValueException; import seedu.address.model.student.ClassCode; -import seedu.address.model.tag.Tag; import seedu.address.model.tutorialgroup.GroupNumber; import seedu.address.model.tutorialgroup.GroupType; import seedu.address.model.tutorialgroup.TutorialGroup; From 5be9bd81da0a0edfda96dc4206fad3b06c97b745 Mon Sep 17 00:00:00 2001 From: nguyiyang Date: Sun, 7 Nov 2021 06:00:20 +0800 Subject: [PATCH 10/10] Fix deletec and deletecg bugs --- .../logic/commands/DeleteClassCommand.java | 5 +++-- .../logic/commands/DeleteGroupCommand.java | 4 ++++ .../commands/DeleteStudentFromGroupCommand.java | 2 +- .../java/seedu/address/model/student/Student.java | 15 +++++++++++++++ .../logic/commands/DeleteGroupCommandTest.java | 8 ++++++++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/DeleteClassCommand.java b/src/main/java/seedu/address/logic/commands/DeleteClassCommand.java index baa55cc93d4..de5771765d3 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteClassCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteClassCommand.java @@ -2,6 +2,7 @@ import static java.util.Objects.requireNonNull; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -31,7 +32,7 @@ public class DeleteClassCommand extends Command { + "Parameters: INDEX (must be a positive integer)\n" + "Example: " + COMMAND_WORD + " 1"; - public static final String MESSAGE_DELETE_CLASS_SUCCESS = "Deleted Student: %1$s"; + public static final String MESSAGE_DELETE_CLASS_SUCCESS = "Deleted Class: %1$s"; private final Index targetIndex; @@ -78,7 +79,7 @@ public static Student removeStudentFromClass(Student student, ClassCode toDelete ClassCode classCode = new EmptyClassCode(); Set tags = student.getTags(); List marks = student.getMarks(); - Set tutorialGroups = student.getTutorialGroups(); + Set tutorialGroups = new HashSet<>(); return new Student(name, phone, email, address, classCode, tags, marks, tutorialGroups); } return student; diff --git a/src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java b/src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java index 02e253cadd3..1bb888fb0e0 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java @@ -63,6 +63,10 @@ public CommandResult execute(Model model) throws CommandException { model.deleteTutorialGroup(toDelete); + // filters students that belong to that tutorial group and edits them to have the tutorial group deleted + model.getUnfilteredStudentList().stream().filter(x -> x.isBelongTutorialGroup(toDelete)) + .forEach(x -> model.setStudent(x, DeleteStudentFromGroupCommand.deleteTutorialGroup(x, toDelete))); + // rearrange tutorial groups in order after deleting model.sortTutorialGroups(); return new CommandResult(String.format(MESSAGE_DELETE_GROUP_SUCCESS, toDelete)); diff --git a/src/main/java/seedu/address/logic/commands/DeleteStudentFromGroupCommand.java b/src/main/java/seedu/address/logic/commands/DeleteStudentFromGroupCommand.java index 2a615be1209..5ca21d51600 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteStudentFromGroupCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteStudentFromGroupCommand.java @@ -103,7 +103,7 @@ public boolean equals(Object other) { /** * Creates and returns a {@code Student} with the {@code TutorialGroup} deleted. */ - private static Student deleteTutorialGroup(Student studentToEdit, TutorialGroup group) throws CommandException { + public static Student deleteTutorialGroup(Student studentToEdit, TutorialGroup group) { assert studentToEdit != null; Set updatedTutorialGroups = new HashSet<>(studentToEdit.getTutorialGroups()); diff --git a/src/main/java/seedu/address/model/student/Student.java b/src/main/java/seedu/address/model/student/Student.java index 1a938ddc7e2..73b6f664d6d 100644 --- a/src/main/java/seedu/address/model/student/Student.java +++ b/src/main/java/seedu/address/model/student/Student.java @@ -118,6 +118,21 @@ public boolean hasTutorialGroupType(GroupType groupType) { return false; } + /** + * Returns true if student belongs to the tutorial gorup. + * + * @param tutorialGroup The given tutorial group to check. + * @return whether {@code Student} is already in the tutorial group + */ + public boolean isBelongTutorialGroup(TutorialGroup tutorialGroup) { + for (TutorialGroup group : tutorialGroups) { + if (group.isSameTutorialGroup(tutorialGroup)) { + return true; + } + } + return false; + } + /** * Returns true if both students have the same identity and data fields. * This defines a stronger notion of equality between two students. diff --git a/src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java b/src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java index 0aee1ffc375..2fa2a178c15 100644 --- a/src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java @@ -11,8 +11,11 @@ import org.junit.jupiter.api.Test; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; import seedu.address.model.Classmate; import seedu.address.model.ReadOnlyClassmate; +import seedu.address.model.student.Student; import seedu.address.model.tutorialclass.TutorialClass; import seedu.address.model.tutorialgroup.TutorialGroup; import seedu.address.testutil.ModelStub; @@ -118,6 +121,11 @@ public void sortTutorialGroups() { // this does not test whether tutorial groups are sorted, and so it is empty. } + @Override + public ObservableList getUnfilteredStudentList() { + return FXCollections.observableArrayList(); + } + @Override public ReadOnlyClassmate getClassmate() { return new Classmate();