@ajf/calendars 13.0.0-next.2 → 13.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/ethiopian/calendar-module.mjs +40 -0
- package/{esm2015/ethiopian/calendar-service.js → esm2020/ethiopian/calendar-service.mjs} +10 -8
- package/esm2020/ethiopian/converter.mjs +154 -0
- package/esm2020/ethiopian/ethiopian-date-pipe.mjs +47 -0
- package/esm2020/ethiopian/ethiopian-date.mjs +204 -0
- package/esm2020/ethiopian/ethiopian_public_index.mjs +5 -0
- package/esm2020/ethiopian/index.mjs +23 -0
- package/{esm2015/ethiopian/public-api.js → esm2020/ethiopian/public-api.mjs} +0 -0
- package/esm2020/ethiopian/utils.mjs +53 -0
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/{esm2015/version.js → esm2020/version.mjs} +1 -1
- package/ethiopian/calendar-module.d.ts +5 -21
- package/ethiopian/calendar-service.d.ts +3 -0
- package/ethiopian/converter.d.ts +1 -5
- package/ethiopian/ethiopian-date-pipe.d.ts +4 -0
- package/ethiopian/ethiopian-date.d.ts +11 -1
- package/ethiopian/ethiopian_public_index.d.ts +4 -0
- package/ethiopian/index.d.ts +19 -1
- package/ethiopian/package.json +6 -6
- package/fesm2015/{calendars.js → calendars.mjs} +2 -2
- package/fesm2015/calendars.mjs.map +1 -0
- package/fesm2015/{ethiopian.js → ethiopian.mjs} +137 -54
- package/fesm2015/ethiopian.mjs.map +1 -0
- package/fesm2020/calendars.mjs +72 -0
- package/fesm2020/calendars.mjs.map +1 -0
- package/fesm2020/ethiopian.mjs +750 -0
- package/fesm2020/ethiopian.mjs.map +1 -0
- package/package.json +30 -8
- package/bundles/calendars-ethiopian.umd.js +0 -984
- package/bundles/calendars-ethiopian.umd.js.map +0 -1
- package/bundles/calendars.umd.js +0 -80
- package/bundles/calendars.umd.js.map +0 -1
- package/esm2015/calendars.externs.js +0 -0
- package/esm2015/ethiopian/calendar-module.js +0 -41
- package/esm2015/ethiopian/converter.js +0 -140
- package/esm2015/ethiopian/ethiopian-date-pipe.js +0 -41
- package/esm2015/ethiopian/ethiopian-date.js +0 -188
- package/esm2015/ethiopian/ethiopian.externs.js +0 -6
- package/esm2015/ethiopian/index.js +0 -5
- package/esm2015/ethiopian/utils.js +0 -27
- package/ethiopian/index.metadata.json +0 -1
- package/fesm2015/calendars.js.map +0 -1
- package/fesm2015/ethiopian.js.map +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (C) Gnucoop soc. coop.
|
|
4
|
+
*
|
|
5
|
+
* This file is part of the Advanced JSON forms (ajf).
|
|
6
|
+
*
|
|
7
|
+
* Advanced JSON forms (ajf) is free software: you can redistribute it and/or
|
|
8
|
+
* modify it under the terms of the GNU Affero General Public License as
|
|
9
|
+
* published by the Free Software Foundation, either version 3 of the License,
|
|
10
|
+
* or (at your option) any later version.
|
|
11
|
+
*
|
|
12
|
+
* Advanced JSON forms (ajf) is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
|
|
15
|
+
* General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU Affero General Public License
|
|
18
|
+
* along with Advanced JSON forms (ajf).
|
|
19
|
+
* If not, see http://www.gnu.org/licenses/.
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
import { AjfCalendarService } from '@ajf/core/calendar';
|
|
23
|
+
import { NgModule } from '@angular/core';
|
|
24
|
+
import { AjfEthiopianCalendarService } from './calendar-service';
|
|
25
|
+
import { AjfEthiopianDatePipe } from './ethiopian-date-pipe';
|
|
26
|
+
import * as i0 from "@angular/core";
|
|
27
|
+
export class AjfEthiopianCalendarModule {
|
|
28
|
+
}
|
|
29
|
+
AjfEthiopianCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
30
|
+
AjfEthiopianCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianCalendarModule, declarations: [AjfEthiopianDatePipe], exports: [AjfEthiopianDatePipe] });
|
|
31
|
+
AjfEthiopianCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianCalendarModule, providers: [{ provide: AjfCalendarService, useClass: AjfEthiopianCalendarService }] });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianCalendarModule, decorators: [{
|
|
33
|
+
type: NgModule,
|
|
34
|
+
args: [{
|
|
35
|
+
declarations: [AjfEthiopianDatePipe],
|
|
36
|
+
exports: [AjfEthiopianDatePipe],
|
|
37
|
+
providers: [{ provide: AjfCalendarService, useClass: AjfEthiopianCalendarService }],
|
|
38
|
+
}]
|
|
39
|
+
}] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NhbGVuZGFycy9ldGhpb3BpYW4vY2FsZW5kYXItbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVILE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBTzNELE1BQU0sT0FBTywwQkFBMEI7OzRIQUExQiwwQkFBMEI7NkhBQTFCLDBCQUEwQixpQkFKdEIsb0JBQW9CLGFBQ3pCLG9CQUFvQjs2SEFHbkIsMEJBQTBCLGFBRjFCLENBQUMsRUFBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFDLENBQUM7Z0dBRXRFLDBCQUEwQjtrQkFMdEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQy9CLFNBQVMsRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBQyxDQUFDO2lCQUNsRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtBamZDYWxlbmRhclNlcnZpY2V9IGZyb20gJ0BhamYvY29yZS9jYWxlbmRhcic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtBamZFdGhpb3BpYW5DYWxlbmRhclNlcnZpY2V9IGZyb20gJy4vY2FsZW5kYXItc2VydmljZSc7XG5pbXBvcnQge0FqZkV0aGlvcGlhbkRhdGVQaXBlfSBmcm9tICcuL2V0aGlvcGlhbi1kYXRlLXBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBamZFdGhpb3BpYW5EYXRlUGlwZV0sXG4gIGV4cG9ydHM6IFtBamZFdGhpb3BpYW5EYXRlUGlwZV0sXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBBamZDYWxlbmRhclNlcnZpY2UsIHVzZUNsYXNzOiBBamZFdGhpb3BpYW5DYWxlbmRhclNlcnZpY2V9XSxcbn0pXG5leHBvcnQgY2xhc3MgQWpmRXRoaW9waWFuQ2FsZW5kYXJNb2R1bGUge31cbiJdfQ==
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
* If not, see http://www.gnu.org/licenses/.
|
|
20
20
|
*
|
|
21
21
|
*/
|
|
22
|
-
import { AjfCalendarService } from '@ajf/core/calendar';
|
|
22
|
+
import { AjfCalendarService, } from '@ajf/core/calendar';
|
|
23
23
|
import { Injectable } from '@angular/core';
|
|
24
|
-
import { addDays, addWeeks, addYears, endOfISOWeek, getISODay, setISODay, startOfISOWeek, startOfWeek, subWeeks } from 'date-fns';
|
|
24
|
+
import { addDays, addWeeks, addYears, endOfISOWeek, getISODay, setISODay, startOfISOWeek, startOfWeek, subWeeks, } from 'date-fns';
|
|
25
25
|
import { EthiopianDate } from './ethiopian-date';
|
|
26
26
|
import * as i0 from "@angular/core";
|
|
27
27
|
function getMonthDays(month, year) {
|
|
@@ -187,7 +187,7 @@ export class AjfEthiopianCalendarService extends AjfCalendarService {
|
|
|
187
187
|
const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);
|
|
188
188
|
let curYear = ecDate.getFullYear();
|
|
189
189
|
let firstYear = curYear - (curYear % 10) + 1;
|
|
190
|
-
let curDate = EthiopianDate.ethiopianToGregorian(firstYear,
|
|
190
|
+
let curDate = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);
|
|
191
191
|
let rows = [];
|
|
192
192
|
for (let i = 0; i < 4; i++) {
|
|
193
193
|
let row = [];
|
|
@@ -203,8 +203,10 @@ export class AjfEthiopianCalendarService extends AjfCalendarService {
|
|
|
203
203
|
return rows;
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
|
-
AjfEthiopianCalendarService.ɵ
|
|
207
|
-
AjfEthiopianCalendarService
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2NhbGVuZGFyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUdMLGtCQUFrQixFQUduQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxFQUNULE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFL0MsU0FBUyxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDL0MsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1FBQ2QsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFtQjtJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQWEsQ0FB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QzdDLElBQUksT0FBTyxHQUFTLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLElBQUksSUFBSSxHQUF5QixFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEdBQUcsR0FBdUIsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QixJQUFJLFFBQVEsR0FBcUIsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUM5RSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7WUExS0YsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtcbiAgQWpmQ2FsZW5kYXJFbnRyeSxcbiAgQWpmQ2FsZW5kYXJQYXJhbXMsXG4gIEFqZkNhbGVuZGFyU2VydmljZSxcbiAgQWpmQ2FsZW5kYXJWaWV3LFxuICBBamZDYWxlbmRhclZpZXdNb2RlXG59IGZyb20gJ0BhamYvY29yZS9jYWxlbmRhcic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYWRkRGF5cyxcbiAgYWRkV2Vla3MsXG4gIGFkZFllYXJzLFxuICBlbmRPZklTT1dlZWssXG4gIGdldElTT0RheSxcbiAgc2V0SVNPRGF5LFxuICBzdGFydE9mSVNPV2VlayxcbiAgc3RhcnRPZldlZWssXG4gIHN1YldlZWtzXG59IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHtFdGhpb3BpYW5EYXRlfSBmcm9tICcuL2V0aGlvcGlhbi1kYXRlJztcblxuZnVuY3Rpb24gZ2V0TW9udGhEYXlzKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChtb250aCA8IDEyKSB7XG4gICAgcmV0dXJuIDMwO1xuICB9XG4gIHJldHVybiB5ZWFyICUgNCA9PT0gMyA/IDYgOiA1O1xufVxuXG5mdW5jdGlvbiBnZXRNb250aEJvdW5kcyhkYXRlOiBFdGhpb3BpYW5EYXRlKToge3N0YXJ0OiBFdGhpb3BpYW5EYXRlLCBlbmQ6IEV0aGlvcGlhbkRhdGV9IHtcbiAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IHN0YXJ0ID0gbmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpO1xuICBjb25zdCBlbmREYXkgPSBnZXRNb250aERheXMobW9udGgsIHllYXIpO1xuICBjb25zdCBlbmQgPSBuZXcgRXRoaW9waWFuRGF0ZSh5ZWFyLCBtb250aCwgZW5kRGF5KTtcbiAgcmV0dXJuIHtzdGFydCwgZW5kfTtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQWpmRXRoaW9waWFuQ2FsZW5kYXJTZXJ2aWNlIGV4dGVuZHMgQWpmQ2FsZW5kYXJTZXJ2aWNlIHtcbiAgb3ZlcnJpZGUgYnVpbGRWaWV3KHBhcmFtczogQWpmQ2FsZW5kYXJQYXJhbXMpOiBBamZDYWxlbmRhclZpZXcge1xuICAgIGNvbnN0IHt2aWV3TW9kZX0gPSBwYXJhbXM7XG4gICAgY29uc3Qgdmlld0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHBhcmFtcy52aWV3RGF0ZSk7XG4gICAgc3dpdGNoICh2aWV3TW9kZSkge1xuICAgICAgY2FzZSAnZGVjYWRlJzpcbiAgICAgICAgbGV0IGN1clllYXI6IG51bWJlciA9IHZpZXdEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGxldCBmaXJzdFllYXIgPSBjdXJZZWFyIC0gKGN1clllYXIgJSAxMCkgKyAxO1xuICAgICAgICBsZXQgbGFzdFllYXIgPSBmaXJzdFllYXIgKyAxMTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWFkZXI6IGAke2ZpcnN0WWVhcn0gLSAke2xhc3RZZWFyfWAsXG4gICAgICAgICAgaGVhZGVyUm93OiBbXSxcbiAgICAgICAgICByb3dzOiB0aGlzLl9lY0RlY2FkZUNhbGVuZGFyUm93cyhwYXJhbXMpLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVhZGVyOiBgJHt2aWV3RGF0ZS5nZXRGdWxsWWVhcigpfWAsXG4gICAgICAgICAgaGVhZGVyUm93OiBbXSxcbiAgICAgICAgICByb3dzOiB0aGlzLl9lY1llYXJDYWxlbmRhclJvd3MocGFyYW1zKSxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgY29uc3QgdmlldyA9IHN1cGVyLmJ1aWxkVmlldyhwYXJhbXMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhlYWRlcjogYCR7dmlld0RhdGUuZ2V0U2hvcnRNb250aE5hbWUoKX0gJHt2aWV3RGF0ZS5nZXRGdWxsWWVhcigpfWAsXG4gICAgICAgICAgaGVhZGVyUm93OiB0aGlzLl9lY01vbnRoSGVhZGVyUm93KHBhcmFtcyksXG4gICAgICAgICAgcm93czogdmlldy5yb3dzLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuYnVpbGRWaWV3KHBhcmFtcyk7XG4gIH1cblxuICBvdmVycmlkZSBlbnRyeUxhYmVsKGVudHJ5OiBBamZDYWxlbmRhckVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGVudHJ5LmRhdGUpO1xuICAgIGlmIChlbnRyeS50eXBlID09PSAnZGF5Jykge1xuICAgICAgcmV0dXJuIGAke2VjRGF0ZS5nZXREYXRlKCl9YDtcbiAgICB9XG4gICAgaWYgKGVudHJ5LnR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHJldHVybiBgJHtlY0RhdGUuZ2V0TW9udGhOYW1lKCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke2VjRGF0ZS5nZXRGdWxsWWVhcigpfWA7XG4gIH1cblxuICBvdmVycmlkZSBtb250aEJvdW5kcyhkYXRlOiBEYXRlLCBpc29Nb2RlOiBib29sZWFuKToge3N0YXJ0OiBEYXRlLCBlbmQ6IERhdGV9IHtcbiAgICBpZiAoIWlzb01vZGUpIHtcbiAgICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZGF0ZSk7XG4gICAgICBjb25zdCB7c3RhcnQsIGVuZH0gPSBnZXRNb250aEJvdW5kcyhlY0RhdGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQ6IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4oc3RhcnQpLFxuICAgICAgICBlbmQ6IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4oZW5kKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc29EYXkgPSBnZXRJU09EYXkoZGF0ZSk7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGRhdGUpO1xuICAgICAgbGV0IHtzdGFydCwgZW5kfSA9IGdldE1vbnRoQm91bmRzKGVjRGF0ZSk7XG4gICAgICBpZiAoZWNEYXRlLmdldE1vbnRoKCkgPT09IDEyKSB7XG4gICAgICAgIHN0YXJ0ID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihzdGFydE9mSVNPV2VlayhzdGFydC5nZXRHcmVnb3JpYW5EYXRlKCkpKTtcbiAgICAgICAgZW5kID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihlbmRPZklTT1dlZWsoZW5kLmdldEdyZWdvcmlhbkRhdGUoKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZSA9IGlzb0RheSA8IDQgPyBlbmRPZklTT1dlZWsoZGF0ZSkgOiBzdGFydE9mSVNPV2VlayhkYXRlKTtcbiAgICAgICAgY29uc3Qgc3RhcnRXZWVrRGF5ID0gc3RhcnQuZ2V0RGF5KCk7XG4gICAgICAgIGNvbnN0IGVuZFdlZWtEYXkgPSBlbmQuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChzdGFydFdlZWtEYXkgPT0gMCB8fCBzdGFydFdlZWtEYXkgPiA0KSB7XG4gICAgICAgICAgc3RhcnQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGFkZFdlZWtzKHN0YXJ0LmdldEdyZWdvcmlhbkRhdGUoKSwgMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRXZWVrRGF5ID4gMCAmJiBlbmRXZWVrRGF5IDwgNCkge1xuICAgICAgICAgIGVuZCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oc3ViV2Vla3MoZW5kLmdldEdyZWdvcmlhbkRhdGUoKSwgMSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogc3RhcnRPZklTT1dlZWsoc3RhcnQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSxcbiAgICAgICAgZW5kOiBlbmRPZklTT1dlZWsoZW5kLmdldEdyZWdvcmlhbkRhdGUoKSksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5leHRWaWV3KHZpZXdEYXRlOiBEYXRlLCB2aWV3TW9kZTogQWpmQ2FsZW5kYXJWaWV3TW9kZSk6IERhdGUge1xuICAgIGlmICh2aWV3TW9kZSA9PT0gJ21vbnRoJykge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSk7XG4gICAgICBsZXQgeWVhciA9IGVjRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgbGV0IG1vbnRoID0gZWNEYXRlLmdldE1vbnRoKCk7XG4gICAgICBpZiAobW9udGggPT09IDEyKSB7XG4gICAgICAgIG1vbnRoID0gMDtcbiAgICAgICAgeWVhciArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW9udGggKz0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBFdGhpb3BpYW5EYXRlLmV0aGlvcGlhblRvR3JlZ29yaWFuKG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIG1vbnRoLCAxKSk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5uZXh0Vmlldyh2aWV3RGF0ZSwgdmlld01vZGUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgcHJldmlvdXNWaWV3KHZpZXdEYXRlOiBEYXRlLCB2aWV3TW9kZTogQWpmQ2FsZW5kYXJWaWV3TW9kZSk6IERhdGUge1xuICAgIGlmICh2aWV3TW9kZSA9PT0gJ21vbnRoJykge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSk7XG4gICAgICBsZXQgeWVhciA9IGVjRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgbGV0IG1vbnRoID0gZWNEYXRlLmdldE1vbnRoKCk7XG4gICAgICBpZiAobW9udGggPT09IDApIHtcbiAgICAgICAgbW9udGggPSAxMjtcbiAgICAgICAgeWVhciAtPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW9udGggLT0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBFdGhpb3BpYW5EYXRlLmV0aGlvcGlhblRvR3JlZ29yaWFuKG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIG1vbnRoLCAxKSk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5wcmV2aW91c1ZpZXcodmlld0RhdGUsIHZpZXdNb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VjTW9udGhIZWFkZXJSb3cocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB7aXNvTW9kZSwgdmlld0RhdGV9ID0gcGFyYW1zO1xuICAgIGxldCBjdXJEYXRlOiBEYXRlO1xuICAgIGlmIChpc29Nb2RlKSB7XG4gICAgICBjdXJEYXRlID0gc2V0SVNPRGF5KHN0YXJ0T2ZXZWVrKHZpZXdEYXRlKSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1ckRhdGUgPSBzdGFydE9mV2Vlayh2aWV3RGF0ZSk7XG4gICAgfVxuICAgIGxldCB3ZWVrRGF5TmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oY3VyRGF0ZSk7XG4gICAgICB3ZWVrRGF5TmFtZXMucHVzaChlY0RhdGUuZ2V0RGF5T2ZXZWVrKCkpO1xuICAgICAgY3VyRGF0ZSA9IGFkZERheXMoY3VyRGF0ZSwgMSk7XG4gICAgfVxuICAgIHJldHVybiB3ZWVrRGF5TmFtZXM7XG4gIH1cblxuICBwcml2YXRlIF9lY1llYXJDYWxlbmRhclJvd3MocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyRW50cnlbXVtdIHtcbiAgICBjb25zdCB7dmlld0RhdGUsIHNlbGVjdGlvbn0gPSBwYXJhbXM7XG4gICAgY29uc3QgeWVhciA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4odmlld0RhdGUpLmdldEZ1bGxZZWFyKCk7XG4gICAgbGV0IGN1ckRhdGU6IEV0aGlvcGlhbkRhdGU7XG5cbiAgICBsZXQgcm93czogQWpmQ2FsZW5kYXJFbnRyeVtdW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSA0OyBpKyspIHtcbiAgICAgIGxldCByb3c6IEFqZkNhbGVuZGFyRW50cnlbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgY29uc3QgY3VyTW9udGggPSBpICogMyArIGo7XG4gICAgICAgIGlmIChjdXJNb250aCA8IDEzKSB7XG4gICAgICAgICAgY3VyRGF0ZSA9IG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIGN1ck1vbnRoLCAxKTtcbiAgICAgICAgICBsZXQgZGF0ZSA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4oY3VyRGF0ZSk7XG4gICAgICAgICAgbGV0IG5ld0VudHJ5OiBBamZDYWxlbmRhckVudHJ5ID0ge3R5cGU6ICdtb250aCcsIGRhdGUsIHNlbGVjdGVkOiAnbm9uZSd9O1xuICAgICAgICAgIG5ld0VudHJ5LnNlbGVjdGVkID0gdGhpcy5pc0VudHJ5U2VsZWN0ZWQobmV3RW50cnksIHNlbGVjdGlvbik7XG4gICAgICAgICAgcm93LnB1c2gobmV3RW50cnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByb3dzLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIHByaXZhdGUgX2VjRGVjYWRlQ2FsZW5kYXJSb3dzKHBhcmFtczogQWpmQ2FsZW5kYXJQYXJhbXMpOiBBamZDYWxlbmRhckVudHJ5W11bXSB7XG4gICAgY29uc3Qge3ZpZXdEYXRlLCBzZWxlY3Rpb259ID0gcGFyYW1zO1xuICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4odmlld0RhdGUpO1xuICAgIGxldCBjdXJZZWFyOiBudW1iZXIgPSBlY0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBsZXQgZmlyc3RZZWFyID0gY3VyWWVhciAtIChjdXJZZWFyICUgMTApICsgMTtcbiAgICBsZXQgY3VyRGF0ZTogRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4oZmlyc3RZZWFyLCAxLCAxKTtcblxuICAgIGxldCByb3dzOiBBamZDYWxlbmRhckVudHJ5W11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICBsZXQgcm93OiBBamZDYWxlbmRhckVudHJ5W10gPSBbXTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgMzsgaisrKSB7XG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoY3VyRGF0ZSk7XG4gICAgICAgIGxldCBuZXdFbnRyeTogQWpmQ2FsZW5kYXJFbnRyeSA9IHt0eXBlOiAneWVhcicsIGRhdGU6IGRhdGUsIHNlbGVjdGVkOiAnbm9uZSd9O1xuICAgICAgICBuZXdFbnRyeS5zZWxlY3RlZCA9IHRoaXMuaXNFbnRyeVNlbGVjdGVkKG5ld0VudHJ5LCBzZWxlY3Rpb24pO1xuICAgICAgICByb3cucHVzaChuZXdFbnRyeSk7XG4gICAgICAgIGN1ckRhdGUgPSBhZGRZZWFycyhjdXJEYXRlLCAxKTtcbiAgICAgIH1cbiAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG59XG4iXX0=
|
|
206
|
+
AjfEthiopianCalendarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianCalendarService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
207
|
+
AjfEthiopianCalendarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianCalendarService, providedIn: 'root' });
|
|
208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianCalendarService, decorators: [{
|
|
209
|
+
type: Injectable,
|
|
210
|
+
args: [{ providedIn: 'root' }]
|
|
211
|
+
}] });
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2NhbGVuZGFyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUdMLGtCQUFrQixHQUduQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxHQUNULE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFL0MsU0FBUyxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDL0MsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1FBQ2QsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFtQjtJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQWEsQ0FB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QzdDLElBQUksT0FBTyxHQUFTLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLElBQUksSUFBSSxHQUF5QixFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEdBQUcsR0FBdUIsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QixJQUFJLFFBQVEsR0FBcUIsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUM5RSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OzZIQXpLVSwyQkFBMkI7aUlBQTNCLDJCQUEyQixjQURmLE1BQU07Z0dBQ2xCLDJCQUEyQjtrQkFEdkMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7XG4gIEFqZkNhbGVuZGFyRW50cnksXG4gIEFqZkNhbGVuZGFyUGFyYW1zLFxuICBBamZDYWxlbmRhclNlcnZpY2UsXG4gIEFqZkNhbGVuZGFyVmlldyxcbiAgQWpmQ2FsZW5kYXJWaWV3TW9kZSxcbn0gZnJvbSAnQGFqZi9jb3JlL2NhbGVuZGFyJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBhZGREYXlzLFxuICBhZGRXZWVrcyxcbiAgYWRkWWVhcnMsXG4gIGVuZE9mSVNPV2VlayxcbiAgZ2V0SVNPRGF5LFxuICBzZXRJU09EYXksXG4gIHN0YXJ0T2ZJU09XZWVrLFxuICBzdGFydE9mV2VlayxcbiAgc3ViV2Vla3MsXG59IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHtFdGhpb3BpYW5EYXRlfSBmcm9tICcuL2V0aGlvcGlhbi1kYXRlJztcblxuZnVuY3Rpb24gZ2V0TW9udGhEYXlzKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChtb250aCA8IDEyKSB7XG4gICAgcmV0dXJuIDMwO1xuICB9XG4gIHJldHVybiB5ZWFyICUgNCA9PT0gMyA/IDYgOiA1O1xufVxuXG5mdW5jdGlvbiBnZXRNb250aEJvdW5kcyhkYXRlOiBFdGhpb3BpYW5EYXRlKToge3N0YXJ0OiBFdGhpb3BpYW5EYXRlOyBlbmQ6IEV0aGlvcGlhbkRhdGV9IHtcbiAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IHN0YXJ0ID0gbmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpO1xuICBjb25zdCBlbmREYXkgPSBnZXRNb250aERheXMobW9udGgsIHllYXIpO1xuICBjb25zdCBlbmQgPSBuZXcgRXRoaW9waWFuRGF0ZSh5ZWFyLCBtb250aCwgZW5kRGF5KTtcbiAgcmV0dXJuIHtzdGFydCwgZW5kfTtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQWpmRXRoaW9waWFuQ2FsZW5kYXJTZXJ2aWNlIGV4dGVuZHMgQWpmQ2FsZW5kYXJTZXJ2aWNlIHtcbiAgb3ZlcnJpZGUgYnVpbGRWaWV3KHBhcmFtczogQWpmQ2FsZW5kYXJQYXJhbXMpOiBBamZDYWxlbmRhclZpZXcge1xuICAgIGNvbnN0IHt2aWV3TW9kZX0gPSBwYXJhbXM7XG4gICAgY29uc3Qgdmlld0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHBhcmFtcy52aWV3RGF0ZSk7XG4gICAgc3dpdGNoICh2aWV3TW9kZSkge1xuICAgICAgY2FzZSAnZGVjYWRlJzpcbiAgICAgICAgbGV0IGN1clllYXI6IG51bWJlciA9IHZpZXdEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGxldCBmaXJzdFllYXIgPSBjdXJZZWFyIC0gKGN1clllYXIgJSAxMCkgKyAxO1xuICAgICAgICBsZXQgbGFzdFllYXIgPSBmaXJzdFllYXIgKyAxMTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWFkZXI6IGAke2ZpcnN0WWVhcn0gLSAke2xhc3RZZWFyfWAsXG4gICAgICAgICAgaGVhZGVyUm93OiBbXSxcbiAgICAgICAgICByb3dzOiB0aGlzLl9lY0RlY2FkZUNhbGVuZGFyUm93cyhwYXJhbXMpLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVhZGVyOiBgJHt2aWV3RGF0ZS5nZXRGdWxsWWVhcigpfWAsXG4gICAgICAgICAgaGVhZGVyUm93OiBbXSxcbiAgICAgICAgICByb3dzOiB0aGlzLl9lY1llYXJDYWxlbmRhclJvd3MocGFyYW1zKSxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgY29uc3QgdmlldyA9IHN1cGVyLmJ1aWxkVmlldyhwYXJhbXMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhlYWRlcjogYCR7dmlld0RhdGUuZ2V0U2hvcnRNb250aE5hbWUoKX0gJHt2aWV3RGF0ZS5nZXRGdWxsWWVhcigpfWAsXG4gICAgICAgICAgaGVhZGVyUm93OiB0aGlzLl9lY01vbnRoSGVhZGVyUm93KHBhcmFtcyksXG4gICAgICAgICAgcm93czogdmlldy5yb3dzLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuYnVpbGRWaWV3KHBhcmFtcyk7XG4gIH1cblxuICBvdmVycmlkZSBlbnRyeUxhYmVsKGVudHJ5OiBBamZDYWxlbmRhckVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGVudHJ5LmRhdGUpO1xuICAgIGlmIChlbnRyeS50eXBlID09PSAnZGF5Jykge1xuICAgICAgcmV0dXJuIGAke2VjRGF0ZS5nZXREYXRlKCl9YDtcbiAgICB9XG4gICAgaWYgKGVudHJ5LnR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHJldHVybiBgJHtlY0RhdGUuZ2V0TW9udGhOYW1lKCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke2VjRGF0ZS5nZXRGdWxsWWVhcigpfWA7XG4gIH1cblxuICBvdmVycmlkZSBtb250aEJvdW5kcyhkYXRlOiBEYXRlLCBpc29Nb2RlOiBib29sZWFuKToge3N0YXJ0OiBEYXRlOyBlbmQ6IERhdGV9IHtcbiAgICBpZiAoIWlzb01vZGUpIHtcbiAgICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZGF0ZSk7XG4gICAgICBjb25zdCB7c3RhcnQsIGVuZH0gPSBnZXRNb250aEJvdW5kcyhlY0RhdGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQ6IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4oc3RhcnQpLFxuICAgICAgICBlbmQ6IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4oZW5kKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc29EYXkgPSBnZXRJU09EYXkoZGF0ZSk7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGRhdGUpO1xuICAgICAgbGV0IHtzdGFydCwgZW5kfSA9IGdldE1vbnRoQm91bmRzKGVjRGF0ZSk7XG4gICAgICBpZiAoZWNEYXRlLmdldE1vbnRoKCkgPT09IDEyKSB7XG4gICAgICAgIHN0YXJ0ID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihzdGFydE9mSVNPV2VlayhzdGFydC5nZXRHcmVnb3JpYW5EYXRlKCkpKTtcbiAgICAgICAgZW5kID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihlbmRPZklTT1dlZWsoZW5kLmdldEdyZWdvcmlhbkRhdGUoKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZSA9IGlzb0RheSA8IDQgPyBlbmRPZklTT1dlZWsoZGF0ZSkgOiBzdGFydE9mSVNPV2VlayhkYXRlKTtcbiAgICAgICAgY29uc3Qgc3RhcnRXZWVrRGF5ID0gc3RhcnQuZ2V0RGF5KCk7XG4gICAgICAgIGNvbnN0IGVuZFdlZWtEYXkgPSBlbmQuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChzdGFydFdlZWtEYXkgPT0gMCB8fCBzdGFydFdlZWtEYXkgPiA0KSB7XG4gICAgICAgICAgc3RhcnQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGFkZFdlZWtzKHN0YXJ0LmdldEdyZWdvcmlhbkRhdGUoKSwgMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRXZWVrRGF5ID4gMCAmJiBlbmRXZWVrRGF5IDwgNCkge1xuICAgICAgICAgIGVuZCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oc3ViV2Vla3MoZW5kLmdldEdyZWdvcmlhbkRhdGUoKSwgMSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogc3RhcnRPZklTT1dlZWsoc3RhcnQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSxcbiAgICAgICAgZW5kOiBlbmRPZklTT1dlZWsoZW5kLmdldEdyZWdvcmlhbkRhdGUoKSksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5leHRWaWV3KHZpZXdEYXRlOiBEYXRlLCB2aWV3TW9kZTogQWpmQ2FsZW5kYXJWaWV3TW9kZSk6IERhdGUge1xuICAgIGlmICh2aWV3TW9kZSA9PT0gJ21vbnRoJykge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSk7XG4gICAgICBsZXQgeWVhciA9IGVjRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgbGV0IG1vbnRoID0gZWNEYXRlLmdldE1vbnRoKCk7XG4gICAgICBpZiAobW9udGggPT09IDEyKSB7XG4gICAgICAgIG1vbnRoID0gMDtcbiAgICAgICAgeWVhciArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW9udGggKz0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBFdGhpb3BpYW5EYXRlLmV0aGlvcGlhblRvR3JlZ29yaWFuKG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIG1vbnRoLCAxKSk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5uZXh0Vmlldyh2aWV3RGF0ZSwgdmlld01vZGUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgcHJldmlvdXNWaWV3KHZpZXdEYXRlOiBEYXRlLCB2aWV3TW9kZTogQWpmQ2FsZW5kYXJWaWV3TW9kZSk6IERhdGUge1xuICAgIGlmICh2aWV3TW9kZSA9PT0gJ21vbnRoJykge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSk7XG4gICAgICBsZXQgeWVhciA9IGVjRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgbGV0IG1vbnRoID0gZWNEYXRlLmdldE1vbnRoKCk7XG4gICAgICBpZiAobW9udGggPT09IDApIHtcbiAgICAgICAgbW9udGggPSAxMjtcbiAgICAgICAgeWVhciAtPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW9udGggLT0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBFdGhpb3BpYW5EYXRlLmV0aGlvcGlhblRvR3JlZ29yaWFuKG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIG1vbnRoLCAxKSk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5wcmV2aW91c1ZpZXcodmlld0RhdGUsIHZpZXdNb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VjTW9udGhIZWFkZXJSb3cocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB7aXNvTW9kZSwgdmlld0RhdGV9ID0gcGFyYW1zO1xuICAgIGxldCBjdXJEYXRlOiBEYXRlO1xuICAgIGlmIChpc29Nb2RlKSB7XG4gICAgICBjdXJEYXRlID0gc2V0SVNPRGF5KHN0YXJ0T2ZXZWVrKHZpZXdEYXRlKSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1ckRhdGUgPSBzdGFydE9mV2Vlayh2aWV3RGF0ZSk7XG4gICAgfVxuICAgIGxldCB3ZWVrRGF5TmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oY3VyRGF0ZSk7XG4gICAgICB3ZWVrRGF5TmFtZXMucHVzaChlY0RhdGUuZ2V0RGF5T2ZXZWVrKCkpO1xuICAgICAgY3VyRGF0ZSA9IGFkZERheXMoY3VyRGF0ZSwgMSk7XG4gICAgfVxuICAgIHJldHVybiB3ZWVrRGF5TmFtZXM7XG4gIH1cblxuICBwcml2YXRlIF9lY1llYXJDYWxlbmRhclJvd3MocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyRW50cnlbXVtdIHtcbiAgICBjb25zdCB7dmlld0RhdGUsIHNlbGVjdGlvbn0gPSBwYXJhbXM7XG4gICAgY29uc3QgeWVhciA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4odmlld0RhdGUpLmdldEZ1bGxZZWFyKCk7XG4gICAgbGV0IGN1ckRhdGU6IEV0aGlvcGlhbkRhdGU7XG5cbiAgICBsZXQgcm93czogQWpmQ2FsZW5kYXJFbnRyeVtdW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSA0OyBpKyspIHtcbiAgICAgIGxldCByb3c6IEFqZkNhbGVuZGFyRW50cnlbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgY29uc3QgY3VyTW9udGggPSBpICogMyArIGo7XG4gICAgICAgIGlmIChjdXJNb250aCA8IDEzKSB7XG4gICAgICAgICAgY3VyRGF0ZSA9IG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIGN1ck1vbnRoLCAxKTtcbiAgICAgICAgICBsZXQgZGF0ZSA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4oY3VyRGF0ZSk7XG4gICAgICAgICAgbGV0IG5ld0VudHJ5OiBBamZDYWxlbmRhckVudHJ5ID0ge3R5cGU6ICdtb250aCcsIGRhdGUsIHNlbGVjdGVkOiAnbm9uZSd9O1xuICAgICAgICAgIG5ld0VudHJ5LnNlbGVjdGVkID0gdGhpcy5pc0VudHJ5U2VsZWN0ZWQobmV3RW50cnksIHNlbGVjdGlvbik7XG4gICAgICAgICAgcm93LnB1c2gobmV3RW50cnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByb3dzLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIHByaXZhdGUgX2VjRGVjYWRlQ2FsZW5kYXJSb3dzKHBhcmFtczogQWpmQ2FsZW5kYXJQYXJhbXMpOiBBamZDYWxlbmRhckVudHJ5W11bXSB7XG4gICAgY29uc3Qge3ZpZXdEYXRlLCBzZWxlY3Rpb259ID0gcGFyYW1zO1xuICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4odmlld0RhdGUpO1xuICAgIGxldCBjdXJZZWFyOiBudW1iZXIgPSBlY0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBsZXQgZmlyc3RZZWFyID0gY3VyWWVhciAtIChjdXJZZWFyICUgMTApICsgMTtcbiAgICBsZXQgY3VyRGF0ZTogRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4oZmlyc3RZZWFyLCAwLCAxKTtcblxuICAgIGxldCByb3dzOiBBamZDYWxlbmRhckVudHJ5W11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICBsZXQgcm93OiBBamZDYWxlbmRhckVudHJ5W10gPSBbXTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgMzsgaisrKSB7XG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoY3VyRGF0ZSk7XG4gICAgICAgIGxldCBuZXdFbnRyeTogQWpmQ2FsZW5kYXJFbnRyeSA9IHt0eXBlOiAneWVhcicsIGRhdGU6IGRhdGUsIHNlbGVjdGVkOiAnbm9uZSd9O1xuICAgICAgICBuZXdFbnRyeS5zZWxlY3RlZCA9IHRoaXMuaXNFbnRyeVNlbGVjdGVkKG5ld0VudHJ5LCBzZWxlY3Rpb24pO1xuICAgICAgICByb3cucHVzaChuZXdFbnRyeSk7XG4gICAgICAgIGN1ckRhdGUgPSBhZGRZZWFycyhjdXJEYXRlLCAxKTtcbiAgICAgIH1cbiAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (C) Gnucoop soc. coop.
|
|
4
|
+
*
|
|
5
|
+
* This file is part of the Advanced JSON forms (ajf).
|
|
6
|
+
*
|
|
7
|
+
* Advanced JSON forms (ajf) is free software: you can redistribute it and/or
|
|
8
|
+
* modify it under the terms of the GNU Affero General Public License as
|
|
9
|
+
* published by the Free Software Foundation, either version 3 of the License,
|
|
10
|
+
* or (at your option) any later version.
|
|
11
|
+
*
|
|
12
|
+
* Advanced JSON forms (ajf) is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
|
|
15
|
+
* General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU Affero General Public License
|
|
18
|
+
* along with Advanced JSON forms (ajf).
|
|
19
|
+
* If not, see http://www.gnu.org/licenses/.
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
const JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ
|
|
23
|
+
const JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም
|
|
24
|
+
const JD_EPOCH_OFFSET_GREGORIAN = 1721426;
|
|
25
|
+
const JD_EPOCH_OFFSET_UNSET = -1;
|
|
26
|
+
let JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;
|
|
27
|
+
const GREGORIAN_NUMBER_OF_MONTHS = 12;
|
|
28
|
+
const monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
29
|
+
function quotient(i, j) {
|
|
30
|
+
return Math.floor(i / j);
|
|
31
|
+
}
|
|
32
|
+
function isGregorianLeap(year) {
|
|
33
|
+
return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
34
|
+
}
|
|
35
|
+
function setEra(era) {
|
|
36
|
+
if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {
|
|
37
|
+
JDN_OFFSET = era;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
throw new Error(`Unknown Era: ${era}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function isEraSet() {
|
|
44
|
+
return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;
|
|
45
|
+
}
|
|
46
|
+
function unsetEra() {
|
|
47
|
+
JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;
|
|
48
|
+
}
|
|
49
|
+
function guessEraFromJDN(jdn) {
|
|
50
|
+
return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365
|
|
51
|
+
? JD_EPOCH_OFFSET_AMETE_MIHRET
|
|
52
|
+
: JD_EPOCH_OFFSET_AMETE_ALEM;
|
|
53
|
+
}
|
|
54
|
+
function ethiopicToJDN(day, month, year) {
|
|
55
|
+
const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;
|
|
56
|
+
const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;
|
|
57
|
+
return jdn;
|
|
58
|
+
}
|
|
59
|
+
function jdnToEthiopic(jdn) {
|
|
60
|
+
const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);
|
|
61
|
+
const r = (jdn - ERA) % 1461;
|
|
62
|
+
const n = (r % 365) + 365 * quotient(r, 1460);
|
|
63
|
+
const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);
|
|
64
|
+
const month = quotient(n, 30) + 1;
|
|
65
|
+
const day = (n % 30) + 1;
|
|
66
|
+
return [year, month, day];
|
|
67
|
+
}
|
|
68
|
+
function gregorianToJDN(day, month, year) {
|
|
69
|
+
const s = quotient(year, 4) -
|
|
70
|
+
quotient(year - 1, 4) -
|
|
71
|
+
quotient(year, 100) +
|
|
72
|
+
quotient(year - 1, 100) +
|
|
73
|
+
quotient(year, 400) -
|
|
74
|
+
quotient(year - 1, 400);
|
|
75
|
+
const t = quotient(14 - month, 12);
|
|
76
|
+
const n = 31 * t * (month - 1) +
|
|
77
|
+
(1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +
|
|
78
|
+
day -
|
|
79
|
+
1;
|
|
80
|
+
const j = JD_EPOCH_OFFSET_GREGORIAN +
|
|
81
|
+
365 * (year - 1) +
|
|
82
|
+
quotient(year - 1, 4) -
|
|
83
|
+
quotient(year - 1, 100) +
|
|
84
|
+
quotient(year - 1, 400) +
|
|
85
|
+
n;
|
|
86
|
+
return j;
|
|
87
|
+
}
|
|
88
|
+
function jdnToGregorian(jdn) {
|
|
89
|
+
const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;
|
|
90
|
+
const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;
|
|
91
|
+
const r100 = r400 % 36524;
|
|
92
|
+
const r4 = r100 % 1461;
|
|
93
|
+
let n = (r4 % 365) + 365 * quotient(r4, 1460);
|
|
94
|
+
const s = quotient(r4, 1095);
|
|
95
|
+
const aprime = 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +
|
|
96
|
+
100 * quotient(r400, 36524) +
|
|
97
|
+
4 * quotient(r100, 1461) +
|
|
98
|
+
quotient(r4, 365) -
|
|
99
|
+
quotient(r4, 1460) -
|
|
100
|
+
quotient(r2000, 730484);
|
|
101
|
+
const year = aprime + 1;
|
|
102
|
+
const t = quotient(364 + s - n, 306);
|
|
103
|
+
let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);
|
|
104
|
+
n += 1 - quotient(r2000, 730484);
|
|
105
|
+
let day = n;
|
|
106
|
+
if (r100 === 0 && n === 0 && r400 !== 0) {
|
|
107
|
+
month = 12;
|
|
108
|
+
day = 31;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
monthDays[2] = isGregorianLeap(year) ? 29 : 28;
|
|
112
|
+
for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {
|
|
113
|
+
if (n <= monthDays[i]) {
|
|
114
|
+
day = n;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
n -= monthDays[i];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return [year, month, day];
|
|
121
|
+
}
|
|
122
|
+
function gregorianToEthiopic(day, month, year) {
|
|
123
|
+
const jdn = gregorianToJDN(day, month, year);
|
|
124
|
+
return jdnToEthiopic(jdn);
|
|
125
|
+
}
|
|
126
|
+
function ethioipicToGreg(day, month, year) {
|
|
127
|
+
const jdn = ethiopicToJDN(day, month, year);
|
|
128
|
+
return jdnToGregorian(jdn);
|
|
129
|
+
}
|
|
130
|
+
function ethioipicToGregorian(day, month, year, era) {
|
|
131
|
+
setEra(era);
|
|
132
|
+
const result = ethioipicToGreg(day, month, year);
|
|
133
|
+
unsetEra();
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
/** API * */
|
|
137
|
+
/** ethiopian to gregorian */
|
|
138
|
+
export function toGC(dateArray) {
|
|
139
|
+
const [y, m, d] = dateArray;
|
|
140
|
+
let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;
|
|
141
|
+
if (d < 0 || d > 30 || m < 0 || m > 13) {
|
|
142
|
+
throw new Error('Invalid Ethiopian Date');
|
|
143
|
+
}
|
|
144
|
+
return ethioipicToGregorian(d, m, y, era);
|
|
145
|
+
}
|
|
146
|
+
/** gregorian to ethiopian */
|
|
147
|
+
export function toEC(dateArray) {
|
|
148
|
+
const [y, m, d] = dateArray;
|
|
149
|
+
if (d < 0 || d > 31 || m < 0 || m > 12) {
|
|
150
|
+
throw new Error('Invalid Gregorian Date');
|
|
151
|
+
}
|
|
152
|
+
return gregorianToEthiopic(d, m, y);
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NhbGVuZGFycy9ldGhpb3BpYW4vY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVILE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXO0FBQ3ZELE1BQU0sNEJBQTRCLEdBQUcsT0FBTyxDQUFDLENBQUMsU0FBUztBQUN2RCxNQUFNLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztBQUMxQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRWpDLElBQUksVUFBVSxHQUFHLHFCQUFxQixDQUFDO0FBRXZDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQ3RDLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFdEUsU0FBUyxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBWTtJQUNuQyxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsR0FBVztJQUN6QixJQUFJLEdBQUcsS0FBSywwQkFBMEIsSUFBSSxHQUFHLEtBQUssNEJBQTRCLEVBQUU7UUFDOUUsVUFB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QUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7S0FDM0M7SUFDRCxPQUFPLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCw2QkFBNkI7QUFDN0IsTUFBTSxVQUFVLElBQUksQ0FBQyxTQUFtQztJQUN0RCxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUMzQztJQUNELE9BQU8sbUJBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5jb25zdCBKRF9FUE9DSF9PRkZTRVRfQU1FVEVfQUxFTSA9IC0yODUwMTk7IC8vICAgICAg4YuTL+GLk1xuY29uc3QgSkRfRVBPQ0hfT0ZGU0VUX0FNRVRFX01JSFJFVCA9IDE3MjM4NTY7IC8vICAgIOGLky/hiJ1cbmNvbnN0IEpEX0VQT0NIX09GRlNFVF9HUkVHT1JJQU4gPSAxNzIxNDI2O1xuY29uc3QgSkRfRVBPQ0hfT0ZGU0VUX1VOU0VUID0gLTE7XG5cbmxldCBKRE5fT0ZGU0VUID0gSkRfRVBPQ0hfT0ZGU0VUX1VOU0VUO1xuXG5jb25zdCBHUkVHT1JJQU5fTlVNQkVSX09GX01PTlRIUyA9IDEyO1xuY29uc3QgbW9udGhEYXlzID0gWzAsIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuXG5mdW5jdGlvbiBxdW90aWVudChpOiBudW1iZXIsIGo6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmZsb29yKGkgLyBqKTtcbn1cblxuZnVuY3Rpb24gaXNHcmVnb3JpYW5MZWFwKHllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4geWVhciAlIDQgPT09IDAgJiYgKHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMCk7XG59XG5cbmZ1bmN0aW9uIHNldEVyYShlcmE6IG51bWJlcik6IHZvaWQge1xuICBpZiAoZXJhID09PSBKRF9FUE9DSF9PRkZTRVRfQU1FVEVfQUxFTSB8fCBlcmEgPT09IEpEX0VQT0NIX09GRlNFVF9BTUVURV9NSUhSRVQpIHtcbiAgICBKRE5fT0ZGU0VUID0gZXJhO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBFcmE6ICR7ZXJhfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRXJhU2V0KCk6IGJvb2xlYW4ge1xuICByZXR1cm4gSkRfRVBPQ0hfT0ZGU0VUX1VOU0VUICE9PSBKRE5fT0ZGU0VUO1xufVxuXG5mdW5jdGlvbiB1bnNldEVyYSgpOiB2b2lkIHtcbiAgSkROX09GRlNFVCA9IEpEX0VQT0NIX09GRlNFVF9VTlNFVDtcbn1cblxuZnVuY3Rpb24gZ3Vlc3NFcmFGcm9tSkROKGpkbjogbnVtYmVyKSB7XG4gIHJldHVybiBqZG4gPj0gSkRfRVBPQ0hfT0ZGU0VUX0FNRVRFX01JSFJFVCArIDM2NVxuICAgID8gSkRfRVBPQ0hfT0ZGU0VUX0FNRVRFX01JSFJFVFxuICAgIDogSkRfRVBPQ0hfT0ZGU0VUX0FNRVRFX0FMRU07XG59XG5cbmZ1bmN0aW9uIGV0aGlvcGljVG9KRE4oZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcikge1xuICBjb25zdCBFUkEgPSBpc0VyYVNldCgpID8gSkROX09GRlNFVCA6IEpEX0VQT0NIX09GRlNFVF9BTUVURV9NSUhSRVQ7XG4gIGNvbnN0IGpkbiA9IEVSQSArIDM2NSArIDM2NSAqICh5ZWFyIC0gMSkgKyBxdW90aWVudCh5ZWFyLCA0KSArIDMwICogbW9udGggKyBkYXkgLSAzMTtcblxuICByZXR1cm4gamRuO1xufVxuXG5mdW5jdGlvbiBqZG5Ub0V0aGlvcGljKGpkbjogbnVtYmVyKTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgRVJBID0gaXNFcmFTZXQoKSA/IEpETl9PRkZTRVQgOiBndWVzc0VyYUZyb21KRE4oamRuKTtcbiAgY29uc3QgciA9IChqZG4gLSBFUkEpICUgMTQ2MTtcbiAgY29uc3QgbiA9IChyICUgMzY1KSArIDM2NSAqIHF1b3RpZW50KHIsIDE0NjApO1xuICBjb25zdCB5ZWFyID0gNCAqIHF1b3RpZW50KGpkbiAtIEVSQSwgMTQ2MSkgKyBxdW90aWVudChyLCAzNjUpIC0gcXVvdGllbnQociwgMTQ2MCk7XG4gIGNvbnN0IG1vbnRoID0gcXVvdGllbnQobiwgMzApICsgMTtcbiAgY29uc3QgZGF5ID0gKG4gJSAzMCkgKyAxO1xuXG4gIHJldHVybiBbeWVhciwgbW9udGgsIGRheV07XG59XG5cbmZ1bmN0aW9uIGdyZWdvcmlhblRvSkROKGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBzID1cbiAgICBxdW90aWVudCh5ZWFyLCA0KSAtXG4gICAgcXVvdGllbnQoeWVhciAtIDEsIDQpIC1cbiAgICBxdW90aWVudCh5ZWFyLCAxMDApICtcbiAgICBxdW90aWVudCh5ZWFyIC0gMSwgMTAwKSArXG4gICAgcXVvdGllbnQoeWVhciwgNDAwKSAtXG4gICAgcXVvdGllbnQoeWVhciAtIDEsIDQwMCk7XG5cbiAgY29uc3QgdCA9IHF1b3RpZW50KDE0IC0gbW9udGgsIDEyKTtcblxuICBjb25zdCBuID1cbiAgICAzMSAqIHQgKiAobW9udGggLSAxKSArXG4gICAgKDEgLSB0KSAqICg1OSArIHMgKyAzMCAqIChtb250aCAtIDMpICsgcXVvdGllbnQoMyAqIG1vbnRoIC0gNywgNSkpICtcbiAgICBkYXkgLVxuICAgIDE7XG5cbiAgY29uc3QgaiA9XG4gICAgSkRfRVBPQ0hfT0ZGU0VUX0dSRUdPUklBTiArXG4gICAgMzY1ICogKHllYXIgLSAxKSArXG4gICAgcXVvdGllbnQoeWVhciAtIDEsIDQpIC1cbiAgICBxdW90aWVudCh5ZWFyIC0gMSwgMTAwKSArXG4gICAgcXVvdGllbnQoeWVhciAtIDEsIDQwMCkgK1xuICAgIG47XG5cbiAgcmV0dXJuIGo7XG59XG5cbmZ1bmN0aW9uIGpkblRvR3JlZ29yaWFuKGpkbjogbnVtYmVyKTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgcjIwMDAgPSAoamRuIC0gSkRfRVBPQ0hfT0ZGU0VUX0dSRUdPUklBTikgJSA3MzA0ODU7XG4gIGNvbnN0IHI0MDAgPSAoamRuIC0gSkRfRVBPQ0hfT0ZGU0VUX0dSRUdPUklBTikgJSAxNDYwOTc7XG4gIGNvbnN0IHIxMDAgPSByNDAwICUgMzY1MjQ7XG4gIGNvbnN0IHI0ID0gcjEwMCAlIDE0NjE7XG4gIGxldCBuID0gKHI0ICUgMzY1KSArIDM2NSAqIHF1b3RpZW50KHI0LCAxNDYwKTtcbiAgY29uc3QgcyA9IHF1b3RpZW50KHI0LCAxMDk1KTtcbiAgY29uc3QgYXByaW1lID1cbiAgICA0MDAgKiBxdW90aWVudChqZG4gLSBKRF9FUE9DSF9PRkZTRVRfR1JFR09SSUFOLCAxNDYwOTcpICtcbiAgICAxMDAgKiBxdW90aWVudChyNDAwLCAzNjUyNCkgK1xuICAgIDQgKiBxdW90aWVudChyMTAwLCAxNDYxKSArXG4gICAgcXVvdGllbnQocjQsIDM2NSkgLVxuICAgIHF1b3RpZW50KHI0LCAxNDYwKSAtXG4gICAgcXVvdGllbnQocjIwMDAsIDczMDQ4NCk7XG4gIGNvbnN0IHllYXIgPSBhcHJpbWUgKyAxO1xuICBjb25zdCB0ID0gcXVvdGllbnQoMzY0ICsgcyAtIG4sIDMwNik7XG4gIGxldCBtb250aCA9IHQgKiAocXVvdGllbnQobiwgMzEpICsgMSkgKyAoMSAtIHQpICogKHF1b3RpZW50KDUgKiAobiAtIHMpICsgMTMsIDE1MykgKyAxKTtcbiAgbiArPSAxIC0gcXVvdGllbnQocjIwMDAsIDczMDQ4NCk7XG4gIGxldCBkYXkgPSBuO1xuXG4gIGlmIChyMTAwID09PSAwICYmIG4gPT09IDAgJiYgcjQwMCAhPT0gMCkge1xuICAgIG1vbnRoID0gMTI7XG4gICAgZGF5ID0gMzE7XG4gIH0gZWxzZSB7XG4gICAgbW9udGhEYXlzWzJdID0gaXNHcmVnb3JpYW5MZWFwKHllYXIpID8gMjkgOiAyODtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBHUkVHT1JJQU5fTlVNQkVSX09GX01PTlRIUzsgaSArPSAxKSB7XG4gICAgICBpZiAobiA8PSBtb250aERheXNbaV0pIHtcbiAgICAgICAgZGF5ID0gbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBuIC09IG1vbnRoRGF5c1tpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFt5ZWFyLCBtb250aCwgZGF5XTtcbn1cblxuZnVuY3Rpb24gZ3JlZ29yaWFuVG9FdGhpb3BpYyhkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgamRuID0gZ3JlZ29yaWFuVG9KRE4oZGF5LCBtb250aCwgeWVhcik7XG4gIHJldHVybiBqZG5Ub0V0aGlvcGljKGpkbik7XG59XG5cbmZ1bmN0aW9uIGV0aGlvaXBpY1RvR3JlZyhkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgamRuID0gZXRoaW9waWNUb0pETihkYXksIG1vbnRoLCB5ZWFyKTtcbiAgcmV0dXJuIGpkblRvR3JlZ29yaWFuKGpkbik7XG59XG5cbmZ1bmN0aW9uIGV0aGlvaXBpY1RvR3JlZ29yaWFuKFxuICBkYXk6IG51bWJlcixcbiAgbW9udGg6IG51bWJlcixcbiAgeWVhcjogbnVtYmVyLFxuICBlcmE6IG51bWJlcixcbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIHNldEVyYShlcmEpO1xuICBjb25zdCByZXN1bHQgPSBldGhpb2lwaWNUb0dyZWcoZGF5LCBtb250aCwgeWVhcik7XG4gIHVuc2V0RXJhKCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBBUEkgKiAqL1xuXG4vKiogZXRoaW9waWFuIHRvIGdyZWdvcmlhbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvR0MoXG4gIGRhdGVBcnJheTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBbeSwgbSwgZF0gPSBkYXRlQXJyYXk7XG4gIGxldCBlcmEgPSBkYXRlQXJyYXkubGVuZ3RoID09PSA0ID8gZGF0ZUFycmF5WzNdIDogSkRfRVBPQ0hfT0ZGU0VUX0FNRVRFX01JSFJFVDtcbiAgaWYgKGQgPCAwIHx8IGQgPiAzMCB8fCBtIDwgMCB8fCBtID4gMTMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgRXRoaW9waWFuIERhdGUnKTtcbiAgfVxuICByZXR1cm4gZXRoaW9pcGljVG9HcmVnb3JpYW4oZCwgbSwgeSwgZXJhKTtcbn1cblxuLyoqIGdyZWdvcmlhbiB0byBldGhpb3BpYW4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0VDKGRhdGVBcnJheTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdKTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgW3ksIG0sIGRdID0gZGF0ZUFycmF5O1xuICBpZiAoZCA8IDAgfHwgZCA+IDMxIHx8IG0gPCAwIHx8IG0gPiAxMikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBHcmVnb3JpYW4gRGF0ZScpO1xuICB9XG4gIHJldHVybiBncmVnb3JpYW5Ub0V0aGlvcGljKGQsIG0sIHkpO1xufVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (C) Gnucoop soc. coop.
|
|
4
|
+
*
|
|
5
|
+
* This file is part of the Advanced JSON forms (ajf).
|
|
6
|
+
*
|
|
7
|
+
* Advanced JSON forms (ajf) is free software: you can redistribute it and/or
|
|
8
|
+
* modify it under the terms of the GNU Affero General Public License as
|
|
9
|
+
* published by the Free Software Foundation, either version 3 of the License,
|
|
10
|
+
* or (at your option) any later version.
|
|
11
|
+
*
|
|
12
|
+
* Advanced JSON forms (ajf) is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
|
|
15
|
+
* General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU Affero General Public License
|
|
18
|
+
* along with Advanced JSON forms (ajf).
|
|
19
|
+
* If not, see http://www.gnu.org/licenses/.
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
import { Injectable, Pipe } from '@angular/core';
|
|
23
|
+
import { EthiopianDate } from './ethiopian-date';
|
|
24
|
+
import * as i0 from "@angular/core";
|
|
25
|
+
export class AjfEthiopianDatePipe {
|
|
26
|
+
transform(value) {
|
|
27
|
+
try {
|
|
28
|
+
const ed = EthiopianDate.gregorianToEthiopian(value);
|
|
29
|
+
const date = `0${ed.getDate()}`.slice(-2);
|
|
30
|
+
const month = `0${ed.getMonth() + 1}`.slice(-2);
|
|
31
|
+
return `${date}/${month}/${ed.getFullYear()}`;
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
AjfEthiopianDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
39
|
+
AjfEthiopianDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianDatePipe, name: "ajfEthiopianDate" });
|
|
40
|
+
AjfEthiopianDatePipe.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianDatePipe });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfEthiopianDatePipe, decorators: [{
|
|
42
|
+
type: Injectable
|
|
43
|
+
}, {
|
|
44
|
+
type: Pipe,
|
|
45
|
+
args: [{ name: 'ajfEthiopianDate' }]
|
|
46
|
+
}] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoaW9waWFuLWRhdGUtcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2V0aGlvcGlhbi1kYXRlLXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFJL0MsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixTQUFTLENBQUMsS0FBVTtRQUNsQixJQUFJO1lBQ0YsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JELE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsT0FBTyxHQUFHLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7U0FDL0M7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDOztzSEFWVSxvQkFBb0I7b0hBQXBCLG9CQUFvQjswSEFBcEIsb0JBQW9CO2dHQUFwQixvQkFBb0I7a0JBRmhDLFVBQVU7O2tCQUNWLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0V0aGlvcGlhbkRhdGV9IGZyb20gJy4vZXRoaW9waWFuLWRhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5AUGlwZSh7bmFtZTogJ2FqZkV0aGlvcGlhbkRhdGUnfSlcbmV4cG9ydCBjbGFzcyBBamZFdGhpb3BpYW5EYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlZCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4odmFsdWUpO1xuICAgICAgY29uc3QgZGF0ZSA9IGAwJHtlZC5nZXREYXRlKCl9YC5zbGljZSgtMik7XG4gICAgICBjb25zdCBtb250aCA9IGAwJHtlZC5nZXRNb250aCgpICsgMX1gLnNsaWNlKC0yKTtcbiAgICAgIHJldHVybiBgJHtkYXRlfS8ke21vbnRofS8ke2VkLmdldEZ1bGxZZWFyKCl9YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|