@csmart/ngc-smart-victim 1.18.18 → 1.18.20
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/csmart-ngc-smart-victim.mjs +5 -0
- package/esm2022/lib/caseNote/caseNote.component.mjs +194 -0
- package/esm2022/lib/common-dialog/common-dialog.component.mjs +23 -0
- package/esm2022/lib/common-dialog/common-dialog.module.mjs +34 -0
- package/esm2022/lib/common-dialog/common-dialog.service.mjs +33 -0
- package/esm2022/lib/contact/contact.component.mjs +140 -0
- package/esm2022/lib/email.services.mjs +42 -0
- package/esm2022/lib/intake.service.mjs +57 -0
- package/esm2022/lib/safetyPlan/serviceProvider.component.mjs +99 -0
- package/esm2022/lib/safetyPlan/victimSafetyPlan.component.mjs +116 -0
- package/esm2022/lib/safetyPlan/victimSafetyPlanDetail.component.mjs +340 -0
- package/esm2022/lib/shared/app.shared.module.mjs +215 -0
- package/esm2022/lib/shared/validators/date.validator.mjs +59 -0
- package/esm2022/lib/shared/validators/index.mjs +2 -0
- package/esm2022/lib/smart-victim-delete-confirm.component.mjs +44 -0
- package/esm2022/lib/smart-victim-detail/smart-victim-detail.component.mjs +1157 -0
- package/esm2022/lib/smart-victim.component.mjs +319 -0
- package/esm2022/lib/smart-victim.model.mjs +143 -0
- package/esm2022/lib/smart-victim.module.mjs +128 -0
- package/esm2022/lib/smart-victim.service.mjs +370 -0
- package/esm2022/lib/victim-routing.module.mjs +41 -0
- package/esm2022/lib/victimSearch/VictimSearchFilter.mjs +3 -0
- package/esm2022/lib/victimSearch/victimSearchForm.component.mjs +38 -0
- package/esm2022/public-api.mjs +11 -0
- package/fesm2022/csmart-ngc-smart-victim.mjs +3347 -0
- package/fesm2022/csmart-ngc-smart-victim.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/caseNote/caseNote.component.d.ts +51 -0
- package/lib/common-dialog/common-dialog.component.d.ts +14 -0
- package/lib/common-dialog/common-dialog.module.d.ts +8 -0
- package/lib/common-dialog/common-dialog.service.d.ts +11 -0
- package/lib/contact/contact.component.d.ts +40 -0
- package/lib/email.services.d.ts +11 -0
- package/lib/intake.service.d.ts +57 -0
- package/lib/safetyPlan/serviceProvider.component.d.ts +19 -0
- package/lib/safetyPlan/victimSafetyPlan.component.d.ts +54 -0
- package/lib/safetyPlan/victimSafetyPlanDetail.component.d.ts +62 -0
- package/lib/shared/app.shared.module.d.ts +33 -0
- package/lib/shared/validators/date.validator.d.ts +9 -0
- package/lib/shared/validators/index.d.ts +1 -0
- package/lib/smart-victim-delete-confirm.component.d.ts +12 -0
- package/lib/smart-victim-detail/smart-victim-detail.component.d.ts +129 -0
- package/lib/smart-victim.component.d.ts +69 -0
- package/lib/smart-victim.model.d.ts +210 -0
- package/lib/smart-victim.module.d.ts +49 -0
- package/lib/smart-victim.service.d.ts +71 -0
- package/lib/victim-routing.module.d.ts +7 -0
- package/{src/lib/victimSearch/VictimSearchFilter.ts → lib/victimSearch/VictimSearchFilter.d.ts} +7 -9
- package/lib/victimSearch/victimSearchForm.component.d.ts +14 -0
- package/package.json +21 -4
- package/{src/public-api.ts → public-api.d.ts} +7 -12
- package/karma.conf.js +0 -32
- package/ng-package.json +0 -7
- package/src/lib/caseNote/caseNote.component.css +0 -22
- package/src/lib/caseNote/caseNote.component.html +0 -188
- package/src/lib/caseNote/caseNote.component.ts +0 -265
- package/src/lib/common-dialog/common-dialog.component.css +0 -10
- package/src/lib/common-dialog/common-dialog.component.html +0 -23
- package/src/lib/common-dialog/common-dialog.component.spec.ts +0 -25
- package/src/lib/common-dialog/common-dialog.component.ts +0 -21
- package/src/lib/common-dialog/common-dialog.module.ts +0 -22
- package/src/lib/common-dialog/common-dialog.service.ts +0 -35
- package/src/lib/contact/contact.component.css +0 -22
- package/src/lib/contact/contact.component.html +0 -124
- package/src/lib/contact/contact.component.ts +0 -176
- package/src/lib/email-notification.service.ts +0 -42
- package/src/lib/email.services.ts +0 -51
- package/src/lib/http.service.ts +0 -34
- package/src/lib/intake.service.ts +0 -82
- package/src/lib/loader.service.ts +0 -11
- package/src/lib/safetyPlan/serviceProvider.component.ts +0 -94
- package/src/lib/safetyPlan/victimSafetyPlan.component.css +0 -27
- package/src/lib/safetyPlan/victimSafetyPlan.component.html +0 -85
- package/src/lib/safetyPlan/victimSafetyPlan.component.ts +0 -178
- package/src/lib/safetyPlan/victimSafetyPlanDetail.component.html +0 -234
- package/src/lib/safetyPlan/victimSafetyPlanDetail.component.ts +0 -492
- package/src/lib/shared/app.shared.module.ts +0 -111
- package/src/lib/shared/validators/date.validator.ts +0 -73
- package/src/lib/shared/validators/index.ts +0 -1
- package/src/lib/smart-victim-delete-confirm.component.ts +0 -35
- package/src/lib/smart-victim-detail/smart-victim-detail.component.css +0 -43
- package/src/lib/smart-victim-detail/smart-victim-detail.component.html +0 -876
- package/src/lib/smart-victim-detail/smart-victim-detail.component.spec.ts +0 -25
- package/src/lib/smart-victim-detail/smart-victim-detail.component.ts +0 -1459
- package/src/lib/smart-victim.component.css +0 -245
- package/src/lib/smart-victim.component.html +0 -132
- package/src/lib/smart-victim.component.spec.ts +0 -25
- package/src/lib/smart-victim.component.ts +0 -334
- package/src/lib/smart-victim.model.ts +0 -312
- package/src/lib/smart-victim.module.ts +0 -110
- package/src/lib/smart-victim.service.spec.ts +0 -12
- package/src/lib/smart-victim.service.ts +0 -576
- package/src/lib/victim-routing.module.ts +0 -36
- package/src/lib/victimSearch/victimSearchForm.component.html +0 -35
- package/src/lib/victimSearch/victimSearchForm.component.ts +0 -41
- package/src/test.ts +0 -16
- package/tsconfig.lib.json +0 -36
- package/tsconfig.spec.json +0 -17
- package/tslint.json +0 -17
@@ -0,0 +1,319 @@
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
2
|
+
import { Component, ViewChild, Input, Inject } from '@angular/core';
|
3
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
4
|
+
import { MatTableDataSource } from '@angular/material/table';
|
5
|
+
import { MatSort } from '@angular/material/sort';
|
6
|
+
import { MatDialog } from '@angular/material/dialog';
|
7
|
+
import { AccessType, } from "@csmart/ngc-smart-core";
|
8
|
+
import { NgcSmartVictimService } from './smart-victim.service';
|
9
|
+
import { VictimListFilter, SMART_WARRANT_URL } from './smart-victim.model';
|
10
|
+
//import { SmartVictimDetailComponent } from './smart-victim-detail/smart-victim-detail.component';
|
11
|
+
import { IntakeStep, IntakeServicesComponent, } from './intake.service';
|
12
|
+
import { MatPaginator } from '@angular/material/paginator';
|
13
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
14
|
+
import * as i0 from "@angular/core";
|
15
|
+
import * as i1 from "@angular/material/dialog";
|
16
|
+
import * as i2 from "./smart-victim.service";
|
17
|
+
import * as i3 from "@angular/router";
|
18
|
+
import * as i4 from "@angular/material/snack-bar";
|
19
|
+
import * as i5 from "./intake.service";
|
20
|
+
import * as i6 from "@angular/common";
|
21
|
+
import * as i7 from "@angular/material/button";
|
22
|
+
import * as i8 from "@angular/material/card";
|
23
|
+
import * as i9 from "@angular/material/icon";
|
24
|
+
import * as i10 from "@angular/material/paginator";
|
25
|
+
import * as i11 from "@angular/material/table";
|
26
|
+
import * as i12 from "@csmart/ngc-smart-core";
|
27
|
+
import * as i13 from "./smart-victim-detail/smart-victim-detail.component";
|
28
|
+
import * as i14 from "./victimSearch/victimSearchForm.component";
|
29
|
+
export class NgcSmartVictimComponent {
|
30
|
+
constructor(dialog, victimService, router, route, snackBar, intakeService, smartWarrantUrl, document) {
|
31
|
+
this.dialog = dialog;
|
32
|
+
this.victimService = victimService;
|
33
|
+
this.router = router;
|
34
|
+
this.route = route;
|
35
|
+
this.snackBar = snackBar;
|
36
|
+
this.intakeService = intakeService;
|
37
|
+
this.smartWarrantUrl = smartWarrantUrl;
|
38
|
+
this.document = document;
|
39
|
+
this.intakeFlag = "false";
|
40
|
+
this.appModuleId = '';
|
41
|
+
this.activatedRoute = null;
|
42
|
+
this.victims = [];
|
43
|
+
this.victimDetail = {};
|
44
|
+
this.showDetail = false;
|
45
|
+
this.victimListFilter = new VictimListFilter();
|
46
|
+
this.victimListDataSource = new MatTableDataSource();
|
47
|
+
this.doSpin = false;
|
48
|
+
this.showListFlag = false;
|
49
|
+
this.msg = "";
|
50
|
+
this.selectedOffender = {};
|
51
|
+
this.isIntake = false;
|
52
|
+
}
|
53
|
+
// private onChange(filter: VictimListFilter) {
|
54
|
+
// console.log('filter in onchange');
|
55
|
+
// console.log(filter);
|
56
|
+
// this.getVictimList(filter);
|
57
|
+
// }
|
58
|
+
applyFilter(filterValue) {
|
59
|
+
this.victimListDataSource.filter = filterValue.trim().toLowerCase();
|
60
|
+
}
|
61
|
+
addRecord() {
|
62
|
+
this.showDetail = true;
|
63
|
+
this.showAdd = false;
|
64
|
+
this.victimDetail = null;
|
65
|
+
this.showListFlag = false;
|
66
|
+
}
|
67
|
+
editVictimDetail(record) {
|
68
|
+
console.log("victim edit record");
|
69
|
+
console.log(record);
|
70
|
+
console.log(record.victimId);
|
71
|
+
this.victimDetail = record;
|
72
|
+
this.showDetail = true;
|
73
|
+
this.showAdd = false;
|
74
|
+
this.showListFlag = false;
|
75
|
+
}
|
76
|
+
save(detail) {
|
77
|
+
this.showDetail = false;
|
78
|
+
this.showAdd = true;
|
79
|
+
this.showListFlag = true;
|
80
|
+
}
|
81
|
+
cancel() {
|
82
|
+
this.showDetail = false;
|
83
|
+
this.victimDetail = {};
|
84
|
+
}
|
85
|
+
ngAfterViewInit() {
|
86
|
+
this.victimListDataSource.paginator = this.paginator;
|
87
|
+
this.victimListDataSource.sort = this.sort;
|
88
|
+
}
|
89
|
+
ngOnChanges() {
|
90
|
+
this.updateAccessControlConfig = {
|
91
|
+
accessType: AccessType.UPDATE,
|
92
|
+
appModuleId: this.appModuleId,
|
93
|
+
roleId: null,
|
94
|
+
route: this.activatedRoute?.snapshot,
|
95
|
+
};
|
96
|
+
this.createAccessControlConfig = {
|
97
|
+
accessType: AccessType.CREATE,
|
98
|
+
appModuleId: this.appModuleId,
|
99
|
+
roleId: null,
|
100
|
+
route: this.activatedRoute?.snapshot,
|
101
|
+
};
|
102
|
+
this.deleteAccessControlConfig = {
|
103
|
+
accessType: AccessType.DELETE,
|
104
|
+
appModuleId: this.appModuleId,
|
105
|
+
roleId: null,
|
106
|
+
route: this.activatedRoute?.snapshot,
|
107
|
+
};
|
108
|
+
}
|
109
|
+
ngOnInit() {
|
110
|
+
const queryParams = this.route.snapshot.queryParams;
|
111
|
+
if (queryParams['routeTo']) {
|
112
|
+
this.router.navigate([queryParams['routeTo']]);
|
113
|
+
}
|
114
|
+
const selData = this.route.snapshot.data;
|
115
|
+
this.selectedOffender = selData['selectedOffender'];
|
116
|
+
var myPath = this.router.url.slice(-10);
|
117
|
+
console.log("offender id at smart-victim");
|
118
|
+
console.log(this.offenderId);
|
119
|
+
console.log("staff id at smart-victim");
|
120
|
+
console.log(this.staffId);
|
121
|
+
console.log("insakeFlag at smart-victim");
|
122
|
+
console.log("smart-victim ngOnInit");
|
123
|
+
console.log(myPath);
|
124
|
+
// if (this.intakeFlag == "true") {
|
125
|
+
// this.isIntake = true;
|
126
|
+
// }
|
127
|
+
this.isIntake = this.selectedOffender?.intakeFlag;
|
128
|
+
this.displayedColumns = ["lastName", "firstName"];
|
129
|
+
if (this.showRelationshipColumn == true ||
|
130
|
+
myPath == "victimList" ||
|
131
|
+
myPath == "victimHome") {
|
132
|
+
this.displayedColumns.push("relationship");
|
133
|
+
}
|
134
|
+
if (this.showOffenderNameColumn == true) {
|
135
|
+
this.displayedColumns.push("offenderName");
|
136
|
+
}
|
137
|
+
if (this.showOffenderPhoneColumn == true ||
|
138
|
+
myPath == "victimList" ||
|
139
|
+
myPath == "victimHome") {
|
140
|
+
this.displayedColumns.push("homePhone");
|
141
|
+
}
|
142
|
+
this.displayedColumns.push("victimId");
|
143
|
+
if (this.showSearchForm == true) {
|
144
|
+
this.showListFlag = false;
|
145
|
+
}
|
146
|
+
console.log("this.showSearchForm");
|
147
|
+
console.log(this.showSearchForm);
|
148
|
+
console.log("myPath");
|
149
|
+
console.log(myPath);
|
150
|
+
if (this.showSearchForm == false ||
|
151
|
+
myPath == "victimList" ||
|
152
|
+
myPath == "victimHome") {
|
153
|
+
var myOffenderId;
|
154
|
+
if (this.offenderId) {
|
155
|
+
myOffenderId = this.offenderId;
|
156
|
+
}
|
157
|
+
else {
|
158
|
+
console.log("back from previous page");
|
159
|
+
this.showAdd = true;
|
160
|
+
this.showRelationshipColumn = true;
|
161
|
+
this.displayedColumns.push("relationship");
|
162
|
+
this.showOffenderPhoneColumn = true;
|
163
|
+
// this.displayedColumns.push("homePhone");
|
164
|
+
this.accessByModule = "true";
|
165
|
+
this.showEdit = "true";
|
166
|
+
this.showCaseNote = "true";
|
167
|
+
this.showSafetyPlan = "true";
|
168
|
+
myOffenderId = selData.selectedOffender.offenderId;
|
169
|
+
}
|
170
|
+
const victimListFilter = {
|
171
|
+
offenderId: myOffenderId,
|
172
|
+
lastName: null,
|
173
|
+
firstName: null,
|
174
|
+
pdid: null,
|
175
|
+
birthDate: null,
|
176
|
+
};
|
177
|
+
console.log("victimListFilter in smar-victim componenet");
|
178
|
+
console.log(victimListFilter);
|
179
|
+
this.victimService
|
180
|
+
.getVictimListByFilter(victimListFilter)
|
181
|
+
.subscribe((data) => {
|
182
|
+
this.victims = data;
|
183
|
+
this.victimListDataSource = new MatTableDataSource(data);
|
184
|
+
this.victimListDataSource.paginator = this.paginator;
|
185
|
+
this.victimListDataSource.sort = this.sort;
|
186
|
+
console.log("victim data at line 241");
|
187
|
+
console.log(this.victims);
|
188
|
+
console.log("showListFlag");
|
189
|
+
console.log(this.showListFlag);
|
190
|
+
this.showListFlag = true;
|
191
|
+
if (data.length == 0) {
|
192
|
+
this.msg = "No Record Found!";
|
193
|
+
}
|
194
|
+
});
|
195
|
+
}
|
196
|
+
else {
|
197
|
+
console.log("find filter");
|
198
|
+
console.log(this.victimListFilter);
|
199
|
+
if (this.showListFlag === true) {
|
200
|
+
if (this.victimListFilter != null) {
|
201
|
+
this.victimService
|
202
|
+
.getVictimListByFilter(this.victimListFilter)
|
203
|
+
.subscribe((data) => {
|
204
|
+
this.victims = data;
|
205
|
+
this.victimListDataSource.data = data;
|
206
|
+
console.log("victim data at line 262");
|
207
|
+
console.log(data);
|
208
|
+
});
|
209
|
+
}
|
210
|
+
}
|
211
|
+
}
|
212
|
+
}
|
213
|
+
// phone number format on the victim list
|
214
|
+
formatPhoneNumber(phoneNumberString) {
|
215
|
+
if (!phoneNumberString)
|
216
|
+
return "";
|
217
|
+
var cleaned = ("" + phoneNumberString).replace(/\D/g, "");
|
218
|
+
var match = cleaned.match(/^(\d{3})(\d{3})(\d{4})$/);
|
219
|
+
if (match) {
|
220
|
+
return "(" + match[1] + ") " + match[2] + "-" + match[3];
|
221
|
+
}
|
222
|
+
return "";
|
223
|
+
}
|
224
|
+
saveIntake() {
|
225
|
+
if (!this.isIntake) {
|
226
|
+
return;
|
227
|
+
}
|
228
|
+
const intakeStep = {
|
229
|
+
intakeStepId: IntakeStep.VictimInformation,
|
230
|
+
offenderId: this.offenderId,
|
231
|
+
modifiedBy: this.staffId,
|
232
|
+
};
|
233
|
+
this.intakeService
|
234
|
+
.updateIntakeSteps(this.offenderId, intakeStep)
|
235
|
+
.subscribe((res) => {
|
236
|
+
console.log("save intake step.");
|
237
|
+
this.snackBar.open("Status Saved.", "", {
|
238
|
+
duration: 3000,
|
239
|
+
});
|
240
|
+
//this.router.navigate(['/warrant '], { queryParams: { intake: 1 } });
|
241
|
+
this.document.location.href =
|
242
|
+
`${this.smartWarrantUrl}/?offenderId=${this.offenderId}&intakeFlag=${this.isIntake}&routeTo=warrant`;
|
243
|
+
});
|
244
|
+
}
|
245
|
+
goToCaseNote(victimId) {
|
246
|
+
this.router.navigate(["casenote", victimId, this.offenderId]);
|
247
|
+
}
|
248
|
+
goToSaftyPlan(victimId) {
|
249
|
+
this.router.navigate(["saftyPlan", victimId]);
|
250
|
+
}
|
251
|
+
getVictimList(filter) {
|
252
|
+
this.victimListFilter = filter;
|
253
|
+
console.log("this.victimListFilter inside getVictimList");
|
254
|
+
console.log(this.victimListFilter);
|
255
|
+
this.doSpin = true;
|
256
|
+
this.victimService.getVictimListByFilter(filter).subscribe((data) => {
|
257
|
+
this.doSpin = !this.doSpin;
|
258
|
+
if (data.length > 0) {
|
259
|
+
this.showListFlag = true;
|
260
|
+
this.victimListDataSource.data = data;
|
261
|
+
console.log('victim list 323' + data);
|
262
|
+
}
|
263
|
+
else {
|
264
|
+
this.msg = "No record found!";
|
265
|
+
}
|
266
|
+
}, (err) => {
|
267
|
+
this.doSpin = !this.doSpin;
|
268
|
+
});
|
269
|
+
}
|
270
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgcSmartVictimComponent, deps: [{ token: i1.MatDialog }, { token: i2.NgcSmartVictimService }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i4.MatSnackBar }, { token: i5.IntakeServicesComponent }, { token: SMART_WARRANT_URL }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
271
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NgcSmartVictimComponent, selector: "csmart-victim", inputs: { offenderId: "offenderId", staffId: "staffId", staffRole: "staffRole", showCaseNote: "showCaseNote", showSafetyPlan: "showSafetyPlan", showAdd: "showAdd", showEdit: "showEdit", showRelationshipColumn: "showRelationshipColumn", showOffenderNameColumn: "showOffenderNameColumn", showOffenderPhoneColumn: "showOffenderPhoneColumn", showSearchForm: "showSearchForm", accessByModule: "accessByModule", intakeFlag: "intakeFlag", appModuleId: "appModuleId", activatedRoute: "activatedRoute" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"showSearchForm\">\r\n <app-victim-search-form\r\n (onSearch)=\"getVictimList($event)\">\r\n </app-victim-search-form>\r\n</div>\r\n\r\n<div *ngIf=\"showDetail\">\r\n <csmart-victim-detail [victimDetail]=\"victimDetail\"\r\n [staffId]=\"staffId\"\r\n [offenderId] =\"offenderId\"\r\n [isIntake]=\"isIntake\"\r\n (onSave)=\"save($event)\"\r\n (onCancel)=\"cancel()\" >\r\n</csmart-victim-detail>\r\n</div>\r\n<div class=\"main-container\">\r\n <mat-card id=\"divVictim\" class=\"smart-card-table\">\r\n <div class=\"smart-action-content\">\r\n <button mat-stroked-button color=\"primary\"\r\n accessControl\r\n [accessControlConfig]=\"createAccessControlConfig\"\r\n *ngIf=\"showAdd\"\r\n class=\"smart-add-button\"\r\n (click)=\"addRecord()\">\r\n <mat-icon>add</mat-icon>\r\n Add Victim\r\n </button>\r\n <button\r\n mat-stroked-button\r\n class=\"smart-add-button\"\r\n *ngIf=\"isIntake\"\r\n color=\"primary\"\r\n accessControl\r\n [accessControlConfig]=\"updateAccessControlConfig\"\r\n (click)=\"saveIntake()\">\r\n Continue\r\n </button>\r\n </div>\r\n <div *ngIf=\"victimListDataSource.data.length > 0\">\r\n <mat-table #table [dataSource]=\"victimListDataSource\" >\r\n\r\n <ng-container matColumnDef=\"lastName\">\r\n <mat-header-cell *matHeaderCellDef>Victim Last Name</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" > {{row.lastName}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"firstName\">\r\n <mat-header-cell *matHeaderCellDef >Victim First Name</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" > {{row.firstName}} </mat-cell>\r\n </ng-container>\r\n\r\n <div *ngIf=\"showRelationshipColumn\">\r\n <ng-container matColumnDef=\"relationship\">\r\n <mat-header-cell *matHeaderCellDef >Relationship to Offender</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" > {{row.victimOffenderRelationships[0]}} </mat-cell>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"showOffenderPhoneColumn\">\r\n <ng-container matColumnDef=\"homePhone\">\r\n <mat-header-cell *matHeaderCellDef >Phone Number</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" >\r\n Home phone: {{formatPhoneNumber(row.homePhone)}}<br>\r\n Cell Phone: {{formatPhoneNumber(row.cellPhone)}}<br>\r\n Work Phone: {{formatPhoneNumber(row.workPhone)}}\r\n\r\n </mat-cell>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"showOffenderNameColumn\">\r\n <ng-container matColumnDef=\"offenderName\">\r\n <mat-header-cell *matHeaderCellDef>Offender Name</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" > {{row.offenderName}} </mat-cell>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container matColumnDef=\"victimId\">\r\n <mat-header-cell *matHeaderCellDef ></mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" >\r\n\r\n <!-- <div *ngIf=\"accessByModule\">\r\n <mat-checkbox></mat-checkbox>\r\n </div> -->\r\n\r\n <div *ngIf=\"showEdit\">\r\n <button class=\"edit-btn\" mat-icon-button color=\"primary\" matTooltip=\"View/Edit Victim\"\r\n accessControl\r\n [accessControlConfig]=\"updateAccessControlConfig\"\r\n (click)=\"editVictimDetail(row)\">\r\n <i class=\"material-icons\">mode_edit</i>\r\n </button>\r\n </div>\r\n\r\n\r\n\r\n \r\n\r\n <div *ngIf=\"showCaseNote\">\r\n <button type=\"button\" matTooltip=\"CaseNote\" mat-stroked-button color=\"primary\"\r\n accessControl\r\n [accessControlConfig]=\"updateAccessControlConfig\"\r\n (click)=\"goToCaseNote(row.victimId)\">\r\n <span class=\"glyphicon glyphicon-pencil\" ></span> Case Note\r\n </button>\r\n </div>\r\n \r\n\r\n <div *ngIf=\"showSafetyPlan\">\r\n <button type=\"button\" matTooltip=\"safety plan\" mat-stroked-button color=\"primary\"\r\n accessControl\r\n [accessControlConfig]=\"updateAccessControlConfig\"\r\n (click)=\"goToSaftyPlan(row.victimId)\">\r\n <span class=\"glyphicon glyphicon-pencil\" ></span> Safety Plan\r\n </button>\r\n </div>\r\n \r\n\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns\" class=\"example-header-row\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: displayedColumns\" class=\"example-row\"></mat-row>\r\n </mat-table>\r\n <mat-paginator #paginator [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 100]\"></mat-paginator>\r\n </div>\r\n </mat-card>\r\n <div>\r\n <b>{{msg}}</b>\r\n </div>\r\n</div>\r\n", styles: ["div.services{max-width:500px;margin:auto;border:3px solid #73AD21}.rTable{display:block;width:100%}.rTableHeading,.rTableBody,.rTableFoot,.rTableRow{clear:both}.rTableHead,.rTableFoot{background-color:#ddd;font-weight:700}.rTableCell,.rTableHead{border:0px;float:left;padding:1px;width:28%}.rTable:after{visibility:hidden;display:block;font-size:0;content:\" \";clear:both;height:0}.victimSearch{display:grid;grid-template-columns:1fr 1fr 1fr;grid-column-gap:10px}.edit-btn{margin-right:4px}.main-container{display:flex;margin-top:8px;flex-direction:column}.add-action{display:flex;justify-content:flex-end;margin-bottom:8px}.example-headers-align .mat-expansion-panel-header-title,.example-headers-align .mat-expansion-panel-header-description{flex-basis:0}.example-headers-align .mat-expansion-panel-header-description{justify-content:space-between;align-items:center}mat-form-field{margin-right:12px}.actions{display:flex;justify-content:space-around}.Row{display:table;width:100%;table-layout:fixed}.Column{display:table-cell}.sp-form textarea{float:left;margin-top:20px;margin-bottom:10px;width:462px;height:70px;overflow:auto;box-sizing:border-box}.mat-column-lastName,.mat-column-firstName,.mat-column-relationship,.mat-column-homePhone,.mat-column-offenderName{word-wrap:break-word!important;white-space:unset!important;flex:0 0 15%!important;width:15%!important;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mat-column-victimId{word-wrap:break-word!important;white-space:unset!important;flex:0 0 25%!important;width:25%!important;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.smart-card{background-color:var(--mdc-elevated-card-container-color);border:1px solid #ccc;border-radius:8px;box-shadow:0 4px 8px #0000001a;padding:16px 0 16px 2px;width:100%}.smart-card-header{display:flex;flex-direction:column;align-items:start}.smart-label{font-size:16px!important}.smart-card-table{margin:16px 0}.smart-flex-container{display:flex!important;justify-content:space-between;flex-wrap:wrap}.smart-action-content{display:flex;justify-content:flex-end;margin:12px}.smart-button{margin:0 4px}.smart-add-button{margin:0 4px;font-size:14px!important}.material-icons{vertical-align:baseline!important}.smart-paginator{display:flex!important}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i12.SmartAccessControlDirective, selector: "[accessControl]", inputs: ["accessControlConfig"] }, { kind: "component", type: i13.SmartVictimDetailComponent, selector: "csmart-victim-detail", inputs: ["victimDetail", "staffId", "offenderId", "isIntake"], outputs: ["onSave", "onCancel"] }, { kind: "component", type: i14.VictimSearchFormComponent, selector: "app-victim-search-form", outputs: ["onSearch"] }] }); }
|
272
|
+
}
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgcSmartVictimComponent, decorators: [{
|
274
|
+
type: Component,
|
275
|
+
args: [{ selector: "csmart-victim", template: "<div *ngIf=\"showSearchForm\">\r\n <app-victim-search-form\r\n (onSearch)=\"getVictimList($event)\">\r\n </app-victim-search-form>\r\n</div>\r\n\r\n<div *ngIf=\"showDetail\">\r\n <csmart-victim-detail [victimDetail]=\"victimDetail\"\r\n [staffId]=\"staffId\"\r\n [offenderId] =\"offenderId\"\r\n [isIntake]=\"isIntake\"\r\n (onSave)=\"save($event)\"\r\n (onCancel)=\"cancel()\" >\r\n</csmart-victim-detail>\r\n</div>\r\n<div class=\"main-container\">\r\n <mat-card id=\"divVictim\" class=\"smart-card-table\">\r\n <div class=\"smart-action-content\">\r\n <button mat-stroked-button color=\"primary\"\r\n accessControl\r\n [accessControlConfig]=\"createAccessControlConfig\"\r\n *ngIf=\"showAdd\"\r\n class=\"smart-add-button\"\r\n (click)=\"addRecord()\">\r\n <mat-icon>add</mat-icon>\r\n Add Victim\r\n </button>\r\n <button\r\n mat-stroked-button\r\n class=\"smart-add-button\"\r\n *ngIf=\"isIntake\"\r\n color=\"primary\"\r\n accessControl\r\n [accessControlConfig]=\"updateAccessControlConfig\"\r\n (click)=\"saveIntake()\">\r\n Continue\r\n </button>\r\n </div>\r\n <div *ngIf=\"victimListDataSource.data.length > 0\">\r\n <mat-table #table [dataSource]=\"victimListDataSource\" >\r\n\r\n <ng-container matColumnDef=\"lastName\">\r\n <mat-header-cell *matHeaderCellDef>Victim Last Name</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" > {{row.lastName}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"firstName\">\r\n <mat-header-cell *matHeaderCellDef >Victim First Name</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" > {{row.firstName}} </mat-cell>\r\n </ng-container>\r\n\r\n <div *ngIf=\"showRelationshipColumn\">\r\n <ng-container matColumnDef=\"relationship\">\r\n <mat-header-cell *matHeaderCellDef >Relationship to Offender</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" > {{row.victimOffenderRelationships[0]}} </mat-cell>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"showOffenderPhoneColumn\">\r\n <ng-container matColumnDef=\"homePhone\">\r\n <mat-header-cell *matHeaderCellDef >Phone Number</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" >\r\n Home phone: {{formatPhoneNumber(row.homePhone)}}<br>\r\n Cell Phone: {{formatPhoneNumber(row.cellPhone)}}<br>\r\n Work Phone: {{formatPhoneNumber(row.workPhone)}}\r\n\r\n </mat-cell>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"showOffenderNameColumn\">\r\n <ng-container matColumnDef=\"offenderName\">\r\n <mat-header-cell *matHeaderCellDef>Offender Name</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" > {{row.offenderName}} </mat-cell>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container matColumnDef=\"victimId\">\r\n <mat-header-cell *matHeaderCellDef ></mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" >\r\n\r\n <!-- <div *ngIf=\"accessByModule\">\r\n <mat-checkbox></mat-checkbox>\r\n </div> -->\r\n\r\n <div *ngIf=\"showEdit\">\r\n <button class=\"edit-btn\" mat-icon-button color=\"primary\" matTooltip=\"View/Edit Victim\"\r\n accessControl\r\n [accessControlConfig]=\"updateAccessControlConfig\"\r\n (click)=\"editVictimDetail(row)\">\r\n <i class=\"material-icons\">mode_edit</i>\r\n </button>\r\n </div>\r\n\r\n\r\n\r\n \r\n\r\n <div *ngIf=\"showCaseNote\">\r\n <button type=\"button\" matTooltip=\"CaseNote\" mat-stroked-button color=\"primary\"\r\n accessControl\r\n [accessControlConfig]=\"updateAccessControlConfig\"\r\n (click)=\"goToCaseNote(row.victimId)\">\r\n <span class=\"glyphicon glyphicon-pencil\" ></span> Case Note\r\n </button>\r\n </div>\r\n \r\n\r\n <div *ngIf=\"showSafetyPlan\">\r\n <button type=\"button\" matTooltip=\"safety plan\" mat-stroked-button color=\"primary\"\r\n accessControl\r\n [accessControlConfig]=\"updateAccessControlConfig\"\r\n (click)=\"goToSaftyPlan(row.victimId)\">\r\n <span class=\"glyphicon glyphicon-pencil\" ></span> Safety Plan\r\n </button>\r\n </div>\r\n \r\n\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns\" class=\"example-header-row\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: displayedColumns\" class=\"example-row\"></mat-row>\r\n </mat-table>\r\n <mat-paginator #paginator [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 100]\"></mat-paginator>\r\n </div>\r\n </mat-card>\r\n <div>\r\n <b>{{msg}}</b>\r\n </div>\r\n</div>\r\n", styles: ["div.services{max-width:500px;margin:auto;border:3px solid #73AD21}.rTable{display:block;width:100%}.rTableHeading,.rTableBody,.rTableFoot,.rTableRow{clear:both}.rTableHead,.rTableFoot{background-color:#ddd;font-weight:700}.rTableCell,.rTableHead{border:0px;float:left;padding:1px;width:28%}.rTable:after{visibility:hidden;display:block;font-size:0;content:\" \";clear:both;height:0}.victimSearch{display:grid;grid-template-columns:1fr 1fr 1fr;grid-column-gap:10px}.edit-btn{margin-right:4px}.main-container{display:flex;margin-top:8px;flex-direction:column}.add-action{display:flex;justify-content:flex-end;margin-bottom:8px}.example-headers-align .mat-expansion-panel-header-title,.example-headers-align .mat-expansion-panel-header-description{flex-basis:0}.example-headers-align .mat-expansion-panel-header-description{justify-content:space-between;align-items:center}mat-form-field{margin-right:12px}.actions{display:flex;justify-content:space-around}.Row{display:table;width:100%;table-layout:fixed}.Column{display:table-cell}.sp-form textarea{float:left;margin-top:20px;margin-bottom:10px;width:462px;height:70px;overflow:auto;box-sizing:border-box}.mat-column-lastName,.mat-column-firstName,.mat-column-relationship,.mat-column-homePhone,.mat-column-offenderName{word-wrap:break-word!important;white-space:unset!important;flex:0 0 15%!important;width:15%!important;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mat-column-victimId{word-wrap:break-word!important;white-space:unset!important;flex:0 0 25%!important;width:25%!important;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.smart-card{background-color:var(--mdc-elevated-card-container-color);border:1px solid #ccc;border-radius:8px;box-shadow:0 4px 8px #0000001a;padding:16px 0 16px 2px;width:100%}.smart-card-header{display:flex;flex-direction:column;align-items:start}.smart-label{font-size:16px!important}.smart-card-table{margin:16px 0}.smart-flex-container{display:flex!important;justify-content:space-between;flex-wrap:wrap}.smart-action-content{display:flex;justify-content:flex-end;margin:12px}.smart-button{margin:0 4px}.smart-add-button{margin:0 4px;font-size:14px!important}.material-icons{vertical-align:baseline!important}.smart-paginator{display:flex!important}\n"] }]
|
276
|
+
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.NgcSmartVictimService }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.MatSnackBar }, { type: i5.IntakeServicesComponent }, { type: undefined, decorators: [{
|
277
|
+
type: Inject,
|
278
|
+
args: [SMART_WARRANT_URL]
|
279
|
+
}] }, { type: undefined, decorators: [{
|
280
|
+
type: Inject,
|
281
|
+
args: [DOCUMENT]
|
282
|
+
}] }], propDecorators: { offenderId: [{
|
283
|
+
type: Input
|
284
|
+
}], staffId: [{
|
285
|
+
type: Input
|
286
|
+
}], staffRole: [{
|
287
|
+
type: Input
|
288
|
+
}], showCaseNote: [{
|
289
|
+
type: Input
|
290
|
+
}], showSafetyPlan: [{
|
291
|
+
type: Input
|
292
|
+
}], showAdd: [{
|
293
|
+
type: Input
|
294
|
+
}], showEdit: [{
|
295
|
+
type: Input
|
296
|
+
}], showRelationshipColumn: [{
|
297
|
+
type: Input
|
298
|
+
}], showOffenderNameColumn: [{
|
299
|
+
type: Input
|
300
|
+
}], showOffenderPhoneColumn: [{
|
301
|
+
type: Input
|
302
|
+
}], showSearchForm: [{
|
303
|
+
type: Input
|
304
|
+
}], accessByModule: [{
|
305
|
+
type: Input
|
306
|
+
}], intakeFlag: [{
|
307
|
+
type: Input
|
308
|
+
}], appModuleId: [{
|
309
|
+
type: Input
|
310
|
+
}], activatedRoute: [{
|
311
|
+
type: Input
|
312
|
+
}], paginator: [{
|
313
|
+
type: ViewChild,
|
314
|
+
args: [MatPaginator]
|
315
|
+
}], sort: [{
|
316
|
+
type: ViewChild,
|
317
|
+
args: [MatSort]
|
318
|
+
}] } });
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nYy1zbWFydC12aWN0aW0vc3JjL2xpYi9zbWFydC12aWN0aW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdjLXNtYXJ0LXZpY3RpbS9zcmMvbGliL3NtYXJ0LXZpY3RpbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFZLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBeUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBaUMsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUlMLFVBQVUsR0FDWCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRyxtR0FBbUc7QUFFbkcsT0FBTyxFQUVMLFVBQVUsRUFDVix1QkFBdUIsR0FDeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBTTFELE1BQU0sT0FBTyx1QkFBdUI7SUFxQ2xDLFlBQ1Us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O3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRW1CLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25DaGFuZ2VzLCBWaWV3Q2hpbGQsIElucHV0LCBPdXRwdXQsIEFmdGVyVmlld0luaXQsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGVkT2ZmZW5kZXIsXHJcbiAgTG9naW5TdGFmZixcclxuICBTbWFydEFjY2Vzc0NvbnRyb2xDb25maWcsXHJcbiAgQWNjZXNzVHlwZSxcclxufSBmcm9tIFwiQGNzbWFydC9uZ2Mtc21hcnQtY29yZVwiO1xyXG5pbXBvcnQgeyBOZ2NTbWFydFZpY3RpbVNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LXZpY3RpbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRWxlbWVudHNWaWN0aW0sIFZpY3RpbUxpc3RGaWx0ZXIsIFZpY3RpbSwgU01BUlRfV0FSUkFOVF9VUkwgfSBmcm9tICcuL3NtYXJ0LXZpY3RpbS5tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0VmljdGltRGVsZXRlQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdmljdGltLWRlbGV0ZS1jb25maXJtLmNvbXBvbmVudCc7XHJcbi8vaW1wb3J0IHsgU21hcnRWaWN0aW1EZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXZpY3RpbS1kZXRhaWwvc21hcnQtdmljdGltLWRldGFpbC5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHtcclxuICBJbnRha2VTdGVwU3RhdHVzTW9kZWwsXHJcbiAgSW50YWtlU3RlcCxcclxuICBJbnRha2VTZXJ2aWNlc0NvbXBvbmVudCxcclxufSBmcm9tICcuL2ludGFrZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjc21hcnQtdmljdGltXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zbWFydC12aWN0aW0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc21hcnQtdmljdGltLmNvbXBvbmVudC5jc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ2NTbWFydFZpY3RpbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBvZmZlbmRlcklkOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc3RhZmZJZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHN0YWZmUm9sZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dDYXNlTm90ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dTYWZldHlQbGFuOiBzdHJpbmc7XHJcbiAgLy9ASW5wdXQoKSBzaG93QWRkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0FkZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93RWRpdDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dSZWxhdGlvbnNoaXBDb2x1bW46IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd09mZmVuZGVyTmFtZUNvbHVtbjogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93T2ZmZW5kZXJQaG9uZUNvbHVtbjogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93U2VhcmNoRm9ybTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhY2Nlc3NCeU1vZHVsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGludGFrZUZsYWc6IHN0cmluZyA9IFwiZmFsc2VcIjtcclxuICBASW5wdXQoKSBhcHBNb2R1bGVJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XHJcbiAgLy8gQFZpZXdDaGlsZChTbWFydFZpY3RpbURldGFpbENvbXBvbmVudCkgY2hpbGQ7XHJcblxyXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdO1xyXG4gIHZpY3RpbXM6IFZpY3RpbVtdID0gW107XHJcbiAgdmljdGltRGV0YWlsID0gPFZpY3RpbT57fTtcclxuICBzaG93RGV0YWlsID0gZmFsc2U7XHJcbiAgdmljdGltTGlzdEZpbHRlcjogVmljdGltTGlzdEZpbHRlciA9IG5ldyBWaWN0aW1MaXN0RmlsdGVyKCk7XHJcbiAgdmljdGltTGlzdERhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XHJcbiAgZG9TcGluOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0xpc3RGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbXNnOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXIgPSA8U2VsZWN0ZWRPZmZlbmRlcj57fVxyXG4gIGlzSW50YWtlID0gZmFsc2U7XHJcblxyXG4gIHVwZGF0ZUFjY2Vzc0NvbnRyb2xDb25maWc6IFNtYXJ0QWNjZXNzQ29udHJvbENvbmZpZztcclxuICBjcmVhdGVBY2Nlc3NDb250cm9sQ29uZmlnOiBTbWFydEFjY2Vzc0NvbnRyb2xDb25maWc7XHJcbiAgZGVsZXRlQWNjZXNzQ29udHJvbENvbmZpZzogU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdmljdGltU2VydmljZTogTmdjU21hcnRWaWN0aW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBwcml2YXRlIGludGFrZVNlcnZpY2U6IEludGFrZVNlcnZpY2VzQ29tcG9uZW50LFxyXG4gICAgQEluamVjdChTTUFSVF9XQVJSQU5UX1VSTCkgcHJpdmF0ZSBzbWFydFdhcnJhbnRVcmw6IHN0cmluZyxcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueVxyXG4gICkge31cclxuXHJcbiAgLy8gcHJpdmF0ZSBvbkNoYW5nZShmaWx0ZXI6IFZpY3RpbUxpc3RGaWx0ZXIpIHtcclxuICAvLyAgIGNvbnNvbGUubG9nKCdmaWx0ZXIgaW4gb25jaGFuZ2UnKTtcclxuICAvLyAgIGNvbnNvbGUubG9nKGZpbHRlcik7XHJcbiAgLy8gICB0aGlzLmdldFZpY3RpbUxpc3QoZmlsdGVyKTtcclxuICAvLyB9XHJcblxyXG4gIGFwcGx5RmlsdGVyKGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmljdGltTGlzdERhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG4gIGFkZFJlY29yZCgpIHtcclxuICAgIHRoaXMuc2hvd0RldGFpbCA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dBZGQgPSBmYWxzZTtcclxuICAgIHRoaXMudmljdGltRGV0YWlsID0gbnVsbDtcclxuICAgIHRoaXMuc2hvd0xpc3RGbGFnID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBlZGl0VmljdGltRGV0YWlsKHJlY29yZCkge1xyXG4gICAgY29uc29sZS5sb2coXCJ2aWN0aW0gZWRpdCByZWNvcmRcIik7XHJcbiAgICBjb25zb2xlLmxvZyhyZWNvcmQpO1xyXG4gICAgY29uc29sZS5sb2cocmVjb3JkLnZpY3RpbUlkKTtcclxuICAgIHRoaXMudmljdGltRGV0YWlsID0gcmVjb3JkO1xyXG4gICAgdGhpcy5zaG93RGV0YWlsID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd0FkZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93TGlzdEZsYWcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNhdmUoZGV0YWlsOiBWaWN0aW0pIHtcclxuICAgIHRoaXMuc2hvd0RldGFpbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93QWRkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd0xpc3RGbGFnID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMuc2hvd0RldGFpbCA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWN0aW1EZXRhaWwgPSA8VmljdGltPnt9O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy52aWN0aW1MaXN0RGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcclxuICAgIHRoaXMudmljdGltTGlzdERhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgIHRoaXMudXBkYXRlQWNjZXNzQ29udHJvbENvbmZpZyA9IHtcclxuICAgICAgIGFjY2Vzc1R5cGU6IEFjY2Vzc1R5cGUuVVBEQVRFLFxyXG4gICAgICAgYXBwTW9kdWxlSWQ6IHRoaXMuYXBwTW9kdWxlSWQsXHJcbiAgICAgICByb2xlSWQ6IG51bGwsXHJcbiAgICAgICByb3V0ZTogdGhpcy5hY3RpdmF0ZWRSb3V0ZT8uc25hcHNob3QsXHJcbiAgICAgfTtcclxuICAgICB0aGlzLmNyZWF0ZUFjY2Vzc0NvbnRyb2xDb25maWcgPSB7XHJcbiAgICAgICBhY2Nlc3NUeXBlOiBBY2Nlc3NUeXBlLkNSRUFURSxcclxuICAgICAgIGFwcE1vZHVsZUlkOiB0aGlzLmFwcE1vZHVsZUlkLFxyXG4gICAgICAgcm9sZUlkOiBudWxsLFxyXG4gICAgICAgcm91dGU6IHRoaXMuYWN0aXZhdGVkUm91dGU/LnNuYXBzaG90LFxyXG4gICAgIH07XHJcbiAgICAgdGhpcy5kZWxldGVBY2Nlc3NDb250cm9sQ29uZmlnID0ge1xyXG4gICAgICAgYWNjZXNzVHlwZTogQWNjZXNzVHlwZS5ERUxFVEUsXHJcbiAgICAgICBhcHBNb2R1bGVJZDogdGhpcy5hcHBNb2R1bGVJZCxcclxuICAgICAgIHJvbGVJZDogbnVsbCxcclxuICAgICAgIHJvdXRlOiB0aGlzLmFjdGl2YXRlZFJvdXRlPy5zbmFwc2hvdCxcclxuICAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XHJcbiAgICBpZihxdWVyeVBhcmFtc1sncm91dGVUbyddKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtxdWVyeVBhcmFtc1sncm91dGVUbyddXSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxEYXRhID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsRGF0YVsnc2VsZWN0ZWRPZmZlbmRlciddO1xyXG4gICAgdmFyIG15UGF0aCA9IHRoaXMucm91dGVyLnVybC5zbGljZSgtMTApO1xyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm9mZmVuZGVyIGlkIGF0IHNtYXJ0LXZpY3RpbVwiKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMub2ZmZW5kZXJJZCk7XHJcbiAgICBjb25zb2xlLmxvZyhcInN0YWZmIGlkIGF0IHNtYXJ0LXZpY3RpbVwiKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuc3RhZmZJZCk7XHJcbiAgICBjb25zb2xlLmxvZyhcImluc2FrZUZsYWcgYXQgc21hcnQtdmljdGltXCIpO1xyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZyhcInNtYXJ0LXZpY3RpbSBuZ09uSW5pdFwiKTtcclxuICAgIGNvbnNvbGUubG9nKG15UGF0aCk7XHJcblxyXG4gICAgLy8gaWYgKHRoaXMuaW50YWtlRmxhZyA9PSBcInRydWVcIikge1xyXG4gICAgLy8gICB0aGlzLmlzSW50YWtlID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICB0aGlzLmlzSW50YWtlID0gdGhpcy5zZWxlY3RlZE9mZmVuZGVyPy5pbnRha2VGbGFnO1xyXG5cclxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IFtcImxhc3ROYW1lXCIsIFwiZmlyc3ROYW1lXCJdO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zaG93UmVsYXRpb25zaGlwQ29sdW1uID09IHRydWUgfHxcclxuICAgICAgbXlQYXRoID09IFwidmljdGltTGlzdFwiIHx8XHJcbiAgICAgIG15UGF0aCA9PSBcInZpY3RpbUhvbWVcIlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wdXNoKFwicmVsYXRpb25zaGlwXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2hvd09mZmVuZGVyTmFtZUNvbHVtbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wdXNoKFwib2ZmZW5kZXJOYW1lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zaG93T2ZmZW5kZXJQaG9uZUNvbHVtbiA9PSB0cnVlIHx8XHJcbiAgICAgIG15UGF0aCA9PSBcInZpY3RpbUxpc3RcIiB8fFxyXG4gICAgICBteVBhdGggPT0gXCJ2aWN0aW1Ib21lXCJcclxuICAgICkge1xyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaChcImhvbWVQaG9uZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaChcInZpY3RpbUlkXCIpO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dTZWFyY2hGb3JtID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zaG93TGlzdEZsYWcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuc2hvd1NlYXJjaEZvcm1cIik7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNob3dTZWFyY2hGb3JtKTtcclxuICAgIGNvbnNvbGUubG9nKFwibXlQYXRoXCIpO1xyXG4gICAgY29uc29sZS5sb2cobXlQYXRoKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2hvd1NlYXJjaEZvcm0gPT0gZmFsc2UgfHxcclxuICAgICAgbXlQYXRoID09IFwidmljdGltTGlzdFwiIHx8XHJcbiAgICAgIG15UGF0aCA9PSBcInZpY3RpbUhvbWVcIlxyXG4gICAgKSB7XHJcbiAgICAgIHZhciBteU9mZmVuZGVySWQ7XHJcbiAgICAgIGlmICh0aGlzLm9mZmVuZGVySWQpIHtcclxuICAgICAgICBteU9mZmVuZGVySWQgPSB0aGlzLm9mZmVuZGVySWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJiYWNrIGZyb20gcHJldmlvdXMgcGFnZVwiKTtcclxuICAgICAgICB0aGlzLnNob3dBZGQgPSB0cnVlO1xyXG4gICAgICAgdGhpcy5zaG93UmVsYXRpb25zaGlwQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaChcInJlbGF0aW9uc2hpcFwiKTtcclxuICAgICAgICB0aGlzLnNob3dPZmZlbmRlclBob25lQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICAvLyB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaChcImhvbWVQaG9uZVwiKTtcclxuICAgICAgICB0aGlzLmFjY2Vzc0J5TW9kdWxlID0gXCJ0cnVlXCI7XHJcbiAgICAgICAgdGhpcy5zaG93RWRpdCA9IFwidHJ1ZVwiO1xyXG4gICAgICAgIHRoaXMuc2hvd0Nhc2VOb3RlID0gXCJ0cnVlXCI7XHJcbiAgICAgICAgdGhpcy5zaG93U2FmZXR5UGxhbiA9IFwidHJ1ZVwiO1xyXG5cclxuICAgICAgICBteU9mZmVuZGVySWQgPSBzZWxEYXRhLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmljdGltTGlzdEZpbHRlcjogVmljdGltTGlzdEZpbHRlciA9IHtcclxuICAgICAgICBvZmZlbmRlcklkOiBteU9mZmVuZGVySWQsXHJcbiAgICAgICAgbGFzdE5hbWU6IG51bGwsXHJcbiAgICAgICAgZmlyc3ROYW1lOiBudWxsLFxyXG4gICAgICAgIHBkaWQ6IG51bGwsXHJcbiAgICAgICAgYmlydGhEYXRlOiBudWxsLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJ2aWN0aW1MaXN0RmlsdGVyIGluIHNtYXItdmljdGltIGNvbXBvbmVuZXRcIik7XHJcbiAgICAgIGNvbnNvbGUubG9nKHZpY3RpbUxpc3RGaWx0ZXIpO1xyXG5cclxuICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlXHJcbiAgICAgICAgLmdldFZpY3RpbUxpc3RCeUZpbHRlcih2aWN0aW1MaXN0RmlsdGVyKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IFZpY3RpbVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbXMgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1MaXN0RGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUxpc3REYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1MaXN0RGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG5cclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwidmljdGltIGRhdGEgYXQgbGluZSAyNDFcIik7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbXMpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJzaG93TGlzdEZsYWdcIik7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnNob3dMaXN0RmxhZyk7XHJcbiAgICAgICAgICB0aGlzLnNob3dMaXN0RmxhZyA9IHRydWU7XHJcbiAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm1zZyA9IFwiTm8gUmVjb3JkIEZvdW5kIVwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coXCJmaW5kIGZpbHRlclwiKTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy52aWN0aW1MaXN0RmlsdGVyKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNob3dMaXN0RmxhZyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnZpY3RpbUxpc3RGaWx0ZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXRWaWN0aW1MaXN0QnlGaWx0ZXIodGhpcy52aWN0aW1MaXN0RmlsdGVyKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBWaWN0aW1bXSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudmljdGltcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWN0aW1MaXN0RGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcclxuXHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ2aWN0aW0gZGF0YSBhdCBsaW5lIDI2MlwiKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4vLyBwaG9uZSBudW1iZXIgZm9ybWF0IG9uIHRoZSB2aWN0aW0gbGlzdFxyXG4gIGZvcm1hdFBob25lTnVtYmVyKHBob25lTnVtYmVyU3RyaW5nKSB7XHJcbiAgICBpZiAoIXBob25lTnVtYmVyU3RyaW5nKSByZXR1cm4gXCJcIjtcclxuICAgIHZhciBjbGVhbmVkID0gKFwiXCIgKyBwaG9uZU51bWJlclN0cmluZykucmVwbGFjZSgvXFxEL2csIFwiXCIpO1xyXG4gICAgdmFyIG1hdGNoID0gY2xlYW5lZC5tYXRjaCgvXihcXGR7M30pKFxcZHszfSkoXFxkezR9KSQvKTtcclxuICAgIGlmIChtYXRjaCkge1xyXG4gICAgICByZXR1cm4gXCIoXCIgKyBtYXRjaFsxXSArIFwiKSBcIiArIG1hdGNoWzJdICsgXCItXCIgKyBtYXRjaFszXTtcclxuICAgIH1cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUludGFrZSgpIHtcclxuICAgIGlmICghdGhpcy5pc0ludGFrZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbnRha2VTdGVwID0gPEludGFrZVN0ZXBTdGF0dXNNb2RlbD57XHJcbiAgICAgIGludGFrZVN0ZXBJZDogSW50YWtlU3RlcC5WaWN0aW1JbmZvcm1hdGlvbixcclxuICAgICAgb2ZmZW5kZXJJZDogdGhpcy5vZmZlbmRlcklkLFxyXG4gICAgICBtb2RpZmllZEJ5OiB0aGlzLnN0YWZmSWQsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnRha2VTZXJ2aWNlXHJcbiAgICAgIC51cGRhdGVJbnRha2VTdGVwcyh0aGlzLm9mZmVuZGVySWQsIGludGFrZVN0ZXApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwic2F2ZSBpbnRha2Ugc3RlcC5cIik7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFwiU3RhdHVzIFNhdmVkLlwiLCBcIlwiLCB7XHJcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICB9KTtcclxuICAgICAgICAvL3RoaXMucm91dGVyLm5hdmlnYXRlKFsnL3dhcnJhbnQgJ10sIHsgcXVlcnlQYXJhbXM6IHsgaW50YWtlOiAxIH0gfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9XHJcbiAgICAgICAgICBgJHt0aGlzLnNtYXJ0V2FycmFudFVybH0vP29mZmVuZGVySWQ9JHt0aGlzLm9mZmVuZGVySWR9JmludGFrZUZsYWc9JHt0aGlzLmlzSW50YWtlfSZyb3V0ZVRvPXdhcnJhbnRgO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdvVG9DYXNlTm90ZSh2aWN0aW1JZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJjYXNlbm90ZVwiLCB2aWN0aW1JZCwgdGhpcy5vZmZlbmRlcklkXSk7XHJcbiAgfVxyXG5cclxuICBnb1RvU2FmdHlQbGFuKHZpY3RpbUlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInNhZnR5UGxhblwiLCB2aWN0aW1JZF0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmljdGltTGlzdChmaWx0ZXI6IFZpY3RpbUxpc3RGaWx0ZXIpIHtcclxuICAgIHRoaXMudmljdGltTGlzdEZpbHRlciA9IGZpbHRlcjtcclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy52aWN0aW1MaXN0RmlsdGVyIGluc2lkZSBnZXRWaWN0aW1MaXN0XCIpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy52aWN0aW1MaXN0RmlsdGVyKTtcclxuICAgIHRoaXMuZG9TcGluID0gdHJ1ZTtcclxuICAgIHRoaXMudmljdGltU2VydmljZS5nZXRWaWN0aW1MaXN0QnlGaWx0ZXIoZmlsdGVyKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBWaWN0aW1bXSkgPT4ge1xyXG4gICAgICAgdGhpcy5kb1NwaW4gPSAhdGhpcy5kb1NwaW47XHJcblxyXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0xpc3RGbGFnID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmljdGltTGlzdERhdGFTb3VyY2UuZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndmljdGltIGxpc3QgMzIzJysgZGF0YSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1zZyA9IFwiTm8gcmVjb3JkIGZvdW5kIVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuZG9TcGluID0gIXRoaXMuZG9TcGluO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1NlYXJjaEZvcm1cIj5cclxuICAgIDxhcHAtdmljdGltLXNlYXJjaC1mb3JtXHJcbiAgICAob25TZWFyY2gpPVwiZ2V0VmljdGltTGlzdCgkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC12aWN0aW0tc2VhcmNoLWZvcm0+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cInNob3dEZXRhaWxcIj5cclxuICA8Y3NtYXJ0LXZpY3RpbS1kZXRhaWwgW3ZpY3RpbURldGFpbF09XCJ2aWN0aW1EZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhZmZJZF09XCJzdGFmZklkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW29mZmVuZGVySWRdID1cIm9mZmVuZGVySWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNJbnRha2VdPVwiaXNJbnRha2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob25TYXZlKT1cInNhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiID5cclxuPC9jc21hcnQtdmljdGltLWRldGFpbD5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1jYXJkIGlkPVwiZGl2VmljdGltXCIgY2xhc3M9XCJzbWFydC1jYXJkLXRhYmxlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzbWFydC1hY3Rpb24tY29udGVudFwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICBhY2Nlc3NDb250cm9sXHJcbiAgICAgICAgICBbYWNjZXNzQ29udHJvbENvbmZpZ109XCJjcmVhdGVBY2Nlc3NDb250cm9sQ29uZmlnXCJcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0FkZFwiXHJcbiAgICAgICAgICBjbGFzcz1cInNtYXJ0LWFkZC1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImFkZFJlY29yZCgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIEFkZCBWaWN0aW1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgIGNsYXNzPVwic21hcnQtYWRkLWJ1dHRvblwiXHJcbiAgICAgICAgICAqbmdJZj1cImlzSW50YWtlXCJcclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICBhY2Nlc3NDb250cm9sXHJcbiAgICAgICAgICBbYWNjZXNzQ29udHJvbENvbmZpZ109XCJ1cGRhdGVBY2Nlc3NDb250cm9sQ29uZmlnXCJcclxuICAgICAgICAgIChjbGljayk9XCJzYXZlSW50YWtlKClcIj5cclxuICAgICAgICAgIENvbnRpbnVlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwidmljdGltTGlzdERhdGFTb3VyY2UuZGF0YS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPG1hdC10YWJsZSAjdGFibGUgW2RhdGFTb3VyY2VdPVwidmljdGltTGlzdERhdGFTb3VyY2VcIiA+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImxhc3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlZpY3RpbSBMYXN0IE5hbWU8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiA+IHt7cm93Lmxhc3ROYW1lfX0gIDwvbWF0LWNlbGw+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZmlyc3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiA+VmljdGltIEZpcnN0IE5hbWU8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgPiB7e3Jvdy5maXJzdE5hbWV9fSA8L21hdC1jZWxsPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgICpuZ0lmPVwic2hvd1JlbGF0aW9uc2hpcENvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJyZWxhdGlvbnNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmID5SZWxhdGlvbnNoaXAgdG8gT2ZmZW5kZXI8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgPiB7e3Jvdy52aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcHNbMF19fSA8L21hdC1jZWxsPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAgKm5nSWY9XCJzaG93T2ZmZW5kZXJQaG9uZUNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJob21lUGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmID5QaG9uZSBOdW1iZXI8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIb21lIHBob25lOiB7e2Zvcm1hdFBob25lTnVtYmVyKHJvdy5ob21lUGhvbmUpfX08YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENlbGwgUGhvbmU6IHt7Zm9ybWF0UGhvbmVOdW1iZXIocm93LmNlbGxQaG9uZSl9fTxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgV29yayBQaG9uZToge3tmb3JtYXRQaG9uZU51bWJlcihyb3cud29ya1Bob25lKX19XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICAqbmdJZj1cInNob3dPZmZlbmRlck5hbWVDb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib2ZmZW5kZXJOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+T2ZmZW5kZXIgTmFtZTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgPiB7e3Jvdy5vZmZlbmRlck5hbWV9fSA8L21hdC1jZWxsPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ2aWN0aW1JZFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgPjwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiID5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICAqbmdJZj1cImFjY2Vzc0J5TW9kdWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3g+PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICAqbmdJZj1cInNob3dFZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlZGl0LWJ0blwiICBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgIG1hdFRvb2x0aXA9XCJWaWV3L0VkaXQgVmljdGltXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc0NvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY2Nlc3NDb250cm9sQ29uZmlnXT1cInVwZGF0ZUFjY2Vzc0NvbnRyb2xDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRWaWN0aW1EZXRhaWwocm93KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPm1vZGVfZWRpdDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgICpuZ0lmPVwic2hvd0Nhc2VOb3RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdFRvb2x0aXA9XCJDYXNlTm90ZVwiICBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzQ29udHJvbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWNjZXNzQ29udHJvbENvbmZpZ109XCJ1cGRhdGVBY2Nlc3NDb250cm9sQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9DYXNlTm90ZShyb3cudmljdGltSWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1wZW5jaWxcIiA+PC9zcGFuPiZuYnNwO0Nhc2UgTm90ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgICpuZ0lmPVwic2hvd1NhZmV0eVBsYW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAgbWF0VG9vbHRpcD1cInNhZmV0eSBwbGFuXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWNjZXNzQ29udHJvbENvbmZpZ109XCJ1cGRhdGVBY2Nlc3NDb250cm9sQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvU2FmdHlQbGFuKHJvdy52aWN0aW1JZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1wZW5jaWxcIiA+PC9zcGFuPiZuYnNwO1NhZmV0eSBQbGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7XHJcblxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIiBjbGFzcz1cImV4YW1wbGUtaGVhZGVyLXJvd1wiPjwvbWF0LWhlYWRlci1yb3c+XHJcbiAgICAgICAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCIgY2xhc3M9XCJleGFtcGxlLXJvd1wiPjwvbWF0LXJvdz5cclxuICAgICAgICA8L21hdC10YWJsZT5cclxuICAgICAgICA8bWF0LXBhZ2luYXRvciAjcGFnaW5hdG9yIFtwYWdlU2l6ZV09XCIxMFwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzUsIDEwLCAyNSwgMTAwXVwiPjwvbWF0LXBhZ2luYXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8Yj57e21zZ319PC9iPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
@@ -0,0 +1,143 @@
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
2
|
+
export const SMART_OFFENDER_SERVICE_URL = new InjectionToken('smart offender service url');
|
3
|
+
export const SMART_LOOKUP_SERVICE_URL = new InjectionToken('smart lookup service url');
|
4
|
+
export const SMART_VICTIM_SERVICE_URL = new InjectionToken('smart victim service url');
|
5
|
+
export const SMART_WARRANT_URL = new InjectionToken('smart warrant web url');
|
6
|
+
export class VictimListFilter {
|
7
|
+
}
|
8
|
+
export class VictimAdvocate {
|
9
|
+
constructor(victimAdvocateId, lastName, firstName, prefixId, suffixId, addressId, noPhoneFlag, homePhone, workPhone, cellPhone, email, modifiedBy) {
|
10
|
+
this.victimAdvocateId = victimAdvocateId;
|
11
|
+
this.lastName = lastName;
|
12
|
+
this.firstName = firstName;
|
13
|
+
this.prefixId = prefixId;
|
14
|
+
this.suffixId = suffixId;
|
15
|
+
this.addressId = addressId;
|
16
|
+
this.noPhoneFlag = noPhoneFlag;
|
17
|
+
this.homePhone = homePhone;
|
18
|
+
this.workPhone = workPhone;
|
19
|
+
this.cellPhone = cellPhone;
|
20
|
+
this.email = email;
|
21
|
+
this.modifiedBy = modifiedBy;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
export class VictimWeaponUse {
|
25
|
+
constructor(
|
26
|
+
// public victimWeaponUseId: number,
|
27
|
+
victimId, weaponTypeId, otherWeapon, modifiedBy) {
|
28
|
+
this.victimId = victimId;
|
29
|
+
this.weaponTypeId = weaponTypeId;
|
30
|
+
this.otherWeapon = otherWeapon;
|
31
|
+
this.modifiedBy = modifiedBy;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
export class VictimDrugUse {
|
35
|
+
constructor(
|
36
|
+
//public victimDrugUseId: number,
|
37
|
+
victimId, drugTypeId, otherDrug, modifiedBy) {
|
38
|
+
this.victimId = victimId;
|
39
|
+
this.drugTypeId = drugTypeId;
|
40
|
+
this.otherDrug = otherDrug;
|
41
|
+
this.modifiedBy = modifiedBy;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
export class VictimSupport {
|
45
|
+
constructor(
|
46
|
+
// public victimSupportId: number,
|
47
|
+
victimId, victimSupportTypeId, modifiedBy) {
|
48
|
+
this.victimId = victimId;
|
49
|
+
this.victimSupportTypeId = victimSupportTypeId;
|
50
|
+
this.modifiedBy = modifiedBy;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
export class VictimRelationship {
|
54
|
+
constructor(victimId, victimOffenderRelationshipTypeId, modifiedBy) {
|
55
|
+
this.victimId = victimId;
|
56
|
+
this.victimOffenderRelationshipTypeId = victimOffenderRelationshipTypeId;
|
57
|
+
this.modifiedBy = modifiedBy;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
export class VictimGuardian {
|
61
|
+
constructor(victimGuardianId, lastName, firstName, prefixId, suffixId, birthDate, addressId, noPhoneFlag, homePhone, workPhone, cellPhone, email, modifiedBy) {
|
62
|
+
this.victimGuardianId = victimGuardianId;
|
63
|
+
this.lastName = lastName;
|
64
|
+
this.firstName = firstName;
|
65
|
+
this.prefixId = prefixId;
|
66
|
+
this.suffixId = suffixId;
|
67
|
+
this.birthDate = birthDate;
|
68
|
+
this.addressId = addressId;
|
69
|
+
this.noPhoneFlag = noPhoneFlag;
|
70
|
+
this.homePhone = homePhone;
|
71
|
+
this.workPhone = workPhone;
|
72
|
+
this.cellPhone = cellPhone;
|
73
|
+
this.email = email;
|
74
|
+
this.modifiedBy = modifiedBy;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
export class Victim {
|
78
|
+
constructor(victimId, offenderId, underSupervisionFlag,
|
79
|
+
//public victimOffenderRelationshipTypeId: string,
|
80
|
+
lastName, firstName, middleName, prefixId, suffixId, birthDate, genderCode, homePhone, workPhone, cellPhone, email, addressId, minorFlag, victimAdvocateFlag, guardianFirstName, guardianLastName, guardianPrefixId, guardianSuffixId, guardianNoPhoneFlag, guardianHomePhone, guardianWorkPhone, guardianCellPhone, guardianEmail, guardianAddressId, guardianBirthDate, advocateFirstName, advocateLastName, advocatePrefixId, advocateSuffixId, advocateNoPhoneFlag, advocateHomePhone, advocateWorkPhone, advocateCellPhone, advocateEmail, advocateAddressId, emergencyContact, emergencyContactPhone, commonChildrenFlag, commonChildrenNumber, cpoExpirationFlag, cpoExpirationDate, supportInPlaceFlag, weaponInvolvedFlag, drugUseFlag, alcoholUseFlag, accessRisk, modifiedBy,
|
81
|
+
//public relationship: string,
|
82
|
+
vVictimAdvocate, vVictimGuardian, victimSupports, victimOffenderRelationships, victimWeaponUses, victimDrugUses, allowCsosaContactFlag, liveWithOffenderFlag) {
|
83
|
+
this.victimId = victimId;
|
84
|
+
this.offenderId = offenderId;
|
85
|
+
this.underSupervisionFlag = underSupervisionFlag;
|
86
|
+
this.lastName = lastName;
|
87
|
+
this.firstName = firstName;
|
88
|
+
this.middleName = middleName;
|
89
|
+
this.prefixId = prefixId;
|
90
|
+
this.suffixId = suffixId;
|
91
|
+
this.birthDate = birthDate;
|
92
|
+
this.genderCode = genderCode;
|
93
|
+
this.homePhone = homePhone;
|
94
|
+
this.workPhone = workPhone;
|
95
|
+
this.cellPhone = cellPhone;
|
96
|
+
this.email = email;
|
97
|
+
this.addressId = addressId;
|
98
|
+
this.minorFlag = minorFlag;
|
99
|
+
this.victimAdvocateFlag = victimAdvocateFlag;
|
100
|
+
this.guardianFirstName = guardianFirstName;
|
101
|
+
this.guardianLastName = guardianLastName;
|
102
|
+
this.guardianPrefixId = guardianPrefixId;
|
103
|
+
this.guardianSuffixId = guardianSuffixId;
|
104
|
+
this.guardianNoPhoneFlag = guardianNoPhoneFlag;
|
105
|
+
this.guardianHomePhone = guardianHomePhone;
|
106
|
+
this.guardianWorkPhone = guardianWorkPhone;
|
107
|
+
this.guardianCellPhone = guardianCellPhone;
|
108
|
+
this.guardianEmail = guardianEmail;
|
109
|
+
this.guardianAddressId = guardianAddressId;
|
110
|
+
this.guardianBirthDate = guardianBirthDate;
|
111
|
+
this.advocateFirstName = advocateFirstName;
|
112
|
+
this.advocateLastName = advocateLastName;
|
113
|
+
this.advocatePrefixId = advocatePrefixId;
|
114
|
+
this.advocateSuffixId = advocateSuffixId;
|
115
|
+
this.advocateNoPhoneFlag = advocateNoPhoneFlag;
|
116
|
+
this.advocateHomePhone = advocateHomePhone;
|
117
|
+
this.advocateWorkPhone = advocateWorkPhone;
|
118
|
+
this.advocateCellPhone = advocateCellPhone;
|
119
|
+
this.advocateEmail = advocateEmail;
|
120
|
+
this.advocateAddressId = advocateAddressId;
|
121
|
+
this.emergencyContact = emergencyContact;
|
122
|
+
this.emergencyContactPhone = emergencyContactPhone;
|
123
|
+
this.commonChildrenFlag = commonChildrenFlag;
|
124
|
+
this.commonChildrenNumber = commonChildrenNumber;
|
125
|
+
this.cpoExpirationFlag = cpoExpirationFlag;
|
126
|
+
this.cpoExpirationDate = cpoExpirationDate;
|
127
|
+
this.supportInPlaceFlag = supportInPlaceFlag;
|
128
|
+
this.weaponInvolvedFlag = weaponInvolvedFlag;
|
129
|
+
this.drugUseFlag = drugUseFlag;
|
130
|
+
this.alcoholUseFlag = alcoholUseFlag;
|
131
|
+
this.accessRisk = accessRisk;
|
132
|
+
this.modifiedBy = modifiedBy;
|
133
|
+
this.vVictimAdvocate = vVictimAdvocate;
|
134
|
+
this.vVictimGuardian = vVictimGuardian;
|
135
|
+
this.victimSupports = victimSupports;
|
136
|
+
this.victimOffenderRelationships = victimOffenderRelationships;
|
137
|
+
this.victimWeaponUses = victimWeaponUses;
|
138
|
+
this.victimDrugUses = victimDrugUses;
|
139
|
+
this.allowCsosaContactFlag = allowCsosaContactFlag;
|
140
|
+
this.liveWithOffenderFlag = liveWithOffenderFlag;
|
141
|
+
}
|
142
|
+
}
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdjLXNtYXJ0LXZpY3RpbS9zcmMvbGliL3NtYXJ0LXZpY3RpbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUFTLDRCQUE0QixDQUFDLENBQUM7QUFDbkcsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQVMsMEJBQTBCLENBQUMsQ0FBQztBQUMvRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBUywwQkFBMEIsQ0FBQyxDQUFDO0FBQy9GLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFTLHVCQUF1QixDQUFDLENBQUM7QUFhckYsTUFBTSxPQUFPLGdCQUFnQjtDQVE1QjtBQUlELE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLFlBQW1CLGdCQUF3QixFQUVoQyxRQUFnQixFQUVoQixTQUFpQixFQUVqQixRQUFnQixFQUVoQixRQUFnQixFQUVoQixTQUFpQixFQUVqQixXQUFvQixFQUVwQixTQUFpQixFQUVqQixTQUFpQixFQUVqQixTQUFpQixFQUVqQixLQUFhLEVBRWIsVUFBa0I7UUF0QlYscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBRWhDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFFaEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUVqQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBRWhCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFFaEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUVqQixnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUVwQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBRWpCLGNBQVMsR0FBVCxTQUFTLENB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R0FBVixVQUFVLENBQVE7UUFHbEIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUUvQixtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFDL0IsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFzQjtRQUNqRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ25DLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUkvQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQVM7UUFDOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFTO0lBQ3BDLENBQUM7Q0FDUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IFNNQVJUX09GRkVOREVSX1NFUlZJQ0VfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ3NtYXJ0IG9mZmVuZGVyIHNlcnZpY2UgdXJsJyk7XHJcbmV4cG9ydCBjb25zdCBTTUFSVF9MT09LVVBfU0VSVklDRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignc21hcnQgbG9va3VwIHNlcnZpY2UgdXJsJyk7XHJcbmV4cG9ydCBjb25zdCBTTUFSVF9WSUNUSU1fU0VSVklDRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignc21hcnQgdmljdGltIHNlcnZpY2UgdXJsJyk7XHJcbmV4cG9ydCBjb25zdCBTTUFSVF9XQVJSQU5UX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdzbWFydCB3YXJyYW50IHdlYiB1cmwnKTtcclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRzVmljdGltIHtcclxuICAgIHZpY3RpbUlkOiBzdHJpbmc7XHJcbiAgICB2aWN0aW1UeXBlOiBzdHJpbmc7XHJcbiAgICB2aWN0aW1Qcm92aWRlcjogc3RyaW5nO1xyXG4gICAgdmljdGltUG9saWN5SG9sZGVyOiBzdHJpbmc7XHJcbiAgICBzdGFydERhdGU6IHN0cmluZztcclxuICAgIGVuZERhdGU6IHN0cmluZztcclxuICAgIGlzQWN0aXZlOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmljdGltTGlzdEZpbHRlciB7XHJcbiBcclxuICAgIG9mZmVuZGVySWQ6IG51bWJlcjtcclxuICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgIHBkaWQ6IHN0cmluZztcclxuICAgIGJpcnRoRGF0ZTogRGF0ZTtcclxuICBcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVmljdGltQWR2b2NhdGUge1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIHZpY3RpbUFkdm9jYXRlSWQ6IG51bWJlcixcclxuXHJcbiAgICAgICAgcHVibGljIGxhc3ROYW1lOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBmaXJzdE5hbWU6IHN0cmluZyxcclxuXHJcbiAgICAgICAgcHVibGljIHByZWZpeElkOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBzdWZmaXhJZDogc3RyaW5nLFxyXG5cclxuICAgICAgICBwdWJsaWMgYWRkcmVzc0lkOiBudW1iZXIsXHJcblxyXG4gICAgICAgIHB1YmxpYyBub1Bob25lRmxhZzogYm9vbGVhbixcclxuXHJcbiAgICAgICAgcHVibGljIGhvbWVQaG9uZTogc3RyaW5nLFxyXG5cclxuICAgICAgICBwdWJsaWMgd29ya1Bob25lOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBjZWxsUGhvbmU6IHN0cmluZyxcclxuXHJcbiAgICAgICAgcHVibGljIGVtYWlsOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBtb2RpZmllZEJ5OiBudW1iZXJcclxuXHJcbiAgICAgICBcclxuKSB7IH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBWaWN0aW1XZWFwb25Vc2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAvLyBwdWJsaWMgdmljdGltV2VhcG9uVXNlSWQ6IG51bWJlcixcclxuXHJcbiAgICAgICAgcHVibGljIHZpY3RpbUlkOiBudW1iZXIsXHJcblxyXG4gICAgICAgIHB1YmxpYyB3ZWFwb25UeXBlSWQ6IHN0cmluZyxcclxuXHJcbiAgICAgICAgcHVibGljIG90aGVyV2VhcG9uOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBtb2RpZmllZEJ5OiBudW1iZXJcclxuXHJcbiAgICAgICAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZpY3RpbURydWdVc2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy9wdWJsaWMgdmljdGltRHJ1Z1VzZUlkOiBudW1iZXIsXHJcblxyXG4gICAgICAgIHB1YmxpYyB2aWN0aW1JZDogbnVtYmVyLFxyXG5cclxuICAgICAgICBwdWJsaWMgZHJ1Z1R5cGVJZDogc3RyaW5nLFxyXG5cclxuICAgICAgICBwdWJsaWMgb3RoZXJEcnVnOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBtb2RpZmllZEJ5OiBudW1iZXJcclxuXHJcbiAgICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmljdGltU3VwcG9ydCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgIC8vIHB1YmxpYyB2aWN0aW1TdXBwb3J0SWQ6IG51bWJlcixcclxuXHJcbiAgICAgICAgcHVibGljIHZpY3RpbUlkOiBudW1iZXIsXHJcblxyXG4gICAgICAgIHB1YmxpYyB2aWN0aW1TdXBwb3J0VHlwZUlkOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBtb2RpZmllZEJ5OiBudW1iZXJcclxuXHJcbiAgICAgICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBWaWN0aW1SZWxhdGlvbnNoaXAge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHZpY3RpbUlkOiBudW1iZXIsXHJcblxyXG4gICAgICAgIHB1YmxpYyB2aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcFR5cGVJZDogc3RyaW5nLFxyXG5cclxuICAgICAgICBwdWJsaWMgbW9kaWZpZWRCeTogbnVtYmVyXHJcblxyXG4gICAgICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmljdGltR3VhcmRpYW4ge1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIHZpY3RpbUd1YXJkaWFuSWQ6IG51bWJlcixcclxuXHJcbiAgICAgICAgcHVibGljIGxhc3ROYW1lOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBmaXJzdE5hbWU6IHN0cmluZyxcclxuXHJcbiAgICAgICAgcHVibGljIHByZWZpeElkOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBzdWZmaXhJZDogc3RyaW5nLFxyXG5cclxuICAgICAgICBwdWJsaWMgYmlydGhEYXRlOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyBhZGRyZXNzSWQ6IG51bWJlcixcclxuXHJcbiAgICAgICAgcHVibGljIG5vUGhvbmVGbGFnOiBib29sZWFuLFxyXG5cclxuICAgICAgICBwdWJsaWMgaG9tZVBob25lOiBzdHJpbmcsXHJcblxyXG4gICAgICAgIHB1YmxpYyB3b3JrUGhvbmU6IHN0cmluZyxcclxuXHJcbiAgICAgICAgcHVibGljIGNlbGxQaG9uZTogc3RyaW5nLFxyXG5cclxuICAgICAgICBwdWJsaWMgZW1haWw6IHN0cmluZyxcclxuXHJcbiAgICAgICAgcHVibGljIG1vZGlmaWVkQnk6IG51bWJlclxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2FzZU5vdGUge1xyXG4gICAgdmljdGltSWQ6IG51bWJlcjtcclxuICAgIHZpY3RpbUNhc2VOb3RlSWQ6IG51bWJlcjtcclxuICAgIGNhc2VOb3RlRGF0ZTogRGF0ZTtcclxuICAgIGNvbnRhY3RUeXBlSWQ6IHN0cmluZztcclxuICAgIGNvbnRhY3RUeXBlOiBzdHJpbmc7XHJcbiAgICB2aWN0aW1Db250YWN0UHVycG9zZUlkOiBzdHJpbmc7XHJcbiAgICB2aWN0aW1Db250YWN0UHVycG9zZTogc3RyaW5nO1xyXG4gICAgY29tbWVudDogc3RyaW5nO1xyXG4gICAgbW9kaWZpZWRCeTogbnVtYmVyO1xyXG4gICAgdmljdGltRmlyc3ROYW1lOiBzdHJpbmc7XHJcbiAgICB2aWN0aW1MYXN0TmFtZTogc3RyaW5nO1xyXG4gIFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3Qge1xyXG4gICAgdmljdGltSWQ6IG51bWJlcjtcclxuICAgIHZpY3RpbUNvbnRhY3RJZDogbnVtYmVyO1xyXG4gICAgY29udGFjdERhdGU6IERhdGU7XHJcbiAgICB2aWN0aW1Db250YWN0TWV0aG9kSWQ6IHN0cmluZztcclxuICAgIGNvbnRhY3RNZXRob2Q6IHN0cmluZztcclxuICAgIGNvbnRhY3RlZEJ5OiBudW1iZXI7XHJcbiAgICBjb250YWN0ZWRCeU5hbWU6IHN0cmluZztcclxuICAgIG5leHRDb250YWN0RGF0ZTogRGF0ZTtcclxuICAgIGNvbW1lbnQ6IHN0cmluZztcclxuICAgIG1vZGlmaWVkQnk6IG51bWJlcjtcclxuXHJcbiAgXHJcbn1cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpY3RpbVNhZmV0eVBsYW4ge1xyXG4gICAgdmljdGltSWQ6IG51bWJlcjtcclxuICAgIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgICB2aWN0aW1TZXJ2aWNlSWQ6IG51bWJlcjtcclxuICAgIGdvYWw6c3RyaW5nO1xyXG4gICAgY29tbWVudDogc3RyaW5nO1xyXG4gICAgbW9kaWZpZWRCeTogbnVtYmVyO1xyXG4gICAgdmljdGltU2VydmljZVN0YXR1c0lkOiBzdHJpbmc7XHJcbiAgICBzdGF0dXM6IHN0cmluZztcclxuICAgIHN0YXJ0RGF0ZTogRGF0ZTtcclxuICAgIHZWaWN0aW1TZXJ2aWNlRGV0YWlsczogVmljdGltU2VydmljZURldGFpbFtdO1xyXG4gICAgdmljdGltTmFtZTogU3RyaW5nO1xyXG4gICAgXHJcbiAgXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmljdGltU2VydmljZURldGFpbHtcclxuICAgIHZpY3RpbVNlcnZpY2VJZDogbnVtYmVyO1xyXG4gICAgdmljdGltU2VydmljZURldGFpbElkOiBudW1iZXI7XHJcbiAgICB2aWN0aW1TZXJ2aWNlVHlwZUlkOiBzdHJpbmc7XHJcbiAgICB2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZDogc3RyaW5nO1xyXG4gICAgdmljdGltUHJvZ3JhbVByb3ZpZGVyOiBzdHJpbmc7XHJcbiAgICBtb2RpZmllZEJ5OiBudW1iZXI7XHJcblxyXG5cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5e1xyXG5cclxuICAgIHZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5SWQ6IG51bWJlcjtcclxuICAgIHZpY3RpbVNlcnZpY2VJZDogc3RyaW5nO1xyXG4gICAgdmljdGltU2VydmljZVN0YXR1c0lkOiBzdHJpbmc7XHJcbiAgICBzdGFydERhdGU6IERhdGU7XHJcbiAgICBjb21tZW50OiBzdHJpbmc7XHJcbiAgICBtb2RpZmllZEJ5OiBudW1iZXI7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlICBWaWN0aW1TZXJ2aWNlVHlwZVByb2dyYW1Qcm92aWRlck1vZGVsIHtcclxuICAgIHZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVySWQ6IG51bWJlcjsgXHJcbiAgICB2aWN0aW1TZXJ2aWNlVHlwZTogc3RyaW5nO1xyXG4gICAgdmljdGltUHJvZ3JhbVByb3ZpZGVySWQ6IHN0cmluZztcclxuICAgIHZpY3RpbVNlcnZpY2VUeXBlSWQ6c3RyaW5nO1xyXG4gICAgdmljdGltUHJvZ3JhbVByb3ZpZGVyOiBzdHJpbmc7XHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJMaXN0Q29sbGVjdGlvbk1vZGVse1xyXG4gICAgZ3JvdXBJZDpzdHJpbmc7XHJcbiAgICBpc0Rpc3BsYXk6Ym9vbGVhbjtcclxuICAgIGNvbGxlY3Rpb246VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJNb2RlbFtdO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIFByb3ZpZGVyc0RpYWxvZ0RhdGEge1xyXG4gICAgLy9pZXBBY3Rpb246IEllcEFjdGlvbjtcclxuICAgIHNlcnZpY2VUeXBlO1xyXG4gICAgc2VydmljZVR5cGVJZDtcclxuICAgIHByb3ZpZGVyQ29sbGVjdGlvbnM6IFtdO1xyXG4gIH1cclxuXHJcblxyXG4gIGV4cG9ydCBjbGFzcyBWaWN0aW0ge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHZpY3RpbUlkOiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIG9mZmVuZGVySWQ6IG51bWJlcixcclxuICAgICAgICBwdWJsaWMgdW5kZXJTdXBlcnZpc2lvbkZsYWc6IHN0cmluZyxcclxuICAgICAgICAvL3B1YmxpYyB2aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcFR5cGVJZDogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBsYXN0TmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBmaXJzdE5hbWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgbWlkZGxlTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBwcmVmaXhJZDogc3RyaW5nIHwgbnVsbCxcclxuICAgICAgICBwdWJsaWMgc3VmZml4SWQ6IHN0cmluZyB8IG51bGwsXHJcbiAgICAgICAgcHVibGljIGJpcnRoRGF0ZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBnZW5kZXJDb2RlOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGhvbWVQaG9uZTogc3RyaW5nIHwgbnVsbCxcclxuICAgICAgICBwdWJsaWMgd29ya1Bob25lOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgICAgIHB1YmxpYyBjZWxsUGhvbmU6IHN0cmluZyB8IG51bGwsXHJcbiAgICAgICAgcHVibGljIGVtYWlsOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGFkZHJlc3NJZDogbnVtYmVyLFxyXG4gICAgICAgIHB1YmxpYyBtaW5vckZsYWc6IGJvb2xlYW4sXHJcbiAgICAgICAgcHVibGljIHZpY3RpbUFkdm9jYXRlRmxhZzogc3RyaW5nLFxyXG5cclxuICAgICAgICBwdWJsaWMgZ3VhcmRpYW5GaXJzdE5hbWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgZ3VhcmRpYW5MYXN0TmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBndWFyZGlhblByZWZpeElkOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGd1YXJkaWFuU3VmZml4SWQ6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgZ3VhcmRpYW5Ob1Bob25lRmxhZzogYm9vbGVhbixcclxuICAgICAgICBwdWJsaWMgZ3VhcmRpYW5Ib21lUGhvbmU6IHN0cmluZyB8IG51bGwsXHJcbiAgICAgICAgcHVibGljIGd1YXJkaWFuV29ya1Bob25lOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgICAgIHB1YmxpYyBndWFyZGlhbkNlbGxQaG9uZTogc3RyaW5nIHwgbnVsbCxcclxuICAgICAgICBwdWJsaWMgZ3VhcmRpYW5FbWFpbDogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBndWFyZGlhbkFkZHJlc3NJZDogbnVtYmVyLFxyXG4gICAgICAgIHB1YmxpYyBndWFyZGlhbkJpcnRoRGF0ZTogc3RyaW5nLFxyXG5cclxuICAgICAgICBwdWJsaWMgYWR2b2NhdGVGaXJzdE5hbWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgYWR2b2NhdGVMYXN0TmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBhZHZvY2F0ZVByZWZpeElkOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGFkdm9jYXRlU3VmZml4SWQ6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgYWR2b2NhdGVOb1Bob25lRmxhZzogYm9vbGVhbixcclxuICAgICAgICBwdWJsaWMgYWR2b2NhdGVIb21lUGhvbmU6IHN0cmluZyB8IG51bGwsXHJcbiAgICAgICAgcHVibGljIGFkdm9jYXRlV29ya1Bob25lOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgICAgIHB1YmxpYyBhZHZvY2F0ZUNlbGxQaG9uZTogc3RyaW5nIHwgbnVsbCxcclxuICAgICAgICBwdWJsaWMgYWR2b2NhdGVFbWFpbDogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBhZHZvY2F0ZUFkZHJlc3NJZDogbnVtYmVyLFxyXG5cclxuICAgICAgICBwdWJsaWMgZW1lcmdlbmN5Q29udGFjdDogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBlbWVyZ2VuY3lDb250YWN0UGhvbmU6IHN0cmluZyB8IG51bGwsXHJcbiAgICAgICAgcHVibGljIGNvbW1vbkNoaWxkcmVuRmxhZzogYm9vbGVhbixcclxuICAgICAgICBwdWJsaWMgY29tbW9uQ2hpbGRyZW5OdW1iZXI6IG51bWJlcixcclxuICAgICAgICBwdWJsaWMgY3BvRXhwaXJhdGlvbkZsYWc6IGJvb2xlYW4sXHJcbiAgICAgICAgcHVibGljIGNwb0V4cGlyYXRpb25EYXRlOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIHN1cHBvcnRJblBsYWNlRmxhZzogYm9vbGVhbixcclxuICAgICAgICBwdWJsaWMgd2VhcG9uSW52b2x2ZWRGbGFnOiBib29sZWFuLFxyXG4gICAgICAgIHB1YmxpYyBkcnVnVXNlRmxhZzogYm9vbGVhbixcclxuICAgICAgICBwdWJsaWMgYWxjb2hvbFVzZUZsYWc6IGJvb2xlYW4sXHJcbiAgICAgICAgcHVibGljIGFjY2Vzc1Jpc2s6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgbW9kaWZpZWRCeTogbnVtYmVyLFxyXG4gICAgICAgIC8vcHVibGljIHJlbGF0aW9uc2hpcDogc3RyaW5nLFxyXG4gICAgICAgIFxyXG4gICAgICAgIHB1YmxpYyB2VmljdGltQWR2b2NhdGU6IFZpY3RpbUFkdm9jYXRlLFxyXG4gICAgICAgIHB1YmxpYyB2VmljdGltR3VhcmRpYW46IFZpY3RpbUd1YXJkaWFuLFxyXG4gICAgICAgIFxyXG4gICAgICAgIHB1YmxpYyB2aWN0aW1TdXBwb3J0czogVmljdGltU3VwcG9ydFtdLFxyXG4gICAgICAgIHB1YmxpYyB2aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcHM6IFZpY3RpbVJlbGF0aW9uc2hpcFtdLFxyXG4gICAgICAgIHB1YmxpYyB2aWN0aW1XZWFwb25Vc2VzOiBWaWN0aW1XZWFwb25Vc2VbXSxcclxuICAgICAgICBwdWJsaWMgdmljdGltRHJ1Z1VzZXM6IFZpY3RpbURydWdVc2VbXSxcclxuXHJcbiAgICAgXHJcblxyXG4gICAgICAgIHB1YmxpYyBhbGxvd0Nzb3NhQ29udGFjdEZsYWc6IGJvb2xlYW4sXHJcbiAgICAgICAgcHVibGljIGxpdmVXaXRoT2ZmZW5kZXJGbGFnOiBib29sZWFuXHJcbiAgICApIHsgfVxyXG59XHJcblxyXG4iXX0=
|