From 167973cedb6ba2398fcc0cc86006f7a029285ed6 Mon Sep 17 00:00:00 2001 From: umasoodch Date: Tue, 24 Dec 2019 15:06:02 +0300 Subject: [PATCH] added time card detail and its summary --- .../confirm-login/confirm-login.component.ts | 10 +- Mohem/src/app/eit/home/home.component.html | 7 +- Mohem/src/app/eit/home/home.component.ts | 6 +- .../services/common/common.service.ts | 3 + .../app/time-card/home/home.component.html | 32 +- .../app/time-card/home/home.component.scss | 54 +++ .../src/app/time-card/home/home.component.ts | 34 +- .../select-period.component.html | 51 +++ .../select-period.component.scss | 12 + .../select-period.component.spec.ts | 27 ++ .../select-period/select-period.component.ts | 21 + .../time-card/service/time-card.service.ts | 32 +- .../time-card-details.component.html | 415 +++++++++++++++++- .../time-card-details.component.scss | 128 ++++++ .../time-card-details.component.ts | 41 +- Mohem/src/app/time-card/time-card.module.ts | 9 +- Mohem/src/assets/imgs/time-card/ArrowDown.png | Bin 0 -> 698 bytes .../src/assets/imgs/time-card/ArrowRight.png | Bin 0 -> 720 bytes Mohem/src/assets/imgs/time-card/ArrowUp.png | Bin 0 -> 673 bytes Mohem/src/assets/imgs/time-card/Asset 18.png | Bin 0 -> 2905 bytes Mohem/src/assets/imgs/time-card/Asset 19.png | Bin 0 -> 2905 bytes Mohem/src/assets/imgs/time-card/Asset 20.png | Bin 0 -> 2924 bytes Mohem/src/assets/imgs/time-card/Asset 21.png | Bin 0 -> 2875 bytes Mohem/src/assets/imgs/time-card/EarlyOut.png | Bin 0 -> 557 bytes .../src/assets/imgs/time-card/ExcessTime.png | Bin 0 -> 914 bytes Mohem/src/assets/imgs/time-card/LateIn.png | Bin 0 -> 556 bytes .../assets/imgs/time-card/MissingSwipe.png | Bin 0 -> 9908 bytes .../src/assets/imgs/time-card/MyTimeCard.png | Bin 0 -> 4489 bytes .../assets/imgs/time-card/Notification.png | Bin 0 -> 833 bytes Mohem/src/assets/imgs/time-card/PlannedOT.png | Bin 0 -> 447 bytes Mohem/src/assets/imgs/time-card/Remarks.png | Bin 0 -> 653 bytes .../src/assets/imgs/time-card/Shift Hours.png | Bin 0 -> 682 bytes Mohem/src/assets/imgs/time-card/SwipeIn.png | Bin 0 -> 658 bytes Mohem/src/assets/imgs/time-card/SwipeOut.png | Bin 0 -> 618 bytes .../assets/imgs/time-card/TimeBackIcon.png | Bin 0 -> 1346 bytes Mohem/src/assets/imgs/time-card/Timeback.png | Bin 0 -> 9311 bytes .../src/assets/imgs/time-card/TotalHours.png | Bin 0 -> 1396 bytes .../src/assets/imgs/time-card/WorkOnBreak.png | Bin 0 -> 4573 bytes Mohem/src/theme/styles.scss | 23 +- 39 files changed, 866 insertions(+), 39 deletions(-) create mode 100644 Mohem/src/app/time-card/select-period/select-period.component.html create mode 100644 Mohem/src/app/time-card/select-period/select-period.component.scss create mode 100644 Mohem/src/app/time-card/select-period/select-period.component.spec.ts create mode 100644 Mohem/src/app/time-card/select-period/select-period.component.ts create mode 100644 Mohem/src/assets/imgs/time-card/ArrowDown.png create mode 100644 Mohem/src/assets/imgs/time-card/ArrowRight.png create mode 100644 Mohem/src/assets/imgs/time-card/ArrowUp.png create mode 100644 Mohem/src/assets/imgs/time-card/Asset 18.png create mode 100644 Mohem/src/assets/imgs/time-card/Asset 19.png create mode 100644 Mohem/src/assets/imgs/time-card/Asset 20.png create mode 100644 Mohem/src/assets/imgs/time-card/Asset 21.png create mode 100644 Mohem/src/assets/imgs/time-card/EarlyOut.png create mode 100644 Mohem/src/assets/imgs/time-card/ExcessTime.png create mode 100644 Mohem/src/assets/imgs/time-card/LateIn.png create mode 100644 Mohem/src/assets/imgs/time-card/MissingSwipe.png create mode 100644 Mohem/src/assets/imgs/time-card/MyTimeCard.png create mode 100644 Mohem/src/assets/imgs/time-card/Notification.png create mode 100644 Mohem/src/assets/imgs/time-card/PlannedOT.png create mode 100644 Mohem/src/assets/imgs/time-card/Remarks.png create mode 100644 Mohem/src/assets/imgs/time-card/Shift Hours.png create mode 100644 Mohem/src/assets/imgs/time-card/SwipeIn.png create mode 100644 Mohem/src/assets/imgs/time-card/SwipeOut.png create mode 100644 Mohem/src/assets/imgs/time-card/TimeBackIcon.png create mode 100644 Mohem/src/assets/imgs/time-card/Timeback.png create mode 100644 Mohem/src/assets/imgs/time-card/TotalHours.png create mode 100644 Mohem/src/assets/imgs/time-card/WorkOnBreak.png diff --git a/Mohem/src/app/authentication/confirm-login/confirm-login.component.ts b/Mohem/src/app/authentication/confirm-login/confirm-login.component.ts index f661aa72..45132891 100644 --- a/Mohem/src/app/authentication/confirm-login/confirm-login.component.ts +++ b/Mohem/src/app/authentication/confirm-login/confirm-login.component.ts @@ -584,15 +584,15 @@ export class ConfirmLoginComponent implements OnInit { - clientId: "Fingerprint Authetnciation", + // clientId: "Fingerprint Authetnciation", - clientSecret: "Ate343_9347lajF", // Only necessary for Android + // clientSecret: "Ate343_9347lajF", // Only necessary for Android - disableBackup: true, // Only for Android(optional) + // disableBackup: true, // Only for Android(optional) - localizedFallbackTitle: this.ts.trPK("general", "use-pin"), // Only for iOS + // localizedFallbackTitle: this.ts.trPK("general", "use-pin"), // Only for iOS - localizedReason: this.ts.trPK("general", "auth-please") // Only for iOS + // localizedReason: this.ts.trPK("general", "auth-please") // Only for iOS }) diff --git a/Mohem/src/app/eit/home/home.component.html b/Mohem/src/app/eit/home/home.component.html index 944ae6ef..6e489093 100644 --- a/Mohem/src/app/eit/home/home.component.html +++ b/Mohem/src/app/eit/home/home.component.html @@ -21,23 +21,22 @@
{{menuItem.PROMPT}} -
- +  {{subPage.PROMPT}} - + + *ngIf="menuItem.children && menuItem.MENU_ENTRY_TYPE=='MENU' && menuItem.PROMPT != 'Time And Attendance'" slot="end" class="arrow-down"> \ No newline at end of file diff --git a/Mohem/src/app/eit/home/home.component.ts b/Mohem/src/app/eit/home/home.component.ts index 686b5c0d..2289313c 100644 --- a/Mohem/src/app/eit/home/home.component.ts +++ b/Mohem/src/app/eit/home/home.component.ts @@ -29,7 +29,7 @@ export class HomeComponent implements OnInit { openPage(page, index) { // Reset the content nav to have just this page // we wouldn't want the back button to show in this scenario - if (page.children.length == 0) { + if (page.children.length == 0 || page.PROMPT == 'Time And Attendance') { this.goToRequest(page); } else { if (this.selectedMenu == 0) { @@ -55,6 +55,10 @@ export class HomeComponent implements OnInit { if (menuEntry.REQUEST_TYPE =='PAYSLIP'){ this.cs.openPayslipPage(); } + if (menuEntry.PROMPT == 'Time And Attendance'){ + this.cs.openTimeCardPage(); + } + } } diff --git a/Mohem/src/app/hmg-common/services/common/common.service.ts b/Mohem/src/app/hmg-common/services/common/common.service.ts index 532e6bd4..e5630281 100644 --- a/Mohem/src/app/hmg-common/services/common/common.service.ts +++ b/Mohem/src/app/hmg-common/services/common/common.service.ts @@ -1071,6 +1071,9 @@ export class CommonService { public openPayslipPage() { this.nav.navigateForward(["/payslip/home"]); } + public openTimeCardPage() { + this.nav.navigateForward(["/time-card/home"]); + } public openEarningsPage() { this.nav.navigateForward(["/payslip/Earnings"]); } diff --git a/Mohem/src/app/time-card/home/home.component.html b/Mohem/src/app/time-card/home/home.component.html index afc16a36..aa52c414 100644 --- a/Mohem/src/app/time-card/home/home.component.html +++ b/Mohem/src/app/time-card/home/home.component.html @@ -1,3 +1,29 @@ -

- home works! -

+ + + Time and Attendance + + + +
+ + + + + + + + +

{{timeCard.heading}}

+ {{timeCard.description}} +
+ + + +
+
+
+
+
+
diff --git a/Mohem/src/app/time-card/home/home.component.scss b/Mohem/src/app/time-card/home/home.component.scss index e69de29b..42dcf08e 100644 --- a/Mohem/src/app/time-card/home/home.component.scss +++ b/Mohem/src/app/time-card/home/home.component.scss @@ -0,0 +1,54 @@ +ion-header{ + overflow: hidden; +} +ion-content{ + --ion-background-color: #f2f2f3; +} + +ion-card-content { + padding: 0px; +} + +ion-card { + box-shadow: none !important; + background-color: white; + margin: 10px 30px; +} +ion-header { + background: #f2f2f3; +} +ion-title{ + text-align: center; + font-family: WorkSans-Bold; + font-size: 18px; +} +.header-toolbar-new{ + --background: linear-gradient(90deg, rgba(132,198,143,1) 0%, rgba(41,183,197,1) 100%); + border-bottom-right-radius: 30px; + border-bottom-left-radius: 30px; +} + +.time-card-image{ + padding: 10px; +} +.time-card-details{ + padding: 0px; + margin-top: 25px; + line-height: 10px; +} + +.time-card-heading{ + font-weight: bold; + font-size: 13px; + color: #666666; + font-family: WorkSans-Bold; +} + +.time-card-description{ + font-size: 10px; +} + +.time-card-rightIcon{ + padding: 8px; + margin-top: 18px; +} diff --git a/Mohem/src/app/time-card/home/home.component.ts b/Mohem/src/app/time-card/home/home.component.ts index a7aad8ad..d6617717 100644 --- a/Mohem/src/app/time-card/home/home.component.ts +++ b/Mohem/src/app/time-card/home/home.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; - +import { NavController } from '@ionic/angular'; @Component({ selector: 'app-home', templateUrl: './home.component.html', @@ -7,8 +7,38 @@ import { Component, OnInit } from '@angular/core'; }) export class HomeComponent implements OnInit { - constructor() { } + public timeCardOptions: any = [ + { + imageName: 'MyTimeCard.png', + heading: 'My Time Card', + description: 'View your attendance records.', + pageLink: '/time-card/time-card-details' + }, + { + imageName: 'Timeback.png', + heading: 'Time Back', + description: 'View and use your extra work time.', + pageLink: '/time-card/home' + }, + { + imageName: 'MissingSwipe.png', + heading: 'Missing Swipe', + description: 'Resolve swipe and attendance records', + pageLink: '/time-card/home' + }, + { + imageName: 'WorkOnBreak.png', + heading: 'Work on Break', + description: 'Record your work time in during break.', + pageLink: '/time-card/home' + } + ]; + + constructor(public nav: NavController) {} ngOnInit() {} + public openDetailPage() { + this.nav.navigateForward(['/time-card/time-card-details']); + } } diff --git a/Mohem/src/app/time-card/select-period/select-period.component.html b/Mohem/src/app/time-card/select-period/select-period.component.html new file mode 100644 index 00000000..58a4b24f --- /dev/null +++ b/Mohem/src/app/time-card/select-period/select-period.component.html @@ -0,0 +1,51 @@ + + +

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+ +

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+

+ select-period works! +

+
+ diff --git a/Mohem/src/app/time-card/select-period/select-period.component.scss b/Mohem/src/app/time-card/select-period/select-period.component.scss new file mode 100644 index 00000000..6a342b88 --- /dev/null +++ b/Mohem/src/app/time-card/select-period/select-period.component.scss @@ -0,0 +1,12 @@ +.footer-modal-button{ + position: absolute; + bottom: 0; + color: white; + width: 100%; + text-align: center; + } + .footer-modal-button button{ + font-size: 20px; + background: white; + line-height: 2; + } \ No newline at end of file diff --git a/Mohem/src/app/time-card/select-period/select-period.component.spec.ts b/Mohem/src/app/time-card/select-period/select-period.component.spec.ts new file mode 100644 index 00000000..bde45178 --- /dev/null +++ b/Mohem/src/app/time-card/select-period/select-period.component.spec.ts @@ -0,0 +1,27 @@ +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SelectPeriodComponent } from './select-period.component'; + +describe('SelectPeriodComponent', () => { + let component: SelectPeriodComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SelectPeriodComponent ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SelectPeriodComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/Mohem/src/app/time-card/select-period/select-period.component.ts b/Mohem/src/app/time-card/select-period/select-period.component.ts new file mode 100644 index 00000000..effe87d8 --- /dev/null +++ b/Mohem/src/app/time-card/select-period/select-period.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { ModalController } from '@ionic/angular'; + +@Component({ + selector: 'app-select-period', + templateUrl: './select-period.component.html', + styleUrls: ['./select-period.component.scss'], +}) +export class SelectPeriodComponent implements OnInit { + + constructor(public modalController: ModalController) { } + + ngOnInit() {} + + public dismiss() { + this.modalController.dismiss({ + dismissed: true + }); + } + +} diff --git a/Mohem/src/app/time-card/service/time-card.service.ts b/Mohem/src/app/time-card/service/time-card.service.ts index 7e8f2cc3..b4fba9fe 100644 --- a/Mohem/src/app/time-card/service/time-card.service.ts +++ b/Mohem/src/app/time-card/service/time-card.service.ts @@ -1,27 +1,27 @@ -import { Injectable } from "@angular/core"; -import { AuthenticationService } from "src/app/hmg-common/services/authentication/authentication.service"; -import { ConnectorService } from "src/app/hmg-common/services/connector/connector.service"; -import { Request } from "src/app/hmg-common/services/models/request"; +import { Injectable } from '@angular/core'; +import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; +import { ConnectorService } from 'src/app/hmg-common/services/connector/connector.service'; +import { Request } from 'src/app/hmg-common/services/models/request'; -import { Observable } from "rxjs"; -import { GetShiftTypeResponse } from "./models/get-shift-type.response"; -import { GetDayAndHoursDetailsResponse } from "./models/get-day-hours-type-details.response"; -import { GetTimeCardSummaryResponse } from "./models/get-time-card-summary.response"; -import { GetShiftDetailResponse } from "./models/get-shift-detail.response"; -import { GetSwipesResponse } from "./models/get-swipes-response"; +import { Observable } from 'rxjs'; +import { GetShiftTypeResponse } from './models/get-shift-type.response'; +import { GetDayAndHoursDetailsResponse } from './models/get-day-hours-type-details.response'; +import { GetTimeCardSummaryResponse } from './models/get-time-card-summary.response'; +import { GetShiftDetailResponse } from './models/get-shift-detail.response'; +import { GetSwipesResponse } from './models/get-swipes-response'; @Injectable({ - providedIn: "root" + providedIn: 'root' }) export class TimeCardService { - public static getShiftTypeUrl = "Services/ERP.svc/REST/GET_SHIFT_TYPES"; + public static getShiftTypeUrl = 'Services/ERP.svc/REST/GET_SHIFT_TYPES'; public static getTimeCardSummaryUrl = - "Services/ERP.svc/REST/GET_TIME_CARD_SUMMARY"; + 'Services/ERP.svc/REST/GET_TIME_CARD_SUMMARY'; public static getDayHourDetailsUrl = - "Services/ERP.svc/REST/GET_DAY_HOURS_TYPE_DETAILS"; + 'Services/ERP.svc/REST/GET_DAY_HOURS_TYPE_DETAILS'; public static getShiftDetailUrl = - "Services/ERP.svc/REST/GET_SCHEDULE_SHIFTS_DETAILS"; - public static getSwipeUrl = "Services/ERP.svc/REST/GET_SWIPES"; + 'Services/ERP.svc/REST/GET_SCHEDULE_SHIFTS_DETAILS'; + public static getSwipeUrl = 'Services/ERP.svc/REST/GET_SWIPES'; constructor( public con: ConnectorService, diff --git a/Mohem/src/app/time-card/time-card-details/time-card-details.component.html b/Mohem/src/app/time-card/time-card-details/time-card-details.component.html index 633c94d1..3e2e30f9 100644 --- a/Mohem/src/app/time-card/time-card-details/time-card-details.component.html +++ b/Mohem/src/app/time-card/time-card-details/time-card-details.component.html @@ -1,3 +1,412 @@ -

- time-card-details works! -

+ + + My Time Card + + + + + +
+ + + Time Card Details + + + Time Card Summary + + + +
+ + +

Days

+ + + + Period Days + + + 245 + + + + + Schedule Days + + + 156 + + + + + Off days + + + 79 + + + + + Attended Days + + + 163 + + + + + Absent Days + + + 0 + + + + + + Non Schedule Days + + + 0 + + + + + Not Analyzed Days + + + 3 + + + +
+
+ + + + + + + Hours + + + Actual + + + Schedule + + + + + Regular + + + 245 + + + 235 + + + + + Planned OT + + + 156 + + + 156 + + + + + On Call + + + 79 + + + 79 + + + + + Excess + + + 10 + + + 10 + + + + + Time Back + + + 163 + + + + + + + Approved Time Back + + + 0 + + + + + + + Time Back Balance + + + 0 + + + + + + + Late In + + + 00:06 + + + + + + + Early Out + + + 00:03 + + + + + + + + + + + + +

Leaves & Holidays

+ + + + Half-Day Leave + + + 245 + + + + + Unauthorized Leave + + + 156 + + + + + Business Trip + + + 79 + + + + + Sick Leave + + + 163 + + + + + Paid Leave + + + 0 + + + + + Unpaid Leave + + + 0 + + + + + Puclic Holiday + + + 3 + + + +
+
+ +
+ +
+ + + +

Today's time card details

+
+
+ + + + + + Swipe In: + + + 06:57 + + + + + + + + + Swipe Out: + + + 05:05 + + + + + + + + + Total Hours: + + + 03:39 + + + + + + + + + Time Back: + + + 03:39 + + + + + + + + + Remarks: + + + Off Shift + + + + + + + + + Shift Hours: + + + 09:00 + + + + + + + + + Excess Time: + + + 00:08 + + + + + + + + + Planned OT: + + + 03:00 + + + + + + + + + Late In: + + + 00:00 + + + + + + + + + Early Out: + + + 00:00 + + +
+
+ More Details + +
+
+
+
+ + + \ No newline at end of file diff --git a/Mohem/src/app/time-card/time-card-details/time-card-details.component.scss b/Mohem/src/app/time-card/time-card-details/time-card-details.component.scss index e69de29b..89380628 100644 --- a/Mohem/src/app/time-card/time-card-details/time-card-details.component.scss +++ b/Mohem/src/app/time-card/time-card-details/time-card-details.component.scss @@ -0,0 +1,128 @@ +ion-header{ + overflow: hidden; +} +ion-content{ + --ion-background-color: #f2f2f3; +} + +ion-card-content { + padding: 0px; +} + +ion-card { + box-shadow: none !important; + background-color: white; + margin: 10px -15px; + margin-bottom: 20px; +} +ion-header { + background: #f2f2f3; +} +ion-title{ + text-align: center; + font-family: WorkSans-Bold; + font-size: 18px; +} +// ion-label { +// color: #A3D077 !important; +// } +.header-toolbar-new{ + --background: linear-gradient(90deg, rgba(132,198,143,1) 0%, rgba(41,183,197,1) 100%); + border-bottom-right-radius: 30px; + border-bottom-left-radius: 30px; +} + +.active-Segment { + border-radius: 5px !important; + font-size: 0.3cm !important; + background: white !important; + color: #fff !important; + font-weight: bold !important; + border: 1px solid white !important; + text-transform: none; + --color-checked: none; + } + .active-Segment ion-label{ + // color: #A3D077 !important; + color: #11975F !important; + font-size: 11px; + } + .normal-Segment ion-label{ + // color: #A3D077 !important; + color: white !important; + font-size: 11px; + } + .normal-Segment { + border-radius: 5px !important; + font-size: 0.3cm !important; + background: #A3D077 !important; + color: #fff !important; + font-weight: bold !important; + border: 1px solid white !important; + text-transform: none; + --color-checked: none; + } + .time-card-details-container{ + margin-right: 20px; + margin-left: 20px; + } + + .card-summary-heading{ + margin-left: 10px; + margin-top: 12px; + color: #606161; + font-family: WorkSans-Bold; + } + .card-summary-heading-hours{ + color: #606161; + font-family: WorkSans-Bold; + } + + .card-summary-heading-hours-extended-heading{ + color: #D3D3D3; + font-family: WorkSans-Bold; + } + + ///////////////////////////////// + + .time-card-details { + background: white; + margin-top: 15px; + border-radius: 5px; + } + + .time-card-details-heading-two { + color: #606161; + font-family: WorkSans-Bold; + } + .time-card-details-heading-two h2 { + margin-top: 15px; + font-size: 15px; + } + + .time-card-span img{ + height: 30px; + margin-top: -5px; + margin-left: 10px; + } + .show-more-less{ + width: 100%; + background: #606061; + text-align: center; + /* margin: 10px; */ + padding-top: 20px; + } + + ///////////////////////////////////// +.footer-modal-button{ + position: absolute; + bottom: 0; + color: white; + width: 100%; + text-align: center; +} +.footer-modal-button button{ + font-size: 20px; + background: white; + line-height: 2; +} diff --git a/Mohem/src/app/time-card/time-card-details/time-card-details.component.ts b/Mohem/src/app/time-card/time-card-details/time-card-details.component.ts index 8fa456db..42303630 100644 --- a/Mohem/src/app/time-card/time-card-details/time-card-details.component.ts +++ b/Mohem/src/app/time-card/time-card-details/time-card-details.component.ts @@ -1,4 +1,9 @@ import { Component, OnInit } from '@angular/core'; +import { TimeCardService } from 'src/app/time-card/service/time-card.service'; +import { GetShiftTypeResponse } from '../service/models/get-shift-type.response'; +import { CommonService } from 'src/app/hmg-common/services/common/common.service'; +import { ModalController } from '@ionic/angular'; +import { SelectPeriodComponent } from '../select-period/select-period.component'; @Component({ selector: 'app-time-card-details', @@ -7,8 +12,40 @@ import { Component, OnInit } from '@angular/core'; }) export class TimeCardDetailsComponent implements OnInit { - constructor() { } + public activeSegment: any = 'time-card-summary'; + public showMore: any = false; - ngOnInit() {} + constructor( + public timeCardService: TimeCardService, + public cs: CommonService, + public modalController: ModalController + ) { } + ngOnInit() { + // this.getShiftType(); + } + + public segmentChanged(event: any) { + this.activeSegment = event.detail.value; + } + + public getShiftType() { + this.timeCardService.getShiftType().subscribe((result: GetShiftTypeResponse) => { + if (this.cs.validResponse(result)) { + console.log('umar' + result); + } + }); + } + + public toggleButton() { + this.showMore = !this.showMore; + } + + async openSelectPeriodModal() { + const modal = await this.modalController.create({ + component: SelectPeriodComponent, + cssClass: 'select-period-custom-modal' + }); + return await modal.present(); + } } diff --git a/Mohem/src/app/time-card/time-card.module.ts b/Mohem/src/app/time-card/time-card.module.ts index e79e452f..586e65fe 100644 --- a/Mohem/src/app/time-card/time-card.module.ts +++ b/Mohem/src/app/time-card/time-card.module.ts @@ -8,6 +8,7 @@ import { IonicModule } from '@ionic/angular'; import { TimeCardPage } from './time-card.page'; import { TimeCardDetailsComponent } from './time-card-details/time-card-details.component'; import { HomeComponent } from './home/home.component'; +import { SelectPeriodComponent } from './select-period/select-period.component'; const routes: Routes = [ { @@ -36,7 +37,11 @@ const routes: Routes = [ declarations: [ TimeCardPage, HomeComponent, - TimeCardDetailsComponent - ] + TimeCardDetailsComponent, + SelectPeriodComponent + ], + entryComponents: [ + SelectPeriodComponent + ], }) export class TimeCardPageModule {} diff --git a/Mohem/src/assets/imgs/time-card/ArrowDown.png b/Mohem/src/assets/imgs/time-card/ArrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..19693c8567e783ce123c3219cbb28e71a5e24e78 GIT binary patch literal 698 zcmV;r0!96aP)Lcbnuk2`9VV4k6x`GXN6+H^Jq104o3s=ZX!E z4DZWR0Jj|XMG)N^fG7GmSA2v~e~WuxjsPqxH`a0QT(LM7b??gw%MA~FZA%Zuxnd<3 z_Tv1+HVrq2JUds+)S{1sd*@?^yRSulz!#Psq=~8b<&(A8AtI!SB_|mJ@5?cOtBC*I zn|!1+G32>mpYfC~yO)=zn1cjqVJ70E#CWGPxlRy^4nE%(>!VeR5D7_VU`at{rN-dI&E%#=HnQW;zv2jpFzp@|~;1R^s?A{}LUZ z4N;|W;~1~Qu#WCZ^m?Fm#zT0A_1Q?KEi~*#v5TN6ar7^ryxS8kj{f9Twz!hS@gski z+D=Q<_VuDBw>lKIeVb6-%uLR>z;*FltGx;@+B>*v85ayPZ*oqjmT^Hj^Ja&W>KPaK zOs?x;WQggBteH5{HZ;tSq1C&3NaR*lma}(Lar~BVv$C7#`oV!|SFge|K7GRTc-r2g gx!@t&?`r^j0gu5yiXIbzCIA2c07*qoM6N<$f@~#2UH||9 literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/ArrowRight.png b/Mohem/src/assets/imgs/time-card/ArrowRight.png new file mode 100644 index 0000000000000000000000000000000000000000..e04b5a210c66e4fe313e1c08558ad8f991ec0f54 GIT binary patch literal 720 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 literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/Asset 19.png b/Mohem/src/assets/imgs/time-card/Asset 19.png new file mode 100644 index 0000000000000000000000000000000000000000..585150ba098b215649ea5fc5595678d121e810d3 GIT binary patch literal 2905 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 literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/Asset 20.png b/Mohem/src/assets/imgs/time-card/Asset 20.png new file mode 100644 index 0000000000000000000000000000000000000000..661cb83ee0be0e530fadca30678e6c9d4f816158 GIT binary patch literal 2924 zcmeHJdpHw}8XqHaDTSlVoZwP)o^TZ1_SR;WUhqna{?ER^*mjpX;fPB%jUw zx{zxKiD)*AjbxbHY+>73=l}En_s93g`@HY-zR&aCp67jkzo&Pc!SXVyG5`QT-tmTm zt4L!20I_Z9Ln4cHpMn#q!{IkPBLM)}nf&vbluQweoeuS~`5>A5n5h4BNq z`(hv?Te)3T1nAxORaYsoV$R5FtYCzz_wt{|H_642z(8yE@H(*^Qu^4yQqhiw+Ak&8 zOP9Ct#U|aGrsE9=3W8&Hyjx~MlvyX6pkNd7+N;$|E6FxVL2$y(<1CPOS9%`mSEpwu zB+B!@2sAfzwUUk^npkLy$wJrI5U9@^iq zH9O$n5|4F_tP4LN(w$xvZ@0QDtSunMpI#LyQhHG}{Ms z@}y6}ixFJUjE2%&vH2M(z9pj22L7Q=DKJh^&cC1 zdwcXW&~}ifmB(c$lTB*$f)2xi5t}2$$$w<)8k(x6HISoa%Za29$G9xg_gTG^wgzeb zSGZ8{V{2;=bDoP%Y!zRp6RY?^)GHtmO9xK!iGeT$6UrNlL-5%($tEb-$E7VPY?f<{uwkt?d^#PUH&3nJ6W;&JikM&v_gB6e-MA=-Oyd!-Slt0%>5 z-s$IflZfTNiGe)?3gt^M8eY_|NSbN4d#XYV5km>NOXSl z4f!>IgAKpQyl6u|-(MRGu*x@?%BjV6*=n;Xm+Esq+(BbK#rvsGHl3k|>?xZ8QbjV+ z-1R<0M-wHZR@^y;dE{t@{{PYd)xr+Sto@s(YSfIC;LK7?NpNiTT|IL&tZz zE1?+j!W@5d^y>1QE3#wox%hWH$Tm9ZAk=68AK94(&E1RyyQaTfc@7W-*g3rwgE{`o zV4PI?ctjI&#;Miq%t9aa<=Otvq&*om6yp-va6hj;ZsJ4LP<|vw-h*b$k@TQFbU#uA zL}FnUaUM?U9hYic={$!y4r?ktQ!RRF;wR7VLPcL@?I3=LSJLgnqW4LCfu?Civ#C|Ti%xNmV2^{fLckf9%T2QWLkIWU7J720@iMtpI!uZWE{V~yu>Js#9`a5>4>v9_<)pS=?RKj$N$J3glUR1Li zhzXIN2pwcit9W}PcRi=sva+jl)8K2@0oIkqb2++zhWpVm`R6!ExP!L@H|ku4vUoZ; zY%uy$ly{oTbKZ9+H})RN8BUwklQ>`wWVg4s ztT=s3rN&aM=h=v75qc6334>sV{vq}#2mGd*t`gr z#s~$tTp}t(ahFM`hQc_Ok4#&yF$GjZRF{Sy3c4Av94X{ToA@os+>&=^BU$KBpC9u6L_2OjLV zvgJK))z#IBKZ;#yIZSImB5YZYm7E}18kW^8n(+0LHay3s%r9QNXli9_Y^o$&rCfq> zt-Y>+K#)n8mmXJy`;!_rSPY47Y7?eettBF#vTx-Ew-Q+K79#o#aJ=U1K(xD;_+MgC Bc7^}| literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/Asset 21.png b/Mohem/src/assets/imgs/time-card/Asset 21.png new file mode 100644 index 0000000000000000000000000000000000000000..e03be489c7846989961a90d1982d92ca7f8c38e1 GIT binary patch literal 2875 zcmeH}dpy&98^@PQC33%{)weB*%uESXxuaR9-o>kTUdGNcS@B zC!4SvvywxKwQkID<8jP!gw0_N&+g~{=l}bU`;Y5&UEk~Vy}sY;`}zKHz0(o!i%JTb z3Lp?j$?cLeQsyH;pj|8bPqs3hsmwV8A4-j=eE;oDcW{;xMfr;R1rH-`ULseQ8D>OHdXuwFL2g_v z_2PfY6~E5u{A@&RKe8R;a=NDG!dz2zxel7$vSmzNX|Jr{9w)%4D?atCHZ%Hl_hmhbRv(p#GgpUr4oRwP0H6O-Ci(|DGuuIy_9)%VAyH6scs7HA{rdb zcNLb|SB0IcOPb>?36VOH$WzYC!7)(SOrtM6BeekXIeo7?1QGl|{#RT7? z7vzEIyscHqOWhlG#40uG4BqC_gy`-j9eoE5Bd#oV{u~QYp8WBHQ&?C?{Qd=*#xLba zMbq8$gRG>b(U#>hc+r{fJv}{keFA|mENNTdoeCS`0d{H#E8Ngpu@)^kDk{pKP28H4 zro!NW9y&EbQq$|{Rb*##=WsseA}s(RmV?Az_7$3;v*tyjqqBynh755=d$~xJo+>v} zfI~|UktM5#7lwBve($BtGnG(O#d+12RpRUP>8r0W*Ul-@!lnIZnVFr8;+c8W9Rp3A zDm^(xN&R1U-i~Fk()kWnIAMHJKB8P@_UR}og3f#D5PNTKEq1Jn#D8=DvDsT6wxsVT zGwjd3C6HIGh6W;w`fGpz_JF!)156)nh*eVGorA}}kK~F}XYFJ14LxY#+bf$Ne1(QR z#9h@K;==bcR0m6&b;&^4ix+Qj58QyAynVF3GK{Y;yGL|}`uXebZf3~vps#Hb#}s9J z9_?Q|l&~-gCc96x1ZA0;qMx)qD@OV-gRQrRg!QLrC|7{UE107C7bE)_OCSq#^Q96n z4P^kZ?M+YnPaQBO?=|s42*2SjU`Ck1ciH<9WmA|0yfj)+hulL$T?ZhOp67bJXebn5 zYwvP!fs;@kfGA7D#65r}#*g^c>rFMFP64(K)tdIU?vFmz5w}{&C63e+K`l4$QQYz; z%oSCP)%Tjr#;N`)J9=#AuyJg&gEZ&n$7UQK&KAKOdjm1TI0}omUFpKj5TO5C*05M-Z5;oYWv3HU zn%<)6T}?!;tv$8UYiaH`Yr38?!VPF5k#6 z)twz|i?o{9rI<=sdO6L>ETD4CBRa`p4JZ12r_t{FT! z#RveWtAjz&g!KnOYM=E(WSK@ry(p&7kOPE@H+=2~F-JWj?)jLi9^UYXx&P7zKe=#b z*@BLxC0o>w`+aEAZA?2-amK|4&(LDMYhL6Y3n=|1wO|RPv8*2QaQaxI0{#X=G4K)e z>DAkePdWr;hIN8oyR2F)jXP-LtP+N6R_ur59sdYjPt1-sp1X_gc*@lTo)3ek-#9AU zX($1UdMz$;CM^u&eNRu%3Yn-|AQP_kleGy}zFWbB`JTRi%A0vu1Q~>OhAPG8{4v?d zjXse~zGbYb4pc46?}oH98Qr@vWrlH~u)9ZE;zC~@^3T;ISq}JZOn04RbcRs1AC#Au zZ&eAuKgLM+_KiMT4hXf;&@glm)Z$l>bZH9|(IMf+FPanU8u;T{OwF%N;mfTXThve% ziT@kWDEqds0^w;isd7&w0c*t^Pzwy>6>gc6dWQspdt(Z?U>zi7Pqz3!SQry}O8GU{ z4fv*I**8930Cv=%lT!9-G%>B>6lkQy4C zc*qH`QxAOq9v?tRfW$03d`<#$rpA$DOIRt7nR_Ue`sjQ9 zJrn;w3Pg<0@aff+6?+^_OiV7sw*M8Wp?fO*%a;sUkC*7L_4Hn6wR1F%!E}U)we?pd z)%L&MF7*`}OWoTN$nIE}Mog7thA$(vC+yWFK7Hrps{9eY7474ON58kcJ`3X7+i90u zFIva(!mHke){4Zr1gBB~i-paQQDYUGJ?B;P<99NdoP9fR-&h4U;JA%QSL{L$sg)KE z`wwHvMRTTC+^3V8^SMJ=>O!K7hCyyF LaOZc9fe-%+7(*t3 literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/EarlyOut.png b/Mohem/src/assets/imgs/time-card/EarlyOut.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c3e48ec61f03bfa93108aca0aecaac3f866c82 GIT binary patch literal 557 zcmV+|0@D47P)eZ2|} zgR6^y$Dz;Z1ooVSl9YU}{L`E_)F?X)x)i}a^Hp&&W(#X-k6Dpf;jN3L4DWQ57;dJPN=!a}K=YO0+RwXMimhM(of?GLMkw+Ah-hK zpZXPCfnZcXa0L+^;0nkrc}JFIPr3ue&YNKdq|@EIcl)K~V!Pc^TS$uhl8DBbZbL*X z{*-C9IdzHF2!h;#h^~y=FSs`?)2xb_x6=x{KNx$+5w3qBqF+goFOni3ya&NhToX}| z6!{FQzYoDO%`S*2C8Do5VvSoOs+!dNrwW#7wkXq#?XFKmABpHm4fy~yM^OY>`lQHL zNs({)(-PULOfx3($x!ssNAieZgEzK8bOlAVnoRO@BS8)YikxLXX9H?#lI%D=FG1|! zR$O`|qTrAa3xg!vPZYDvcOcReHY3VB$wjSwLI!QK^SRQ4E)CS60y(*YTuM; zHVb$}VuaIj*bB8!bxDy|f*=p>os&ajkrerai0;K>ywQ0F06R>Ybq6YVW%U1 zsKG}_ihP6EIJWMe0|+t~Qw$|R>8Z~F>U~GjZ_K5UkOWzffg>p6UY%n|r8((WR&YHP zY;)?-LB~ke3*Y>h;6YsCxb-6`@@b1|%EZvKGD*|%PK@lrwcY~Gb}r=l#{`>VAMDdg z>})1KTX3L*^-n6dunDg7EU*L3+d6Wqn(5g?k4SPTdiLBN;>b@Sd0-}%fqx|G)#MFf&C?^`m+D@5f zW25+dGES!n2L$l$B*C2n`pT^}AN7AzZUM4_>53l9 zTafFi_0}#g?+GHVt;L}GmQq&;X2|Of6Zb{OL9JSA8NmlGG*B5iEafZ10YS(rvqSfc zj1WR@ghIpNRXeDaNk%FzUbR@MNOG*wqq;oS?K!hQ2*oO87reU(Z1o&sJ%lygxwy05 z2E7f;nu%UORL9N`ViVOEs3liRkp3z;S4Ql>9?$pYzKj90=pz6RjUhXmtJ`c)3m8S{ zL>;-cm@76f1Da1ukgIJ82luF<<`inw5pBW}CK8mVqnqd;Is#Ga=q)&Nn8mbHP9kU! o=K7KC%!-xnZ-}VQ{vJg18(M>J+LADP-v9sr07*qoM6N<$f{yi~5dZ)H literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/LateIn.png b/Mohem/src/assets/imgs/time-card/LateIn.png new file mode 100644 index 0000000000000000000000000000000000000000..829cf045d97e6b6dc21f464c330975626ff379d3 GIT binary patch literal 556 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 literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/Notification.png b/Mohem/src/assets/imgs/time-card/Notification.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ff12a76b80fbc7d231c96e9dbce437d5a44680 GIT binary patch literal 833 zcmV-H1HSx;P)K8m`zJv!I?{?&84J5e{Gi9{60NZRP+t*D}IMjh9fOnK$I zC4i}@n_X_-NM2X#Z+&LI@f=_GTq6Saj0V-1bhDxh-#85=5R%N9P12JUsX#J8piq*e zIP_qVYbjYIBeEhDvee8~GFQde33*oL985AHE4Jr%6&as>bYbuWVGzm0tk@zqMooq; zV-8g^H7in~8j?AaNe;}4R2XC_LzFDG^6f!#=1d})nH5humg#*-RXtV792F@O|2*X( zMU#xkilq@<-J?j_iuSL^qKhm0;Dd-&vPv=jf>^~^N|0nkR*Z!^CMni&qB3WUlA){^ z3$DG$VCL*4Y3G|0QXO7d;bpL_4p&`#%>OQ8%4L`;??k z{4OEt3BEUTc9OK)Xw;VR2H>k*n*0plH}U=98(wFx>(Qqulu!EItjxJ&#MICAs$QJF6b!2N5Tk^FY#C z2KD%8QMvwDVA6kZheP4fO0Josl(r2&+3kT6lYUdp*MCVyY@_|JcoTIq8|}W|nAhg@ zLZcJ~?#!6H{=ftcsxiT$@14Tl12Q8&v!>lW&&>Sdp>00000 LNkvXXu0mjfgWi4- literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/PlannedOT.png b/Mohem/src/assets/imgs/time-card/PlannedOT.png new file mode 100644 index 0000000000000000000000000000000000000000..188e7306086568752818007003e31afbbed9c34e GIT binary patch literal 447 zcmV;w0YLtVP)RpZ}ZVmp4xq%2D`A&g!E$N(IyRQHW1Mi84d z?TDg=8vu90=v9hPY*v@h;8a5Xe9nR9$reXU)_MluszHXxgwX|nWui=M)|Q0kEhn5Y3{{`3#povWQK*ZfP#2>U zngzdaQa91QxLxACZWi95eM0Duuu>iTc3eZo@g%Qcn?nrcNd=eCDO1k>6=H)^XdH9M z74NH#GA5ev!5DT_cak+M?F;Xi{=fb;AuE;tkSy9lgwZ7YmMYUK)CVfgIdX8^?IRey z5X;g{Ar#8pavuy~bnf>RuCfza;=<^miZr_T%TTCrUnP90&G)v0@HDkjkul09<16Ix+gcb<&D7tdJt=bM$ZE9s6_s}-6kXJ-H=$j`!S zvyk5MDyW>D0;m9-_8?bt>9wguLFFt(>}QW+O`?*={QIqUt$$o|fPx%-_;E7^@T=8$ z2jC%-&^$1V{s5SIZ94B90T{Rbd-U4OGRf6ry)Ae`lZM*blE>)sluJ&amR#%Zkl>JX zB==1aZOI`7Q-;v1m&&czCYH7+=ba}?mQg{LyMBipai*Ltyf$U1(Q9+7 zoW11Sdm=omkRte=$TgY98o6>*%Gq%%&C$5~+Pqd0Tv9|f5KKx{UYjMq;|1kx=Nf5} zTmksPnLZV|HrTzJ5RIVMh9XfaXRAQPd5Z_WFTY?-yDR!+9~1Q&2f=MgsU$_FJxbDK zk}3&_EfO;RMkr@5sItWFP052<1r_gM-mEB6C80$9Ig=cCwLXspKr0!xWX^(p*ctvULMX=6y0KO0Jh2H>l n{c$JstuEI-IECd}F#zxked4tykfMW^00000NkvXXu0mjfi-RW{ literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/Shift Hours.png b/Mohem/src/assets/imgs/time-card/Shift Hours.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2000b6f072b9db060177baea315c51089dee72 GIT binary patch literal 682 zcmV;b0#*HqP)>lXf00009a7bBm000XT z000XT0n*)m`~Uy~TuDShR9J<@nBQ&NFc8MS2zie;us3KH5F!px#BY3S*6TH5$?NJIzzo0{ zfJbL+8T+m*TEz=0f?VZwH9okIysmnl2xSoaz984+bu|Q_Pg{h~9KaJFXY9`)A+o}m ztg3LvE<6D@0O>;M1Fi1O8}n$Jo~P7#-3=f`hKJ-djTST1Nh$Ye`$$t z06xk*o&Vw*XDqkfM4pA1vn!=Db||auD&}6q+%g_Hc&fiTW2cM>0Cj)}vTFV9D(15@ zw$Onlk4V5i1d2%ELIV}8ghuzo?u=NbVt_Z>H#$8ha3=Ywu}Jw&ru?6beIdgmi6DJe zaTRiLL?NWeWXm3#B9kl{%fuNwleuFrTZYohqzJ{ZWD?YQQmtcm-XNtzn{65E)O&29 zpCV-2PK%AVWwv8wUEsER(#$C7`a1Gms|;bqs?DVrW6>QvU8;@IDj~B@q*yKzy10?X zNUVDx4OEJVzu#9OspUUK#GH+_c4+KbeKf+4O@=sy@sb1lZqb2E5-imBTNJ8%J}WCj2knc8SBHckv1 zppgtya$NaXUXK7Er)ymN$$_umYc6KN$uK3SmBr#hj~&>42Y@>OXhUeFxtMl!I5>ZM zE&yQO)zB|MGPpq1^7%8(#kz~bBTqzZFzRYx=y`$oOY?^Nn1ZLSoOvaqx!B@|BS>VJk_8oM-iUzj$dDw#w7T)>r$jF_+X8z4nu~%C#!sKV zAXH>D7Yk}Ke)#kgEX}CFhlHMd`3SmaDDALid+j6bq9_2(#gfjQMmYljj|OJr$Qk${ zv>{o8k-9zbj8QW^_FwaYq`#B2OW~ZEQyGxan*(d4a%iGD&NUZf!+o-c7$Qs_4n2iho506~HS1T>3ChE!d*rk*wjKF^1&KS5GT5 zZLxO2kftbd>T%^%rLZ?hWFLo;Son2cyGUCgFgPXf|=$12hK soZ5t1Ou^u6tdR(o>A9x#4F>@D0>9{;Y!RlQhX4Qo07*qoM6N<$f+a*QKmY&$ literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/SwipeOut.png b/Mohem/src/assets/imgs/time-card/SwipeOut.png new file mode 100644 index 0000000000000000000000000000000000000000..a84e1c9d1001259ef45cbff1c540e25a35c8efc8 GIT binary patch literal 618 zcmV-w0+s!VP){+X)m4|ujpF>X)7Vvh5|W7{+aGq~&&Q3f*DIL9q?iD}gqk@gJU$sW z+5oKxCdEwonw3KUh^UN%zSDGdNO-*XQxQyx9SsgYV+-wGNcgVCy}N|RuO^)ZOo}}K zJeo98z?f$3p~k)V!-XcD-E<(JDaJD&bT~MCxOqvvwAE2(A`%{-0pO^sXHr<}>&9A3 zJu--Jg+YWX3?gj8q}X^b0sz)biX)Svu?2B$Iic4|a}K%^7oQ3AQnJbN>e4$^v8||I z(~Qi?!e|-Yzdf5D?TWco4p4Q_8Nv$*(fY71MR1!=6#$+R9>{xSVj`SS38(XBT`E z@j)A3s$TR-gm$y*Gwzh9%yulwLY;laoi@t78%-RlaQWovb2+V*a*^%cqPRK@x%f;} zy4F0d?Gx|#zef`R;Mh#mUOsu8nTfUnV2C?8#2~^I1`)0>h;W5~oZ{5>cqqEvBm&r) zfYKLIOX(0Qk>v=WmVkVJNa2qxTV`f4&!dV@V-Z=Q$T=!YLKRpiUjyy*nOtcZc+by) zzb&ouotP9635t}Dnl{whk+#7~(pCm7$+YS?X%ztY0u4%_Dr_yNJpcdz07*qoM6N<$ Ef^hN`oB#j- literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/TimeBackIcon.png b/Mohem/src/assets/imgs/time-card/TimeBackIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..42f13fb513b33cf644f0a359341306d0cc841985 GIT binary patch literal 1346 zcmV-I1-<%-P)ME2};9xLs`t^74;pOFphLWr*4@7iZ z=f&^ACXJNI!1G-b(J`ya+tF5R$k0HXd?KPMtIEX)bDJ_Wwd7=bBD#MMs*Rx$E;sK* zwZVX7Re5jx~+|dUM4$0PyAA@QiyF3H{3s5IT?uckdM6*FrqyovR za!N$24gkD7LxY1$w2fp{=@xM40b+|_c^Csolt!|ubXxe*GUQA|o0c(O>%3TYTVk99 zH4*^f06Y@Ww9X5SGVb?$Y!DRENB~6013kZI-etPq77%9u*eK8V$)1SFX~8*%D|o4+ zzv{d=z6%f-_ICq>X|P#U{zpVViRdpP`rPu~6Ws8s&Wl|i0A3nE;9?I-fHOg4RXKwO zx_C5~k1hHF(u{qT2*L%%Uj~RhZ0Qky_sWIs@OYof0TJb=%-O_l8-RBgwt<7M!w_(TH!G$4hVd? z6wQrJ+5cVAiD<(W^GB7%6XOM%E9Da=0RcU(BZhk6+K$=)s~!oKqi~HL+!Pd;8pCIJ z#>JcDU>75ux+wIA%Um;!1u{duf(J75ufEb1NR+xo$}$)TCC}SiHM?eDhrsVc3ZGxI z*G9=OF$QWo&Vg9%(V>L9+!)7loET-R=DYcX*9ee$mW3#mSWJ99VRqGFJx6#X$b@l;;R|<$Z@~VsaUu$*%gltp2W#O`m zA|s}gZJift+(0ktUvc|{nqp`4!KN_S2c>*iYo#-s$}eRJx!0To;yhKQJn)Z|?4cQ< zHTAr3mu+<-&*(NbdIVs^PBC()jW^GFk)iK`E&PSXvely-P+EE(7Zwxw}K*NR>ThG}8CsunL_zc#Bz~(IsO182g_`yKLLFgJD zr!yeL69>RL912o8>dS|g6D%%UP+}JY3U=rnL)+?YPTP$2o_79~BVM|Bhu-2k07*qoM6N<$ Ef(5s0-~a#s literal 0 HcmV?d00001 diff --git a/Mohem/src/assets/imgs/time-card/Timeback.png b/Mohem/src/assets/imgs/time-card/Timeback.png new file mode 100644 index 0000000000000000000000000000000000000000..287f57abee790e564dda00697278e0cd5c677bfd GIT binary patch literal 9311 zcmV-lB%s@gP)UuS?!nkxLlRO5I4-#~ zIQg>QS4dN++iW-8Zc5r@FKxb$q?@GMXWNG6OE<~3>p;7Ow50(y%|c8rcET+XF6M57 zgN==`C47P&;MP2^#Lh=5s@SEmdENRF60NZ)`640( zRqWDP0ibr>`jVAOzmRZ875n(q`uRTM)_knGHKC0v_VMvo>;kG=6T+xsXU_^gT2l~i z7p8PnvCBg?fRpRimuw2hi&HA9*yZJwb?ZxZt8Ptbpo(37)~aqzXrPKcFbHnV#z?r> zP(>AcV0mlZ`jV}xTN4~qu?L8)&v+;?7<w>kb>>wDB1Y`|Qo2pN$b)IY{XunWWFYLt&Rg+Ke1eve zP~95Fgr(TseDUY`*-It!uqt>qgq7HNk#FK3q3)_oNOWd$bM%)AJ{mF^tNGme+O4Y| zDG%{(hb&MR^#*&pm?$K zvykE7u5f5gF)*xN1gDjJeuqWwMeN+e{V(TqX)2-75aE~qe$_*&+v5erik)BJyd}Vs zKeD2;ni2EmrEnRdG5lu{C3Zlg;h%H=?Ey5qozRs3VfBL%AJu^p#m>7dTlj>kupuTd z2ij$GM=pnf*tz#OhmWlQu+<6d{?qCQBi7wfl-T)YZqJ8{Urx|O>kzwo0gz?og**&n zvAZ9;P20Lu|wnHp4YjcA%`okqyYPMo9{|`A zZlVu4vGXP5Hp|_P-WrdDyiDk4r1GzLh>fw>^_fX9tS*4l5IrJdgr?YqABcPN{JVu~ z!e#@8kP&;J+?LpB$uQrZ11)dGM};Jx*bRBv(BCo3tqnzp-F>!p@_f4^dP90{sr=kr>& z$T1Kl?uzC1DTuNd##nC%R***y%WjyR0mGMW8#xcT!*k-3-K?>v^&EcfTu19@`=Mvq zxu^WSBdG`*_ugBmC@UW{vGYQIi}iV<6OBl|b1L*xMn6A+61z?xg@RSf@RbMFa6ivV z&Y-@I3oT9D|CieA=ouVDeRl_Hdpgm1b1)RdPJSR!o8rCq7AnS<4~p3Ni6W*YDu`d6 zP>=!hlFVTtxLsBt#GaO#f+xPU5x3>d_2b?2*n7HA)oMdSrvn!pt@xs+bM%@5D|X>M zFT8(mp&~Y62)Niu`8U={Trt)-q!do)T$W)1EB4vbr{U=zJcR^v0)wj&hamow_9h%@ zyTMgv3!PYVb3q0yOESj@m6g~tZn$uA=O^R#;i3DB zuwU8jZHc)> zs8Yn9tT$nabt)F8&%&is=kd$e-t^jjOpG3X^Tao>?9SUo_r0`qCu(Zy@X|{^5Pht_ z5I_IGwJZ4VhO4;V-#2{S{B_DCc5*^)k@)_i)giffBp_mEJs6FjV@2vcQ{4t=(#1YK zJ{5Om&c%G|w2|K(IrN!Vu@nFN$3K3K%5C}VNF~1ek3Zp_KmN%5c+oVYEIJoEq_diX0$+7AZSSQGv_Zy}0vyRqwX z70PT)a`s~Ls8aFKw>1(EQ z&!yPJg`JHJa`b+~in4N46s-)Z;N?gJV^ZECd1)pl z-6u`x#F~F?)+%hsTO(TNk%lQc8jsJNhnMmfAweh07ygFjW#vH~urd`pp9UZ~mTtW} z2T4mNNje7^fIhY0VdPnJrFJKxn3tN0HUJ3nzG$xkOjpR{J0AMf&iEN@XZ3vWOSlEm(|NSYdbqCt|-7pCOmTls5Y zjEa%c4V4KXg8$q6d^~7nYEV|(QT9o|A~aGh`&KFO^e9s_vLBg6-8d2Yqq7SYCG>@h z<{>LB1;&_YtX_3z2=quCG6;V2()T}E8Gx?SXFc-n%P!i6Nm5tVLo;DWj~%nd5*}HK zW3m@Dnvu1c3wWU`k(QQrw6r)dbEa}j%KxhJH2z|<`O13a{&$UeuEFU1tjBXMHCU5# z^vie4y7+_2vb&XyrY3dSWKQTbC|T%)t-GvGly3*KRc7S_$g9!dBR%V0NwM*asRMz;rXg7v0Xmo|P!I(q?a@Nlgn&#}JTnTqbvh#r!tBkg_xbhDqXYN{lWV#WU}jFzWL9Z+9{ge06mlcK&Ivs>(UR=5aNl{E@TGuXo|9~vf8L^g~IwopNGa+RuoqzXm?h0hadq4Kx zqUE@2!Mu^5SqT2Xfn#{}H`_VUM;hLQUQ#l?*ue|_CkvTn0LWt9{T4gFmXzA6XB5)8 zFZWDdfZMF&CnRlo%XHuhZ6bGkA6-ibb)CWGyZAzOcqz3z3}}5 z%qN?~Sa#~hlM2!hov0Um+|;-lECv66 zpZhLuv^&B&%HvJwK%=x4!lWc9m6xT_`d=Jry&v zC!^@DCCr5m-ktfI8BEpyGqLXDrVB_ZMmqhmInXDLeyZK~5^}kfREAr6fJGmNrHtH0$+%`I7+$HnDocx=Nnh&3AU>o;Cx-oJ3?M@Nq1Ku4!P=>pvAV`@;kM$-t+ zthq~)FX_{=^O=oQi8;ioy9?c49?F#`t(g=LCGH5V(7}fyPhGqmF`-D7l+2dAaNEo$ zA4+08H>Q|&VTN^?_)ud`Tsm@-LO1O-l0uQJ$+aZl5o@Z{vq~<(F`n3|K1p#|@z7ID zAblxoF->y;g=HwRv$HGYua_lXok73!k|#TF-$6+!z+T194@{}@Ws~#8C-jH9RTm(k z$VVTzmq{q{(xuB0CHORx5q}kA>+Z|4Q(1MAs~(pVC;B)gSakv7|C3PUFMjbKlFvm1 zA4xEpMK$`|4-e6=H_O_T{jCJ%<;c2z7MEf8E=-I z>SS?K5}-5aL>-f;H(|jf`m}&xviV1Uhw8cpNukKj0Bti9N|4CR0%@z7^5^b5Oy$aW z6FXI~J8_Qq1=RCXm1orjNOb@*^Z4^$ZKFO%%@<#=?v^4bokRqEgny?Q++)o&K2MBeCuqQra}%W zp~y%U{OwlBn;nSOs$|PfqA)bsjk8mktW^vNXhV^a?8@AcVMVGmS4O;6g(rN-QFJa$ zJf#a0PE~hFD6(MobWx$mBZm*k+9xHjN}4M}FLqjg-IOVQ#&mYlRGOwjnrFZNgyc|U zq#@Cj$(}7T1nDkzs-hoeiixBt7V#^XLLCx{e7IFs-fGoEYI?6PG7XaET>N&ysV%!cE?Vp%NQ;deu?wNd-~8u0 zA<&!9CeIR>ZTAJSi(ae|6)*nNXo(5TMTH9fh9V=Kv;c)4wR~EyXyPY}kHlC_l9PWF zg|ASgdrr)$(~%u(Cs>V=#O^m*+QF&LAbvY0Lj>+ZEo^My9*T_QY)5b8TH>V~?sxc+ zD3&Uz+?X!@)0k*bcK$jo8y_oioEQ~xeCNr>QQy?eRTFbh?>%?czwH;pop~mDzkSxeBYqidDzR(z;twMU zV37<7MUssTcK+A4~&0`mfMK5U(5*8E}uLcI1(c9ZQayjSE zox}gz{NqT!H35NYWI!{a6bbm6`X}{aNZE`JKiCh4qwSX8lh<>mPDRPa$0Pj~$_ka( zX(p6BA#rD#ty@T)bum;`UqZK!Vnn`T+%}sHcANL|beF2D(9+T(y5AE)1h0x+UIG*I z@qh^ZiSImz`sN#=kG0ubMz%z`)_5JwP0d_l70EXt@oR63n46lehy3DZB`&`9+zs0w zj4{#p*B74Q>fHyLpopE!EKbQtrxN@8ywMUInHiI~2Q9v=zBh~S%i6QD^u&!(5+r?D ztk4O){e#%?hj$}K?BF-|5qx8poty)WJ|c>?E~|RpZ^TcJp1>ztUbN&fd>`ouai^= zDLY{Ynt+MDeIT+|(i7t2+hx~r8 z<%6=3=Va~MxT*6Y8&KBe(0_5C1XuMO1Q zZ13*~R8uMnqPfR^u}k0-wb*-`#COoquZAC0Zskgs|DJ-r#ZGkxcWf_h*ZLcy^kk^d zDf*b&t|pqMRKlDp5nE*H2B^k;+zJ`(j_svX_1AiAbYDGz-e3QKz~wDsG%^_dh~sy+Q32aQdbeyK~TqfmZRZ z3`q!U>!lhKtArWEU$5x!-;If*jKp|~ohoIZ*G6aEt8S>$iZG9N(rOQ~mXs@O^P9;1z+-QS+$p5t7oGa9>uUD~C`R!eGbV*?s zTfU$=P9;1L>%thCs9j$+mK_rOcH+vYQJKi)W05WlrN2HhIEA~|-Cq<#*H!vV##7Db zsgG4rE+1ZPgiVAC6W`HJ>#vVlvE-T0zDMlY2D=B*d!24J^|ZZ;>Npi;^FgDyiN&Pr z4Yb!g#(;Z@oyxj9YUs)?w+(dTygE>gC~Dd}@TrK2B!Z!ydcnq+-5;2Uz2g#9CK|`l z#?#ctswj`Y)YgmYvtghQ+D59i%MQKLSN#pskaq}>W@<&uOc3@g9fQFSzRs9x9X9` zW*qDg@7@|OUZ8Dqw>K9C6BIVx3ShI?mO5(MG1NC1Is;v0y^4ktSTJcG^8%`VD7r$=7RC$uN2X*7+ zc=;6jj_swjG`TW__H#E}Lw)`y`gn5DQIB)BOVr1^+S)?pSl8!lqOMRp+2nBgMKC_S95JUd`kwbh6=9Fm`DRWr#~h z+!vODC+^ED=jnWIQzccVxxl#I$hczXzY?fMF74;+&Ve?1u@ZOY?Q`!@AMZ`*O4{ry zkPrjFQt+kcFQ86Dl`nyGX;yukuYsw6KP9W5r)k+a=+xRIL}tJhyllotwc@rOger6@ zSPA~4tM%C3OgG z(3Ae5L2N(2ciaK1r_jkBMK8Vd14->hDxQLGadhH|?~K0<&T~hP;VMO#k&tox7(lo4KGj*Hhg9oJa*Key1ihWSYr|2#5eFD1cJJDIyj`&#?n!`spaia#V ziyAySyKv;S?3^s_j}aGV!c$LuUDEkg#zF+|Yi{C?)t4j*J?q$KQU;}jO=8}xak)JA zOC6te>q|(~pK4}C8?ALt-!MW*1)}cE{*WB1`ASh#|T~}u$0%= zx~^J3}~m zqXs)Ke!%2hD&qKKbu}k+TB7^=U_N+I%3XKRj3Gsfo%fNba%RA}GaYC-M*r34&Itty zo(!hftbKxM!c`#oRb?gKs*{!uoObxIRQF|zKXG+Ws5brOtvmJNz#B&!(I;`TNq`9c z*Ohw|Qx%w`)RIshnXFM7MCgC9Ny~XkyLbVbTKbK9`OHSD$RL&2`A-#fD3VbBZuOAV zaHPPM&Sp;Vt$s{Ag$iV{Mk#a;4&s@E2l3x_Y2U~eyB+%D)akndqWpAsXf3-CilqK7 zb`Cmqb$`CdM(t$F$=-Inc5)Xkw@R`aDjr;Eci`E>hj5{Xt`@&QRDVC>KQ5Otc|`an zZB0^05jzj{r;ISr-mh!icST|sM(J@5;5X;@;Xu8lG*K0viuyV{ck*-8(`~dn2J7Cv zfV6Gf>!f-UlEluhReeFqIXY|FU}um&^pTf_oE}&yb zk|pMtR9-H1KuXv+Q3~%wNVV+X2MZN`ywxXdmCbORrp{ybN=>H?KRvnwXKa$Dq9cy8 zc02z5@B!?#vDw0t6T0-JkdoXN0lHPux3ZDn%)m^0g62=_xJd}h{1irA0(yrA@Sjy5 zVQ%v!{O>udV2si;J9oH2tob{as<5+>-M4H?WhD!tS4wqX1SDH_j7Dc9`R@eVr*&LP z0c*~+H{f56zKvsz>gEUD_`InR|8V#K-f3jF7(MagMd(hRk$M^j3-?8UiP$k(Ht&~G z&(rkr7X$s*=`!fXgIM`L)f~o~C;tnVTGR>y1Y1uJUOajTFP%MwYXfZNJ-`b+`UsP9 zhMPRgPD_EA*fA{lO;W;<1lN#DfAyX7%zb!)nl3xuJhvZP&y=CHSMs1qk=S~=@#g6h zc=Av=PIj>UCS@q}ZTu=ZX0Y+QW0BV^G zZi%11l9iwCjvSVqi@&d1U$Tid_uU=)r?u#5a12bkZ@R3ZlrwGDP}z13$$AsMlralS zGG;3}debvFh~v!-*jHbN%RODPwWI6rho#~GT-TT+_sJ%7(B!j=ffxKMEY4+2k8`Bo zKg+B!=-l$)M=oO|uUhzdOdh;jemueH(s=!y`#H$#^Aj_$C@mNH)@dv*fkRj;D_7Nn z<4p}XVQ<2*Ry#Ux-WG#zQNj0cSlySV_5K{^BY*4D=JR!NGqCQj!BQ>ewJJ8!t1fRXynFQF)w*C^3rk; zE3xP*shG>ExN6Vf04}uHaMFIA6L{Cq&0%43co#1VvBzC&MAXLzrRKW0BdgF62(g2) z;59l;pY@*U2Gh)>fQel=pK!{|SPN#Dt;jW7F*!a3$+3Z}A4$Z0v85T+Z8vbi(TXp6 zhOH`hO&a0)gm=p$c5~$!XikjQ=3&6od}5)j1Vrp$EORtd(qV2JK86= z_Xk4ky8Z#gRUBmHp9_dyUPnv7#10t*A7#?FTE9FqiMTbv6#IxEyc|#dpT9Pg6951N z1xZ9fR1%xOxk94?^%T_bYdtpyafP?kqvsvlp1S}8DRxuM6=)6}XX&;ekU~eG#SR$+ z4=xs;-k*4Pj+-MLT4KM|-Eu$PNBbcnc4EzAk5$4|%`O$2C!j({FvJd-1W&Ad%F5iN zm~68uc1B`1*3`*i%@GWtBUoaGOoAsEr&wB33TGr~Vn(MBRI!geb|SIs9UahrauiOx zw6cXhkUi?+i=c@e!-6Lx@b9rcFNxSB6ikMB>11vX6;kg1?6F5r!C6%+hsy$fX0({a0t_hx zUF;YZ{7Sx3u%uiXUl7ro7ia6^c+sn39~Had!X>yWtKjPC6L(Ynr;ZnT&=&@WgxE1G z_yT@U9N9KK5=0+6Kf@@z7Kvil_4Pwnc~MSFE>OV>U6x!Iv4o7+F)VlsFZi``wxiK% zdQEfE2jb>unzd#@_u(>)mOt<7eS)u*ofQ@asmIr|C)|q{J@3GJ$L&qLWSa2?beM zF*B@TDRxcY0JK-?;ksN8r>%|IeH#a1DV_IX`avWl#g0+8hTO1#Y)4J3eN3jMH*Qf* zQdD}p;>8|SQx8{NBZeC6fw1BNmAu=+rg|-7LRRb;b!)cB5sx1a61voQ)r+GsTe zB53Ep;7w;|?@d?Vpdr+*lMg9w3{~IU7m5?R03We=K3J|zgu)dU4d#@;6cj6V1aSZx zfjId4yd_j7h-gr>*ag-j%b0qql(=N{AATi{!yR+@jLiEt%$hGgT2->R8ht5Cwxv$0sqJe;s-zw z_Q*pC8Hb^ODs~C*-vEO6$wT-V{LeJw0ODT@14qF^6EU}|7Fz-U{s-`&iZYM27Lxz~ N002ovPDHLkV1gLhb)oV}No7^Z>ck6}^j(C)fru7$UaY$g(1}!5mA6E6llVAG;3%$BH{qT&pw0{V zZW3CNg59hm3%kcNTc4d^oT;!upZ&4aW^L^)nG_bnM*Y_K`jPE{)v?ZteVYYfY_>_3 z{?Ie_yp1|0k%|!VstN3FDpv^j*Sr{l~v`;h(C@{)OevT zU&XDjDJlfXTf~M?&mg>{up>+3E0Yl04+62gH&yQZsGmt7#vah&QKVX4cpZf&7JY=? z>t|Wl|HS1dBKn?)-bd!X$ENY-{f?CB%s$1~cL>VSxb;ooyM?;mS%d&-z`w*M1>WQH zH?Aibry&W}imWQXYZEF=QivPct!k1Q{}9o)#{CC%tpoQPBKntz{_@$ICIsn?e2(hs z$3K1>Ya7X`a;?;drDVEOY`_ zsvQ<533;P`R+Ud6yGQ0R#rrFv6<@NdJcdFAY~6*J71FE*SW@g^s>tRXu$Ybbd&K`T zTkyJikdk;n$>M^0H0w|f$>A*1c!e8U?=^-{l^dwd5z zKM>Kc>YgU~StZTmvxHV;2ux^h%`Rh3oflV0loFxhStIAehBjiVHUC-Z0ad$8$o1Sr z-b%Iup@y`K0IcUakO4EH^+`w#=2Uc==$%r~2o=WjTJ_D?m{QJLkj^2t0c{{jSq@0& zd8U)9zXaDu>K)lGIJ&SRri(Zd|HIpNzsmZq&iZ)U`(Je1&7M zM}fe%ha1%~OiuDPtIE!Hg?D9uU8wKpM(yR@$WV`BWpt7nX}o>v3$1*4GFsYn2*j z((FYlLX41s-*zoSV3&(Pnc+>YEwnvJ3=t!D7;Q|`-t?m$7pZO*pkrD{* zjil54z9RPiBU%WprQhdtK6L8W7p;Q$#Yj=p78VyGci*GkcEUw|@uGh15<9}t*dc3J zcR2*N@FKrWLMg&_<1z>dmIA94|7C~LNyWS%qW=KQ2aP&9uWWt*0000U*A>T)NGg&YCsdFCjh#AHQlm*w6jrn9riilY zrhu6xxv|VIV0qmFmeEbSGV=vwX;BFUf<{J*0$o)EiULgvL_z}CZqQb=Q$Nzw7Gv46 zELkk>=v?`lCOP*#cV^BH7|@`p(TM!>%(>^D$55x!0ir+ET73)vCh!H5!VB4RV-j!O zIsmM6|9f#^cA4IGw~)9ILBveJ<9NL1;a4{SU=0r@_?5+l*>w-UH}m9H+|^p0iMJvM z`d9#$#aTrQ&&0mGxG=jG#$~08+=v@3^CSv7G%?4~0)QnH`cl}J8V;EjHwwCf$H@RL z$p&o{`Vt9!Fqss0wN~eXJ{7>_xP%M6vA8h1lH6s4NoK^2R(cu$rc&l|*n+t(GicFs zzaWJyh#MD%GdZx*vM_5tht@pT3(?eyyIQMHqNsg@>(a_Rdyn!e^3;i&M6Jaec@%gl zfNPL~+z)N$^J=++7q_rbJQu*_q>-7t{^3E38$)`H0HPnOLS6`uM5yG3@SK!!;qdV{ z<<@FLsNzN!q><3ZOOxk#uzU|o@#CIfglermf!qK5u)U7Rt<{DQ7nIdneF}wL_Vg<+ z2{{~zZ-n52nI9%%XI6X4;-#gIV8o5S^_&N5oto`yA$@@7#Hf7Xa~UBK2}0axt(F{H z>-jY2V<_gyN5@_AuV)q=CZUUjcbxAj3V_i2)Vb~kfgXByCF^7e$IT> z9IjDjgy;)dZ6pzKqvc`3J7M|MP26tIT?v=4b2~*=dk^p8#_-p&W&b+2q9*#|HO}oI z%*TA{X-e8Bdf`pnDC~=tPS-}CI@g;N#9+LL+p@5mld(-zJ{OHGS62-DY!Wu%3{$tnWC2OSCY+)z?rN<*ZQy4&N!WyIw8V|^ z>D&@*9iY=2yB*>J^756dyyGf#O$MIq@$xt~tl8taSGm~V zdHXG@N>U)!avPM4onBm+owI$xDCj&4Q0)inCq73)k4Gk2q7&t4x)3(ww~HTreEr(> zM1+0w(Z>F9o`)lcUxjzx z{yrRk>o^=dcu@Kr-|XB4cE|ef&fVzyeQ#$IzTJJqZe+0a_%Ynx*@O-Z!7e*G#ptoq zDZpd?92DSjrvRPKQ1n~}3ej^r_}pv5qcA$O_j4~5hoM|7MduzL9f^KFf0W_Dg9q^W z>KCxKb`5Uayao3*lKE1lkvN}Qr=`NYkA{@&L*_z<-vhk-(ipt*%F8f5{yH3a?JyjD z{pkK{H#-mD+SXU_?}z_^jomF2>z*k0gvmrawEsLn(dgRNwzu}hz6;y1gI|J2-`?MQ z>=fXKrD1sY;0XMrJPMTPm+_(w1Z+%T-Hl(k(F*!;n^q0tH&HwJMM@J-f zN=107RD^P=6p8rZ*PF0>^A_Cx`Wx7| zcQ3kr!XASxx31L=rYqFVTeqWw@yXx!x=kEA`WpP|*T00{eY6CB`Rm`{=y#7q&yOA$ zg=0q!@Bi$(2VQ>4`paDpAvtX5yps24O$~rYxPWyQRzp&Xo*gII@bd|lLBW7tzcX{ zZt;H%^YGU&yED_+6gMSC`DLP7t8-DS?!>a!UtlQ}c$dy3&xjj+Hr3s}CRuIoT(Gb! z%K`?=_?c&pUY1+OYE#eb^l}0PKAyEdte3b|6P;Sri8b{wH)SbnF3MBl#@mzXj--=q zcEUR+vi4baTW+27R1$Z1u;Pi+0PsEloW+g(c1a7M?{AY!l00n#3oB#2oz=i%`QjN2Jv&*uam%f|{pzD2frzD{8`VIU zaz5r|PQ;D-DdM8lNeGgQTh-t0)r5xdOWQ(JBhKm{vz>P`U@+JP+jXJ3mYb}0@)*aW z(R#=E-nOlGV}J{6H3fi+TXo?;om!K})|w~oJl2{jp`Sgd2&QavEyu;Jx|k$!X9S5B z9LH=#P0+oO>3{Pc7GM}t(DA7#zMVPZToWT-7+nn&i+m2#1&k-&aCgt@p6k)ehgrQCmik%{iKoJV;u~USDP=cZD z?EtP^3oh`P#f90Y{An~o(~=guWwDxFH5T8t6rG9K7dJa;wN`H_CZY!|?zKPsOX_v( z_BDb>$|++-I1};`rdEuh$Yd?(v?X5~lJvKsN0}M9CfR@)s55A(&nO6+joP;27NAR_ zTCrm_t+rd-Iw!X_%8f`AmP2B5im%SO+*xk?)~bdCt&cS(ytC>c`lV|0R&7to>s9@( zYQ0a`m{Uk7W2?|J61GJ@oA)$PjgnYjyV(#oSd57h@=Qt0kBo!)*b_E|jp$@7S}$XJ zM%dy1RgBC54|Q}On~tvC7K36tPZE}hTbR)W?u4C)oAbF0wKFDBBBrqu?Q z#;~ur@iwQrP$Aztzvzh6$wHD7*X30wfrhMi&XBC?>4j4lHcs4g8eze5LNii`%7C-Bdda1f zRSWHXjWC>x<86~~sMG04zqnefuV~I4WCf>I|0uj8RPfMQ(4>VnCh;%ZXzOc(YOTJc zIX+~5abebrO9C3=X1Ah0YyPhHUEYrH+9ojRUZ=z<6j~@`W=NKOnNS^A<^g& zpI=TTal_spH>c@qu|ICyS7H_3Iw$ZL7al_qeG9vpuJFeMb3&xR@a|`tKW_c*9fyv% z$MD0@StYZ;ed6(N{E)^_?0ms1X408_30gu6-gUt@UgJjyu7xW2xvyxxFNu8a%HoD6 zU5h@}{GDF?F2W85>n+BQl5nrICJ1A-j&6z5sa~UuiEu$zR9D#NlUg^JjK`ibC{jI# z+qOjDumTj#H5Q;dl9(aW7B?;oO?sAGB!Pzwem<%dS)8`7oydNeSZ-eNao*q*B=A7N z&*h@Q)lDZI#?)F+c2lj@mkl>kPWwotA>^>z>$MwVNkV%Q{xEO;PT5cX;))mT=< zjsEu}2|V3k6w5@|?DMaL(gDGiuXQ8HNrgafgpMmT&GZ|8`;CC)=j-^E=hgtEd(5h5IM3_Bk zt4Jd?kt}cG2KxeMe2A8uA}U>AjcLQu9g~x)wU1YEgS|Mo2y;~$wBX#sfeXS(UH*@E zaf6-wgjG;X^bI)0WpTB9~CusWlLZikpL_Ou7{xGBi=>&PG)D0F6NfMeV{M zaDv=US0xB>!;_HJl7m~T2p=xAWNXH`YXm`8EJr?i(L(<^6Cu`M#0~a0d}O#3Qkyak zx*U_9Tg7EAtQwTKIoKCv&aoBmro~&B`Rx8AbjA|f!TJ8Xr_vY=i6cmHgZ%^_U3mAX z<*x2gD=HQaH&n#VR%3y*cgyr9Sg_*epfBEVynr%AY@r4yT%Xogm1YRl>8=T0+#KBa z(e30<_IF6N^!G!7vwt6 zhLdV>i=a>Ldgm^5nrNkS;Zw(v8F6!joQq0MT$UE@x@Izm#)Qm?TLd?QrabO=`XY5{ z1WAx-adXf&pA>R5(rD4Sg%aIFlcO&F(OeV11ElY4C`qD-&#oY~xT|9ixwQLJ{ zEo*3