From d05325985115c0bb6eb6479c184dc991a1d29674 Mon Sep 17 00:00:00 2001
From: unknown <johanes.steven@ui.ac.id>
Date: Sun, 23 May 2021 23:50:54 +0700
Subject: [PATCH] Fixed Add Roles and Added some tests

---
 .idea/gradle.xml                              |    1 +
 build/bootRunMainClassName                    |    1 +
 build/jacoco/test.exec                        |  Bin 0 -> 36479 bytes
 .../AppointmentMapper.html                    |    1 +
 .../AppointmentMapper.java.html               |   44 +
 .../CourseMapper.html                         |    1 +
 .../CourseMapper.java.html                    |   19 +
 .../ScheduleMapper.html                       |    1 +
 .../ScheduleMapper.java.html                  |   27 +
 .../SlotMapper.html                           |    1 +
 .../SlotMapper.java.html                      |   23 +
 .../index.html                                |    1 +
 .../index.source.html                         |    1 +
 .../Appointment.html                          |    1 +
 .../Appointment.java.html                     |   15 +
 .../AppointmentRequest$Status.html            |    1 +
 .../AppointmentRequest.html                   |    1 +
 .../AppointmentRequest.java.html              |   26 +
 .../Course.html                               |    1 +
 .../Course.java.html                          |   13 +
 .../Schedule.html                             |    1 +
 .../Schedule.java.html                        |   19 +
 .../Slot$Day.html                             |    1 +
 .../Slot.html                                 |    1 +
 .../Slot.java.html                            |   27 +
 .../index.html                                |    1 +
 .../index.source.html                         |    1 +
 .../AppointmentTemplate.html                  |    1 +
 .../AppointmentTemplate.java.html             |   98 ++
 .../CourseTemplate.html                       |    1 +
 .../CourseTemplate.java.html                  |   84 +
 .../ScheduleTemplate.html                     |    1 +
 .../ScheduleTemplate.java.html                |   73 +
 .../index.html                                |    1 +
 .../index.source.html                         |    1 +
 .../html/com.adpro.tasc.config/DBConfig.html  |    1 +
 .../com.adpro.tasc.config/DBConfig.java.html  |   35 +
 .../html/com.adpro.tasc.config/index.html     |    1 +
 .../com.adpro.tasc.config/index.source.html   |    1 +
 .../AddRolesController.html                   |    1 +
 .../AddRolesController.java.html              |   38 +
 .../HelloController.html                      |    1 +
 .../HelloController.java.html                 |   31 +
 .../html/com.adpro.tasc.controller/index.html |    1 +
 .../index.source.html                         |    1 +
 .../UserMapper.html                           |    1 +
 .../UserMapper.java.html                      |   47 +
 .../com.adpro.tasc.user.db.mapper/index.html  |    1 +
 .../index.source.html                         |    1 +
 .../AcademicUser.html                         |    1 +
 .../AcademicUser.java.html                    |   24 +
 .../com.adpro.tasc.user.db.model/Role.html    |    1 +
 .../Role.java.html                            |   18 +
 .../com.adpro.tasc.user.db.model/User.html    |    1 +
 .../User.java.html                            |   16 +
 .../com.adpro.tasc.user.db.model/index.html   |    1 +
 .../index.source.html                         |    1 +
 .../UserTemplate.html                         |    1 +
 .../UserTemplate.java.html                    |  101 ++
 .../index.html                                |    1 +
 .../index.source.html                         |    1 +
 .../test/html/com.adpro.tasc/TASCApp.html     |    1 +
 .../html/com.adpro.tasc/TASCApp.java.html     |   12 +
 .../test/html/com.adpro.tasc/index.html       |    1 +
 .../html/com.adpro.tasc/index.source.html     |    1 +
 build/reports/jacoco/test/html/index.html     |    1 +
 .../test/html/jacoco-resources/branchfc.gif   |  Bin 0 -> 91 bytes
 .../test/html/jacoco-resources/branchnc.gif   |  Bin 0 -> 91 bytes
 .../test/html/jacoco-resources/branchpc.gif   |  Bin 0 -> 91 bytes
 .../test/html/jacoco-resources/bundle.gif     |  Bin 0 -> 709 bytes
 .../test/html/jacoco-resources/class.gif      |  Bin 0 -> 586 bytes
 .../test/html/jacoco-resources/down.gif       |  Bin 0 -> 67 bytes
 .../test/html/jacoco-resources/greenbar.gif   |  Bin 0 -> 91 bytes
 .../test/html/jacoco-resources/group.gif      |  Bin 0 -> 351 bytes
 .../test/html/jacoco-resources/method.gif     |  Bin 0 -> 193 bytes
 .../test/html/jacoco-resources/package.gif    |  Bin 0 -> 227 bytes
 .../test/html/jacoco-resources/prettify.css   |   13 +
 .../test/html/jacoco-resources/prettify.js    | 1510 +++++++++++++++++
 .../test/html/jacoco-resources/redbar.gif     |  Bin 0 -> 91 bytes
 .../test/html/jacoco-resources/report.css     |  243 +++
 .../test/html/jacoco-resources/report.gif     |  Bin 0 -> 363 bytes
 .../test/html/jacoco-resources/session.gif    |  Bin 0 -> 213 bytes
 .../test/html/jacoco-resources/sort.gif       |  Bin 0 -> 58 bytes
 .../jacoco/test/html/jacoco-resources/sort.js |  148 ++
 .../test/html/jacoco-resources/source.gif     |  Bin 0 -> 354 bytes
 .../jacoco/test/html/jacoco-resources/up.gif  |  Bin 0 -> 67 bytes
 .../jacoco/test/html/jacoco-sessions.html     |    1 +
 .../reports/jacoco/test/jacocoTestReport.xml  |    1 +
 ...o.tasc.appointment.db.AppointmentTest.html |   96 ++
 build/reports/tests/test/css/base-style.css   |  179 ++
 build/reports/tests/test/css/style.css        |   84 +
 build/reports/tests/test/index.html           |  133 ++
 build/reports/tests/test/js/report.js         |  194 +++
 .../com.adpro.tasc.appointment.db.html        |  103 ++
 build/resources/main/application.properties   |    4 +-
 build/resources/main/log4j2.xml               |   37 +
 .../main/templates/SeeAppointment.html        |   26 +
 build/resources/main/templates/add_roles.html |   70 +
 build/resources/main/templates/home.html      |   21 +
 build/resources/main/templates/index.html     |   18 +
 build/resources/main/templates/register.html  |   16 +
 ...ro.tasc.appointment.db.AppointmentTest.xml |    7 +
 build/test-results/test/binary/output.bin     |    0
 build/test-results/test/binary/output.bin.idx |  Bin 0 -> 1 bytes
 build/test-results/test/binary/results.bin    |  Bin 0 -> 134 bytes
 .../compileJava/source-classes-mapping.txt    |   62 +-
 .../source-classes-mapping.txt                |    6 +
 .../META-INF/MANIFEST.MF                      |   22 +
 .../org.jacoco.agent/pom.properties           |    5 +
 .../maven/org.jacoco/org.jacoco.agent/pom.xml |  106 ++
 .../about.html                                |   72 +
 gradle/wrapper/gradle-wrapper.properties      |    5 +
 .../tasc/controller/AddRolesController.java   |   48 +-
 .../tasc/user/db/template/UserWrapper.java    |   55 +
 src/main/resources/templates/add_roles.html   |   16 +-
 .../tasc/appointment/db/AppointmentTest.java  |   22 +
 .../adpro/tasc/appointment/db/CourseTest.java |   17 +
 117 files changed, 4130 insertions(+), 44 deletions(-)
 create mode 100644 build/bootRunMainClassName
 create mode 100644 build/jacoco/test.exec
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/AppointmentMapper.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/AppointmentMapper.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/CourseMapper.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/CourseMapper.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/ScheduleMapper.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/ScheduleMapper.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/SlotMapper.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/SlotMapper.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/index.source.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Appointment.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Appointment.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest$Status.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Course.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Course.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Schedule.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Schedule.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot$Day.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/index.source.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/AppointmentTemplate.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/AppointmentTemplate.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/CourseTemplate.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/CourseTemplate.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/ScheduleTemplate.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/ScheduleTemplate.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/index.source.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.config/DBConfig.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.config/DBConfig.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.config/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.config/index.source.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.controller/AddRolesController.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.controller/AddRolesController.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.controller/HelloController.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.controller/HelloController.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.controller/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.controller/index.source.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/UserMapper.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/UserMapper.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/index.source.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/AcademicUser.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/AcademicUser.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/Role.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/Role.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/User.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/User.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/index.source.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/UserTemplate.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/UserTemplate.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/index.source.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc/TASCApp.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc/TASCApp.java.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc/index.html
 create mode 100644 build/reports/jacoco/test/html/com.adpro.tasc/index.source.html
 create mode 100644 build/reports/jacoco/test/html/index.html
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/branchfc.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/branchnc.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/branchpc.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/bundle.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/class.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/down.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/greenbar.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/group.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/method.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/package.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/prettify.css
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/prettify.js
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/redbar.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/report.css
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/report.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/session.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/sort.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/sort.js
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/source.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-resources/up.gif
 create mode 100644 build/reports/jacoco/test/html/jacoco-sessions.html
 create mode 100644 build/reports/jacoco/test/jacocoTestReport.xml
 create mode 100644 build/reports/tests/test/classes/com.adpro.tasc.appointment.db.AppointmentTest.html
 create mode 100644 build/reports/tests/test/css/base-style.css
 create mode 100644 build/reports/tests/test/css/style.css
 create mode 100644 build/reports/tests/test/index.html
 create mode 100644 build/reports/tests/test/js/report.js
 create mode 100644 build/reports/tests/test/packages/com.adpro.tasc.appointment.db.html
 create mode 100644 build/resources/main/log4j2.xml
 create mode 100644 build/resources/main/templates/SeeAppointment.html
 create mode 100644 build/resources/main/templates/add_roles.html
 create mode 100644 build/resources/main/templates/home.html
 create mode 100644 build/resources/main/templates/index.html
 create mode 100644 build/resources/main/templates/register.html
 create mode 100644 build/test-results/test/TEST-com.adpro.tasc.appointment.db.AppointmentTest.xml
 create mode 100644 build/test-results/test/binary/output.bin
 create mode 100644 build/test-results/test/binary/output.bin.idx
 create mode 100644 build/test-results/test/binary/results.bin
 create mode 100644 build/tmp/compileTestJava/source-classes-mapping.txt
 create mode 100644 build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/MANIFEST.MF
 create mode 100644 build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/maven/org.jacoco/org.jacoco.agent/pom.properties
 create mode 100644 build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/maven/org.jacoco/org.jacoco.agent/pom.xml
 create mode 100644 build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/about.html
 create mode 100644 gradle/wrapper/gradle-wrapper.properties
 create mode 100644 src/main/java/com/adpro/tasc/user/db/template/UserWrapper.java
 create mode 100644 src/test/java/com/adpro/tasc/appointment/db/AppointmentTest.java
 create mode 100644 src/test/java/com/adpro/tasc/appointment/db/CourseTest.java

diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 034355e..776914a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="GradleMigrationSettings" migrationVersion="1" />
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
diff --git a/build/bootRunMainClassName b/build/bootRunMainClassName
new file mode 100644
index 0000000..801e298
--- /dev/null
+++ b/build/bootRunMainClassName
@@ -0,0 +1 @@
+com.adpro.tasc.TASCApp
\ No newline at end of file
diff --git a/build/jacoco/test.exec b/build/jacoco/test.exec
new file mode 100644
index 0000000000000000000000000000000000000000..8d8d0b9bc19adcfdcb47336ba19a901f736d28ed
GIT binary patch
literal 36479
zcmZQPa6o`vfI-5?F(AZ0KsV69FWAZ4$3!<J)hsF1!q|j?fw6K%^#eT!{bY)u!pwiC
z!(DvE7;N&3()F`S^D;~Hvq}pxOHzyUQ}fa@^HTLwQj3#|G7C!bi}W3nic5+TlS^DH
zN>cNRGxPJD^YcnlD@r8(ACDJgyq3tWx9V6GgDc3W^rFO+oK*eHypq(Syu=*+;?$zd
z#GK5kRDGw!;?!UmugEPixg@`+QpG7hKPNRY4<W&(D43`7q3;*3$XW(lY$oO<mSmQt
zf-FccN-W9D&jZ;}mYJMdtnUYw3QjEoa~m0X7#JoTU}S)S1B`+<e(o=Fj#_Y)!4R9#
z#Soov|3XdjO)bgDPvNR(5IlSS@r8(;#}+f_gS10}tsp0{BrU%vS3f7QG%q<LwMaiX
zzbIAT2g-BK&r8cpXJi!Iv2Oab&=$7c4B8;Q=;4%{pO;)(RFs-mqVEn4!jO!j)Wj54
zAwd(ls)!}G`KB=VVAEHWnwwvO6yBM6sU`Zs`N`R-CC>SId8x^u5K@5%_?MOxl$HdS
z6s0ESYHj{m?CHQH7@{h+A#i3q6Lwd@0wgFkC$%gwuLKej#rFUI{{Jxj|A}fr1M6e=
zX5L?}%U}R<99n=R=jZ0;=N0RhmSpDWJLe=87yINVrlb~ymSpA>OEEDpFbG;_F;6=A
z_%0Jl;z=yXL?ob+#NzB?{gTw;lFYnx{eq(W<kaHg{Gww0kksN5h>wC&Q!<NELFq|q
zdR!T^pt6#+Yg%{SCk7LQqtFs}Dl8@IyJQw8Cgr52IOpf3WP$>V)16W9_ZilJtSdYj
z45lCx(Bld{%ri=p^!-aq((^O((gRCVOH;YznFJe7uPoZ~ku?K3hryEyG>a9N78K+c
zmFTBr7ANPIr507{2dCzMJra~!oS##cTEy!jAoyW|Vz}|nQ_&0-AjhDEG4@2~0y8iu
zwYW5=gw0;Cw>{#vX?l(fgB`*Uv@k)+@Sw2u%quQQ%u7!7$xKU4u1wBJ1xFj3o#6kV
zE*~3{zsw9lAfwO&2a(}jQqvMkb4n0dJ18|hv$&+FQpF=PwJ5PDIinIG=bKmp$~(;L
zf|e$%51w@FC}S|jW_)Hoa!T?~%1TWx@yvrKYgSglqxT9kKd$IBVz311#~WO(6{*Rk
zpg8x*EG|jSOD%FtNh~NyE#eGh6!d!U{`|oDr&Ewa9WB68VcPYb^Ye;Jib_FA&@-<r
zKN(yuu`3EL^4iJPZ7<--pbT<LaZZ{^mVQ!EW=eXhez1?5iI)?Y?U9(5l9O8G%*Y@C
zDyj~!3;uK0GOOPh+{mB<(uX^ULGDI`AuFR`@I%R)lg=t^V{pcy5mYkjBVq=`g-1(p
zW?p(uYDqq*GzLkiTZbKtkQWq4dV8;~&AyT$8e}F~fZ|NauHae(DIpe?rWTig(=|BA
zRiKW5RwXi)Cd>?i4_>tX;u92hV+aRX1@$*H&m)S2^8BJ~P%)d4nUkU)Tv=R_n(J6l
zkdp}scBFzP9IQ|UYK3QRK@OX};OA*4<_lcfKM9h)Al|`<SZF<`ACj4ynqP{j_)PpC
z{AFTb;1XnC(|7Ici7EdXqNwRoh=ZZkPBFW)pifnC-;<#DZw$dm)`03haOH}vAo5Bq
zON1o}a58jCOwLYCft1{iMd`&b$<!itN5Q!_eU3$~U;Yr1KobiRlQUBFVdZvCVqUs_
za7j^SUOG7MujDiUrB9OaiAo-l^^l@L(4Ea{)8rJtW(Fr>LkSWbh`fpj6lQk8x`z?}
zUlz}{BeGH}NG!<+PEO3rOD)PoG&UF*8W;unURbOVsCUX|@J4bNp6U&f8ez>Xuh6{A
z5>QbLPSOFes*kgtQ84NMEM<#x2Ck5F0nvt$h@pj>KEj)xpk`TeDyUKCoROHBrvev9
zO+lz)W)^&Ym1{Cvu(T(G8Ir@{=`JTfJsngVr<SGWl@x>OzJk&cR}cqOAb|=}Mn=K)
z4@D0BKdG>t!3tyqRwp9WIFJZIZ(wp(GYC$5cIA$v(BU!$2ZTBBiWGbG2WfMaLYjvG
ziA9OIsU@jJ#YX+|{0s^QnFWRWrZ6_oFezb(0T~G`X7EG{w7>yH1=yE})S?0sbI#8#
z$Vn|pMU&%t%p~Y|GHikD(x4R#*2LKaEfhhfy1?7toM#vXH*PxoFFcC1h#`(RgP?^b
zsG$TkGq@x%FD0=k1-;Fr0xF{ui&7lHO+{u_!LGS~rIXoiJR>DH6&EL_r+SnosW@kV
zGD40^W^n<iMrV%|R0>%V@qF*c8w^HBE{7*294$<z(#)Kc)FSc!|EmS-|5%0v6hy5;
zX(Pf7KraKq4Pf8WoRUoEjQq^xRL7K*qSRufQcvVRBZHu_LiXFgicjZ25*0KBz|BNz
zjKlJxOKMJPdLpO|3TZUt7ePyDc1FPu6Z(|5cqDZ|dIji);b{;FGBYp;J`g*7Z{56)
z3Xt|a)_jr-?nCH9T4W`eU}s=Y<IeecWvN9asYT-Q3=V=atZ}>h`eHm7%y9%gv}*=S
zA@JTAtVy6zFaN*!g`iQ+<K`0yYrkMm5eN_B=;BqDAa(rM6a~M@x14Ex6zl~FFNlxf
zIT}{^fIAJ2d3pII;93k^0rfH-Ddv~|Cq1wHTs=d@gZ=z}bc6*b?q^9AnmXGAxtxKU
zhSogEfHpiclM{3Fee#pDeG~H%(^HG&+Zp-`1Z6)=E-4C~unr}-h$|K#6}M3x+kyY~
z^OyytD@D%q{4h7d+jxYvF@jPHQWHy3Q$U&CwE`+C#K^!PC=t6OZfWSxYvhHyb4DU4
zkwW6Qh)q#&?RDO%TXh${X9z_~4tV^BRE9Vw7L=40rGlIYDL+6gNaq4xFA4vD$0)d&
z$3f`uqYrh+K8ME!ytKw>9D;f&D#0a*C8fozGJ>bgy&2E!+r!OZ1}%A!+>6MhpbljY
zxI>BDB?vA^O=e^iw7YolWkhqd4RRfhQ9(k(T0bN;x4;G3g{;)B2em!e1gAVIHIy~j
zkd3ti2lolMuMhDKq+rO*&+{)z&PWA~n3Uufsr`HZLB>k(ZNE_c)~2XmkcI#x$)h<3
z)*19KNX-L<u8EgpUJAGgVB%PwSd<!)QIuZ}>Z&^D=Ri7%Ldxfv1-E|L+^EWI{}+3U
zAH8%0bycCc9a7_>wg?69|6~;GJ^K0VT6Xa!h7_b=$CFH;aRhR+E2s^CR69bl1xO~i
zG_xcXQKcc&fNIHEHp<xnwVg|`5BQ+9HiAnkb3mD;0^0ir+o=*<keDaT#K0i9^uBnn
z-o+cj435OPJ}ol`H0T9(Be?UOnV$#kjN1Oc&dAVkn3qBD>Gso4*T>h+WN?Oh7RhX^
z3DOO0YGz(KxakHN_D~5a%1jMTEn$-v>^j^eIxWvifx!!#LD(YAHx*XJLfZ3?o-fi6
zj}begpslig;HLu`8jzwe9XyVN=r-XuRt4G%m3d!oz#wQ7Hr?Z|T+l3rFpvWw=@p)h
zQ^8$3eOQ7;DOCOPQ^2J}NMdm|tc&MTnU|QGnG6bINFK>Al4NFRWEAu{-hVJgC4WC8
zlcKv9QLlI;7H2r;ry$iLoQw>D^NNZ;7cey{V;_frrJCaW(xT*4{eYs(Jm}Du52W=9
z={Tw&Nw|OqnZVTzGppd!^C62@|LZb>WGoVc0OHTg{5;2$vdrTAA}(<T!3xXlm*(p|
z?lA;{!W7-NaQ8ySAd6w0bf{~g6&0wAEGhw&0#Naw{L+%tBH6hNOIQU%daqQ?_<3SI
zWYhrSVpt&q%D<opfV3f!Q&r%@I;=8+C$<NCtbKcvgTWWcWgs2!w2e9nR|FnaD%N)_
zDM?Ju2uK7CTY?Nns}O`<7c&cHEKYS<JSpxngFDD<h@*%~Nw7g8P+bi&91^7YMI8SH
z-9JBJDAM~{ja<pVJPJ*mhygxm7v2TY9VkvM5@!6zF4(##i!Ho1qL4v1IX_oFF{Pj=
zU%w==I9WfjpdddpuOt^V8k>@&?}*@n9K!XVS&+Byu2#&Wl6Tn0kzsKO?H{@3K^xuR
zqKb)8@Yvk0Bo~&7AY}K$!vwWzffm-FHad8OFenu~jskMSCEol%QNtrgAk7s>$fAV;
zQU?oM5P_VJD1_O>1yAh%cxFT4&ut9$px8lAlbA#8S&4bYnfhKJGPoqaC^0?N2Q=E1
zU&O`CAei__Y(WaE{zvS^4=hliEq)vcJo*3RKl5G685kHm_=*?=pVWUpYs_xJ3~?WJ
zKf=a3^$UtpQ$T}2sm1!9#eS*9&^8s==d6N)-*2|$GAOkxK%7U4S)QQ2J;WGB!I%V*
z`=8j^*ddXJ9%L|ILZcqiSOUj8tZS@d$iyi4IB@kr{nh7NApLi!A$W2ewAum1AJ{NN
z{i)(tnv(-65D-FKKbZxSS6nMUBR`Q5;#sH#@a#;WDgdRn#G({7MM3uXsIFD2!p4M~
z>OrY#pjJs{ejd1~ev0Kmqdaqi6@vn(HO0VifPsM_y96}m&%nS?&tk;LaG&Ad|7sfs
zhI{f4{{R2~i+%rL#siEWWEdC@Ff#BnFt9T$U~m**`0)Qfv*6vkjXx)T|0w{;ZIGD5
zkzc?A8hMF1ppXj4Nz9X&-`FDfYx`RE_Ph<!3~ty`IZ|&AGU)=Hn*xm&szA!!6o^Dn
zX<i;Es9E?0r~j{Ek4oJe1qok>lVF(-6px7V2i~NI4nwN=CFZ6U7bGU9^2$pH#=MQW
z9r~k^0efnK<`sQJ;DWkXDbTJbqy@*uE@<vJPt=rSMGvGNg*XOB_`s&6pnjBkxA#AT
zU~S8lRjsW(#VBniyom)I%pRpl&}IoD?J=_pisU|(JLP%)7WT;#q|k<zZLoqJ>LmW}
z4uWeoJgqq7w>lNu7%eDtLBk6<iIt#`bO#MLC6?qDfvQIE00(=%;0lie=AR#xS77%L
zEL5TPLqikR=T(8!XHd~%HdDch>DyN>I6PY#64&T?3DHb}jTJx}=$YVwbZGZW7}TFr
zl6{eI!$s*ngA2BF2rD|Ey?tl}4{4@ACni*a^AZb+GxAG7X_J{<(9hLKxYNe7m%$ub
zKwvXB8GA<woK2;e7%ngguI9J@9hX{H$>4`gKg?awU@O*#xeU@$frp!Oer|4JUW!j<
zUMf@t6SJUCr(*G;mD#(IM>pU}6Ixfp8j^@<Fi3|AR16_kdWgw`p#T4mDt@RpFlhMC
zBzVbS+P)_bIocUKK(2?Reppt7+JKm;@q$cpLo9%#Jj8sq3Ut_s_rAQ~YpI=ulRsQ6
z$DV{R!UUR@pdN>m8n8)jj{AbbY8_SbvJ2K=9|Xf+9DDqKeeJKFdU?TfL8j|M%Zj!q
zX+j1BAYR24nmC)~&~k{~Qc&eU?eeMJIWi2sWF{XKpZxsn(t?1*<m|-s)MB?(@FX6a
zx?rW!=H#%YYeZ0nE1}~Fh#m>l)?{KQav<GFSk6>2R54^?7F3$K>mYkn_Gjd-H9SmE
z8&go7knR|$hJYskSmg{$%pCItS*n~@Pr0A}i$MjHtk83PW{Q4jsHY3O^kHTcyzqM2
z{>R^Y!%@Z*@%tGv<_dQO#D6M=Y>a|!yWjn>?fz;488{|0rhSSxv)47c{QGauA^2(j
zzZ=1+-)}>PGtj+*Ed>@7<(K3q=jZ5y+OKJlWdqEtf<{goKhKNy6okyKqZ<Uz7@2w5
z$P)uWsd*`>MX5!r8SB-5FfiE6Wpdz#v<w&+c-R>j1bv%a_CBh3znj4y6x?VYMvX@Q
z(vsx-+*Fs;oW#n^ymYj@42wz?s4^BF!FQQ#8po|Cw=#%>%!W+Ef^upqEQc;+wD`i$
z(9kX;z`*dKd4@l`7QaH-Lq@@(=X1Y5x><7)Yv+X=M@f9_XAms?y=acP<;HmIbv`@<
z!L!A|AQI$O&{zU^7`U`3wTR=h;MxYe_itmin<G!?<4E>+Q@Tw5KS6%M>$9)7nJ#76
zhrN74s<R;_TM8t}<`;qLA@TQ&NrE~v9_)PZ@#Hl~A&j0X5OpM|{eoyMK&yNer_6Lv
ziy}Q0b-;4D^23<^x(GJN;uN$rfih5xG)w8z2uoNzf)NHB8EG1;D;Z)z5szj7YW(31
zBo)vUPkwP`33zM+;`z+{JXlhb{kc#{K=8o+pTg^p9Z$eNXI6|OW2hK0GYaN+`rBNt
zYdeaq-Gfn;L7IPvX*+gB!8Dssryf*THZp{O{0of*P=g8Hm_zNzLknP#-=Sp>i0KBJ
zFat?J%S%|H$SN<`->@Wqdc)E>?9mKQx&+2t&{{FZ+mnu6ZPk5_Kj5G}DxdsxpVYF{
z9MD8lI%LX?g<EjZvCfLU*}soLYHLVDqqPALtqYWXBG|)_#b}TKWnvbb{(p~1Os!Wl
zWX1_%8a!`7;{n!aL8)dj#w@@iWkUNK7zM9RUt;I5a*sInViS=;vWqJ7^}UNK^C9DW
zu6fD%pouVjVFf|Kq^)zm-Oe_Klp7Fdp?eZOX{Zk$;DLAx+}x9qWB9`;Xy+#QJtCm%
zH>9YArV@Ax!B!Q3GG`IC=DrHF0}x&WS~@87{~xoU{XZGYt9|Q(A+d?om5AmTs09!1
z3xS8YK|>0uB9?Ltf^0z-=4jPlT*Kgrl#uZ{5nfxNxmCp_H7BzywWyNKR&ZIRZlyx!
ztJMs;*i1z#<&c-)sTeXd3f_7ZzclDsR}Z8*Mh`N0x(5~3`rt;Se?cl_`WfsoPywD=
z^ny_nG_C=v_B=oY8W!x|-0`ZqBlbJ?c!4&*VdH{mc@x%Ag^UYBB?F4`%Q90^i{$UG
zx|}VzK|gtE$lFs6kX|s>h(Y8LNTNYsj-~<;4yi0iRWW8_6l8XMadZCR)M5rXP=F>D
zWTuxU7Nuk+=IMh99mfDqP^YY<w3y?s;I0>I0yh5;$buAY&=3Tvg2yUq(c~5CgIL$c
zIhRpTHSqP@fNSerAVboG4FG!(o@>DqDFM)>nxH(7QHYny&u6&D{Nw-O|NHZ9zyHoC
z*d^dT?T&-aOZ=k_kk$uMR|Pbc#U;ul$d!;iIhsxR0G{AR<OBTO641n0Dl4<#4W;v|
z<QiD)AWPezK>!cG%zS-N-zy-s2r^pXRGOBS3R=7a8H9o~;Eb9Xgh1&|@PQT!rwH3!
z)OixPS@0B%tF}Tb!V8w|2|UI(`5>g5hwd^&=?3j4AzA>ix<w@<F+Dvs1(dQ7k~;r?
z9Ap&W5L_?VUbci^GXRqNz!8hSS{d4DhMErzPLw%vQS(3Yf~yQ9#AdpAMIaCAqZOfu
zNP&;sgeB&brWS)sClxT60v2Jn78LNEw?0p1>tV98tbaLdrCqTKEUP-^CFWEXrxr>4
z|M_2VdYk6-(4<$ska`Fjs(A7YIApLVdC;^d=L1H;#j3(d?or2LAiX81k@!0)&=Ckc
zE9`84{{KIpKcP-W@QUvBZ!XWwYEWDZPgUqu3wW&tWNor%UTO(+sfG$70dO)h3hKT$
zia0GX^&O-t0DDm%?niu;v1>(gPHAywSt@AU05l1t0-o{DPf2B!5qzu^;h(d0+AK)s
zhK2*&p-5E$yyX{Ml3!2&8vRrF|6l%*V0x44S*O^wVGO~bmQrdFcttpdIe3O%RN%u!
zAVrWqDWp4{TExT2AlS;Z;_j8H9Q=3^J<{+#G{r+pBX}!-|98D$<m@$(p{_d*K;{Y1
zoruVr;FbqC116>+O|_{QF)<6S*|U&YD%))y9>+j)pmSn!MrK|*)IBIUP{jN{k6`YU
z^_M>@+2}z69(!~`e1TCyvndGP>SdJIzgfr*DFGq6(ef`+pn!+$;kg((?!i^ZAef&Q
z_2_nG@Dk(!Q<yQJ{Dph;mW^F7WSwCC&Fs$KknqIn2K;4+@&E6Cnd~OA39_(mIT2-P
zz6?(lK}wAb8Vy-1VJ4&eta2lyTZkUn=ot{S9H0=iVqG7+Zrw94vjjR`$?hw-uY1$J
zKPje6c-qvkMldwCF_$PnJ9tb?f;x>gPaglsI>`W9UW#Y3EjK?UH3xahjlEt_seAJG
zRafo)KpMX2o+8jN0#}|aJc2Ww4BuSjKk=O*5!6<J8Ul)Jc&<lnfIzb~xUGP;tN~if
zfTSRGE83h47c-OKHjh7g1wrvikdz9w4sI2CL?D%fh&g@J=lTo`3<lzY`HdO-J+i`h
z8Pt%R4mT?^Mc*esFWoZ*J{ZNqFZkBN^o-)u1s)7qAT5wYie75MGZ=JIk%e6_*_7k<
zdXK$lAOjxgu11s<*t_xY_(zoBY>I*+PiLHZ+@f@p!5SK*AQzz<jXX$=ZSjQf{~9KS
z2|NtvK8g!&Vby))wfmYL%5o7rF$wWKthfcY1VPmy3!h*~>0Yf%yTzuH=UvF4gKuI1
z!n^#84uWl+ia!{_%t9dJfDp@Jg$uO4LX;2CoP$>4L5nJ}+5gQ2U32Y<W0Y2TK&De5
z#=&C}K869C*MT=gVPg|4+=8q=8iK(Sx_2@}fI=S41gMK(IT@up8=RO6T6UD0n1a!<
z1#f+TFM?#17wnO}FH#oPp+VVd45aLYv>JnjQSgNQPLp}-9^HYgm_hRcJQQ-E`#6e`
zw$$JZnPO4UdZ7%Z{e_xW+J7-9f&vFJHkg@PkfRSOH!_nUJvXOJ(C8(5zMyi!TcLN1
zx-uw951td@t!Bu~2+o-j&<yabr8m;&?nz^WL<)L#KrbIa1vRv*?NOQp85)3e^$^7c
zXdy3n(QSB9VnIP_5l=dYpi=Y}lOLayA7L#9;K2qe$UIY0^GY()GE<9G{{I(e;t*W@
zSSnoqT=*~SlU3jm6U0b9v_y0S?SO%n`6^C1`N`RtdFfz5-un`QUryCA&wB5=3{s4v
z#UWZcM6bnz!9z-lE&QNeW7i%wF@2q;^Btux36BN5jW-n|RzX4QWzCOSxj&pmuKwX!
z3O23?i%dugfO?AKgka0|@~Y4q^%IdRZ4Axe)vJhETkzluV%t+lQDRwYQE_69FQhSg
z;M_D_X|6vx3<01t2u%xk3N&bYoruNV()GJ*Sp?O~W<;k<(K3b%$w1AAhZo_fRJCX9
zXlE1TtKQw+Q22x!IsR}KY~VBn-9lCj>)kLi3Yy(N`Gt>f%Sy;R1SAol8G;n|AXA`Y
z4ynZ@h@~refB$bg|NUR>_uu>s7HoEcf*m0#RomZPVUR@%LAVb~GILYGTY1<W1>Y~#
zu?SmXvxqqR!7WHoWd~lJi?IJ9<L@8!zxlu4p2%n;&%n@d_`dy@+8^wE3=AFYjDjmO
z3a7?ccg8_>)u4wr+%=Fi&B!P?OJB>-?qs+h_V_{6x=0({AVq*nDtL5|`xBF(WKF@`
z7|sQS*h?nx;Hkb-QGQ}da$<1_X#O0uJYOXkw&e>ZV!-%;VF3e!V6b=eJw}ESe#meo
zB$_Z%Ijqt^B=lg&jz%E{1}4F#Q%lzL>dd;vpafc8m0Fx%l3J9RT%4a)0$R?h5AJSc
z=Iet!wV8>Di@`y&1H6Amfq{=VfPsNw!4JWP-Jrn=BrNFjVXDEjA7S$${zP*aS|Nf`
znSoa(7Nw?!C+1|Q7Rmo-Pe>3{F_~cJ`sYFnq|$;IhL#u+RW)Ly9X!N{yp1L-F()$x
zyeuD~NTlC~L-5M&)aBFmYvn`68_-h%B4$BJ4AF{!7B(uu8Tmy>`zP5H1+&FA`m<g7
zXv3fcO6RB!1{D~N#l@*bC9Z{~i8;m5@L*H(VGx|YWWi&P!%7z9l$oH81<UlW5v(1I
zzadl4r1}KZKt=eEO;PaSl+Kv%ESCzfR!q=n49&|dEKT)HQ3*~>2d%{uv1ecqROR2e
zsbr??EJ*JQ-5uEKO=tK%Xi$}&%6HyY@a$2W%4LSDjES#&p%omYEJ9s0t>T(nP*Ukw
zRFsIcpOwv6aHiF~Tqn&3JFvSHR=uFl2Za<R<`skXlcyFLvO{7}@Xyw;s4E`!ImlHG
zS~5lS6H#V20`f~h)jDK76sT31n3<Pa#JP|`aN6mXpPBw@o00Po%uG;90u=}tOKgHt
z3vv>ZQ$s<mp<>X|_hL3h!S}vAM(L)hGq9%&xIbZSqL9=I=t5ki#vZJ-%Db6SaAo=w
zW7`#t8j#u<J%*8LcgQd&G_!zaBH8N&y}0AIb3{rQLlz7|HACx5L~{k&5rHf`fXsaP
z<fnssaWI$gvwH|C&Fug6=%iK+;js#gW;YX);I{3*Ltpe9*@;rC!|Nn$DHW2s5Jd<g
z$3O?(T~bRDGjoa=83ikx=O`F^34MfgFChg1ynKe{A6W5>RG&g@fK)tI0)Lpn2~04k
zd-Lqy>4(=r(gHNl;4X#7Ah-zzpMNL;EoucdjxzJoAwz`h^@98^9!hWh@;@PGYeK1t
zgIQ2cv8y2d!@D{H4nP}>hD8-*PPz!ZZlY}Z|E!uqjZEx`5nG_cCytyUTh|Z`VXniB
zf}-~iGX)fxdtx8ZL<<_w-dj*p4<%Gk)@-rx3o5Ipzju3a{S<>0G!=qMa%h<2N~n<e
zC`dx}P0Y-b{{P>WLGaKn<JAqS759;QhOoefCILk41wY@wwJb5G6trMY>_4Z4;QmFE
z=BaLCts{2nH`L9bb{ROkASF>x(7Hs}@KLPb{Bwc1amQ+>GH8H2h&_dZj6pQ2<QnVC
z?F7%Rn)Kz{_X&{<;K2^;`XD0&kmcsWFL@aRU-(E*{oB*L3^G;)4Nc4xjFy04i&9j4
z600g<sfk;WMNpM-;v>)430{!O61yAFy6iCRDu#@Vf_LivFtRUMrpurS@;jtcnUR`P
zkXlr%A6%MLT#{K*S^{1r2Va81$8IOMW2@}jMaTAKKt>Lrz5o@*aGwx6M8)^dUU0R{
zwNkt7QJUE2Ca`4%aJvTIG;dHU===`;{q=&yv$X%uF}u4O(mo{YR8UL@mn0TJwh6P!
z3s#sjyq_;~%!b&6hi9J-coS|wVhQNT8T-$bMGP_w4RM0?oo9?Jju^E=TnLFnjNAd+
z0R|r=hRsJYvkNZFS@-c!#R_>ycL&LfsF48j8B$HAf;?`)BUrOYDNcXGmQBP)DYTsd
zG8Apg6f>(Jr>n@RnUZHS@QlJEMy`EJ!TUrod}ikV$DTog!9cM5kdTj!^9>{7hl<fh
zAe?hDQ}argm<3%}X4~D#&<r8I)P;;XgZJsW=A{IHwp)OQpj8YxRtxS~b@Gr3TYCyh
zB@WL6*itT%anNEMY?}E0|8asJkFl?cKXZE(WEBxK9^s~Crs%_`c#wurnV1FD3d@*d
zTKoP$4x@l1Ab1rEA3MP|<m8x?UsU3s=a!h6Q(BaYa{x+6n1ewuG=@R{*Wbt{d_@hc
zBFE^@aMv&kGC3W1?Wr$2jX@n$)}VV2+}ZTa&&w~#&&y191`Wwb{XgHsBxrE=!ixVB
zw|*s1VuDvRASG{DF$d{?f-1VyqF_mIGlGeO!GTebd%Zx~ex6;|AxQxeYG~OGM_Uz?
z=0Q6#a}rBZA?*|<W<kxR4L@9#v%e%G|A71Mh}wlCN6=43Fe8##AQ@65pa&JAHwNyS
zBG%wQd)Y?p4h#ws3=D!oFEl#se<t^0Z`fm>j(~Uw+E!&V7EDdC*;%<}R|<g^52VQz
zfNS#_Xlcs#W1F@dT(#>Qq)<Tj6ugB3Ykq^G4Af$S@L|QBWc#Q4jDp{*B7<%3mA=6~
z<cDMww3Y|01ouH(jD=_rurUg1WqmU>d^mj}d5HlWf#I1Y8K9I=Eb9AMUQjI~{zKh?
z&`L-QLQ)qzPeR)~Ak|1y8=&<VDxjWUX)&9Ppy__bRI%_YtBGkhqhvS8NC{{LnUzs+
z;*q&Civ(_@VqY+y0zLddKcFbTq7u}R0*$r6mhi*)nR)4mmOgazr3fPfkKn^Q73^|-
zQ){uu0=Ci*Q7(hdx`7`06_lEsnpu`A^q7}H@S0KW$J($v`?0TOhP2)Tit-Cmi%K$6
zi+#ZT&JX|p|K}IvPgUKZuf6#aO8b{^lLXRK1;qq765)Hq85srZJ?A^Fy<7eRyY~>8
z5XX=R_&6G*M5ZXHy;YR&S(4F9?AZ~PYN6B9u;dRpH3)Lt6Tf@C;2s&5D{sF)X2ZUK
z1#=@@T4qjaG1w5q@pEpOIjNAags#6T7GP`;yn43X<>$PQ&?C~&^C!Z;u=y#3-&hz0
z*Dp0W^~fh*p1^ubVoGUH??1JoMEbvfJ)2-#xPI^@vyFU^5l8I#2vJPKd$+LlV8t2W
z68``LgA9lvIJ>5LVoCY4B@CHJbr7CZ0=5vIZ^1Ki$ZNAu(~Jt33n@TB>jfc=f3=^s
z48P0;<IAmUr7qOWhxCEaLl+kL@K7$&2W=Eb1Th<<VBC_7ORs~P6Op&L;jFMAu5bfS
z2XQnCu4%~1KDKd_EM!&+-FEz06;gv@OyU@FF)|4Ldi_>?ja}+4$bb*Jx!8P#ZBsnL
zo8a9?4-BW+6nmTUA&(ux;{aNA!iL<8{yb!7X!y-2D5v81P59lVa+F3eyzvBc33zz9
zSRd=wd?^OdU~q%Q(&SW4AzSRV6t<9pH0e+phXU`51@GHi$Itk%>ma`N5~OPePqnZ%
z3%G0cq@-cfYi-7jkSYlpw1kqXJ~)ZOi!(^=l3xT_#mU0Ja6pjp$+PwII^`Fk)aQ7N
z1vl>D2Exln(eniyg8E<naXQ;bEX0~Q;SEpF@EdF}2G+!cEVlt|4nAnZTK4bBg>%S5
zSFltKau%o-!WiBQ22FgXaxpRqn#_H)V{xss1thINLkS-3(5?ma>`qobK>^0)RjI2}
zwjhtA!;==Oi&345*pv-DqY1S84#I@Z8L`<2E~qtZGxz#&6|y@4TzFtC0Yj8lkUR=2
zs*E2LvN1X^FbJ|=7HVk}%u+;I`3CnAdJ4q4AOm`iCV0jIvYb*}UZ_M+@X$)Wzskie
z$R!Be_ps^2w9-8A0ZaNJMU^Vho`EPMBZHt^!~(73LdHChwgkj;u$Y48O2jA*B;|ot
zp@G^C*{MY;u(_AARB-PdIxCTwlf%R;xVz*2v}ukDjIh^?@InzX6@z8v7iipnp~Ca%
z`H!@}K+J$R5AHd5)WTvFd!Cbe_H4W8vCTiRXMR{ALg1tZje4=W-^&G;o?CV*F5R6M
zZ(xI`UlH3dL1S{oT4n;^y6W}YDfQw<{VX8E%eXv*EqBQ+ua}b${B&08^Qv_vkFX|2
zcz}TQL&_mf&}vc8^iY10jNBaw4ng4uw#~QQ%)=qI2AT_?Q4Z_!A(Az?76et|;30fi
z@&>JK1RWI0&M3&&cXr2TxqpG!t3vby4q8#*nU|cO3p=!wiBa%b#2YnE-j|#xg&6)U
z5|Ug1JNgtl&yruH_OmUq(O9rs#k2g0V@Doj+bqPJXbBtPJCs=qP`L=n#Z1hCh3e1u
z-0i)XjjzRy5*nqT6FnhggNSy2>`_zJP^<qfD8o%~uVL@A!8%8XSyE`bP6f0c1k|NS
zW#JLzU6OU=%*B)EP<p6vlhK16vs?j<KIEi=+|0}_C>?Fi71mI*jsf?%%!m;lP%wGs
zrRBp<xPv7IHb%j<>ne8L*zjB(68O*p9M|wNq_qxf8pBTk<M<~yW!bIPbO-SVklYV7
z22_8*J%~9N2K5khZw|j;`m>GFQ-1GgVn`*fafoM#8TaTIqOAj3eD^z6hq3fl4inZj
z!>D-_8l{l+w*mR!xpBy0ypVP#ED><b7hHem^{P+mE3QCd8j_&lMIl<gMd>?YtV9-*
zXD|@ty0LC!u2k_?l*MPbq6jio1@%89zThWT!D>o&e?j{nvyGYG-d)I`0}Vx_Acsd8
zxO4;^Mg-gMEK~pIKfj>ohwNFd+Y>_>%!^C&Acr;=r9ukjV*TWtlp@gS%i#Sa`p!Ns
zK|cA(i8-k*i6x1?sU?Y^bjT_%sGK*s&mb_(f<Ye1Vo-X474op{TbzFx1%Dbj*_^cw
z+0UQ=Qj9%3A(6oUfLSn5ZuM@rr`ygV$0=HIf?Q8RM|Qyr^`T4meN%JuGpj&@AElth
z?5RZ}^JV!2Xa9GfmiDxRiTJ@r^cf>)_nTE(aPs{s%kpNMuMo4)e1w|rAaw)0zJ!!l
z&~*g)MdJT|GYU#AtXDmG@YEHQ1Oksm%swgPa29A90iV$lRGJ4G0ECqb0*nlT*O<&y
z68C)OfHdgQoQN+GgVs-gD^gY|!9$iQllrCpD`D@JqL+D~ss<WHI2W&J)Thj=?G)Vf
zcR`rsl$EPdiY>U8VZ}70Zh(xLfQAV`6HlN6iy`7{%7P3UqU8#2<kcbZ04=uQ#-O_o
zG13QhC8984W*1z3nQPaaGW8CWVRHQ06zjHbo_bEfZ8y3;Dc{!2g4AW`?t<kJc*Cp+
zG{A;7%_asqNTQ?p*`Kb-Muo`JtniWu*5U+bb8xEx9Bn)o7zCFb7VI<IBb$#re1<0v
zfew&GYHRwuuU7&!p%@tW1do4Y_x-<WVF&gm9eN03)_R%wdEnjqM&F(+%XPfE0aD>X
zLj+V{z+(%wf`N^afa*S^v0ZjS^T%tt_w~MZhm2=K(lwgbkmkYBmfb=N3sCDSwW5TB
zQSfqKLh9R}FSbAi%ur1Oxel_<26os@BqUToWCMfXBK@10m(<KpLMAYwUV?k42y#x2
zK4`8Ol3o=iFg7p>8Wt<u;+!*YCiYnha0eT6{T9ElgW%!qwHr5uX8mJ`1eKzg*5&4x
zAl(lD$%~--3_u+S$cfpA<PKeCfRKXh>lFX|zg|%L_oo<VPZ4LxQYJ`{z|$OB!GRRg
z*dt8ie?0>OqhM?O=QRhyQ%o7eKyF8!Cj}*1xf=`&3W76ak8|iO(PgG?0|J~g5J?CT
z2t0?m1?{gyw~2~%e`oN*Q;#CASqGa2X+(e=UJN}M11#*4ng&{R!_CYhxPXBpS6}?;
zIqWTL9I=epeGcligT|80!RzE07z8h@P24+0>wGU{r~p0k;ROn=d2i7CfuGDZk+}US
zJPZk-IDi@fO5^Y(i<$%RO~ksD=HvvHCgy<F5vPFt4jQn7wa%H@1?3$p8w9pKInAJm
z8Ll8ZLAfF<wFq>_NS&?C4^WO;Wb)Z}m-U{%_JY&cYC@V!r!6I|--J=o7Qzpr2VJo6
zUtVyF>C2-hoSh38(ufNIsMA435L)4^0<C;OQjpAzHGwg62p-^hoE$p!haGY?j9y&9
z4>p4s<zJKn-p(18S)5stUu4>E4+<Uu!OXJ1-|Fo;D<M5%XavF|4?Y<I8z{)ngQX(Q
zc1FSH0w+R#FdgkiY2d>(<Cq*pBuLK`{$x8r9bTiK3*%>|LXI6kD;iLnJ+OfS$Ve3t
z!#^s<Y|Mfxs(}*xk`rFzD;!~?eDFoC!q$Qeg2nC}YZm^KxP>x*0rwxgrp0kP4QNOO
z{ZI;pGxpbKDjB@M-bBGu^C4|<6k%lG5Hz$4Y3sT6eLu0MkVD%X`9<)f^Kc&N4KB7F
z!Q)MAmV!w!UTtD$HymatB`$q~BM@G+gNHtmN9W<kL#SX#fwMe(FcUi4$yvuBsAgRE
z?XuI)07$t9wg7zxFH)TWN$=p69VjOu@{oGHoEbxcU|3UK%^vYGBgo(;&J>Sr`c1%o
zgWwzEgelWl9cmzH9^x3dckv}xSbs@~pMhC$gZ}Q5r&QJ}LB{AIrVz-%u!0cQ9*0)9
zppiEfBPK?{7W3IZ56;`N5$n(rw2DPB18Jy(N0LYIU*oRO1dVfY*oQb_t!HQ%1?~94
z`nQNY4V8fPDuv}6*aWrKe7k(%u95@xNjs!9nUDd>{Gx#ToXq4(6=zUw<(QWel$xAh
zlmZ?0EEZ8`;1PV&dqT<c-S(A`HByl9gU15Yv!I~_@Ubh9ZlD+=gN2~e{%f<2{GVlr
z-1bEacWCPlly)GcztHEO%z`ejnkrvaTd`w5{Q*%FIKpnbf*id8Zg8ux&F=oE_c@r@
zN|LxL0+Fy0tq%d_{elVm*4H%rn|TI#paIQ`sG~qZsi1p=Qj4&S1f6GB_&h__QGnQ^
zCh^tpe)-{<IVs7BMJdoDl9^cre@rr5yX~{B0ZRV}xr7Dv%wQ80(6j|lbVys^UG_6F
zJYZyapvW)i>nG>4FWh=H_LXahm_npv=z;{exuC6i$w*7*Va{b2beh^wy()iqGo%ZI
zv+RI&1;7Owq*(_pO_<pQ^Nr<GFK0?v5}S;mt4E|BGBYp;?ycUx{J#0Dw~&}cx1B%^
z4avwXb}WVlAupqVV4R2jO3eqixfvXw=?$rThsOYND;1KBKu1X-_MEGL_CkjL2el;%
zKm>zew$AiiANJW^C{tu`^AN!gDxeVw7h2k@fM>zsV~A{ug75zPV@uur&j<SgrObSN
z&<UoHB}R}*6;?q(^=bQ+eTtu-#$MhKa)L{KX;Kc-7Ix4v0vAtuo^wuqkcnLA<IYo%
zYkyE0DH8l!+68SLm?th2{&EQt`Pd6BP_cu^*(#vYUEs}M!3A3V`=&qpoB;6>L@R~^
zKs|2Im3Ht|d&uKg@Y2vbwUU=nLU4^5&rM!Qwht&hKTs<g9#^O>cW5F3xevYF3KBys
z&qPEj=yZ0M=`+}l98ULxq*;i=;RQAJ>Jn*K3*6cUABmG%Wb*$H1J56O2ElrVsuQnP
z*w~Vn!U8}S?jWbIRrYt>tyVLCKxs)qn@czr{X^Di;Jr2qGRg|gZpGlyikbQ4j=SOx
zheD=UAVC3(Lr}mYN@YYB8q|g?f=tVSPAy+{GX3`ojUpR}*C9s0Llau<VNU*_)cR$q
zMJnI|jps9;V0!&#MdfQJmN1xN8MQ5d9ss28m!Aj9t(arBeE;nQ`9k|+71Ohw7?P06
z50H0APe;%a8I+vBMQ2cH9%y73k)YU&1p~hwoSYbSikqPT$vTQ-3%o`yG_NQXJa`Wp
zwQ?;g$}bAZ2bD*Vp~522%=XCu@%>&|!W*y;suC($oGMFF(RcbN3W^29#+=@`y&I*9
zg$EvbmjE;b0}UrgLl<p35t{kj|Jeoq-%FXiZ4uWsNW+k{YU4KJ-~ap%Dwr4;e$DIO
z63@rZ-oVVjz|ioRfk9ypyWq6jWjlo`ma1Vb(NKmG13+O5y(F>NJc>)Bpr9i}FhDi^
zLyyyjE0DH0_VkRH<^v}RSYj5O=D;9mWX^F@(a+=w1JPG4LgyL5$Lp2|-2X4AC#qK&
z_)PCSgEHQYhL9@e8)J$CBLkxX(*lMKpiz_qu?);i3=Iqn7eGAF?&8P=Te}<@>>oiI
zG!P%bGC4GZB0PjKZwX3ykZ5Hu7L+b4sjWVj-3jUCqsJSzgaI9a23@5Dn_%42=Wrrt
z-|j7t5(C{3LMhfYuQV5t{XjY3ukD3XtMz54Li%Fp=E28|@<B)Dz}sylDXv9Duo*(|
zx;OTELAj9jcNMnpPC;A-2`PA4hFUWq-Jb+L6A#i)KsrN_O;T{;w`cY`-~JRr#+1>F
zLrIF@WCR*og0A|9v}?cvZ{l_g4ua(;p6O1FZvV)j1xgXPPxgl#HsYLLT2!3M%qFPM
z73l1vtZ9YP?!;3NLJKWWj~rCuK@u3^)G`&f{G#$i(5MXyqu{G$o4V`+Q}nS<nGlLa
zr_6Mh)a1<E#2iFif?72UO)87c89PcKaR~`Bw6uzt6vJ94f$xD6`uv|k@JqDrUS+eJ
zZIA(8^mIYUg>E_diAW7@kmG`x*Hm1(^6NWIhJ}n+m<4%ut#Rf}3p;{+ng`be8F*&Q
zCo`!iv8WQ-Xys&P5X@Nqe72^@UtdU2LcNbC@}WgIDB{7%5n9#pN-_wZ)XtPId@i>Q
zGR=cER**(Jkb0|#W}_4M7NX<N8JPv&PGNBgu4_C2X+J|ugXc0>wm@E9#P2OGDEa#x
z+bqq0n;BG~tv;l>7G5)fXNW)(!P@&6e%Law2%7(Gy_tB8X9nIzGOUe?6acVWMT!Lr
z85soA^w!P0@VMF@dvypeU`SZBs^XXLUjQn7Qj5Hx#Wbj-7S`plziHR#2yren%HY0(
zk9=bG<zOSAZ2E$m8|r3HGL>*(h(`(`JkbsfPDtYr9{KPwFBOCYc!?h(Mwu7|uWnl>
zyfLM49lkAbuoakY`9-;jB}UKd85;geGYQ_8<!Y1QO?!fU9Fsszf~YZJ9+%z!*;YVM
zgh%P(+@Bl57z&B=J2>sZlOBQ5KNaZuE5{u0Wengvl3ENY_w$Q*j`Is%v0BtLQ#|Gl
z1M*c(@aQAZ8HVOuX!Bgto`C_>v1qNne)dV~+69n?64<?X#u?$gEO5;s`|m%4fMC^G
zqx*}kf5bu@1u+5cWoY#eYoDVm@_-+H1od}*k)k`pYZ(SXW}gLT-pikV&49Gb0aiwX
z5*mCiv3M@@ehdciN;L)s7I1$Yoe<2NBPLxJ?6(jle}PPbhaGCa59|rJ9|%O7QT@FC
zDMtU81!rzsd-2qiuWgWSAA06OR0q&v08uZ&2Vp=xUr_6xiCHlBd4D#a%koVOsz@mf
z;au4H9Kqm5hl(LHyI|b3YVlS3uQ*|EI>8GOum<pCDku&?MFePl2e^SEfBN~idO_Je
z^L#S@N)}^pUn0B#-tz-;aWKm1cWm~89V^y1&7H4%3j1junfdyVgEpNLi%U|An3x2g
z?X(omSE&Dr(k+Mk6?;}CdO{Ym15>L0|956Vo<!><4-%KCK$`C8F$6FEAgxhE<<Bqg
zAh=O+Wr5-ZHD{{cMFr_oOTG`f#UR+a=S98r*@e9fde|Zy7Jc9ePm~K}85srnPb`X=
zYf`R^-2R5AUVJ$av_eHCI6JcdvY3Wjjzw^$^HrArJRD~rqkZ6vpbs|-R(Ha(vm^Yr
zN$4>q8WNzqC-|NHVf0CJkB5*MA2dS<IS7<2i@__;uiblm?cb6K3XtY4dUU~p1pPb+
z*t8aOlRKv~gCM7J#|f4SIT=Xv0^J})lE$4gK^d%|DLT+G(^m^Jr-t2E@DV3S16#$A
zg;y{@E?<w^kNF*Pkiv>HXkZ{UZa@_dbe%akB-Hut&2Ov~)Y<#$-|DP&J0QzG&@4yo
zIY376;Uh}Omn%Bg|Eqsc&0oO6BKSA`hg-<fRWgvgfMy`nS)ke)QvYP;=Rwj4k0pm-
zsAs&4v0Bo5?5zk`yp*I?lwfRdPyz3F;Qv!ExJ>)gqs6yuHbIIji2dlH0-w(X*M+cN
zFl;i&<2wVx8H4|<3=ae+T1YLhx$E&9drCnsLBNY^z&mMCZoCySW?&GslDEFLS-;gA
z((8aY3!eT_!x=L63LmY?%u7cJFIYO%glzT{w0AD?)Zag!6?-BCXKc*%Dv+a6KxqOr
zFC?nSz#tg%HCg-5jvH4YI}K2mfcW_bfJ$`u9(g84!9;@-avV3r92g|9l`Eh!n6rUV
z@as~OoZd(2&^zAIa|pz7uxTFnd@;;fs^Au;U_yBJmap7_;mAvXFoO;hMxcA9wEzES
z<8xpaR9DjKR17b+$6jlqM;&M=2(r%w9DgXAUDW>ne_k&yXgohWXnjUN8l+bSi9xi4
z1>M>P>ghW}uZRF&VhEoNg5L@(z~3S`Q#jFo{}vH#<gABgAYym}p6$?6EAM}KLH8H6
zUkdGfo<f>R=%Ea2zd@=W$Os&03=(y*9<&+9eUnA-<D~G0XGfmPF{Fc{7UENQfJ3t|
ztf)q~5UqHC9%Tv3R4ULi&=YpDDL7!D9Rkk%jDkFQp4;BA*NG7yUj?vhQNURRaasZ+
zqoDNZ^&B7biqes5E?Cfl+Gn5?1}zNXXLYK0=B0oxt;;M+4NlD~NzF@6Emi}iKn1~F
zu4jEsPBU<zoOljzNDx!bBN}DkA_qKZoLUrIQj}PdnqJAoET|vLSIye;JO`4CAz_Z}
zV#I(p`uQR7B9uRoSuig?ylK0ms1Jh;w0i`KL5u`ZQk0sQs}H%+AO%v~s6ct(Ej2tB
zSp;iXeSE&>Z1@I=4~T={i2$v@f^1=i%+7)GAtWilnxEpJ8?YBG>w7L>_<jiy<sYGy
zDbP6#f%`uMcN!N@)4a>D7Lq5?{fT$n!6`q#1T=pE%c!YEBA|IeVaDK<`#!#HVu-~P
zfCOjqf>KM0GE>W-n^0l5GJ&HW5=u<Wg05zZtG_*qF2K4~i`-lW4IAG1(t<gBG66fX
z*<WDaNQ<;m0Gcx)6>>i8CLWcLqQvCv)D%c_2Y$~CtGM8`w#6~}E`J@dH{_uuE40ul
z)`yIvg8BlGR8q{YE%<ZC>30uj>=1-h^k``d)))kjiJ;CSRDfo0GV}9_S%m~Q*BonK
zH_M;}GJSw%2F~C^FFhgCH{hv379PQekAfKal>Vth%tTL4P%ptpVj=#4rE(Q$0SYN)
zp}k=tRR%`ED<=-uwwvxwgS6AoO+|_bw4eqZq@`lWDlQoMuRU?=nH5{Hl?_mzB8p*{
z{h&J_^NV1`ui;~PW*>$djDlGa)xxJHg&0D-NOrJ+%>^%d;g_!$JjVFO(X9WsGNk@N
zGZYq|u=X2DLjrUuNNPIxz&?n$E_19S1A~BIuByor^-qrT@J!MY@-xz+9@Sa~{vC3H
ziw;zzN8EeZ4B4`Z9utUi98^0ZN^EGvsxqd1_%AQG{r0!}+ouHPKt?Cg{0fZ?c;yH`
s{#_qZBq9w$F$*&9ovWsQ^WPpwRA6xpzV#YznH8xiu+ctfYGYvr0GaDQnE(I)

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/AppointmentMapper.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/AppointmentMapper.html
new file mode 100644
index 0000000..aa81dfd
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/AppointmentMapper.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AppointmentMapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a> &gt; <span class="el_class">AppointmentMapper</span></div><h1>AppointmentMapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">78 of 78</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">18</td><td class="ctr2">18</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a1"><a href="AppointmentMapper.java.html#L21" class="el_method">mapRow(ResultSet, int)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="72" alt="72"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">15</td><td class="ctr2" id="i0">15</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="AppointmentMapper.java.html#L15" class="el_method">AppointmentMapper(UserDAO)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="6" alt="6"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">3</td><td class="ctr2" id="i1">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/AppointmentMapper.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/AppointmentMapper.java.html
new file mode 100644
index 0000000..22151f7
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/AppointmentMapper.java.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AppointmentMapper.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a> &gt; <span class="el_source">AppointmentMapper.java</span></div><h1>AppointmentMapper.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.mapper;
+
+import com.adpro.tasc.appointment.db.model.Appointment;
+import com.adpro.tasc.appointment.db.model.AppointmentRequest;
+import com.adpro.tasc.appointment.db.model.Course;
+import com.adpro.tasc.user.db.dao.UserDAO;
+import org.springframework.jdbc.core.RowMapper;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class AppointmentMapper implements RowMapper&lt;AppointmentRequest&gt; {
+    private UserDAO userDB;
+
+<span class="nc" id="L15">    public AppointmentMapper(UserDAO userDB) {</span>
+<span class="nc" id="L16">        this.userDB = userDB;</span>
+<span class="nc" id="L17">    }</span>
+
+    @Override
+    public AppointmentRequest mapRow(ResultSet rs, int rowNum) throws SQLException {
+<span class="nc" id="L21">        AppointmentRequest request = new AppointmentRequest();</span>
+
+<span class="nc" id="L23">        request.setId(rs.getInt(&quot;appointment_request.id&quot;));</span>
+<span class="nc" id="L24">        request.setStudent(userDB.getUser(rs.getString(&quot;appointment_request.student&quot;)));</span>
+<span class="nc" id="L25">        request.setTa(userDB.getUser(rs.getString(&quot;appointment_request.ta&quot;)));</span>
+<span class="nc" id="L26">        request.setRequestTime(rs.getLong(&quot;appointment_request.request_time&quot;));</span>
+<span class="nc" id="L27">        request.setStatus(AppointmentRequest.Status.valueOf(rs.getString(&quot;appointment_request.status&quot;)));</span>
+<span class="nc" id="L28">        request.setAdminHasPermission(rs.getBoolean(&quot;appointment_request.admin_permission&quot;));</span>
+
+<span class="nc" id="L30">        Appointment appointment = new Appointment();</span>
+
+<span class="nc" id="L32">        Course course = new Course();</span>
+<span class="nc" id="L33">        course.setName(rs.getString(&quot;appointment_request.course&quot;));</span>
+<span class="nc" id="L34">        appointment.setCourse(course);</span>
+
+<span class="nc" id="L36">        appointment.setDate(rs.getLong(&quot;appointment_request.date&quot;));</span>
+<span class="nc" id="L37">        appointment.setDuration(rs.getLong(&quot;appointment_request.duration&quot;));</span>
+
+<span class="nc" id="L39">        request.setAppointment(appointment);</span>
+
+<span class="nc" id="L41">        return request;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/CourseMapper.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/CourseMapper.html
new file mode 100644
index 0000000..f624b37
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/CourseMapper.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>CourseMapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a> &gt; <span class="el_class">CourseMapper</span></div><h1>CourseMapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">14 of 14</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a1"><a href="CourseMapper.java.html#L12" class="el_method">mapRow(ResultSet, int)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="11" alt="11"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="CourseMapper.java.html#L9" class="el_method">CourseMapper()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="32" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/CourseMapper.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/CourseMapper.java.html
new file mode 100644
index 0000000..93814ca
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/CourseMapper.java.html
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>CourseMapper.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a> &gt; <span class="el_source">CourseMapper.java</span></div><h1>CourseMapper.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.mapper;
+
+import com.adpro.tasc.appointment.db.model.Course;
+import org.springframework.jdbc.core.RowMapper;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+<span class="nc" id="L9">public class CourseMapper implements RowMapper&lt;Course&gt; {</span>
+    @Override
+    public Course mapRow(ResultSet rs, int rowNum) throws SQLException {
+<span class="nc" id="L12">        Course course = new Course();</span>
+
+<span class="nc" id="L14">        course.setName(rs.getString(&quot;course.name&quot;));</span>
+
+<span class="nc" id="L16">        return course;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/ScheduleMapper.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/ScheduleMapper.html
new file mode 100644
index 0000000..76467fc
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/ScheduleMapper.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ScheduleMapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a> &gt; <span class="el_class">ScheduleMapper</span></div><h1>ScheduleMapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">30 of 30</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">8</td><td class="ctr2">8</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="ScheduleMapper.java.html#L19" class="el_method">mapRow(ResultSet, int)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="24" alt="24"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">5</td><td class="ctr2" id="i0">5</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="ScheduleMapper.java.html#L13" class="el_method">ScheduleMapper(UserDAO)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="30" height="10" title="6" alt="6"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">3</td><td class="ctr2" id="i1">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/ScheduleMapper.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/ScheduleMapper.java.html
new file mode 100644
index 0000000..4b497cc
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/ScheduleMapper.java.html
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ScheduleMapper.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a> &gt; <span class="el_source">ScheduleMapper.java</span></div><h1>ScheduleMapper.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.mapper;
+
+import com.adpro.tasc.appointment.db.model.Schedule;
+import com.adpro.tasc.user.db.dao.UserDAO;
+import org.springframework.jdbc.core.RowMapper;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class ScheduleMapper implements RowMapper&lt;Schedule&gt; {
+    private UserDAO userDB;
+
+<span class="nc" id="L13">    public ScheduleMapper(UserDAO userDB) {</span>
+<span class="nc" id="L14">        this.userDB = userDB;</span>
+<span class="nc" id="L15">    }</span>
+
+    @Override
+    public Schedule mapRow(ResultSet rs, int rowNum) throws SQLException {
+<span class="nc" id="L19">        Schedule schedule = new Schedule();</span>
+<span class="nc" id="L20">        schedule.setId(rs.getInt(&quot;schedule.id&quot;));</span>
+<span class="nc" id="L21">        schedule.setUser(userDB.getUser(rs.getString(&quot;schedule.user&quot;)));</span>
+<span class="nc" id="L22">        schedule.setAdminHasPermission(rs.getBoolean(&quot;schedule.admin_permission&quot;));</span>
+
+<span class="nc" id="L24">        return schedule;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/SlotMapper.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/SlotMapper.html
new file mode 100644
index 0000000..fae0e32
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/SlotMapper.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>SlotMapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a> &gt; <span class="el_class">SlotMapper</span></div><h1>SlotMapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">35 of 35</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">8</td><td class="ctr2">8</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="SlotMapper.java.html#L12" class="el_method">mapRow(ResultSet, int)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="32" alt="32"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">7</td><td class="ctr2" id="i0">7</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="SlotMapper.java.html#L9" class="el_method">SlotMapper()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/SlotMapper.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/SlotMapper.java.html
new file mode 100644
index 0000000..84e5d45
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/SlotMapper.java.html
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>SlotMapper.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a> &gt; <span class="el_source">SlotMapper.java</span></div><h1>SlotMapper.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.mapper;
+
+import com.adpro.tasc.appointment.db.model.Slot;
+import org.springframework.jdbc.core.RowMapper;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+<span class="nc" id="L9">public class SlotMapper implements RowMapper&lt;Slot&gt; {</span>
+    @Override
+    public Slot mapRow(ResultSet rs, int rowNum) throws SQLException {
+<span class="nc" id="L12">        Slot slot = new Slot();</span>
+
+<span class="nc" id="L14">        slot.setId(rs.getInt(&quot;slot.id&quot;));</span>
+<span class="nc" id="L15">        slot.setSchedule(rs.getInt(&quot;slot.schedule&quot;));</span>
+<span class="nc" id="L16">        slot.setStartTime(rs.getLong(&quot;slot.start_time&quot;));</span>
+<span class="nc" id="L17">        slot.setFinishTime(rs.getLong(&quot;slot.finish_time&quot;));</span>
+<span class="nc" id="L18">        slot.setDay(Slot.Day.valueOf(rs.getString(&quot;slot.day&quot;)));</span>
+
+<span class="nc" id="L20">        return slot;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/index.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/index.html
new file mode 100644
index 0000000..4cfff30
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.appointment.db.mapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.appointment.db.mapper</span></div><h1>com.adpro.tasc.appointment.db.mapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">157 of 157</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">8</td><td class="ctr2">8</td><td class="ctr1">38</td><td class="ctr2">38</td><td class="ctr1">8</td><td class="ctr2">8</td><td class="ctr1">4</td><td class="ctr2">4</td></tr></tfoot><tbody><tr><td id="a0"><a href="AppointmentMapper.html" class="el_class">AppointmentMapper</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="78" alt="78"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">18</td><td class="ctr2" id="i0">18</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a3"><a href="SlotMapper.html" class="el_class">SlotMapper</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="53" height="10" title="35" alt="35"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h1">8</td><td class="ctr2" id="i1">8</td><td class="ctr1" id="j1">2</td><td class="ctr2" id="k1">2</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="ScheduleMapper.html" class="el_class">ScheduleMapper</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="46" height="10" title="30" alt="30"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">2</td><td class="ctr2" id="g2">2</td><td class="ctr1" id="h2">8</td><td class="ctr2" id="i2">8</td><td class="ctr1" id="j2">2</td><td class="ctr2" id="k2">2</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a1"><a href="CourseMapper.html" class="el_class">CourseMapper</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="21" height="10" title="14" alt="14"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">2</td><td class="ctr2" id="g3">2</td><td class="ctr1" id="h3">4</td><td class="ctr2" id="i3">4</td><td class="ctr1" id="j3">2</td><td class="ctr2" id="k3">2</td><td class="ctr1" id="l3">1</td><td class="ctr2" id="m3">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/index.source.html
new file mode 100644
index 0000000..e55c73c
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.mapper/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.appointment.db.mapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.appointment.db.mapper</span></div><h1>com.adpro.tasc.appointment.db.mapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">157 of 157</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">8</td><td class="ctr2">8</td><td class="ctr1">38</td><td class="ctr2">38</td><td class="ctr1">8</td><td class="ctr2">8</td><td class="ctr1">4</td><td class="ctr2">4</td></tr></tfoot><tbody><tr><td id="a0"><a href="AppointmentMapper.java.html" class="el_source">AppointmentMapper.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="78" alt="78"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">18</td><td class="ctr2" id="i0">18</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a3"><a href="SlotMapper.java.html" class="el_source">SlotMapper.java</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="53" height="10" title="35" alt="35"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h1">8</td><td class="ctr2" id="i1">8</td><td class="ctr1" id="j1">2</td><td class="ctr2" id="k1">2</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="ScheduleMapper.java.html" class="el_source">ScheduleMapper.java</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="46" height="10" title="30" alt="30"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">2</td><td class="ctr2" id="g2">2</td><td class="ctr1" id="h2">8</td><td class="ctr2" id="i2">8</td><td class="ctr1" id="j2">2</td><td class="ctr2" id="k2">2</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a1"><a href="CourseMapper.java.html" class="el_source">CourseMapper.java</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="21" height="10" title="14" alt="14"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">2</td><td class="ctr2" id="g3">2</td><td class="ctr1" id="h3">4</td><td class="ctr2" id="i3">4</td><td class="ctr1" id="j3">2</td><td class="ctr2" id="k3">2</td><td class="ctr1" id="l3">1</td><td class="ctr2" id="m3">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Appointment.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Appointment.html
new file mode 100644
index 0000000..73efaf4
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Appointment.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Appointment</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_class">Appointment</span></div><h1>Appointment</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">0 of 24</td><td class="ctr2">100%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td class="ctr2">7</td><td class="ctr1">0</td><td class="ctr2">5</td><td class="ctr1">0</td><td class="ctr2">7</td></tr></tfoot><tbody><tr><td id="a5"><a href="Appointment.java.html#L8" class="el_method">setDate(long)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a6"><a href="Appointment.java.html#L8" class="el_method">setDuration(long)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a4"><a href="Appointment.java.html#L8" class="el_method">setCourse(Course)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a2"><a href="Appointment.java.html#L11" class="el_method">getDate()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a3"><a href="Appointment.java.html#L12" class="el_method">getDuration()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a1"><a href="Appointment.java.html#L13" class="el_method">getCourse()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a0"><a href="Appointment.java.html#L9" class="el_method">Appointment()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Appointment.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Appointment.java.html
new file mode 100644
index 0000000..1f052fc
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Appointment.java.html
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Appointment.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_source">Appointment.java</span></div><h1>Appointment.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.model;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+<span class="fc" id="L8">@Setter</span>
+<span class="fc" id="L9">@NoArgsConstructor</span>
+public class Appointment {
+<span class="fc" id="L11">    private long date;</span>
+<span class="fc" id="L12">    private long duration;</span>
+<span class="fc" id="L13">    private Course course;</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest$Status.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest$Status.html
new file mode 100644
index 0000000..57e77da
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest$Status.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AppointmentRequest.Status</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_class">AppointmentRequest.Status</span></div><h1>AppointmentRequest.Status</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">21 of 21</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">1</td><td class="ctr2">1</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="AppointmentRequest.java.html#L12" class="el_method">static {...}</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="21" alt="21"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">4</td><td class="ctr2" id="i0">4</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest.html
new file mode 100644
index 0000000..3ccbdcc
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AppointmentRequest</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_class">AppointmentRequest</span></div><h1>AppointmentRequest</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">52 of 52</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">15</td><td class="ctr2">15</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">15</td><td class="ctr2">15</td></tr></tfoot><tbody><tr><td id="a10"><a href="AppointmentRequest.java.html#L9" class="el_method">setId(int)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a9"><a href="AppointmentRequest.java.html#L9" class="el_method">setAppointment(Appointment)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a13"><a href="AppointmentRequest.java.html#L9" class="el_method">setStudent(User)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a14"><a href="AppointmentRequest.java.html#L9" class="el_method">setTa(User)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a11"><a href="AppointmentRequest.java.html#L9" class="el_method">setRequestTime(long)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a12"><a href="AppointmentRequest.java.html#L9" class="el_method">setStatus(AppointmentRequest.Status)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a8"><a href="AppointmentRequest.java.html#L9" class="el_method">setAdminHasPermission(boolean)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a2"><a href="AppointmentRequest.java.html#L18" class="el_method">getId()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a1"><a href="AppointmentRequest.java.html#L19" class="el_method">getAppointment()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">1</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a5"><a href="AppointmentRequest.java.html#L20" class="el_method">getStudent()</a></td><td class="bar" id="b9"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c9">0%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">1</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">1</td><td class="ctr2" id="i9">1</td><td class="ctr1" id="j9">1</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a6"><a href="AppointmentRequest.java.html#L21" class="el_method">getTa()</a></td><td class="bar" id="b10"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c10">0%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">1</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">1</td><td class="ctr2" id="i10">1</td><td class="ctr1" id="j10">1</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a3"><a href="AppointmentRequest.java.html#L22" class="el_method">getRequestTime()</a></td><td class="bar" id="b11"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c11">0%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">1</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">1</td><td class="ctr2" id="i11">1</td><td class="ctr1" id="j11">1</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a4"><a href="AppointmentRequest.java.html#L23" class="el_method">getStatus()</a></td><td class="bar" id="b12"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c12">0%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">1</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">1</td><td class="ctr2" id="i12">1</td><td class="ctr1" id="j12">1</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a7"><a href="AppointmentRequest.java.html#L24" class="el_method">isAdminHasPermission()</a></td><td class="bar" id="b13"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c13">0%</td><td class="bar" id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f13">1</td><td class="ctr2" id="g13">1</td><td class="ctr1" id="h13">1</td><td class="ctr2" id="i13">1</td><td class="ctr1" id="j13">1</td><td class="ctr2" id="k13">1</td></tr><tr><td id="a0"><a href="AppointmentRequest.java.html#L10" class="el_method">AppointmentRequest()</a></td><td class="bar" id="b14"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c14">0%</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">1</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h14">1</td><td class="ctr2" id="i14">1</td><td class="ctr1" id="j14">1</td><td class="ctr2" id="k14">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest.java.html
new file mode 100644
index 0000000..bf8577f
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/AppointmentRequest.java.html
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AppointmentRequest.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_source">AppointmentRequest.java</span></div><h1>AppointmentRequest.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.model;
+
+import com.adpro.tasc.user.db.model.User;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+<span class="nc" id="L9">@Setter</span>
+<span class="nc" id="L10">@NoArgsConstructor</span>
+public class AppointmentRequest {
+<span class="nc" id="L12">    public enum Status {</span>
+<span class="nc" id="L13">        ACCEPTED,</span>
+<span class="nc" id="L14">        REJECTED,</span>
+<span class="nc" id="L15">        PENDING</span>
+    }
+
+<span class="nc" id="L18">    private int id;</span>
+<span class="nc" id="L19">    private Appointment appointment;</span>
+<span class="nc" id="L20">    private User student;</span>
+<span class="nc" id="L21">    private User ta;</span>
+<span class="nc" id="L22">    private long requestTime;</span>
+<span class="nc" id="L23">    private Status status;</span>
+<span class="nc" id="L24">    private boolean adminHasPermission;</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Course.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Course.html
new file mode 100644
index 0000000..a6399ce
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Course.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Course</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_class">Course</span></div><h1>Course</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">3 of 10</td><td class="ctr2">70%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">1</td><td class="ctr2">3</td><td class="ctr1">1</td><td class="ctr2">3</td><td class="ctr1">1</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a1"><a href="Course.java.html#L11" class="el_method">getName()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="Course.java.html#L8" class="el_method">setName(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="Course.java.html#L9" class="el_method">Course()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Course.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Course.java.html
new file mode 100644
index 0000000..784fd39
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Course.java.html
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Course.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_source">Course.java</span></div><h1>Course.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.model;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+<span class="fc" id="L8">@Setter</span>
+<span class="fc" id="L9">@NoArgsConstructor</span>
+public class Course {
+<span class="nc" id="L11">    private String name;</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Schedule.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Schedule.html
new file mode 100644
index 0000000..2faa4f1
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Schedule.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Schedule</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_class">Schedule</span></div><h1>Schedule</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">31 of 31</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">6</td><td class="ctr2">6</td><td class="ctr1">9</td><td class="ctr2">9</td></tr></tfoot><tbody><tr><td id="a7"><a href="Schedule.java.html#L11" class="el_method">setId(int)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a8"><a href="Schedule.java.html#L11" class="el_method">setUser(User)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a6"><a href="Schedule.java.html#L11" class="el_method">setAvailableSlots(List)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a5"><a href="Schedule.java.html#L11" class="el_method">setAdminHasPermission(boolean)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a1"><a href="Schedule.java.html#L14" class="el_method">getId()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a2"><a href="Schedule.java.html#L15" class="el_method">getUser()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a0"><a href="Schedule.java.html#L16" class="el_method">getAvailableSlots()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a3"><a href="Schedule.java.html#L17" class="el_method">isAdminHasPermission()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a4"><a href="Schedule.java.html#L12" class="el_method">Schedule()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">1</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Schedule.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Schedule.java.html
new file mode 100644
index 0000000..e69a5b0
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Schedule.java.html
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Schedule.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_source">Schedule.java</span></div><h1>Schedule.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.model;
+
+import com.adpro.tasc.user.db.model.User;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+<span class="nc" id="L11">@Setter</span>
+<span class="nc" id="L12">@NoArgsConstructor</span>
+public class Schedule {
+<span class="nc" id="L14">    private int id;</span>
+<span class="nc" id="L15">    private User user;</span>
+<span class="nc" id="L16">    private List&lt;Slot&gt; availableSlots;</span>
+<span class="nc" id="L17">    private boolean adminHasPermission;</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot$Day.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot$Day.html
new file mode 100644
index 0000000..5ca5c38
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot$Day.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Slot.Day</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_class">Slot.Day</span></div><h1>Slot.Day</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">45 of 45</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">1</td><td class="ctr2">1</td><td class="ctr1">8</td><td class="ctr2">8</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="Slot.java.html#L11" class="el_method">static {...}</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="45" alt="45"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">8</td><td class="ctr2" id="i0">8</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot.html
new file mode 100644
index 0000000..235d4b5
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Slot</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_class">Slot</span></div><h1>Slot</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">38 of 38</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">11</td><td class="ctr2">11</td><td class="ctr1">7</td><td class="ctr2">7</td><td class="ctr1">11</td><td class="ctr2">11</td></tr></tfoot><tbody><tr><td id="a7"><a href="Slot.java.html#L8" class="el_method">setId(int)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a8"><a href="Slot.java.html#L8" class="el_method">setSchedule(int)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a9"><a href="Slot.java.html#L8" class="el_method">setStartTime(long)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a6"><a href="Slot.java.html#L8" class="el_method">setFinishTime(long)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a5"><a href="Slot.java.html#L8" class="el_method">setDay(Slot.Day)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a2"><a href="Slot.java.html#L21" class="el_method">getId()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a3"><a href="Slot.java.html#L22" class="el_method">getSchedule()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a4"><a href="Slot.java.html#L23" class="el_method">getStartTime()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a1"><a href="Slot.java.html#L24" class="el_method">getFinishTime()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">1</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a0"><a href="Slot.java.html#L25" class="el_method">getDay()</a></td><td class="bar" id="b9"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c9">0%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">1</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">1</td><td class="ctr2" id="i9">1</td><td class="ctr1" id="j9">1</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a10"><a href="Slot.java.html#L9" class="el_method">Slot()</a></td><td class="bar" id="b10"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c10">0%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">1</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">1</td><td class="ctr2" id="i10">1</td><td class="ctr1" id="j10">1</td><td class="ctr2" id="k10">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot.java.html
new file mode 100644
index 0000000..2cb9a26
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/Slot.java.html
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Slot.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.model</a> &gt; <span class="el_source">Slot.java</span></div><h1>Slot.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.model;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+<span class="nc" id="L8">@Setter</span>
+<span class="nc" id="L9">@NoArgsConstructor</span>
+public class Slot {
+<span class="nc" id="L11">    public enum Day {</span>
+<span class="nc" id="L12">        MONDAY,</span>
+<span class="nc" id="L13">        TUESDAY,</span>
+<span class="nc" id="L14">        WEDNESDAY,</span>
+<span class="nc" id="L15">        THURSDAY,</span>
+<span class="nc" id="L16">        FRIDAY,</span>
+<span class="nc" id="L17">        SATURDAY,</span>
+<span class="nc" id="L18">        SUNDAY</span>
+    }
+
+<span class="nc" id="L21">    private int id;</span>
+<span class="nc" id="L22">    private int schedule;</span>
+<span class="nc" id="L23">    private long startTime;</span>
+<span class="nc" id="L24">    private long finishTime;</span>
+<span class="nc" id="L25">    private Day day;</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/index.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/index.html
new file mode 100644
index 0000000..0a7c744
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.appointment.db.model</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.appointment.db.model</span></div><h1>com.adpro.tasc.appointment.db.model</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">190 of 221</td><td class="ctr2">14%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">38</td><td class="ctr2">47</td><td class="ctr1">35</td><td class="ctr2">42</td><td class="ctr1">38</td><td class="ctr2">47</td><td class="ctr1">5</td><td class="ctr2">7</td></tr></tfoot><tbody><tr><td id="a1"><a href="AppointmentRequest.html" class="el_class">AppointmentRequest</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="52" alt="52"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">15</td><td class="ctr2" id="g0">15</td><td class="ctr1" id="h0">9</td><td class="ctr2" id="i0">9</td><td class="ctr1" id="j0">15</td><td class="ctr2" id="k0">15</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a6"><a href="Slot$Day.html" class="el_class">Slot.Day</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="103" height="10" title="45" alt="45"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h1">8</td><td class="ctr2" id="i1">8</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k5">1</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a5"><a href="Slot.html" class="el_class">Slot</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="87" height="10" title="38" alt="38"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f1">11</td><td class="ctr2" id="g1">11</td><td class="ctr1" id="h2">7</td><td class="ctr2" id="i2">7</td><td class="ctr1" id="j1">11</td><td class="ctr2" id="k1">11</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a4"><a href="Schedule.html" class="el_class">Schedule</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="71" height="10" title="31" alt="31"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f2">9</td><td class="ctr2" id="g2">9</td><td class="ctr1" id="h3">6</td><td class="ctr2" id="i3">6</td><td class="ctr1" id="j2">9</td><td class="ctr2" id="k2">9</td><td class="ctr1" id="l3">1</td><td class="ctr2" id="m3">1</td></tr><tr><td id="a2"><a href="AppointmentRequest$Status.html" class="el_class">AppointmentRequest.Status</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="48" height="10" title="21" alt="21"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h4">4</td><td class="ctr2" id="i5">4</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k6">1</td><td class="ctr1" id="l4">1</td><td class="ctr2" id="m4">1</td></tr><tr><td id="a3"><a href="Course.html" class="el_class">Course</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="3" alt="3"/><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="7" alt="7"/></td><td class="ctr2" id="c1">70%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i6">3</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k4">3</td><td class="ctr1" id="l5">0</td><td class="ctr2" id="m5">1</td></tr><tr><td id="a0"><a href="Appointment.html" class="el_class">Appointment</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="55" height="10" title="24" alt="24"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g3">7</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i4">5</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k3">7</td><td class="ctr1" id="l6">0</td><td class="ctr2" id="m6">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/index.source.html
new file mode 100644
index 0000000..e210a48
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.model/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.appointment.db.model</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.appointment.db.model</span></div><h1>com.adpro.tasc.appointment.db.model</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">190 of 221</td><td class="ctr2">14%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">38</td><td class="ctr2">47</td><td class="ctr1">35</td><td class="ctr2">42</td><td class="ctr1">38</td><td class="ctr2">47</td><td class="ctr1">5</td><td class="ctr2">7</td></tr></tfoot><tbody><tr><td id="a4"><a href="Slot.java.html" class="el_source">Slot.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="83" alt="83"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f1">12</td><td class="ctr2" id="g1">12</td><td class="ctr1" id="h0">15</td><td class="ctr2" id="i0">15</td><td class="ctr1" id="j1">12</td><td class="ctr2" id="k1">12</td><td class="ctr1" id="l0">2</td><td class="ctr2" id="m0">2</td></tr><tr><td id="a1"><a href="AppointmentRequest.java.html" class="el_source">AppointmentRequest.java</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="105" height="10" title="73" alt="73"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f0">16</td><td class="ctr2" id="g0">16</td><td class="ctr1" id="h1">13</td><td class="ctr2" id="i1">13</td><td class="ctr1" id="j0">16</td><td class="ctr2" id="k0">16</td><td class="ctr1" id="l1">2</td><td class="ctr2" id="m1">2</td></tr><tr><td id="a3"><a href="Schedule.java.html" class="el_source">Schedule.java</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="44" height="10" title="31" alt="31"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">9</td><td class="ctr2" id="g2">9</td><td class="ctr1" id="h2">6</td><td class="ctr2" id="i2">6</td><td class="ctr1" id="j2">9</td><td class="ctr2" id="k2">9</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a2"><a href="Course.java.html" class="el_source">Course.java</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/><img src="../jacoco-resources/greenbar.gif" width="10" height="10" title="7" alt="7"/></td><td class="ctr2" id="c1">70%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i4">3</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k4">3</td><td class="ctr1" id="l3">0</td><td class="ctr2" id="m3">1</td></tr><tr><td id="a0"><a href="Appointment.java.html" class="el_source">Appointment.java</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="34" height="10" title="24" alt="24"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g3">7</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i3">5</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k3">7</td><td class="ctr1" id="l4">0</td><td class="ctr2" id="m4">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/AppointmentTemplate.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/AppointmentTemplate.html
new file mode 100644
index 0000000..695ab71
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/AppointmentTemplate.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AppointmentTemplate</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.template</a> &gt; <span class="el_class">AppointmentTemplate</span></div><h1>AppointmentTemplate</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">138 of 138</td><td class="ctr2">0%</td><td class="bar">2 of 2</td><td class="ctr2">0%</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">24</td><td class="ctr2">24</td><td class="ctr1">8</td><td class="ctr2">8</td></tr></tfoot><tbody><tr><td id="a1"><a href="AppointmentTemplate.java.html#L76" class="el_method">createAppointment(AppointmentRequest)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="46" alt="46"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h0">6</td><td class="ctr2" id="i0">6</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a4"><a href="AppointmentTemplate.java.html#L54" class="el_method">getAppointmentByUser(User)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="75" height="10" title="29" alt="29"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h1">6</td><td class="ctr2" id="i1">6</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a7"><a href="AppointmentTemplate.java.html#L89" class="el_method">updateStatus(AppointmentRequest, AppointmentRequest.Status)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="54" height="10" title="21" alt="21"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">3</td><td class="ctr2" id="i2">3</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a3"><a href="AppointmentTemplate.java.html#L43" class="el_method">getAppointmentByCourse(Course)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="49" height="10" title="19" alt="19"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">2</td><td class="ctr2" id="i3">2</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a2"><a href="AppointmentTemplate.java.html#L33" class="el_method">getAllAppointment()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="31" height="10" title="12" alt="12"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">2</td><td class="ctr2" id="i4">2</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a6"><a href="AppointmentTemplate.java.html#L23" class="el_method">setUserDB(UserDAO)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="4" alt="4"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">2</td><td class="ctr2" id="i5">2</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a5"><a href="AppointmentTemplate.java.html#L28" class="el_method">setTemplate(JdbcTemplate)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="4" alt="4"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">2</td><td class="ctr2" id="i6">2</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a0"><a href="AppointmentTemplate.java.html#L17" class="el_method">AppointmentTemplate()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/AppointmentTemplate.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/AppointmentTemplate.java.html
new file mode 100644
index 0000000..f4a8bc9
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/AppointmentTemplate.java.html
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AppointmentTemplate.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.template</a> &gt; <span class="el_source">AppointmentTemplate.java</span></div><h1>AppointmentTemplate.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.template;
+
+import com.adpro.tasc.appointment.db.dao.AppointmentDAO;
+import com.adpro.tasc.appointment.db.mapper.AppointmentMapper;
+import com.adpro.tasc.appointment.db.model.Appointment;
+import com.adpro.tasc.appointment.db.model.AppointmentRequest;
+import com.adpro.tasc.appointment.db.model.Course;
+import com.adpro.tasc.user.db.dao.UserDAO;
+import com.adpro.tasc.user.db.model.User;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+<span class="nc" id="L17">public class AppointmentTemplate implements AppointmentDAO {</span>
+    private JdbcTemplate template;
+    private UserDAO userDB;
+
+    @Autowired
+    public void setUserDB(UserDAO userDB) {
+<span class="nc" id="L23">        this.userDB = userDB;</span>
+<span class="nc" id="L24">    }</span>
+
+    @Autowired
+    public void setTemplate(JdbcTemplate template) {
+<span class="nc" id="L28">        this.template = template;</span>
+<span class="nc" id="L29">    }</span>
+
+    @Override
+    public List&lt;AppointmentRequest&gt; getAllAppointment() {
+<span class="nc" id="L33">        String sql = &quot;&quot;&quot;</span>
+                select *
+                from appointment_request
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L38">        return template.query(sql, new AppointmentMapper(userDB));</span>
+    }
+
+    @Override
+    public List&lt;AppointmentRequest&gt; getAppointmentByCourse(Course course) {
+<span class="nc" id="L43">        String sql = &quot;&quot;&quot;</span>
+                select *
+                from appointment_request
+                where course=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L49">        return template.query(sql, new AppointmentMapper(userDB), course.getName());</span>
+    }
+
+    @Override
+    public List&lt;AppointmentRequest&gt; getAppointmentByUser(User user) {
+<span class="nc" id="L54">        String sql = &quot;&quot;&quot;</span>
+                select *
+                from appointment_request
+                where student=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L60">        List&lt;AppointmentRequest&gt; requests = template.query(sql, new AppointmentMapper(userDB));</span>
+<span class="nc bnc" id="L61" title="All 2 branches missed.">        if(requests.isEmpty()) {</span>
+<span class="nc" id="L62">            sql = &quot;&quot;&quot;</span>
+            select *
+            from appointment_request
+            where ta=?
+            &quot;&quot;&quot;;
+
+<span class="nc" id="L68">            requests = template.query(sql, new AppointmentMapper(userDB));</span>
+        }
+
+<span class="nc" id="L71">        return requests;</span>
+    }
+
+    @Override
+    public void createAppointment(AppointmentRequest request) {
+<span class="nc" id="L76">        String sql = &quot;&quot;&quot;</span>
+                insert into appointment_request (student, ta, request_time, date, duration, course) 
+                values (?, ?, ?, ?, ?, ?)
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L81">        Appointment appointment = request.getAppointment();</span>
+<span class="nc" id="L82">        template.update(sql,</span>
+<span class="nc" id="L83">                request.getStudent(), request.getTa(), request.getRequestTime(),</span>
+<span class="nc" id="L84">                appointment.getDate(), appointment.getDuration(), appointment.getCourse());</span>
+<span class="nc" id="L85">    }</span>
+
+    @Override
+    public void updateStatus(AppointmentRequest request, AppointmentRequest.Status status) {
+<span class="nc" id="L89">        String sql = &quot;&quot;&quot;</span>
+                update appointment_request
+                set status=?
+                where id=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L95">        template.update(sql, status.toString(), request.getId());</span>
+<span class="nc" id="L96">    }</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/CourseTemplate.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/CourseTemplate.html
new file mode 100644
index 0000000..22b6a6d
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/CourseTemplate.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>CourseTemplate</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.template</a> &gt; <span class="el_class">CourseTemplate</span></div><h1>CourseTemplate</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">108 of 108</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">8</td><td class="ctr2">8</td><td class="ctr1">19</td><td class="ctr2">19</td><td class="ctr1">8</td><td class="ctr2">8</td></tr></tfoot><tbody><tr><td id="a0"><a href="CourseTemplate.java.html#L35" class="el_method">addUserCourse(AcademicUser, Course)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="20" alt="20"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a3"><a href="CourseTemplate.java.html#L45" class="el_method">deleteUserCourse(AcademicUser, Course)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="20" alt="20"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">3</td><td class="ctr2" id="i1">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a7"><a href="CourseTemplate.java.html#L65" class="el_method">updateCourse(String, Course)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="114" height="10" title="19" alt="19"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">3</td><td class="ctr2" id="i2">3</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a5"><a href="CourseTemplate.java.html#L24" class="el_method">getUserCourseList(AcademicUser)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="102" height="10" title="17" alt="17"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h4">2</td><td class="ctr2" id="i4">2</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a2"><a href="CourseTemplate.java.html#L76" class="el_method">deleteCourse(Course)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="15" alt="15"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h3">3</td><td class="ctr2" id="i3">3</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a4"><a href="CourseTemplate.java.html#L55" class="el_method">getAllCourse()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="10" alt="10"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">2</td><td class="ctr2" id="i5">2</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a6"><a href="CourseTemplate.java.html#L19" class="el_method">setTemplate(JdbcTemplate)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="4" alt="4"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">2</td><td class="ctr2" id="i6">2</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a1"><a href="CourseTemplate.java.html#L14" class="el_method">CourseTemplate()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="18" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/CourseTemplate.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/CourseTemplate.java.html
new file mode 100644
index 0000000..4c43119
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/CourseTemplate.java.html
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>CourseTemplate.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.template</a> &gt; <span class="el_source">CourseTemplate.java</span></div><h1>CourseTemplate.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.template;
+
+import com.adpro.tasc.appointment.db.dao.CourseDAO;
+import com.adpro.tasc.appointment.db.mapper.CourseMapper;
+import com.adpro.tasc.appointment.db.model.Course;
+import com.adpro.tasc.user.db.model.AcademicUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+<span class="nc" id="L14">public class CourseTemplate implements CourseDAO {</span>
+    private JdbcTemplate template;
+
+    @Autowired
+    public void setTemplate(JdbcTemplate template) {
+<span class="nc" id="L19">        this.template = template;</span>
+<span class="nc" id="L20">    }</span>
+
+    @Override
+    public List&lt;Course&gt; getUserCourseList(AcademicUser user) {
+<span class="nc" id="L24">        String sql = &quot;&quot;&quot;</span>
+                select *
+                from course_list
+                where username=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L30">        return template.query(sql, new CourseMapper(), user.getUserName());</span>
+    }
+
+    @Override
+    public void addUserCourse(AcademicUser user, Course course) {
+<span class="nc" id="L35">        String sql = &quot;&quot;&quot;</span>
+                insert into course_list (username, course)
+                values (?, ?)
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L40">        template.update(sql, user.getUserName(), course.getName());</span>
+<span class="nc" id="L41">    }</span>
+
+    @Override
+    public void deleteUserCourse(AcademicUser user, Course course) {
+<span class="nc" id="L45">        String sql = &quot;&quot;&quot;</span>
+                delete from course_list
+                where username=? and course=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L50">        template.update(sql, user.getUserName(), course.getName());</span>
+<span class="nc" id="L51">    }</span>
+
+    @Override
+    public List&lt;Course&gt; getAllCourse() {
+<span class="nc" id="L55">        String sql = &quot;&quot;&quot;</span>
+                select *
+                from course
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L60">        return template.query(sql, new CourseMapper());</span>
+    }
+
+    @Override
+    public void updateCourse(String name, Course course) {
+<span class="nc" id="L65">        String sql = &quot;&quot;&quot;</span>
+                update course
+                set name=?
+                where name=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L71">        template.update(sql, course.getName(), name);</span>
+<span class="nc" id="L72">    }</span>
+
+    @Override
+    public void deleteCourse(Course course) {
+<span class="nc" id="L76">        String sql = &quot;&quot;&quot;</span>
+                delete from course
+                where name=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L81">        template.update(sql, course.getName());</span>
+<span class="nc" id="L82">    }</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/ScheduleTemplate.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/ScheduleTemplate.html
new file mode 100644
index 0000000..2f1a844
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/ScheduleTemplate.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ScheduleTemplate</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.appointment.db.template</a> &gt; <span class="el_class">ScheduleTemplate</span></div><h1>ScheduleTemplate</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">104 of 104</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">6</td><td class="ctr2">6</td><td class="ctr1">18</td><td class="ctr2">18</td><td class="ctr1">6</td><td class="ctr2">6</td></tr></tfoot><tbody><tr><td id="a2"><a href="ScheduleTemplate.java.html#L33" class="el_method">getUserSchedule(AcademicUser)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="43" alt="43"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">6</td><td class="ctr2" id="i0">6</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="ScheduleTemplate.java.html#L54" class="el_method">addUserScheduleSlot(Slot)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="94" height="10" title="34" alt="34"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">4</td><td class="ctr2" id="i1">4</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a href="ScheduleTemplate.java.html#L65" class="el_method">deleteUserScheduleSlot(Slot)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="44" height="10" title="16" alt="16"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">3</td><td class="ctr2" id="i2">3</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a5"><a href="ScheduleTemplate.java.html#L23" class="el_method">setUserDB(UserDAO)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="4" alt="4"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">2</td><td class="ctr2" id="i3">2</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a4"><a href="ScheduleTemplate.java.html#L28" class="el_method">setTemplate(JdbcTemplate)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="4" alt="4"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">2</td><td class="ctr2" id="i4">2</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a3"><a href="ScheduleTemplate.java.html#L17" class="el_method">ScheduleTemplate()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/ScheduleTemplate.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/ScheduleTemplate.java.html
new file mode 100644
index 0000000..b71d3dc
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/ScheduleTemplate.java.html
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ScheduleTemplate.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.appointment.db.template</a> &gt; <span class="el_source">ScheduleTemplate.java</span></div><h1>ScheduleTemplate.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.appointment.db.template;
+
+import com.adpro.tasc.appointment.db.dao.ScheduleDAO;
+import com.adpro.tasc.appointment.db.mapper.ScheduleMapper;
+import com.adpro.tasc.appointment.db.mapper.SlotMapper;
+import com.adpro.tasc.appointment.db.model.Schedule;
+import com.adpro.tasc.appointment.db.model.Slot;
+import com.adpro.tasc.user.db.dao.UserDAO;
+import com.adpro.tasc.user.db.model.AcademicUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+<span class="nc" id="L17">public class ScheduleTemplate implements ScheduleDAO {</span>
+    private JdbcTemplate template;
+    private UserDAO userDB;
+
+    @Autowired
+    public void setUserDB(UserDAO userDB) {
+<span class="nc" id="L23">        this.userDB = userDB;</span>
+<span class="nc" id="L24">    }</span>
+
+    @Autowired
+    public void setTemplate(JdbcTemplate template) {
+<span class="nc" id="L28">        this.template = template;</span>
+<span class="nc" id="L29">    }</span>
+
+    @Override
+    public Schedule getUserSchedule(AcademicUser user) {
+<span class="nc" id="L33">        String sql = &quot;&quot;&quot;</span>
+                select *
+                from schedule
+                where schedule.user=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L39">        Schedule schedule = template.queryForObject(sql, new ScheduleMapper(userDB), user.getUserName());</span>
+
+<span class="nc" id="L41">        sql = &quot;&quot;&quot;</span>
+            select *
+            from slot
+            where schedule=?
+            &quot;&quot;&quot;;
+<span class="nc" id="L46">        List&lt;Slot&gt; slots = template.query(sql, new SlotMapper(), schedule.getId());</span>
+<span class="nc" id="L47">        schedule.setAvailableSlots(slots);</span>
+
+<span class="nc" id="L49">        return schedule;</span>
+    }
+
+    @Override
+    public void addUserScheduleSlot(Slot slot) {
+<span class="nc" id="L54">        String sql = &quot;&quot;&quot;</span>
+                insert into slot (schedule, start_time, finish_time, day)
+                values (?, ?, ?, ?)
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L59">        template.update(sql,</span>
+<span class="nc" id="L60">                slot.getSchedule(), slot.getStartTime(), slot.getFinishTime(), slot.getDay().toString());</span>
+<span class="nc" id="L61">    }</span>
+
+    @Override
+    public void deleteUserScheduleSlot(Slot slot) {
+<span class="nc" id="L65">        String sql = &quot;&quot;&quot;</span>
+                delete from slot
+                where id=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L70">        template.update(sql, slot.getId());</span>
+<span class="nc" id="L71">    }</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/index.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/index.html
new file mode 100644
index 0000000..9e6b3df
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.appointment.db.template</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.appointment.db.template</span></div><h1>com.adpro.tasc.appointment.db.template</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">350 of 350</td><td class="ctr2">0%</td><td class="bar">2 of 2</td><td class="ctr2">0%</td><td class="ctr1">23</td><td class="ctr2">23</td><td class="ctr1">61</td><td class="ctr2">61</td><td class="ctr1">22</td><td class="ctr2">22</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a0"><a href="AppointmentTemplate.html" class="el_class">AppointmentTemplate</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="138" alt="138"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">9</td><td class="ctr2" id="g0">9</td><td class="ctr1" id="h0">24</td><td class="ctr2" id="i0">24</td><td class="ctr1" id="j0">8</td><td class="ctr2" id="k0">8</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a1"><a href="CourseTemplate.html" class="el_class">CourseTemplate</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="93" height="10" title="108" alt="108"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">8</td><td class="ctr2" id="g1">8</td><td class="ctr1" id="h1">19</td><td class="ctr2" id="i1">19</td><td class="ctr1" id="j1">8</td><td class="ctr2" id="k1">8</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="ScheduleTemplate.html" class="el_class">ScheduleTemplate</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="104" alt="104"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">6</td><td class="ctr2" id="g2">6</td><td class="ctr1" id="h2">18</td><td class="ctr2" id="i2">18</td><td class="ctr1" id="j2">6</td><td class="ctr2" id="k2">6</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/index.source.html
new file mode 100644
index 0000000..3c42704
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.appointment.db.template/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.appointment.db.template</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.appointment.db.template</span></div><h1>com.adpro.tasc.appointment.db.template</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">350 of 350</td><td class="ctr2">0%</td><td class="bar">2 of 2</td><td class="ctr2">0%</td><td class="ctr1">23</td><td class="ctr2">23</td><td class="ctr1">61</td><td class="ctr2">61</td><td class="ctr1">22</td><td class="ctr2">22</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a0"><a href="AppointmentTemplate.java.html" class="el_source">AppointmentTemplate.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="138" alt="138"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">9</td><td class="ctr2" id="g0">9</td><td class="ctr1" id="h0">24</td><td class="ctr2" id="i0">24</td><td class="ctr1" id="j0">8</td><td class="ctr2" id="k0">8</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a1"><a href="CourseTemplate.java.html" class="el_source">CourseTemplate.java</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="93" height="10" title="108" alt="108"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">8</td><td class="ctr2" id="g1">8</td><td class="ctr1" id="h1">19</td><td class="ctr2" id="i1">19</td><td class="ctr1" id="j1">8</td><td class="ctr2" id="k1">8</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="ScheduleTemplate.java.html" class="el_source">ScheduleTemplate.java</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="104" alt="104"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">6</td><td class="ctr2" id="g2">6</td><td class="ctr1" id="h2">18</td><td class="ctr2" id="i2">18</td><td class="ctr1" id="j2">6</td><td class="ctr2" id="k2">6</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.config/DBConfig.html b/build/reports/jacoco/test/html/com.adpro.tasc.config/DBConfig.html
new file mode 100644
index 0000000..5620538
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.config/DBConfig.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>DBConfig</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.config</a> &gt; <span class="el_class">DBConfig</span></div><h1>DBConfig</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">25 of 25</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">7</td><td class="ctr2">7</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="DBConfig.java.html#L26" class="el_method">dataSource()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="22" alt="22"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">6</td><td class="ctr2" id="i0">6</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="DBConfig.java.html#L11" class="el_method">DBConfig()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="16" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.config/DBConfig.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.config/DBConfig.java.html
new file mode 100644
index 0000000..a90c450
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.config/DBConfig.java.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>DBConfig.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.config</a> &gt; <span class="el_source">DBConfig.java</span></div><h1>DBConfig.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.config;
+
+import org.postgresql.ds.PGSimpleDataSource;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+@Configuration
+<span class="nc" id="L11">public class DBConfig {</span>
+    @Value(&quot;${spring.datasource.url}&quot;)
+    private String databaseUrl;
+
+    @Value(&quot;${spring.datasource.username}&quot;)
+    private String databaseUsername;
+
+    @Value(&quot;${spring.datasource.password}&quot;)
+    private String databasePassword;
+
+    @Value(&quot;${spring.datasource.currentSchema}&quot;)
+    private String databaseSchema;
+
+    @Bean
+    public DataSource dataSource() {
+<span class="nc" id="L26">        PGSimpleDataSource dataSource = new PGSimpleDataSource();</span>
+<span class="nc" id="L27">        dataSource.setUrl(databaseUrl);</span>
+<span class="nc" id="L28">        dataSource.setUser(databaseUsername);</span>
+<span class="nc" id="L29">        dataSource.setPassword(databasePassword);</span>
+<span class="nc" id="L30">        dataSource.setCurrentSchema(databaseSchema);</span>
+
+<span class="nc" id="L32">        return dataSource;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.config/index.html b/build/reports/jacoco/test/html/com.adpro.tasc.config/index.html
new file mode 100644
index 0000000..6eed8c1
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.config/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.config</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.config</span></div><h1>com.adpro.tasc.config</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">25 of 25</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">7</td><td class="ctr2">7</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="DBConfig.html" class="el_class">DBConfig</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="25" alt="25"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">7</td><td class="ctr2" id="i0">7</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.config/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc.config/index.source.html
new file mode 100644
index 0000000..ccce074
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.config/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.config</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.config</span></div><h1>com.adpro.tasc.config</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">25 of 25</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">7</td><td class="ctr2">7</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="DBConfig.java.html" class="el_source">DBConfig.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="25" alt="25"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">7</td><td class="ctr2" id="i0">7</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.controller/AddRolesController.html b/build/reports/jacoco/test/html/com.adpro.tasc.controller/AddRolesController.html
new file mode 100644
index 0000000..46dfdc2
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.controller/AddRolesController.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AddRolesController</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.controller</a> &gt; <span class="el_class">AddRolesController</span></div><h1>AddRolesController</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">38 of 38</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">7</td><td class="ctr2">7</td><td class="ctr1">4</td><td class="ctr2">4</td></tr></tfoot><tbody><tr><td id="a2"><a href="AddRolesController.java.html#L27" class="el_method">registerStudent(Model, String, String, String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="13" alt="13"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">2</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a3"><a href="AddRolesController.java.html#L33" class="el_method">registerTA(Model, String, String, String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="13" alt="13"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">2</td><td class="ctr2" id="i1">2</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="AddRolesController.java.html#L21" class="el_method">addRoles(Model)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="83" height="10" title="9" alt="9"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">2</td><td class="ctr2" id="i2">2</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a1"><a href="AddRolesController.java.html#L14" class="el_method">AddRolesController()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="27" height="10" title="3" alt="3"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.controller/AddRolesController.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.controller/AddRolesController.java.html
new file mode 100644
index 0000000..6dfd54e
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.controller/AddRolesController.java.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AddRolesController.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.controller</a> &gt; <span class="el_source">AddRolesController.java</span></div><h1>AddRolesController.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.controller;
+
+import com.adpro.tasc.user.db.dao.UserDAO;
+import com.adpro.tasc.user.db.model.AcademicUser;
+import com.adpro.tasc.user.db.model.Role;
+import com.adpro.tasc.user.db.model.User;
+import com.adpro.tasc.user.db.template.UserTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+@Controller
+<span class="nc" id="L14">public class AddRolesController {</span>
+
+    @Autowired
+    private UserDAO userDAO;
+
+    @GetMapping(value = &quot;/add-roles&quot;)
+    public String addRoles(Model model) {
+<span class="nc" id="L21">        model.addAttribute(&quot;userList&quot;, userDAO.getAllUser());</span>
+<span class="nc" id="L22">        return &quot;add_roles&quot;;</span>
+    }
+
+    @PostMapping(value = &quot;/add-roles/student&quot;)
+    public String registerStudent(Model model, @RequestParam (&quot;userName&quot;) String userName, @RequestParam(&quot;fullName&quot;) String fullName, @RequestParam(&quot;password&quot;) String password) {
+<span class="nc" id="L27">        model.addAttribute(&quot;user&quot;, new User(userName, fullName, password, Role.STUDENT));</span>
+<span class="nc" id="L28">        return &quot;redirect:/add_roles&quot;;</span>
+    }
+
+    @PostMapping(value = &quot;/add-roles/ta&quot;)
+    public String registerTA(Model model, @RequestParam (&quot;userNameTA&quot;) String userName, @RequestParam(&quot;fullNameTA&quot;) String fullName, @RequestParam(&quot;passwordTA&quot;) String password) {
+<span class="nc" id="L33">        model.addAttribute(&quot;user&quot;, new AcademicUser(userName, fullName, password, Role.TEACHING_ASSISTANT));</span>
+<span class="nc" id="L34">        return &quot;redirect:/add-roles&quot;;</span>
+    }
+
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.controller/HelloController.html b/build/reports/jacoco/test/html/com.adpro.tasc.controller/HelloController.html
new file mode 100644
index 0000000..5df5baf
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.controller/HelloController.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>HelloController</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.controller</a> &gt; <span class="el_class">HelloController</span></div><h1>HelloController</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">11 of 11</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">5</td><td class="ctr2">5</td><td class="ctr1">5</td><td class="ctr2">5</td><td class="ctr1">5</td><td class="ctr2">5</td></tr></tfoot><tbody><tr><td id="a0"><a href="HelloController.java.html#L8" class="el_method">HelloController()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="3" alt="3"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="HelloController.java.html#L13" class="el_method">indexPage()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="80" height="10" title="2" alt="2"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a4"><a href="HelloController.java.html#L18" class="el_method">seeAppointment()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="80" height="10" title="2" alt="2"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a1"><a href="HelloController.java.html#L23" class="el_method">homePage()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="80" height="10" title="2" alt="2"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a3"><a href="HelloController.java.html#L28" class="el_method">registerPage()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="80" height="10" title="2" alt="2"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.controller/HelloController.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.controller/HelloController.java.html
new file mode 100644
index 0000000..38611cf
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.controller/HelloController.java.html
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>HelloController.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.controller</a> &gt; <span class="el_source">HelloController.java</span></div><h1>HelloController.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+
+@Controller
+<span class="nc" id="L8">public class HelloController {</span>
+
+
+    @GetMapping(&quot;/&quot;)
+    public String indexPage() {
+<span class="nc" id="L13">        return &quot;index&quot;;</span>
+    }
+
+    @GetMapping(&quot;/see&quot;)
+    public String seeAppointment() {
+<span class="nc" id="L18">        return &quot;SeeAppointment&quot;;</span>
+    }
+
+    @GetMapping(&quot;/home&quot;)
+    public String homePage() {
+<span class="nc" id="L23">        return &quot;home&quot;;</span>
+    }
+
+    @GetMapping(&quot;/register&quot;)
+    public String registerPage() {
+<span class="nc" id="L28">        return &quot;register&quot;;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.controller/index.html b/build/reports/jacoco/test/html/com.adpro.tasc.controller/index.html
new file mode 100644
index 0000000..0b4d787
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.controller/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.controller</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.controller</span></div><h1>com.adpro.tasc.controller</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">49 of 49</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">12</td><td class="ctr2">12</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="AddRolesController.html" class="el_class">AddRolesController</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="38" alt="38"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f1">4</td><td class="ctr2" id="g1">4</td><td class="ctr1" id="h0">7</td><td class="ctr2" id="i0">7</td><td class="ctr1" id="j1">4</td><td class="ctr2" id="k1">4</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a1"><a href="HelloController.html" class="el_class">HelloController</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="11" alt="11"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f0">5</td><td class="ctr2" id="g0">5</td><td class="ctr1" id="h1">5</td><td class="ctr2" id="i1">5</td><td class="ctr1" id="j0">5</td><td class="ctr2" id="k0">5</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.controller/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc.controller/index.source.html
new file mode 100644
index 0000000..ce5d252
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.controller/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.controller</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.controller</span></div><h1>com.adpro.tasc.controller</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">49 of 49</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">12</td><td class="ctr2">12</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="AddRolesController.java.html" class="el_source">AddRolesController.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="38" alt="38"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f1">4</td><td class="ctr2" id="g1">4</td><td class="ctr1" id="h0">7</td><td class="ctr2" id="i0">7</td><td class="ctr1" id="j1">4</td><td class="ctr2" id="k1">4</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a1"><a href="HelloController.java.html" class="el_source">HelloController.java</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="11" alt="11"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f0">5</td><td class="ctr2" id="g0">5</td><td class="ctr1" id="h1">5</td><td class="ctr2" id="i1">5</td><td class="ctr1" id="j0">5</td><td class="ctr2" id="k0">5</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/UserMapper.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/UserMapper.html
new file mode 100644
index 0000000..3de4658
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/UserMapper.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>UserMapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.user.db.mapper</a> &gt; <span class="el_class">UserMapper</span></div><h1>UserMapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">56 of 56</td><td class="ctr2">0%</td><td class="bar">2 of 2</td><td class="ctr2">0%</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">16</td><td class="ctr2">16</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a1"><a href="UserMapper.java.html#L35" class="el_method">updateByRole(User)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="26" alt="26"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">6</td><td class="ctr2" id="i0">6</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="UserMapper.java.html#L24" class="el_method">mapRow(ResultSet, int)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="96" height="10" title="21" alt="21"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">6</td><td class="ctr2" id="i1">6</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a2"><a href="UserMapper.java.html#L17" class="el_method">UserMapper(CourseDAO, ScheduleDAO)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="41" height="10" title="9" alt="9"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">4</td><td class="ctr2" id="i2">4</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/UserMapper.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/UserMapper.java.html
new file mode 100644
index 0000000..f398912
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/UserMapper.java.html
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>UserMapper.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.user.db.mapper</a> &gt; <span class="el_source">UserMapper.java</span></div><h1>UserMapper.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.user.db.mapper;
+
+import com.adpro.tasc.appointment.db.dao.CourseDAO;
+import com.adpro.tasc.appointment.db.dao.ScheduleDAO;
+import com.adpro.tasc.user.db.model.AcademicUser;
+import com.adpro.tasc.user.db.model.Role;
+import com.adpro.tasc.user.db.model.User;
+import org.springframework.jdbc.core.RowMapper;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class UserMapper implements RowMapper&lt;User&gt; {
+    private CourseDAO courseDB;
+    private ScheduleDAO scheduleDB;
+
+<span class="nc" id="L17">    public UserMapper(CourseDAO courseDB, ScheduleDAO scheduleDB) {</span>
+<span class="nc" id="L18">        this.courseDB = courseDB;</span>
+<span class="nc" id="L19">        this.scheduleDB = scheduleDB;</span>
+<span class="nc" id="L20">    }</span>
+
+    @Override
+    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
+<span class="nc" id="L24">        User user = new User(</span>
+<span class="nc" id="L25">                rs.getString(&quot;\&quot;user\&quot;.username&quot;),</span>
+<span class="nc" id="L26">                rs.getString(&quot;\&quot;user\&quot;.full_name&quot;),</span>
+<span class="nc" id="L27">                rs.getString(&quot;\&quot;user\&quot;.password&quot;),</span>
+<span class="nc" id="L28">                Role.valueOf(rs.getString(&quot;\&quot;user\&quot;.role&quot;))</span>
+        );
+
+<span class="nc" id="L31">        return updateByRole(user);</span>
+    }
+
+    private User updateByRole(User user) {
+<span class="nc bnc" id="L35" title="All 2 branches missed.">        if(!Role.ADMIN.equals(user.getRole())) {</span>
+<span class="nc" id="L36">            AcademicUser academicUser = new AcademicUser(user);</span>
+
+<span class="nc" id="L38">            academicUser.setCourses(courseDB.getUserCourseList(academicUser));</span>
+<span class="nc" id="L39">            academicUser.setSchedule(scheduleDB.getUserSchedule(academicUser));</span>
+
+<span class="nc" id="L41">            return academicUser;</span>
+        }
+
+<span class="nc" id="L44">        return user;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/index.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/index.html
new file mode 100644
index 0000000..618dc15
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.user.db.mapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.user.db.mapper</span></div><h1>com.adpro.tasc.user.db.mapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">56 of 56</td><td class="ctr2">0%</td><td class="bar">2 of 2</td><td class="ctr2">0%</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">16</td><td class="ctr2">16</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="UserMapper.html" class="el_class">UserMapper</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="56" alt="56"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">4</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h0">16</td><td class="ctr2" id="i0">16</td><td class="ctr1" id="j0">3</td><td class="ctr2" id="k0">3</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/index.source.html
new file mode 100644
index 0000000..f81aefc
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.mapper/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.user.db.mapper</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.user.db.mapper</span></div><h1>com.adpro.tasc.user.db.mapper</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">56 of 56</td><td class="ctr2">0%</td><td class="bar">2 of 2</td><td class="ctr2">0%</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">16</td><td class="ctr2">16</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="UserMapper.java.html" class="el_source">UserMapper.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="56" alt="56"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">4</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h0">16</td><td class="ctr2" id="i0">16</td><td class="ctr1" id="j0">3</td><td class="ctr2" id="k0">3</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/AcademicUser.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/AcademicUser.html
new file mode 100644
index 0000000..9d9993c
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/AcademicUser.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AcademicUser</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.user.db.model</a> &gt; <span class="el_class">AcademicUser</span></div><h1>AcademicUser</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">32 of 32</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">6</td><td class="ctr2">6</td><td class="ctr1">7</td><td class="ctr2">7</td><td class="ctr1">6</td><td class="ctr2">6</td></tr></tfoot><tbody><tr><td id="a1"><a href="AcademicUser.java.html#L18" class="el_method">AcademicUser(User)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="11" alt="11"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">2</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="AcademicUser.java.html#L14" class="el_method">AcademicUser(String, String, String, Role)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="76" height="10" title="7" alt="7"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">2</td><td class="ctr2" id="i1">2</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a4"><a href="AcademicUser.java.html#L11" class="el_method">setCourses(List)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="43" height="10" title="4" alt="4"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a5"><a href="AcademicUser.java.html#L11" class="el_method">setSchedule(Schedule)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="43" height="10" title="4" alt="4"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a2"><a href="AcademicUser.java.html#L21" class="el_method">getCourses()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="32" height="10" title="3" alt="3"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a3"><a href="AcademicUser.java.html#L22" class="el_method">getSchedule()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="32" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/AcademicUser.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/AcademicUser.java.html
new file mode 100644
index 0000000..5920dc7
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/AcademicUser.java.html
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AcademicUser.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.user.db.model</a> &gt; <span class="el_source">AcademicUser.java</span></div><h1>AcademicUser.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.user.db.model;
+
+import com.adpro.tasc.appointment.db.model.Course;
+import com.adpro.tasc.appointment.db.model.Schedule;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+<span class="nc" id="L11">@Setter</span>
+public class AcademicUser extends User {
+    public AcademicUser(String userName, String fullName, String password, Role role) {
+<span class="nc" id="L14">        super(userName, fullName, password, role);</span>
+<span class="nc" id="L15">    }</span>
+
+    public AcademicUser(User user) {
+<span class="nc" id="L18">        super(user.getUserName(), user.getFullName(), user.getPassword(), user.getRole());</span>
+<span class="nc" id="L19">    }</span>
+
+<span class="nc" id="L21">    private List&lt;Course&gt; courses;</span>
+<span class="nc" id="L22">    private Schedule schedule;</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/Role.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/Role.html
new file mode 100644
index 0000000..fbf78fb
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/Role.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Role</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.user.db.model</a> &gt; <span class="el_class">Role</span></div><h1>Role</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">34 of 34</td><td class="ctr2">0%</td><td class="bar">4 of 4</td><td class="ctr2">0%</td><td class="ctr1">5</td><td class="ctr2">5</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="Role.java.html#L3" class="el_method">static {...}</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="21" alt="21"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">4</td><td class="ctr2" id="i1">4</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="Role.java.html#L9" class="el_method">toString()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="74" height="10" title="13" alt="13"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">4</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h0">5</td><td class="ctr2" id="i0">5</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/Role.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/Role.java.html
new file mode 100644
index 0000000..02dfd28
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/Role.java.html
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Role.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.user.db.model</a> &gt; <span class="el_source">Role.java</span></div><h1>Role.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.user.db.model;
+
+<span class="nc" id="L3">public enum Role {</span>
+<span class="nc" id="L4">        ADMIN,</span>
+<span class="nc" id="L5">        STUDENT,</span>
+<span class="nc" id="L6">        TEACHING_ASSISTANT;</span>
+
+    public String toString() {
+<span class="nc bnc" id="L9" title="All 4 branches missed.">        return switch (this) {</span>
+<span class="nc" id="L10">            case ADMIN -&gt; &quot;Admin&quot;;</span>
+<span class="nc" id="L11">            case STUDENT -&gt; &quot;Student&quot;;</span>
+<span class="nc" id="L12">            case TEACHING_ASSISTANT -&gt; &quot;Teaching Assistant&quot;;</span>
+<span class="nc" id="L13">            default -&gt; &quot;No roles&quot;;</span>
+        };
+    };
+
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/User.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/User.html
new file mode 100644
index 0000000..652e56a
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/User.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>User</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.user.db.model</a> &gt; <span class="el_class">User</span></div><h1>User</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">43 of 43</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">6</td><td class="ctr2">6</td><td class="ctr1">9</td><td class="ctr2">9</td></tr></tfoot><tbody><tr><td id="a8"><a href="User.java.html#L9" class="el_method">User(String, String, String, Role)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="15" alt="15"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a7"><a href="User.java.html#L8" class="el_method">setUserName(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="32" height="10" title="4" alt="4"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a4"><a href="User.java.html#L8" class="el_method">setFullName(String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="32" height="10" title="4" alt="4"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a5"><a href="User.java.html#L8" class="el_method">setPassword(String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="32" height="10" title="4" alt="4"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a6"><a href="User.java.html#L8" class="el_method">setRole(Role)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="32" height="10" title="4" alt="4"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a3"><a href="User.java.html#L11" class="el_method">getUserName()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a0"><a href="User.java.html#L12" class="el_method">getFullName()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="3" alt="3"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a1"><a href="User.java.html#L13" class="el_method">getPassword()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a2"><a href="User.java.html#L14" class="el_method">getRole()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">1</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/User.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/User.java.html
new file mode 100644
index 0000000..2335e3d
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/User.java.html
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>User.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.user.db.model</a> &gt; <span class="el_source">User.java</span></div><h1>User.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.user.db.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+<span class="nc" id="L8">@Setter</span>
+<span class="nc" id="L9">@AllArgsConstructor</span>
+public class User {
+<span class="nc" id="L11">    private String userName;</span>
+<span class="nc" id="L12">    private String fullName;</span>
+<span class="nc" id="L13">    private String password;</span>
+<span class="nc" id="L14">    private Role role;</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/index.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/index.html
new file mode 100644
index 0000000..e0eb3a5
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.user.db.model</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.user.db.model</span></div><h1>com.adpro.tasc.user.db.model</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">109 of 109</td><td class="ctr2">0%</td><td class="bar">4 of 4</td><td class="ctr2">0%</td><td class="ctr1">20</td><td class="ctr2">20</td><td class="ctr1">22</td><td class="ctr2">22</td><td class="ctr1">17</td><td class="ctr2">17</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a href="User.html" class="el_class">User</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="43" alt="43"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f0">9</td><td class="ctr2" id="g0">9</td><td class="ctr1" id="h2">6</td><td class="ctr2" id="i2">6</td><td class="ctr1" id="j0">9</td><td class="ctr2" id="k0">9</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a1"><a href="Role.html" class="el_class">Role</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="94" height="10" title="34" alt="34"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f2">5</td><td class="ctr2" id="g2">5</td><td class="ctr1" id="h0">9</td><td class="ctr2" id="i0">9</td><td class="ctr1" id="j2">2</td><td class="ctr2" id="k2">2</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a0"><a href="AcademicUser.html" class="el_class">AcademicUser</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="89" height="10" title="32" alt="32"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f1">6</td><td class="ctr2" id="g1">6</td><td class="ctr1" id="h1">7</td><td class="ctr2" id="i1">7</td><td class="ctr1" id="j1">6</td><td class="ctr2" id="k1">6</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/index.source.html
new file mode 100644
index 0000000..69a30dc
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.model/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.user.db.model</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.user.db.model</span></div><h1>com.adpro.tasc.user.db.model</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">109 of 109</td><td class="ctr2">0%</td><td class="bar">4 of 4</td><td class="ctr2">0%</td><td class="ctr1">20</td><td class="ctr2">20</td><td class="ctr1">22</td><td class="ctr2">22</td><td class="ctr1">17</td><td class="ctr2">17</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a href="User.java.html" class="el_source">User.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="43" alt="43"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f0">9</td><td class="ctr2" id="g0">9</td><td class="ctr1" id="h2">6</td><td class="ctr2" id="i2">6</td><td class="ctr1" id="j0">9</td><td class="ctr2" id="k0">9</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a1"><a href="Role.java.html" class="el_source">Role.java</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="94" height="10" title="34" alt="34"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f2">5</td><td class="ctr2" id="g2">5</td><td class="ctr1" id="h0">9</td><td class="ctr2" id="i0">9</td><td class="ctr1" id="j2">2</td><td class="ctr2" id="k2">2</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a0"><a href="AcademicUser.java.html" class="el_source">AcademicUser.java</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="89" height="10" title="32" alt="32"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f1">6</td><td class="ctr2" id="g1">6</td><td class="ctr1" id="h1">7</td><td class="ctr2" id="i1">7</td><td class="ctr1" id="j1">6</td><td class="ctr2" id="k1">6</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/UserTemplate.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/UserTemplate.html
new file mode 100644
index 0000000..7b92093
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/UserTemplate.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>UserTemplate</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc.user.db.template</a> &gt; <span class="el_class">UserTemplate</span></div><h1>UserTemplate</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">141 of 141</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">10</td><td class="ctr2">10</td><td class="ctr1">25</td><td class="ctr2">25</td><td class="ctr1">10</td><td class="ctr2">10</td></tr></tfoot><tbody><tr><td id="a0"><a href="UserTemplate.java.html#L58" class="el_method">createUser(User)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="30" alt="30"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">4</td><td class="ctr2" id="i0">4</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a8"><a href="UserTemplate.java.html#L80" class="el_method">updateUser(String, User)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="116" height="10" title="29" alt="29"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">4</td><td class="ctr2" id="i1">4</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a3"><a href="UserTemplate.java.html#L37" class="el_method">getUser(String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="84" height="10" title="21" alt="21"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h4">2</td><td class="ctr2" id="i4">2</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a7"><a href="UserTemplate.java.html#L69" class="el_method">updatePassword(String, String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="72" height="10" title="18" alt="18"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h2">3</td><td class="ctr2" id="i2">3</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a2"><a href="UserTemplate.java.html#L48" class="el_method">getAllUser()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="56" height="10" title="14" alt="14"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h5">2</td><td class="ctr2" id="i5">2</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a1"><a href="UserTemplate.java.html#L93" class="el_method">deleteUser(String)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="56" height="10" title="14" alt="14"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h3">3</td><td class="ctr2" id="i3">3</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a5"><a href="UserTemplate.java.html#L22" class="el_method">setScheduleDB(ScheduleDAO)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="16" height="10" title="4" alt="4"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">2</td><td class="ctr2" id="i6">2</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a4"><a href="UserTemplate.java.html#L27" class="el_method">setCourseDB(CourseDAO)</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="16" height="10" title="4" alt="4"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">2</td><td class="ctr2" id="i7">2</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a6"><a href="UserTemplate.java.html#L32" class="el_method">setTemplate(JdbcTemplate)</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="16" height="10" title="4" alt="4"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">2</td><td class="ctr2" id="i8">2</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a9"><a href="UserTemplate.java.html#L15" class="el_method">UserTemplate()</a></td><td class="bar" id="b9"><img src="../jacoco-resources/redbar.gif" width="12" height="10" title="3" alt="3"/></td><td class="ctr2" id="c9">0%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">1</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">1</td><td class="ctr2" id="i9">1</td><td class="ctr1" id="j9">1</td><td class="ctr2" id="k9">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/UserTemplate.java.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/UserTemplate.java.html
new file mode 100644
index 0000000..65f789c
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/UserTemplate.java.html
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>UserTemplate.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc.user.db.template</a> &gt; <span class="el_source">UserTemplate.java</span></div><h1>UserTemplate.java</h1><pre class="source lang-java linenums">package com.adpro.tasc.user.db.template;
+
+import com.adpro.tasc.appointment.db.dao.CourseDAO;
+import com.adpro.tasc.appointment.db.dao.ScheduleDAO;
+import com.adpro.tasc.user.db.dao.UserDAO;
+import com.adpro.tasc.user.db.mapper.UserMapper;
+import com.adpro.tasc.user.db.model.User;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+<span class="nc" id="L15">public class UserTemplate implements UserDAO {</span>
+    private JdbcTemplate template;
+    private CourseDAO courseDB;
+    private ScheduleDAO scheduleDB;
+
+    @Autowired
+    public void setScheduleDB(ScheduleDAO scheduleDB) {
+<span class="nc" id="L22">        this.scheduleDB = scheduleDB;</span>
+<span class="nc" id="L23">    }</span>
+
+    @Autowired
+    public void setCourseDB(CourseDAO courseDB) {
+<span class="nc" id="L27">        this.courseDB = courseDB;</span>
+<span class="nc" id="L28">    }</span>
+
+    @Autowired
+    public void setTemplate(JdbcTemplate template) {
+<span class="nc" id="L32">        this.template = template;</span>
+<span class="nc" id="L33">    }</span>
+
+    @Override
+    public User getUser(String username) {
+<span class="nc" id="L37">        String sql = &quot;&quot;&quot;</span>
+            select *
+            from &quot;user&quot;
+            where username = ?
+        &quot;&quot;&quot;;
+
+<span class="nc" id="L43">        return template.queryForObject(sql, new UserMapper(courseDB, scheduleDB), username);</span>
+    }
+
+    @Override
+    public List&lt;User&gt; getAllUser() {
+<span class="nc" id="L48">        String sql = &quot;&quot;&quot;</span>
+                select *
+                from &quot;user&quot;
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L53">        return template.query(sql, new UserMapper(courseDB, scheduleDB));</span>
+    }
+
+    @Override
+    public void createUser(User user) {
+<span class="nc" id="L58">        String sql = &quot;&quot;&quot;</span>
+                insert into &quot;user&quot; (username, full_name, password, role)
+                values (?, ?, ?, ?)
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L63">        template.update(sql,</span>
+<span class="nc" id="L64">                user.getUserName(), user.getFullName(), user.getPassword(), user.getRole());</span>
+<span class="nc" id="L65">    }</span>
+
+    @Override
+    public void updatePassword(String username, String password) {
+<span class="nc" id="L69">        String sql = &quot;&quot;&quot;</span>
+                update &quot;user&quot;
+                set password=?
+                where username=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L75">        template.update(sql, password, username);</span>
+<span class="nc" id="L76">    }</span>
+
+    @Override
+    public void updateUser(String username, User user) {
+<span class="nc" id="L80">        String sql = &quot;&quot;&quot;</span>
+                update &quot;user&quot;
+                set username=?, full_name=?, role=?
+                where username=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L86">        template.update(sql,</span>
+<span class="nc" id="L87">                user.getUserName(), user.getFullName(), user.getRole(),</span>
+                username);
+<span class="nc" id="L89">    }</span>
+
+    @Override
+    public void deleteUser(String username) {
+<span class="nc" id="L93">        String sql = &quot;&quot;&quot;</span>
+                delete from &quot;user&quot;
+                where username=?
+                &quot;&quot;&quot;;
+
+<span class="nc" id="L98">        template.update(sql, username);</span>
+<span class="nc" id="L99">    }</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/index.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/index.html
new file mode 100644
index 0000000..ff7a80d
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.user.db.template</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.user.db.template</span></div><h1>com.adpro.tasc.user.db.template</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">141 of 141</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">10</td><td class="ctr2">10</td><td class="ctr1">25</td><td class="ctr2">25</td><td class="ctr1">10</td><td class="ctr2">10</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="UserTemplate.html" class="el_class">UserTemplate</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="141" alt="141"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">10</td><td class="ctr2" id="g0">10</td><td class="ctr1" id="h0">25</td><td class="ctr2" id="i0">25</td><td class="ctr1" id="j0">10</td><td class="ctr2" id="k0">10</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/index.source.html
new file mode 100644
index 0000000..0a1b6ef
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc.user.db.template/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc.user.db.template</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc.user.db.template</span></div><h1>com.adpro.tasc.user.db.template</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">141 of 141</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">10</td><td class="ctr2">10</td><td class="ctr1">25</td><td class="ctr2">25</td><td class="ctr1">10</td><td class="ctr2">10</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="UserTemplate.java.html" class="el_source">UserTemplate.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="141" alt="141"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">10</td><td class="ctr2" id="g0">10</td><td class="ctr1" id="h0">25</td><td class="ctr2" id="i0">25</td><td class="ctr1" id="j0">10</td><td class="ctr2" id="k0">10</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc/TASCApp.html b/build/reports/jacoco/test/html/com.adpro.tasc/TASCApp.html
new file mode 100644
index 0000000..2e73afc
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc/TASCApp.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>TASCApp</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.html" class="el_package">com.adpro.tasc</a> &gt; <span class="el_class">TASCApp</span></div><h1>TASCApp</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">8 of 8</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="TASCApp.java.html#L9" class="el_method">main(String[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="5" alt="5"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">2</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="TASCApp.java.html#L7" class="el_method">TASCApp()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="72" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc/TASCApp.java.html b/build/reports/jacoco/test/html/com.adpro.tasc/TASCApp.java.html
new file mode 100644
index 0000000..ff8323e
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc/TASCApp.java.html
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>TASCApp.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <a href="index.source.html" class="el_package">com.adpro.tasc</a> &gt; <span class="el_source">TASCApp.java</span></div><h1>TASCApp.java</h1><pre class="source lang-java linenums">package com.adpro.tasc;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+<span class="nc" id="L7">public class TASCApp {</span>
+    public static void main(String[] args) {
+<span class="nc" id="L9">        SpringApplication.run(TASCApp.class, args);</span>
+<span class="nc" id="L10">    }</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc/index.html b/build/reports/jacoco/test/html/com.adpro.tasc/index.html
new file mode 100644
index 0000000..c21238e
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc</span></div><h1>com.adpro.tasc</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">8 of 8</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="TASCApp.html" class="el_class">TASCApp</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="8" alt="8"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/com.adpro.tasc/index.source.html b/build/reports/jacoco/test/html/com.adpro.tasc/index.source.html
new file mode 100644
index 0000000..bd18d79
--- /dev/null
+++ b/build/reports/jacoco/test/html/com.adpro.tasc/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>com.adpro.tasc</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">TASC</a> &gt; <span class="el_package">com.adpro.tasc</span></div><h1>com.adpro.tasc</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">8 of 8</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="TASCApp.java.html" class="el_source">TASCApp.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="8" alt="8"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/index.html b/build/reports/jacoco/test/html/index.html
new file mode 100644
index 0000000..ee08158
--- /dev/null
+++ b/build/reports/jacoco/test/html/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>TASC</title><script type="text/javascript" src="jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><span class="el_report">TASC</span></div><h1>TASC</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">1,085 of 1,116</td><td class="ctr2">2%</td><td class="bar">8 of 8</td><td class="ctr2">0%</td><td class="ctr1">116</td><td class="ctr2">125</td><td class="ctr1">219</td><td class="ctr2">226</td><td class="ctr1">111</td><td class="ctr2">120</td><td class="ctr1">21</td><td class="ctr2">23</td></tr></tfoot><tbody><tr><td id="a3"><a href="com.adpro.tasc.appointment.db.template/index.html" class="el_package">com.adpro.tasc.appointment.db.template</a></td><td class="bar" id="b0"><img src="jacoco-resources/redbar.gif" width="120" height="10" title="350" alt="350"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"><img src="jacoco-resources/redbar.gif" width="60" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f1">23</td><td class="ctr2" id="g1">23</td><td class="ctr1" id="h0">61</td><td class="ctr2" id="i0">61</td><td class="ctr1" id="j1">22</td><td class="ctr2" id="k1">22</td><td class="ctr1" id="l2">3</td><td class="ctr2" id="m2">3</td></tr><tr><td id="a2"><a href="com.adpro.tasc.appointment.db.model/index.html" class="el_package">com.adpro.tasc.appointment.db.model</a></td><td class="bar" id="b1"><img src="jacoco-resources/redbar.gif" width="65" height="10" title="190" alt="190"/><img src="jacoco-resources/greenbar.gif" width="10" height="10" title="31" alt="31"/></td><td class="ctr2" id="c0">14%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f0">38</td><td class="ctr2" id="g0">47</td><td class="ctr1" id="h2">35</td><td class="ctr2" id="i1">42</td><td class="ctr1" id="j0">38</td><td class="ctr2" id="k0">47</td><td class="ctr1" id="l0">5</td><td class="ctr2" id="m0">7</td></tr><tr><td id="a1"><a href="com.adpro.tasc.appointment.db.mapper/index.html" class="el_package">com.adpro.tasc.appointment.db.mapper</a></td><td class="bar" id="b2"><img src="jacoco-resources/redbar.gif" width="53" height="10" title="157" alt="157"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f5">8</td><td class="ctr2" id="g5">8</td><td class="ctr1" id="h1">38</td><td class="ctr2" id="i2">38</td><td class="ctr1" id="j5">8</td><td class="ctr2" id="k5">8</td><td class="ctr1" id="l1">4</td><td class="ctr2" id="m1">4</td></tr><tr><td id="a8"><a href="com.adpro.tasc.user.db.template/index.html" class="el_package">com.adpro.tasc.user.db.template</a></td><td class="bar" id="b3"><img src="jacoco-resources/redbar.gif" width="48" height="10" title="141" alt="141"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f3">10</td><td class="ctr2" id="g3">10</td><td class="ctr1" id="h3">25</td><td class="ctr2" id="i3">25</td><td class="ctr1" id="j3">10</td><td class="ctr2" id="k3">10</td><td class="ctr1" id="l5">1</td><td class="ctr2" id="m5">1</td></tr><tr><td id="a7"><a href="com.adpro.tasc.user.db.model/index.html" class="el_package">com.adpro.tasc.user.db.model</a></td><td class="bar" id="b4"><img src="jacoco-resources/redbar.gif" width="37" height="10" title="109" alt="109"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d0"><img src="jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="e1">0%</td><td class="ctr1" id="f2">20</td><td class="ctr2" id="g2">20</td><td class="ctr1" id="h4">22</td><td class="ctr2" id="i4">22</td><td class="ctr1" id="j2">17</td><td class="ctr2" id="k2">17</td><td class="ctr1" id="l3">3</td><td class="ctr2" id="m3">3</td></tr><tr><td id="a6"><a href="com.adpro.tasc.user.db.mapper/index.html" class="el_package">com.adpro.tasc.user.db.mapper</a></td><td class="bar" id="b5"><img src="jacoco-resources/redbar.gif" width="19" height="10" title="56" alt="56"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d2"><img src="jacoco-resources/redbar.gif" width="60" height="10" title="2" alt="2"/></td><td class="ctr2" id="e2">0%</td><td class="ctr1" id="f6">4</td><td class="ctr2" id="g6">4</td><td class="ctr1" id="h5">16</td><td class="ctr2" id="i5">16</td><td class="ctr1" id="j6">3</td><td class="ctr2" id="k6">3</td><td class="ctr1" id="l6">1</td><td class="ctr2" id="m6">1</td></tr><tr><td id="a5"><a href="com.adpro.tasc.controller/index.html" class="el_package">com.adpro.tasc.controller</a></td><td class="bar" id="b6"><img src="jacoco-resources/redbar.gif" width="16" height="10" title="49" alt="49"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f4">9</td><td class="ctr2" id="g4">9</td><td class="ctr1" id="h6">12</td><td class="ctr2" id="i6">12</td><td class="ctr1" id="j4">9</td><td class="ctr2" id="k4">9</td><td class="ctr1" id="l4">2</td><td class="ctr2" id="m4">2</td></tr><tr><td id="a4"><a href="com.adpro.tasc.config/index.html" class="el_package">com.adpro.tasc.config</a></td><td class="bar" id="b7"><img src="jacoco-resources/redbar.gif" width="8" height="10" title="25" alt="25"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">2</td><td class="ctr2" id="g7">2</td><td class="ctr1" id="h7">7</td><td class="ctr2" id="i7">7</td><td class="ctr1" id="j7">2</td><td class="ctr2" id="k7">2</td><td class="ctr1" id="l7">1</td><td class="ctr2" id="m7">1</td></tr><tr><td id="a0"><a href="com.adpro.tasc/index.html" class="el_package">com.adpro.tasc</a></td><td class="bar" id="b8"><img src="jacoco-resources/redbar.gif" width="2" height="10" title="8" alt="8"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">2</td><td class="ctr2" id="g8">2</td><td class="ctr1" id="h8">3</td><td class="ctr2" id="i8">3</td><td class="ctr1" id="j8">2</td><td class="ctr2" id="k8">2</td><td class="ctr1" id="l8">1</td><td class="ctr2" id="m8">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/html/jacoco-resources/branchfc.gif b/build/reports/jacoco/test/html/jacoco-resources/branchfc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..989b46d30469b56b014758f846ee6c5abfda16aa
GIT binary patch
literal 91
zcmZ?wbhEHb<YM4rIK;xhkjB6;lY!w31H*rY|42abCkrDN13QBb0|NsCNG$`iLPZtB
k?*tC^_Bq;72j||q!_wlEz!p~##FM`1REM4990mq!0JaPt?EnA(

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/branchnc.gif b/build/reports/jacoco/test/html/jacoco-resources/branchnc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1933e07c376bb71bdd9aac91cf858da3fcdb0f1c
GIT binary patch
literal 91
zcmZ?wbhEHb<YM4rIK;xxz`$^Zf#E#^!~cec|42abCkrDN13QBb0|NsCNG$`iLPZtB
k?*tC^_Bq;72j||q!_wlEz!p~##FM`1REM4990mq!038}3T>t<8

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/branchpc.gif b/build/reports/jacoco/test/html/jacoco-resources/branchpc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cbf711b7030929b733f22f7a0cf3dbf61fe7868f
GIT binary patch
literal 91
zcmZ?wbhEHb<YM4rIK;v*A(Y{H7sIRF44*zR{6_+cKUo;L7}yzf7#J8BKx!G76)LJ2
lekX9Sx6jdzIym><9hMfS1h%+}AfEJ1r#kE;=P)o>0|1v4BLV;b

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/bundle.gif b/build/reports/jacoco/test/html/jacoco-resources/bundle.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fca9c53e629a7a5c07186ac1e2a1e37d8d6e88f4
GIT binary patch
literal 709
zcmZ?wbhEHb6krfwxXQrrpW*-7BK;<J$sad5=B26sxKQ!q!Hgdl8q(~HUL2e9<Hd#-
z7dn1?IPw4g|HIv8zrOAI@nFG^8xwkB-G027acOnKpKtdcpWnHq-sr)BinT@BA8t%o
znxj(b?=UZ3c5RMIe~{#!dZYLEkL_tSI^1f;Km(xolZ6pvtPY3(`H6w8*rB1oLr1Fr
zgz}>o8CDEUD?$vun5^UNelT%D!ODh<DT^W#oSIlz7qWFr6j-<`INnfgQuR3aJbW7`
zN4%4`K$`$#XID3aq+mZI+oZ{pxEUFwnVA`9&7C{VNtTt7ed)5L3!LN`S=X*xyV99u
t^Omii+jqD*GFUt3=ar=9mFR|47NlA!WacKOr|PF?rg3qN1~)B&8vxTL?+E|^

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/class.gif b/build/reports/jacoco/test/html/jacoco-resources/class.gif
new file mode 100644
index 0000000000000000000000000000000000000000..eb348fb0d498d75976150047b1b5c2fefc9dc220
GIT binary patch
literal 586
zcmZ?wbhEHb6krfwI2Or}v!c<s$=9se-=Q<YsXNN8KQ3fOR@Cf*m^p=Yn<q4Gopkom
z6_qkOy&5;;MsLfufQUJ{vGWR(7nLtMxlXsnMX%OXzt+v5&ds>d(|b~a*Mzw8b?rA^
z-Zg4)H*4{-ZuhtE4C>oE%dW%Ut|P#%J;1Fm+`T^{Xj)SC@~ZxQvku=q`RM)AplJzV
zvr@ulro_(4T77==o*RckrYDBaOo^D85;rI7)~mbEKE4Q=7WeV{r-TKWHJe&0*EP28
z=;_%r`NQ{*kuwuBmgFZcNKcrTHt*QNJFo7hFUrbYR#3jKqG5AG^~S2ob>;0lS{pal
zK79XR;=Z2Emp1IVxpUvG-SdynT5x>!?i<?=-PwQa-r)@wR{tLep!k!8k%6I}L5G2X
zfdLdJ4D8Dr>YJKdTHD$?xCJHor3AS<xcD7CraCfmwQ<S%Mudfjg?RGJZ06?o4vJj8
zI?#)8LKC}F@aj<ifJi?dC!uCm3ztY&=cDd!ZVs%?jN+P+TB0H%q7rgSeEa34BefM&
zRD=x#)J``EDVthG8fqv;+Ux5uG|TW9*_f>{w=?0{*d%14u`t=aU)Cy(!y`eXu~k?%
aW{X8)<HLolY-|D&4Gap4`s<k(8LR=8;y8=|

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/down.gif b/build/reports/jacoco/test/html/jacoco-resources/down.gif
new file mode 100644
index 0000000000000000000000000000000000000000..440a14db74e76c2b6e854eacac1c44414b166271
GIT binary patch
literal 67
zcmZ?wbhEHb<YC}qSjfcSX{EDa!-oH0p!k!8k&A(eL5G2Xk%5PSlYxOrWJ>Z%p}jXB
Ub$^Lu-Ncq(ygK&ScM%3_0Po}%Qvd(}

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/greenbar.gif b/build/reports/jacoco/test/html/jacoco-resources/greenbar.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0ba65672530ee09f086821a26156836d0c91bd74
GIT binary patch
literal 91
zcmZ?wbhEHbWMtrCc+ADXzmZ>do2<@m9j_x^v8Q5duh#b5>RIq$!Lmoo);w9mu$BQ0
hDgI<(<YM4w&|zR;U;vrHz`|kBQzT^M(!jxB4FH5^8k_(C

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/group.gif b/build/reports/jacoco/test/html/jacoco-resources/group.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a4ea580d278fb727e4ae692838877fa63c4becf9
GIT binary patch
literal 351
zcmZ?wbhEHb6krfwxXQpVwXtJrV`pb|Z&Bgo_>{Q`Df1Fi<|d@hO-`Q~pE@@zeqLbA
z;-J_?uAwVj!&Z1jEp456!qR`OWxyKykX0IPoAo?5=zDF{_u63Uw|3IjH<Px#nY8uw
zq;0R~9{n`;*r$0%Kg~P#Y2~$_E3f`odF{u>hkt*)ocHbiwErIu{eQjr&BgBjPnZ0^
z)%pMawEq`N|6i?re6aTBroszrDlV?Ays)P7KNv9J1&Tje7#SE$8FWCZKz?Fit2r>M
zz(Yr>-(zM_o6Nb4fT%YT91LEn!LL}EEA}?dVkpv@eO|r8!NOtZ{emkA9RWArSBNI9
zNZ2UE#>&>r!p_3hV9KxE!=utaVFI_Qu$~^DvXY{*;@sK1P7=C;^73*D@(QvF3PR4J
bVv>?F(o)hgo5fv4_Uzr~d*Gm(BZD;nB0Q24

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/method.gif b/build/reports/jacoco/test/html/jacoco-resources/method.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7d24707ee82f54aa9fb10d1d9050013cbf161a7a
GIT binary patch
literal 193
zcmZ?wbhEHb6krfwIKsfd+~C35=qcM1rZ+Xgc}|Y+;^LHbt%ciq^EY;tZl7R3J;8oP
zyw~j1u;m5ut4fkq6%=kPE8JMxvcIKiZ&S;@mZq)s9XlI4b~JYGXq<6u!t}iztIy9|
zeSXH4OLPDK|Ifg{p!k!8k%2*uL5G2XfdOPE1FPKv^}dwMc^RwL>C9qr-X!KX-O{zn
xB>KE5yGVkQrk5JSln0EBE(-jNr#5VeF%WB2bWO<6;yJ{{=)C1zMi>W!H2_8vOXL6m

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/package.gif b/build/reports/jacoco/test/html/jacoco-resources/package.gif
new file mode 100644
index 0000000000000000000000000000000000000000..131c28da405493661e3253ef79a68bd273039295
GIT binary patch
literal 227
zcmZ?wbhEHb6krfwIKsg2^W*Nf7neOfxp04z;n8NJ+xzDotkS){bH@Hst%K#-*LO_c
zo~yCDQ0v_4?v)A3lSAd#C95utQCbkGxF}NT_=2WF8}WGs5taT9|NsAIzy=h5vM@3*
zNHFMtBtdpEuqG&|^`&Ia(}-MpBVo@mW@+b{B25<}cFdc?!Kkoc14n0vkh1`XOwU>7
z#al8o_@;D=?hdfkdC)D9Q@O@%Lfqp;ZBt~9C*29`GMF2XzQp8akWQVjDvMC75PzEx
Mi%z;upCW@b03m@=3jhEB

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/prettify.css b/build/reports/jacoco/test/html/jacoco-resources/prettify.css
new file mode 100644
index 0000000..be5166e
--- /dev/null
+++ b/build/reports/jacoco/test/html/jacoco-resources/prettify.css
@@ -0,0 +1,13 @@
+/* Pretty printing styles. Used with prettify.js. */
+
+.str { color: #2A00FF; }
+.kwd { color: #7F0055; font-weight:bold; }
+.com { color: #3F5FBF; }
+.typ { color: #606; }
+.lit { color: #066; }
+.pun { color: #660; }
+.pln { color: #000; }
+.tag { color: #008; }
+.atn { color: #606; }
+.atv { color: #080; }
+.dec { color: #606; }
diff --git a/build/reports/jacoco/test/html/jacoco-resources/prettify.js b/build/reports/jacoco/test/html/jacoco-resources/prettify.js
new file mode 100644
index 0000000..b2766fe
--- /dev/null
+++ b/build/reports/jacoco/test/html/jacoco-resources/prettify.js
@@ -0,0 +1,1510 @@
+// Copyright (C) 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * some functions for browser-side pretty printing of code contained in html.
+ * <p>
+ *
+ * For a fairly comprehensive set of languages see the
+ * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
+ * file that came with this source.  At a minimum, the lexer should work on a
+ * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
+ * XML, CSS, Javascript, and Makefiles.  It works passably on Ruby, PHP and Awk
+ * and a subset of Perl, but, because of commenting conventions, doesn't work on
+ * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
+ * <p>
+ * Usage: <ol>
+ * <li> include this source file in an html page via
+ *   {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
+ * <li> define style rules.  See the example page for examples.
+ * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
+ *    {@code class=prettyprint.}
+ *    You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
+ *    printer needs to do more substantial DOM manipulations to support that, so
+ *    some css styles may not be preserved.
+ * </ol>
+ * That's it.  I wanted to keep the API as simple as possible, so there's no
+ * need to specify which language the code is in, but if you wish, you can add
+ * another class to the {@code <pre>} or {@code <code>} element to specify the
+ * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
+ * starts with "lang-" followed by a file extension, specifies the file type.
+ * See the "lang-*.js" files in this directory for code that implements
+ * per-language file handlers.
+ * <p>
+ * Change log:<br>
+ * cbeust, 2006/08/22
+ * <blockquote>
+ *   Java annotations (start with "@") are now captured as literals ("lit")
+ * </blockquote>
+ * @requires console
+ */
+
+// JSLint declarations
+/*global console, document, navigator, setTimeout, window */
+
+/**
+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
+ * UI events.
+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
+ */
+window['PR_SHOULD_USE_CONTINUATION'] = true;
+
+/** the number of characters between tab columns */
+window['PR_TAB_WIDTH'] = 8;
+
+/** Walks the DOM returning a properly escaped version of innerHTML.
+  * @param {Node} node
+  * @param {Array.<string>} out output buffer that receives chunks of HTML.
+  */
+window['PR_normalizedHtml']
+
+/** Contains functions for creating and registering new language handlers.
+  * @type {Object}
+  */
+  = window['PR']
+
+/** Pretty print a chunk of code.
+  *
+  * @param {string} sourceCodeHtml code as html
+  * @return {string} code as html, but prettier
+  */
+  = window['prettyPrintOne']
+/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
+  * {@code class=prettyprint} and prettify them.
+  * @param {Function?} opt_whenDone if specified, called when the last entry
+  *     has been finished.
+  */
+  = window['prettyPrint'] = void 0;
+
+/** browser detection. @extern @returns false if not IE, otherwise the major version. */
+window['_pr_isIE6'] = function () {
+  var ieVersion = navigator && navigator.userAgent &&
+      navigator.userAgent.match(/\bMSIE ([678])\./);
+  ieVersion = ieVersion ? +ieVersion[1] : false;
+  window['_pr_isIE6'] = function () { return ieVersion; };
+  return ieVersion;
+};
+
+
+(function () {
+  // Keyword lists for various languages.
+  var FLOW_CONTROL_KEYWORDS =
+      "break continue do else for if return while ";
+  var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
+      "double enum extern float goto int long register short signed sizeof " +
+      "static struct switch typedef union unsigned void volatile ";
+  var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
+      "new operator private protected public this throw true try typeof ";
+  var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
+      "concept concept_map const_cast constexpr decltype " +
+      "dynamic_cast explicit export friend inline late_check " +
+      "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
+      "template typeid typename using virtual wchar_t where ";
+  var JAVA_KEYWORDS = COMMON_KEYWORDS +
+      "abstract boolean byte extends final finally implements import " +
+      "instanceof null native package strictfp super synchronized throws " +
+      "transient ";
+  var CSHARP_KEYWORDS = JAVA_KEYWORDS +
+      "as base by checked decimal delegate descending event " +
+      "fixed foreach from group implicit in interface internal into is lock " +
+      "object out override orderby params partial readonly ref sbyte sealed " +
+      "stackalloc string select uint ulong unchecked unsafe ushort var ";
+  var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
+      "debugger eval export function get null set undefined var with " +
+      "Infinity NaN ";
+  var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
+      "goto if import last local my next no our print package redo require " +
+      "sub undef unless until use wantarray while BEGIN END ";
+  var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
+      "elif except exec finally from global import in is lambda " +
+      "nonlocal not or pass print raise try with yield " +
+      "False True None ";
+  var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
+      " defined elsif end ensure false in module next nil not or redo rescue " +
+      "retry self super then true undef unless until when yield BEGIN END ";
+  var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
+      "function in local set then until ";
+  var ALL_KEYWORDS = (
+      CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
+      PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
+
+  // token style names.  correspond to css classes
+  /** token style for a string literal */
+  var PR_STRING = 'str';
+  /** token style for a keyword */
+  var PR_KEYWORD = 'kwd';
+  /** token style for a comment */
+  var PR_COMMENT = 'com';
+  /** token style for a type */
+  var PR_TYPE = 'typ';
+  /** token style for a literal value.  e.g. 1, null, true. */
+  var PR_LITERAL = 'lit';
+  /** token style for a punctuation string. */
+  var PR_PUNCTUATION = 'pun';
+  /** token style for a punctuation string. */
+  var PR_PLAIN = 'pln';
+
+  /** token style for an sgml tag. */
+  var PR_TAG = 'tag';
+  /** token style for a markup declaration such as a DOCTYPE. */
+  var PR_DECLARATION = 'dec';
+  /** token style for embedded source. */
+  var PR_SOURCE = 'src';
+  /** token style for an sgml attribute name. */
+  var PR_ATTRIB_NAME = 'atn';
+  /** token style for an sgml attribute value. */
+  var PR_ATTRIB_VALUE = 'atv';
+
+  /**
+   * A class that indicates a section of markup that is not code, e.g. to allow
+   * embedding of line numbers within code listings.
+   */
+  var PR_NOCODE = 'nocode';
+
+  /** A set of tokens that can precede a regular expression literal in
+    * javascript.
+    * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
+    * list, but I've removed ones that might be problematic when seen in
+    * languages that don't support regular expression literals.
+    *
+    * <p>Specifically, I've removed any keywords that can't precede a regexp
+    * literal in a syntactically legal javascript program, and I've removed the
+    * "in" keyword since it's not a keyword in many languages, and might be used
+    * as a count of inches.
+    *
+    * <p>The link a above does not accurately describe EcmaScript rules since
+    * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
+    * very well in practice.
+    *
+    * @private
+    */
+  var REGEXP_PRECEDER_PATTERN = function () {
+      var preceders = [
+          "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
+          "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
+          "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
+          "<", "<<", "<<=", "<=", "=", "==", "===", ">",
+          ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
+          "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
+          "||=", "~" /* handles =~ and !~ */,
+          "break", "case", "continue", "delete",
+          "do", "else", "finally", "instanceof",
+          "return", "throw", "try", "typeof"
+          ];
+      var pattern = '(?:^^|[+-]';
+      for (var i = 0; i < preceders.length; ++i) {
+        pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
+      }
+      pattern += ')\\s*';  // matches at end, and matches empty string
+      return pattern;
+      // CAVEAT: this does not properly handle the case where a regular
+      // expression immediately follows another since a regular expression may
+      // have flags for case-sensitivity and the like.  Having regexp tokens
+      // adjacent is not valid in any language I'm aware of, so I'm punting.
+      // TODO: maybe style special characters inside a regexp as punctuation.
+    }();
+
+  // Define regexps here so that the interpreter doesn't have to create an
+  // object each time the function containing them is called.
+  // The language spec requires a new object created even if you don't access
+  // the $1 members.
+  var pr_amp = /&/g;
+  var pr_lt = /</g;
+  var pr_gt = />/g;
+  var pr_quot = /\"/g;
+  /** like textToHtml but escapes double quotes to be attribute safe. */
+  function attribToHtml(str) {
+    return str.replace(pr_amp, '&amp;')
+        .replace(pr_lt, '&lt;')
+        .replace(pr_gt, '&gt;')
+        .replace(pr_quot, '&quot;');
+  }
+
+  /** escapest html special characters to html. */
+  function textToHtml(str) {
+    return str.replace(pr_amp, '&amp;')
+        .replace(pr_lt, '&lt;')
+        .replace(pr_gt, '&gt;');
+  }
+
+
+  var pr_ltEnt = /&lt;/g;
+  var pr_gtEnt = /&gt;/g;
+  var pr_aposEnt = /&apos;/g;
+  var pr_quotEnt = /&quot;/g;
+  var pr_ampEnt = /&amp;/g;
+  var pr_nbspEnt = /&nbsp;/g;
+  /** unescapes html to plain text. */
+  function htmlToText(html) {
+    var pos = html.indexOf('&');
+    if (pos < 0) { return html; }
+    // Handle numeric entities specially.  We can't use functional substitution
+    // since that doesn't work in older versions of Safari.
+    // These should be rare since most browsers convert them to normal chars.
+    for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
+      var end = html.indexOf(';', pos);
+      if (end >= 0) {
+        var num = html.substring(pos + 3, end);
+        var radix = 10;
+        if (num && num.charAt(0) === 'x') {
+          num = num.substring(1);
+          radix = 16;
+        }
+        var codePoint = parseInt(num, radix);
+        if (!isNaN(codePoint)) {
+          html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
+                  html.substring(end + 1));
+        }
+      }
+    }
+
+    return html.replace(pr_ltEnt, '<')
+        .replace(pr_gtEnt, '>')
+        .replace(pr_aposEnt, "'")
+        .replace(pr_quotEnt, '"')
+        .replace(pr_nbspEnt, ' ')
+        .replace(pr_ampEnt, '&');
+  }
+
+  /** is the given node's innerHTML normally unescaped? */
+  function isRawContent(node) {
+    return 'XMP' === node.tagName;
+  }
+
+  var newlineRe = /[\r\n]/g;
+  /**
+   * Are newlines and adjacent spaces significant in the given node's innerHTML?
+   */
+  function isPreformatted(node, content) {
+    // PRE means preformatted, and is a very common case, so don't create
+    // unnecessary computed style objects.
+    if ('PRE' === node.tagName) { return true; }
+    if (!newlineRe.test(content)) { return true; }  // Don't care
+    var whitespace = '';
+    // For disconnected nodes, IE has no currentStyle.
+    if (node.currentStyle) {
+      whitespace = node.currentStyle.whiteSpace;
+    } else if (window.getComputedStyle) {
+      // Firefox makes a best guess if node is disconnected whereas Safari
+      // returns the empty string.
+      whitespace = window.getComputedStyle(node, null).whiteSpace;
+    }
+    return !whitespace || whitespace === 'pre';
+  }
+
+  function normalizedHtml(node, out, opt_sortAttrs) {
+    switch (node.nodeType) {
+      case 1:  // an element
+        var name = node.tagName.toLowerCase();
+
+        out.push('<', name);
+        var attrs = node.attributes;
+        var n = attrs.length;
+        if (n) {
+          if (opt_sortAttrs) {
+            var sortedAttrs = [];
+            for (var i = n; --i >= 0;) { sortedAttrs[i] = attrs[i]; }
+            sortedAttrs.sort(function (a, b) {
+                return (a.name < b.name) ? -1 : a.name === b.name ? 0 : 1;
+              });
+            attrs = sortedAttrs;
+          }
+          for (var i = 0; i < n; ++i) {
+            var attr = attrs[i];
+            if (!attr.specified) { continue; }
+            out.push(' ', attr.name.toLowerCase(),
+                     '="', attribToHtml(attr.value), '"');
+          }
+        }
+        out.push('>');
+        for (var child = node.firstChild; child; child = child.nextSibling) {
+          normalizedHtml(child, out, opt_sortAttrs);
+        }
+        if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
+          out.push('<\/', name, '>');
+        }
+        break;
+      case 3: case 4: // text
+        out.push(textToHtml(node.nodeValue));
+        break;
+    }
+  }
+
+  /**
+   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
+   * matches the union o the sets o strings matched d by the input RegExp.
+   * Since it matches globally, if the input strings have a start-of-input
+   * anchor (/^.../), it is ignored for the purposes of unioning.
+   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
+   * @return {RegExp} a global regex.
+   */
+  function combinePrefixPatterns(regexs) {
+    var capturedGroupIndex = 0;
+
+    var needToFoldCase = false;
+    var ignoreCase = false;
+    for (var i = 0, n = regexs.length; i < n; ++i) {
+      var regex = regexs[i];
+      if (regex.ignoreCase) {
+        ignoreCase = true;
+      } else if (/[a-z]/i.test(regex.source.replace(
+                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
+        needToFoldCase = true;
+        ignoreCase = false;
+        break;
+      }
+    }
+
+    function decodeEscape(charsetPart) {
+      if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
+      switch (charsetPart.charAt(1)) {
+        case 'b': return 8;
+        case 't': return 9;
+        case 'n': return 0xa;
+        case 'v': return 0xb;
+        case 'f': return 0xc;
+        case 'r': return 0xd;
+        case 'u': case 'x':
+          return parseInt(charsetPart.substring(2), 16)
+              || charsetPart.charCodeAt(1);
+        case '0': case '1': case '2': case '3': case '4':
+        case '5': case '6': case '7':
+          return parseInt(charsetPart.substring(1), 8);
+        default: return charsetPart.charCodeAt(1);
+      }
+    }
+
+    function encodeEscape(charCode) {
+      if (charCode < 0x20) {
+        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
+      }
+      var ch = String.fromCharCode(charCode);
+      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
+        ch = '\\' + ch;
+      }
+      return ch;
+    }
+
+    function caseFoldCharset(charSet) {
+      var charsetParts = charSet.substring(1, charSet.length - 1).match(
+          new RegExp(
+              '\\\\u[0-9A-Fa-f]{4}'
+              + '|\\\\x[0-9A-Fa-f]{2}'
+              + '|\\\\[0-3][0-7]{0,2}'
+              + '|\\\\[0-7]{1,2}'
+              + '|\\\\[\\s\\S]'
+              + '|-'
+              + '|[^-\\\\]',
+              'g'));
+      var groups = [];
+      var ranges = [];
+      var inverse = charsetParts[0] === '^';
+      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
+        var p = charsetParts[i];
+        switch (p) {
+          case '\\B': case '\\b':
+          case '\\D': case '\\d':
+          case '\\S': case '\\s':
+          case '\\W': case '\\w':
+            groups.push(p);
+            continue;
+        }
+        var start = decodeEscape(p);
+        var end;
+        if (i + 2 < n && '-' === charsetParts[i + 1]) {
+          end = decodeEscape(charsetParts[i + 2]);
+          i += 2;
+        } else {
+          end = start;
+        }
+        ranges.push([start, end]);
+        // If the range might intersect letters, then expand it.
+        if (!(end < 65 || start > 122)) {
+          if (!(end < 65 || start > 90)) {
+            ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
+          }
+          if (!(end < 97 || start > 122)) {
+            ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
+          }
+        }
+      }
+
+      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
+      // -> [[1, 12], [14, 14], [16, 17]]
+      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
+      var consolidatedRanges = [];
+      var lastRange = [NaN, NaN];
+      for (var i = 0; i < ranges.length; ++i) {
+        var range = ranges[i];
+        if (range[0] <= lastRange[1] + 1) {
+          lastRange[1] = Math.max(lastRange[1], range[1]);
+        } else {
+          consolidatedRanges.push(lastRange = range);
+        }
+      }
+
+      var out = ['['];
+      if (inverse) { out.push('^'); }
+      out.push.apply(out, groups);
+      for (var i = 0; i < consolidatedRanges.length; ++i) {
+        var range = consolidatedRanges[i];
+        out.push(encodeEscape(range[0]));
+        if (range[1] > range[0]) {
+          if (range[1] + 1 > range[0]) { out.push('-'); }
+          out.push(encodeEscape(range[1]));
+        }
+      }
+      out.push(']');
+      return out.join('');
+    }
+
+    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
+      // Split into character sets, escape sequences, punctuation strings
+      // like ('(', '(?:', ')', '^'), and runs of characters that do not
+      // include any of the above.
+      var parts = regex.source.match(
+          new RegExp(
+              '(?:'
+              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
+              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
+              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
+              + '|\\\\[0-9]+'  // a back-reference or octal escape
+              + '|\\\\[^ux0-9]'  // other escape sequence
+              + '|\\(\\?[:!=]'  // start of a non-capturing group
+              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
+              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
+              + ')',
+              'g'));
+      var n = parts.length;
+
+      // Maps captured group numbers to the number they will occupy in
+      // the output or to -1 if that has not been determined, or to
+      // undefined if they need not be capturing in the output.
+      var capturedGroups = [];
+
+      // Walk over and identify back references to build the capturedGroups
+      // mapping.
+      for (var i = 0, groupIndex = 0; i < n; ++i) {
+        var p = parts[i];
+        if (p === '(') {
+          // groups are 1-indexed, so max group index is count of '('
+          ++groupIndex;
+        } else if ('\\' === p.charAt(0)) {
+          var decimalValue = +p.substring(1);
+          if (decimalValue && decimalValue <= groupIndex) {
+            capturedGroups[decimalValue] = -1;
+          }
+        }
+      }
+
+      // Renumber groups and reduce capturing groups to non-capturing groups
+      // where possible.
+      for (var i = 1; i < capturedGroups.length; ++i) {
+        if (-1 === capturedGroups[i]) {
+          capturedGroups[i] = ++capturedGroupIndex;
+        }
+      }
+      for (var i = 0, groupIndex = 0; i < n; ++i) {
+        var p = parts[i];
+        if (p === '(') {
+          ++groupIndex;
+          if (capturedGroups[groupIndex] === undefined) {
+            parts[i] = '(?:';
+          }
+        } else if ('\\' === p.charAt(0)) {
+          var decimalValue = +p.substring(1);
+          if (decimalValue && decimalValue <= groupIndex) {
+            parts[i] = '\\' + capturedGroups[groupIndex];
+          }
+        }
+      }
+
+      // Remove any prefix anchors so that the output will match anywhere.
+      // ^^ really does mean an anchored match though.
+      for (var i = 0, groupIndex = 0; i < n; ++i) {
+        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
+      }
+
+      // Expand letters to groupts to handle mixing of case-sensitive and
+      // case-insensitive patterns if necessary.
+      if (regex.ignoreCase && needToFoldCase) {
+        for (var i = 0; i < n; ++i) {
+          var p = parts[i];
+          var ch0 = p.charAt(0);
+          if (p.length >= 2 && ch0 === '[') {
+            parts[i] = caseFoldCharset(p);
+          } else if (ch0 !== '\\') {
+            // TODO: handle letters in numeric escapes.
+            parts[i] = p.replace(
+                /[a-zA-Z]/g,
+                function (ch) {
+                  var cc = ch.charCodeAt(0);
+                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
+                });
+          }
+        }
+      }
+
+      return parts.join('');
+    }
+
+    var rewritten = [];
+    for (var i = 0, n = regexs.length; i < n; ++i) {
+      var regex = regexs[i];
+      if (regex.global || regex.multiline) { throw new Error('' + regex); }
+      rewritten.push(
+          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
+    }
+
+    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
+  }
+
+  var PR_innerHtmlWorks = null;
+  function getInnerHtml(node) {
+    // inner html is hopelessly broken in Safari 2.0.4 when the content is
+    // an html description of well formed XML and the containing tag is a PRE
+    // tag, so we detect that case and emulate innerHTML.
+    if (null === PR_innerHtmlWorks) {
+      var testNode = document.createElement('PRE');
+      testNode.appendChild(
+          document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
+      PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
+    }
+
+    if (PR_innerHtmlWorks) {
+      var content = node.innerHTML;
+      // XMP tags contain unescaped entities so require special handling.
+      if (isRawContent(node)) {
+        content = textToHtml(content);
+      } else if (!isPreformatted(node, content)) {
+        content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
+            .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
+      }
+      return content;
+    }
+
+    var out = [];
+    for (var child = node.firstChild; child; child = child.nextSibling) {
+      normalizedHtml(child, out);
+    }
+    return out.join('');
+  }
+
+  /** returns a function that expand tabs to spaces.  This function can be fed
+    * successive chunks of text, and will maintain its own internal state to
+    * keep track of how tabs are expanded.
+    * @return {function (string) : string} a function that takes
+    *   plain text and return the text with tabs expanded.
+    * @private
+    */
+  function makeTabExpander(tabWidth) {
+    var SPACES = '                ';
+    var charInLine = 0;
+
+    return function (plainText) {
+      // walk over each character looking for tabs and newlines.
+      // On tabs, expand them.  On newlines, reset charInLine.
+      // Otherwise increment charInLine
+      var out = null;
+      var pos = 0;
+      for (var i = 0, n = plainText.length; i < n; ++i) {
+        var ch = plainText.charAt(i);
+
+        switch (ch) {
+          case '\t':
+            if (!out) { out = []; }
+            out.push(plainText.substring(pos, i));
+            // calculate how much space we need in front of this part
+            // nSpaces is the amount of padding -- the number of spaces needed
+            // to move us to the next column, where columns occur at factors of
+            // tabWidth.
+            var nSpaces = tabWidth - (charInLine % tabWidth);
+            charInLine += nSpaces;
+            for (; nSpaces >= 0; nSpaces -= SPACES.length) {
+              out.push(SPACES.substring(0, nSpaces));
+            }
+            pos = i + 1;
+            break;
+          case '\n':
+            charInLine = 0;
+            break;
+          default:
+            ++charInLine;
+        }
+      }
+      if (!out) { return plainText; }
+      out.push(plainText.substring(pos));
+      return out.join('');
+    };
+  }
+
+  var pr_chunkPattern = new RegExp(
+      '[^<]+'  // A run of characters other than '<'
+      + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
+      + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
+      // a probable tag that should not be highlighted
+      + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
+      + '|<',  // A '<' that does not begin a larger chunk
+      'g');
+  var pr_commentPrefix = /^<\!--/;
+  var pr_cdataPrefix = /^<!\[CDATA\[/;
+  var pr_brPrefix = /^<br\b/i;
+  var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
+
+  /** split markup into chunks of html tags (style null) and
+    * plain text (style {@link #PR_PLAIN}), converting tags which are
+    * significant for tokenization (<br>) into their textual equivalent.
+    *
+    * @param {string} s html where whitespace is considered significant.
+    * @return {Object} source code and extracted tags.
+    * @private
+    */
+  function extractTags(s) {
+    // since the pattern has the 'g' modifier and defines no capturing groups,
+    // this will return a list of all chunks which we then classify and wrap as
+    // PR_Tokens
+    var matches = s.match(pr_chunkPattern);
+    var sourceBuf = [];
+    var sourceBufLen = 0;
+    var extractedTags = [];
+    if (matches) {
+      for (var i = 0, n = matches.length; i < n; ++i) {
+        var match = matches[i];
+        if (match.length > 1 && match.charAt(0) === '<') {
+          if (pr_commentPrefix.test(match)) { continue; }
+          if (pr_cdataPrefix.test(match)) {
+            // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
+            sourceBuf.push(match.substring(9, match.length - 3));
+            sourceBufLen += match.length - 12;
+          } else if (pr_brPrefix.test(match)) {
+            // <br> tags are lexically significant so convert them to text.
+            // This is undone later.
+            sourceBuf.push('\n');
+            ++sourceBufLen;
+          } else {
+            if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
+              // A <span class="nocode"> will start a section that should be
+              // ignored.  Continue walking the list until we see a matching end
+              // tag.
+              var name = match.match(pr_tagNameRe)[2];
+              var depth = 1;
+              var j;
+              end_tag_loop:
+              for (j = i + 1; j < n; ++j) {
+                var name2 = matches[j].match(pr_tagNameRe);
+                if (name2 && name2[2] === name) {
+                  if (name2[1] === '/') {
+                    if (--depth === 0) { break end_tag_loop; }
+                  } else {
+                    ++depth;
+                  }
+                }
+              }
+              if (j < n) {
+                extractedTags.push(
+                    sourceBufLen, matches.slice(i, j + 1).join(''));
+                i = j;
+              } else {  // Ignore unclosed sections.
+                extractedTags.push(sourceBufLen, match);
+              }
+            } else {
+              extractedTags.push(sourceBufLen, match);
+            }
+          }
+        } else {
+          var literalText = htmlToText(match);
+          sourceBuf.push(literalText);
+          sourceBufLen += literalText.length;
+        }
+      }
+    }
+    return { source: sourceBuf.join(''), tags: extractedTags };
+  }
+
+  /** True if the given tag contains a class attribute with the nocode class. */
+  function isNoCodeTag(tag) {
+    return !!tag
+        // First canonicalize the representation of attributes
+        .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
+                 ' $1="$2$3$4"')
+        // Then look for the attribute we want.
+        .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
+  }
+
+  /**
+   * Apply the given language handler to sourceCode and add the resulting
+   * decorations to out.
+   * @param {number} basePos the index of sourceCode within the chunk of source
+   *    whose decorations are already present on out.
+   */
+  function appendDecorations(basePos, sourceCode, langHandler, out) {
+    if (!sourceCode) { return; }
+    var job = {
+      source: sourceCode,
+      basePos: basePos
+    };
+    langHandler(job);
+    out.push.apply(out, job.decorations);
+  }
+
+  /** Given triples of [style, pattern, context] returns a lexing function,
+    * The lexing function interprets the patterns to find token boundaries and
+    * returns a decoration list of the form
+    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
+    * where index_n is an index into the sourceCode, and style_n is a style
+    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
+    * all characters in sourceCode[index_n-1:index_n].
+    *
+    * The stylePatterns is a list whose elements have the form
+    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
+    *
+    * Style is a style constant like PR_PLAIN, or can be a string of the
+    * form 'lang-FOO', where FOO is a language extension describing the
+    * language of the portion of the token in $1 after pattern executes.
+    * E.g., if style is 'lang-lisp', and group 1 contains the text
+    * '(hello (world))', then that portion of the token will be passed to the
+    * registered lisp handler for formatting.
+    * The text before and after group 1 will be restyled using this decorator
+    * so decorators should take care that this doesn't result in infinite
+    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
+    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
+    * '<script>foo()<\/script>', which would cause the current decorator to
+    * be called with '<script>' which would not match the same rule since
+    * group 1 must not be empty, so it would be instead styled as PR_TAG by
+    * the generic tag rule.  The handler registered for the 'js' extension would
+    * then be called with 'foo()', and finally, the current decorator would
+    * be called with '<\/script>' which would not match the original rule and
+    * so the generic tag rule would identify it as a tag.
+    *
+    * Pattern must only match prefixes, and if it matches a prefix, then that
+    * match is considered a token with the same style.
+    *
+    * Context is applied to the last non-whitespace, non-comment token
+    * recognized.
+    *
+    * Shortcut is an optional string of characters, any of which, if the first
+    * character, gurantee that this pattern and only this pattern matches.
+    *
+    * @param {Array} shortcutStylePatterns patterns that always start with
+    *   a known character.  Must have a shortcut string.
+    * @param {Array} fallthroughStylePatterns patterns that will be tried in
+    *   order if the shortcut ones fail.  May have shortcuts.
+    *
+    * @return {function (Object)} a
+    *   function that takes source code and returns a list of decorations.
+    */
+  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
+    var shortcuts = {};
+    var tokenizer;
+    (function () {
+      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
+      var allRegexs = [];
+      var regexKeys = {};
+      for (var i = 0, n = allPatterns.length; i < n; ++i) {
+        var patternParts = allPatterns[i];
+        var shortcutChars = patternParts[3];
+        if (shortcutChars) {
+          for (var c = shortcutChars.length; --c >= 0;) {
+            shortcuts[shortcutChars.charAt(c)] = patternParts;
+          }
+        }
+        var regex = patternParts[1];
+        var k = '' + regex;
+        if (!regexKeys.hasOwnProperty(k)) {
+          allRegexs.push(regex);
+          regexKeys[k] = null;
+        }
+      }
+      allRegexs.push(/[\0-\uffff]/);
+      tokenizer = combinePrefixPatterns(allRegexs);
+    })();
+
+    var nPatterns = fallthroughStylePatterns.length;
+    var notWs = /\S/;
+
+    /**
+     * Lexes job.source and produces an output array job.decorations of style
+     * classes preceded by the position at which they start in job.source in
+     * order.
+     *
+     * @param {Object} job an object like {@code
+     *    source: {string} sourceText plain text,
+     *    basePos: {int} position of job.source in the larger chunk of
+     *        sourceCode.
+     * }
+     */
+    var decorate = function (job) {
+      var sourceCode = job.source, basePos = job.basePos;
+      /** Even entries are positions in source in ascending order.  Odd enties
+        * are style markers (e.g., PR_COMMENT) that run from that position until
+        * the end.
+        * @type {Array.<number|string>}
+        */
+      var decorations = [basePos, PR_PLAIN];
+      var pos = 0;  // index into sourceCode
+      var tokens = sourceCode.match(tokenizer) || [];
+      var styleCache = {};
+
+      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
+        var token = tokens[ti];
+        var style = styleCache[token];
+        var match = void 0;
+
+        var isEmbedded;
+        if (typeof style === 'string') {
+          isEmbedded = false;
+        } else {
+          var patternParts = shortcuts[token.charAt(0)];
+          if (patternParts) {
+            match = token.match(patternParts[1]);
+            style = patternParts[0];
+          } else {
+            for (var i = 0; i < nPatterns; ++i) {
+              patternParts = fallthroughStylePatterns[i];
+              match = token.match(patternParts[1]);
+              if (match) {
+                style = patternParts[0];
+                break;
+              }
+            }
+
+            if (!match) {  // make sure that we make progress
+              style = PR_PLAIN;
+            }
+          }
+
+          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
+          if (isEmbedded && !(match && typeof match[1] === 'string')) {
+            isEmbedded = false;
+            style = PR_SOURCE;
+          }
+
+          if (!isEmbedded) { styleCache[token] = style; }
+        }
+
+        var tokenStart = pos;
+        pos += token.length;
+
+        if (!isEmbedded) {
+          decorations.push(basePos + tokenStart, style);
+        } else {  // Treat group 1 as an embedded block of source code.
+          var embeddedSource = match[1];
+          var embeddedSourceStart = token.indexOf(embeddedSource);
+          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
+          if (match[2]) {
+            // If embeddedSource can be blank, then it would match at the
+            // beginning which would cause us to infinitely recurse on the
+            // entire token, so we catch the right context in match[2].
+            embeddedSourceEnd = token.length - match[2].length;
+            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
+          }
+          var lang = style.substring(5);
+          // Decorate the left of the embedded source
+          appendDecorations(
+              basePos + tokenStart,
+              token.substring(0, embeddedSourceStart),
+              decorate, decorations);
+          // Decorate the embedded source
+          appendDecorations(
+              basePos + tokenStart + embeddedSourceStart,
+              embeddedSource,
+              langHandlerForExtension(lang, embeddedSource),
+              decorations);
+          // Decorate the right of the embedded section
+          appendDecorations(
+              basePos + tokenStart + embeddedSourceEnd,
+              token.substring(embeddedSourceEnd),
+              decorate, decorations);
+        }
+      }
+      job.decorations = decorations;
+    };
+    return decorate;
+  }
+
+  /** returns a function that produces a list of decorations from source text.
+    *
+    * This code treats ", ', and ` as string delimiters, and \ as a string
+    * escape.  It does not recognize perl's qq() style strings.
+    * It has no special handling for double delimiter escapes as in basic, or
+    * the tripled delimiters used in python, but should work on those regardless
+    * although in those cases a single string literal may be broken up into
+    * multiple adjacent string literals.
+    *
+    * It recognizes C, C++, and shell style comments.
+    *
+    * @param {Object} options a set of optional parameters.
+    * @return {function (Object)} a function that examines the source code
+    *     in the input job and builds the decoration list.
+    */
+  function sourceDecorator(options) {
+    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
+    if (options['tripleQuotedStrings']) {
+      // '''multi-line-string''', 'single-line-string', and double-quoted
+      shortcutStylePatterns.push(
+          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+           null, '\'"']);
+    } else if (options['multiLineStrings']) {
+      // 'multi-line-string', "multi-line-string"
+      shortcutStylePatterns.push(
+          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
+           null, '\'"`']);
+    } else {
+      // 'single-line-string', "single-line-string"
+      shortcutStylePatterns.push(
+          [PR_STRING,
+           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
+           null, '"\'']);
+    }
+    if (options['verbatimStrings']) {
+      // verbatim-string-literal production from the C# grammar.  See issue 93.
+      fallthroughStylePatterns.push(
+          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
+    }
+    if (options['hashComments']) {
+      if (options['cStyleComments']) {
+        // Stop C preprocessor declarations at an unclosed open comment
+        shortcutStylePatterns.push(
+            [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
+             null, '#']);
+        fallthroughStylePatterns.push(
+            [PR_STRING,
+             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
+             null]);
+      } else {
+        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
+      }
+    }
+    if (options['cStyleComments']) {
+      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
+      fallthroughStylePatterns.push(
+          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
+    }
+    if (options['regexLiterals']) {
+      var REGEX_LITERAL = (
+          // A regular expression literal starts with a slash that is
+          // not followed by * or / so that it is not confused with
+          // comments.
+          '/(?=[^/*])'
+          // and then contains any number of raw characters,
+          + '(?:[^/\\x5B\\x5C]'
+          // escape sequences (\x5C),
+          +    '|\\x5C[\\s\\S]'
+          // or non-nesting character sets (\x5B\x5D);
+          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
+          // finally closed by a /.
+          + '/');
+      fallthroughStylePatterns.push(
+          ['lang-regex',
+           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
+           ]);
+    }
+
+    var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
+    if (keywords.length) {
+      fallthroughStylePatterns.push(
+          [PR_KEYWORD,
+           new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
+    }
+
+    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
+    fallthroughStylePatterns.push(
+        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
+        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
+        [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
+        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
+        [PR_LITERAL,
+         new RegExp(
+             '^(?:'
+             // A hex number
+             + '0x[a-f0-9]+'
+             // or an octal or decimal number,
+             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
+             // possibly in scientific notation
+             + '(?:e[+\\-]?\\d+)?'
+             + ')'
+             // with an optional modifier like UL for unsigned long
+             + '[a-z]*', 'i'),
+         null, '0123456789'],
+        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
+
+    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
+  }
+
+  var decorateSource = sourceDecorator({
+        'keywords': ALL_KEYWORDS,
+        'hashComments': true,
+        'cStyleComments': true,
+        'multiLineStrings': true,
+        'regexLiterals': true
+      });
+
+  /** Breaks {@code job.source} around style boundaries in
+    * {@code job.decorations} while re-interleaving {@code job.extractedTags},
+    * and leaves the result in {@code job.prettyPrintedHtml}.
+    * @param {Object} job like {
+    *    source: {string} source as plain text,
+    *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
+    *                   html preceded by their position in {@code job.source}
+    *                   in order
+    *    decorations: {Array.<number|string} an array of style classes preceded
+    *                 by the position at which they start in job.source in order
+    * }
+    * @private
+    */
+  function recombineTagsAndDecorations(job) {
+    var sourceText = job.source;
+    var extractedTags = job.extractedTags;
+    var decorations = job.decorations;
+
+    var html = [];
+    // index past the last char in sourceText written to html
+    var outputIdx = 0;
+
+    var openDecoration = null;
+    var currentDecoration = null;
+    var tagPos = 0;  // index into extractedTags
+    var decPos = 0;  // index into decorations
+    var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
+
+    var adjacentSpaceRe = /([\r\n ]) /g;
+    var startOrSpaceRe = /(^| ) /gm;
+    var newlineRe = /\r\n?|\n/g;
+    var trailingSpaceRe = /[ \r\n]$/;
+    var lastWasSpace = true;  // the last text chunk emitted ended with a space.
+
+    // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
+    var isIE678 = window['_pr_isIE6']();
+    var lineBreakHtml = (
+        isIE678
+        ? (job.sourceNode.tagName === 'PRE'
+           // Use line feeds instead of <br>s so that copying and pasting works
+           // on IE.
+           // Doing this on other browsers breaks lots of stuff since \r\n is
+           // treated as two newlines on Firefox.
+           ? (isIE678 === 6 ? '&#160;\r\n' :
+              isIE678 === 7 ? '&#160;<br>\r' : '&#160;\r')
+           // IE collapses multiple adjacent <br>s into 1 line break.
+           // Prefix every newline with '&#160;' to prevent such behavior.
+           // &nbsp; is the same as &#160; but works in XML as well as HTML.
+           : '&#160;<br />')
+        : '<br />');
+
+    // Look for a class like linenums or linenums:<n> where <n> is the 1-indexed
+    // number of the first line.
+    var numberLines = job.sourceNode.className.match(/\blinenums\b(?::(\d+))?/);
+    var lineBreaker;
+    if (numberLines) {
+      var lineBreaks = [];
+      for (var i = 0; i < 10; ++i) {
+        lineBreaks[i] = lineBreakHtml + '</li><li class="L' + i + '">';
+      }
+      var lineNum = numberLines[1] && numberLines[1].length
+          ? numberLines[1] - 1 : 0;  // Lines are 1-indexed
+      html.push('<ol class="linenums"><li class="L', (lineNum) % 10, '"');
+      if (lineNum) {
+        html.push(' value="', lineNum + 1, '"');
+      }
+      html.push('>');
+      lineBreaker = function () {
+        var lb = lineBreaks[++lineNum % 10];
+        // If a decoration is open, we need to close it before closing a list-item
+        // and reopen it on the other side of the list item.
+        return openDecoration
+            ? ('</span>' + lb + '<span class="' + openDecoration + '">') : lb;
+      };
+    } else {
+      lineBreaker = lineBreakHtml;
+    }
+
+    // A helper function that is responsible for opening sections of decoration
+    // and outputing properly escaped chunks of source
+    function emitTextUpTo(sourceIdx) {
+      if (sourceIdx > outputIdx) {
+        if (openDecoration && openDecoration !== currentDecoration) {
+          // Close the current decoration
+          html.push('</span>');
+          openDecoration = null;
+        }
+        if (!openDecoration && currentDecoration) {
+          openDecoration = currentDecoration;
+          html.push('<span class="', openDecoration, '">');
+        }
+        // This interacts badly with some wikis which introduces paragraph tags
+        // into pre blocks for some strange reason.
+        // It's necessary for IE though which seems to lose the preformattedness
+        // of <pre> tags when their innerHTML is assigned.
+        // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
+        // and it serves to undo the conversion of <br>s to newlines done in
+        // chunkify.
+        var htmlChunk = textToHtml(
+            tabExpander(sourceText.substring(outputIdx, sourceIdx)))
+            .replace(lastWasSpace
+                     ? startOrSpaceRe
+                     : adjacentSpaceRe, '$1&#160;');
+        // Keep track of whether we need to escape space at the beginning of the
+        // next chunk.
+        lastWasSpace = trailingSpaceRe.test(htmlChunk);
+        html.push(htmlChunk.replace(newlineRe, lineBreaker));
+        outputIdx = sourceIdx;
+      }
+    }
+
+    while (true) {
+      // Determine if we're going to consume a tag this time around.  Otherwise
+      // we consume a decoration or exit.
+      var outputTag;
+      if (tagPos < extractedTags.length) {
+        if (decPos < decorations.length) {
+          // Pick one giving preference to extractedTags since we shouldn't open
+          // a new style that we're going to have to immediately close in order
+          // to output a tag.
+          outputTag = extractedTags[tagPos] <= decorations[decPos];
+        } else {
+          outputTag = true;
+        }
+      } else {
+        outputTag = false;
+      }
+      // Consume either a decoration or a tag or exit.
+      if (outputTag) {
+        emitTextUpTo(extractedTags[tagPos]);
+        if (openDecoration) {
+          // Close the current decoration
+          html.push('</span>');
+          openDecoration = null;
+        }
+        html.push(extractedTags[tagPos + 1]);
+        tagPos += 2;
+      } else if (decPos < decorations.length) {
+        emitTextUpTo(decorations[decPos]);
+        currentDecoration = decorations[decPos + 1];
+        decPos += 2;
+      } else {
+        break;
+      }
+    }
+    emitTextUpTo(sourceText.length);
+    if (openDecoration) {
+      html.push('</span>');
+    }
+    if (numberLines) { html.push('</li></ol>'); }
+    job.prettyPrintedHtml = html.join('');
+  }
+
+  /** Maps language-specific file extensions to handlers. */
+  var langHandlerRegistry = {};
+  /** Register a language handler for the given file extensions.
+    * @param {function (Object)} handler a function from source code to a list
+    *      of decorations.  Takes a single argument job which describes the
+    *      state of the computation.   The single parameter has the form
+    *      {@code {
+    *        source: {string} as plain text.
+    *        decorations: {Array.<number|string>} an array of style classes
+    *                     preceded by the position at which they start in
+    *                     job.source in order.
+    *                     The language handler should assigned this field.
+    *        basePos: {int} the position of source in the larger source chunk.
+    *                 All positions in the output decorations array are relative
+    *                 to the larger source chunk.
+    *      } }
+    * @param {Array.<string>} fileExtensions
+    */
+  function registerLangHandler(handler, fileExtensions) {
+    for (var i = fileExtensions.length; --i >= 0;) {
+      var ext = fileExtensions[i];
+      if (!langHandlerRegistry.hasOwnProperty(ext)) {
+        langHandlerRegistry[ext] = handler;
+      } else if ('console' in window) {
+        console['warn']('cannot override language handler %s', ext);
+      }
+    }
+  }
+  function langHandlerForExtension(extension, source) {
+    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
+      // Treat it as markup if the first non whitespace character is a < and
+      // the last non-whitespace character is a >.
+      extension = /^\s*</.test(source)
+          ? 'default-markup'
+          : 'default-code';
+    }
+    return langHandlerRegistry[extension];
+  }
+  registerLangHandler(decorateSource, ['default-code']);
+  registerLangHandler(
+      createSimpleLexer(
+          [],
+          [
+           [PR_PLAIN,       /^[^<?]+/],
+           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
+           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
+           // Unescaped content in an unknown language
+           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
+           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
+           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
+           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
+           // Unescaped content in javascript.  (Or possibly vbscript).
+           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
+           // Contains unescaped stylesheet content
+           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
+           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
+          ]),
+      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
+  registerLangHandler(
+      createSimpleLexer(
+          [
+           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
+           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
+           ],
+          [
+           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
+           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
+           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
+           [PR_PUNCTUATION,  /^[=<>\/]+/],
+           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
+           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
+           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
+           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
+           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
+           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
+           ]),
+      ['in.tag']);
+  registerLangHandler(
+      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
+  registerLangHandler(sourceDecorator({
+          'keywords': CPP_KEYWORDS,
+          'hashComments': true,
+          'cStyleComments': true
+        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
+  registerLangHandler(sourceDecorator({
+          'keywords': 'null true false'
+        }), ['json']);
+  registerLangHandler(sourceDecorator({
+          'keywords': CSHARP_KEYWORDS,
+          'hashComments': true,
+          'cStyleComments': true,
+          'verbatimStrings': true
+        }), ['cs']);
+  registerLangHandler(sourceDecorator({
+          'keywords': JAVA_KEYWORDS,
+          'cStyleComments': true
+        }), ['java']);
+  registerLangHandler(sourceDecorator({
+          'keywords': SH_KEYWORDS,
+          'hashComments': true,
+          'multiLineStrings': true
+        }), ['bsh', 'csh', 'sh']);
+  registerLangHandler(sourceDecorator({
+          'keywords': PYTHON_KEYWORDS,
+          'hashComments': true,
+          'multiLineStrings': true,
+          'tripleQuotedStrings': true
+        }), ['cv', 'py']);
+  registerLangHandler(sourceDecorator({
+          'keywords': PERL_KEYWORDS,
+          'hashComments': true,
+          'multiLineStrings': true,
+          'regexLiterals': true
+        }), ['perl', 'pl', 'pm']);
+  registerLangHandler(sourceDecorator({
+          'keywords': RUBY_KEYWORDS,
+          'hashComments': true,
+          'multiLineStrings': true,
+          'regexLiterals': true
+        }), ['rb']);
+  registerLangHandler(sourceDecorator({
+          'keywords': JSCRIPT_KEYWORDS,
+          'cStyleComments': true,
+          'regexLiterals': true
+        }), ['js']);
+  registerLangHandler(
+      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
+
+  function applyDecorator(job) {
+    var sourceCodeHtml = job.sourceCodeHtml;
+    var opt_langExtension = job.langExtension;
+
+    // Prepopulate output in case processing fails with an exception.
+    job.prettyPrintedHtml = sourceCodeHtml;
+
+    try {
+      // Extract tags, and convert the source code to plain text.
+      var sourceAndExtractedTags = extractTags(sourceCodeHtml);
+      /** Plain text. @type {string} */
+      var source = sourceAndExtractedTags.source;
+      job.source = source;
+      job.basePos = 0;
+
+      /** Even entries are positions in source in ascending order.  Odd entries
+        * are tags that were extracted at that position.
+        * @type {Array.<number|string>}
+        */
+      job.extractedTags = sourceAndExtractedTags.tags;
+
+      // Apply the appropriate language handler
+      langHandlerForExtension(opt_langExtension, source)(job);
+      // Integrate the decorations and tags back into the source code to produce
+      // a decorated html string which is left in job.prettyPrintedHtml.
+      recombineTagsAndDecorations(job);
+    } catch (e) {
+      if ('console' in window) {
+        console['log'](e && e['stack'] ? e['stack'] : e);
+      }
+    }
+  }
+
+  function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
+    var job = {
+      sourceCodeHtml: sourceCodeHtml,
+      langExtension: opt_langExtension
+    };
+    applyDecorator(job);
+    return job.prettyPrintedHtml;
+  }
+
+  function prettyPrint(opt_whenDone) {
+    function byTagName(tn) { return document.getElementsByTagName(tn); }
+    // fetch a list of nodes to rewrite
+    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
+    var elements = [];
+    for (var i = 0; i < codeSegments.length; ++i) {
+      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
+        elements.push(codeSegments[i][j]);
+      }
+    }
+    codeSegments = null;
+
+    var clock = Date;
+    if (!clock['now']) {
+      clock = { 'now': function () { return (new Date).getTime(); } };
+    }
+
+    // The loop is broken into a series of continuations to make sure that we
+    // don't make the browser unresponsive when rewriting a large page.
+    var k = 0;
+    var prettyPrintingJob;
+
+    function doWork() {
+      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
+                     clock.now() + 250 /* ms */ :
+                     Infinity);
+      for (; k < elements.length && clock.now() < endTime; k++) {
+        var cs = elements[k];
+        // [JACOCO] 'prettyprint' -> 'source'
+        if (cs.className && cs.className.indexOf('source') >= 0) {
+          // If the classes includes a language extensions, use it.
+          // Language extensions can be specified like
+          //     <pre class="prettyprint lang-cpp">
+          // the language extension "cpp" is used to find a language handler as
+          // passed to PR_registerLangHandler.
+          var langExtension = cs.className.match(/\blang-(\w+)\b/);
+          if (langExtension) { langExtension = langExtension[1]; }
+
+          // make sure this is not nested in an already prettified element
+          var nested = false;
+          for (var p = cs.parentNode; p; p = p.parentNode) {
+            if ((p.tagName === 'pre' || p.tagName === 'code' ||
+                 p.tagName === 'xmp') &&
+                // [JACOCO] 'prettyprint' -> 'source'
+                p.className && p.className.indexOf('source') >= 0) {
+              nested = true;
+              break;
+            }
+          }
+          if (!nested) {
+            // fetch the content as a snippet of properly escaped HTML.
+            // Firefox adds newlines at the end.
+            var content = getInnerHtml(cs);
+            content = content.replace(/(?:\r\n?|\n)$/, '');
+
+            // do the pretty printing
+            prettyPrintingJob = {
+              sourceCodeHtml: content,
+              langExtension: langExtension,
+              sourceNode: cs
+            };
+            applyDecorator(prettyPrintingJob);
+            replaceWithPrettyPrintedHtml();
+          }
+        }
+      }
+      if (k < elements.length) {
+        // finish up in a continuation
+        setTimeout(doWork, 250);
+      } else if (opt_whenDone) {
+        opt_whenDone();
+      }
+    }
+
+    function replaceWithPrettyPrintedHtml() {
+      var newContent = prettyPrintingJob.prettyPrintedHtml;
+      if (!newContent) { return; }
+      var cs = prettyPrintingJob.sourceNode;
+
+      // push the prettified html back into the tag.
+      if (!isRawContent(cs)) {
+        // just replace the old html with the new
+        cs.innerHTML = newContent;
+      } else {
+        // we need to change the tag to a <pre> since <xmp>s do not allow
+        // embedded tags such as the span tags used to attach styles to
+        // sections of source code.
+        var pre = document.createElement('PRE');
+        for (var i = 0; i < cs.attributes.length; ++i) {
+          var a = cs.attributes[i];
+          if (a.specified) {
+            var aname = a.name.toLowerCase();
+            if (aname === 'class') {
+              pre.className = a.value;  // For IE 6
+            } else {
+              pre.setAttribute(a.name, a.value);
+            }
+          }
+        }
+        pre.innerHTML = newContent;
+
+        // remove the old
+        cs.parentNode.replaceChild(pre, cs);
+        cs = pre;
+      }
+    }
+
+    doWork();
+  }
+
+  window['PR_normalizedHtml'] = normalizedHtml;
+  window['prettyPrintOne'] = prettyPrintOne;
+  window['prettyPrint'] = prettyPrint;
+  window['PR'] = {
+        'combinePrefixPatterns': combinePrefixPatterns,
+        'createSimpleLexer': createSimpleLexer,
+        'registerLangHandler': registerLangHandler,
+        'sourceDecorator': sourceDecorator,
+        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
+        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
+        'PR_COMMENT': PR_COMMENT,
+        'PR_DECLARATION': PR_DECLARATION,
+        'PR_KEYWORD': PR_KEYWORD,
+        'PR_LITERAL': PR_LITERAL,
+        'PR_NOCODE': PR_NOCODE,
+        'PR_PLAIN': PR_PLAIN,
+        'PR_PUNCTUATION': PR_PUNCTUATION,
+        'PR_SOURCE': PR_SOURCE,
+        'PR_STRING': PR_STRING,
+        'PR_TAG': PR_TAG,
+        'PR_TYPE': PR_TYPE
+      };
+})();
diff --git a/build/reports/jacoco/test/html/jacoco-resources/redbar.gif b/build/reports/jacoco/test/html/jacoco-resources/redbar.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c2f71469ba995289439d86ea39b1b33edb03388c
GIT binary patch
literal 91
zcmZ?wbhEHbWMtrCc+AD{pP&D~tn7aso&R25|6^nS*Vg{;>G{84!T)8;{;yfXu$BQ0
hDgI<(<YM4w&|zR;U;vrHz`|kBQzT^M(!jxB4FC(l9E|_~

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/report.css b/build/reports/jacoco/test/html/jacoco-resources/report.css
new file mode 100644
index 0000000..dd936bc
--- /dev/null
+++ b/build/reports/jacoco/test/html/jacoco-resources/report.css
@@ -0,0 +1,243 @@
+body, td {
+  font-family:sans-serif;
+  font-size:10pt;
+}
+
+h1 {
+  font-weight:bold;
+  font-size:18pt;
+}
+
+.breadcrumb {
+  border:#d6d3ce 1px solid;
+  padding:2px 4px 2px 4px;
+}
+
+.breadcrumb .info {
+  float:right;
+}
+
+.breadcrumb .info a {
+  margin-left:8px;
+}
+
+.el_report {
+  padding-left:18px;
+  background-image:url(report.gif);
+  background-position:left center;
+  background-repeat:no-repeat;
+}
+
+.el_group {
+  padding-left:18px;
+  background-image:url(group.gif);
+  background-position:left center;
+  background-repeat:no-repeat;
+}
+
+.el_bundle {
+  padding-left:18px;
+  background-image:url(bundle.gif);
+  background-position:left center;
+  background-repeat:no-repeat;
+}
+
+.el_package {
+  padding-left:18px;
+  background-image:url(package.gif);
+  background-position:left center;
+  background-repeat:no-repeat;
+}
+
+.el_class {
+  padding-left:18px;
+  background-image:url(class.gif);
+  background-position:left center;
+  background-repeat:no-repeat;
+}
+
+.el_source {
+  padding-left:18px;
+  background-image:url(source.gif);
+  background-position:left center;
+  background-repeat:no-repeat;
+}
+
+.el_method {
+  padding-left:18px;
+  background-image:url(method.gif);
+  background-position:left center;
+  background-repeat:no-repeat;
+}
+
+.el_session {
+  padding-left:18px;
+  background-image:url(session.gif);
+  background-position:left center;
+  background-repeat:no-repeat;
+}
+
+pre.source {
+  border:#d6d3ce 1px solid;
+  font-family:monospace;
+}
+
+pre.source ol {
+  margin-bottom: 0px;
+  margin-top: 0px;
+}
+
+pre.source li {
+  border-left: 1px solid #D6D3CE;
+  color: #A0A0A0;
+  padding-left: 0px;
+}
+
+pre.source span.fc {
+  background-color:#ccffcc;
+}
+
+pre.source span.nc {
+  background-color:#ffaaaa;
+}
+
+pre.source span.pc {
+  background-color:#ffffcc;
+}
+
+pre.source span.bfc {
+  background-image: url(branchfc.gif);
+  background-repeat: no-repeat;
+  background-position: 2px center;
+}
+
+pre.source span.bfc:hover {
+  background-color:#80ff80;
+}
+
+pre.source span.bnc {
+  background-image: url(branchnc.gif);
+  background-repeat: no-repeat;
+  background-position: 2px center;
+}
+
+pre.source span.bnc:hover {
+  background-color:#ff8080;
+}
+
+pre.source span.bpc {
+  background-image: url(branchpc.gif);
+  background-repeat: no-repeat;
+  background-position: 2px center;
+}
+
+pre.source span.bpc:hover {
+  background-color:#ffff80;
+}
+
+table.coverage {
+  empty-cells:show;
+  border-collapse:collapse;
+}
+
+table.coverage thead {
+  background-color:#e0e0e0;
+}
+
+table.coverage thead td {
+  white-space:nowrap;
+  padding:2px 14px 0px 6px;
+  border-bottom:#b0b0b0 1px solid;
+}
+
+table.coverage thead td.bar {
+  border-left:#cccccc 1px solid;
+}
+
+table.coverage thead td.ctr1 {
+  text-align:right;
+  border-left:#cccccc 1px solid;
+}
+
+table.coverage thead td.ctr2 {
+  text-align:right;
+  padding-left:2px;
+}
+
+table.coverage thead td.sortable {
+  cursor:pointer;
+  background-image:url(sort.gif);
+  background-position:right center;
+  background-repeat:no-repeat;
+}
+
+table.coverage thead td.up {
+  background-image:url(up.gif);
+}
+
+table.coverage thead td.down {
+  background-image:url(down.gif);
+}
+
+table.coverage tbody td {
+  white-space:nowrap;
+  padding:2px 6px 2px 6px;
+  border-bottom:#d6d3ce 1px solid;
+}
+
+table.coverage tbody tr:hover {
+  background: #f0f0d0 !important;
+}
+
+table.coverage tbody td.bar {
+  border-left:#e8e8e8 1px solid;
+}
+
+table.coverage tbody td.ctr1 {
+  text-align:right;
+  padding-right:14px;
+  border-left:#e8e8e8 1px solid;
+}
+
+table.coverage tbody td.ctr2 {
+  text-align:right;
+  padding-right:14px;
+  padding-left:2px;
+}
+
+table.coverage tfoot td {
+  white-space:nowrap;
+  padding:2px 6px 2px 6px;
+}
+
+table.coverage tfoot td.bar {
+  border-left:#e8e8e8 1px solid;
+}
+
+table.coverage tfoot td.ctr1 {
+  text-align:right;
+  padding-right:14px;
+  border-left:#e8e8e8 1px solid;
+}
+
+table.coverage tfoot td.ctr2 {
+  text-align:right;
+  padding-right:14px;
+  padding-left:2px;
+}
+
+.footer {
+  margin-top:20px;
+  border-top:#d6d3ce 1px solid;
+  padding-top:2px;
+  font-size:8pt;
+  color:#a0a0a0;
+}
+
+.footer a {
+  color:#a0a0a0;
+}
+
+.right {
+  float:right;
+}
diff --git a/build/reports/jacoco/test/html/jacoco-resources/report.gif b/build/reports/jacoco/test/html/jacoco-resources/report.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8547be50bf3e97e725920927b5aa4cdb031f4823
GIT binary patch
literal 363
zcmZ?wbhEHb6krfwSZc{In}J~s1H&!`1_uX+xVSjMb&S>db~X8S)dhAn1$OlXwvB~0
zO@%hC#Wq5_7&^+V`^qgRRa;E2HJ?*&DsqWoev|2fCetO&CQDmPR<;_iXfs~ZZnVC`
za8s8-+pK*(^AAm4c5K#~(^ocST-lU)byMc8y)_R`^xu2&{oaco_g{R!|Ki8Pmp>lA
z{_*VHkC*R%zWMa)!{^_hzyAL8?f2(zzrTL}{q@K1Z$Ey2|M}<VuRs5>0mYvzj9d)%
z3_1)93=AMYF|c(Um|x(b!)1L!<&wse2lFljw(mUH>M%dO(?mBbFJZ+>l~W@6TV5Xz
zUVSrbMpCNT<fHGt&s=KJDEP0TvEE5YpGBmjgPEy^iP=d|ubpoSA2Z{OJ|_WP7CzPm
ztjr8c82jz{btX@pK65#*HVgCSEnAm!Yiej}Y3@~5=W*p?<K*Nx#>vjk<#X26k--`O
DiVL#J

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/session.gif b/build/reports/jacoco/test/html/jacoco-resources/session.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0151bad8a001e5cc5cc7723a608185f746b7f8c1
GIT binary patch
literal 213
zcmZ?wbhEHb6krfwXc1xPS$gU4xw~t2pG#?5#^Be>V3WrXI-S9<hrzA(|Nr^_@5k?-
zZ~y=IhyVNSXZ04}pKqV%t9oe5k~tY+Ar=Pzi2#Z}Sr{1@<Qa4r7#J8pb~3OAJy7pU
z$((jcWv&W~@5v{d<hN-2VA{Cykq=+%E0atUwVp?XQ=*ni*&i=_+H_KBTYH%LriUU{
mZ=NXL{<_HNdB75vZT{z9OqqK3-3$FsJ>N1v{a00Fum%7=xO71P

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/sort.gif b/build/reports/jacoco/test/html/jacoco-resources/sort.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6757c2c32b57d768f3c12c4ae99a28bc32c9cbd7
GIT binary patch
literal 58
zcmZ?wbhEHb<YC}qXkcX6uwldh|Nj+#vM_QnFf!;cFfcOkFmN(3FbVb~u4LSM^HKMg
PNY|&Q!oNo|FjxZs?jRD2

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/sort.js b/build/reports/jacoco/test/html/jacoco-resources/sort.js
new file mode 100644
index 0000000..e269fe3
--- /dev/null
+++ b/build/reports/jacoco/test/html/jacoco-resources/sort.js
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
+ * This program and the accompanying materials are made available under
+ * the terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *    Marc R. Hoffmann - initial API and implementation
+ *
+ *******************************************************************************/
+
+(function () {
+
+  /**
+   * Sets the initial sorting derived from the hash.
+   *
+   * @param linkelementids
+   *          list of element ids to search for links to add sort inidcator
+   *          hash links
+   */
+  function initialSort(linkelementids) {
+    window.linkelementids = linkelementids;
+    var hash = window.location.hash;
+    if (hash) {
+      var m = hash.match(/up-./);
+      if (m) {
+        var header = window.document.getElementById(m[0].charAt(3));
+        if (header) {
+          sortColumn(header, true);
+        }
+        return;
+      }
+      var m = hash.match(/dn-./);
+      if (m) {
+        var header = window.document.getElementById(m[0].charAt(3));
+        if (header) {
+          sortColumn(header, false);
+        }
+        return
+      }
+    }
+  }
+
+  /**
+   * Sorts the columns with the given header dependening on the current sort state.
+   */
+  function toggleSort(header) {
+    var sortup = header.className.indexOf('down ') == 0;
+    sortColumn(header, sortup);
+  }
+
+  /**
+   * Sorts the columns with the given header in the given direction.
+   */
+  function sortColumn(header, sortup) {
+    var table = header.parentNode.parentNode.parentNode;
+    var body = table.tBodies[0];
+    var colidx = getNodePosition(header);
+
+    resetSortedStyle(table);
+
+    var rows = body.rows;
+    var sortedrows = [];
+    for (var i = 0; i < rows.length; i++) {
+      r = rows[i];
+      sortedrows[parseInt(r.childNodes[colidx].id.slice(1))] = r;
+    }
+
+    var hash;
+
+    if (sortup) {
+      for (var i = sortedrows.length - 1; i >= 0; i--) {
+        body.appendChild(sortedrows[i]);
+      }
+      header.className = 'up ' + header.className;
+      hash = 'up-' + header.id;
+    } else {
+      for (var i = 0; i < sortedrows.length; i++) {
+        body.appendChild(sortedrows[i]);
+      }
+      header.className = 'down ' + header.className;
+      hash = 'dn-' + header.id;
+    }
+
+    setHash(hash);
+  }
+
+  /**
+   * Adds the sort indicator as a hash to the document URL and all links.
+   */
+  function setHash(hash) {
+    window.document.location.hash = hash;
+    ids = window.linkelementids;
+    for (var i = 0; i < ids.length; i++) {
+        setHashOnAllLinks(document.getElementById(ids[i]), hash);
+    }
+  }
+
+  /**
+   * Extend all links within the given tag with the given hash.
+   */
+  function setHashOnAllLinks(tag, hash) {
+    links = tag.getElementsByTagName("a");
+    for (var i = 0; i < links.length; i++) {
+        var a = links[i];
+        var href = a.href;
+        var hashpos = href.indexOf("#");
+        if (hashpos != -1) {
+            href = href.substring(0, hashpos);
+        }
+        a.href = href + "#" + hash;
+    }
+  }
+
+  /**
+   * Calculates the position of a element within its parent.
+   */
+  function getNodePosition(element) {
+    var pos = -1;
+    while (element) {
+      element = element.previousSibling;
+      pos++;
+    }
+    return pos;
+  }
+
+  /**
+   * Remove the sorting indicator style from all headers.
+   */
+  function resetSortedStyle(table) {
+    for (var c = table.tHead.firstChild.firstChild; c; c = c.nextSibling) {
+      if (c.className) {
+        if (c.className.indexOf('down ') == 0) {
+          c.className = c.className.slice(5);
+        }
+        if (c.className.indexOf('up ') == 0) {
+          c.className = c.className.slice(3);
+        }
+      }
+    }
+  }
+
+  window['initialSort'] = initialSort;
+  window['toggleSort'] = toggleSort;
+
+})();
diff --git a/build/reports/jacoco/test/html/jacoco-resources/source.gif b/build/reports/jacoco/test/html/jacoco-resources/source.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b226e41c5276581db33d71525298ef572cc5d7ce
GIT binary patch
literal 354
zcmZ?wbhEHb6krfwxXQrr`Rnf=KmWY@^y|~t-#>r-`SJ62+pK*(^ACOa@_X{KW3$$r
zUbOlAiXE5N?74dH#gDtszu$lH{mGl3&)@xg`{~!`Z@=$6|9=1Fk9#k^KYaD$)rX(o
ze*Av+?&pWEzdwEZ{q@K1?>~Q6m-tr|`&X9))Rp>G7yDNi2eeoDG?)9<m-tPr_vo$l
z>Z$db+v+;K$!$Zw-I^YU<y}t8yPXzwI6pYizh#2$l}#B}Hf7%0TXS_&=Kufy88Cq2
zPZmZ721^DVkPOIA3~coW<`j772xXp7xumf~a9)6P@5^5-T-Ofpn(OYf={j<7!OXi^
z>y>gGUIs8su}}@0QYh8qTG2B>G*VcYsj)>^$5mIdqAH0^QrA^eT4>7D$(pX(g5A|@
wf?BR>5{s8CQFB!n>q!<6=Tmo878T{+vSq7=tE!TM;-0+<swzH5oE;gg0X~SX4FCWD

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-resources/up.gif b/build/reports/jacoco/test/html/jacoco-resources/up.gif
new file mode 100644
index 0000000000000000000000000000000000000000..58ed21660ec467736a4d2af17d91341f7cfb556c
GIT binary patch
literal 67
zcmZ?wbhEHb<YC}qSjfcSX{EDa!-oH0p!k!8k&A(eL5G2Xk%5PSlYxOrWJ=;nroA^G
Ub$^Kz-Nct)ygK&ScM%3_0PmU?SpWb4

literal 0
HcmV?d00001

diff --git a/build/reports/jacoco/test/html/jacoco-sessions.html b/build/reports/jacoco/test/html/jacoco-sessions.html
new file mode 100644
index 0000000..9004197
--- /dev/null
+++ b/build/reports/jacoco/test/html/jacoco-sessions.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>Sessions</title></head><body><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><a href="index.html" class="el_report">TASC</a> &gt; <span class="el_session">Sessions</span></div><h1>Sessions</h1><p>This coverage report is based on execution data from the following sessions:</p><table class="coverage" cellspacing="0"><thead><tr><td>Session</td><td>Start Time</td><td>Dump Time</td></tr></thead><tbody><tr><td><span class="el_session">LAPTOP-Q0NSB7L4-de6be834</span></td><td>May 23, 2021, 4:08:45 PM</td><td>May 23, 2021, 4:08:46 PM</td></tr></tbody></table><p>Execution data for the following classes is considered in this report:</p><table class="coverage" cellspacing="0"><thead><tr><td>Class</td><td>Id</td></tr></thead><tbody><tr><td><span class="el_class">com.adpro.tasc.appointment.db.AppointmentTest</span></td><td><code>85a26a06577d5871</code></td></tr><tr><td><a href="com.adpro.tasc.appointment.db.model/Appointment.html" class="el_class">com.adpro.tasc.appointment.db.model.Appointment</a></td><td><code>2c817ce4e3f86ac9</code></td></tr><tr><td><a href="com.adpro.tasc.appointment.db.model/Course.html" class="el_class">com.adpro.tasc.appointment.db.model.Course</a></td><td><code>77c8e62d955b87f1</code></td></tr><tr><td><span class="el_class">com.esotericsoftware.kryo.io.Input</span></td><td><code>82caa4ac8d2c9ad6</code></td></tr><tr><td><span class="el_class">com.esotericsoftware.kryo.io.Output</span></td><td><code>2e152e7951e62ecf</code></td></tr><tr><td><span class="el_class">org.apache.commons.lang.StringUtils</span></td><td><code>9dd94cc65aafa7e1</code></td></tr><tr><td><span class="el_class">org.apiguardian.api.API.Status</span></td><td><code>0341e8d99fc36573</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.AbstractTestDescriptor</span></td><td><code>32f6e4a66d41d5b0</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestClassDescriptor</span></td><td><code>29a580f844a707e9</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestClassRunInfo</span></td><td><code>68a7e79b2914fd4d</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestDescriptor</span></td><td><code>41c956a01da552a8</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestSuiteDescriptor</span></td><td><code>7ca2225e2fb0b4b2</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.JULRedirector</span></td><td><code>bae8ac50b3f8106a</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor</span></td><td><code>01e4e6af9e891fa2</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.TestCompleteEvent</span></td><td><code>94a6da85674017e0</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.TestStartEvent</span></td><td><code>739a2bff9c36ddab</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.filter.TestSelectionMatcher</span></td><td><code>a5df178d2ed1d813</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.filter.TestSelectionMatcher.FullQualifiedClassNameSelector</span></td><td><code>4e1cd6145ebf640c</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.filter.TestSelectionMatcher.NoWildcardMatcher</span></td><td><code>cf0720f3981d4110</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.filter.TestSelectionMatcher.TestPattern</span></td><td><code>783700ef9f1cc63c</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.AbstractJUnitSpec</span></td><td><code>b4052de24abbd62e</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor</span></td><td><code>0ee838ac107f426f</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor</span></td><td><code>e47480b2eb2b01b1</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformSpec</span></td><td><code>978629975562ea4d</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor</span></td><td><code>699c161b7e534ea1</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.ClassMethodNameFilter</span></td><td><code>9b7c7b917477e6a4</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.CollectAllTestClassesExecutor</span></td><td><code>140c22d19df9b056</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestExecutionListener</span></td><td><code>2551ebed50d6af44</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestFramework.JUnitPlatformTestClassProcessorFactory</span></td><td><code>625c4a8616cdb0c3</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.processors.CaptureTestOutputTestResultProcessor</span></td><td><code>add70d95b52da1ef</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.processors.DefaultStandardOutputRedirector</span></td><td><code>c0ce962d1b0afc6c</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.processors.DefaultStandardOutputRedirector.DiscardAction</span></td><td><code>b1b2c3fe575a0572</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.processors.DefaultStandardOutputRedirector.WriteAction</span></td><td><code>313e54868cd6f7bf</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.processors.TestOutputRedirector</span></td><td><code>3b6a0392c9e3dd02</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.processors.TestOutputRedirector.Forwarder</span></td><td><code>2f0a51434c23293a</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor</span></td><td><code>c8b750f17dedd908</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer</span></td><td><code>b8b51deda2c6be68</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestClassDescriptorSerializer</span></td><td><code>981dc7082ca42d03</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestClassRunInfoSerializer</span></td><td><code>0e558f5d21676b42</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestDescriptorSerializer</span></td><td><code>24069b8bfe2ef353</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestMethodDescriptorSerializer</span></td><td><code>b435e9c5c8434370</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestOutputEventSerializer</span></td><td><code>994231ecd10fc8f7</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestSuiteDescriptorSerializer</span></td><td><code>67e6b11b94fbb882</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.IdSerializer</span></td><td><code>bfa2929e25b2057e</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.NullableSerializer</span></td><td><code>e351abc12fabcf84</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.TestCompleteEventSerializer</span></td><td><code>138e940183983474</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.TestStartEventSerializer</span></td><td><code>ac260cd90d1906f0</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.WorkerTestSuiteDescriptorSerializer</span></td><td><code>8dc5f3cdad071782</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestWorker</span></td><td><code>1df09374725590ae</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestWorker.TestFrameworkServiceRegistry</span></td><td><code>663cf2cae0783981</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.WorkerTestClassProcessor</span></td><td><code>0f6525b02f2bb3d2</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.WorkerTestClassProcessor.WorkerTestSuiteDescriptor</span></td><td><code>b3807e9b92351840</code></td></tr><tr><td><span class="el_class">org.gradle.api.logging.LogLevel</span></td><td><code>236e938e30516638</code></td></tr><tr><td><span class="el_class">org.gradle.api.tasks.testing.TestOutputEvent.Destination</span></td><td><code>a16caef1c278a81f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.Cast</span></td><td><code>6130c81e08d81640</code></td></tr><tr><td><span class="el_class">org.gradle.internal.MutableBoolean</span></td><td><code>349de2b8a37d4338</code></td></tr><tr><td><span class="el_class">org.gradle.internal.SystemProperties</span></td><td><code>d6327df17d56dcbf</code></td></tr><tr><td><span class="el_class">org.gradle.internal.actor.internal.DefaultActorFactory</span></td><td><code>2776985b64942a33</code></td></tr><tr><td><span class="el_class">org.gradle.internal.actor.internal.DefaultActorFactory.BlockingActor</span></td><td><code>abe31a572fce57fa</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.AbstractDelegatingExecutorService</span></td><td><code>23206bedfd21e59c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.CompositeStoppable</span></td><td><code>e322584f6cb5969a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.CompositeStoppable.1</span></td><td><code>97a4a0e348c32238</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.CompositeStoppable.2</span></td><td><code>d6e18202f5962cf7</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.DefaultExecutorFactory</span></td><td><code>146de51eca49cfda</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.DefaultExecutorFactory.TrackedManagedExecutor</span></td><td><code>6c0e1c50b86b07e8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.ExecutorPolicy.CatchAndRecordFailures</span></td><td><code>2aacf6d3d0dd2240</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.GradleThread</span></td><td><code>b8ae9796558406bb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.GradleThread.1</span></td><td><code>a6792d792089eaab</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.ManagedExecutorImpl</span></td><td><code>d79bd78635a500be</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.ManagedExecutorImpl.1</span></td><td><code>d4c8c37d8735bb66</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.ThreadFactoryImpl</span></td><td><code>a96794333da88128</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.ThreadFactoryImpl.ManagedThreadRunnable</span></td><td><code>fab7ad07876eb01b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ContextClassLoaderDispatch</span></td><td><code>132d0c3fd93e8141</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ContextClassLoaderProxy</span></td><td><code>4295807baa6fbb83</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.MethodInvocation</span></td><td><code>0c613ba4e061a424</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ProxyDispatchAdapter</span></td><td><code>56827e7cbc177632</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ProxyDispatchAdapter.DispatchingInvocationHandler</span></td><td><code>91c49d997210d865</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ReflectionDispatch</span></td><td><code>6976fdf67f3e8979</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.AbstractBroadcastDispatch</span></td><td><code>f5a5346c8de26792</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.BroadcastDispatch</span></td><td><code>317320da099c9e99</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.BroadcastDispatch.CompositeDispatch</span></td><td><code>a000086d2f17e5ce</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.BroadcastDispatch.EmptyDispatch</span></td><td><code>3f4374492fbf9f05</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.BroadcastDispatch.SingletonDispatch</span></td><td><code>197c709d5c09a071</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.ListenerBroadcast</span></td><td><code>242551180f1990eb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.id.CompositeIdGenerator</span></td><td><code>f1c607aa5fccdbaa</code></td></tr><tr><td><span class="el_class">org.gradle.internal.id.CompositeIdGenerator.CompositeId</span></td><td><code>e710c854f802c58b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.id.LongIdGenerator</span></td><td><code>6f8168bf486a560d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.id.UUIDGenerator</span></td><td><code>047a43ab94df6ffa</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.BufferCaster</span></td><td><code>88a8af829d9f2dca</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.ClassLoaderObjectInputStream</span></td><td><code>393405e0e488b876</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.LinePerThreadBufferingOutputStream</span></td><td><code>d822cfaa1e80043e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.NullOutputStream</span></td><td><code>eefcfe0665bbfe4c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.config.LoggingSystemAdapter</span></td><td><code>2bb5150ee66232e9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.config.LoggingSystemAdapter.SnapshotImpl</span></td><td><code>221de860d84422df</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.EndOutputEvent</span></td><td><code>0d8edd2a5ce274ee</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.LogLevelChangeEvent</span></td><td><code>33b762c6d5852de7</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.OutputEvent</span></td><td><code>85bce87f1bcda18d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.OutputEventListener</span></td><td><code>e7d50a9306531b49</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.OutputEventListener.1</span></td><td><code>5c6014dff2070607</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.StyledTextOutputEvent</span></td><td><code>1e2441f613eed277</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.StyledTextOutputEvent.Span</span></td><td><code>9a3c236b507d89a5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.serializer.LogEventSerializer</span></td><td><code>b6d88af223db296a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.serializer.LogLevelChangeEventSerializer</span></td><td><code>f77a59533dde75ec</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.serializer.SpanSerializer</span></td><td><code>5f773b7d1ad07c9f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.serializer.StyledTextOutputEventSerializer</span></td><td><code>faebed27ac3e65ba</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.DefaultLoggingManager</span></td><td><code>61e216a064052ff1</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.DefaultLoggingManager.StartableLoggingRouter</span></td><td><code>78396be937af48de</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.DefaultLoggingManager.StartableLoggingSystem</span></td><td><code>b121a97021902643</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.DefaultLoggingManagerFactory</span></td><td><code>eb1ab97193f0d177</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.LoggingServiceRegistry</span></td><td><code>f7c6b2b4c1aabace</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.LoggingServiceRegistry.1</span></td><td><code>2370ed12ee012d1c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.LoggingServiceRegistry.CommandLineLogging</span></td><td><code>ab0f3ffb5e657e79</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.TextStreamOutputEventListener</span></td><td><code>ef4d0c3267356598</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventListenerManager</span></td><td><code>d6dee3d6fea49020</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventListenerManager.1</span></td><td><code>1e218a705ff0ee7e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer</span></td><td><code>3242b1f39e5b4911</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer.1</span></td><td><code>d0ad61bd942acf8d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer.2</span></td><td><code>c0bff913afc6c760</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer.LazyListener</span></td><td><code>e84c1b95fd8c83a6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer.SnapshotImpl</span></td><td><code>e02a04091406dd13</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventTransformer</span></td><td><code>993a9e6d4229e0b8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.BuildOperationAwareLogger</span></td><td><code>daea5fa552e68a8c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger</span></td><td><code>30ddd0a8ff91b5f5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext</span></td><td><code>afa534cae24c6f1f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext.NoOpLogger</span></td><td><code>662eae9ed0e37b3f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.Slf4jLoggingConfigurer</span></td><td><code>75fba29c3739b15f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.DefaultStdErrLoggingSystem</span></td><td><code>fd3dd0caab2f1d95</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.DefaultStdOutLoggingSystem</span></td><td><code>528bb39bfb67c3ae</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.JavaUtilLoggingSystem</span></td><td><code>5e967b17aabfd442</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.JavaUtilLoggingSystem.SnapshotImpl</span></td><td><code>15dfc30250723749</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem</span></td><td><code>1ae6e6b715c6b3f9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem.1</span></td><td><code>65643cb979acba64</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem.OutputEventDestination</span></td><td><code>8c1ddf1476568828</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem.PrintStreamDestination</span></td><td><code>9e7273f370028123</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem.SnapshotImpl</span></td><td><code>8f80a46f9780a57e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.text.StyledTextOutput.Style</span></td><td><code>55495f1c332662ef</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.filesystem.services.FileSystemServices</span></td><td><code>bc1c44d4edf7e306</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.jansi.DefaultJansiRuntimeResolver</span></td><td><code>1aa17f25c9c1cad4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.jansi.JansiBootPathConfigurer</span></td><td><code>b933739629dd00ad</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.jansi.JansiLibraryFactory</span></td><td><code>0cbaac430d6656c4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.jansi.JansiStorageLocator</span></td><td><code>c8bff1ccb071f9b6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices</span></td><td><code>6e2cf08efa0d14ad</code></td></tr><tr><td><span class="el_class">org.gradle.internal.reflect.JavaMethod</span></td><td><code>a22fd969d22637c9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.KryoBackedMessageSerializer</span></td><td><code>0028157720ec1f27</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.ConnectionSet</span></td><td><code>323708d9214e34e4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.ConnectionState</span></td><td><code>250fb1b274991d9a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.DefaultMethodArgsSerializer</span></td><td><code>b5f4b38125033ffd</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.DefaultMethodArgsSerializer.ArraySerializer</span></td><td><code>16505d5ccbb1b78b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.DefaultMethodArgsSerializer.EmptyArraySerializer</span></td><td><code>cdc53c79a631aa33</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.IncomingQueue</span></td><td><code>0e8ecdb8f31efe51</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.InterHubMessageSerializer</span></td><td><code>7d84d4aa85858c73</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.InterHubMessageSerializer.MessageReader</span></td><td><code>ab1cd6753eb75a29</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.InterHubMessageSerializer.MessageWriter</span></td><td><code>3e4611f758508afb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.JavaSerializationBackedMethodArgsSerializer</span></td><td><code>4c7a738ee4525ff6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub</span></td><td><code>1326887a1f1da0ac</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.ChannelDispatch</span></td><td><code>8a9dfd1b6306d8e6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.ConnectionDispatch</span></td><td><code>df1d0a86180d66e4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.ConnectionReceive</span></td><td><code>e1dc78071e8e957d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.Discard</span></td><td><code>63a8d677cc1f9101</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.Handler</span></td><td><code>3d232f51f2c02828</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.State</span></td><td><code>1b76747d7bce6b89</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedClient</span></td><td><code>77c2124c3c43d832</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection</span></td><td><code>c23964928f1aff22</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection.1</span></td><td><code>ac806a6bc6b1b21d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection.2</span></td><td><code>8ac38215966e3a20</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection.DispatchWrapper</span></td><td><code>9aa5d8679dbc6601</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MethodInvocationSerializer</span></td><td><code>47063ab293644e83</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MethodInvocationSerializer.MethodDetails</span></td><td><code>b6b7fb55e88cc4b9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MethodInvocationSerializer.MethodInvocationReader</span></td><td><code>e6b939136f207ff5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MethodInvocationSerializer.MethodInvocationWriter</span></td><td><code>c3b77db1b2556afe</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.OutgoingQueue</span></td><td><code>fbcc05506ad40c68</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.ChannelIdentifier</span></td><td><code>7697ff6a7c712869</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.ChannelMessage</span></td><td><code>9bff479666e58802</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.EndOfStream</span></td><td><code>f29ffed85365f7db</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.InterHubMessage</span></td><td><code>0c6e49b6ec077e16</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.InterHubMessage.Delivery</span></td><td><code>0652d09c2a7fd1ac</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.EndPointQueue</span></td><td><code>8038a5636529123d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.MultiChannelQueue</span></td><td><code>bcaac9c224068764</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.MultiEndPointQueue</span></td><td><code>27222a892157733f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.MultiEndPointQueue.1</span></td><td><code>44049b3edc682954</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.QueueInitializer</span></td><td><code>ad18361c23e679b1</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.MultiChoiceAddress</span></td><td><code>91381aa03cdd48e7</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.MultiChoiceAddressSerializer</span></td><td><code>7ffc395650705aaa</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnectCompletion</span></td><td><code>0da46ac4ccd1c9ce</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnection</span></td><td><code>b648fc2e70525f62</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnection.1</span></td><td><code>c7f1074dffaaa188</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnection.SocketInputStream</span></td><td><code>07d3128481116a21</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnection.SocketOutputStream</span></td><td><code>341e7a58a4db0e94</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketInetAddress</span></td><td><code>20cc3fd7992230e8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketInetAddress.Serializer</span></td><td><code>d42dd7f644e6367c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.TcpOutgoingConnector</span></td><td><code>e658ec26090de909</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.services.MessagingServices</span></td><td><code>d686a35c2f44fd41</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.AbstractCollectionSerializer</span></td><td><code>7897b7a9a0c39b1b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.AbstractDecoder</span></td><td><code>6f331f65d3691839</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.AbstractEncoder</span></td><td><code>44ea8279ea7b3a07</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.AbstractSerializer</span></td><td><code>d5cd8744f99ef12d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory</span></td><td><code>a2c0786758dee183</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.BigDecimalSerializer</span></td><td><code>eaa6b28a3f51642f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.BigIntegerSerializer</span></td><td><code>2c98e0b9e0f1c9d6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.BooleanSerializer</span></td><td><code>01d661072eaac67a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.ByteArraySerializer</span></td><td><code>c95017bf4a6a13b0</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.ByteSerializer</span></td><td><code>326ce383c860adf4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.CharSerializer</span></td><td><code>185db85ea555f9d6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.DoubleSerializer</span></td><td><code>2796bf234c73e7cb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.EnumSerializer</span></td><td><code>bc8e40c86cbebbb4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.FileSerializer</span></td><td><code>6b2c976d4c079b4a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.FloatSerializer</span></td><td><code>f45b2dbd2336d986</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.IntegerSerializer</span></td><td><code>734708aca1fe18da</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.LongSerializer</span></td><td><code>0497f558058801fb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.PathSerializer</span></td><td><code>7f407ac8eaa83c3d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.ShortSerializer</span></td><td><code>d4db65a796bf2a6f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.StringMapSerializer</span></td><td><code>7475bd2ad2bb1697</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.StringSerializer</span></td><td><code>7f499f41addd77f8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.ThrowableSerializer</span></td><td><code>633508dbaf48bdcc</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializer</span></td><td><code>f0908e23b4486288</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry</span></td><td><code>1c055ebb8e8e5c48</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.1</span></td><td><code>092388c804781e1c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.HierarchySerializerMatcher</span></td><td><code>ff528a4c3c34fd03</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.SerializerClassMatcherStrategy</span></td><td><code>ba45cd4d34cb0008</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.StrictSerializerMatcher</span></td><td><code>4d4e1e4cbe573bab</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.TaggedTypeSerializer</span></td><td><code>70a6bc51c60e93c1</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.TypeInfo</span></td><td><code>99b6add1ca94f586</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.HashCodeSerializer</span></td><td><code>4cc78fc15c246fbf</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.InputStreamBackedDecoder</span></td><td><code>9a2f2a313ec9574e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.ListSerializer</span></td><td><code>fe472a367fb15381</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.KryoBackedDecoder</span></td><td><code>4e1c116859031063</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.KryoBackedEncoder</span></td><td><code>d597a43e40a9bc17</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.TypeSafeSerializer</span></td><td><code>1dbc9e4c69fd1973</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.TypeSafeSerializer.1</span></td><td><code>bb88df969641a032</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.TypeSafeSerializer.2</span></td><td><code>599bac595545b9c0</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.AbstractServiceMethod</span></td><td><code>d8f9bf72435aa0d5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceMethodFactory</span></td><td><code>12e828893ff9638d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry</span></td><td><code>ffde6493b6a20ad6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.CompositeServiceProvider</span></td><td><code>fe81ba556028ce1e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.FactoryMethodService</span></td><td><code>e1e252010e22fe27</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.FactoryService</span></td><td><code>d43aa28299175cdc</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.FixedInstanceService</span></td><td><code>03bd9d262fd9febc</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ManagedObjectServiceProvider</span></td><td><code>8fb388ea7b885df7</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.OwnServices</span></td><td><code>f89231adb6f33d30</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.OwnServices.ProviderAnalyser</span></td><td><code>104d9eaf6e1cb5c3</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ParentServices</span></td><td><code>a848c037f3e27778</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.SingletonService</span></td><td><code>53e119d992cd20b6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.SingletonService.BindState</span></td><td><code>5dc53505553aff84</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.State</span></td><td><code>228b93f7aad53efc</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ThisAsService</span></td><td><code>bd7bbfa7df379aed</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.MethodHandleBasedServiceMethod</span></td><td><code>b2fda0561994a9ab</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.MethodHandleBasedServiceMethodFactory</span></td><td><code>47e87df4713e4ce5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.ReflectionBasedServiceMethod</span></td><td><code>5ced5cdb55f87900</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.RelevantMethods</span></td><td><code>542516b051995f02</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.RelevantMethodsBuilder</span></td><td><code>2254a458e7bdf1d8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.time.MonotonicClock</span></td><td><code>0242c0eb492f1d96</code></td></tr><tr><td><span class="el_class">org.gradle.internal.time.Time</span></td><td><code>118854647ab7eed4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.time.TimeSource</span></td><td><code>a96871955c3b895e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.time.TimeSource.1</span></td><td><code>6de78f6b0e44a7b2</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.WorkerLoggingSerializer</span></td><td><code>adae78bad8b0e727</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.ActionExecutionWorker</span></td><td><code>a7d30aba9c762788</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.ActionExecutionWorker.1</span></td><td><code>d0eba6bfe3f78d57</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.DefaultWorkerDirectoryProvider</span></td><td><code>0ad8aeb16d1a73f5</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker</span></td><td><code>a3251362475ac65c</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.ContextImpl</span></td><td><code>e0e885fa0e111346</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.PrintUnrecoverableErrorToFileHandler</span></td><td><code>51f6c193615aca0b</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.WorkerServices</span></td><td><code>07ac8ed6cdc894ff</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.WorkerServices.1</span></td><td><code>aa3fdc473aab03f0</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.WorkerServices.1.1</span></td><td><code>7922b36356a5ac14</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.WorkerLogEventListener</span></td><td><code>4a0b5fb708591833</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertEquals</span></td><td><code>6b16b14f06d2f13c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertionUtils</span></td><td><code>d38e6065edf9e8b4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.Assertions</span></td><td><code>034ca0ccef1fcfeb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator</span></td><td><code>0f444822ed4e6ff2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.IndicativeSentences</span></td><td><code>1bcbaf08f16e7267</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.ReplaceUnderscores</span></td><td><code>96cb84f9694f26b3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.Simple</span></td><td><code>c13c0576fee4d0ce</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.Standard</span></td><td><code>acb0e578c24eab65</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.TestInstance.Lifecycle</span></td><td><code>548dd47a98f9c8af</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ConditionEvaluationResult</span></td><td><code>2f5d0e7b0584e76c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext</span></td><td><code>6f6e5ae2db7953a4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext.Namespace</span></td><td><code>97ff7c075a65bd5a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.InvocationInterceptor</span></td><td><code>996f7741ba5ec355</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.JupiterTestEngine</span></td><td><code>42bfd69ac4ff9a31</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.CachingJupiterConfiguration</span></td><td><code>acbca1031a6b469e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.DefaultJupiterConfiguration</span></td><td><code>af118776a40f2950</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.EnumConfigurationParameterConverter</span></td><td><code>339f5752af685066</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter</span></td><td><code>e016cbdeae9ef120</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.AbstractExtensionContext</span></td><td><code>2099fecb57444d16</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor</span></td><td><code>efa52c3856a83ca2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassExtensionContext</span></td><td><code>da8d011f2fd97107</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassTestDescriptor</span></td><td><code>d20d6f511531c4c4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DisplayNameUtils</span></td><td><code>501e6f2e0b4e03ee</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ExtensionUtils</span></td><td><code>857bd7cde465ada0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor</span></td><td><code>8502a8ddd495080f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext</span></td><td><code>37e3ac8bbe8deb47</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterTestDescriptor</span></td><td><code>c92b691f71e71eb6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.LifecycleMethodUtils</span></td><td><code>1162b59df6db6b33</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor</span></td><td><code>26337ef6d342f950</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodExtensionContext</span></td><td><code>afe114c2ffc920b7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils</span></td><td><code>8d8758db35676c1c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor</span></td><td><code>36dfc9f40e0eb4a9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.ClassSelectorResolver</span></td><td><code>a62bf2e2a3da3cb2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.DiscoverySelectorResolver</span></td><td><code>9913614fbfb4142b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodFinder</span></td><td><code>5ea468d2eb528361</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodOrderingVisitor</span></td><td><code>c00ce3635595f83e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver</span></td><td><code>55fe8761b5cca8b5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType</span></td><td><code>6d2534a427f2419e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.1</span></td><td><code>0405b4c85a3937a6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.2</span></td><td><code>b02fbbc9ca24af22</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.3</span></td><td><code>b02f63a554edca40</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsInnerClass</span></td><td><code>f7d9846d00228720</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsNestedTestClass</span></td><td><code>e47ff7cd33073803</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsPotentialTestContainer</span></td><td><code>fcb5565ad4483f6c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestClassWithTests</span></td><td><code>2a6af63531e197a1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod</span></td><td><code>a2c68978bd6bfbc6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestMethod</span></td><td><code>8b244977e441886e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestTemplateMethod</span></td><td><code>0baf1066bf0cbad7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestableMethod</span></td><td><code>59a0b58a40803fe2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConditionEvaluator</span></td><td><code>c2ba33ab802578df</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConstructorInvocation</span></td><td><code>4aef47e7c0afe594</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.DefaultTestInstances</span></td><td><code>37fd85d961d60c98</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExecutableInvoker</span></td><td><code>a4c3118e36bc1d6f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExecutableInvoker.ReflectiveInterceptorCall</span></td><td><code>1e58a02ac712330c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore</span></td><td><code>54ae116fd96b89fb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore.CompositeKey</span></td><td><code>a02a8fbe97e6f360</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore.MemoizingSupplier</span></td><td><code>511eabbb46e5b6cd</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore.StoredValue</span></td><td><code>aa30181699464a58</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain</span></td><td><code>008224a337018874</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain.InterceptedInvocation</span></td><td><code>62ff9a2338ce3045</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain.ValidatingInvocation</span></td><td><code>2434903e45fcd05c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext</span></td><td><code>868921f800563654</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.Builder</span></td><td><code>d23096bee4e10887</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.State</span></td><td><code>0a606b935b0623c0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.MethodInvocation</span></td><td><code>6f894f3cd37e86c5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.NamespaceAwareStore</span></td><td><code>3ffe1c39d58eaf53</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.TestInstancesProvider</span></td><td><code>0e7bbb8b8071e40b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.DisabledCondition</span></td><td><code>23223b45668b6ef2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.ExtensionRegistry</span></td><td><code>7f89cc3238c43287</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.MutableExtensionRegistry</span></td><td><code>094514ca9919cd68</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.RepeatedTestExtension</span></td><td><code>1b7914cc8cf83732</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TempDirectory</span></td><td><code>3ed1c1e958835b3c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestInfoParameterResolver</span></td><td><code>1b5b370a56807cae</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestReporterParameterResolver</span></td><td><code>60beaf7c80fe99cc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutConfiguration</span></td><td><code>d1c949ce4363e069</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutDurationParser</span></td><td><code>47f3e400722ef57b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutExtension</span></td><td><code>f396c89f10d2bf92</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory</span></td><td><code>be8bb2befc643502</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.OpenTest4JAndJUnit4AwareThrowableCollector</span></td><td><code>ed8f127fb5825afa</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try</span></td><td><code>ed940444537e81c8</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try.Failure</span></td><td><code>11c2a90efd237384</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory</span></td><td><code>3ba683e3050bf0cd</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory.DelegatingLogger</span></td><td><code>c601ec41368ffb23</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.AnnotationSupport</span></td><td><code>9943d504ff0c08cc</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.ReflectionSupport</span></td><td><code>534b5bde0100740f</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.AnnotationUtils</span></td><td><code>f61f84cc85e2534a</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassLoaderUtils</span></td><td><code>303bc6de99dfa72d</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassNamePatternFilterUtils</span></td><td><code>91f6e63f2cf6fc71</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassUtils</span></td><td><code>8883e6fc8a933271</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClasspathScanner</span></td><td><code>7ee158ffe9739b3e</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.CollectionUtils</span></td><td><code>a5cea6ca5e67470d</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.Preconditions</span></td><td><code>96db76b91278a526</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils</span></td><td><code>075f5a8aaa251333</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode</span></td><td><code>84b7777a55d87f91</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.StringUtils</span></td><td><code>a723e15c8f7e5806</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.UnrecoverableExceptions</span></td><td><code>f9b8cbeee198b811</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter</span></td><td><code>ec8dc82249eeb7a9</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter.1</span></td><td><code>70825b5141694d2a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineDiscoveryListener</span></td><td><code>22998ffae2c92a7c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineDiscoveryListener.1</span></td><td><code>df3f3b5f98f0bac1</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineExecutionListener</span></td><td><code>6d94afd3f3223c2e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineExecutionListener.1</span></td><td><code>250191e2495d904a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.ExecutionRequest</span></td><td><code>ed3835cc21e5a048</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.Filter</span></td><td><code>f932423ccd3b54bf</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.FilterResult</span></td><td><code>cdaa92f4f6f79059</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.SelectorResolutionResult</span></td><td><code>84379bf9c19eb4b1</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.SelectorResolutionResult.Status</span></td><td><code>7127e7bcdd8dd16b</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor</span></td><td><code>9fce516d5ec67d95</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor.Type</span></td><td><code>3d400391a113f4d2</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult</span></td><td><code>fd67f84654a5aa1c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult.Status</span></td><td><code>26685ff07ec05579</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId</span></td><td><code>e031943c734b350e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId.Segment</span></td><td><code>e194895cf704d270</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueIdFormat</span></td><td><code>d5b6ae13b16471ae</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.ClassSelector</span></td><td><code>502567f08c42b0d4</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.DiscoverySelectors</span></td><td><code>86572f53d236b10e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.MethodSelector</span></td><td><code>a07d3186374af8d5</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.AbstractTestDescriptor</span></td><td><code>2bfbf25c43491443</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.ClassSource</span></td><td><code>f4ca7e039aef45a6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.EngineDescriptor</span></td><td><code>b7dbf6dfb794516c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.MethodSource</span></td><td><code>78439c20334a12f1</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.ClassContainerSelectorResolver</span></td><td><code>13e03d83db463757</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution</span></td><td><code>4c892173c2a96bbb</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.DefaultContext</span></td><td><code>1062edde7e863f79</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver</span></td><td><code>96067c54823596a5</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.Builder</span></td><td><code>4536a37bf6e65b70</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.DefaultInitializationContext</span></td><td><code>f1925780e6c4e71e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver</span></td><td><code>80cba972b4f10568</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Match</span></td><td><code>a6c967fba828723c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Match.Type</span></td><td><code>b37cc687ae9a3084</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Resolution</span></td><td><code>6a587b13ca925431</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExclusiveResource</span></td><td><code>afdcebaaf227a8d4</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExclusiveResource.LockMode</span></td><td><code>2def3258cb1895ee</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine</span></td><td><code>97ffbc145c7d4a83</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor</span></td><td><code>68a36544a3925ed3</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.LockManager</span></td><td><code>91bf046512959b34</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node</span></td><td><code>555c002ffafd5982</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node.SkipResult</span></td><td><code>0fc8a25c9d347723</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeExecutionAdvisor</span></td><td><code>e5cf54a3abfe8a32</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask</span></td><td><code>86bbeefc3d8bf534</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask.DefaultDynamicTestExecutor</span></td><td><code>3c569748fd1e529a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTaskContext</span></td><td><code>02d712a672b76229</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTreeWalker</span></td><td><code>4cf0953096f8569f</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeUtils</span></td><td><code>d602362461bcf308</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeUtils.1</span></td><td><code>f707e15bc93748e1</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService</span></td><td><code>054c281153908bb9</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SingleLock</span></td><td><code>35bf01651657d4ab</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ThrowableCollector</span></td><td><code>7acd32dfa33bf85d</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.EngineDiscoveryResult</span></td><td><code>8a104796dc402ce9</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.EngineDiscoveryResult.Status</span></td><td><code>b30c4012c3e2f07e</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherDiscoveryListener</span></td><td><code>456d3e735c22aa48</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherDiscoveryListener.1</span></td><td><code>a120e75b9fe22bf4</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestIdentifier</span></td><td><code>225bb434f8f223e2</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestPlan</span></td><td><code>60578bb4f50b5157</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultDiscoveryRequest</span></td><td><code>c69d8a6244047852</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncher</span></td><td><code>ebed947f17c54e38</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherConfig</span></td><td><code>2ff4fe09433c18a1</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DelegatingEngineExecutionListener</span></td><td><code>1e5487ee783deeca</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryOrchestrator</span></td><td><code>2cbdeafeab6aaeb8</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryResultValidator</span></td><td><code>93df7a3977833cf5</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineExecutionOrchestrator</span></td><td><code>94e275311d30b06b</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineIdValidator</span></td><td><code>f2cd1af3aaae74e2</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ExecutionListenerAdapter</span></td><td><code>c5de7169f1a88932</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.InternalTestPlan</span></td><td><code>dddd81f991f7f910</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfig</span></td><td><code>cdcfe3d058b9c6a3</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfig.Builder</span></td><td><code>ec3360949605407c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters</span></td><td><code>96e6d4dc4112c376</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.Builder</span></td><td><code>a2a68ee71031efa4</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider</span></td><td><code>1001a77a65ab64b4</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider.2</span></td><td><code>5303ac78d2d4faf7</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider.3</span></td><td><code>2c0d32f9a15f9965</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder</span></td><td><code>44979806c4c3674e</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryResult</span></td><td><code>f090215733b9ca5b</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherFactory</span></td><td><code>37419e153508a88c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener</span></td><td><code>72e79df7e2d97cc9</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener.Outcome</span></td><td><code>4d8244bde278efbb</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderPostDiscoveryFilterRegistry</span></td><td><code>fb5d2c0175da6c02</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry</span></td><td><code>7c054c4cf76cb0f6</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderTestExecutionListenerRegistry</span></td><td><code>2299bac1075a6bf3</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.StreamInterceptingTestExecutionListener</span></td><td><code>3a1f3bd6b32f854b</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.TestExecutionListenerRegistry</span></td><td><code>ad803eefed5cb737</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.TestExecutionListenerRegistry.CompositeTestExecutionListener</span></td><td><code>583008686628ab79</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener</span></td><td><code>267176035c858efc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners</span></td><td><code>c83fb9349eaee2dc</code></td></tr><tr><td><span class="el_class">org.slf4j.LoggerFactory</span></td><td><code>ee690628c73b9385</code></td></tr><tr><td><span class="el_class">org.slf4j.bridge.SLF4JBridgeHandler</span></td><td><code>a24ab9068b3f1049</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOPLoggerFactory</span></td><td><code>54f5632bfcb8d8d5</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.SubstituteLoggerFactory</span></td><td><code>dc7efc0107a4a62d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Util</span></td><td><code>857ff3acc0576435</code></td></tr><tr><td><span class="el_class">org.slf4j.impl.StaticLoggerBinder</span></td><td><code>6822bf7129d487fa</code></td></tr><tr><td><span class="el_class">sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo</span></td><td><code>49f06b9a45b76155</code></td></tr><tr><td><span class="el_class">sun.util.resources.provider.NonBaseLocaleDataMetaInfo</span></td><td><code>677fb32123d6c8a4</code></td></tr><tr><td><span class="el_class">worker.org.gradle.api.JavaVersion</span></td><td><code>1f41798010b5e4cb</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderSpec</span></td><td><code>cb374b01ccbebc0b</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderUtils</span></td><td><code>4e453213893c498d</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderUtils.AbstractClassLoaderLookuper</span></td><td><code>678225cd425dad56</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderUtils.LookupClassDefiner</span></td><td><code>3fd45b8615168bf7</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderUtils.LookupPackagesFetcher</span></td><td><code>24c07da7958b6c1c</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.FilteringClassLoader</span></td><td><code>14e598cae38422c5</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.FilteringClassLoader.RetrieveSystemPackagesClassLoader</span></td><td><code>130153a9bef1ed82</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.FilteringClassLoader.Spec</span></td><td><code>5e483fa929e0db0b</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.FilteringClassLoader.TrieSet</span></td><td><code>e5b7cbe5af5f7d99</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.stream.EncodedStream.EncodedInput</span></td><td><code>6e5f5782b741154c</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.util.Trie</span></td><td><code>19fbee069a29feb3</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.util.Trie.Builder</span></td><td><code>3ff89b3303eddda1</code></td></tr><tr><td><span class="el_class">worker.org.gradle.process.internal.worker.GradleWorkerMain</span></td><td><code>232767ef46e8d7ca</code></td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file
diff --git a/build/reports/jacoco/test/jacocoTestReport.xml b/build/reports/jacoco/test/jacocoTestReport.xml
new file mode 100644
index 0000000..b2e41a5
--- /dev/null
+++ b/build/reports/jacoco/test/jacocoTestReport.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="TASC"><sessioninfo id="LAPTOP-Q0NSB7L4-de6be834" start="1621760925742" dump="1621760926868"/><package name="com/adpro/tasc"><class name="com/adpro/tasc/TASCApp" sourcefilename="TASCApp.java"><method name="&lt;init&gt;" desc="()V" line="7"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="main" desc="([Ljava/lang/String;)V" line="9"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="TASCApp.java"><line nr="7" mi="3" ci="0" mb="0" cb="0"/><line nr="9" mi="4" ci="0" mb="0" cb="0"/><line nr="10" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></package><package name="com/adpro/tasc/user/db/dao"><class name="com/adpro/tasc/user/db/dao/UserDAO" sourcefilename="UserDAO.java"/><sourcefile name="UserDAO.java"/></package><package name="com/adpro/tasc/user/db/model"><class name="com/adpro/tasc/user/db/model/AcademicUser" sourcefilename="AcademicUser.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/adpro/tasc/user/db/model/Role;)V" line="14"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="(Lcom/adpro/tasc/user/db/model/User;)V" line="18"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getCourses" desc="()Ljava/util/List;" line="21"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getSchedule" desc="()Lcom/adpro/tasc/appointment/db/model/Schedule;" line="22"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setCourses" desc="(Ljava/util/List;)V" line="11"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setSchedule" desc="(Lcom/adpro/tasc/appointment/db/model/Schedule;)V" line="11"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="32" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="6" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/user/db/model/Role" sourcefilename="Role.java"><method name="toString" desc="()Ljava/lang/String;" line="9"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="3"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="34" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/user/db/model/User" sourcefilename="User.java"><method name="getUserName" desc="()Ljava/lang/String;" line="11"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getFullName" desc="()Ljava/lang/String;" line="12"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getPassword" desc="()Ljava/lang/String;" line="13"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getRole" desc="()Lcom/adpro/tasc/user/db/model/Role;" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setUserName" desc="(Ljava/lang/String;)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setFullName" desc="(Ljava/lang/String;)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setPassword" desc="(Ljava/lang/String;)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setRole" desc="(Lcom/adpro/tasc/user/db/model/Role;)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/adpro/tasc/user/db/model/Role;)V" line="9"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="43" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="AcademicUser.java"><line nr="11" mi="8" ci="0" mb="0" cb="0"/><line nr="14" mi="6" ci="0" mb="0" cb="0"/><line nr="15" mi="1" ci="0" mb="0" cb="0"/><line nr="18" mi="10" ci="0" mb="0" cb="0"/><line nr="19" mi="1" ci="0" mb="0" cb="0"/><line nr="21" mi="3" ci="0" mb="0" cb="0"/><line nr="22" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="32" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="6" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="User.java"><line nr="8" mi="16" ci="0" mb="0" cb="0"/><line nr="9" mi="15" ci="0" mb="0" cb="0"/><line nr="11" mi="3" ci="0" mb="0" cb="0"/><line nr="12" mi="3" ci="0" mb="0" cb="0"/><line nr="13" mi="3" ci="0" mb="0" cb="0"/><line nr="14" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="43" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="Role.java"><line nr="3" mi="3" ci="0" mb="0" cb="0"/><line nr="4" mi="6" ci="0" mb="0" cb="0"/><line nr="5" mi="6" ci="0" mb="0" cb="0"/><line nr="6" mi="6" ci="0" mb="0" cb="0"/><line nr="9" mi="6" ci="0" mb="4" cb="0"/><line nr="10" mi="2" ci="0" mb="0" cb="0"/><line nr="11" mi="2" ci="0" mb="0" cb="0"/><line nr="12" mi="2" ci="0" mb="0" cb="0"/><line nr="13" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="34" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="109" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="22" covered="0"/><counter type="COMPLEXITY" missed="20" covered="0"/><counter type="METHOD" missed="17" covered="0"/><counter type="CLASS" missed="3" covered="0"/></package><package name="com/adpro/tasc/appointment/db/mapper"><class name="com/adpro/tasc/appointment/db/mapper/CourseMapper" sourcefilename="CourseMapper.java"><method name="&lt;init&gt;" desc="()V" line="9"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="mapRow" desc="(Ljava/sql/ResultSet;I)Lcom/adpro/tasc/appointment/db/model/Course;" line="12"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/mapper/ScheduleMapper" sourcefilename="ScheduleMapper.java"><method name="&lt;init&gt;" desc="(Lcom/adpro/tasc/user/db/dao/UserDAO;)V" line="13"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="mapRow" desc="(Ljava/sql/ResultSet;I)Lcom/adpro/tasc/appointment/db/model/Schedule;" line="19"><counter type="INSTRUCTION" missed="24" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="30" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/mapper/AppointmentMapper" sourcefilename="AppointmentMapper.java"><method name="&lt;init&gt;" desc="(Lcom/adpro/tasc/user/db/dao/UserDAO;)V" line="15"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="mapRow" desc="(Ljava/sql/ResultSet;I)Lcom/adpro/tasc/appointment/db/model/AppointmentRequest;" line="21"><counter type="INSTRUCTION" missed="72" covered="0"/><counter type="LINE" missed="15" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="78" covered="0"/><counter type="LINE" missed="18" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/mapper/SlotMapper" sourcefilename="SlotMapper.java"><method name="&lt;init&gt;" desc="()V" line="9"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="mapRow" desc="(Ljava/sql/ResultSet;I)Lcom/adpro/tasc/appointment/db/model/Slot;" line="12"><counter type="INSTRUCTION" missed="32" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="35" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="CourseMapper.java"><line nr="9" mi="3" ci="0" mb="0" cb="0"/><line nr="12" mi="4" ci="0" mb="0" cb="0"/><line nr="14" mi="5" ci="0" mb="0" cb="0"/><line nr="16" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="ScheduleMapper.java"><line nr="13" mi="2" ci="0" mb="0" cb="0"/><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="15" mi="1" ci="0" mb="0" cb="0"/><line nr="19" mi="4" ci="0" mb="0" cb="0"/><line nr="20" mi="5" ci="0" mb="0" cb="0"/><line nr="21" mi="8" ci="0" mb="0" cb="0"/><line nr="22" mi="5" ci="0" mb="0" cb="0"/><line nr="24" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="30" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="AppointmentMapper.java"><line nr="15" mi="2" ci="0" mb="0" cb="0"/><line nr="16" mi="3" ci="0" mb="0" cb="0"/><line nr="17" mi="1" ci="0" mb="0" cb="0"/><line nr="21" mi="4" ci="0" mb="0" cb="0"/><line nr="23" mi="5" ci="0" mb="0" cb="0"/><line nr="24" mi="8" ci="0" mb="0" cb="0"/><line nr="25" mi="8" ci="0" mb="0" cb="0"/><line nr="26" mi="5" ci="0" mb="0" cb="0"/><line nr="27" mi="6" ci="0" mb="0" cb="0"/><line nr="28" mi="5" ci="0" mb="0" cb="0"/><line nr="30" mi="4" ci="0" mb="0" cb="0"/><line nr="32" mi="4" ci="0" mb="0" cb="0"/><line nr="33" mi="5" ci="0" mb="0" cb="0"/><line nr="34" mi="3" ci="0" mb="0" cb="0"/><line nr="36" mi="5" ci="0" mb="0" cb="0"/><line nr="37" mi="5" ci="0" mb="0" cb="0"/><line nr="39" mi="3" ci="0" mb="0" cb="0"/><line nr="41" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="78" covered="0"/><counter type="LINE" missed="18" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="SlotMapper.java"><line nr="9" mi="3" ci="0" mb="0" cb="0"/><line nr="12" mi="4" ci="0" mb="0" cb="0"/><line nr="14" mi="5" ci="0" mb="0" cb="0"/><line nr="15" mi="5" ci="0" mb="0" cb="0"/><line nr="16" mi="5" ci="0" mb="0" cb="0"/><line nr="17" mi="5" ci="0" mb="0" cb="0"/><line nr="18" mi="6" ci="0" mb="0" cb="0"/><line nr="20" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="35" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="157" covered="0"/><counter type="LINE" missed="38" covered="0"/><counter type="COMPLEXITY" missed="8" covered="0"/><counter type="METHOD" missed="8" covered="0"/><counter type="CLASS" missed="4" covered="0"/></package><package name="com/adpro/tasc/appointment/db/dao"><class name="com/adpro/tasc/appointment/db/dao/CourseDAO" sourcefilename="CourseDAO.java"/><class name="com/adpro/tasc/appointment/db/dao/AppointmentDAO" sourcefilename="AppointmentDAO.java"/><class name="com/adpro/tasc/appointment/db/dao/ScheduleDAO" sourcefilename="ScheduleDAO.java"/><sourcefile name="ScheduleDAO.java"/><sourcefile name="CourseDAO.java"/><sourcefile name="AppointmentDAO.java"/></package><package name="com/adpro/tasc/config"><class name="com/adpro/tasc/config/DBConfig" sourcefilename="DBConfig.java"><method name="&lt;init&gt;" desc="()V" line="11"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="dataSource" desc="()Ljavax/sql/DataSource;" line="26"><counter type="INSTRUCTION" missed="22" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="25" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="DBConfig.java"><line nr="11" mi="3" ci="0" mb="0" cb="0"/><line nr="26" mi="4" ci="0" mb="0" cb="0"/><line nr="27" mi="4" ci="0" mb="0" cb="0"/><line nr="28" mi="4" ci="0" mb="0" cb="0"/><line nr="29" mi="4" ci="0" mb="0" cb="0"/><line nr="30" mi="4" ci="0" mb="0" cb="0"/><line nr="32" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="25" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="25" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></package><package name="com/adpro/tasc/controller"><class name="com/adpro/tasc/controller/AddRolesController" sourcefilename="AddRolesController.java"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addRoles" desc="(Lorg/springframework/ui/Model;)Ljava/lang/String;" line="21"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="registerStudent" desc="(Lorg/springframework/ui/Model;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" line="27"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="registerTA" desc="(Lorg/springframework/ui/Model;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" line="33"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="38" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/controller/HelloController" sourcefilename="HelloController.java"><method name="&lt;init&gt;" desc="()V" line="8"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="indexPage" desc="()Ljava/lang/String;" line="13"><counter type="INSTRUCTION" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="seeAppointment" desc="()Ljava/lang/String;" line="18"><counter type="INSTRUCTION" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="homePage" desc="()Ljava/lang/String;" line="23"><counter type="INSTRUCTION" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="registerPage" desc="()Ljava/lang/String;" line="28"><counter type="INSTRUCTION" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="HelloController.java"><line nr="8" mi="3" ci="0" mb="0" cb="0"/><line nr="13" mi="2" ci="0" mb="0" cb="0"/><line nr="18" mi="2" ci="0" mb="0" cb="0"/><line nr="23" mi="2" ci="0" mb="0" cb="0"/><line nr="28" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="AddRolesController.java"><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="21" mi="7" ci="0" mb="0" cb="0"/><line nr="22" mi="2" ci="0" mb="0" cb="0"/><line nr="27" mi="11" ci="0" mb="0" cb="0"/><line nr="28" mi="2" ci="0" mb="0" cb="0"/><line nr="33" mi="11" ci="0" mb="0" cb="0"/><line nr="34" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="38" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="49" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="2" covered="0"/></package><package name="com/adpro/tasc/user/db/template"><class name="com/adpro/tasc/user/db/template/UserTemplate" sourcefilename="UserTemplate.java"><method name="&lt;init&gt;" desc="()V" line="15"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setScheduleDB" desc="(Lcom/adpro/tasc/appointment/db/dao/ScheduleDAO;)V" line="22"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setCourseDB" desc="(Lcom/adpro/tasc/appointment/db/dao/CourseDAO;)V" line="27"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setTemplate" desc="(Lorg/springframework/jdbc/core/JdbcTemplate;)V" line="32"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getUser" desc="(Ljava/lang/String;)Lcom/adpro/tasc/user/db/model/User;" line="37"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAllUser" desc="()Ljava/util/List;" line="48"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createUser" desc="(Lcom/adpro/tasc/user/db/model/User;)V" line="58"><counter type="INSTRUCTION" missed="30" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="updatePassword" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="69"><counter type="INSTRUCTION" missed="18" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="updateUser" desc="(Ljava/lang/String;Lcom/adpro/tasc/user/db/model/User;)V" line="80"><counter type="INSTRUCTION" missed="29" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="deleteUser" desc="(Ljava/lang/String;)V" line="93"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="141" covered="0"/><counter type="LINE" missed="25" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="10" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="UserTemplate.java"><line nr="15" mi="3" ci="0" mb="0" cb="0"/><line nr="22" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="1" ci="0" mb="0" cb="0"/><line nr="27" mi="3" ci="0" mb="0" cb="0"/><line nr="28" mi="1" ci="0" mb="0" cb="0"/><line nr="32" mi="3" ci="0" mb="0" cb="0"/><line nr="33" mi="1" ci="0" mb="0" cb="0"/><line nr="37" mi="2" ci="0" mb="0" cb="0"/><line nr="43" mi="19" ci="0" mb="0" cb="0"/><line nr="48" mi="2" ci="0" mb="0" cb="0"/><line nr="53" mi="12" ci="0" mb="0" cb="0"/><line nr="58" mi="2" ci="0" mb="0" cb="0"/><line nr="63" mi="10" ci="0" mb="0" cb="0"/><line nr="64" mi="17" ci="0" mb="0" cb="0"/><line nr="65" mi="1" ci="0" mb="0" cb="0"/><line nr="69" mi="2" ci="0" mb="0" cb="0"/><line nr="75" mi="15" ci="0" mb="0" cb="0"/><line nr="76" mi="1" ci="0" mb="0" cb="0"/><line nr="80" mi="2" ci="0" mb="0" cb="0"/><line nr="86" mi="10" ci="0" mb="0" cb="0"/><line nr="87" mi="16" ci="0" mb="0" cb="0"/><line nr="89" mi="1" ci="0" mb="0" cb="0"/><line nr="93" mi="2" ci="0" mb="0" cb="0"/><line nr="98" mi="11" ci="0" mb="0" cb="0"/><line nr="99" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="141" covered="0"/><counter type="LINE" missed="25" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="10" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="141" covered="0"/><counter type="LINE" missed="25" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="10" covered="0"/><counter type="CLASS" missed="1" covered="0"/></package><package name="com/adpro/tasc/user/db/mapper"><class name="com/adpro/tasc/user/db/mapper/UserMapper" sourcefilename="UserMapper.java"><method name="&lt;init&gt;" desc="(Lcom/adpro/tasc/appointment/db/dao/CourseDAO;Lcom/adpro/tasc/appointment/db/dao/ScheduleDAO;)V" line="17"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="mapRow" desc="(Ljava/sql/ResultSet;I)Lcom/adpro/tasc/user/db/model/User;" line="24"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="updateByRole" desc="(Lcom/adpro/tasc/user/db/model/User;)Lcom/adpro/tasc/user/db/model/User;" line="35"><counter type="INSTRUCTION" missed="26" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="56" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="16" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="UserMapper.java"><line nr="17" mi="2" ci="0" mb="0" cb="0"/><line nr="18" mi="3" ci="0" mb="0" cb="0"/><line nr="19" mi="3" ci="0" mb="0" cb="0"/><line nr="20" mi="1" ci="0" mb="0" cb="0"/><line nr="24" mi="4" ci="0" mb="0" cb="0"/><line nr="25" mi="3" ci="0" mb="0" cb="0"/><line nr="26" mi="3" ci="0" mb="0" cb="0"/><line nr="27" mi="3" ci="0" mb="0" cb="0"/><line nr="28" mi="4" ci="0" mb="0" cb="0"/><line nr="31" mi="4" ci="0" mb="0" cb="0"/><line nr="35" mi="5" ci="0" mb="2" cb="0"/><line nr="36" mi="5" ci="0" mb="0" cb="0"/><line nr="38" mi="6" ci="0" mb="0" cb="0"/><line nr="39" mi="6" ci="0" mb="0" cb="0"/><line nr="41" mi="2" ci="0" mb="0" cb="0"/><line nr="44" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="56" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="16" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="56" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="16" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></package><package name="com/adpro/tasc/appointment/db/template"><class name="com/adpro/tasc/appointment/db/template/AppointmentTemplate" sourcefilename="AppointmentTemplate.java"><method name="&lt;init&gt;" desc="()V" line="17"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setUserDB" desc="(Lcom/adpro/tasc/user/db/dao/UserDAO;)V" line="23"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setTemplate" desc="(Lorg/springframework/jdbc/core/JdbcTemplate;)V" line="28"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAllAppointment" desc="()Ljava/util/List;" line="33"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAppointmentByCourse" desc="(Lcom/adpro/tasc/appointment/db/model/Course;)Ljava/util/List;" line="43"><counter type="INSTRUCTION" missed="19" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAppointmentByUser" desc="(Lcom/adpro/tasc/user/db/model/User;)Ljava/util/List;" line="54"><counter type="INSTRUCTION" missed="29" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createAppointment" desc="(Lcom/adpro/tasc/appointment/db/model/AppointmentRequest;)V" line="76"><counter type="INSTRUCTION" missed="46" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="updateStatus" desc="(Lcom/adpro/tasc/appointment/db/model/AppointmentRequest;Lcom/adpro/tasc/appointment/db/model/AppointmentRequest$Status;)V" line="89"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="138" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="24" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="8" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/template/ScheduleTemplate" sourcefilename="ScheduleTemplate.java"><method name="&lt;init&gt;" desc="()V" line="17"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setUserDB" desc="(Lcom/adpro/tasc/user/db/dao/UserDAO;)V" line="23"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setTemplate" desc="(Lorg/springframework/jdbc/core/JdbcTemplate;)V" line="28"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getUserSchedule" desc="(Lcom/adpro/tasc/user/db/model/AcademicUser;)Lcom/adpro/tasc/appointment/db/model/Schedule;" line="33"><counter type="INSTRUCTION" missed="43" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addUserScheduleSlot" desc="(Lcom/adpro/tasc/appointment/db/model/Slot;)V" line="54"><counter type="INSTRUCTION" missed="34" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="deleteUserScheduleSlot" desc="(Lcom/adpro/tasc/appointment/db/model/Slot;)V" line="65"><counter type="INSTRUCTION" missed="16" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="104" covered="0"/><counter type="LINE" missed="18" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="6" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/template/CourseTemplate" sourcefilename="CourseTemplate.java"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setTemplate" desc="(Lorg/springframework/jdbc/core/JdbcTemplate;)V" line="19"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getUserCourseList" desc="(Lcom/adpro/tasc/user/db/model/AcademicUser;)Ljava/util/List;" line="24"><counter type="INSTRUCTION" missed="17" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addUserCourse" desc="(Lcom/adpro/tasc/user/db/model/AcademicUser;Lcom/adpro/tasc/appointment/db/model/Course;)V" line="35"><counter type="INSTRUCTION" missed="20" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="deleteUserCourse" desc="(Lcom/adpro/tasc/user/db/model/AcademicUser;Lcom/adpro/tasc/appointment/db/model/Course;)V" line="45"><counter type="INSTRUCTION" missed="20" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAllCourse" desc="()Ljava/util/List;" line="55"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="updateCourse" desc="(Ljava/lang/String;Lcom/adpro/tasc/appointment/db/model/Course;)V" line="65"><counter type="INSTRUCTION" missed="19" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="deleteCourse" desc="(Lcom/adpro/tasc/appointment/db/model/Course;)V" line="76"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="108" covered="0"/><counter type="LINE" missed="19" covered="0"/><counter type="COMPLEXITY" missed="8" covered="0"/><counter type="METHOD" missed="8" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="CourseTemplate.java"><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="19" mi="3" ci="0" mb="0" cb="0"/><line nr="20" mi="1" ci="0" mb="0" cb="0"/><line nr="24" mi="2" ci="0" mb="0" cb="0"/><line nr="30" mi="15" ci="0" mb="0" cb="0"/><line nr="35" mi="2" ci="0" mb="0" cb="0"/><line nr="40" mi="17" ci="0" mb="0" cb="0"/><line nr="41" mi="1" ci="0" mb="0" cb="0"/><line nr="45" mi="2" ci="0" mb="0" cb="0"/><line nr="50" mi="17" ci="0" mb="0" cb="0"/><line nr="51" mi="1" ci="0" mb="0" cb="0"/><line nr="55" mi="2" ci="0" mb="0" cb="0"/><line nr="60" mi="8" ci="0" mb="0" cb="0"/><line nr="65" mi="2" ci="0" mb="0" cb="0"/><line nr="71" mi="16" ci="0" mb="0" cb="0"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="76" mi="2" ci="0" mb="0" cb="0"/><line nr="81" mi="12" ci="0" mb="0" cb="0"/><line nr="82" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="108" covered="0"/><counter type="LINE" missed="19" covered="0"/><counter type="COMPLEXITY" missed="8" covered="0"/><counter type="METHOD" missed="8" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="AppointmentTemplate.java"><line nr="17" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="1" ci="0" mb="0" cb="0"/><line nr="28" mi="3" ci="0" mb="0" cb="0"/><line nr="29" mi="1" ci="0" mb="0" cb="0"/><line nr="33" mi="2" ci="0" mb="0" cb="0"/><line nr="38" mi="10" ci="0" mb="0" cb="0"/><line nr="43" mi="2" ci="0" mb="0" cb="0"/><line nr="49" mi="17" ci="0" mb="0" cb="0"/><line nr="54" mi="2" ci="0" mb="0" cb="0"/><line nr="60" mi="10" ci="0" mb="0" cb="0"/><line nr="61" mi="3" ci="0" mb="2" cb="0"/><line nr="62" mi="2" ci="0" mb="0" cb="0"/><line nr="68" mi="10" ci="0" mb="0" cb="0"/><line nr="71" mi="2" ci="0" mb="0" cb="0"/><line nr="76" mi="2" ci="0" mb="0" cb="0"/><line nr="81" mi="3" ci="0" mb="0" cb="0"/><line nr="82" mi="10" ci="0" mb="0" cb="0"/><line nr="83" mi="16" ci="0" mb="0" cb="0"/><line nr="84" mi="14" ci="0" mb="0" cb="0"/><line nr="85" mi="1" ci="0" mb="0" cb="0"/><line nr="89" mi="2" ci="0" mb="0" cb="0"/><line nr="95" mi="18" ci="0" mb="0" cb="0"/><line nr="96" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="138" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="24" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="8" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="ScheduleTemplate.java"><line nr="17" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="1" ci="0" mb="0" cb="0"/><line nr="28" mi="3" ci="0" mb="0" cb="0"/><line nr="29" mi="1" ci="0" mb="0" cb="0"/><line nr="33" mi="2" ci="0" mb="0" cb="0"/><line nr="39" mi="18" ci="0" mb="0" cb="0"/><line nr="41" mi="2" ci="0" mb="0" cb="0"/><line nr="46" mi="16" ci="0" mb="0" cb="0"/><line nr="47" mi="3" ci="0" mb="0" cb="0"/><line nr="49" mi="2" ci="0" mb="0" cb="0"/><line nr="54" mi="2" ci="0" mb="0" cb="0"/><line nr="59" mi="10" ci="0" mb="0" cb="0"/><line nr="60" mi="21" ci="0" mb="0" cb="0"/><line nr="61" mi="1" ci="0" mb="0" cb="0"/><line nr="65" mi="2" ci="0" mb="0" cb="0"/><line nr="70" mi="13" ci="0" mb="0" cb="0"/><line nr="71" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="104" covered="0"/><counter type="LINE" missed="18" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="6" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="350" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="61" covered="0"/><counter type="COMPLEXITY" missed="23" covered="0"/><counter type="METHOD" missed="22" covered="0"/><counter type="CLASS" missed="3" covered="0"/></package><package name="com/adpro/tasc/appointment/db/model"><class name="com/adpro/tasc/appointment/db/model/AppointmentRequest$Status" sourcefilename="AppointmentRequest.java"><method name="&lt;clinit&gt;" desc="()V" line="12"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/model/Course" sourcefilename="Course.java"><method name="getName" desc="()Ljava/lang/String;" line="11"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setName" desc="(Ljava/lang/String;)V" line="8"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="()V" line="9"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="7"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/adpro/tasc/appointment/db/model/Schedule" sourcefilename="Schedule.java"><method name="getId" desc="()I" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getUser" desc="()Lcom/adpro/tasc/user/db/model/User;" line="15"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAvailableSlots" desc="()Ljava/util/List;" line="16"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isAdminHasPermission" desc="()Z" line="17"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setId" desc="(I)V" line="11"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setUser" desc="(Lcom/adpro/tasc/user/db/model/User;)V" line="11"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setAvailableSlots" desc="(Ljava/util/List;)V" line="11"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setAdminHasPermission" desc="(Z)V" line="11"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="()V" line="12"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="31" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/model/Slot$Day" sourcefilename="Slot.java"><method name="&lt;clinit&gt;" desc="()V" line="11"><counter type="INSTRUCTION" missed="45" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="45" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/model/Slot" sourcefilename="Slot.java"><method name="getId" desc="()I" line="21"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getSchedule" desc="()I" line="22"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getStartTime" desc="()J" line="23"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getFinishTime" desc="()J" line="24"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getDay" desc="()Lcom/adpro/tasc/appointment/db/model/Slot$Day;" line="25"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setId" desc="(I)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setSchedule" desc="(I)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setStartTime" desc="(J)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setFinishTime" desc="(J)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setDay" desc="(Lcom/adpro/tasc/appointment/db/model/Slot$Day;)V" line="8"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="()V" line="9"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="38" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="11" covered="0"/><counter type="METHOD" missed="11" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/model/AppointmentRequest" sourcefilename="AppointmentRequest.java"><method name="getId" desc="()I" line="18"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAppointment" desc="()Lcom/adpro/tasc/appointment/db/model/Appointment;" line="19"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getStudent" desc="()Lcom/adpro/tasc/user/db/model/User;" line="20"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getTa" desc="()Lcom/adpro/tasc/user/db/model/User;" line="21"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getRequestTime" desc="()J" line="22"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getStatus" desc="()Lcom/adpro/tasc/appointment/db/model/AppointmentRequest$Status;" line="23"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isAdminHasPermission" desc="()Z" line="24"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setId" desc="(I)V" line="9"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setAppointment" desc="(Lcom/adpro/tasc/appointment/db/model/Appointment;)V" line="9"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setStudent" desc="(Lcom/adpro/tasc/user/db/model/User;)V" line="9"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setTa" desc="(Lcom/adpro/tasc/user/db/model/User;)V" line="9"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setRequestTime" desc="(J)V" line="9"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setStatus" desc="(Lcom/adpro/tasc/appointment/db/model/AppointmentRequest$Status;)V" line="9"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setAdminHasPermission" desc="(Z)V" line="9"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="()V" line="10"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="52" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="15" covered="0"/><counter type="METHOD" missed="15" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/adpro/tasc/appointment/db/model/Appointment" sourcefilename="Appointment.java"><method name="getDate" desc="()J" line="11"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getDuration" desc="()J" line="12"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCourse" desc="()Lcom/adpro/tasc/appointment/db/model/Course;" line="13"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setDate" desc="(J)V" line="8"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setDuration" desc="(J)V" line="8"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setCourse" desc="(Lcom/adpro/tasc/appointment/db/model/Course;)V" line="8"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="()V" line="9"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Schedule.java"><line nr="11" mi="16" ci="0" mb="0" cb="0"/><line nr="12" mi="3" ci="0" mb="0" cb="0"/><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="15" mi="3" ci="0" mb="0" cb="0"/><line nr="16" mi="3" ci="0" mb="0" cb="0"/><line nr="17" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="31" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="Course.java"><line nr="8" mi="0" ci="4" mb="0" cb="0"/><line nr="9" mi="0" ci="3" mb="0" cb="0"/><line nr="11" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="7"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="AppointmentRequest.java"><line nr="9" mi="28" ci="0" mb="0" cb="0"/><line nr="10" mi="3" ci="0" mb="0" cb="0"/><line nr="12" mi="3" ci="0" mb="0" cb="0"/><line nr="13" mi="6" ci="0" mb="0" cb="0"/><line nr="14" mi="6" ci="0" mb="0" cb="0"/><line nr="15" mi="6" ci="0" mb="0" cb="0"/><line nr="18" mi="3" ci="0" mb="0" cb="0"/><line nr="19" mi="3" ci="0" mb="0" cb="0"/><line nr="20" mi="3" ci="0" mb="0" cb="0"/><line nr="21" mi="3" ci="0" mb="0" cb="0"/><line nr="22" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="73" covered="0"/><counter type="LINE" missed="13" covered="0"/><counter type="COMPLEXITY" missed="16" covered="0"/><counter type="METHOD" missed="16" covered="0"/><counter type="CLASS" missed="2" covered="0"/></sourcefile><sourcefile name="Appointment.java"><line nr="8" mi="0" ci="12" mb="0" cb="0"/><line nr="9" mi="0" ci="3" mb="0" cb="0"/><line nr="11" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="3" mb="0" cb="0"/><line nr="13" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="Slot.java"><line nr="8" mi="20" ci="0" mb="0" cb="0"/><line nr="9" mi="3" ci="0" mb="0" cb="0"/><line nr="11" mi="3" ci="0" mb="0" cb="0"/><line nr="12" mi="6" ci="0" mb="0" cb="0"/><line nr="13" mi="6" ci="0" mb="0" cb="0"/><line nr="14" mi="6" ci="0" mb="0" cb="0"/><line nr="15" mi="6" ci="0" mb="0" cb="0"/><line nr="16" mi="6" ci="0" mb="0" cb="0"/><line nr="17" mi="6" ci="0" mb="0" cb="0"/><line nr="18" mi="6" ci="0" mb="0" cb="0"/><line nr="21" mi="3" ci="0" mb="0" cb="0"/><line nr="22" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="3" ci="0" mb="0" cb="0"/><line nr="25" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="83" covered="0"/><counter type="LINE" missed="15" covered="0"/><counter type="COMPLEXITY" missed="12" covered="0"/><counter type="METHOD" missed="12" covered="0"/><counter type="CLASS" missed="2" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="190" covered="31"/><counter type="LINE" missed="35" covered="7"/><counter type="COMPLEXITY" missed="38" covered="9"/><counter type="METHOD" missed="38" covered="9"/><counter type="CLASS" missed="5" covered="2"/></package><counter type="INSTRUCTION" missed="1085" covered="31"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="219" covered="7"/><counter type="COMPLEXITY" missed="116" covered="9"/><counter type="METHOD" missed="111" covered="9"/><counter type="CLASS" missed="21" covered="2"/></report>
\ No newline at end of file
diff --git a/build/reports/tests/test/classes/com.adpro.tasc.appointment.db.AppointmentTest.html b/build/reports/tests/test/classes/com.adpro.tasc.appointment.db.AppointmentTest.html
new file mode 100644
index 0000000..f6c3db5
--- /dev/null
+++ b/build/reports/tests/test/classes/com.adpro.tasc.appointment.db.AppointmentTest.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - AppointmentTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>AppointmentTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/com.adpro.tasc.appointment.db.html">com.adpro.tasc.appointment.db</a> &gt; AppointmentTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">1</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.039s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testAppointmentExists()</td>
+<td class="success">0.039s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 6.8</a> at May 23, 2021, 4:08:47 PM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/css/base-style.css b/build/reports/tests/test/css/base-style.css
new file mode 100644
index 0000000..4afa73e
--- /dev/null
+++ b/build/reports/tests/test/css/base-style.css
@@ -0,0 +1,179 @@
+
+body {
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+    font-size: 12pt;
+}
+
+body, a, a:visited {
+    color: #303030;
+}
+
+#content {
+    padding-left: 50px;
+    padding-right: 50px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+}
+
+#content h1 {
+    font-size: 160%;
+    margin-bottom: 10px;
+}
+
+#footer {
+    margin-top: 100px;
+    font-size: 80%;
+    white-space: nowrap;
+}
+
+#footer, #footer a {
+    color: #a0a0a0;
+}
+
+#line-wrapping-toggle {
+    vertical-align: middle;
+}
+
+#label-for-line-wrapping-toggle {
+    vertical-align: middle;
+}
+
+ul {
+    margin-left: 0;
+}
+
+h1, h2, h3 {
+    white-space: nowrap;
+}
+
+h2 {
+    font-size: 120%;
+}
+
+ul.tabLinks {
+    padding-left: 0;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    overflow: auto;
+    min-width: 800px;
+    width: auto !important;
+    width: 800px;
+}
+
+ul.tabLinks li {
+    float: left;
+    height: 100%;
+    list-style: none;
+    padding-left: 10px;
+    padding-right: 10px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    margin-bottom: 0;
+    -moz-border-radius: 7px;
+    border-radius: 7px;
+    margin-right: 25px;
+    border: solid 1px #d4d4d4;
+    background-color: #f0f0f0;
+}
+
+ul.tabLinks li:hover {
+    background-color: #fafafa;
+}
+
+ul.tabLinks li.selected {
+    background-color: #c5f0f5;
+    border-color: #c5f0f5;
+}
+
+ul.tabLinks a {
+    font-size: 120%;
+    display: block;
+    outline: none;
+    text-decoration: none;
+    margin: 0;
+    padding: 0;
+}
+
+ul.tabLinks li h2 {
+    margin: 0;
+    padding: 0;
+}
+
+div.tab {
+}
+
+div.selected {
+    display: block;
+}
+
+div.deselected {
+    display: none;
+}
+
+div.tab table {
+    min-width: 350px;
+    width: auto !important;
+    width: 350px;
+    border-collapse: collapse;
+}
+
+div.tab th, div.tab table {
+    border-bottom: solid #d0d0d0 1px;
+}
+
+div.tab th {
+    text-align: left;
+    white-space: nowrap;
+    padding-left: 6em;
+}
+
+div.tab th:first-child {
+    padding-left: 0;
+}
+
+div.tab td {
+    white-space: nowrap;
+    padding-left: 6em;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+div.tab td:first-child {
+    padding-left: 0;
+}
+
+div.tab td.numeric, div.tab th.numeric {
+    text-align: right;
+}
+
+span.code {
+    display: inline-block;
+    margin-top: 0em;
+    margin-bottom: 1em;
+}
+
+span.code pre {
+    font-size: 11pt;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    padding-left: 10px;
+    padding-right: 10px;
+    margin: 0;
+    background-color: #f7f7f7;
+    border: solid 1px #d0d0d0;
+    min-width: 700px;
+    width: auto !important;
+    width: 700px;
+}
+
+span.wrapped pre {
+    word-wrap: break-word;
+    white-space: pre-wrap;
+    word-break: break-all;
+}
+
+label.hidden {
+    display: none;
+}
\ No newline at end of file
diff --git a/build/reports/tests/test/css/style.css b/build/reports/tests/test/css/style.css
new file mode 100644
index 0000000..3dc4913
--- /dev/null
+++ b/build/reports/tests/test/css/style.css
@@ -0,0 +1,84 @@
+
+#summary {
+    margin-top: 30px;
+    margin-bottom: 40px;
+}
+
+#summary table {
+    border-collapse: collapse;
+}
+
+#summary td {
+    vertical-align: top;
+}
+
+.breadcrumbs, .breadcrumbs a {
+    color: #606060;
+}
+
+.infoBox {
+    width: 110px;
+    padding-top: 15px;
+    padding-bottom: 15px;
+    text-align: center;
+}
+
+.infoBox p {
+    margin: 0;
+}
+
+.counter, .percent {
+    font-size: 120%;
+    font-weight: bold;
+    margin-bottom: 8px;
+}
+
+#duration {
+    width: 125px;
+}
+
+#successRate, .summaryGroup {
+    border: solid 2px #d0d0d0;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+}
+
+#successRate {
+    width: 140px;
+    margin-left: 35px;
+}
+
+#successRate .percent {
+    font-size: 180%;
+}
+
+.success, .success a {
+    color: #008000;
+}
+
+div.success, #successRate.success {
+    background-color: #bbd9bb;
+    border-color: #008000;
+}
+
+.failures, .failures a {
+    color: #b60808;
+}
+
+.skipped, .skipped a {
+    color: #c09853;
+}
+
+div.failures, #successRate.failures {
+    background-color: #ecdada;
+    border-color: #b60808;
+}
+
+ul.linkList {
+    padding-left: 0;
+}
+
+ul.linkList li {
+    list-style: none;
+    margin-bottom: 5px;
+}
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
new file mode 100644
index 0000000..1e4a67e
--- /dev/null
+++ b/build/reports/tests/test/index.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Test Summary</title>
+<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="css/style.css" rel="stylesheet" type="text/css"/>
+<script src="js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Test Summary</h1>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">1</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.039s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Packages</a>
+</li>
+<li>
+<a href="#tab1">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Packages</h2>
+<table>
+<thead>
+<tr>
+<th>Package</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="success">
+<a href="packages/com.adpro.tasc.appointment.db.html">com.adpro.tasc.appointment.db</a>
+</td>
+<td>1</td>
+<td>0</td>
+<td>0</td>
+<td>0.039s</td>
+<td class="success">100%</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="tab1" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="success">
+<a href="classes/com.adpro.tasc.appointment.db.AppointmentTest.html">com.adpro.tasc.appointment.db.AppointmentTest</a>
+</td>
+<td>1</td>
+<td>0</td>
+<td>0</td>
+<td>0.039s</td>
+<td class="success">100%</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 6.8</a> at May 23, 2021, 4:08:47 PM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/js/report.js b/build/reports/tests/test/js/report.js
new file mode 100644
index 0000000..83bab4a
--- /dev/null
+++ b/build/reports/tests/test/js/report.js
@@ -0,0 +1,194 @@
+(function (window, document) {
+    "use strict";
+
+    var tabs = {};
+
+    function changeElementClass(element, classValue) {
+        if (element.getAttribute("className")) {
+            element.setAttribute("className", classValue);
+        } else {
+            element.setAttribute("class", classValue);
+        }
+    }
+
+    function getClassAttribute(element) {
+        if (element.getAttribute("className")) {
+            return element.getAttribute("className");
+        } else {
+            return element.getAttribute("class");
+        }
+    }
+
+    function addClass(element, classValue) {
+        changeElementClass(element, getClassAttribute(element) + " " + classValue);
+    }
+
+    function removeClass(element, classValue) {
+        changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
+    }
+
+    function initTabs() {
+        var container = document.getElementById("tabs");
+
+        tabs.tabs = findTabs(container);
+        tabs.titles = findTitles(tabs.tabs);
+        tabs.headers = findHeaders(container);
+        tabs.select = select;
+        tabs.deselectAll = deselectAll;
+        tabs.select(0);
+
+        return true;
+    }
+
+    function getCheckBox() {
+        return document.getElementById("line-wrapping-toggle");
+    }
+
+    function getLabelForCheckBox() {
+        return document.getElementById("label-for-line-wrapping-toggle");
+    }
+
+    function findCodeBlocks() {
+        var spans = document.getElementById("tabs").getElementsByTagName("span");
+        var codeBlocks = [];
+        for (var i = 0; i < spans.length; ++i) {
+            if (spans[i].className.indexOf("code") >= 0) {
+                codeBlocks.push(spans[i]);
+            }
+        }
+        return codeBlocks;
+    }
+
+    function forAllCodeBlocks(operation) {
+        var codeBlocks = findCodeBlocks();
+
+        for (var i = 0; i < codeBlocks.length; ++i) {
+            operation(codeBlocks[i], "wrapped");
+        }
+    }
+
+    function toggleLineWrapping() {
+        var checkBox = getCheckBox();
+
+        if (checkBox.checked) {
+            forAllCodeBlocks(addClass);
+        } else {
+            forAllCodeBlocks(removeClass);
+        }
+    }
+
+    function initControls() {
+        if (findCodeBlocks().length > 0) {
+            var checkBox = getCheckBox();
+            var label = getLabelForCheckBox();
+
+            checkBox.onclick = toggleLineWrapping;
+            checkBox.checked = false;
+
+            removeClass(label, "hidden");
+         }
+    }
+
+    function switchTab() {
+        var id = this.id.substr(1);
+
+        for (var i = 0; i < tabs.tabs.length; i++) {
+            if (tabs.tabs[i].id === id) {
+                tabs.select(i);
+                break;
+            }
+        }
+
+        return false;
+    }
+
+    function select(i) {
+        this.deselectAll();
+
+        changeElementClass(this.tabs[i], "tab selected");
+        changeElementClass(this.headers[i], "selected");
+
+        while (this.headers[i].firstChild) {
+            this.headers[i].removeChild(this.headers[i].firstChild);
+        }
+
+        var h2 = document.createElement("H2");
+
+        h2.appendChild(document.createTextNode(this.titles[i]));
+        this.headers[i].appendChild(h2);
+    }
+
+    function deselectAll() {
+        for (var i = 0; i < this.tabs.length; i++) {
+            changeElementClass(this.tabs[i], "tab deselected");
+            changeElementClass(this.headers[i], "deselected");
+
+            while (this.headers[i].firstChild) {
+                this.headers[i].removeChild(this.headers[i].firstChild);
+            }
+
+            var a = document.createElement("A");
+
+            a.setAttribute("id", "ltab" + i);
+            a.setAttribute("href", "#tab" + i);
+            a.onclick = switchTab;
+            a.appendChild(document.createTextNode(this.titles[i]));
+
+            this.headers[i].appendChild(a);
+        }
+    }
+
+    function findTabs(container) {
+        return findChildElements(container, "DIV", "tab");
+    }
+
+    function findHeaders(container) {
+        var owner = findChildElements(container, "UL", "tabLinks");
+        return findChildElements(owner[0], "LI", null);
+    }
+
+    function findTitles(tabs) {
+        var titles = [];
+
+        for (var i = 0; i < tabs.length; i++) {
+            var tab = tabs[i];
+            var header = findChildElements(tab, "H2", null)[0];
+
+            header.parentNode.removeChild(header);
+
+            if (header.innerText) {
+                titles.push(header.innerText);
+            } else {
+                titles.push(header.textContent);
+            }
+        }
+
+        return titles;
+    }
+
+    function findChildElements(container, name, targetClass) {
+        var elements = [];
+        var children = container.childNodes;
+
+        for (var i = 0; i < children.length; i++) {
+            var child = children.item(i);
+
+            if (child.nodeType === 1 && child.nodeName === name) {
+                if (targetClass && child.className.indexOf(targetClass) < 0) {
+                    continue;
+                }
+
+                elements.push(child);
+            }
+        }
+
+        return elements;
+    }
+
+    // Entry point.
+
+    window.onload = function() {
+        initTabs();
+        initControls();
+    };
+} (window, window.document));
\ No newline at end of file
diff --git a/build/reports/tests/test/packages/com.adpro.tasc.appointment.db.html b/build/reports/tests/test/packages/com.adpro.tasc.appointment.db.html
new file mode 100644
index 0000000..625a6f9
--- /dev/null
+++ b/build/reports/tests/test/packages/com.adpro.tasc.appointment.db.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Package com.adpro.tasc.appointment.db</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package com.adpro.tasc.appointment.db</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; com.adpro.tasc.appointment.db</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">1</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.039s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Classes</h2>
+<table>
+<thread>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thread>
+<tr>
+<td class="success">
+<a href="../classes/com.adpro.tasc.appointment.db.AppointmentTest.html">AppointmentTest</a>
+</td>
+<td>1</td>
+<td>0</td>
+<td>0</td>
+<td>0.039s</td>
+<td class="success">100%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 6.8</a> at May 23, 2021, 4:08:47 PM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/resources/main/application.properties b/build/resources/main/application.properties
index cd84a22..7c1305b 100644
--- a/build/resources/main/application.properties
+++ b/build/resources/main/application.properties
@@ -1,6 +1,6 @@
 spring.datasource.url=jdbc:postgresql://localhost:5432/tasc
-spring.datasource.username=alifyandra
-spring.datasource.password=chungalip01
+spring.datasource.username=postgres
+spring.datasource.password=admin
 spring.datasource.currentSchema=tasc
 
 logging.level.root=info
\ No newline at end of file
diff --git a/build/resources/main/log4j2.xml b/build/resources/main/log4j2.xml
new file mode 100644
index 0000000..b3c893a
--- /dev/null
+++ b/build/resources/main/log4j2.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="LogToConsole" target="SYSTEM_OUT">
+            <Filters>
+                <LevelRangeFilter minLevel="FATAL" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
+            </Filters>
+            <PatternLayout pattern="%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %style{%c{1.}}{bright,yellow}: %msg%n%throwable"/>
+        </Console>
+
+        <RollingFile name="LogGenericErrorsToFile" fileName="./logs/${date:MM-yyyy}/errors/error.log"
+                     filePattern="./logs/${date:MM-yyyy}/errors/error-%d{MM-yyyy}-%i.log.gz">
+            <Filters>
+                <LevelRangeFilter minLevel="FATAL" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
+            </Filters>
+            <PatternLayout pattern="%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %style{%c{1.}}{bright,yellow}: %msg%n%throwable"/>
+
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="25MB"/>
+            </Policies>
+        </RollingFile>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.adpro.tasc" additivity="false">
+            <AppenderRef ref="LogToConsole"/>
+            <AppenderRef ref="LogErrorsToFile"/>
+        </Logger>
+        <Logger name="org.springframework" additivity="false">
+            <AppenderRef ref="LogToConsole"/>
+        </Logger>
+        <Root level="all">
+            <AppenderRef ref="LogToConsole"/>
+            <AppenderRef ref="LogErrorsToFile"/>
+        </Root>
+    </Loggers>
+</Configuration>
diff --git a/build/resources/main/templates/SeeAppointment.html b/build/resources/main/templates/SeeAppointment.html
new file mode 100644
index 0000000..8dd222c
--- /dev/null
+++ b/build/resources/main/templates/SeeAppointment.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>See Appointment</title>
+</head>
+<body>
+<h1>See Appointment</h1>
+<table>
+    <thead>
+        <th> Name </th>
+        <th> Class </th>
+        <th> Date </th>
+    </thead>
+    <tbody>
+        <td>1</td>
+        <td>2</td>
+        <td>3</td>
+    </tbody>
+</table>
+<br>
+<form action="home">
+    <button type="submit">Return</button>
+</form>
+</body>
+</html>
\ No newline at end of file
diff --git a/build/resources/main/templates/add_roles.html b/build/resources/main/templates/add_roles.html
new file mode 100644
index 0000000..6c5e50e
--- /dev/null
+++ b/build/resources/main/templates/add_roles.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml">
+    <head>
+        <meta charset="UTF-8">
+        <title>Add Roles</title>
+
+        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+        <!-- Bootstrap -->
+        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
+        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous"></script>
+        <!-- Datatables CDN-->
+        <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.24/css/jquery.dataTables.css">
+        <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.24/js/jquery.dataTables.js"></script>
+
+    </head>
+
+    <body>
+
+    <h3>Add Roles to User</h3>
+
+    <div sec:authorize="!isAuthenticated()">
+        <a href="/index"> Login </a>
+    </div>
+
+    <div sec:authorize="hasRole('ROLE_ADMIN')">
+
+        <table id="userList" class="table table-striped" style="width:100%">
+            <thead>
+            <tr>
+                <th>User</th>
+                <th>Full Name</th>
+                <th>Role</th>
+                <th>Select Role</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr th:each="user, index :${userList}">
+                <td th:text="${user.userName}"> </td>
+                <td th:text="${user.fullName}"></td>
+                <td th:text="${user.role}"></td>
+                <!-- Assign role button here-->
+                <td>
+                    <form th:action="@{/add-roles/student}" th:object="${user}" method="post">
+                        <input id = "index" name = "index" type = "hidden" th:value = "${index.index}"/>
+                        <input id = "userName" name = "userName" type = "hidden" th:value = "${user.userName}"/>
+                        <input id = "fullName" name = "fullName" type = "hidden" th:value = "${user.fullName}"/>
+                        <input id = "password" name = "password" type = "hidden" th:value = "${user.password}"/>
+                        <button type="submit" class="btn btn-outline-dark" value="STUDENT">Student</button>
+                    </form>
+                    <form th:action="@{/add-roles/ta}" th:object="${user}" method="post">
+                        <input id = "indexTA" name = "indexTA" type = "hidden" th:value = "${index.index}"/>
+                        <input id = "userNameTA" name = "userNameTA" type = "hidden" th:value = "${user.userName}"/>
+                        <input id = "fullNameTA" name = "fullNameTA" type = "hidden" th:value = "${user.fullName}"/>
+                        <input id = "passwordTA" name = "passwordTA" type = "hidden" th:value = "${user.password}"/>
+                    <button type="submit" class="btn btn-outline-dark" value="TEACHING_ASSISTANT">Teaching Assistant</button>
+                    </form>
+                </td>
+            </tr>
+            </tbody>
+        </table>
+    </div>
+
+
+
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
+
+    </body>
+
+</html>
\ No newline at end of file
diff --git a/build/resources/main/templates/home.html b/build/resources/main/templates/home.html
new file mode 100644
index 0000000..cd7eecc
--- /dev/null
+++ b/build/resources/main/templates/home.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Home</title>
+</head>
+<body>
+<h1>Roles</h1>
+<form action="see">
+    <p><input type="submit" value="Set Roles" ></p>
+</form>
+<h1>See Available Appointment</h1>
+<form action="see">
+    <p><input type="submit" value="See Appointment" ></p>
+</form>
+<h3>Logout</h3>
+<form action="/">
+    <p><input type="submit" value="Logout" ></p>
+</form>
+</body>
+</html>
\ No newline at end of file
diff --git a/build/resources/main/templates/index.html b/build/resources/main/templates/index.html
new file mode 100644
index 0000000..8f7519c
--- /dev/null
+++ b/build/resources/main/templates/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>TASC</title>
+</head>
+<body>
+<h1>Welcome to TASC</h1>
+<form action="home">
+    <p>Username: <input type="text"></p>
+    <p>Password: <input type="text"></p>
+    <p><input type="submit" value="Login" ></p>
+</form>
+<form action="register">
+    <p><input type="submit" value="Register" ></p>
+</form>
+</body>
+</html>
\ No newline at end of file
diff --git a/build/resources/main/templates/register.html b/build/resources/main/templates/register.html
new file mode 100644
index 0000000..ce2cda7
--- /dev/null
+++ b/build/resources/main/templates/register.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Register</title>
+</head>
+<body>
+<h1>Register</h1>
+<form action="home">
+    <p>Username: <input type="text"></p>
+    <p>Password: <input type="text"></p>
+    <p>Retype Password: <input type="text"></p>
+    <p><input type="submit" value="Submit" ></p>
+</form>
+</body>
+</html>
\ No newline at end of file
diff --git a/build/test-results/test/TEST-com.adpro.tasc.appointment.db.AppointmentTest.xml b/build/test-results/test/TEST-com.adpro.tasc.appointment.db.AppointmentTest.xml
new file mode 100644
index 0000000..ecbe0d7
--- /dev/null
+++ b/build/test-results/test/TEST-com.adpro.tasc.appointment.db.AppointmentTest.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="com.adpro.tasc.appointment.db.AppointmentTest" tests="1" skipped="0" failures="0" errors="0" timestamp="2021-05-23T09:08:46" hostname="LAPTOP-Q0NSB7L4" time="0.039">
+  <properties/>
+  <testcase name="testAppointmentExists()" classname="com.adpro.tasc.appointment.db.AppointmentTest" time="0.039"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin
new file mode 100644
index 0000000..e69de29
diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
literal 1
IcmZPo000310RR91

literal 0
HcmV?d00001

diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
new file mode 100644
index 0000000000000000000000000000000000000000..65d7308b487c8de96584c6f5e8a7c59fc8cd54ff
GIT binary patch
literal 134
zcmZQ(WLlS;pR1RcQc#qySCUwqte03&ke``XlAD@WqL-4S=ZN5jq!yP<K;ttoFjmf}
geiF~fIHM%BxCBYowIZ{)q*y}}mpFquRBsyt07<VhUH||9

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/source-classes-mapping.txt b/build/tmp/compileJava/source-classes-mapping.txt
index 56466d6..c723501 100644
--- a/build/tmp/compileJava/source-classes-mapping.txt
+++ b/build/tmp/compileJava/source-classes-mapping.txt
@@ -1,44 +1,19 @@
-com/adpro/tasc/appointment/db/model/Course.java
- com.adpro.tasc.appointment.db.model.Course
 com/adpro/tasc/user/db/model/AcademicUser.java
  com.adpro.tasc.user.db.model.AcademicUser
-com/adpro/tasc/appointment/db/mapper/SlotMapper.java
- com.adpro.tasc.appointment.db.mapper.SlotMapper
+com/adpro/tasc/appointment/db/template/ScheduleTemplate.java
+ com.adpro.tasc.appointment.db.template.ScheduleTemplate
 com/adpro/tasc/user/db/model/User.java
  com.adpro.tasc.user.db.model.User
-com/adpro/tasc/appointment/db/template/AppointmentTemplate.java
- com.adpro.tasc.appointment.db.template.AppointmentTemplate
-com/adpro/tasc/user/db/model/Role.java
- com.adpro.tasc.user.db.model.Role
- com.adpro.tasc.user.db.model.Role$1
 com/adpro/tasc/appointment/db/mapper/CourseMapper.java
  com.adpro.tasc.appointment.db.mapper.CourseMapper
-com/adpro/tasc/user/db/template/UserTemplate.java
- com.adpro.tasc.user.db.template.UserTemplate
-com/adpro/tasc/user/db/mapper/UserMapper.java
- com.adpro.tasc.user.db.mapper.UserMapper
 com/adpro/tasc/controller/HelloController.java
  com.adpro.tasc.controller.HelloController
-com/adpro/tasc/appointment/db/dao/AppointmentDAO.java
- com.adpro.tasc.appointment.db.dao.AppointmentDAO
-com/adpro/tasc/appointment/db/dao/ScheduleDAO.java
- com.adpro.tasc.appointment.db.dao.ScheduleDAO
 com/adpro/tasc/appointment/db/model/Schedule.java
  com.adpro.tasc.appointment.db.model.Schedule
-com/adpro/tasc/appointment/db/model/AppointmentRequest.java
- com.adpro.tasc.appointment.db.model.AppointmentRequest
- com.adpro.tasc.appointment.db.model.AppointmentRequest$Status
-com/adpro/tasc/user/db/dao/UserDAO.java
- com.adpro.tasc.user.db.dao.UserDAO
+com/adpro/tasc/appointment/db/dao/ScheduleDAO.java
+ com.adpro.tasc.appointment.db.dao.ScheduleDAO
 com/adpro/tasc/appointment/db/template/CourseTemplate.java
  com.adpro.tasc.appointment.db.template.CourseTemplate
-com/adpro/tasc/appointment/db/model/Appointment.java
- com.adpro.tasc.appointment.db.model.Appointment
-com/adpro/tasc/appointment/db/template/ScheduleTemplate.java
- com.adpro.tasc.appointment.db.template.ScheduleTemplate
-com/adpro/tasc/appointment/db/model/Slot.java
- com.adpro.tasc.appointment.db.model.Slot
- com.adpro.tasc.appointment.db.model.Slot$Day
 com/adpro/tasc/appointment/db/dao/CourseDAO.java
  com.adpro.tasc.appointment.db.dao.CourseDAO
 com/adpro/tasc/TASCApp.java
@@ -49,3 +24,32 @@ com/adpro/tasc/appointment/db/mapper/ScheduleMapper.java
  com.adpro.tasc.appointment.db.mapper.ScheduleMapper
 com/adpro/tasc/appointment/db/mapper/AppointmentMapper.java
  com.adpro.tasc.appointment.db.mapper.AppointmentMapper
+com/adpro/tasc/appointment/db/model/Course.java
+ com.adpro.tasc.appointment.db.model.Course
+com/adpro/tasc/appointment/db/mapper/SlotMapper.java
+ com.adpro.tasc.appointment.db.mapper.SlotMapper
+com/adpro/tasc/appointment/db/template/AppointmentTemplate.java
+ com.adpro.tasc.appointment.db.template.AppointmentTemplate
+com/adpro/tasc/user/db/model/Role.java
+ com.adpro.tasc.user.db.model.Role
+ com.adpro.tasc.user.db.model.Role$1
+com/adpro/tasc/user/db/mapper/UserMapper.java
+ com.adpro.tasc.user.db.mapper.UserMapper
+com/adpro/tasc/user/db/template/UserTemplate.java
+ com.adpro.tasc.user.db.template.UserTemplate
+com/adpro/tasc/appointment/db/dao/AppointmentDAO.java
+ com.adpro.tasc.appointment.db.dao.AppointmentDAO
+com/adpro/tasc/appointment/db/model/AppointmentRequest.java
+ com.adpro.tasc.appointment.db.model.AppointmentRequest
+ com.adpro.tasc.appointment.db.model.AppointmentRequest$Status
+com/adpro/tasc/appointment/db/model/Slot.java
+ com.adpro.tasc.appointment.db.model.Slot
+ com.adpro.tasc.appointment.db.model.Slot$Day
+com/adpro/tasc/user/db/dao/UserDAO.java
+ com.adpro.tasc.user.db.dao.UserDAO
+com/adpro/tasc/appointment/db/model/Appointment.java
+ com.adpro.tasc.appointment.db.model.Appointment
+com/adpro/tasc/user/db/template/UserWrapper.java
+ com.adpro.tasc.user.db.template.UserWrapper
+com/adpro/tasc/controller/AddRolesController.java
+ com.adpro.tasc.controller.AddRolesController
diff --git a/build/tmp/compileTestJava/source-classes-mapping.txt b/build/tmp/compileTestJava/source-classes-mapping.txt
new file mode 100644
index 0000000..ede5dc8
--- /dev/null
+++ b/build/tmp/compileTestJava/source-classes-mapping.txt
@@ -0,0 +1,6 @@
+com/adpro/tasc/TestApp.java
+ com.adpro.tasc.TestApp
+com/adpro/tasc/appointment/db/AppointmentTest.java
+ com.adpro.tasc.appointment.db.AppointmentTest
+com/adpro/tasc/user/db/UserTest.java
+ com.adpro.tasc.user.db.UserTest
diff --git a/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/MANIFEST.MF b/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f3c429a
--- /dev/null
+++ b/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Archiver-Version: Plexus Archiver
+Created-By: Apache Maven Bundle Plugin
+Built-By: root
+Build-Jdk: 1.8.0_265
+Automatic-Module-Name: org.jacoco.agent
+Bnd-LastModified: 1600202058639
+Bundle-Description: JaCoCo Agent
+Bundle-License: https://www.eclipse.org/legal/epl-2.0/
+Bundle-ManifestVersion: 2
+Bundle-Name: JaCoCo Agent
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-SymbolicName: org.jacoco.agent
+Bundle-Vendor: Mountainminds GmbH & Co. KG
+Bundle-Version: 0.8.6.202009150832
+Eclipse-SourceReferences: scm:git:git://github.com/jacoco/jacoco.git;p
+ ath="org.jacoco.agent";commitId=492f4213aaee85915b835047b8808eb16f399
+ 4fa
+Export-Package: org.jacoco.agent;version="0.8.6"
+Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.5))"
+Tool: Bnd-3.5.0.201709291849
+
diff --git a/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/maven/org.jacoco/org.jacoco.agent/pom.properties b/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/maven/org.jacoco/org.jacoco.agent/pom.properties
new file mode 100644
index 0000000..e218124
--- /dev/null
+++ b/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/maven/org.jacoco/org.jacoco.agent/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Tue Sep 15 20:34:21 UTC 2020
+version=0.8.6
+groupId=org.jacoco
+artifactId=org.jacoco.agent
diff --git a/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/maven/org.jacoco/org.jacoco.agent/pom.xml b/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/maven/org.jacoco/org.jacoco.agent/pom.xml
new file mode 100644
index 0000000..32c831d
--- /dev/null
+++ b/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/META-INF/maven/org.jacoco/org.jacoco.agent/pom.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (c) 2009, 2020 Mountainminds GmbH & Co. KG and Contributors
+   This program and the accompanying materials are made available under
+   the terms of the Eclipse Public License 2.0 which is available at
+   http://www.eclipse.org/legal/epl-2.0
+
+   SPDX-License-Identifier: EPL-2.0
+
+   Contributors:
+      Evgeny Mandrikov - initial API and implementation
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.jacoco</groupId>
+    <artifactId>org.jacoco.build</artifactId>
+    <version>0.8.6</version>
+    <relativePath>../org.jacoco.build</relativePath>
+  </parent>
+
+  <artifactId>org.jacoco.agent</artifactId>
+
+  <name>JaCoCo :: Agent</name>
+  <description>JaCoCo Agent</description>
+
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>copy</goal>
+            </goals>
+            <configuration>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>${project.groupId}</groupId>
+                  <artifactId>org.jacoco.agent.rt</artifactId>
+                  <classifier>all</classifier>
+                  <version>${project.version}</version>
+                  <destFileName>jacocoagent.jar</destFileName>
+                </artifactItem>
+              </artifactItems>
+              <outputDirectory>${project.build.directory}/classes</outputDirectory>
+              <overWriteReleases>false</overWriteReleases>
+              <overWriteSnapshots>false</overWriteSnapshots>
+              <overWriteIfNewer>true</overWriteIfNewer>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-artifacts</id>
+            <phase>package</phase>
+            <goals>
+              <goal>attach-artifact</goal>
+            </goals>
+            <configuration>
+              <artifacts>
+                <artifact>
+                  <file>${project.build.directory}/classes/jacocoagent.jar</file>
+                  <type>jar</type>
+                  <classifier>runtime</classifier>
+                </artifact>
+              </artifacts>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>manifest</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/about.html b/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/about.html
new file mode 100644
index 0000000..cf103a2
--- /dev/null
+++ b/build/tmp/expandedArchives/org.jacoco.agent-0.8.6.jar_a26f6511a7813217be4cd6439d66563b/about.html
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>
+  2020/09/15
+</p>
+
+<h3>License</h3>
+
+<p>
+  All Content in this distribution is made available by Mountainminds GmbH &amp; Co.
+  KG, Munich. Unless otherwise indicated below, the Content is provided to you
+  under the terms and conditions of the Eclipse Public License Version 2.0
+  (&quot;EPL&quot;). A copy of the EPL is available at
+  <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+  For purposes of the EPL, "Program" will mean the Content.
+</p>
+
+<h3>Third Party Content</h3>
+
+<p>
+  The Content includes items that have been sourced from third parties as set
+  out below.
+</p>
+
+<h4>ASM</h4>
+
+<p>
+  <a href="http://asm.objectweb.org/">ASM 7.2</a> is subject to the terms and
+  conditions of the following license:
+</p>
+
+<pre>
+ASM: a very small and fast Java bytecode manipulation framework
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+
+
+</body>
+</html>
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..da9702f
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/src/main/java/com/adpro/tasc/controller/AddRolesController.java b/src/main/java/com/adpro/tasc/controller/AddRolesController.java
index b4f5e6d..38830f1 100644
--- a/src/main/java/com/adpro/tasc/controller/AddRolesController.java
+++ b/src/main/java/com/adpro/tasc/controller/AddRolesController.java
@@ -5,32 +5,68 @@ import com.adpro.tasc.user.db.model.AcademicUser;
 import com.adpro.tasc.user.db.model.Role;
 import com.adpro.tasc.user.db.model.User;
 import com.adpro.tasc.user.db.template.UserTemplate;
+import com.adpro.tasc.user.db.template.UserWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 @Controller
 public class AddRolesController {
 
     @Autowired
     private UserDAO userDAO;
+    private User[] users = {new User("Michael182", "Michael Smith", "123", null),
+            new User("Alfred12", "Alfred Rogers", "345", null),
+            new User("Jeff19", "Jeff Stirling", "333", null)};
+    List<User> userList = new ArrayList<User>(Arrays.asList(users));
+
+    private UserWrapper userWrapper;
 
     @GetMapping(value = "/add-roles")
     public String addRoles(Model model) {
-        model.addAttribute("userList", userDAO.getAllUser());
+
+//        User user1 = new User("Michael182", "Michael Smith", "123", null);
+//        User user2 = new User("Alfred12", "Alfred Rogers", "345", null);
+//        User user3 = new User("Jeff19", "Jeff Stirling", "333", null);
+//        userWrapper.addUser("Michael182", "Michael Smith", "123", null);
+//        userWrapper.addUser("Alfred12", "Alfred Rogers", "345", null);
+//        userWrapper.addUser("Jeff19", "Jeff Stirling", "333", null);
+//        List<User> userList = new ArrayList<>();
+//        userList.add(user1);
+//        userList.add(user2);
+//        userList.add(user3);
+        model.addAttribute("userList", userList);
+//        model.addAttribute("userList", userDAO.getAllUser());
         return "add_roles";
     }
 
     @PostMapping(value = "/add-roles/student")
-    public String registerStudent(Model model, @RequestParam ("userName") String userName, @RequestParam("fullName") String fullName, @RequestParam("password") String password) {
-        model.addAttribute("user", new User(userName, fullName, password, Role.STUDENT));
-        return "redirect:/add_roles";
+    public String registerStudent(Model model, @RequestParam ("userName") String userName,
+                                  @RequestParam("fullName") String fullName,
+                                  @RequestParam("password") String password, @RequestParam("index") int index) {
+//        UserWrapper userWrapper = new UserWrapper();
+//        userWrapper.addUser(userName, fullName, password, Role.STUDENT);
+//        model.addAttribute("userList", userWrapper.getAllUser());
+        userList.set(index, new User(userName, fullName, password, Role.STUDENT));
+//        System.out.println(userList.get(0).getRole());
+        return "redirect:/add-roles";
     }
 
     @PostMapping(value = "/add-roles/ta")
-    public String registerTA(Model model, @RequestParam ("userNameTA") String userName, @RequestParam("fullNameTA") String fullName, @RequestParam("passwordTA") String password) {
-        model.addAttribute("user", new AcademicUser(userName, fullName, password, Role.TEACHING_ASSISTANT));
+    public String registerTA(Model model, @RequestParam ("userNameTA") String userName,
+                             @RequestParam("fullNameTA") String fullName,
+                             @RequestParam("passwordTA") String password, @RequestParam("indexTA") int index) {
+//        UserWrapper userWrapper = new UserWrapper();
+//        userWrapper.addUser(userName, fullName, password, Role.TEACHING_ASSISTANT);
+//        model.addAttribute("userList", userWrapper.getAllUser());
+        userList.set(index, new User(userName, fullName, password, Role.TEACHING_ASSISTANT));
+//        System.out.println(userList.get(0).getRole());
+        //        model.addAttribute("user", new AcademicUser(userName, fullName, password, Role.TEACHING_ASSISTANT));
         return "redirect:/add-roles";
     }
 
diff --git a/src/main/java/com/adpro/tasc/user/db/template/UserWrapper.java b/src/main/java/com/adpro/tasc/user/db/template/UserWrapper.java
new file mode 100644
index 0000000..eb5f905
--- /dev/null
+++ b/src/main/java/com/adpro/tasc/user/db/template/UserWrapper.java
@@ -0,0 +1,55 @@
+package com.adpro.tasc.user.db.template;
+
+import com.adpro.tasc.user.db.dao.UserDAO;
+import com.adpro.tasc.user.db.model.Role;
+import com.adpro.tasc.user.db.model.User;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UserWrapper implements UserDAO {
+
+    List<User> userList = new ArrayList<User>();
+
+    @Override
+    public User getUser(String username) {
+        return null;
+    }
+
+    public void addUser(String userName, String fullName, String password, Role role) {
+        User user = new User(userName, fullName, password, role);
+        userList.add(user);
+    }
+
+    public void setUserStudent(String userName, String fullName, String password) {
+        User user = new User(userName, fullName, password, Role.STUDENT);
+        userList.add(user);
+    }
+
+    @Override
+    public List<User> getAllUser() {
+        return userList;
+    }
+
+    @Override
+    public void createUser(User user) {
+
+    }
+
+    @Override
+    public void updatePassword(String username, String password) {
+
+    }
+
+    @Override
+    public void updateUser(String username, User user) {
+
+    }
+
+    @Override
+    public void deleteUser(String username) {
+
+    }
+}
diff --git a/src/main/resources/templates/add_roles.html b/src/main/resources/templates/add_roles.html
index d4609dd..6c5e50e 100644
--- a/src/main/resources/templates/add_roles.html
+++ b/src/main/resources/templates/add_roles.html
@@ -35,22 +35,24 @@
             </tr>
             </thead>
             <tbody>
-            <tr th:each="user :${userList}">
+            <tr th:each="user, index :${userList}">
                 <td th:text="${user.userName}"> </td>
                 <td th:text="${user.fullName}"></td>
                 <td th:text="${user.role}"></td>
                 <!-- Assign role button here-->
                 <td>
                     <form th:action="@{/add-roles/student}" th:object="${user}" method="post">
-                        <input id = "userName" name = "userName" type = "hidden" value = "${user.userName}"/>
-                        <input id = "fullName" name = "fullName" type = "hidden" value = "${user.fullName}"/>
-                        <input id = "password" name = "password" type = "hidden" value = "${user.password}"/>
+                        <input id = "index" name = "index" type = "hidden" th:value = "${index.index}"/>
+                        <input id = "userName" name = "userName" type = "hidden" th:value = "${user.userName}"/>
+                        <input id = "fullName" name = "fullName" type = "hidden" th:value = "${user.fullName}"/>
+                        <input id = "password" name = "password" type = "hidden" th:value = "${user.password}"/>
                         <button type="submit" class="btn btn-outline-dark" value="STUDENT">Student</button>
                     </form>
                     <form th:action="@{/add-roles/ta}" th:object="${user}" method="post">
-                        <input id = "userNameTA" name = "userNameTA" type = "hidden" value = "${user.userName}"/>
-                        <input id = "fullNameTA" name = "fullNameTA" type = "hidden" value = "${user.fullName}"/>
-                        <input id = "passwordTA" name = "passwordTA" type = "hidden" value = "${user.password}"/>
+                        <input id = "indexTA" name = "indexTA" type = "hidden" th:value = "${index.index}"/>
+                        <input id = "userNameTA" name = "userNameTA" type = "hidden" th:value = "${user.userName}"/>
+                        <input id = "fullNameTA" name = "fullNameTA" type = "hidden" th:value = "${user.fullName}"/>
+                        <input id = "passwordTA" name = "passwordTA" type = "hidden" th:value = "${user.password}"/>
                     <button type="submit" class="btn btn-outline-dark" value="TEACHING_ASSISTANT">Teaching Assistant</button>
                     </form>
                 </td>
diff --git a/src/test/java/com/adpro/tasc/appointment/db/AppointmentTest.java b/src/test/java/com/adpro/tasc/appointment/db/AppointmentTest.java
new file mode 100644
index 0000000..46f58b9
--- /dev/null
+++ b/src/test/java/com/adpro/tasc/appointment/db/AppointmentTest.java
@@ -0,0 +1,22 @@
+package com.adpro.tasc.appointment.db;
+
+import com.adpro.tasc.appointment.db.model.Appointment;
+import com.adpro.tasc.appointment.db.model.Course;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class AppointmentTest {
+    @Test
+    void testAppointmentExists() throws Exception {
+        Course course = new Course();
+        course.setName("A");
+        Appointment appointment = new Appointment();
+        appointment.setDate(19-10-21);
+        appointment.setDuration(20);
+        appointment.setCourse(course);
+        assertEquals(19-10-21, appointment.getDate());
+        assertEquals(20, appointment.getDuration());
+        assertEquals(course, appointment.getCourse());
+    }
+}
diff --git a/src/test/java/com/adpro/tasc/appointment/db/CourseTest.java b/src/test/java/com/adpro/tasc/appointment/db/CourseTest.java
new file mode 100644
index 0000000..85b359b
--- /dev/null
+++ b/src/test/java/com/adpro/tasc/appointment/db/CourseTest.java
@@ -0,0 +1,17 @@
+package com.adpro.tasc.appointment.db;
+
+import com.adpro.tasc.appointment.db.model.Course;
+import com.adpro.tasc.user.db.model.Role;
+import com.adpro.tasc.user.db.model.User;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class CourseTest {
+    @Test
+    void testCourseExists() throws Exception {
+        Course course = new Course();
+        course.setName("Course A");
+        assertEquals("Course A", course.getName());
+    }
+}
-- 
GitLab