@thecodeblogs/blog 0.15.3 → 0.15.4
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/lib/components/side-navigation/side-navigation.component.mjs +101 -30
- package/esm2020/lib/services/entry.service.mjs +4 -1
- package/fesm2015/thecodeblogs-blog.mjs +98 -29
- package/fesm2015/thecodeblogs-blog.mjs.map +1 -1
- package/fesm2020/thecodeblogs-blog.mjs +98 -29
- package/fesm2020/thecodeblogs-blog.mjs.map +1 -1
- package/lib/components/side-navigation/side-navigation.component.d.ts +11 -2
- package/lib/services/entry.service.d.ts +1 -0
- package/package.json +1 -1
- package/version.json +0 -1
|
@@ -1,22 +1,36 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, ViewChild } from '@angular/core';
|
|
2
|
+
import { trigger, state, style, animate, transition } from '@angular/animations';
|
|
3
|
+
import { FormControl } from '@angular/forms';
|
|
2
4
|
import { filter } from 'lodash';
|
|
3
5
|
import { map } from 'lodash';
|
|
6
|
+
import { debounceTime } from 'rxjs/operators';
|
|
4
7
|
import { Entry } from '../../data/entry';
|
|
5
8
|
import * as i0 from "@angular/core";
|
|
6
9
|
import * as i1 from "../../services/entry.service";
|
|
7
10
|
import * as i2 from "@angular/router";
|
|
8
11
|
import * as i3 from "../../services/identity.service";
|
|
9
12
|
import * as i4 from "@angular/common";
|
|
10
|
-
import * as i5 from "@angular/
|
|
13
|
+
import * as i5 from "@angular/forms";
|
|
14
|
+
import * as i6 from "@angular/material/input";
|
|
15
|
+
import * as i7 from "@angular/material/form-field";
|
|
16
|
+
import * as i8 from "@angular/material/list";
|
|
11
17
|
export class SideNavigationComponent {
|
|
12
|
-
constructor(entryService, router, identityService) {
|
|
18
|
+
constructor(entryService, router, identityService, renderer) {
|
|
13
19
|
this.entryService = entryService;
|
|
14
20
|
this.router = router;
|
|
15
21
|
this.identityService = identityService;
|
|
22
|
+
this.renderer = renderer;
|
|
23
|
+
this.state = 'out';
|
|
16
24
|
this.entries = [];
|
|
17
25
|
this.entriesByMonthAndYear = [];
|
|
26
|
+
this.searchTerm = "";
|
|
27
|
+
this.doSearch = new EventEmitter();
|
|
28
|
+
this.searchControl = new FormControl('');
|
|
18
29
|
}
|
|
19
30
|
ngOnInit() {
|
|
31
|
+
this.doSearch.pipe(debounceTime(500)).subscribe((result) => {
|
|
32
|
+
this.searchEntries(result);
|
|
33
|
+
});
|
|
20
34
|
this.identityService.getMe().subscribe((identity) => {
|
|
21
35
|
this.identity = identity;
|
|
22
36
|
}, (err) => {
|
|
@@ -38,30 +52,41 @@ export class SideNavigationComponent {
|
|
|
38
52
|
});
|
|
39
53
|
}
|
|
40
54
|
organizeEntries() {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
this.state = 'out';
|
|
56
|
+
let organizeEntriesFn = () => {
|
|
57
|
+
this.entriesByMonthAndYear = [];
|
|
58
|
+
let newEntries = JSON.parse(JSON.stringify(this.entriesByMonthAndYear));
|
|
59
|
+
for (const entryWrapper of this.entries) {
|
|
60
|
+
const entry = entryWrapper.entry;
|
|
61
|
+
const create_date = new Date(entry.create_date);
|
|
62
|
+
const month = create_date.getMonth();
|
|
63
|
+
const year = create_date.getFullYear();
|
|
64
|
+
const key = month + '/' + year;
|
|
65
|
+
const sort_index = (year * 100) + month;
|
|
66
|
+
const containers = filter(newEntries, (entryContainer) => entryContainer.month_year === key);
|
|
67
|
+
if (containers.length > 0) {
|
|
68
|
+
const container = containers[0];
|
|
69
|
+
const entriesWithId = filter(container.entries, (e) => e.id === entryWrapper.entry.id);
|
|
70
|
+
if (entriesWithId.length === 0) {
|
|
71
|
+
container.entries.push(entry);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const newContainer = { month_year: key, month_year_number: sort_index, entries: [entry] };
|
|
76
|
+
newEntries.push(newContainer);
|
|
54
77
|
}
|
|
55
78
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
newEntries.sort((entry_a, entry_b) => {
|
|
80
|
+
return entry_a.month_year_number - entry_b.month_year_number;
|
|
81
|
+
});
|
|
82
|
+
newEntries.reverse();
|
|
83
|
+
let setEntriesFn = () => {
|
|
84
|
+
this.entriesByMonthAndYear = newEntries;
|
|
85
|
+
this.state = 'in';
|
|
86
|
+
};
|
|
87
|
+
setTimeout(setEntriesFn.bind(this), 400);
|
|
88
|
+
};
|
|
89
|
+
setTimeout(organizeEntriesFn.bind(this), 400);
|
|
65
90
|
}
|
|
66
91
|
getEntries() {
|
|
67
92
|
this.entryService.get().subscribe((response) => {
|
|
@@ -76,6 +101,24 @@ export class SideNavigationComponent {
|
|
|
76
101
|
}
|
|
77
102
|
});
|
|
78
103
|
}
|
|
104
|
+
searchEntries(searchTerm) {
|
|
105
|
+
if (searchTerm !== "") {
|
|
106
|
+
this.entryService.search(searchTerm).subscribe((response) => {
|
|
107
|
+
this.entries = map(response.results, (result) => {
|
|
108
|
+
return { id: result.id, entry: new Entry(result) };
|
|
109
|
+
});
|
|
110
|
+
if (response.next) {
|
|
111
|
+
this.getEntriesWithUrl(response.next);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.organizeEntries();
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.getEntries();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
79
122
|
render() {
|
|
80
123
|
}
|
|
81
124
|
routeTo(entry) {
|
|
@@ -141,11 +184,39 @@ export class SideNavigationComponent {
|
|
|
141
184
|
this.sourceSub = null;
|
|
142
185
|
}
|
|
143
186
|
}
|
|
187
|
+
onSearchChange(searchValue) {
|
|
188
|
+
this.doSearch.emit(searchValue);
|
|
189
|
+
}
|
|
144
190
|
}
|
|
145
|
-
SideNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, deps: [{ token: i1.EntryService }, { token: i2.Router }, { token: i3.IdentityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
146
|
-
SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <mat-nav-list
|
|
191
|
+
SideNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, deps: [{ token: i1.EntryService }, { token: i2.Router }, { token: i3.IdentityService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
192
|
+
SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", viewQueries: [{ propertyName: "divNav", first: true, predicate: ["navcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }], animations: [
|
|
193
|
+
trigger('sideNavAnimation', [
|
|
194
|
+
state('in', style({ transform: 'translateX(0%)' })),
|
|
195
|
+
state('out', style({ transform: 'translateX(110%)' })),
|
|
196
|
+
transition('in => out', [
|
|
197
|
+
animate('100ms ease-out', style({ transform: 'translateX(110%)' }))
|
|
198
|
+
]),
|
|
199
|
+
transition('out => in', [
|
|
200
|
+
animate('100ms ease-in', style({ transform: 'translateX(0%)' }))
|
|
201
|
+
])
|
|
202
|
+
]),
|
|
203
|
+
] });
|
|
147
204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, decorators: [{
|
|
148
205
|
type: Component,
|
|
149
|
-
args: [{ selector: 'app-side-navigation',
|
|
150
|
-
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NpZGUtbmF2aWdhdGlvbi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXZpZ2F0aW9uL3NpZGUtbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUEwQyxNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFM0IsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBV3ZDLE1BQU0sT0FBTyx1QkFBdUI7SUFRaEMsWUFDWSxZQUEwQixFQUMxQixNQUFjLEVBQ2QsZUFBZ0M7UUFGaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQU41QyxZQUFPLEdBQWlDLEVBQUUsQ0FBQztRQUMzQywwQkFBcUIsR0FBd0UsRUFBRSxDQUFDO0lBT2hHLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUM3QixDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxD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IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHttYXB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7RW50cnl9IGZyb20gJy4uLy4uL2RhdGEvZW50cnknO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSAnLi4vLi4vZGF0YS9pZGVudGl0eSc7XG5cbmltcG9ydCB7RW50cnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7SWRlbnRpdHlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pZGVudGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtc2lkZS1uYXZpZ2F0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2lkZS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlTmF2aWdhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIHNvdXJjZVN1YjtcbiAgICBpZGVudGl0eTogSWRlbnRpdHk7XG5cbiAgICBlbnRyaWVzOiB7aWQ6IHN0cmluZywgZW50cnk6IEVudHJ5fVtdID0gW107XG4gICAgZW50cmllc0J5TW9udGhBbmRZZWFyOiB7bW9udGhfeWVhcjogc3RyaW5nLCBtb250aF95ZWFyX251bWJlcjogbnVtYmVyLCBlbnRyaWVzOiBFbnRyeVtdfVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbnRyeVNlcnZpY2U6IEVudHJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBpZGVudGl0eVNlcnZpY2U6IElkZW50aXR5U2VydmljZSxcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pZGVudGl0eVNlcnZpY2UuZ2V0TWUoKS5zdWJzY3JpYmUoKGlkZW50aXR5KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaWRlbnRpdHkgPSBudWxsO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdldEVudHJpZXMoKTtcblxuICAgIH1cblxuICAgIGdldEVudHJpZXNXaXRoVXJsKHVybDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLmdldExpc3RCeVVybCh1cmwpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcyA9IHRoaXMuZW50cmllcy5jb25jYXQoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSBhcyBhbnkpLnJlc3VsdHMsIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICgocmVzcG9uc2UgYXMgYW55KS5uZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFbnRyaWVzV2l0aFVybChyZXNwb25zZS5uZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3JnYW5pemVFbnRyaWVzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5V3JhcHBlciBvZiB0aGlzLmVudHJpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cnlXcmFwcGVyLmVudHJ5O1xuICAgICAgICAgICAgY29uc3QgY3JlYXRlX2RhdGUgPSBuZXcgRGF0ZShlbnRyeS5jcmVhdGVfZGF0ZSk7XG4gICAgICAgICAgICBjb25zdCBtb250aCA9IGNyZWF0ZV9kYXRlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gY3JlYXRlX2RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG1vbnRoICsgJy8nICsgeWVhcjtcbiAgICAgICAgICAgIGNvbnN0IHNvcnRfaW5kZXggPSAoeWVhciAqIDEwMCkgKyBtb250aDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBmaWx0ZXIodGhpcy5lbnRyaWVzQnlNb250aEFuZFllYXIsIChlbnRyeUNvbnRhaW5lcikgPT4gZW50cnlDb250YWluZXIubW9udGhfeWVhciA9PT0ga2V5KTtcbiAgICAgICAgICAgIGlmIChjb250YWluZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJzWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJpZXNXaXRoSWQgPSBmaWx0ZXIoY29udGFpbmVyLmVudHJpZXMsIChlKSA9PiBlLmlkID09PSBlbnRyeVdyYXBwZXIuZW50cnkuaWQpO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzV2l0aElkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRhaW5lciA9IHttb250aF95ZWFyOiBrZXksIG1vbnRoX3llYXJfbnVtYmVyOiBzb3J0X2luZGV4LCBlbnRyaWVzOiBbZW50cnldfTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJpZXNCeU1vbnRoQW5kWWVhci5wdXNoKG5ld0NvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnRyaWVzQnlNb250aEFuZFllYXIuc29ydChcbiAgICAgICAgICAgIChlbnRyeV9hLCBlbnRyeV9iKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5X2EubW9udGhfeWVhcl9udW1iZXIgLSBlbnRyeV9iLm1vbnRoX3llYXJfbnVtYmVyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW50cmllc0J5TW9udGhBbmRZZWFyLnJldmVyc2UoKTtcbiAgICB9XG5cbiAgICBnZXRFbnRyaWVzKCkge1xuICAgICAgICB0aGlzLmVudHJ5U2VydmljZS5nZXQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMgPSBtYXAocmVzcG9uc2UucmVzdWx0cywgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGlkOiByZXN1bHQuaWQsIGVudHJ5OiBuZXcgRW50cnkocmVzdWx0KX07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICgocmVzcG9uc2UgYXMgYW55KS5uZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFbnRyaWVzV2l0aFVybChyZXNwb25zZS5uZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgIH1cblxuICAgIHJvdXRlVG8oZW50cnkpIHtcbiAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnY3JlYXRlKGxlZnQtY29sOmNyZWF0ZS8vcmlnaHQtY29sOmNyZWF0ZSknKS50aGVuKCgpID0+IHtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnYmxvZycsIGVudHJ5LnNsdWddKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBOb29wXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE1vbnRoQW5kWWVhckZyb21LZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IHN1YmhlYWRpbmcgPSAnJztcbiAgICAgICAgY29uc3QgcGFydHMgPSBrZXkuc3BsaXQoJy8nKTtcblxuICAgICAgICBzd2l0Y2ggKE51bWJlcihwYXJ0c1swXSkpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzdWJoZWFkaW5nICs9ICdKYW51YXJ5ICc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgc3ViaGVhZGluZyArPSAnRmVicnVhcnkgJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBzdWJoZWFkaW5nICs9ICdNYXJjaCAnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIHN1YmhlYWRpbmcgKz0gJ0FwcmlsICc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgc3ViaGVhZGluZyArPSAnTWF5ICc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgc3ViaGVhZGluZyArPSAnSnVuZSAnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHN1YmhlYWRpbmcgKz0gJ0p1bHkgJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBzdWJoZWFkaW5nICs9ICdBdWd1c3QgJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICBzdWJoZWFkaW5nICs9ICdTZXB0ZW1iZXIgJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICBzdWJoZWFkaW5nICs9ICdPY3RvYmVyICc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgIHN1YmhlYWRpbmcgKz0gJ05vdmVtYmVyICc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgIHN1YmhlYWRpbmcgKz0gJ0RlY2VtYmVyICc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHN1YmhlYWRpbmcgKz0gJ0phbnVhcnkgJztcbiAgICAgICAgfVxuICAgICAgICBzdWJoZWFkaW5nICs9IHBhcnRzWzFdO1xuXG4gICAgICAgIHJldHVybiBzdWJoZWFkaW5nO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VTdWIpIHtcbiAgICAgICAgICAgIHRoaXMuc291cmNlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZVN1YiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZW5hdiBuby1zY3JvbGxiYXJcIj5cbiAgICA8bWF0LW5hdi1saXN0ICpuZ0Zvcj1cImxldCBjb250YWluZXIgb2YgZW50cmllc0J5TW9udGhBbmRZZWFyXCI+XG4gICAgICAgIDxoMz57e2dldE1vbnRoQW5kWWVhckZyb21LZXkoY29udGFpbmVyLm1vbnRoX3llYXIpfX08L2gzPlxuICAgICAgICA8YSBtYXQtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBjb250YWluZXIuZW50cmllc1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwicm91dGVUbyhlbnRyeSlcIj57e2VudHJ5LnRpdGxlfX08L2E+XG4gICAgPC9tYXQtbmF2LWxpc3Q+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWRlbnRpdHk/LmlkID09PSAxXCI+XG4gICAgICAgIDxoMj5NaXNjPC9oMj5cblxuICAgICAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgICAgICAgPGEgbWF0LWxpc3QtaXRlbSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJyb3V0ZVRvKG51bGwpXCI+Q3JlYXRlPC9hPlxuICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8aDMgKm5nSWY9XCJpZGVudGl0eVwiPkxvZ2dlZCBpbiBhcyB7e2lkZW50aXR5Py5lbWFpbH19PC9oMz5cbjwvZGl2PlxuXG4iXX0=
|
|
206
|
+
args: [{ selector: 'app-side-navigation', animations: [
|
|
207
|
+
trigger('sideNavAnimation', [
|
|
208
|
+
state('in', style({ transform: 'translateX(0%)' })),
|
|
209
|
+
state('out', style({ transform: 'translateX(110%)' })),
|
|
210
|
+
transition('in => out', [
|
|
211
|
+
animate('100ms ease-out', style({ transform: 'translateX(110%)' }))
|
|
212
|
+
]),
|
|
213
|
+
transition('out => in', [
|
|
214
|
+
animate('100ms ease-in', style({ transform: 'translateX(0%)' }))
|
|
215
|
+
])
|
|
216
|
+
]),
|
|
217
|
+
], template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"] }]
|
|
218
|
+
}], ctorParameters: function () { return [{ type: i1.EntryService }, { type: i2.Router }, { type: i3.IdentityService }, { type: i0.Renderer2 }]; }, propDecorators: { divNav: [{
|
|
219
|
+
type: ViewChild,
|
|
220
|
+
args: ['navcontainer', { static: false }]
|
|
221
|
+
}] } });
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NpZGUtbmF2aWdhdGlvbi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXZpZ2F0aW9uL3NpZGUtbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBeUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBdUJ2QyxNQUFNLE9BQU8sdUJBQXVCO0lBZ0JsQyxZQUNVLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxlQUFnQyxFQUNoQyxRQUFtQjtRQUhuQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFsQjdCLFVBQUssR0FBaUIsS0FBSyxDQUFDO1FBSzVCLFlBQU8sR0FBaUMsRUFBRSxDQUFD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YUFDbEUsQ0FBQztZQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQzthQUMvRCxDQUFDO1NBQ0gsQ0FBQztLQUNIOzJGQUVVLHVCQUF1QjtrQkFqQm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CO3dCQUNWLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTs0QkFDMUIsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDOzRCQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7NEJBQ3BELFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3RCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDOzZCQUNsRSxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3RCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQzs2QkFDL0QsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIOzhLQWdCNkMsTUFBTTtzQkFBbkQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHN0eWxlLCBhbmltYXRlLCB0cmFuc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge21hcH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7RW50cnl9IGZyb20gJy4uLy4uL2RhdGEvZW50cnknO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSAnLi4vLi4vZGF0YS9pZGVudGl0eSc7XG5cbmltcG9ydCB7RW50cnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7SWRlbnRpdHlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pZGVudGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNpZGUtbmF2aWdhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3NpZGVOYXZBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwJSknfSkpLFxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDExMCUpJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2luID0+IG91dCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMTAlKSd9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignb3V0ID0+IGluJywgW1xuICAgICAgICBhbmltYXRlKCcxMDBtcyBlYXNlLWluJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCUpJ30pKVxuICAgICAgXSlcbiAgICBdKSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlTmF2aWdhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBzdGF0ZTogJ2luJyB8ICdvdXQnID0gJ291dCc7XG5cbiAgc291cmNlU3ViO1xuICBpZGVudGl0eTogSWRlbnRpdHk7XG5cbiAgZW50cmllczoge2lkOiBzdHJpbmcsIGVudHJ5OiBFbnRyeX1bXSA9IFtdO1xuICBlbnRyaWVzQnlNb250aEFuZFllYXI6IHttb250aF95ZWFyOiBzdHJpbmcsIG1vbnRoX3llYXJfbnVtYmVyOiBudW1iZXIsIGVudHJpZXM6IEVudHJ5W119W10gPSBbXTtcblxuICBzZWFyY2hUZXJtID0gXCJcIjtcblxuICBkb1NlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnbmF2Y29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRpdk5hdjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVudHJ5U2VydmljZTogRW50cnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpZGVudGl0eVNlcnZpY2U6IElkZW50aXR5U2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLmRvU2VhcmNoLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaEVudHJpZXMocmVzdWx0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmdldE1lKCkuc3Vic2NyaWJlKChpZGVudGl0eSkgPT4ge1xuICAgICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5pZGVudGl0eSA9IG51bGw7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ2V0RW50cmllcygpO1xuXG4gIH1cblxuICBnZXRFbnRyaWVzV2l0aFVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuZW50cnlTZXJ2aWNlLmdldExpc3RCeVVybCh1cmwpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuZW50cmllcyA9IHRoaXMuZW50cmllcy5jb25jYXQoXG4gICAgICAgIG1hcCgocmVzcG9uc2UgYXMgYW55KS5yZXN1bHRzLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBpZiAoKHJlc3BvbnNlIGFzIGFueSkubmV4dCkge1xuICAgICAgICB0aGlzLmdldEVudHJpZXNXaXRoVXJsKHJlc3BvbnNlLm5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9yZ2FuaXplRW50cmllcygpIHtcbiAgICB0aGlzLnN0YXRlID0gJ291dCc7XG4gICAgbGV0IG9yZ2FuaXplRW50cmllc0ZuID0gKCkgPT4ge1xuICAgICAgdGhpcy5lbnRyaWVzQnlNb250aEFuZFllYXIgPSBbXTtcbiAgICAgIGxldCBuZXdFbnRyaWVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmVudHJpZXNCeU1vbnRoQW5kWWVhcikpO1xuICAgICAgZm9yIChjb25zdCBlbnRyeVdyYXBwZXIgb2YgdGhpcy5lbnRyaWVzKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cnlXcmFwcGVyLmVudHJ5O1xuICAgICAgICBjb25zdCBjcmVhdGVfZGF0ZSA9IG5ldyBEYXRlKGVudHJ5LmNyZWF0ZV9kYXRlKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBjcmVhdGVfZGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gY3JlYXRlX2RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3Qga2V5ID0gbW9udGggKyAnLycgKyB5ZWFyO1xuICAgICAgICBjb25zdCBzb3J0X2luZGV4ID0gKHllYXIgKiAxMDApICsgbW9udGg7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBmaWx0ZXIobmV3RW50cmllcywgKGVudHJ5Q29udGFpbmVyKSA9PiBlbnRyeUNvbnRhaW5lci5tb250aF95ZWFyID09PSBrZXkpO1xuICAgICAgICBpZiAoY29udGFpbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyc1swXTtcbiAgICAgICAgICBjb25zdCBlbnRyaWVzV2l0aElkID0gZmlsdGVyKGNvbnRhaW5lci5lbnRyaWVzLCAoZSkgPT4gZS5pZCA9PT0gZW50cnlXcmFwcGVyLmVudHJ5LmlkKTtcbiAgICAgICAgICBpZiAoZW50cmllc1dpdGhJZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5lbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdDb250YWluZXIgPSB7bW9udGhfeWVhcjoga2V5LCBtb250aF95ZWFyX251bWJlcjogc29ydF9pbmRleCwgZW50cmllczogW2VudHJ5XX07XG4gICAgICAgICAgbmV3RW50cmllcy5wdXNoKG5ld0NvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5ld0VudHJpZXMuc29ydChcbiAgICAgICAgKGVudHJ5X2EsIGVudHJ5X2IpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50cnlfYS5tb250aF95ZWFyX251bWJlciAtIGVudHJ5X2IubW9udGhfeWVhcl9udW1iZXI7XG4gICAgICAgIH0pO1xuICAgICAgbmV3RW50cmllcy5yZXZlcnNlKCk7XG5cbiAgICAgIGxldCBzZXRFbnRyaWVzRm4gPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZW50cmllc0J5TW9udGhBbmRZZWFyID0gbmV3RW50cmllcztcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdpbic7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KHNldEVudHJpZXNGbi5iaW5kKHRoaXMpLCA0MDApXG4gICAgfVxuICAgIHNldFRpbWVvdXQob3JnYW5pemVFbnRyaWVzRm4uYmluZCh0aGlzKSwgNDAwKVxuICB9XG5cbiAgZ2V0RW50cmllcygpIHtcbiAgICB0aGlzLmVudHJ5U2VydmljZS5nZXQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmVudHJpZXMgPSBtYXAocmVzcG9uc2UucmVzdWx0cywgKHJlc3VsdCkgPT4ge1xuICAgICAgICByZXR1cm4geyBpZDogcmVzdWx0LmlkLCBlbnRyeTogbmV3IEVudHJ5KHJlc3VsdCl9O1xuICAgICAgfSk7XG4gICAgICBpZiAoKHJlc3BvbnNlIGFzIGFueSkubmV4dCkge1xuICAgICAgICB0aGlzLmdldEVudHJpZXNXaXRoVXJsKHJlc3BvbnNlLm5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlYXJjaEVudHJpZXMoc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gICAgaWYgKHNlYXJjaFRlcm0gIT09IFwiXCIpIHtcbiAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLnNlYXJjaChzZWFyY2hUZXJtKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IG1hcChyZXNwb25zZS5yZXN1bHRzLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICgocmVzcG9uc2UgYXMgYW55KS5uZXh0KSB7XG4gICAgICAgICAgdGhpcy5nZXRFbnRyaWVzV2l0aFVybChyZXNwb25zZS5uZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9yZ2FuaXplRW50cmllcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRFbnRyaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICB9XG5cbiAgcm91dGVUbyhlbnRyeSkge1xuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ2NyZWF0ZShsZWZ0LWNvbDpjcmVhdGUvL3JpZ2h0LWNvbDpjcmVhdGUpJykudGhlbigoKSA9PiB7XG5cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnYmxvZycsIGVudHJ5LnNsdWddKS50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gTm9vcFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9udGhBbmRZZWFyRnJvbUtleShrZXk6IHN0cmluZykge1xuICAgIGxldCBzdWJoZWFkaW5nID0gJyc7XG4gICAgY29uc3QgcGFydHMgPSBrZXkuc3BsaXQoJy8nKTtcblxuICAgIHN3aXRjaCAoTnVtYmVyKHBhcnRzWzBdKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdKYW51YXJ5ICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdGZWJydWFyeSAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnTWFyY2ggJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0FwcmlsICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdNYXkgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0p1bmUgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDY6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0p1bHkgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0F1Z3VzdCAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgODpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnU2VwdGVtYmVyICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA5OlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdPY3RvYmVyICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnTm92ZW1iZXIgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDExOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdEZWNlbWJlciAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0phbnVhcnkgJztcbiAgICB9XG4gICAgc3ViaGVhZGluZyArPSBwYXJ0c1sxXTtcblxuICAgIHJldHVybiBzdWJoZWFkaW5nO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc291cmNlU3ViKSB7XG4gICAgICB0aGlzLnNvdXJjZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zb3VyY2VTdWIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIG9uU2VhcmNoQ2hhbmdlKHNlYXJjaFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRvU2VhcmNoLmVtaXQoc2VhcmNoVmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZW5hdiBuby1zY3JvbGxiYXJcIj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDIwcHg7XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIiAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiAjbmF2Y29udGFpbmVyIGNsYXNzPVwibmF2Y29udGFpbmVyXCJcbiAgICBbQHNpZGVOYXZBbmltYXRpb25dPVwic3RhdGVcIlxuICA+XG4gICAgPG1hdC1uYXYtbGlzdFxuICAgICAgKm5nRm9yPVwibGV0IGNvbnRhaW5lciBvZiBlbnRyaWVzQnlNb250aEFuZFllYXJcIlxuICAgID5cbiAgICAgIDxoMz57e2dldE1vbnRoQW5kWWVhckZyb21LZXkoY29udGFpbmVyLm1vbnRoX3llYXIpfX08L2gzPlxuICAgICAgPGEgbWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgZW50cnkgb2YgY29udGFpbmVyLmVudHJpZXNcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInJvdXRlVG8oZW50cnkpXCI+e3tlbnRyeS50aXRsZX19PC9hPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuXG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZGVudGl0eT8uaWQgPT09IDFcIj5cbiAgICA8aDI+TWlzYzwvaDI+XG5cbiAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgPGEgbWF0LWxpc3QtaXRlbSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJyb3V0ZVRvKG51bGwpXCI+Q3JlYXRlPC9hPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGgzICpuZ0lmPVwiaWRlbnRpdHlcIj5Mb2dnZWQgaW4gYXMge3tpZGVudGl0eT8uZW1haWx9fTwvaDM+XG48L2Rpdj5cblxuIl19
|
|
@@ -46,6 +46,9 @@ export class EntryService extends DjangoRestFrameworkEndpointService {
|
|
|
46
46
|
get() {
|
|
47
47
|
return this.http.get(this.endpoint).pipe(map(this.handleListResponse.bind(this)));
|
|
48
48
|
}
|
|
49
|
+
search(searchTerm) {
|
|
50
|
+
return this.http.get(this.endpoint + "?search=" + searchTerm).pipe(map(this.handleListResponse.bind(this)));
|
|
51
|
+
}
|
|
49
52
|
getUnpublishedEntries() {
|
|
50
53
|
const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));
|
|
51
54
|
return this.http.get(this.adminEndpoint, { params });
|
|
@@ -100,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
100
103
|
providedIn: 'root'
|
|
101
104
|
}]
|
|
102
105
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFFdEcsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwQyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFhLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTVELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBSzNELE1BQU0sT0FBTyxZQUFhLFNBQVEsa0NBQXlDO0lBU3ZFLGNBQWMsQ0FBQyxHQUFVO1FBQ3JCLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQXdCO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNyQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsS0FBSyxNQUFNLE1BQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNuQztRQUNELFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzNCLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxZQUNjLElBQWdCO1FBRTFCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUZGLFNBQUksR0FBSixJQUFJ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bkIsMkVBQTJFO1FBQzNFLDRCQUE0QjtRQUM1QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFekMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFNLElBQUksQ0FBQyxhQUFhLEdBQUksTUFBYyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzVFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDOUQsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3RDLENBQUM7SUFDTixDQUFDOzt5R0E3SFEsWUFBWTs2R0FBWixZQUFZLGNBRlQsTUFBTTsyRkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGphbmdvUmVzdEZyYW1ld29ya0VuZHBvaW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvZGphbmdvLXJlc3QtZnJhbWV3b3JrLWVuZHBvaW50LnNlcnZpY2UnO1xuaW1wb3J0IHtMaXN0UmVzcG9uc2V9IGZyb20gJy4uL2RhdGEvbGlzdC1yZXNwb25zZSc7XG5pbXBvcnQge0VudHJ5fSBmcm9tICcuLi9kYXRhL2VudHJ5JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2xvTWFwfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0NvcmVFdmVudH0gZnJvbSAnLi4vZGF0YS9jb3JlLWV2ZW50JztcbmltcG9ydCB7Q29yZUV2ZW50VHlwZX0gZnJvbSAnLi4vZGF0YS9jb3JlLWV2ZW50LXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRW50cnlTZXJ2aWNlIGV4dGVuZHMgRGphbmdvUmVzdEZyYW1ld29ya0VuZHBvaW50U2VydmljZTxFbnRyeT4ge1xuXG4gICAgZW5kcG9pbnQgPSAnL2Jsb2dfYXBpL2VudHJpZXMvJztcbiAgICBhZG1pbkVuZHBvaW50ID0gJy9ibG9nX2FwaS9hZG1pbi9lbnRyaWVzLyc7XG5cbiAgICBfY3VycmVudGx5RWRpdGVkRW50cnk6IEVudHJ5O1xuICAgIGN1cnJlbnRseUVkaXRlZEVudHJ5OiBTdWJqZWN0PEVudHJ5PiA9IG5ldyBTdWJqZWN0PEVudHJ5PigpO1xuICAgIHN1YjtcblxuICAgIGhhbmRsZVJlc3BvbnNlKG9iajogRW50cnkpOiBFbnRyeSB7XG4gICAgICAgIHJldHVybiBuZXcgRW50cnkob2JqKTtcbiAgICB9XG5cbiAgICBoYW5kbGVMaXN0UmVzcG9uc2Uob2JqOiBMaXN0UmVzcG9uc2U8RW50cnk+KTogTGlzdFJlc3BvbnNlPEVudHJ5PiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gb2JqO1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3BvbnNlLnJlc3VsdHMpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChuZXcgRW50cnkocmVzdWx0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzcG9uc2UucmVzdWx0cyA9IHJlc3VsdHM7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaHR0cCk7XG4gICAgICAgIHRoaXMuc3ViID0gdGhpcy5jdXJyZW50bHlFZGl0ZWRFbnRyeS5waXBlKGRlYm91bmNlVGltZSgzMDAwKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICBlLmVkaXRfZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgncHVibGlzaGVkJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKS5zZXQoJ2RlZnVuY3QnLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuXG4gICAgICAgICAgICB0aGlzLmh0dHAucGF0Y2godGhpcy5hZG1pbkVuZHBvaW50ICsgZS5pZCArICcvJywgZSwge3BhcmFtc30pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHRoaXMuaGFuZGxlUmVzcG9uc2UuYmluZCh0aGlzKSlcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlckNvcmVFdmVudCgocmVzcG9uc2UgYXMgRW50cnkpLCBDb3JlRXZlbnRUeXBlLlVQREFURSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1N5bmNlZCAnICsgZS5pZCArICcuLi4nKTtcbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgZW5jb3VudGVyZWQgc3luY2luZyAnICsgZS5pZCArICcsIHRyeWluZyB0byBjcmVhdGUuLi4nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFkbWluRW5kcG9pbnQsIGUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCh0aGlzLmhhbmRsZVJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJDb3JlRXZlbnQoKHJlc3BvbnNlIGFzIEVudHJ5KSwgQ29yZUV2ZW50VHlwZS5DUkVBVEUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ3JlYXRlZCAnICsgZS5pZCArICcuLi4nKTtcbiAgICAgICAgICAgICAgICB9LCAoY3JlYXRlRXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBjcmVhdGluZyAnICsgZS5pZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0KCk6IE9ic2VydmFibGU8TGlzdFJlc3BvbnNlPEVudHJ5Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmVuZHBvaW50KS5waXBlKFxuICAgICAgICAgICAgbWFwKHRoaXMuaGFuZGxlTGlzdFJlc3BvbnNlLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VW5wdWJsaXNoZWRFbnRyaWVzKCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgncHVibGlzaGVkJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKS5zZXQoJ2RlZnVuY3QnLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmFkbWluRW5kcG9pbnQsIHtwYXJhbXN9KTtcbiAgICB9XG5cbiAgICBnZXRCeVNsdWcoc2x1Zzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZW5kcG9pbnQgKyBzbHVnICsgJy9ieV9zbHVnLycpLnBpcGUoXG4gICAgICAgICAgICBtYXAodGhpcy5oYW5kbGVSZXNwb25zZS5iaW5kKHRoaXMpKVxuICAgICAgICApO1xuICAgIH1cbiAgICBnZXRVbnB1Ymxpc2hlZEJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW50cnk+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3B1Ymxpc2hlZCcsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSkuc2V0KCdkZWZ1bmN0JywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RW50cnk+KHRoaXMuYWRtaW5FbmRwb2ludCArIGlkLCB7cGFyYW1zfSkucGlwZShcbiAgICAgICAgICAgIG1hcCh0aGlzLmhhbmRsZVJlc3BvbnNlLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHVwZGF0ZVVucHVibGlzaGVkRW50cnkoZW50cnk6IEVudHJ5KTogT2JzZXJ2YWJsZTxFbnRyeT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgncHVibGlzaGVkJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKS5zZXQoJ2RlZnVuY3QnLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPEVudHJ5Pih0aGlzLmFkbWluRW5kcG9pbnQgKyBlbnRyeS5pZCArICcvJywgZW50cnksIHtwYXJhbXN9KS5waXBlKFxuICAgICAgICAgICAgbWFwKCh2YWwpID0+IHRoaXMudHJpZ2dlckNvcmVFdmVudCh2YWwsIENvcmVFdmVudFR5cGUuVVBEQVRFKSksXG4gICAgICAgICAgICBtYXAodGhpcy5oYW5kbGVSZXNwb25zZS5iaW5kKHRoaXMpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNsdWdpZnkoczogc3RyaW5nKSB7XG5cbiAgICAgICAgY29uc3QgY2hhck1hcCA9IEpTT04ucGFyc2UoJ3tcIiRcIjpcImRvbGxhclwiLFwiJVwiOlwicGVyY2VudFwiLFwiJlwiOlwiYW5kXCIsXCI8XCI6XCJsZXNzXCIsXCI+XCI6XCJncmVhdGVyXCIsXCJ8XCI6XCJvclwiLFwiwqJcIjpcImNlbnRcIixcIsKjXCI6XCJwb3VuZFwiLFwiwqRcIjpcImN1cnJlbmN5XCIsXCLCpVwiOlwieWVuXCIsXCLCqVwiOlwiKGMpXCIsXCLCqlwiOlwiYVwiLFwiwq5cIjpcIihyKVwiLFwiwrpcIjpcIm9cIixcIsOAXCI6XCJBXCIsXCLDgVwiOlwiQVwiLFwiw4JcIjpcIkFcIixcIsODXCI6XCJBXCIsXCLDhFwiOlwiQVwiLFwiw4VcIjpcIkFcIixcIsOGXCI6XCJBRVwiLFwiw4dcIjpcIkNcIixcIsOIXCI6XCJFXCIsXCLDiVwiOlwiRVwiLFwiw4pcIjpcIkVcIixcIsOLXCI6XCJFXCIsXCLDjFwiOlwiSVwiLFwiw41cIjpcIklcIixcIsOOXCI6XCJJXCIsXCLDj1wiOlwiSVwiLFwiw5BcIjpcIkRcIixcIsORXCI6XCJOXCIsXCLDklwiOlwiT1wiLFwiw5NcIjpcIk9cIixcIsOUXCI6XCJPXCIsXCLDlVwiOlwiT1wiLFwiw5ZcIjpcIk9cIixcIsOYXCI6XCJPXCIsXCLDmVwiOlwiVVwiLFwiw5pcIjpcIlVcIixcIsObXCI6XCJVXCIsXCLDnFwiOlwiVVwiLFwiw51cIjpcIllcIixcIsOeXCI6XCJUSFwiLFwiw59cIjpcInNzXCIsXCLDoFwiOlwiYVwiLFwiw6FcIjpcImFcIixcIsOiXCI6XCJhXCIsXCLDo1wiOlwiYVwiLFwiw6RcIjpcImFcIixcIsOlXCI6XCJhXCIsXCLDplwiOlwiYWVcIixcIsOnXCI6XCJjXCIsXCLDqFwiOlwiZVwiLFwiw6lcIjpcImVcIixcIsOqXCI6XCJlXCIsXCLDq1wiOlwiZVwiLFwiw6xcIjpcImlcIixcIsOtXCI6XCJpXCIsXCLDrlwiOlwiaVwiLFwiw69cIjpcImlcIixcIsOwXCI6XCJkXCIsXCLDsVwiOlwiblwiLFwiw7JcIjpcIm9cIixcIsOzXCI6XCJvXCIsXCLDtFwiOlwib1wiLFwiw7VcIjpcIm9cIixcIsO2XCI6XCJvXCIsXCLDuFwiOlwib1wiLFwiw7lcIjpcInVcIixcIsO6XCI6XCJ1XCIsXCLDu1wiOlwidVwiLFwiw7xcIjpcInVcIixcIsO9XCI6XCJ5XCIsXCLDvlwiOlwidGhcIixcIsO/XCI6XCJ5XCIsXCLEgFwiOlwiQVwiLFwixIFcIjpcImFcIixcIsSCXCI6XCJBXCIsXCLEg1wiOlwiYVwiLFwixIRcIjpcIkFcIixcIsSFXCI6XCJhXCIsXCLEhlwiOlwiQ1wiLFwixIdcIjpcImNcIixcIsSMXCI6XCJDXCIsXCLEjVwiOlwiY1wiLFwixI5cIjpcIkRcIixcIsSPXCI6XCJkXCIsXCLEkFwiOlwiREpcIixcIsSRXCI6XCJkalwiLFwixJJcIjpcIkVcIixcIsSTXCI6XCJlXCIsXCLEllwiOlwiRVwiLFwixJdcIjpcImVcIixcIsSYXCI6XCJlXCIsXCLEmVwiOlwiZVwiLFwixJpcIjpcIkVcIixcIsSbXCI6XCJlXCIsXCLEnlwiOlwiR1wiLFwixJ9cIjpcImdcIixcIsSiXCI6XCJHXCIsXCLEo1wiOlwiZ1wiLFwixKhcIjpcIklcIixcIsSpXCI6XCJpXCIsXCLEqlwiOlwiaVwiLFwixKtcIjpcImlcIixcIsSuXCI6XCJJXCIsXCLEr1wiOlwiaVwiLFwixLBcIjpcIklcIixcIsSxXCI6XCJpXCIsXCLEtlwiOlwia1wiLFwixLdcIjpcImtcIixcIsS7XCI6XCJMXCIsXCLEvFwiOlwibFwiLFwixL1cIjpcIkxcIixcIsS+XCI6XCJsXCIsXCLFgVwiOlwiTFwiLFwixYJcIjpcImxcIixcIsWDXCI6XCJOXCIsXCLFhFwiOlwiblwiLFwixYVcIjpcIk5cIixcIsWGXCI6XCJuXCIsXCLFh1wiOlwiTlwiLFwixYhcIjpcIm5cIixcIsWMXCI6XCJPXCIsXCLFjVwiOlwib1wiLFwixZBcIjpcIk9cIixcIsWRXCI6XCJvXCIsXCLFklwiOlwiT0VcIixcIsWTXCI6XCJvZVwiLFwixZRcIjpcIlJcIixcIsWVXCI6XCJyXCIsXCLFmFwiOlwiUlwiLFwixZlcIjpcInJcIixcIsWaXCI6XCJTXCIsXCLFm1wiOlwic1wiLFwixZ5cIjpcIlNcIixcIsWfXCI6XCJzXCIsXCLFoFwiOlwiU1wiLFwixaFcIjpcInNcIixcIsWiXCI6XCJUXCIsXCLFo1wiOlwidFwiLFwixaRcIjpcIlRcIixcIsWlXCI6XCJ0XCIsXCLFqFwiOlwiVVwiLFwixalcIjpcInVcIixcIsWqXCI6XCJ1XCIsXCLFq1wiOlwidVwiLFwixa5cIjpcIlVcIixcIsWvXCI6XCJ1XCIsXCLFsFwiOlwiVVwiLFwixbFcIjpcInVcIixcIsWyXCI6XCJVXCIsXCLFs1wiOlwidVwiLFwixbRcIjpcIldcIixcIsW1XCI6XCJ3XCIsXCLFtlwiOlwiWVwiLFwixbdcIjpcInlcIixcIsW4XCI6XCJZXCIsXCLFuVwiOlwiWlwiLFwixbpcIjpcInpcIixcIsW7XCI6XCJaXCIsXCLFvFwiOlwielwiLFwixb1cIjpcIlpcIixcIsW+XCI6XCJ6XCIsXCLGj1wiOlwiRVwiLFwixpJcIjpcImZcIixcIsagXCI6XCJPXCIsXCLGoVwiOlwib1wiLFwixq9cIjpcIlVcIixcIsawXCI6XCJ1XCIsXCLHiFwiOlwiTEpcIixcIseJXCI6XCJsalwiLFwix4tcIjpcIk5KXCIsXCLHjFwiOlwibmpcIixcIsiYXCI6XCJTXCIsXCLImVwiOlwic1wiLFwiyJpcIjpcIlRcIixcIsibXCI6XCJ0XCIsXCLJmVwiOlwiZVwiLFwiy5pcIjpcIm9cIixcIs6GXCI6XCJBXCIsXCLOiFwiOlwiRVwiLFwizolcIjpcIkhcIixcIs6KXCI6XCJJXCIsXCLOjFwiOlwiT1wiLFwizo5cIjpcIllcIixcIs6PXCI6XCJXXCIsXCLOkFwiOlwiaVwiLFwizpFcIjpcIkFcIixcIs6SXCI6XCJCXCIsXCLOk1wiOlwiR1wiLFwizpRcIjpcIkRcIixcIs6VXCI6XCJFXCIsXCLOllwiOlwiWlwiLFwizpdcIjpcIkhcIixcIs6YXCI6XCI4XCIsXCLOmVwiOlwiSVwiLFwizppcIjpcIktcIixcIs6bXCI6XCJMXCIsXCLOnFwiOlwiTVwiLFwizp1cIjpcIk5cIixcIs6eXCI6XCIzXCIsXCLOn1wiOlwiT1wiLFwizqBcIjpcIlBcIixcIs6hXCI6XCJSXCIsXCLOo1wiOlwiU1wiLFwizqRcIjpcIlRcIixcIs6lXCI6XCJZXCIsXCLOplwiOlwiRlwiLFwizqdcIjpcIlhcIixcIs6oXCI6XCJQU1wiLFwizqlcIjpcIldcIixcIs6qXCI6XCJJXCIsXCLOq1wiOlwiWVwiLFwizqxcIjpcImFcIixcIs6tXCI6XCJlXCIsXCLOrlwiOlwiaFwiLFwizq9cIjpcImlcIixcIs6wXCI6XCJ5XCIsXCLOsVwiOlwiYVwiLFwizrJcIjpcImJcIixcIs6zXCI6XCJnXCIsXCLOtFwiOlwiZFwiLFwizrVcIjpcImVcIixcIs62XCI6XCJ6XCIsXCLOt1wiOlwiaFwiLFwizrhcIjpcIjhcIixcIs65XCI6XCJpXCIsXCLOulwiOlwia1wiLFwizrtcIjpcImxcIixcIs68XCI6XCJtXCIsXCLOvVwiOlwiblwiLFwizr5cIjpcIjNcIixcIs6/XCI6XCJvXCIsXCLPgFwiOlwicFwiLFwiz4FcIjpcInJcIixcIs+CXCI6XCJzXCIsXCLPg1wiOlwic1wiLFwiz4RcIjpcInRcIixcIs+FXCI6XCJ5XCIsXCLPhlwiOlwiZlwiLFwiz4dcIjpcInhcIixcIs+IXCI6XCJwc1wiLFwiz4lcIjpcIndcIixcIs+KXCI6XCJpXCIsXCLPi1wiOlwieVwiLFwiz4xcIjpcIm9cIixcIs+NXCI6XCJ5XCIsXCLPjlwiOlwid1wiLFwi0IFcIjpcIllvXCIsXCLQglwiOlwiREpcIixcItCEXCI6XCJZZVwiLFwi0IZcIjpcIklcIixcItCHXCI6XCJZaVwiLFwi0IhcIjpcIkpcIixcItCJXCI6XCJMSlwiLFwi0IpcIjpcIk5KXCIsXCLQi1wiOlwiQ1wiLFwi0I9cIjpcIkRaXCIsXCLQkFwiOlwiQVwiLFwi0JFcIjpcIkJcIixcItCSXCI6XCJWXCIsXCLQk1wiOlwiR1wiLFwi0JRcIjpcIkRcIixcItCVXCI6XCJFXCIsXCLQllwiOlwiWmhcIixcItCXXCI6XCJaXCIsXCLQmFwiOlwiSVwiLFwi0JlcIjpcIkpcIixcItCaXCI6XCJLXCIsXCLQm1wiOlwiTFwiLFwi0JxcIjpcIk1cIixcItCdXCI6XCJOXCIsXCLQnlwiOlwiT1wiLFwi0J9cIjpcIlBcIixcItCgXCI6XCJSXCIsXCLQoVwiOlwiU1wiLFwi0KJcIjpcIlRcIixcItCjXCI6XCJVXCIsXCLQpFwiOlwiRlwiLFwi0KVcIjpcIkhcIixcItCmXCI6XCJDXCIsXCLQp1wiOlwiQ2hcIixcItCoXCI6XCJTaFwiLFwi0KlcIjpcIlNoXCIsXCLQqlwiOlwiVVwiLFwi0KtcIjpcIllcIixcItCsXCI6XCJcIixcItCtXCI6XCJFXCIsXCLQrlwiOlwiWXVcIixcItCvXCI6XCJZYVwiLFwi0LBcIjpcImFcIixcItCxXCI6XCJiXCIsXCLQslwiOlwidlwiLFwi0LNcIjpcImdcIixcItC0XCI6XCJkXCIsXCLQtVwiOlwiZVwiLFwi0LZcIjpcInpoXCIsXCLQt1wiOlwielwiLFwi0LhcIjpcImlcIixcItC5XCI6XCJqXCIsXCLQulwiOlwia1wiLFwi0LtcIjpcImxcIixcItC8XCI6XCJtXCIsXCLQvVwiOlwiblwiLFwi0L5cIjpcIm9cIixcItC/XCI6XCJwXCIsXCLRgFwiOlwiclwiLFwi0YFcIjpcInNcIixcItGCXCI6XCJ0XCIsXCLRg1wiOlwidVwiLFwi0YRcIjpcImZcIixcItGFXCI6XCJoXCIsXCLRhlwiOlwiY1wiLFwi0YdcIjpcImNoXCIsXCLRiFwiOlwic2hcIixcItGJXCI6XCJzaFwiLFwi0YpcIjpcInVcIixcItGLXCI6XCJ5XCIsXCLRjFwiOlwiXCIsXCLRjVwiOlwiZVwiLFwi0Y5cIjpcInl1XCIsXCLRj1wiOlwieWFcIixcItGRXCI6XCJ5b1wiLFwi0ZJcIjpcImRqXCIsXCLRlFwiOlwieWVcIixcItGWXCI6XCJpXCIsXCLRl1wiOlwieWlcIixcItGYXCI6XCJqXCIsXCLRmVwiOlwibGpcIixcItGaXCI6XCJualwiLFwi0ZtcIjpcImNcIixcItGdXCI6XCJ1XCIsXCLRn1wiOlwiZHpcIixcItKQXCI6XCJHXCIsXCLSkVwiOlwiZ1wiLFwi0pJcIjpcIkdIXCIsXCLSk1wiOlwiZ2hcIixcItKaXCI6XCJLSFwiLFwi0ptcIjpcImtoXCIsXCLSolwiOlwiTkdcIixcItKjXCI6XCJuZ1wiLFwi0q5cIjpcIlVFXCIsXCLSr1wiOlwidWVcIixcItKwXCI6XCJVXCIsXCLSsVwiOlwidVwiLFwi0rpcIjpcIkhcIixcItK7XCI6XCJoXCIsXCLTmFwiOlwiQUVcIixcItOZXCI6XCJhZVwiLFwi06hcIjpcIk9FXCIsXCLTqVwiOlwib2VcIixcItSxXCI6XCJBXCIsXCLUslwiOlwiQlwiLFwi1LNcIjpcIkdcIixcItS0XCI6XCJEXCIsXCLUtVwiOlwiRVwiLFwi1LZcIjpcIlpcIixcItS3XCI6XCJFXFwnXCIsXCLUuFwiOlwiWVxcJ1wiLFwi1LlcIjpcIlRcXCdcIixcItS6XCI6XCJKSFwiLFwi1LtcIjpcIklcIixcItS8XCI6XCJMXCIsXCLUvVwiOlwiWFwiLFwi1L5cIjpcIkNcXCdcIixcItS/XCI6XCJLXCIsXCLVgFwiOlwiSFwiLFwi1YFcIjpcIkRcXCdcIixcItWCXCI6XCJHSFwiLFwi1YNcIjpcIlRXXCIsXCLVhFwiOlwiTVwiLFwi1YVcIjpcIllcIixcItWGXCI6XCJOXCIsXCLVh1wiOlwiU0hcIixcItWJXCI6XCJDSFwiLFwi1YpcIjpcIlBcIixcItWLXCI6XCJKXCIsXCLVjFwiOlwiUlxcJ1wiLFwi1Y1cIjpcIlNcIixcItWOXCI6XCJWXCIsXCLVj1wiOlwiVFwiLFwi1ZBcIjpcIlJcIixcItWRXCI6XCJDXCIsXCLVk1wiOlwiUFxcJ1wiLFwi1ZRcIjpcIlFcXCdcIixcItWVXCI6XCJPXFwnXFwnXCIsXCLVllwiOlwiRlwiLFwi1odcIjpcIkVWXCIsXCLYoVwiOlwiYVwiLFwi2KJcIjpcImFhXCIsXCLYo1wiOlwiYVwiLFwi2KRcIjpcInVcIixcItilXCI6XCJpXCIsXCLYplwiOlwiZVwiLFwi2KdcIjpcImFcIixcItioXCI6XCJiXCIsXCLYqVwiOlwiaFwiLFwi2KpcIjpcInRcIixcItirXCI6XCJ0aFwiLFwi2KxcIjpcImpcIixcItitXCI6XCJoXCIsXCLYrlwiOlwia2hcIixcItivXCI6XCJkXCIsXCLYsFwiOlwidGhcIixcItixXCI6XCJyXCIsXCLYslwiOlwielwiLFwi2LNcIjpcInNcIixcIti0XCI6XCJzaFwiLFwi2LVcIjpcInNcIixcIti2XCI6XCJkaFwiLFwi2LdcIjpcInRcIixcIti4XCI6XCJ6XCIsXCLYuVwiOlwiYVwiLFwi2LpcIjpcImdoXCIsXCLZgVwiOlwiZlwiLFwi2YJcIjpcInFcIixcItmDXCI6XCJrXCIsXCLZhFwiOlwibFwiLFwi2YVcIjpcIm1cIixcItmGXCI6XCJuXCIsXCLZh1wiOlwiaFwiLFwi2YhcIjpcIndcIixcItmJXCI6XCJhXCIsXCLZilwiOlwieVwiLFwi2YtcIjpcImFuXCIsXCLZjFwiOlwib25cIixcItmNXCI6XCJlblwiLFwi2Y5cIjpcImFcIixcItmPXCI6XCJ1XCIsXCLZkFwiOlwiZVwiLFwi2ZJcIjpcIlwiLFwi2aBcIjpcIjBcIixcItmhXCI6XCIxXCIsXCLZolwiOlwiMlwiLFwi2aNcIjpcIjNcIixcItmkXCI6XCI0XCIsXCLZpVwiOlwiNVwiLFwi2aZcIjpcIjZcIixcItmnXCI6XCI3XCIsXCLZqFwiOlwiOFwiLFwi2alcIjpcIjlcIixcItm+XCI6XCJwXCIsXCLahlwiOlwiY2hcIixcItqYXCI6XCJ6aFwiLFwi2qlcIjpcImtcIixcItqvXCI6XCJnXCIsXCLbjFwiOlwieVwiLFwi27BcIjpcIjBcIixcItuxXCI6XCIxXCIsXCLbslwiOlwiMlwiLFwi27NcIjpcIjNcIixcItu0XCI6XCI0XCIsXCLbtVwiOlwiNVwiLFwi27ZcIjpcIjZcIixcItu3XCI6XCI3XCIsXCLbuFwiOlwiOFwiLFwi27lcIjpcIjlcIixcIuC4v1wiOlwiYmFodFwiLFwi4YOQXCI6XCJhXCIsXCLhg5FcIjpcImJcIixcIuGDklwiOlwiZ1wiLFwi4YOTXCI6XCJkXCIsXCLhg5RcIjpcImVcIixcIuGDlVwiOlwidlwiLFwi4YOWXCI6XCJ6XCIsXCLhg5dcIjpcInRcIixcIuGDmFwiOlwiaVwiLFwi4YOZXCI6XCJrXCIsXCLhg5pcIjpcImxcIixcIuGDm1wiOlwibVwiLFwi4YOcXCI6XCJuXCIsXCLhg51cIjpcIm9cIixcIuGDnlwiOlwicFwiLFwi4YOfXCI6XCJ6aFwiLFwi4YOgXCI6XCJyXCIsXCLhg6FcIjpcInNcIixcIuGDolwiOlwidFwiLFwi4YOjXCI6XCJ1XCIsXCLhg6RcIjpcImZcIixcIuGDpVwiOlwia1wiLFwi4YOmXCI6XCJnaFwiLFwi4YOnXCI6XCJxXCIsXCLhg6hcIjpcInNoXCIsXCLhg6lcIjpcImNoXCIsXCLhg6pcIjpcInRzXCIsXCLhg6tcIjpcImR6XCIsXCLhg6xcIjpcInRzXCIsXCLhg61cIjpcImNoXCIsXCLhg65cIjpcImtoXCIsXCLhg69cIjpcImpcIixcIuGDsFwiOlwiaFwiLFwi4bmiXCI6XCJTXCIsXCLhuaNcIjpcInNcIixcIuG6gFwiOlwiV1wiLFwi4bqBXCI6XCJ3XCIsXCLhuoJcIjpcIldcIixcIuG6g1wiOlwid1wiLFwi4bqEXCI6XCJXXCIsXCLhuoVcIjpcIndcIixcIuG6nlwiOlwiU1NcIixcIuG6oFwiOlwiQVwiLFwi4bqhXCI6XCJhXCIsXCLhuqJcIjpcIkFcIixcIuG6o1wiOlwiYVwiLFwi4bqkXCI6XCJBXCIsXCLhuqVcIjpcImFcIixcIuG6plwiOlwiQVwiLFwi4bqnXCI6XCJhXCIsXCLhuqhcIjpcIkFcIixcIuG6qVwiOlwiYVwiLFwi4bqqXCI6XCJBXCIsXCLhuqtcIjpcImFcIixcIuG6rFwiOlwiQVwiLFwi4bqtXCI6XCJhXCIsXCLhuq5cIjpcIkFcIixcIuG6r1wiOlwiYVwiLFwi4bqwXCI6XCJBXCIsXCLhurFcIjpcImFcIixcIuG6slwiOlwiQVwiLFwi4bqzXCI6XCJhXCIsXCLhurRcIjpcIkFcIixcIuG6tVwiOlwiYVwiLFwi4bq2XCI6XCJBXCIsXCLhurdcIjpcImFcIixcIuG6uFwiOlwiRVwiLFwi4bq5XCI6XCJlXCIsXCLhurpcIjpcIkVcIixcIuG6u1wiOlwiZVwiLFwi4bq8XCI6XCJFXCIsXCLhur1cIjpcImVcIixcIuG6vlwiOlwiRVwiLFwi4bq/XCI6XCJlXCIsXCLhu4BcIjpcIkVcIixcIuG7gVwiOlwiZVwiLFwi4buCXCI6XCJFXCIsXCLhu4NcIjpcImVcIixcIuG7hFwiOlwiRVwiLFwi4buFXCI6XCJlXCIsXCLhu4ZcIjpcIkVcIixcIuG7h1wiOlwiZVwiLFwi4buIXCI6XCJJXCIsXCLhu4lcIjpcImlcIixcIuG7ilwiOlwiSVwiLFwi4buLXCI6XCJpXCIsXCLhu4xcIjpcIk9cIixcIuG7jVwiOlwib1wiLFwi4buOXCI6XCJPXCIsXCLhu49cIjpcIm9cIixcIuG7kFwiOlwiT1wiLFwi4buRXCI6XCJvXCIsXCLhu5JcIjpcIk9cIixcIuG7k1wiOlwib1wiLFwi4buUXCI6XCJPXCIsXCLhu5VcIjpcIm9cIixcIuG7llwiOlwiT1wiLFwi4buXXCI6XCJvXCIsXCLhu5hcIjpcIk9cIixcIuG7mVwiOlwib1wiLFwi4buaXCI6XCJPXCIsXCLhu5tcIjpcIm9cIixcIuG7nFwiOlwiT1wiLFwi4budXCI6XCJvXCIsXCLhu55cIjpcIk9cIixcIuG7n1wiOlwib1wiLFwi4bugXCI6XCJPXCIsXCLhu6FcIjpcIm9cIixcIuG7olwiOlwiT1wiLFwi4bujXCI6XCJvXCIsXCLhu6RcIjpcIlVcIixcIuG7pVwiOlwidVwiLFwi4bumXCI6XCJVXCIsXCLhu6dcIjpcInVcIixcIuG7qFwiOlwiVVwiLFwi4bupXCI6XCJ1XCIsXCLhu6pcIjpcIlVcIixcIuG7q1wiOlwidVwiLFwi4busXCI6XCJVXCIsXCLhu61cIjpcInVcIixcIuG7rlwiOlwiVVwiLFwi4buvXCI6XCJ1XCIsXCLhu7BcIjpcIlVcIixcIuG7sVwiOlwidVwiLFwi4buyXCI6XCJZXCIsXCLhu7NcIjpcInlcIixcIuG7tFwiOlwiWVwiLFwi4bu1XCI6XCJ5XCIsXCLhu7ZcIjpcIllcIixcIuG7t1wiOlwieVwiLFwi4bu4XCI6XCJZXCIsXCLhu7lcIjpcInlcIixcIuKAk1wiOlwiLVwiLFwi4oCYXCI6XCJcXCdcIixcIuKAmVwiOlwiXFwnXCIsXCLigJxcIjpcIlxcXFxcXFwiXCIsXCLigJ1cIjpcIlxcXFxcXFwiXCIsXCLigJ5cIjpcIlxcXFxcXFwiXCIsXCLigKBcIjpcIitcIixcIuKAolwiOlwiKlwiLFwi4oCmXCI6XCIuLi5cIixcIuKCoFwiOlwiZWN1XCIsXCLigqJcIjpcImNydXplaXJvXCIsXCLigqNcIjpcImZyZW5jaCBmcmFuY1wiLFwi4oKkXCI6XCJsaXJhXCIsXCLigqVcIjpcIm1pbGxcIixcIuKCplwiOlwibmFpcmFcIixcIuKCp1wiOlwicGVzZXRhXCIsXCLigqhcIjpcInJ1cGVlXCIsXCLigqlcIjpcIndvblwiLFwi4oKqXCI6XCJuZXcgc2hlcXVlbFwiLFwi4oKrXCI6XCJkb25nXCIsXCLigqxcIjpcImV1cm9cIixcIuKCrVwiOlwia2lwXCIsXCLigq5cIjpcInR1Z3Jpa1wiLFwi4oKvXCI6XCJkcmFjaG1hXCIsXCLigrBcIjpcInBlbm55XCIsXCLigrFcIjpcInBlc29cIixcIuKCslwiOlwiZ3VhcmFuaVwiLFwi4oKzXCI6XCJhdXN0cmFsXCIsXCLigrRcIjpcImhyeXZuaWFcIixcIuKCtVwiOlwiY2VkaVwiLFwi4oK4XCI6XCJrYXpha2hzdGFuaSB0ZW5nZVwiLFwi4oK5XCI6XCJpbmRpYW4gcnVwZWVcIixcIuKCulwiOlwidHVya2lzaCBsaXJhXCIsXCLigr1cIjpcInJ1c3NpYW4gcnVibGVcIixcIuKCv1wiOlwiYml0Y29pblwiLFwi4oSgXCI6XCJzbVwiLFwi4oSiXCI6XCJ0bVwiLFwi4oiCXCI6XCJkXCIsXCLiiIZcIjpcImRlbHRhXCIsXCLiiJFcIjpcInN1bVwiLFwi4oieXCI6XCJpbmZpbml0eVwiLFwi4pmlXCI6XCJsb3ZlXCIsXCLlhYNcIjpcInl1YW5cIixcIuWGhlwiOlwieWVuXCIsXCLvt7xcIjpcInJpYWxcIixcIu+7tVwiOlwibGFhXCIsXCLvu7dcIjpcImxhYVwiLFwi77u5XCI6XCJsYWlcIixcIu+7u1wiOlwibGFcIn0nKTtcbiAgICAgICAgY29uc3QgbG9jYWxlcyA9IEpTT04ucGFyc2UoJ3tcImJnXCI6e1wi0JlcIjpcIllcIixcItCmXCI6XCJUc1wiLFwi0KlcIjpcIlNodFwiLFwi0KpcIjpcIkFcIixcItCsXCI6XCJZXCIsXCLQuVwiOlwieVwiLFwi0YZcIjpcInRzXCIsXCLRiVwiOlwic2h0XCIsXCLRilwiOlwiYVwiLFwi0YxcIjpcInlcIn0sXCJkZVwiOntcIsOEXCI6XCJBRVwiLFwiw6RcIjpcImFlXCIsXCLDllwiOlwiT0VcIixcIsO2XCI6XCJvZVwiLFwiw5xcIjpcIlVFXCIsXCLDvFwiOlwidWVcIixcIsOfXCI6XCJzc1wiLFwiJVwiOlwicHJvemVudFwiLFwiJlwiOlwidW5kXCIsXCJ8XCI6XCJvZGVyXCIsXCLiiJFcIjpcInN1bW1lXCIsXCLiiJ5cIjpcInVuZW5kbGljaFwiLFwi4pmlXCI6XCJsaWViZVwifSxcImVzXCI6e1wiJVwiOlwicG9yIGNpZW50b1wiLFwiJlwiOlwieVwiLFwiPFwiOlwibWVub3IgcXVlXCIsXCI+XCI6XCJtYXlvciBxdWVcIixcInxcIjpcIm9cIixcIsKiXCI6XCJjZW50YXZvc1wiLFwiwqNcIjpcImxpYnJhc1wiLFwiwqRcIjpcIm1vbmVkYVwiLFwi4oKjXCI6XCJmcmFuY29zXCIsXCLiiJFcIjpcInN1bWFcIixcIuKInlwiOlwiaW5maW5pdG9cIixcIuKZpVwiOlwiYW1vclwifSxcImZyXCI6e1wiJVwiOlwicG91cmNlbnRcIixcIiZcIjpcImV0XCIsXCI8XCI6XCJwbHVzIHBldGl0XCIsXCI+XCI6XCJwbHVzIGdyYW5kXCIsXCJ8XCI6XCJvdVwiLFwiwqJcIjpcImNlbnRpbWVcIixcIsKjXCI6XCJsaXZyZVwiLFwiwqRcIjpcImRldmlzZVwiLFwi4oKjXCI6XCJmcmFuY1wiLFwi4oiRXCI6XCJzb21tZVwiLFwi4oieXCI6XCJpbmZpbmlcIixcIuKZpVwiOlwiYW1vdXJcIn0sXCJwdFwiOntcIiVcIjpcInBvcmNlbnRvXCIsXCImXCI6XCJlXCIsXCI8XCI6XCJtZW5vclwiLFwiPlwiOlwibWFpb3JcIixcInxcIjpcIm91XCIsXCLColwiOlwiY2VudGF2b1wiLFwi4oiRXCI6XCJzb21hXCIsXCLCo1wiOlwibGlicmFcIixcIuKInlwiOlwiaW5maW5pdG9cIixcIuKZpVwiOlwiYW1vclwifSxcInVrXCI6e1wi0JhcIjpcIllcIixcItC4XCI6XCJ5XCIsXCLQmVwiOlwiWVwiLFwi0LlcIjpcInlcIixcItCmXCI6XCJUc1wiLFwi0YZcIjpcInRzXCIsXCLQpVwiOlwiS2hcIixcItGFXCI6XCJraFwiLFwi0KlcIjpcIlNoY2hcIixcItGJXCI6XCJzaGNoXCIsXCLQk1wiOlwiSFwiLFwi0LNcIjpcImhcIn0sXCJ2aVwiOntcIsSQXCI6XCJEXCIsXCLEkVwiOlwiZFwifSxcImRhXCI6e1wiw5hcIjpcIk9FXCIsXCLDuFwiOlwib2VcIixcIsOFXCI6XCJBQVwiLFwiw6VcIjpcImFhXCIsXCIlXCI6XCJwcm9jZW50XCIsXCImXCI6XCJvZ1wiLFwifFwiOlwiZWxsZXJcIixcIiRcIjpcImRvbGxhclwiLFwiPFwiOlwibWluZHJlIGVuZFwiLFwiPlwiOlwic3TDuHJyZSBlbmRcIn0sXCJuYlwiOntcIiZcIjpcIm9nXCIsXCLDhVwiOlwiQUFcIixcIsOGXCI6XCJBRVwiLFwiw5hcIjpcIk9FXCIsXCLDpVwiOlwiYWFcIixcIsOmXCI6XCJhZVwiLFwiw7hcIjpcIm9lXCJ9LFwiaXRcIjp7XCImXCI6XCJlXCJ9LFwibmxcIjp7XCImXCI6XCJlblwifSxcInN2XCI6e1wiJlwiOlwib2NoXCIsXCLDhVwiOlwiQUFcIixcIsOEXCI6XCJBRVwiLFwiw5ZcIjpcIk9FXCIsXCLDpVwiOlwiYWFcIixcIsOkXCI6XCJhZVwiLFwiw7ZcIjpcIm9lXCJ9fScpO1xuXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc2x1Z2lmeTogc3RyaW5nIGFyZ3VtZW50IGV4cGVjdGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9ICctJztcblxuICAgICAgICBjb25zdCB0cmltID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBsb2NhbGUgPSAnZW4nO1xuXG4gICAgICAgIGxldCBzbHVnID0gcy5ub3JtYWxpemUoKS5zcGxpdCgnJylcbiAgICAgICAgICAvLyByZXBsYWNlIGNoYXJhY3RlcnMgYmFzZWQgb24gY2hhck1hcFxuICAgICAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgY2gpID0+IHtcbiAgICAgICAgICAgIGxldCBhcHBlbmRDaGFyID0gbG9jYWxlW2NoXSB8fCBjaGFyTWFwW2NoXSB8fCBjaDtcbiAgICAgICAgICAgIGlmIChhcHBlbmRDaGFyID09PSByZXBsYWNlbWVudCkge1xuICAgICAgICAgICAgICBhcHBlbmRDaGFyID0gJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIGFwcGVuZENoYXJcbiAgICAgICAgICAgICAgLy8gcmVtb3ZlIG5vdCBhbGxvd2VkIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL1teXFx3XFxzJCpfK34uKCknXCIhXFwtOkBdKy9nLCAnJyk7XG4gICAgICAgICAgfSwgJycpO1xuXG4gICAgICAgIHNsdWcgPSBzbHVnLnRyaW0oKTtcblxuICAgICAgICAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIHJlcGxhY2VtZW50IGNoYXJhY3RlciwgdHJlYXRpbmcgbXVsdGlwbGUgY29uc2VjdXRpdmVcbiAgICAgICAgLy8gc3BhY2VzIGFzIGEgc2luZ2xlIHNwYWNlLlxuICAgICAgICBzbHVnID0gc2x1Zy5yZXBsYWNlKC9cXHMrL2csIHJlcGxhY2VtZW50KTtcblxuICAgICAgICBzbHVnID0gc2x1Zy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIHJldHVybiBzbHVnO1xuICAgIH1cblxuICAgIGRlbGV0ZShlbnRpdHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4odGhpcy5hZG1pbkVuZHBvaW50ICsgKGVudGl0eSBhcyBhbnkpLmlkICsgJy8nKS5waXBlKFxuICAgICAgICAgICAgbWFwKCh2YWwpID0+IHRoaXMudHJpZ2dlckNvcmVFdmVudCh2YWwsIENvcmVFdmVudFR5cGUuREVMRVRFKSksXG4gICAgICAgICAgICBtYXAodGhpcy5oYW5kbGVSZXNwb25zZS5iaW5kKHRoaXMpKVxuICAgICAgICApO1xuICAgIH1cblxufVxuIl19
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFFdEcsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwQyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFhLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTVELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBSzNELE1BQU0sT0FBTyxZQUFhLFNBQVEsa0NBQXlDO0lBU3ZFLGNBQWMsQ0FBQyxHQUFVO1FBQ3JCLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQXdCO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNyQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsS0FBSyxNQUFNLE1BQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNuQztRQUNELFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzNCLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxZQUNjLElBQWdCO1FBRTFCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUZGLFNBQUksR0FBSixJQUFJ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LEVBQUU7Z0JBQzlCLFVBQVUsR0FBRyxHQUFHLENBQUM7YUFDbEI7WUFDRCxPQUFPLE1BQU0sR0FBRyxVQUFVO2dCQUN4QixnQ0FBZ0M7aUJBQy9CLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFVCxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRW5CLDJFQUEyRTtRQUMzRSw0QkFBNEI7UUFDNUIsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXpDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFMUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBTSxJQUFJLENBQUMsYUFBYSxHQUFJLE1BQWMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUM1RSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzlELEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN0QyxDQUFDO0lBQ04sQ0FBQzs7eUdBbklRLFlBQVk7NkdBQVosWUFBWSxjQUZULE1BQU07MkZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEV2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RqYW5nb1Jlc3RGcmFtZXdvcmtFbmRwb2ludFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2RqYW5nby1yZXN0LWZyYW1ld29yay1lbmRwb2ludC5zZXJ2aWNlJztcbmltcG9ydCB7TGlzdFJlc3BvbnNlfSBmcm9tICcuLi9kYXRhL2xpc3QtcmVzcG9uc2UnO1xuaW1wb3J0IHtFbnRyeX0gZnJvbSAnLi4vZGF0YS9lbnRyeSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtsb01hcH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtDb3JlRXZlbnR9IGZyb20gJy4uL2RhdGEvY29yZS1ldmVudCc7XG5pbXBvcnQge0NvcmVFdmVudFR5cGV9IGZyb20gJy4uL2RhdGEvY29yZS1ldmVudC10eXBlLmVudW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVudHJ5U2VydmljZSBleHRlbmRzIERqYW5nb1Jlc3RGcmFtZXdvcmtFbmRwb2ludFNlcnZpY2U8RW50cnk+IHtcblxuICAgIGVuZHBvaW50ID0gJy9ibG9nX2FwaS9lbnRyaWVzLyc7XG4gICAgYWRtaW5FbmRwb2ludCA9ICcvYmxvZ19hcGkvYWRtaW4vZW50cmllcy8nO1xuXG4gICAgX2N1cnJlbnRseUVkaXRlZEVudHJ5OiBFbnRyeTtcbiAgICBjdXJyZW50bHlFZGl0ZWRFbnRyeTogU3ViamVjdDxFbnRyeT4gPSBuZXcgU3ViamVjdDxFbnRyeT4oKTtcbiAgICBzdWI7XG5cbiAgICBoYW5kbGVSZXNwb25zZShvYmo6IEVudHJ5KTogRW50cnkge1xuICAgICAgICByZXR1cm4gbmV3IEVudHJ5KG9iaik7XG4gICAgfVxuXG4gICAgaGFuZGxlTGlzdFJlc3BvbnNlKG9iajogTGlzdFJlc3BvbnNlPEVudHJ5Pik6IExpc3RSZXNwb25zZTxFbnRyeT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IG9iajtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXNwb25zZS5yZXN1bHRzKSB7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2gobmV3IEVudHJ5KHJlc3VsdCkpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3BvbnNlLnJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGh0dHApO1xuICAgICAgICB0aGlzLnN1YiA9IHRoaXMuY3VycmVudGx5RWRpdGVkRW50cnkucGlwZShkZWJvdW5jZVRpbWUoMzAwMCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgZS5lZGl0X2RhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3B1Ymxpc2hlZCcsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSkuc2V0KCdkZWZ1bmN0JywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKTtcblxuICAgICAgICAgICAgdGhpcy5odHRwLnBhdGNoKHRoaXMuYWRtaW5FbmRwb2ludCArIGUuaWQgKyAnLycsIGUsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCh0aGlzLmhhbmRsZVJlc3BvbnNlLmJpbmQodGhpcykpXG4gICAgICAgICAgICApLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJDb3JlRXZlbnQoKHJlc3BvbnNlIGFzIEVudHJ5KSwgQ29yZUV2ZW50VHlwZS5VUERBVEUpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTeW5jZWQgJyArIGUuaWQgKyAnLi4uJyk7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGVuY291bnRlcmVkIHN5bmNpbmcgJyArIGUuaWQgKyAnLCB0cnlpbmcgdG8gY3JlYXRlLi4uJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy5hZG1pbkVuZHBvaW50LCBlKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAodGhpcy5oYW5kbGVSZXNwb25zZSlcbiAgICAgICAgICAgICAgICApLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyQ29yZUV2ZW50KChyZXNwb25zZSBhcyBFbnRyeSksIENvcmVFdmVudFR5cGUuQ1JFQVRFKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0NyZWF0ZWQgJyArIGUuaWQgKyAnLi4uJyk7XG4gICAgICAgICAgICAgICAgfSwgKGNyZWF0ZUVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgY3JlYXRpbmcgJyArIGUuaWQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCgpOiBPYnNlcnZhYmxlPExpc3RSZXNwb25zZTxFbnRyeT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5lbmRwb2ludCkucGlwZShcbiAgICAgICAgICAgIG1hcCh0aGlzLmhhbmRsZUxpc3RSZXNwb25zZS5iaW5kKHRoaXMpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNlYXJjaChzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPExpc3RSZXNwb25zZTxFbnRyeT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5lbmRwb2ludCArIFwiP3NlYXJjaD1cIiArIHNlYXJjaFRlcm0pLnBpcGUoXG4gICAgICAgICAgICBtYXAodGhpcy5oYW5kbGVMaXN0UmVzcG9uc2UuYmluZCh0aGlzKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRVbnB1Ymxpc2hlZEVudHJpZXMoKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwdWJsaXNoZWQnLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpLnNldCgnZGVmdW5jdCcsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuYWRtaW5FbmRwb2ludCwge3BhcmFtc30pO1xuICAgIH1cblxuICAgIGdldEJ5U2x1ZyhzbHVnOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5lbmRwb2ludCArIHNsdWcgKyAnL2J5X3NsdWcvJykucGlwZShcbiAgICAgICAgICAgIG1hcCh0aGlzLmhhbmRsZVJlc3BvbnNlLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuICAgIGdldFVucHVibGlzaGVkQnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFbnRyeT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgncHVibGlzaGVkJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKS5zZXQoJ2RlZnVuY3QnLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFbnRyeT4odGhpcy5hZG1pbkVuZHBvaW50ICsgaWQsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHRoaXMuaGFuZGxlUmVzcG9uc2UuYmluZCh0aGlzKSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlVW5wdWJsaXNoZWRFbnRyeShlbnRyeTogRW50cnkpOiBPYnNlcnZhYmxlPEVudHJ5PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwdWJsaXNoZWQnLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpLnNldCgnZGVmdW5jdCcsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8RW50cnk+KHRoaXMuYWRtaW5FbmRwb2ludCArIGVudHJ5LmlkICsgJy8nLCBlbnRyeSwge3BhcmFtc30pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHZhbCkgPT4gdGhpcy50cmlnZ2VyQ29yZUV2ZW50KHZhbCwgQ29yZUV2ZW50VHlwZS5VUERBVEUpKSxcbiAgICAgICAgICAgIG1hcCh0aGlzLmhhbmRsZVJlc3BvbnNlLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2x1Z2lmeShzOiBzdHJpbmcpIHtcblxuICAgICAgICBjb25zdCBjaGFyTWFwID0gSlNPTi5wYXJzZSgne1wiJFwiOlwiZG9sbGFyXCIsXCIlXCI6XCJwZXJjZW50XCIsXCImXCI6XCJhbmRcIixcIjxcIjpcImxlc3NcIixcIj5cIjpcImdyZWF0ZXJcIixcInxcIjpcIm9yXCIsXCLColwiOlwiY2VudFwiLFwiwqNcIjpcInBvdW5kXCIsXCLCpFwiOlwiY3VycmVuY3lcIixcIsKlXCI6XCJ5ZW5cIixcIsKpXCI6XCIoYylcIixcIsKqXCI6XCJhXCIsXCLCrlwiOlwiKHIpXCIsXCLCulwiOlwib1wiLFwiw4BcIjpcIkFcIixcIsOBXCI6XCJBXCIsXCLDglwiOlwiQVwiLFwiw4NcIjpcIkFcIixcIsOEXCI6XCJBXCIsXCLDhVwiOlwiQVwiLFwiw4ZcIjpcIkFFXCIsXCLDh1wiOlwiQ1wiLFwiw4hcIjpcIkVcIixcIsOJXCI6XCJFXCIsXCLDilwiOlwiRVwiLFwiw4tcIjpcIkVcIixcIsOMXCI6XCJJXCIsXCLDjVwiOlwiSVwiLFwiw45cIjpcIklcIixcIsOPXCI6XCJJXCIsXCLDkFwiOlwiRFwiLFwiw5FcIjpcIk5cIixcIsOSXCI6XCJPXCIsXCLDk1wiOlwiT1wiLFwiw5RcIjpcIk9cIixcIsOVXCI6XCJPXCIsXCLDllwiOlwiT1wiLFwiw5hcIjpcIk9cIixcIsOZXCI6XCJVXCIsXCLDmlwiOlwiVVwiLFwiw5tcIjpcIlVcIixcIsOcXCI6XCJVXCIsXCLDnVwiOlwiWVwiLFwiw55cIjpcIlRIXCIsXCLDn1wiOlwic3NcIixcIsOgXCI6XCJhXCIsXCLDoVwiOlwiYVwiLFwiw6JcIjpcImFcIixcIsOjXCI6XCJhXCIsXCLDpFwiOlwiYVwiLFwiw6VcIjpcImFcIixcIsOmXCI6XCJhZVwiLFwiw6dcIjpcImNcIixcIsOoXCI6XCJlXCIsXCLDqVwiOlwiZVwiLFwiw6pcIjpcImVcIixcIsOrXCI6XCJlXCIsXCLDrFwiOlwiaVwiLFwiw61cIjpcImlcIixcIsOuXCI6XCJpXCIsXCLDr1wiOlwiaVwiLFwiw7BcIjpcImRcIixcIsOxXCI6XCJuXCIsXCLDslwiOlwib1wiLFwiw7NcIjpcIm9cIixcIsO0XCI6XCJvXCIsXCLDtVwiOlwib1wiLFwiw7ZcIjpcIm9cIixcIsO4XCI6XCJvXCIsXCLDuVwiOlwidVwiLFwiw7pcIjpcInVcIixcIsO7XCI6XCJ1XCIsXCLDvFwiOlwidVwiLFwiw71cIjpcInlcIixcIsO+XCI6XCJ0aFwiLFwiw79cIjpcInlcIixcIsSAXCI6XCJBXCIsXCLEgVwiOlwiYVwiLFwixIJcIjpcIkFcIixcIsSDXCI6XCJhXCIsXCLEhFwiOlwiQVwiLFwixIVcIjpcImFcIixcIsSGXCI6XCJDXCIsXCLEh1wiOlwiY1wiLFwixIxcIjpcIkNcIixcIsSNXCI6XCJjXCIsXCLEjlwiOlwiRFwiLFwixI9cIjpcImRcIixcIsSQXCI6XCJESlwiLFwixJFcIjpcImRqXCIsXCLEklwiOlwiRVwiLFwixJNcIjpcImVcIixcIsSWXCI6XCJFXCIsXCLEl1wiOlwiZVwiLFwixJhcIjpcImVcIixcIsSZXCI6XCJlXCIsXCLEmlwiOlwiRVwiLFwixJtcIjpcImVcIixcIsSeXCI6XCJHXCIsXCLEn1wiOlwiZ1wiLFwixKJcIjpcIkdcIixcIsSjXCI6XCJnXCIsXCLEqFwiOlwiSVwiLFwixKlcIjpcImlcIixcIsSqXCI6XCJpXCIsXCLEq1wiOlwiaVwiLFwixK5cIjpcIklcIixcIsSvXCI6XCJpXCIsXCLEsFwiOlwiSVwiLFwixLFcIjpcImlcIixcIsS2XCI6XCJrXCIsXCLEt1wiOlwia1wiLFwixLtcIjpcIkxcIixcIsS8XCI6XCJsXCIsXCLEvVwiOlwiTFwiLFwixL5cIjpcImxcIixcIsWBXCI6XCJMXCIsXCLFglwiOlwibFwiLFwixYNcIjpcIk5cIixcIsWEXCI6XCJuXCIsXCLFhVwiOlwiTlwiLFwixYZcIjpcIm5cIixcIsWHXCI6XCJOXCIsXCLFiFwiOlwiblwiLFwixYxcIjpcIk9cIixcIsWNXCI6XCJvXCIsXCLFkFwiOlwiT1wiLFwixZFcIjpcIm9cIixcIsWSXCI6XCJPRVwiLFwixZNcIjpcIm9lXCIsXCLFlFwiOlwiUlwiLFwixZVcIjpcInJcIixcIsWYXCI6XCJSXCIsXCLFmVwiOlwiclwiLFwixZpcIjpcIlNcIixcIsWbXCI6XCJzXCIsXCLFnlwiOlwiU1wiLFwixZ9cIjpcInNcIixcIsWgXCI6XCJTXCIsXCLFoVwiOlwic1wiLFwixaJcIjpcIlRcIixcIsWjXCI6XCJ0XCIsXCLFpFwiOlwiVFwiLFwixaVcIjpcInRcIixcIsWoXCI6XCJVXCIsXCLFqVwiOlwidVwiLFwixapcIjpcInVcIixcIsWrXCI6XCJ1XCIsXCLFrlwiOlwiVVwiLFwixa9cIjpcInVcIixcIsWwXCI6XCJVXCIsXCLFsVwiOlwidVwiLFwixbJcIjpcIlVcIixcIsWzXCI6XCJ1XCIsXCLFtFwiOlwiV1wiLFwixbVcIjpcIndcIixcIsW2XCI6XCJZXCIsXCLFt1wiOlwieVwiLFwixbhcIjpcIllcIixcIsW5XCI6XCJaXCIsXCLFulwiOlwielwiLFwixbtcIjpcIlpcIixcIsW8XCI6XCJ6XCIsXCLFvVwiOlwiWlwiLFwixb5cIjpcInpcIixcIsaPXCI6XCJFXCIsXCLGklwiOlwiZlwiLFwixqBcIjpcIk9cIixcIsahXCI6XCJvXCIsXCLGr1wiOlwiVVwiLFwixrBcIjpcInVcIixcIseIXCI6XCJMSlwiLFwix4lcIjpcImxqXCIsXCLHi1wiOlwiTkpcIixcIseMXCI6XCJualwiLFwiyJhcIjpcIlNcIixcIsiZXCI6XCJzXCIsXCLImlwiOlwiVFwiLFwiyJtcIjpcInRcIixcIsmZXCI6XCJlXCIsXCLLmlwiOlwib1wiLFwizoZcIjpcIkFcIixcIs6IXCI6XCJFXCIsXCLOiVwiOlwiSFwiLFwizopcIjpcIklcIixcIs6MXCI6XCJPXCIsXCLOjlwiOlwiWVwiLFwizo9cIjpcIldcIixcIs6QXCI6XCJpXCIsXCLOkVwiOlwiQVwiLFwizpJcIjpcIkJcIixcIs6TXCI6XCJHXCIsXCLOlFwiOlwiRFwiLFwizpVcIjpcIkVcIixcIs6WXCI6XCJaXCIsXCLOl1wiOlwiSFwiLFwizphcIjpcIjhcIixcIs6ZXCI6XCJJXCIsXCLOmlwiOlwiS1wiLFwizptcIjpcIkxcIixcIs6cXCI6XCJNXCIsXCLOnVwiOlwiTlwiLFwizp5cIjpcIjNcIixcIs6fXCI6XCJPXCIsXCLOoFwiOlwiUFwiLFwizqFcIjpcIlJcIixcIs6jXCI6XCJTXCIsXCLOpFwiOlwiVFwiLFwizqVcIjpcIllcIixcIs6mXCI6XCJGXCIsXCLOp1wiOlwiWFwiLFwizqhcIjpcIlBTXCIsXCLOqVwiOlwiV1wiLFwizqpcIjpcIklcIixcIs6rXCI6XCJZXCIsXCLOrFwiOlwiYVwiLFwizq1cIjpcImVcIixcIs6uXCI6XCJoXCIsXCLOr1wiOlwiaVwiLFwizrBcIjpcInlcIixcIs6xXCI6XCJhXCIsXCLOslwiOlwiYlwiLFwizrNcIjpcImdcIixcIs60XCI6XCJkXCIsXCLOtVwiOlwiZVwiLFwizrZcIjpcInpcIixcIs63XCI6XCJoXCIsXCLOuFwiOlwiOFwiLFwizrlcIjpcImlcIixcIs66XCI6XCJrXCIsXCLOu1wiOlwibFwiLFwizrxcIjpcIm1cIixcIs69XCI6XCJuXCIsXCLOvlwiOlwiM1wiLFwizr9cIjpcIm9cIixcIs+AXCI6XCJwXCIsXCLPgVwiOlwiclwiLFwiz4JcIjpcInNcIixcIs+DXCI6XCJzXCIsXCLPhFwiOlwidFwiLFwiz4VcIjpcInlcIixcIs+GXCI6XCJmXCIsXCLPh1wiOlwieFwiLFwiz4hcIjpcInBzXCIsXCLPiVwiOlwid1wiLFwiz4pcIjpcImlcIixcIs+LXCI6XCJ5XCIsXCLPjFwiOlwib1wiLFwiz41cIjpcInlcIixcIs+OXCI6XCJ3XCIsXCLQgVwiOlwiWW9cIixcItCCXCI6XCJESlwiLFwi0IRcIjpcIlllXCIsXCLQhlwiOlwiSVwiLFwi0IdcIjpcIllpXCIsXCLQiFwiOlwiSlwiLFwi0IlcIjpcIkxKXCIsXCLQilwiOlwiTkpcIixcItCLXCI6XCJDXCIsXCLQj1wiOlwiRFpcIixcItCQXCI6XCJBXCIsXCLQkVwiOlwiQlwiLFwi0JJcIjpcIlZcIixcItCTXCI6XCJHXCIsXCLQlFwiOlwiRFwiLFwi0JVcIjpcIkVcIixcItCWXCI6XCJaaFwiLFwi0JdcIjpcIlpcIixcItCYXCI6XCJJXCIsXCLQmVwiOlwiSlwiLFwi0JpcIjpcIktcIixcItCbXCI6XCJMXCIsXCLQnFwiOlwiTVwiLFwi0J1cIjpcIk5cIixcItCeXCI6XCJPXCIsXCLQn1wiOlwiUFwiLFwi0KBcIjpcIlJcIixcItChXCI6XCJTXCIsXCLQolwiOlwiVFwiLFwi0KNcIjpcIlVcIixcItCkXCI6XCJGXCIsXCLQpVwiOlwiSFwiLFwi0KZcIjpcIkNcIixcItCnXCI6XCJDaFwiLFwi0KhcIjpcIlNoXCIsXCLQqVwiOlwiU2hcIixcItCqXCI6XCJVXCIsXCLQq1wiOlwiWVwiLFwi0KxcIjpcIlwiLFwi0K1cIjpcIkVcIixcItCuXCI6XCJZdVwiLFwi0K9cIjpcIllhXCIsXCLQsFwiOlwiYVwiLFwi0LFcIjpcImJcIixcItCyXCI6XCJ2XCIsXCLQs1wiOlwiZ1wiLFwi0LRcIjpcImRcIixcItC1XCI6XCJlXCIsXCLQtlwiOlwiemhcIixcItC3XCI6XCJ6XCIsXCLQuFwiOlwiaVwiLFwi0LlcIjpcImpcIixcItC6XCI6XCJrXCIsXCLQu1wiOlwibFwiLFwi0LxcIjpcIm1cIixcItC9XCI6XCJuXCIsXCLQvlwiOlwib1wiLFwi0L9cIjpcInBcIixcItGAXCI6XCJyXCIsXCLRgVwiOlwic1wiLFwi0YJcIjpcInRcIixcItGDXCI6XCJ1XCIsXCLRhFwiOlwiZlwiLFwi0YVcIjpcImhcIixcItGGXCI6XCJjXCIsXCLRh1wiOlwiY2hcIixcItGIXCI6XCJzaFwiLFwi0YlcIjpcInNoXCIsXCLRilwiOlwidVwiLFwi0YtcIjpcInlcIixcItGMXCI6XCJcIixcItGNXCI6XCJlXCIsXCLRjlwiOlwieXVcIixcItGPXCI6XCJ5YVwiLFwi0ZFcIjpcInlvXCIsXCLRklwiOlwiZGpcIixcItGUXCI6XCJ5ZVwiLFwi0ZZcIjpcImlcIixcItGXXCI6XCJ5aVwiLFwi0ZhcIjpcImpcIixcItGZXCI6XCJsalwiLFwi0ZpcIjpcIm5qXCIsXCLRm1wiOlwiY1wiLFwi0Z1cIjpcInVcIixcItGfXCI6XCJkelwiLFwi0pBcIjpcIkdcIixcItKRXCI6XCJnXCIsXCLSklwiOlwiR0hcIixcItKTXCI6XCJnaFwiLFwi0ppcIjpcIktIXCIsXCLSm1wiOlwia2hcIixcItKiXCI6XCJOR1wiLFwi0qNcIjpcIm5nXCIsXCLSrlwiOlwiVUVcIixcItKvXCI6XCJ1ZVwiLFwi0rBcIjpcIlVcIixcItKxXCI6XCJ1XCIsXCLSulwiOlwiSFwiLFwi0rtcIjpcImhcIixcItOYXCI6XCJBRVwiLFwi05lcIjpcImFlXCIsXCLTqFwiOlwiT0VcIixcItOpXCI6XCJvZVwiLFwi1LFcIjpcIkFcIixcItSyXCI6XCJCXCIsXCLUs1wiOlwiR1wiLFwi1LRcIjpcIkRcIixcItS1XCI6XCJFXCIsXCLUtlwiOlwiWlwiLFwi1LdcIjpcIkVcXCdcIixcItS4XCI6XCJZXFwnXCIsXCLUuVwiOlwiVFxcJ1wiLFwi1LpcIjpcIkpIXCIsXCLUu1wiOlwiSVwiLFwi1LxcIjpcIkxcIixcItS9XCI6XCJYXCIsXCLUvlwiOlwiQ1xcJ1wiLFwi1L9cIjpcIktcIixcItWAXCI6XCJIXCIsXCLVgVwiOlwiRFxcJ1wiLFwi1YJcIjpcIkdIXCIsXCLVg1wiOlwiVFdcIixcItWEXCI6XCJNXCIsXCLVhVwiOlwiWVwiLFwi1YZcIjpcIk5cIixcItWHXCI6XCJTSFwiLFwi1YlcIjpcIkNIXCIsXCLVilwiOlwiUFwiLFwi1YtcIjpcIkpcIixcItWMXCI6XCJSXFwnXCIsXCLVjVwiOlwiU1wiLFwi1Y5cIjpcIlZcIixcItWPXCI6XCJUXCIsXCLVkFwiOlwiUlwiLFwi1ZFcIjpcIkNcIixcItWTXCI6XCJQXFwnXCIsXCLVlFwiOlwiUVxcJ1wiLFwi1ZVcIjpcIk9cXCdcXCdcIixcItWWXCI6XCJGXCIsXCLWh1wiOlwiRVZcIixcItihXCI6XCJhXCIsXCLYolwiOlwiYWFcIixcItijXCI6XCJhXCIsXCLYpFwiOlwidVwiLFwi2KVcIjpcImlcIixcItimXCI6XCJlXCIsXCLYp1wiOlwiYVwiLFwi2KhcIjpcImJcIixcItipXCI6XCJoXCIsXCLYqlwiOlwidFwiLFwi2KtcIjpcInRoXCIsXCLYrFwiOlwialwiLFwi2K1cIjpcImhcIixcItiuXCI6XCJraFwiLFwi2K9cIjpcImRcIixcItiwXCI6XCJ0aFwiLFwi2LFcIjpcInJcIixcItiyXCI6XCJ6XCIsXCLYs1wiOlwic1wiLFwi2LRcIjpcInNoXCIsXCLYtVwiOlwic1wiLFwi2LZcIjpcImRoXCIsXCLYt1wiOlwidFwiLFwi2LhcIjpcInpcIixcIti5XCI6XCJhXCIsXCLYulwiOlwiZ2hcIixcItmBXCI6XCJmXCIsXCLZglwiOlwicVwiLFwi2YNcIjpcImtcIixcItmEXCI6XCJsXCIsXCLZhVwiOlwibVwiLFwi2YZcIjpcIm5cIixcItmHXCI6XCJoXCIsXCLZiFwiOlwid1wiLFwi2YlcIjpcImFcIixcItmKXCI6XCJ5XCIsXCLZi1wiOlwiYW5cIixcItmMXCI6XCJvblwiLFwi2Y1cIjpcImVuXCIsXCLZjlwiOlwiYVwiLFwi2Y9cIjpcInVcIixcItmQXCI6XCJlXCIsXCLZklwiOlwiXCIsXCLZoFwiOlwiMFwiLFwi2aFcIjpcIjFcIixcItmiXCI6XCIyXCIsXCLZo1wiOlwiM1wiLFwi2aRcIjpcIjRcIixcItmlXCI6XCI1XCIsXCLZplwiOlwiNlwiLFwi2adcIjpcIjdcIixcItmoXCI6XCI4XCIsXCLZqVwiOlwiOVwiLFwi2b5cIjpcInBcIixcItqGXCI6XCJjaFwiLFwi2phcIjpcInpoXCIsXCLaqVwiOlwia1wiLFwi2q9cIjpcImdcIixcItuMXCI6XCJ5XCIsXCLbsFwiOlwiMFwiLFwi27FcIjpcIjFcIixcItuyXCI6XCIyXCIsXCLbs1wiOlwiM1wiLFwi27RcIjpcIjRcIixcItu1XCI6XCI1XCIsXCLbtlwiOlwiNlwiLFwi27dcIjpcIjdcIixcItu4XCI6XCI4XCIsXCLbuVwiOlwiOVwiLFwi4Li/XCI6XCJiYWh0XCIsXCLhg5BcIjpcImFcIixcIuGDkVwiOlwiYlwiLFwi4YOSXCI6XCJnXCIsXCLhg5NcIjpcImRcIixcIuGDlFwiOlwiZVwiLFwi4YOVXCI6XCJ2XCIsXCLhg5ZcIjpcInpcIixcIuGDl1wiOlwidFwiLFwi4YOYXCI6XCJpXCIsXCLhg5lcIjpcImtcIixcIuGDmlwiOlwibFwiLFwi4YObXCI6XCJtXCIsXCLhg5xcIjpcIm5cIixcIuGDnVwiOlwib1wiLFwi4YOeXCI6XCJwXCIsXCLhg59cIjpcInpoXCIsXCLhg6BcIjpcInJcIixcIuGDoVwiOlwic1wiLFwi4YOiXCI6XCJ0XCIsXCLhg6NcIjpcInVcIixcIuGDpFwiOlwiZlwiLFwi4YOlXCI6XCJrXCIsXCLhg6ZcIjpcImdoXCIsXCLhg6dcIjpcInFcIixcIuGDqFwiOlwic2hcIixcIuGDqVwiOlwiY2hcIixcIuGDqlwiOlwidHNcIixcIuGDq1wiOlwiZHpcIixcIuGDrFwiOlwidHNcIixcIuGDrVwiOlwiY2hcIixcIuGDrlwiOlwia2hcIixcIuGDr1wiOlwialwiLFwi4YOwXCI6XCJoXCIsXCLhuaJcIjpcIlNcIixcIuG5o1wiOlwic1wiLFwi4bqAXCI6XCJXXCIsXCLhuoFcIjpcIndcIixcIuG6glwiOlwiV1wiLFwi4bqDXCI6XCJ3XCIsXCLhuoRcIjpcIldcIixcIuG6hVwiOlwid1wiLFwi4bqeXCI6XCJTU1wiLFwi4bqgXCI6XCJBXCIsXCLhuqFcIjpcImFcIixcIuG6olwiOlwiQVwiLFwi4bqjXCI6XCJhXCIsXCLhuqRcIjpcIkFcIixcIuG6pVwiOlwiYVwiLFwi4bqmXCI6XCJBXCIsXCLhuqdcIjpcImFcIixcIuG6qFwiOlwiQVwiLFwi4bqpXCI6XCJhXCIsXCLhuqpcIjpcIkFcIixcIuG6q1wiOlwiYVwiLFwi4bqsXCI6XCJBXCIsXCLhuq1cIjpcImFcIixcIuG6rlwiOlwiQVwiLFwi4bqvXCI6XCJhXCIsXCLhurBcIjpcIkFcIixcIuG6sVwiOlwiYVwiLFwi4bqyXCI6XCJBXCIsXCLhurNcIjpcImFcIixcIuG6tFwiOlwiQVwiLFwi4bq1XCI6XCJhXCIsXCLhurZcIjpcIkFcIixcIuG6t1wiOlwiYVwiLFwi4bq4XCI6XCJFXCIsXCLhurlcIjpcImVcIixcIuG6ulwiOlwiRVwiLFwi4bq7XCI6XCJlXCIsXCLhurxcIjpcIkVcIixcIuG6vVwiOlwiZVwiLFwi4bq+XCI6XCJFXCIsXCLhur9cIjpcImVcIixcIuG7gFwiOlwiRVwiLFwi4buBXCI6XCJlXCIsXCLhu4JcIjpcIkVcIixcIuG7g1wiOlwiZVwiLFwi4buEXCI6XCJFXCIsXCLhu4VcIjpcImVcIixcIuG7hlwiOlwiRVwiLFwi4buHXCI6XCJlXCIsXCLhu4hcIjpcIklcIixcIuG7iVwiOlwiaVwiLFwi4buKXCI6XCJJXCIsXCLhu4tcIjpcImlcIixcIuG7jFwiOlwiT1wiLFwi4buNXCI6XCJvXCIsXCLhu45cIjpcIk9cIixcIuG7j1wiOlwib1wiLFwi4buQXCI6XCJPXCIsXCLhu5FcIjpcIm9cIixcIuG7klwiOlwiT1wiLFwi4buTXCI6XCJvXCIsXCLhu5RcIjpcIk9cIixcIuG7lVwiOlwib1wiLFwi4buWXCI6XCJPXCIsXCLhu5dcIjpcIm9cIixcIuG7mFwiOlwiT1wiLFwi4buZXCI6XCJvXCIsXCLhu5pcIjpcIk9cIixcIuG7m1wiOlwib1wiLFwi4bucXCI6XCJPXCIsXCLhu51cIjpcIm9cIixcIuG7nlwiOlwiT1wiLFwi4bufXCI6XCJvXCIsXCLhu6BcIjpcIk9cIixcIuG7oVwiOlwib1wiLFwi4buiXCI6XCJPXCIsXCLhu6NcIjpcIm9cIixcIuG7pFwiOlwiVVwiLFwi4bulXCI6XCJ1XCIsXCLhu6ZcIjpcIlVcIixcIuG7p1wiOlwidVwiLFwi4buoXCI6XCJVXCIsXCLhu6lcIjpcInVcIixcIuG7qlwiOlwiVVwiLFwi4burXCI6XCJ1XCIsXCLhu6xcIjpcIlVcIixcIuG7rVwiOlwidVwiLFwi4buuXCI6XCJVXCIsXCLhu69cIjpcInVcIixcIuG7sFwiOlwiVVwiLFwi4buxXCI6XCJ1XCIsXCLhu7JcIjpcIllcIixcIuG7s1wiOlwieVwiLFwi4bu0XCI6XCJZXCIsXCLhu7VcIjpcInlcIixcIuG7tlwiOlwiWVwiLFwi4bu3XCI6XCJ5XCIsXCLhu7hcIjpcIllcIixcIuG7uVwiOlwieVwiLFwi4oCTXCI6XCItXCIsXCLigJhcIjpcIlxcJ1wiLFwi4oCZXCI6XCJcXCdcIixcIuKAnFwiOlwiXFxcXFxcXCJcIixcIuKAnVwiOlwiXFxcXFxcXCJcIixcIuKAnlwiOlwiXFxcXFxcXCJcIixcIuKAoFwiOlwiK1wiLFwi4oCiXCI6XCIqXCIsXCLigKZcIjpcIi4uLlwiLFwi4oKgXCI6XCJlY3VcIixcIuKColwiOlwiY3J1emVpcm9cIixcIuKCo1wiOlwiZnJlbmNoIGZyYW5jXCIsXCLigqRcIjpcImxpcmFcIixcIuKCpVwiOlwibWlsbFwiLFwi4oKmXCI6XCJuYWlyYVwiLFwi4oKnXCI6XCJwZXNldGFcIixcIuKCqFwiOlwicnVwZWVcIixcIuKCqVwiOlwid29uXCIsXCLigqpcIjpcIm5ldyBzaGVxdWVsXCIsXCLigqtcIjpcImRvbmdcIixcIuKCrFwiOlwiZXVyb1wiLFwi4oKtXCI6XCJraXBcIixcIuKCrlwiOlwidHVncmlrXCIsXCLigq9cIjpcImRyYWNobWFcIixcIuKCsFwiOlwicGVubnlcIixcIuKCsVwiOlwicGVzb1wiLFwi4oKyXCI6XCJndWFyYW5pXCIsXCLigrNcIjpcImF1c3RyYWxcIixcIuKCtFwiOlwiaHJ5dm5pYVwiLFwi4oK1XCI6XCJjZWRpXCIsXCLigrhcIjpcImthemFraHN0YW5pIHRlbmdlXCIsXCLigrlcIjpcImluZGlhbiBydXBlZVwiLFwi4oK6XCI6XCJ0dXJraXNoIGxpcmFcIixcIuKCvVwiOlwicnVzc2lhbiBydWJsZVwiLFwi4oK/XCI6XCJiaXRjb2luXCIsXCLihKBcIjpcInNtXCIsXCLihKJcIjpcInRtXCIsXCLiiIJcIjpcImRcIixcIuKIhlwiOlwiZGVsdGFcIixcIuKIkVwiOlwic3VtXCIsXCLiiJ5cIjpcImluZmluaXR5XCIsXCLimaVcIjpcImxvdmVcIixcIuWFg1wiOlwieXVhblwiLFwi5YaGXCI6XCJ5ZW5cIixcIu+3vFwiOlwicmlhbFwiLFwi77u1XCI6XCJsYWFcIixcIu+7t1wiOlwibGFhXCIsXCLvu7lcIjpcImxhaVwiLFwi77u7XCI6XCJsYVwifScpO1xuICAgICAgICBjb25zdCBsb2NhbGVzID0gSlNPTi5wYXJzZSgne1wiYmdcIjp7XCLQmVwiOlwiWVwiLFwi0KZcIjpcIlRzXCIsXCLQqVwiOlwiU2h0XCIsXCLQqlwiOlwiQVwiLFwi0KxcIjpcIllcIixcItC5XCI6XCJ5XCIsXCLRhlwiOlwidHNcIixcItGJXCI6XCJzaHRcIixcItGKXCI6XCJhXCIsXCLRjFwiOlwieVwifSxcImRlXCI6e1wiw4RcIjpcIkFFXCIsXCLDpFwiOlwiYWVcIixcIsOWXCI6XCJPRVwiLFwiw7ZcIjpcIm9lXCIsXCLDnFwiOlwiVUVcIixcIsO8XCI6XCJ1ZVwiLFwiw59cIjpcInNzXCIsXCIlXCI6XCJwcm96ZW50XCIsXCImXCI6XCJ1bmRcIixcInxcIjpcIm9kZXJcIixcIuKIkVwiOlwic3VtbWVcIixcIuKInlwiOlwidW5lbmRsaWNoXCIsXCLimaVcIjpcImxpZWJlXCJ9LFwiZXNcIjp7XCIlXCI6XCJwb3IgY2llbnRvXCIsXCImXCI6XCJ5XCIsXCI8XCI6XCJtZW5vciBxdWVcIixcIj5cIjpcIm1heW9yIHF1ZVwiLFwifFwiOlwib1wiLFwiwqJcIjpcImNlbnRhdm9zXCIsXCLCo1wiOlwibGlicmFzXCIsXCLCpFwiOlwibW9uZWRhXCIsXCLigqNcIjpcImZyYW5jb3NcIixcIuKIkVwiOlwic3VtYVwiLFwi4oieXCI6XCJpbmZpbml0b1wiLFwi4pmlXCI6XCJhbW9yXCJ9LFwiZnJcIjp7XCIlXCI6XCJwb3VyY2VudFwiLFwiJlwiOlwiZXRcIixcIjxcIjpcInBsdXMgcGV0aXRcIixcIj5cIjpcInBsdXMgZ3JhbmRcIixcInxcIjpcIm91XCIsXCLColwiOlwiY2VudGltZVwiLFwiwqNcIjpcImxpdnJlXCIsXCLCpFwiOlwiZGV2aXNlXCIsXCLigqNcIjpcImZyYW5jXCIsXCLiiJFcIjpcInNvbW1lXCIsXCLiiJ5cIjpcImluZmluaVwiLFwi4pmlXCI6XCJhbW91clwifSxcInB0XCI6e1wiJVwiOlwicG9yY2VudG9cIixcIiZcIjpcImVcIixcIjxcIjpcIm1lbm9yXCIsXCI+XCI6XCJtYWlvclwiLFwifFwiOlwib3VcIixcIsKiXCI6XCJjZW50YXZvXCIsXCLiiJFcIjpcInNvbWFcIixcIsKjXCI6XCJsaWJyYVwiLFwi4oieXCI6XCJpbmZpbml0b1wiLFwi4pmlXCI6XCJhbW9yXCJ9LFwidWtcIjp7XCLQmFwiOlwiWVwiLFwi0LhcIjpcInlcIixcItCZXCI6XCJZXCIsXCLQuVwiOlwieVwiLFwi0KZcIjpcIlRzXCIsXCLRhlwiOlwidHNcIixcItClXCI6XCJLaFwiLFwi0YVcIjpcImtoXCIsXCLQqVwiOlwiU2hjaFwiLFwi0YlcIjpcInNoY2hcIixcItCTXCI6XCJIXCIsXCLQs1wiOlwiaFwifSxcInZpXCI6e1wixJBcIjpcIkRcIixcIsSRXCI6XCJkXCJ9LFwiZGFcIjp7XCLDmFwiOlwiT0VcIixcIsO4XCI6XCJvZVwiLFwiw4VcIjpcIkFBXCIsXCLDpVwiOlwiYWFcIixcIiVcIjpcInByb2NlbnRcIixcIiZcIjpcIm9nXCIsXCJ8XCI6XCJlbGxlclwiLFwiJFwiOlwiZG9sbGFyXCIsXCI8XCI6XCJtaW5kcmUgZW5kXCIsXCI+XCI6XCJzdMO4cnJlIGVuZFwifSxcIm5iXCI6e1wiJlwiOlwib2dcIixcIsOFXCI6XCJBQVwiLFwiw4ZcIjpcIkFFXCIsXCLDmFwiOlwiT0VcIixcIsOlXCI6XCJhYVwiLFwiw6ZcIjpcImFlXCIsXCLDuFwiOlwib2VcIn0sXCJpdFwiOntcIiZcIjpcImVcIn0sXCJubFwiOntcIiZcIjpcImVuXCJ9LFwic3ZcIjp7XCImXCI6XCJvY2hcIixcIsOFXCI6XCJBQVwiLFwiw4RcIjpcIkFFXCIsXCLDllwiOlwiT0VcIixcIsOlXCI6XCJhYVwiLFwiw6RcIjpcImFlXCIsXCLDtlwiOlwib2VcIn19Jyk7XG5cblxuICAgICAgICBpZiAodHlwZW9mIHMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzbHVnaWZ5OiBzdHJpbmcgYXJndW1lbnQgZXhwZWN0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gJy0nO1xuXG4gICAgICAgIGNvbnN0IHRyaW0gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGxvY2FsZSA9ICdlbic7XG5cbiAgICAgICAgbGV0IHNsdWcgPSBzLm5vcm1hbGl6ZSgpLnNwbGl0KCcnKVxuICAgICAgICAgIC8vIHJlcGxhY2UgY2hhcmFjdGVycyBiYXNlZCBvbiBjaGFyTWFwXG4gICAgICAgICAgLnJlZHVjZSgocmVzdWx0LCBjaCkgPT4ge1xuICAgICAgICAgICAgbGV0IGFwcGVuZENoYXIgPSBsb2NhbGVbY2hdIHx8IGNoYXJNYXBbY2hdIHx8IGNoO1xuICAgICAgICAgICAgaWYgKGFwcGVuZENoYXIgPT09IHJlcGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgIGFwcGVuZENoYXIgPSAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgYXBwZW5kQ2hhclxuICAgICAgICAgICAgICAvLyByZW1vdmUgbm90IGFsbG93ZWQgY2hhcmFjdGVyc1xuICAgICAgICAgICAgICAucmVwbGFjZSgvW15cXHdcXHMkKl8rfi4oKSdcIiFcXC06QF0rL2csICcnKTtcbiAgICAgICAgICB9LCAnJyk7XG5cbiAgICAgICAgc2x1ZyA9IHNsdWcudHJpbSgpO1xuXG4gICAgICAgIC8vIFJlcGxhY2Ugc3BhY2VzIHdpdGggcmVwbGFjZW1lbnQgY2hhcmFjdGVyLCB0cmVhdGluZyBtdWx0aXBsZSBjb25zZWN1dGl2ZVxuICAgICAgICAvLyBzcGFjZXMgYXMgYSBzaW5nbGUgc3BhY2UuXG4gICAgICAgIHNsdWcgPSBzbHVnLnJlcGxhY2UoL1xccysvZywgcmVwbGFjZW1lbnQpO1xuXG4gICAgICAgIHNsdWcgPSBzbHVnLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIHNsdWc7XG4gICAgfVxuXG4gICAgZGVsZXRlKGVudGl0eTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55Pih0aGlzLmFkbWluRW5kcG9pbnQgKyAoZW50aXR5IGFzIGFueSkuaWQgKyAnLycpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHZhbCkgPT4gdGhpcy50cmlnZ2VyQ29yZUV2ZW50KHZhbCwgQ29yZUV2ZW50VHlwZS5ERUxFVEUpKSxcbiAgICAgICAgICAgIG1hcCh0aGlzLmhhbmRsZVJlc3BvbnNlLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -34,7 +34,7 @@ import { FileUploader, FileUploadModule } from 'ng2-file-upload';
|
|
|
34
34
|
import * as i1$3 from '@fortawesome/angular-fontawesome';
|
|
35
35
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
36
36
|
import * as i6$1 from '@angular/forms';
|
|
37
|
-
import { UntypedFormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
37
|
+
import { UntypedFormControl, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
38
38
|
import * as i8 from '@angular/material/card';
|
|
39
39
|
import { MatCardModule } from '@angular/material/card';
|
|
40
40
|
import * as i9 from '@angular/material/input';
|
|
@@ -59,7 +59,8 @@ import * as i1$4 from '@angular/router';
|
|
|
59
59
|
import { NavigationEnd, RouterModule } from '@angular/router';
|
|
60
60
|
import * as i3 from '@angular/cdk/drag-drop';
|
|
61
61
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
62
|
-
import
|
|
62
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
63
|
+
import * as i8$1 from '@angular/material/list';
|
|
63
64
|
import { MatListModule } from '@angular/material/list';
|
|
64
65
|
import * as i3$1 from '@angular/material/sidenav';
|
|
65
66
|
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
@@ -314,6 +315,9 @@ class EntryService extends DjangoRestFrameworkEndpointService {
|
|
|
314
315
|
get() {
|
|
315
316
|
return this.http.get(this.endpoint).pipe(map(this.handleListResponse.bind(this)));
|
|
316
317
|
}
|
|
318
|
+
search(searchTerm) {
|
|
319
|
+
return this.http.get(this.endpoint + "?search=" + searchTerm).pipe(map(this.handleListResponse.bind(this)));
|
|
320
|
+
}
|
|
317
321
|
getUnpublishedEntries() {
|
|
318
322
|
const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));
|
|
319
323
|
return this.http.get(this.adminEndpoint, { params });
|
|
@@ -1378,14 +1382,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
1378
1382
|
}], ctorParameters: function () { return [{ type: EntryService }]; } });
|
|
1379
1383
|
|
|
1380
1384
|
class SideNavigationComponent {
|
|
1381
|
-
constructor(entryService, router, identityService) {
|
|
1385
|
+
constructor(entryService, router, identityService, renderer) {
|
|
1382
1386
|
this.entryService = entryService;
|
|
1383
1387
|
this.router = router;
|
|
1384
1388
|
this.identityService = identityService;
|
|
1389
|
+
this.renderer = renderer;
|
|
1390
|
+
this.state = 'out';
|
|
1385
1391
|
this.entries = [];
|
|
1386
1392
|
this.entriesByMonthAndYear = [];
|
|
1393
|
+
this.searchTerm = "";
|
|
1394
|
+
this.doSearch = new EventEmitter();
|
|
1395
|
+
this.searchControl = new FormControl('');
|
|
1387
1396
|
}
|
|
1388
1397
|
ngOnInit() {
|
|
1398
|
+
this.doSearch.pipe(debounceTime(500)).subscribe((result) => {
|
|
1399
|
+
this.searchEntries(result);
|
|
1400
|
+
});
|
|
1389
1401
|
this.identityService.getMe().subscribe((identity) => {
|
|
1390
1402
|
this.identity = identity;
|
|
1391
1403
|
}, (err) => {
|
|
@@ -1407,30 +1419,41 @@ class SideNavigationComponent {
|
|
|
1407
1419
|
});
|
|
1408
1420
|
}
|
|
1409
1421
|
organizeEntries() {
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
const
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
const
|
|
1420
|
-
const
|
|
1421
|
-
|
|
1422
|
-
|
|
1422
|
+
this.state = 'out';
|
|
1423
|
+
let organizeEntriesFn = () => {
|
|
1424
|
+
this.entriesByMonthAndYear = [];
|
|
1425
|
+
let newEntries = JSON.parse(JSON.stringify(this.entriesByMonthAndYear));
|
|
1426
|
+
for (const entryWrapper of this.entries) {
|
|
1427
|
+
const entry = entryWrapper.entry;
|
|
1428
|
+
const create_date = new Date(entry.create_date);
|
|
1429
|
+
const month = create_date.getMonth();
|
|
1430
|
+
const year = create_date.getFullYear();
|
|
1431
|
+
const key = month + '/' + year;
|
|
1432
|
+
const sort_index = (year * 100) + month;
|
|
1433
|
+
const containers = filter(newEntries, (entryContainer) => entryContainer.month_year === key);
|
|
1434
|
+
if (containers.length > 0) {
|
|
1435
|
+
const container = containers[0];
|
|
1436
|
+
const entriesWithId = filter(container.entries, (e) => e.id === entryWrapper.entry.id);
|
|
1437
|
+
if (entriesWithId.length === 0) {
|
|
1438
|
+
container.entries.push(entry);
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
else {
|
|
1442
|
+
const newContainer = { month_year: key, month_year_number: sort_index, entries: [entry] };
|
|
1443
|
+
newEntries.push(newContainer);
|
|
1423
1444
|
}
|
|
1424
1445
|
}
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1446
|
+
newEntries.sort((entry_a, entry_b) => {
|
|
1447
|
+
return entry_a.month_year_number - entry_b.month_year_number;
|
|
1448
|
+
});
|
|
1449
|
+
newEntries.reverse();
|
|
1450
|
+
let setEntriesFn = () => {
|
|
1451
|
+
this.entriesByMonthAndYear = newEntries;
|
|
1452
|
+
this.state = 'in';
|
|
1453
|
+
};
|
|
1454
|
+
setTimeout(setEntriesFn.bind(this), 400);
|
|
1455
|
+
};
|
|
1456
|
+
setTimeout(organizeEntriesFn.bind(this), 400);
|
|
1434
1457
|
}
|
|
1435
1458
|
getEntries() {
|
|
1436
1459
|
this.entryService.get().subscribe((response) => {
|
|
@@ -1445,6 +1468,24 @@ class SideNavigationComponent {
|
|
|
1445
1468
|
}
|
|
1446
1469
|
});
|
|
1447
1470
|
}
|
|
1471
|
+
searchEntries(searchTerm) {
|
|
1472
|
+
if (searchTerm !== "") {
|
|
1473
|
+
this.entryService.search(searchTerm).subscribe((response) => {
|
|
1474
|
+
this.entries = map$1(response.results, (result) => {
|
|
1475
|
+
return { id: result.id, entry: new Entry(result) };
|
|
1476
|
+
});
|
|
1477
|
+
if (response.next) {
|
|
1478
|
+
this.getEntriesWithUrl(response.next);
|
|
1479
|
+
}
|
|
1480
|
+
else {
|
|
1481
|
+
this.organizeEntries();
|
|
1482
|
+
}
|
|
1483
|
+
});
|
|
1484
|
+
}
|
|
1485
|
+
else {
|
|
1486
|
+
this.getEntries();
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1448
1489
|
render() {
|
|
1449
1490
|
}
|
|
1450
1491
|
routeTo(entry) {
|
|
@@ -1510,13 +1551,41 @@ class SideNavigationComponent {
|
|
|
1510
1551
|
this.sourceSub = null;
|
|
1511
1552
|
}
|
|
1512
1553
|
}
|
|
1554
|
+
onSearchChange(searchValue) {
|
|
1555
|
+
this.doSearch.emit(searchValue);
|
|
1556
|
+
}
|
|
1513
1557
|
}
|
|
1514
|
-
SideNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, deps: [{ token: EntryService }, { token: i1$4.Router }, { token: IdentityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1515
|
-
SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <mat-nav-list
|
|
1558
|
+
SideNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, deps: [{ token: EntryService }, { token: i1$4.Router }, { token: IdentityService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
1559
|
+
SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", viewQueries: [{ propertyName: "divNav", first: true, predicate: ["navcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i8$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i8$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }], animations: [
|
|
1560
|
+
trigger('sideNavAnimation', [
|
|
1561
|
+
state('in', style({ transform: 'translateX(0%)' })),
|
|
1562
|
+
state('out', style({ transform: 'translateX(110%)' })),
|
|
1563
|
+
transition('in => out', [
|
|
1564
|
+
animate('100ms ease-out', style({ transform: 'translateX(110%)' }))
|
|
1565
|
+
]),
|
|
1566
|
+
transition('out => in', [
|
|
1567
|
+
animate('100ms ease-in', style({ transform: 'translateX(0%)' }))
|
|
1568
|
+
])
|
|
1569
|
+
]),
|
|
1570
|
+
] });
|
|
1516
1571
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, decorators: [{
|
|
1517
1572
|
type: Component,
|
|
1518
|
-
args: [{ selector: 'app-side-navigation',
|
|
1519
|
-
|
|
1573
|
+
args: [{ selector: 'app-side-navigation', animations: [
|
|
1574
|
+
trigger('sideNavAnimation', [
|
|
1575
|
+
state('in', style({ transform: 'translateX(0%)' })),
|
|
1576
|
+
state('out', style({ transform: 'translateX(110%)' })),
|
|
1577
|
+
transition('in => out', [
|
|
1578
|
+
animate('100ms ease-out', style({ transform: 'translateX(110%)' }))
|
|
1579
|
+
]),
|
|
1580
|
+
transition('out => in', [
|
|
1581
|
+
animate('100ms ease-in', style({ transform: 'translateX(0%)' }))
|
|
1582
|
+
])
|
|
1583
|
+
]),
|
|
1584
|
+
], template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"] }]
|
|
1585
|
+
}], ctorParameters: function () { return [{ type: EntryService }, { type: i1$4.Router }, { type: IdentityService }, { type: i0.Renderer2 }]; }, propDecorators: { divNav: [{
|
|
1586
|
+
type: ViewChild,
|
|
1587
|
+
args: ['navcontainer', { static: false }]
|
|
1588
|
+
}] } });
|
|
1520
1589
|
|
|
1521
1590
|
class MainComponent {
|
|
1522
1591
|
constructor(router) {
|