@csmart/ngc-smart-victim 0.1.5 → 1.13.0
Sign up to get free protection for your applications and to get access to all the features.
- package/csmart-ngc-smart-victim.d.ts +1 -15
- package/esm2020/csmart-ngc-smart-victim.mjs +5 -0
- package/esm2020/lib/caseNote/caseNote.component.mjs +185 -0
- package/esm2020/lib/common-dialog/common-dialog.component.mjs +23 -0
- package/esm2020/lib/common-dialog/common-dialog.module.mjs +38 -0
- package/esm2020/lib/common-dialog/common-dialog.service.mjs +33 -0
- package/esm2020/lib/contact/contact.component.mjs +140 -0
- package/esm2020/lib/intake.service.mjs +57 -0
- package/esm2020/lib/safetyPlan/serviceProvider.component.mjs +115 -0
- package/esm2020/lib/safetyPlan/victimSafetyPlan.component.mjs +116 -0
- package/esm2020/lib/safetyPlan/victimSafetyPlanDetail.component.mjs +340 -0
- package/esm2020/lib/shared/app.shared.module.mjs +213 -0
- package/esm2020/lib/shared/directives/phone-mask.directive.mjs +114 -0
- package/esm2020/lib/shared/validators/date.validator.mjs +59 -0
- package/esm2020/lib/shared/validators/index.mjs +2 -0
- package/esm2020/lib/smart-victim-delete-confirm.component.mjs +53 -0
- package/esm2020/lib/smart-victim-detail/smart-victim-detail.component.mjs +958 -0
- package/esm2020/lib/smart-victim.component.mjs +310 -0
- package/esm2020/lib/smart-victim.model.mjs +132 -0
- package/esm2020/lib/smart-victim.module.mjs +138 -0
- package/esm2020/lib/smart-victim.service.mjs +347 -0
- package/esm2020/lib/victim-routing.module.mjs +42 -0
- package/esm2020/lib/victimSearch/VictimSearchFilter.mjs +3 -0
- package/esm2020/lib/victimSearch/victimSearchForm.component.mjs +38 -0
- package/esm2020/public-api.mjs +12 -0
- package/fesm2015/csmart-ngc-smart-victim.mjs +3221 -0
- package/fesm2015/csmart-ngc-smart-victim.mjs.map +1 -0
- package/fesm2020/csmart-ngc-smart-victim.mjs +3210 -0
- package/fesm2020/csmart-ngc-smart-victim.mjs.map +1 -0
- package/lib/caseNote/caseNote.component.d.ts +6 -2
- package/lib/common-dialog/common-dialog.component.d.ts +4 -1
- package/lib/common-dialog/common-dialog.module.d.ts +6 -0
- package/lib/common-dialog/common-dialog.service.d.ts +4 -1
- package/lib/contact/contact.component.d.ts +4 -1
- package/lib/intake.service.d.ts +3 -0
- package/lib/safetyPlan/serviceProvider.component.d.ts +4 -1
- package/lib/safetyPlan/victimSafetyPlan.component.d.ts +7 -2
- package/lib/safetyPlan/victimSafetyPlanDetail.component.d.ts +7 -2
- package/lib/shared/app.shared.module.d.ts +30 -0
- package/lib/shared/directives/phone-mask.directive.d.ts +5 -2
- package/lib/smart-victim-delete-confirm.component.d.ts +3 -0
- package/lib/smart-victim-detail/smart-victim-detail.component.d.ts +9 -4
- package/lib/smart-victim.component.d.ts +8 -3
- package/lib/smart-victim.module.d.ts +47 -0
- package/lib/smart-victim.service.d.ts +3 -0
- package/lib/victim-routing.module.d.ts +5 -0
- package/lib/victimSearch/victimSearchForm.component.d.ts +3 -0
- package/package.json +28 -18
- package/public-api.d.ts +4 -0
- package/bundles/csmart-ngc-smart-victim.umd.js +0 -6426
- package/bundles/csmart-ngc-smart-victim.umd.js.map +0 -1
- package/bundles/csmart-ngc-smart-victim.umd.min.js +0 -16
- package/bundles/csmart-ngc-smart-victim.umd.min.js.map +0 -1
- package/csmart-ngc-smart-victim.metadata.json +0 -1
- package/esm2015/csmart-ngc-smart-victim.js +0 -25
- package/esm2015/lib/caseNote/caseNote.component.js +0 -349
- package/esm2015/lib/common-dialog/common-dialog.component.js +0 -46
- package/esm2015/lib/common-dialog/common-dialog.module.js +0 -32
- package/esm2015/lib/common-dialog/common-dialog.service.js +0 -63
- package/esm2015/lib/contact/contact.component.js +0 -228
- package/esm2015/lib/intake.service.js +0 -183
- package/esm2015/lib/safetyPlan/serviceProvider.component.js +0 -130
- package/esm2015/lib/safetyPlan/victimSafetyPlan.component.js +0 -257
- package/esm2015/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -556
- package/esm2015/lib/shared/app.shared.module.js +0 -81
- package/esm2015/lib/shared/directives/phone-mask.directive.js +0 -168
- package/esm2015/lib/shared/validators/date.validator.js +0 -108
- package/esm2015/lib/shared/validators/index.js +0 -7
- package/esm2015/lib/smart-victim-delete-confirm.component.js +0 -61
- package/esm2015/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1405
- package/esm2015/lib/smart-victim.component.js +0 -476
- package/esm2015/lib/smart-victim.model.js +0 -631
- package/esm2015/lib/smart-victim.module.js +0 -84
- package/esm2015/lib/smart-victim.service.js +0 -792
- package/esm2015/lib/victim-routing.module.js +0 -40
- package/esm2015/lib/victimSearch/VictimSearchFilter.js +0 -20
- package/esm2015/lib/victimSearch/victimSearchForm.component.js +0 -59
- package/esm2015/public-api.js +0 -13
- package/esm5/csmart-ngc-smart-victim.js +0 -25
- package/esm5/lib/caseNote/caseNote.component.js +0 -372
- package/esm5/lib/common-dialog/common-dialog.component.js +0 -48
- package/esm5/lib/common-dialog/common-dialog.module.js +0 -36
- package/esm5/lib/common-dialog/common-dialog.service.js +0 -75
- package/esm5/lib/contact/contact.component.js +0 -281
- package/esm5/lib/intake.service.js +0 -194
- package/esm5/lib/safetyPlan/serviceProvider.component.js +0 -99
- package/esm5/lib/safetyPlan/victimSafetyPlan.component.js +0 -306
- package/esm5/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -628
- package/esm5/lib/shared/app.shared.module.js +0 -85
- package/esm5/lib/shared/directives/phone-mask.directive.js +0 -184
- package/esm5/lib/shared/validators/date.validator.js +0 -108
- package/esm5/lib/shared/validators/index.js +0 -7
- package/esm5/lib/smart-victim-delete-confirm.component.js +0 -51
- package/esm5/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1497
- package/esm5/lib/smart-victim.component.js +0 -528
- package/esm5/lib/smart-victim.model.js +0 -541
- package/esm5/lib/smart-victim.module.js +0 -84
- package/esm5/lib/smart-victim.service.js +0 -1063
- package/esm5/lib/victim-routing.module.js +0 -44
- package/esm5/lib/victimSearch/VictimSearchFilter.js +0 -24
- package/esm5/lib/victimSearch/victimSearchForm.component.js +0 -70
- package/esm5/public-api.js +0 -13
- package/fesm2015/csmart-ngc-smart-victim.js +0 -5682
- package/fesm2015/csmart-ngc-smart-victim.js.map +0 -1
- package/fesm5/csmart-ngc-smart-victim.js +0 -6203
- package/fesm5/csmart-ngc-smart-victim.js.map +0 -1
@@ -1,1405 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview added by tsickle
|
3
|
-
* Generated from: lib/smart-victim-detail/smart-victim-detail.component.ts
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
5
|
-
*/
|
6
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
7
|
-
import { FormBuilder, FormControl, Validators } from '@angular/forms';
|
8
|
-
import { MatDialog, MatSnackBar, MatInput, MatSelect, MatRadioGroup } from '@angular/material';
|
9
|
-
import { NgcSmartVictimService } from '../smart-victim.service';
|
10
|
-
import { Router, ActivatedRoute } from '@angular/router';
|
11
|
-
import { CommonDialogService } from '.././common-dialog/common-dialog.service';
|
12
|
-
import { DatePipe, Location } from '@angular/common';
|
13
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
14
|
-
import { MatTableDataSource } from '@angular/material/table';
|
15
|
-
/**
|
16
|
-
* @record
|
17
|
-
*/
|
18
|
-
export function BooleanFn() { }
|
19
|
-
/**
|
20
|
-
* @record
|
21
|
-
*/
|
22
|
-
export function StringFn() { }
|
23
|
-
/**
|
24
|
-
* @param {?} predicate
|
25
|
-
* @param {?} validator
|
26
|
-
* @param {?=} errorNamespace
|
27
|
-
* @return {?}
|
28
|
-
*/
|
29
|
-
export function conditionalValidator(predicate, validator, errorNamespace) {
|
30
|
-
return ((/**
|
31
|
-
* @param {?} formControl
|
32
|
-
* @return {?}
|
33
|
-
*/
|
34
|
-
formControl => {
|
35
|
-
if (!formControl.parent) {
|
36
|
-
return null;
|
37
|
-
}
|
38
|
-
/** @type {?} */
|
39
|
-
let error = null;
|
40
|
-
if (predicate()) {
|
41
|
-
error = validator(formControl);
|
42
|
-
}
|
43
|
-
if (errorNamespace && error) {
|
44
|
-
/** @type {?} */
|
45
|
-
const customError = {};
|
46
|
-
customError[errorNamespace] = error;
|
47
|
-
error = customError;
|
48
|
-
}
|
49
|
-
return error;
|
50
|
-
}));
|
51
|
-
}
|
52
|
-
/**
|
53
|
-
* @param {?} predicate
|
54
|
-
* @param {?} validator
|
55
|
-
* @param {?=} errorNamespace
|
56
|
-
* @return {?}
|
57
|
-
*/
|
58
|
-
export function stringConditionalValidator(predicate, validator, errorNamespace) {
|
59
|
-
return ((/**
|
60
|
-
* @param {?} formControl
|
61
|
-
* @return {?}
|
62
|
-
*/
|
63
|
-
formControl => {
|
64
|
-
if (!formControl.parent) {
|
65
|
-
return null;
|
66
|
-
}
|
67
|
-
/** @type {?} */
|
68
|
-
let error = null;
|
69
|
-
if (predicate() == 'YS') {
|
70
|
-
error = validator(formControl);
|
71
|
-
}
|
72
|
-
if (errorNamespace && error) {
|
73
|
-
/** @type {?} */
|
74
|
-
const customError = {};
|
75
|
-
customError[errorNamespace] = error;
|
76
|
-
error = customError;
|
77
|
-
}
|
78
|
-
return error;
|
79
|
-
}));
|
80
|
-
}
|
81
|
-
export class SmartVictimDetailComponent {
|
82
|
-
/**
|
83
|
-
* @param {?} location
|
84
|
-
* @param {?} formBuilder
|
85
|
-
* @param {?} dialog
|
86
|
-
* @param {?} route
|
87
|
-
* @param {?} router
|
88
|
-
* @param {?} snackBar
|
89
|
-
* @param {?} commonDialogService
|
90
|
-
* @param {?} victimService
|
91
|
-
*/
|
92
|
-
constructor(location, formBuilder, dialog, route, router, snackBar, commonDialogService, victimService) {
|
93
|
-
this.location = location;
|
94
|
-
this.formBuilder = formBuilder;
|
95
|
-
this.dialog = dialog;
|
96
|
-
this.route = route;
|
97
|
-
this.router = router;
|
98
|
-
this.snackBar = snackBar;
|
99
|
-
this.commonDialogService = commonDialogService;
|
100
|
-
this.victimService = victimService;
|
101
|
-
this.victimDetail = (/** @type {?} */ ({}));
|
102
|
-
this.onSave = new EventEmitter();
|
103
|
-
this.onCancel = new EventEmitter();
|
104
|
-
this.hidden = true;
|
105
|
-
this.victimAdvocate = (/** @type {?} */ ({}));
|
106
|
-
this.victimGuardian = (/** @type {?} */ ({}));
|
107
|
-
this.guardianTabFlag = false;
|
108
|
-
this.advocateTabFlag = false;
|
109
|
-
this.commonChildrenDivFlag = false;
|
110
|
-
this.cpoExpirationDivFlag = false;
|
111
|
-
this.supportInPlaceDivFlag = false;
|
112
|
-
this.weaponInvolvedDivFlag = false;
|
113
|
-
this.drugUseDivFlag = false;
|
114
|
-
this.showDelete = false;
|
115
|
-
this.addressId = 0;
|
116
|
-
this.advocateAddressId = 0;
|
117
|
-
this.guardianAddressId = 0;
|
118
|
-
this.datePipe = new DatePipe('en-US');
|
119
|
-
this.emailPattern = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$";
|
120
|
-
this.phoneNumber = "\\d{10}";
|
121
|
-
this.editVictim = (/** @type {?} */ ({}));
|
122
|
-
this.otherWeaponFlag = false;
|
123
|
-
this.otherDrugFlag = false;
|
124
|
-
this.contactDataSource = new MatTableDataSource();
|
125
|
-
this.guardianPhoneExistFlag = false;
|
126
|
-
this.advocatePhoneExistFlag = false;
|
127
|
-
this.phoneValidationFlag = false;
|
128
|
-
this.guaridanNoPhoneChkFlag = true;
|
129
|
-
this.advocateNoPhoneChkFlag = true;
|
130
|
-
this.addressValidators = {
|
131
|
-
street: [],
|
132
|
-
street2: [],
|
133
|
-
city: [],
|
134
|
-
stateCode: [],
|
135
|
-
zipCode: [],
|
136
|
-
psaCode: [],
|
137
|
-
};
|
138
|
-
this.initForm();
|
139
|
-
}
|
140
|
-
/**
|
141
|
-
* @private
|
142
|
-
* @return {?}
|
143
|
-
*/
|
144
|
-
initForm() {
|
145
|
-
this.victimForm = this.formBuilder.group({
|
146
|
-
underSupervisionFlag: new FormControl('', Validators.compose([Validators.required])),
|
147
|
-
victimOffenderRelationshipTypeId: new FormControl('', Validators.compose([Validators.required])),
|
148
|
-
lastName: new FormControl('', Validators.compose([Validators.required])),
|
149
|
-
firstName: new FormControl('', Validators.compose([Validators.required])),
|
150
|
-
middleName: new FormControl(''),
|
151
|
-
prefixId: new FormControl(''),
|
152
|
-
suffixId: new FormControl(''),
|
153
|
-
genderCode: new FormControl(''),
|
154
|
-
birthDate: new FormControl(''),
|
155
|
-
homePhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
156
|
-
cellPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
157
|
-
workPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
158
|
-
email: new FormControl('', Validators.compose([Validators.pattern(this.emailPattern)])),
|
159
|
-
minorFlag: new FormControl('', Validators.compose([Validators.required])),
|
160
|
-
victimAdvocateFlag: new FormControl('', Validators.compose([Validators.required])),
|
161
|
-
guardianLastName: new FormControl(''),
|
162
|
-
guardianFirstName: new FormControl(''),
|
163
|
-
guardianPrefixId: new FormControl(''),
|
164
|
-
guardianSuffixId: new FormControl(''),
|
165
|
-
//guardianGender:new FormControl('', ),
|
166
|
-
guardianBirthDate: new FormControl(''),
|
167
|
-
guardianNoPhoneFlag: new FormControl(true),
|
168
|
-
guardianHomePhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
169
|
-
guardianCellPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
170
|
-
guardianWorkPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
171
|
-
guardianEmail: new FormControl('', Validators.compose([Validators.pattern(this.emailPattern)])),
|
172
|
-
advocateNoPhoneFlag: new FormControl(true),
|
173
|
-
advocateWorkPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
174
|
-
advocateHomePhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
175
|
-
advocateCellPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
176
|
-
advocateSuffixId: new FormControl(''),
|
177
|
-
advocatePrefixId: new FormControl(''),
|
178
|
-
advocateFirstName: new FormControl('', stringConditionalValidator((/**
|
179
|
-
* @return {?}
|
180
|
-
*/
|
181
|
-
() => this.victimForm.get('victimAdvocateFlag').value), Validators.required, 'illuminatiError')),
|
182
|
-
advocateLastName: new FormControl('', stringConditionalValidator((/**
|
183
|
-
* @return {?}
|
184
|
-
*/
|
185
|
-
() => this.victimForm.get('victimAdvocateFlag').value), Validators.required, 'illuminatiError')),
|
186
|
-
advocateEmail: new FormControl('', Validators.compose([Validators.pattern(this.emailPattern)])),
|
187
|
-
emergencyContact: new FormControl(''),
|
188
|
-
emergencyContactPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
189
|
-
emergencyChildren: new FormControl(''),
|
190
|
-
emergencyCpo: new FormControl(''),
|
191
|
-
emergencyDrug: new FormControl(''),
|
192
|
-
emergencySupport: new FormControl(''),
|
193
|
-
emergencyWeapon: new FormControl(''),
|
194
|
-
drug: new FormControl(''),
|
195
|
-
weapon: new FormControl(''),
|
196
|
-
support: new FormControl(''),
|
197
|
-
commonChildrenFlag: new FormControl(''),
|
198
|
-
commonChildrenNumber: new FormControl(''),
|
199
|
-
cpoExpirationFlag: new FormControl(''),
|
200
|
-
cpoExpirationDate: new FormControl(''),
|
201
|
-
accessRisk: new FormControl(''),
|
202
|
-
drugUseFlag: new FormControl(''),
|
203
|
-
supportInPlaceFlag: new FormControl(''),
|
204
|
-
weaponInvolvedFlag: new FormControl(''),
|
205
|
-
otherWeapon: new FormControl(''),
|
206
|
-
otherDrug: new FormControl(''),
|
207
|
-
alcoholUseFlag: new FormControl(''),
|
208
|
-
victimSupports: new FormControl(''),
|
209
|
-
victimWeaponUses: new FormControl(''),
|
210
|
-
victimDrugUses: new FormControl(''),
|
211
|
-
allowCsosaContactFlag: new FormControl(''),
|
212
|
-
});
|
213
|
-
this.victimForm.markAsPristine();
|
214
|
-
this.victimForm.markAsUntouched();
|
215
|
-
}
|
216
|
-
/**
|
217
|
-
* @private
|
218
|
-
* @return {?}
|
219
|
-
*/
|
220
|
-
_getVictim() {
|
221
|
-
if (this.victimId === 0) {
|
222
|
-
return;
|
223
|
-
}
|
224
|
-
;
|
225
|
-
if (this.editMode == true) {
|
226
|
-
console.log('find victim id inside getVictim');
|
227
|
-
console.log(this.victimId);
|
228
|
-
if (this.victimId === undefined) {
|
229
|
-
this.sub = this.route.params.subscribe((/**
|
230
|
-
* @param {?} params
|
231
|
-
* @return {?}
|
232
|
-
*/
|
233
|
-
params => {
|
234
|
-
this.victimId = params['victimId'];
|
235
|
-
console.log('my this.victimId');
|
236
|
-
console.log(this.victimId);
|
237
|
-
}));
|
238
|
-
}
|
239
|
-
this.victimService.getVictim(this.victimId)
|
240
|
-
.subscribe((/**
|
241
|
-
* @param {?} victim
|
242
|
-
* @return {?}
|
243
|
-
*/
|
244
|
-
(victim) => {
|
245
|
-
console.log('victim data 1');
|
246
|
-
console.log(victim);
|
247
|
-
this.editVictim = (/** @type {?} */ (victim));
|
248
|
-
/** @type {?} */
|
249
|
-
var supportsData = [];
|
250
|
-
this.editVictim.victimSupports.forEach((/**
|
251
|
-
* @param {?} t
|
252
|
-
* @return {?}
|
253
|
-
*/
|
254
|
-
t => { supportsData.push(t.victimSupportTypeId); }));
|
255
|
-
/** @type {?} */
|
256
|
-
const victimSupportsControl = this.victimForm.get('victimSupports');
|
257
|
-
victimSupportsControl.setValue(supportsData);
|
258
|
-
/** @type {?} */
|
259
|
-
var weaponUsesData = [];
|
260
|
-
/** @type {?} */
|
261
|
-
var otherWeapon = "";
|
262
|
-
this.editVictim.victimWeaponUses.forEach((/**
|
263
|
-
* @param {?} t
|
264
|
-
* @return {?}
|
265
|
-
*/
|
266
|
-
t => {
|
267
|
-
weaponUsesData.push(t.weaponTypeId);
|
268
|
-
if (t.weaponTypeId == "OTHER") {
|
269
|
-
otherWeapon = t.otherWeapon;
|
270
|
-
this.otherWeaponFlag = true;
|
271
|
-
}
|
272
|
-
}));
|
273
|
-
/** @type {?} */
|
274
|
-
const victimWeaponUsesControl = this.victimForm.get('victimWeaponUses');
|
275
|
-
victimWeaponUsesControl.setValue(weaponUsesData);
|
276
|
-
/** @type {?} */
|
277
|
-
const otherWeaponControl = this.victimForm.get('otherWeapon');
|
278
|
-
otherWeaponControl.setValue(otherWeapon);
|
279
|
-
//this.weaponUsesData = this.editVictim.victimWeaponUses;
|
280
|
-
/** @type {?} */
|
281
|
-
var drugUseData = [];
|
282
|
-
/** @type {?} */
|
283
|
-
var otherDrug = "";
|
284
|
-
console.log('load this.editVictim.victimDrugUses');
|
285
|
-
console.log(this.editVictim.victimDrugUses);
|
286
|
-
this.editVictim.victimDrugUses.forEach((/**
|
287
|
-
* @param {?} t
|
288
|
-
* @return {?}
|
289
|
-
*/
|
290
|
-
t => {
|
291
|
-
if (t.drugTypeId === null) {
|
292
|
-
otherDrug = t.otherDrug;
|
293
|
-
this.otherDrugFlag = true;
|
294
|
-
t.drugTypeId = 'OTHER';
|
295
|
-
}
|
296
|
-
drugUseData.push(t.drugTypeId);
|
297
|
-
}));
|
298
|
-
console.log('this.editVictim.victimDrugUses after push');
|
299
|
-
console.log(drugUseData);
|
300
|
-
/** @type {?} */
|
301
|
-
const victimDrugUsesControl = this.victimForm.get('victimDrugUses');
|
302
|
-
victimDrugUsesControl.setValue(drugUseData);
|
303
|
-
/** @type {?} */
|
304
|
-
const otherDrugControl = this.victimForm.get('otherDrug');
|
305
|
-
otherDrugControl.setValue(otherDrug);
|
306
|
-
//contact
|
307
|
-
this.victimService.getContacts(this.victimId).subscribe((/**
|
308
|
-
* @param {?} contactList
|
309
|
-
* @return {?}
|
310
|
-
*/
|
311
|
-
contactList => {
|
312
|
-
console.log('contactList');
|
313
|
-
console.log(contactList);
|
314
|
-
this.contactList = contactList;
|
315
|
-
this.contactDataSource.data = this.contactList;
|
316
|
-
}));
|
317
|
-
//no phone field
|
318
|
-
if (this.editVictim.guardianNoPhoneFlag === false) {
|
319
|
-
this.victimForm.patchValue({ guardianNoPhoneFlag: false });
|
320
|
-
}
|
321
|
-
if (this.editVictim.advocateNoPhoneFlag === false) {
|
322
|
-
this.victimForm.patchValue({ advocateNoPhoneFlag: false });
|
323
|
-
}
|
324
|
-
}), (/**
|
325
|
-
* @param {?} error
|
326
|
-
* @return {?}
|
327
|
-
*/
|
328
|
-
error => {
|
329
|
-
this.snackBar.open("Error occured while retriving Victim Information. Please try again.");
|
330
|
-
}));
|
331
|
-
return;
|
332
|
-
}
|
333
|
-
else {
|
334
|
-
//new
|
335
|
-
}
|
336
|
-
}
|
337
|
-
/**
|
338
|
-
* @return {?}
|
339
|
-
*/
|
340
|
-
ngOnChanges() {
|
341
|
-
}
|
342
|
-
/**
|
343
|
-
* @param {?} addressId
|
344
|
-
* @return {?}
|
345
|
-
*/
|
346
|
-
onAddressChange(addressId) {
|
347
|
-
this.victimForm.patchValue({ addressId: addressId });
|
348
|
-
this.addressId = addressId;
|
349
|
-
}
|
350
|
-
/**
|
351
|
-
* @param {?} MyGuardianAddressId
|
352
|
-
* @return {?}
|
353
|
-
*/
|
354
|
-
onGuardianAddressChange(MyGuardianAddressId) {
|
355
|
-
this.victimForm.patchValue({ guardianAddressId: MyGuardianAddressId });
|
356
|
-
this.guardianAddressId = MyGuardianAddressId;
|
357
|
-
}
|
358
|
-
/**
|
359
|
-
* @param {?} MyAdvocateAddressId
|
360
|
-
* @return {?}
|
361
|
-
*/
|
362
|
-
onAdvocateAddressChange(MyAdvocateAddressId) {
|
363
|
-
this.victimForm.patchValue({ advocateAddressId: MyAdvocateAddressId });
|
364
|
-
this.advocateAddressId = MyAdvocateAddressId;
|
365
|
-
}
|
366
|
-
/**
|
367
|
-
* @return {?}
|
368
|
-
*/
|
369
|
-
cancel() {
|
370
|
-
this.victimForm.reset();
|
371
|
-
}
|
372
|
-
/**
|
373
|
-
* @return {?}
|
374
|
-
*/
|
375
|
-
ngOnInit() {
|
376
|
-
console.log('show offenderId');
|
377
|
-
console.log(this.offenderId);
|
378
|
-
console.log('show staffId');
|
379
|
-
console.log(this.staffId);
|
380
|
-
console.log('show isIntake');
|
381
|
-
console.log(this.isIntake);
|
382
|
-
//this.victimDetail.guardianNoPhoneFlag = true;
|
383
|
-
//this.victimForm.value.guardianNoPhoneFlag = true;
|
384
|
-
//this.victimForm.get('guardianNoPhoneFlag').setValue(true);
|
385
|
-
//required field
|
386
|
-
/** @type {?} */
|
387
|
-
const requiredImplementation = { get: (/**
|
388
|
-
* @return {?}
|
389
|
-
*/
|
390
|
-
function () {
|
391
|
-
if (this._required) {
|
392
|
-
return this._required;
|
393
|
-
}
|
394
|
-
if (this.ngControl && this.ngControl.control && this.ngControl.control.validator) {
|
395
|
-
/** @type {?} */
|
396
|
-
const emptyValueControl = Object.assign({}, this.ngControl.control);
|
397
|
-
((/** @type {?} */ (emptyValueControl))).value = null;
|
398
|
-
return ('required' in (this.ngControl.control.validator(emptyValueControl) || {}));
|
399
|
-
}
|
400
|
-
return false;
|
401
|
-
}), set: (/**
|
402
|
-
* @param {?} value
|
403
|
-
* @return {?}
|
404
|
-
*/
|
405
|
-
function (value) { this._required = coerceBooleanProperty(value); }), };
|
406
|
-
Object.defineProperty(MatInput.prototype, 'required', requiredImplementation);
|
407
|
-
Object.defineProperty(MatSelect.prototype, 'required', requiredImplementation);
|
408
|
-
Object.defineProperty(MatRadioGroup.prototype, 'required', requiredImplementation);
|
409
|
-
//required field end
|
410
|
-
if (this.victimDetail != null) {
|
411
|
-
// edit record
|
412
|
-
this.editMode = true;
|
413
|
-
this.showDelete = true;
|
414
|
-
this.victimId = this.victimDetail.victimId;
|
415
|
-
this.guardianTabFlag = this.victimDetail.minorFlag;
|
416
|
-
if (this.victimDetail.victimAdvocateFlag == 'YS') {
|
417
|
-
this.advocateTabFlag = true;
|
418
|
-
}
|
419
|
-
if (this.otherWeaponFlag == true) {
|
420
|
-
/** @type {?} */
|
421
|
-
const otherWeaponControl = this.victimForm.get('otherWeapon');
|
422
|
-
otherWeaponControl.setValidators(Validators.required);
|
423
|
-
}
|
424
|
-
if (this.otherDrugFlag == true) {
|
425
|
-
/** @type {?} */
|
426
|
-
const otherDrugControl = this.victimForm.get('otherDrug');
|
427
|
-
otherDrugControl.setValidators(Validators.required);
|
428
|
-
}
|
429
|
-
this.cpoExpirationDivFlag = this.victimDetail.cpoExpirationFlag;
|
430
|
-
this.commonChildrenDivFlag = this.victimDetail.commonChildrenFlag;
|
431
|
-
this.supportInPlaceDivFlag = this.victimDetail.supportInPlaceFlag;
|
432
|
-
this.weaponInvolvedDivFlag = this.victimDetail.weaponInvolvedFlag;
|
433
|
-
this.drugUseDivFlag = this.victimDetail.drugUseFlag;
|
434
|
-
this.addressId = this.victimDetail.addressId;
|
435
|
-
this.guardianAddressId = this.victimDetail.guardianAddressId;
|
436
|
-
this.advocateAddressId = this.victimDetail.advocateAddressId;
|
437
|
-
this._getVictim();
|
438
|
-
}
|
439
|
-
else {
|
440
|
-
//add new record
|
441
|
-
this.victimForm.patchValue({ guardianNoPhoneFlag: true });
|
442
|
-
this.victimForm.patchValue({ advocateNoPhoneFlag: true });
|
443
|
-
}
|
444
|
-
this.victimService.getFlagOptionYesNoUnknowns().subscribe((/**
|
445
|
-
* @param {?} items
|
446
|
-
* @return {?}
|
447
|
-
*/
|
448
|
-
(items) => {
|
449
|
-
this.flagOption = items;
|
450
|
-
}));
|
451
|
-
this.victimService.getGenders().subscribe((/**
|
452
|
-
* @param {?} items
|
453
|
-
* @return {?}
|
454
|
-
*/
|
455
|
-
(items) => {
|
456
|
-
this.genders = items;
|
457
|
-
}));
|
458
|
-
this.victimService.getPrefixes().subscribe((/**
|
459
|
-
* @param {?} items
|
460
|
-
* @return {?}
|
461
|
-
*/
|
462
|
-
(items) => {
|
463
|
-
this.prefixes = items;
|
464
|
-
}));
|
465
|
-
this.victimService.getSuffixes().subscribe((/**
|
466
|
-
* @param {?} items
|
467
|
-
* @return {?}
|
468
|
-
*/
|
469
|
-
(items) => {
|
470
|
-
this.suffixes = items;
|
471
|
-
}));
|
472
|
-
this.victimService.getRelationshipTypes().subscribe((/**
|
473
|
-
* @param {?} items
|
474
|
-
* @return {?}
|
475
|
-
*/
|
476
|
-
(items) => {
|
477
|
-
this.relationshipTypes = items.filter((/**
|
478
|
-
* @param {?} y
|
479
|
-
* @return {?}
|
480
|
-
*/
|
481
|
-
(y) => (y.relationshipCategoryId === 'ST' || y.relationshipCategoryId === 'FM')));
|
482
|
-
}));
|
483
|
-
this.victimService.getSupportTypes().subscribe((/**
|
484
|
-
* @param {?} items
|
485
|
-
* @return {?}
|
486
|
-
*/
|
487
|
-
(items) => {
|
488
|
-
this.victimSupportTypes = items;
|
489
|
-
}));
|
490
|
-
this.victimService.getWeaponTypes().subscribe((/**
|
491
|
-
* @param {?} items
|
492
|
-
* @return {?}
|
493
|
-
*/
|
494
|
-
(items) => {
|
495
|
-
this.weaponTypes = items;
|
496
|
-
}));
|
497
|
-
this.victimService.getDrugsTypes().subscribe((/**
|
498
|
-
* @param {?} items
|
499
|
-
* @return {?}
|
500
|
-
*/
|
501
|
-
(items) => {
|
502
|
-
console.log('drug lookup items');
|
503
|
-
console.log(items);
|
504
|
-
this.drugs = items;
|
505
|
-
this.drugs.push({ drugTypeId: 'OTHER', name: 'Other' });
|
506
|
-
console.log(this.drugs);
|
507
|
-
}));
|
508
|
-
// this.victimService.getDocketList(this.offenderId).subscribe(
|
509
|
-
// (items: any) => {
|
510
|
-
// this.docketlist = items;
|
511
|
-
// }
|
512
|
-
// );
|
513
|
-
this.victimForm.get('minorFlag').valueChanges
|
514
|
-
.subscribe((/**
|
515
|
-
* @param {?} value
|
516
|
-
* @return {?}
|
517
|
-
*/
|
518
|
-
value => {
|
519
|
-
// this.victimForm.get('guardianFirstName').updateValueAndValidity();
|
520
|
-
// this.victimForm.get('guardianLastName').updateValueAndValidity();
|
521
|
-
this.victimForm.get('guardianWorkPhone').updateValueAndValidity();
|
522
|
-
this.victimForm.get('guardianHomePhone').updateValueAndValidity();
|
523
|
-
this.victimForm.get('guardianCellPhone').updateValueAndValidity();
|
524
|
-
}));
|
525
|
-
this.victimForm.get('victimAdvocateFlag').valueChanges
|
526
|
-
.subscribe((/**
|
527
|
-
* @param {?} value
|
528
|
-
* @return {?}
|
529
|
-
*/
|
530
|
-
value => {
|
531
|
-
this.victimForm.get('advocateFirstName').updateValueAndValidity();
|
532
|
-
this.victimForm.get('advocateLastName').updateValueAndValidity();
|
533
|
-
this.victimForm.get('advocateWorkPhone').updateValueAndValidity();
|
534
|
-
this.victimForm.get('advocateHomePhone').updateValueAndValidity();
|
535
|
-
this.victimForm.get('advocateCellPhone').updateValueAndValidity();
|
536
|
-
}));
|
537
|
-
}
|
538
|
-
/**
|
539
|
-
* @return {?}
|
540
|
-
*/
|
541
|
-
back() {
|
542
|
-
this.onSave.emit(this.victimDetail);
|
543
|
-
}
|
544
|
-
/**
|
545
|
-
* @return {?}
|
546
|
-
*/
|
547
|
-
deleteVictim() {
|
548
|
-
this.commonDialogService
|
549
|
-
.confirm('', 'Do you want to delete this Victim?', 'Yes', 'No')
|
550
|
-
.subscribe((/**
|
551
|
-
* @param {?} res
|
552
|
-
* @return {?}
|
553
|
-
*/
|
554
|
-
res => {
|
555
|
-
this.result = res;
|
556
|
-
if (this.result) {
|
557
|
-
this.victimService.deleteVictims(this.victimDetail.victimId)
|
558
|
-
.subscribe((/**
|
559
|
-
* @param {?} result
|
560
|
-
* @return {?}
|
561
|
-
*/
|
562
|
-
result => {
|
563
|
-
this.snackBar.open('Delete Successfully!', '', {
|
564
|
-
duration: 3000,
|
565
|
-
});
|
566
|
-
}));
|
567
|
-
// this.router.navigate(['victim']);
|
568
|
-
this.onSave.emit(this.victimDetail);
|
569
|
-
}
|
570
|
-
}));
|
571
|
-
}
|
572
|
-
/**
|
573
|
-
* @param {?} $event
|
574
|
-
* @return {?}
|
575
|
-
*/
|
576
|
-
radioMinorChange($event) {
|
577
|
-
// const guardianLastNameControl = this.victimForm.get('guardianLastName');
|
578
|
-
//const guardianFirstNameControl = this.victimForm.get('guardianFirstName');
|
579
|
-
if ($event.value === true) {
|
580
|
-
this.guardianTabFlag = true;
|
581
|
-
// guardianLastNameControl.setValidators(Validators.required);
|
582
|
-
// guardianFirstNameControl.setValidators(Validators.required);
|
583
|
-
//this.victimForm.value.guardianNoPhoneFlag = true;
|
584
|
-
}
|
585
|
-
else {
|
586
|
-
this.guardianTabFlag = false;
|
587
|
-
// guardianLastNameControl.clearValidators();
|
588
|
-
// guardianFirstNameControl.clearValidators();
|
589
|
-
}
|
590
|
-
//guardianLastNameControl.updateValueAndValidity();
|
591
|
-
// guardianFirstNameControl.updateValueAndValidity();
|
592
|
-
}
|
593
|
-
/**
|
594
|
-
* @param {?} $event
|
595
|
-
* @return {?}
|
596
|
-
*/
|
597
|
-
radioAdvocateChange($event) {
|
598
|
-
/** @type {?} */
|
599
|
-
const advocateLastNameControl = this.victimForm.get('advocateLastName');
|
600
|
-
/** @type {?} */
|
601
|
-
const advocateFirstNameControl = this.victimForm.get('advocateFirstName');
|
602
|
-
// const advocateNoPhoneControl = this.victimForm.get('advocateNoPhoneFlag');
|
603
|
-
if ($event.value === "YS") {
|
604
|
-
this.advocateTabFlag = true;
|
605
|
-
advocateLastNameControl.setValidators(Validators.required);
|
606
|
-
advocateFirstNameControl.setValidators(Validators.required);
|
607
|
-
}
|
608
|
-
else {
|
609
|
-
this.advocateTabFlag = false;
|
610
|
-
advocateLastNameControl.clearValidators();
|
611
|
-
advocateFirstNameControl.clearValidators();
|
612
|
-
}
|
613
|
-
advocateLastNameControl.updateValueAndValidity();
|
614
|
-
advocateFirstNameControl.updateValueAndValidity();
|
615
|
-
}
|
616
|
-
/**
|
617
|
-
* @param {?} $event
|
618
|
-
* @return {?}
|
619
|
-
*/
|
620
|
-
radioCicChange($event) {
|
621
|
-
if ($event.value === true) {
|
622
|
-
this.commonChildrenDivFlag = true;
|
623
|
-
// requrie field
|
624
|
-
this.setValidators('commonChildren');
|
625
|
-
}
|
626
|
-
else {
|
627
|
-
this.commonChildrenDivFlag = false;
|
628
|
-
}
|
629
|
-
}
|
630
|
-
/**
|
631
|
-
* @param {?} type
|
632
|
-
* @return {?}
|
633
|
-
*/
|
634
|
-
setValidators(type) {
|
635
|
-
if (type == 'commonChildren') {
|
636
|
-
this.victimForm.get('commonChildrenNumber').clearValidators();
|
637
|
-
this.victimForm.get('commonChildrenNumber').setValidators(Validators.required);
|
638
|
-
}
|
639
|
-
else if (type == 'cpo') {
|
640
|
-
this.victimForm.get('cpoExpirationDate').clearValidators();
|
641
|
-
this.victimForm.get('cpoExpirationDate').setValidators(Validators.required);
|
642
|
-
}
|
643
|
-
}
|
644
|
-
/**
|
645
|
-
* @param {?} $event
|
646
|
-
* @return {?}
|
647
|
-
*/
|
648
|
-
radioSupportChange($event) {
|
649
|
-
if ($event.value === true) {
|
650
|
-
this.supportInPlaceDivFlag = true;
|
651
|
-
}
|
652
|
-
else {
|
653
|
-
this.supportInPlaceDivFlag = false;
|
654
|
-
}
|
655
|
-
}
|
656
|
-
/**
|
657
|
-
* @param {?} $event
|
658
|
-
* @return {?}
|
659
|
-
*/
|
660
|
-
radioWeaponChange($event) {
|
661
|
-
if ($event.value === true) {
|
662
|
-
this.weaponInvolvedDivFlag = true;
|
663
|
-
}
|
664
|
-
else {
|
665
|
-
this.weaponInvolvedDivFlag = false;
|
666
|
-
}
|
667
|
-
}
|
668
|
-
/**
|
669
|
-
* @param {?} $event
|
670
|
-
* @return {?}
|
671
|
-
*/
|
672
|
-
radioDrugChange($event) {
|
673
|
-
if ($event.value === true) {
|
674
|
-
this.drugUseDivFlag = true;
|
675
|
-
}
|
676
|
-
else {
|
677
|
-
this.drugUseDivFlag = false;
|
678
|
-
}
|
679
|
-
}
|
680
|
-
/**
|
681
|
-
* @param {?} $event
|
682
|
-
* @return {?}
|
683
|
-
*/
|
684
|
-
radioCpoChange($event) {
|
685
|
-
if ($event.value === true) {
|
686
|
-
this.cpoExpirationDivFlag = true;
|
687
|
-
this.setValidators('cpo');
|
688
|
-
}
|
689
|
-
else {
|
690
|
-
this.cpoExpirationDivFlag = false;
|
691
|
-
}
|
692
|
-
}
|
693
|
-
/**
|
694
|
-
* @param {?} $event
|
695
|
-
* @return {?}
|
696
|
-
*/
|
697
|
-
handleDOBChange($event) {
|
698
|
-
/** @type {?} */
|
699
|
-
var ageDifMs = Date.now() - $event.value;
|
700
|
-
/** @type {?} */
|
701
|
-
var ageDate = new Date(ageDifMs);
|
702
|
-
if (Math.abs(ageDate.getUTCFullYear() - 1970) <= 18) {
|
703
|
-
this.snackBar.open('Victim is a Minor. This information is a sensitive and should not be disclosed to any unauthorized parties. Contact the legal guardian.', '', {
|
704
|
-
duration: 6000,
|
705
|
-
});
|
706
|
-
/** @type {?} */
|
707
|
-
const minorControl = this.victimForm.get('minorFlag');
|
708
|
-
minorControl.setValue(true);
|
709
|
-
// const guardianLastNameControl = this.victimForm.get('guardianLastName');
|
710
|
-
// const guardianFirstNameControl = this.victimForm.get('guardianFirstName');
|
711
|
-
this.guardianTabFlag = true;
|
712
|
-
// guardianLastNameControl.setValidators(Validators.required);
|
713
|
-
// guardianFirstNameControl.setValidators(Validators.required);
|
714
|
-
}
|
715
|
-
}
|
716
|
-
/**
|
717
|
-
* @param {?} WeaponUse
|
718
|
-
* @return {?}
|
719
|
-
*/
|
720
|
-
checkOtherWeapon(WeaponUse) {
|
721
|
-
/** @type {?} */
|
722
|
-
const otherWeaponControl = this.victimForm.get('otherWeapon');
|
723
|
-
if (WeaponUse.includes("OTHER")) {
|
724
|
-
this.otherWeaponFlag = true;
|
725
|
-
otherWeaponControl.setValidators(Validators.required);
|
726
|
-
}
|
727
|
-
else {
|
728
|
-
this.otherWeaponFlag = false;
|
729
|
-
otherWeaponControl.clearValidators();
|
730
|
-
}
|
731
|
-
otherWeaponControl.updateValueAndValidity();
|
732
|
-
}
|
733
|
-
/**
|
734
|
-
* @param {?} DrugUse
|
735
|
-
* @return {?}
|
736
|
-
*/
|
737
|
-
checkOtherDrug(DrugUse) {
|
738
|
-
/** @type {?} */
|
739
|
-
const otherDrugControl = this.victimForm.get('otherDrug');
|
740
|
-
if (DrugUse.includes("OTHER")) {
|
741
|
-
this.otherDrugFlag = true;
|
742
|
-
otherDrugControl.setValidators(Validators.required);
|
743
|
-
}
|
744
|
-
else {
|
745
|
-
this.otherDrugFlag = false;
|
746
|
-
otherDrugControl.clearValidators();
|
747
|
-
}
|
748
|
-
otherDrugControl.updateValueAndValidity();
|
749
|
-
}
|
750
|
-
//#region "save victim"
|
751
|
-
/**
|
752
|
-
* @return {?}
|
753
|
-
*/
|
754
|
-
saveVictim() {
|
755
|
-
//var myPath = this.router.url.slice(-10)
|
756
|
-
//guardian phone logic
|
757
|
-
if (!this.victimForm.value.guardianNoPhoneFlag) {
|
758
|
-
if (this.victimForm.value.guardianHomePhone) {
|
759
|
-
if (this.victimForm.value.guardianHomePhone !== null) {
|
760
|
-
if (this.victimForm.value.guardianHomePhone !== "") {
|
761
|
-
this.guardianPhoneExistFlag = true;
|
762
|
-
}
|
763
|
-
}
|
764
|
-
}
|
765
|
-
if (this.victimForm.value.guardianWorkPhone !== undefined) {
|
766
|
-
if (this.victimForm.value.guardianWorkPhone !== null) {
|
767
|
-
if (this.victimForm.value.guardianWorkPhone !== "") {
|
768
|
-
this.guardianPhoneExistFlag = true;
|
769
|
-
}
|
770
|
-
}
|
771
|
-
}
|
772
|
-
if (this.victimForm.value.guardianCellPhone) {
|
773
|
-
if (this.victimForm.value.guardianCellPhone !== null) {
|
774
|
-
if (this.victimForm.value.guardianCellhone !== "") {
|
775
|
-
this.guardianPhoneExistFlag = true;
|
776
|
-
}
|
777
|
-
}
|
778
|
-
}
|
779
|
-
}
|
780
|
-
console.log('this.victimForm.value.guardianNoPhoneFlag');
|
781
|
-
console.log(this.victimForm.value.guardianNoPhoneFlag);
|
782
|
-
console.log('this.guardianPhoneExistFlag');
|
783
|
-
console.log(this.guardianPhoneExistFlag);
|
784
|
-
if (this.guardianPhoneExistFlag === false && this.victimForm.value.guardianNoPhoneFlag === false) {
|
785
|
-
this.phoneValidationFlag = true;
|
786
|
-
this.commonDialogService
|
787
|
-
.warning('', 'Please check the guardian phone field. You have to fill one of the three phone fileds.', 'Ok')
|
788
|
-
.subscribe((/**
|
789
|
-
* @param {?} res
|
790
|
-
* @return {?}
|
791
|
-
*/
|
792
|
-
res => {
|
793
|
-
this.result = res;
|
794
|
-
}));
|
795
|
-
}
|
796
|
-
console.log('this.phoneValidationFlag');
|
797
|
-
console.log(this.phoneValidationFlag);
|
798
|
-
//advocate phone logic
|
799
|
-
if (!this.victimForm.value.advocateNoPhoneFlag) {
|
800
|
-
if (this.victimForm.value.advocateHomePhone) {
|
801
|
-
if (this.victimForm.value.advocateHomePhone !== null) {
|
802
|
-
if (this.victimForm.value.advocateHomePhone !== "") {
|
803
|
-
this.advocatePhoneExistFlag = true;
|
804
|
-
}
|
805
|
-
}
|
806
|
-
}
|
807
|
-
if (this.victimForm.value.advocateWorkPhone !== undefined) {
|
808
|
-
if (this.victimForm.value.advocateWorkPhone !== null) {
|
809
|
-
if (this.victimForm.value.advocateWorkPhone !== "") {
|
810
|
-
this.advocatePhoneExistFlag = true;
|
811
|
-
}
|
812
|
-
}
|
813
|
-
}
|
814
|
-
if (this.victimForm.value.advocateCellPhone) {
|
815
|
-
if (this.victimForm.value.advocateCellPhone !== null) {
|
816
|
-
if (this.victimForm.value.advocateCellhone !== "") {
|
817
|
-
this.advocatePhoneExistFlag = true;
|
818
|
-
}
|
819
|
-
}
|
820
|
-
}
|
821
|
-
}
|
822
|
-
console.log('this.victimForm.value.advocateNoPhoneFlag');
|
823
|
-
console.log(this.victimForm.value.advocateNoPhoneFlag);
|
824
|
-
console.log('this.advocatePhoneExistFlag');
|
825
|
-
console.log(this.advocatePhoneExistFlag);
|
826
|
-
if (this.advocatePhoneExistFlag === false && this.victimForm.value.advocateNoPhoneFlag === false) {
|
827
|
-
this.phoneValidationFlag = true;
|
828
|
-
this.commonDialogService
|
829
|
-
.warning('', 'Please check the advocate phone field. You have to fill one of the three phone fileds.', 'Ok')
|
830
|
-
.subscribe((/**
|
831
|
-
* @param {?} res
|
832
|
-
* @return {?}
|
833
|
-
*/
|
834
|
-
res => {
|
835
|
-
this.result = res;
|
836
|
-
}));
|
837
|
-
}
|
838
|
-
console.log('this.phoneValidationFlag 1');
|
839
|
-
console.log(this.phoneValidationFlag);
|
840
|
-
if (this.phoneValidationFlag === false) {
|
841
|
-
if (this.victimDetail === null) {
|
842
|
-
//insert new victim
|
843
|
-
/** @type {?} */
|
844
|
-
var myVictimSupports = [];
|
845
|
-
if (this.victimForm.value.victimSupports) {
|
846
|
-
this.victimForm.value.victimSupports.forEach((/**
|
847
|
-
* @param {?} element
|
848
|
-
* @return {?}
|
849
|
-
*/
|
850
|
-
element => {
|
851
|
-
/** @type {?} */
|
852
|
-
const victimSupport = (/** @type {?} */ ({}));
|
853
|
-
victimSupport.victimId = this.victimForm.value.victimId;
|
854
|
-
victimSupport.victimSupportTypeId = element;
|
855
|
-
victimSupport.modifiedBy = this.staffId;
|
856
|
-
myVictimSupports.push(victimSupport);
|
857
|
-
}));
|
858
|
-
}
|
859
|
-
/** @type {?} */
|
860
|
-
var myVictimDrugUses = [];
|
861
|
-
console.log('this.victimForm.value.victimDrugUses during save');
|
862
|
-
console.log(this.victimForm.value.victimDrugUses);
|
863
|
-
if (this.victimForm.value.victimDrugUses) {
|
864
|
-
this.victimForm.value.victimDrugUses.forEach((/**
|
865
|
-
* @param {?} element
|
866
|
-
* @return {?}
|
867
|
-
*/
|
868
|
-
element => {
|
869
|
-
/** @type {?} */
|
870
|
-
const victimDrugUse = (/** @type {?} */ ({}));
|
871
|
-
victimDrugUse.drugTypeId = element;
|
872
|
-
if (element === "OTHER" || element === "" || element === null) {
|
873
|
-
victimDrugUse.drugTypeId = null;
|
874
|
-
victimDrugUse.otherDrug = this.victimForm.value.otherDrug;
|
875
|
-
}
|
876
|
-
else {
|
877
|
-
victimDrugUse.drugTypeId = element;
|
878
|
-
victimDrugUse.otherDrug = null;
|
879
|
-
}
|
880
|
-
victimDrugUse.modifiedBy = this.staffId;
|
881
|
-
victimDrugUse.victimId = this.victimForm.value.victimId;
|
882
|
-
myVictimDrugUses.push(victimDrugUse);
|
883
|
-
}));
|
884
|
-
}
|
885
|
-
console.log('this.victimForm.value.victimDrugUses during save 1');
|
886
|
-
console.log(this.victimForm.value.victimDrugUses);
|
887
|
-
/** @type {?} */
|
888
|
-
var myVictimWeaponUses = [];
|
889
|
-
if (this.victimForm.value.victimWeaponUses) {
|
890
|
-
this.victimForm.value.victimWeaponUses.forEach((/**
|
891
|
-
* @param {?} element
|
892
|
-
* @return {?}
|
893
|
-
*/
|
894
|
-
element => {
|
895
|
-
/** @type {?} */
|
896
|
-
const victimWeaponUse = (/** @type {?} */ ({}));
|
897
|
-
victimWeaponUse.victimId = this.victimForm.value.victimId;
|
898
|
-
victimWeaponUse.weaponTypeId = element;
|
899
|
-
if (element == "OTHER") {
|
900
|
-
victimWeaponUse.otherWeapon = this.victimForm.value.otherWeapon;
|
901
|
-
}
|
902
|
-
else {
|
903
|
-
victimWeaponUse.otherWeapon = null;
|
904
|
-
}
|
905
|
-
victimWeaponUse.modifiedBy = this.staffId;
|
906
|
-
myVictimWeaponUses.push(victimWeaponUse);
|
907
|
-
}));
|
908
|
-
}
|
909
|
-
/** @type {?} */
|
910
|
-
const newVictim = {
|
911
|
-
victimId: 0,
|
912
|
-
offenderId: this.offenderId,
|
913
|
-
victimOffenderRelationshipTypeId: this.victimForm.value.victimOffenderRelationshipTypeId,
|
914
|
-
lastName: this.victimForm.value.lastName,
|
915
|
-
firstName: this.victimForm.value.firstName,
|
916
|
-
middleName: this.victimForm.value.middleName ? this.victimForm.value.middleName : null,
|
917
|
-
prefixId: this.victimForm.value.prefixId ? this.victimForm.value.prefixId : null,
|
918
|
-
suffixId: this.victimForm.value.suffixId ? this.victimForm.value.suffixId : null,
|
919
|
-
birthDate: this.victimForm.value.birthDate ? this.victimForm.value.birthDate : null,
|
920
|
-
genderCode: this.victimForm.value.genderCode ? this.victimForm.value.genderCode : null,
|
921
|
-
underSupervisionFlag: this.victimForm.value.underSupervisionFlag,
|
922
|
-
minorFlag: this.victimForm.value.minorFlag,
|
923
|
-
victimAdvocateFlag: this.victimForm.value.victimAdvocateFlag,
|
924
|
-
homePhone: this.victimForm.value.homePhone ? this.victimForm.value.homePhone : null,
|
925
|
-
workPhone: this.victimForm.value.workPhone ? this.victimForm.value.workPhone : null,
|
926
|
-
cellPhone: this.victimForm.value.cellPhone ? this.victimForm.value.cellPhone : null,
|
927
|
-
email: this.victimForm.value.email ? this.victimForm.value.email : null,
|
928
|
-
addressId: this.victimForm.value.addressId ? this.victimForm.value.addressId : 1,
|
929
|
-
emergencyContact: this.victimForm.value.emergencyContact ? this.victimForm.value.emergencyContact : null,
|
930
|
-
emergencyContactPhone: this.victimForm.value.emergencyContactPhone ? this.victimForm.value.emergencyContactPhone : null,
|
931
|
-
commonChildrenFlag: this.victimForm.value.commonChildrenFlag,
|
932
|
-
commonChildrenNumber: this.victimForm.value.commonChildrenNumber,
|
933
|
-
cpoExpirationFlag: this.victimForm.value.cpoExpirationFlag,
|
934
|
-
cpoExpirationDate: this.victimForm.value.cpoExpirationDate ? this.datePipe.transform(this.victimForm.value.startDate, 'short') : null,
|
935
|
-
supportInPlaceFlag: this.victimForm.value.supportInPlaceFlag,
|
936
|
-
weaponInvolvedFlag: this.victimForm.value.weaponInvolvedFlag,
|
937
|
-
drugUseFlag: this.victimForm.value.drugUseFlag,
|
938
|
-
alcoholUseFlag: this.victimForm.value.alcoholUseFlag,
|
939
|
-
accessRisk: this.victimForm.value.accessRisk,
|
940
|
-
modifiedBy: this.staffId,
|
941
|
-
vVictimAdvocate: null,
|
942
|
-
vVictimGuardian: null,
|
943
|
-
victimDrugUses: myVictimDrugUses,
|
944
|
-
victimSupports: myVictimSupports,
|
945
|
-
victimWeaponUses: myVictimWeaponUses,
|
946
|
-
advocateFirstName: null,
|
947
|
-
advocateLastName: null,
|
948
|
-
advocateEmail: null,
|
949
|
-
advocatePrefixId: null,
|
950
|
-
advocateSuffixId: null,
|
951
|
-
advocateNoPhoneFlag: null,
|
952
|
-
advocateHomePhone: null,
|
953
|
-
advocateWorkPhone: null,
|
954
|
-
advocateCellPhone: null,
|
955
|
-
advocateAddressId: null,
|
956
|
-
guardianFirstName: null,
|
957
|
-
guardianLastName: null,
|
958
|
-
guardianEmail: null,
|
959
|
-
guardianPrefixId: null,
|
960
|
-
guardianSuffixId: null,
|
961
|
-
guardianNoPhoneFlag: null,
|
962
|
-
guardianHomePhone: null,
|
963
|
-
guardianWorkPhone: null,
|
964
|
-
guardianCellPhone: null,
|
965
|
-
guardianAddressId: null,
|
966
|
-
guardianBirthDate: null,
|
967
|
-
relationship: null,
|
968
|
-
allowCsosaContactFlag: null
|
969
|
-
};
|
970
|
-
if (this.addressId == 0) {
|
971
|
-
newVictim.addressId = null;
|
972
|
-
}
|
973
|
-
else {
|
974
|
-
newVictim.addressId = this.addressId;
|
975
|
-
}
|
976
|
-
newVictim.advocateAddressId = this.advocateAddressId;
|
977
|
-
newVictim.guardianAddressId = this.guardianAddressId;
|
978
|
-
console.log('newVictim');
|
979
|
-
console.log(newVictim);
|
980
|
-
this.victimService.postVictims(newVictim).subscribe((/**
|
981
|
-
* @param {?} items
|
982
|
-
* @return {?}
|
983
|
-
*/
|
984
|
-
(items) => {
|
985
|
-
/** @type {?} */
|
986
|
-
const id = items ? items.victimId : '';
|
987
|
-
if (this.victimForm.value.victimAdvocateFlag == "YS") {
|
988
|
-
console.log('add advocate');
|
989
|
-
/** @type {?} */
|
990
|
-
const victimAdvocate = {
|
991
|
-
victimAdvocateId: id,
|
992
|
-
lastName: this.victimForm.value.advocateLastName,
|
993
|
-
firstName: this.victimForm.value.advocateFirstName,
|
994
|
-
prefixId: this.victimForm.value.advocatePrefixId,
|
995
|
-
suffixId: this.victimForm.value.advocateSuffixId,
|
996
|
-
addressId: this.advocateAddressId ? this.advocateAddressId : null,
|
997
|
-
noPhoneFlag: this.victimForm.value.advocateNoPhoneFlag ? this.victimForm.value.advocateNoPhoneFlag : null,
|
998
|
-
homePhone: this.victimForm.value.advocateHomePhone,
|
999
|
-
workPhone: this.victimForm.value.advocateWorkPhone,
|
1000
|
-
cellPhone: this.victimForm.value.advocateCellPhone,
|
1001
|
-
email: this.victimForm.value.advocateEmail,
|
1002
|
-
modifiedBy: this.staffId
|
1003
|
-
};
|
1004
|
-
this.victimService.postVictimAdvocate(id, victimAdvocate).subscribe();
|
1005
|
-
}
|
1006
|
-
if (this.victimForm.value.minorFlag == true) {
|
1007
|
-
/** @type {?} */
|
1008
|
-
const victimGuardian = {
|
1009
|
-
victimGuardianId: id,
|
1010
|
-
lastName: this.victimForm.value.guardianLastName,
|
1011
|
-
firstName: this.victimForm.value.guardianFirstName,
|
1012
|
-
prefixId: this.victimForm.value.guardianPrefixId,
|
1013
|
-
suffixId: this.victimForm.value.guardianSuffixId,
|
1014
|
-
birthDate: this.victimForm.value.guardianBirthDate,
|
1015
|
-
addressId: this.guardianAddressId ? this.guardianAddressId : null,
|
1016
|
-
noPhoneFlag: this.victimForm.value.guardianNoPhoneFlag ? this.victimForm.value.guardianNoPhoneFlag : null,
|
1017
|
-
homePhone: this.victimForm.value.guardianHomePhone,
|
1018
|
-
workPhone: this.victimForm.value.guardianWorkPhone,
|
1019
|
-
cellPhone: this.victimForm.value.guardianCellPhone,
|
1020
|
-
email: this.victimForm.value.guardianEmail,
|
1021
|
-
modifiedBy: this.staffId
|
1022
|
-
};
|
1023
|
-
this.victimService.postVictimGuardian(id, victimGuardian).subscribe();
|
1024
|
-
}
|
1025
|
-
this.snackBar.open('Add Victim Successfully!', '', {
|
1026
|
-
duration: 3000,
|
1027
|
-
});
|
1028
|
-
//insert new
|
1029
|
-
if (this.isIntake === true) {
|
1030
|
-
this.router.navigate(['victimHome']);
|
1031
|
-
}
|
1032
|
-
else {
|
1033
|
-
this.router.navigate(['victimList']);
|
1034
|
-
}
|
1035
|
-
//this.onSave.emit(this.victimDetail);
|
1036
|
-
}));
|
1037
|
-
}
|
1038
|
-
else {
|
1039
|
-
//update victim
|
1040
|
-
console.log(' this.victimForm.value.victimOffenderRelationshipTypeId');
|
1041
|
-
console.log(this.victimForm.value.victimOffenderRelationshipTypeId);
|
1042
|
-
this.victimDetail.underSupervisionFlag = this.victimForm.value.underSupervisionFlag;
|
1043
|
-
this.victimDetail.victimOffenderRelationshipTypeId = this.victimForm.value.victimOffenderRelationshipTypeId;
|
1044
|
-
this.victimDetail.lastName = this.victimForm.value.lastName;
|
1045
|
-
this.victimDetail.firstName = this.victimForm.value.firstName;
|
1046
|
-
this.victimDetail.middleName = this.victimForm.value.middleName;
|
1047
|
-
this.victimDetail.prefixId = this.victimForm.value.prefixId ? this.victimForm.value.prefixId : null;
|
1048
|
-
this.victimDetail.suffixId = this.victimForm.value.suffixId ? this.victimForm.value.suffixId : null;
|
1049
|
-
this.victimDetail.birthDate = this.victimForm.value.birthDate;
|
1050
|
-
this.victimDetail.genderCode = this.victimForm.value.genderCode;
|
1051
|
-
this.victimDetail.minorFlag = this.victimForm.value.minorFlag;
|
1052
|
-
this.victimDetail.homePhone = this.victimForm.value.homePhone ? this.victimForm.value.homePhone : null;
|
1053
|
-
this.victimDetail.workPhone = this.victimForm.value.workPhone ? this.victimForm.value.workPhone : null;
|
1054
|
-
this.victimDetail.cellPhone = this.victimForm.value.cellPhone ? this.victimForm.value.cellPhone : null;
|
1055
|
-
this.victimDetail.email = this.victimForm.value.email;
|
1056
|
-
this.victimDetail.victimAdvocateFlag = this.victimForm.value.victimAdvocateFlag;
|
1057
|
-
this.victimDetail.emergencyContact = this.victimForm.value.emergencyContact;
|
1058
|
-
this.victimDetail.emergencyContactPhone = this.victimForm.value.emergencyContactPhone ? this.victimForm.value.emergencyContactPhone : null;
|
1059
|
-
this.victimDetail.commonChildrenFlag = this.victimForm.value.commonChildrenFlag;
|
1060
|
-
this.victimDetail.commonChildrenNumber = this.victimForm.value.commonChildrenNumber;
|
1061
|
-
this.victimDetail.cpoExpirationDate = this.victimForm.value.cpoExpirationDate;
|
1062
|
-
this.victimDetail.cpoExpirationFlag = this.victimForm.value.cpoExpirationFlag;
|
1063
|
-
this.victimDetail.supportInPlaceFlag = this.victimForm.value.supportInPlaceFlag;
|
1064
|
-
this.victimDetail.weaponInvolvedFlag = this.victimForm.value.weaponInvolvedFlag;
|
1065
|
-
this.victimDetail.drugUseFlag = this.victimForm.value.drugUseFlag;
|
1066
|
-
this.victimDetail.alcoholUseFlag = this.victimForm.value.alcoholUseFlag;
|
1067
|
-
this.victimDetail.accessRisk = this.victimForm.value.accessRisk;
|
1068
|
-
this.victimDetail.addressId = this.victimForm.value.addressId;
|
1069
|
-
this.victimDetail.allowCsosaContactFlag = this.victimForm.value.allowCsosaContactFlag;
|
1070
|
-
this.victimDetail.victimSupports = [];
|
1071
|
-
this.victimForm.value.victimSupports.forEach((/**
|
1072
|
-
* @param {?} element
|
1073
|
-
* @return {?}
|
1074
|
-
*/
|
1075
|
-
element => {
|
1076
|
-
/** @type {?} */
|
1077
|
-
const victimSupport = (/** @type {?} */ ({}));
|
1078
|
-
victimSupport.victimId = this.victimDetail.victimId;
|
1079
|
-
victimSupport.victimSupportTypeId = element;
|
1080
|
-
victimSupport.modifiedBy = this.staffId;
|
1081
|
-
this.victimDetail.victimSupports.push(victimSupport);
|
1082
|
-
}));
|
1083
|
-
this.victimDetail.victimDrugUses = [];
|
1084
|
-
console.log('this.victimForm.value.victimDrugUses calculate');
|
1085
|
-
console.log(this.victimForm.value.victimDrugUses);
|
1086
|
-
this.victimForm.value.victimDrugUses.forEach((/**
|
1087
|
-
* @param {?} element
|
1088
|
-
* @return {?}
|
1089
|
-
*/
|
1090
|
-
element => {
|
1091
|
-
/** @type {?} */
|
1092
|
-
const victimDrugUse = (/** @type {?} */ ({}));
|
1093
|
-
victimDrugUse.drugTypeId = element;
|
1094
|
-
console.log('this.victimForm.value.victimDrugUses before');
|
1095
|
-
console.log(this.victimForm.value.victimDrugUses);
|
1096
|
-
if (element === "OTHER" || element === "") {
|
1097
|
-
victimDrugUse.drugTypeId = null;
|
1098
|
-
victimDrugUse.otherDrug = this.victimForm.value.otherDrug;
|
1099
|
-
}
|
1100
|
-
else {
|
1101
|
-
victimDrugUse.drugTypeId = element;
|
1102
|
-
victimDrugUse.otherDrug = null;
|
1103
|
-
}
|
1104
|
-
victimDrugUse.modifiedBy = this.staffId;
|
1105
|
-
victimDrugUse.victimId = this.victimDetail.victimId;
|
1106
|
-
this.victimDetail.victimDrugUses.push(victimDrugUse);
|
1107
|
-
console.log('this.victimForm.value.victimDrugUses after');
|
1108
|
-
console.log(this.victimForm.value.victimDrugUses);
|
1109
|
-
}));
|
1110
|
-
this.victimForm.value.victimDrugUses.filter((/**
|
1111
|
-
* @param {?} word
|
1112
|
-
* @return {?}
|
1113
|
-
*/
|
1114
|
-
word => (!(word.drugTypeId === null && word.otherDrug === null))));
|
1115
|
-
console.log('adjust this.victimForm.value.victimDrugUses ');
|
1116
|
-
console.log(this.victimForm.value.victimDrugUses);
|
1117
|
-
this.victimDetail.victimWeaponUses = [];
|
1118
|
-
this.victimForm.value.victimWeaponUses.forEach((/**
|
1119
|
-
* @param {?} element
|
1120
|
-
* @return {?}
|
1121
|
-
*/
|
1122
|
-
element => {
|
1123
|
-
/** @type {?} */
|
1124
|
-
const victimWeaponUse = (/** @type {?} */ ({}));
|
1125
|
-
victimWeaponUse.victimId = this.victimDetail.victimId;
|
1126
|
-
victimWeaponUse.weaponTypeId = element;
|
1127
|
-
console.log('weapon element');
|
1128
|
-
console.log(element);
|
1129
|
-
console.log(this.victimForm.value.otherWeapon);
|
1130
|
-
console.log(this.victimForm.value.victimWeaponUses);
|
1131
|
-
if (element == "OTHER") {
|
1132
|
-
victimWeaponUse.otherWeapon = this.victimForm.value.otherWeapon;
|
1133
|
-
}
|
1134
|
-
else {
|
1135
|
-
victimWeaponUse.otherWeapon = null;
|
1136
|
-
}
|
1137
|
-
victimWeaponUse.modifiedBy = this.staffId;
|
1138
|
-
this.victimDetail.victimWeaponUses.push(victimWeaponUse);
|
1139
|
-
}));
|
1140
|
-
console.log('this.victimDetail before emit');
|
1141
|
-
console.log(this.victimDetail);
|
1142
|
-
this.victimService.putVictims(this.victimDetail.victimId, this.victimDetail).subscribe((/**
|
1143
|
-
* @param {?} items
|
1144
|
-
* @return {?}
|
1145
|
-
*/
|
1146
|
-
(items) => {
|
1147
|
-
this.snackBar.open('Update Successfully!', '', {
|
1148
|
-
duration: 3000,
|
1149
|
-
});
|
1150
|
-
//Advocate section
|
1151
|
-
this.victimAdvocate.victimAdvocateId = this.victimDetail.victimId;
|
1152
|
-
this.victimAdvocate.lastName = this.victimForm.value.advocateLastName;
|
1153
|
-
this.victimAdvocate.firstName = this.victimForm.value.advocateFirstName;
|
1154
|
-
this.victimAdvocate.prefixId = this.victimForm.value.advocatePrefixId ? this.victimForm.value.advocatePrefixId : null;
|
1155
|
-
this.victimAdvocate.suffixId = this.victimForm.value.advocateSuffixId ? this.victimForm.value.advocateSuffixId : null;
|
1156
|
-
this.victimAdvocate.addressId = this.advocateAddressId ? this.advocateAddressId : null;
|
1157
|
-
this.victimAdvocate.noPhoneFlag = this.victimForm.value.advocateNoPhoneFlag ? true : false;
|
1158
|
-
this.victimAdvocate.homePhone = this.victimForm.value.advocateHomePhone ? this.victimForm.value.advocateHomePhone : null;
|
1159
|
-
this.victimAdvocate.workPhone = this.victimForm.value.advocateWorkPhone ? this.victimForm.value.advocateWorkPhone : null;
|
1160
|
-
this.victimAdvocate.cellPhone = this.victimForm.value.advocateCellPhone ? this.victimForm.value.advocateCellPhone : null;
|
1161
|
-
this.victimAdvocate.email = this.victimForm.value.advocateEmail ? this.victimForm.value.advocateEmail : null;
|
1162
|
-
this.victimAdvocate.modifiedBy = this.staffId;
|
1163
|
-
if (this.victimDetail.victimAdvocateFlag == 'YS') {
|
1164
|
-
if (this.victimDetail.advocateFirstName != null) {
|
1165
|
-
this.victimService.putVictimAdvocate(this.victimDetail.victimId, this.victimAdvocate).subscribe((/**
|
1166
|
-
* @param {?} resp
|
1167
|
-
* @return {?}
|
1168
|
-
*/
|
1169
|
-
resp => { }));
|
1170
|
-
}
|
1171
|
-
else {
|
1172
|
-
console.log('add advocate');
|
1173
|
-
console.log(this.victimAdvocate);
|
1174
|
-
this.victimService.postVictimAdvocate(this.victimDetail.victimId, this.victimAdvocate).subscribe();
|
1175
|
-
}
|
1176
|
-
}
|
1177
|
-
// guardian section
|
1178
|
-
this.victimGuardian.victimGuardianId = this.victimDetail.victimId;
|
1179
|
-
this.victimGuardian.lastName = this.victimForm.value.guardianLastName;
|
1180
|
-
this.victimGuardian.firstName = this.victimForm.value.guardianFirstName;
|
1181
|
-
this.victimGuardian.prefixId = this.victimForm.value.guardianPrefixId ? this.victimForm.value.guardianPrefixId : null;
|
1182
|
-
this.victimGuardian.suffixId = this.victimForm.value.guardianSuffixId ? this.victimForm.value.guardianSuffixId : null;
|
1183
|
-
this.victimGuardian.addressId = this.guardianAddressId ? this.guardianAddressId : null;
|
1184
|
-
this.victimGuardian.noPhoneFlag = this.victimForm.value.guardianNoPhoneFlag ? true : false;
|
1185
|
-
this.victimGuardian.homePhone = this.victimForm.value.guardianHomePhone ? this.victimForm.value.guardianHomePhone : null;
|
1186
|
-
this.victimGuardian.workPhone = this.victimForm.value.guardianWorkPhone ? this.victimForm.value.guardianWorkPhone : null;
|
1187
|
-
this.victimGuardian.cellPhone = this.victimForm.value.guardianCellPhone ? this.victimForm.value.guardianCellPhone : null;
|
1188
|
-
this.victimGuardian.email = this.victimForm.value.guardianEmail ? this.victimForm.value.guardianEmail : null;
|
1189
|
-
this.victimGuardian.modifiedBy = this.staffId;
|
1190
|
-
if (this.victimDetail.minorFlag == true) {
|
1191
|
-
if (this.victimDetail.guardianFirstName != null)
|
1192
|
-
this.victimService.putVictimGuardian(this.victimDetail.victimId, this.victimGuardian).subscribe((/**
|
1193
|
-
* @param {?} resp
|
1194
|
-
* @return {?}
|
1195
|
-
*/
|
1196
|
-
resp => {
|
1197
|
-
}));
|
1198
|
-
else {
|
1199
|
-
console.log('add gurdian');
|
1200
|
-
console.log(this.victimGuardian);
|
1201
|
-
this.victimService.postVictimGuardian(this.victimDetail.victimId, this.victimGuardian).subscribe();
|
1202
|
-
}
|
1203
|
-
}
|
1204
|
-
}));
|
1205
|
-
}
|
1206
|
-
} //end of this.phoneValidationFlag = false
|
1207
|
-
this.onSave.emit(this.victimDetail);
|
1208
|
-
}
|
1209
|
-
//#endregion "save victim"
|
1210
|
-
/**
|
1211
|
-
* @return {?}
|
1212
|
-
*/
|
1213
|
-
addContact() {
|
1214
|
-
this.router.navigate(['victimContact', this.victimId]);
|
1215
|
-
}
|
1216
|
-
/**
|
1217
|
-
* @param {?} value
|
1218
|
-
* @return {?}
|
1219
|
-
*/
|
1220
|
-
formatLabel(value) {
|
1221
|
-
return value;
|
1222
|
-
}
|
1223
|
-
}
|
1224
|
-
SmartVictimDetailComponent.decorators = [
|
1225
|
-
{ type: Component, args: [{
|
1226
|
-
selector: 'csmart-victim-detail',
|
1227
|
-
template: "<mat-card>\r\n <mat-card-content>\r\n\r\n <div [formGroup]=\"victimForm\">\r\n\r\n <mat-tab-group dynamicHeight mat-stretch-tabs>\r\n <mat-tab label=\"Victim Detail\" >\r\n <div class='container'>\r\n\r\n <mat-form-field>\r\n <mat-label>Is victim a minor?<font color=\"red\">* </font></mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"minorFlag\" (change)=\"radioMinorChange($event)\" [(ngModel)]=\"editVictim.minorFlag\" >\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('minorFlag').errors \r\n && (victimForm.get('minorFlag').dirty || victimForm.get('minorFlag').touched)\">\r\n <mat-error>If victim a minor field is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Does the Victim have a Victim Advocate or Social Worker with <br>whom CSOSA should maintain contact?<font color=\"red\">* </font></mat-label>\r\n <br>\r\n <br>\r\n <mat-radio-group class = \"tp-radio-group\" formControlName=\"victimAdvocateFlag\" (change)=\"radioAdvocateChange($event)\" [(ngModel)]=\"editVictim.victimAdvocateFlag\">\r\n <mat-radio-button color=\"primary\" *ngFor=\"let item of flagOption\" [value]=\"item.flagOptionYesNoUnknownId\">{{item.name}} </mat-radio-button> \r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('victimAdvocateFlag').errors \r\n && (victimForm.get('victimAdvocateFlag').dirty || victimForm.get('victimAdvocateFlag').touched)\">\r\n <mat-error>If victim has advocate field is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n \r\n \r\n <mat-form-field>\r\n <mat-label>Victim Currently Under Supervision:</mat-label>\r\n <mat-select formControlName=\"underSupervisionFlag\" name=\"supervision\" [(ngModel)]=\"editVictim.underSupervisionFlag\" >\r\n <mat-option *ngFor=\"let item of flagOption\" [value]=\"item.flagOptionYesNoUnknownId\" >\r\n {{item.name}}</mat-option>\r\n </mat-select>\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('underSupervisionFlag').errors \r\n && (victimForm.get('underSupervisionFlag').dirty || victimForm.get('underSupervisionFlag').touched)\">\r\n <mat-error>under supervision field is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n \r\n \r\n <mat-form-field>\r\n <mat-label>Relationship to Offender:</mat-label>\r\n <mat-select formControlName=\"victimOffenderRelationshipTypeId\" [(ngModel)]=\"editVictim.victimOffenderRelationshipTypeId\" >\r\n <mat-option *ngFor=\"let item of relationshipTypes\" [value]=\"item.relationshipTypeId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('victimOffenderRelationshipTypeId').errors \r\n && (victimForm.get('victimOffenderRelationshipTypeId').dirty || victimForm.get('victimOffenderRelationshipTypeId').touched)\">\r\n <mat-error>relationship is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n \r\n \r\n <mat-form-field>\r\n <mat-label>Victim Last Name:</mat-label>\r\n <input matInput formControlName=\"lastName\" [(ngModel)]=\"editVictim.lastName\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('lastName').errors \r\n && (victimForm.get('lastName').dirty || victimForm.get('lastName').touched)\">\r\n <mat-error>victim last name is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Victim First Name: </mat-label>\r\n <input matInput formControlName=\"firstName\" [(ngModel)]=\"editVictim.firstName\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('firstName').errors \r\n && (victimForm.get('firstName').dirty || victimForm.get('firstName').touched)\">\r\n <mat-error>victim first name is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Victim Middle Name:</mat-label>\r\n <input matInput formControlName=\"middleName\" [(ngModel)]=\"editVictim.middleName\">\r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Victim Prefix:</mat-label>\r\n <mat-select formControlName=\"prefixId\" [(ngModel)]=\"editVictim.prefixId\">\r\n <mat-option *ngFor=\"let item of prefixes\" [value]=\"item.prefixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Victim Suffix:</mat-label>\r\n <mat-select formControlName=\"suffixId\" [(ngModel)]=\"editVictim.suffixId\">\r\n <mat-option *ngFor=\"let item of suffixes\" [value]=\"item.suffixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Victim Gender:</mat-label>\r\n <mat-select formControlName=\"genderCode\" [(ngModel)]=\"editVictim.genderCode\">\r\n <mat-option *ngFor=\"let item of genders\" [value]=\"item.genderCode\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Date of Birth:</mat-label>\r\n <input matInput \r\n [matDatepicker]=\"victimBirthRef\" \r\n formControlName=\"birthDate\"\r\n [(ngModel)]=\"editVictim.birthDate\"\r\n (click)=\"victimBirthRef.open()\"\r\n (dateChange)=\"handleDOBChange($event)\" \r\n >\r\n <mat-datepicker-toggle [for]=\"victimBirthRef\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #victimBirthRef></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Victim Home Phone:</mat-label>\r\n <input \r\n matInput \r\n formControlName=\"homePhone\" \r\n [(ngModel)]=\"editVictim.homePhone\" \r\n phoneMask\r\n maxlength=\"14\"/>\r\n\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('homePhone').errors\r\n && (victimForm.get('homePhone').dirty || victimForm.get('homePhone').touched)\">\r\n\r\n\r\n <mat-error><strong>Home phone number format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Victim Cell Phone:</mat-label>\r\n <input matInput formControlName=\"cellPhone\" [(ngModel)]=\"editVictim.cellPhone\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('cellPhone').errors \r\n && (victimForm.get('cellPhone').dirty || victimForm.get('cellPhone').touched)\">\r\n <mat-error><strong>Cell phone number format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n \r\n <mat-form-field >\r\n <mat-label>Victim Work Phone:</mat-label>\r\n <input matInput formControlName=\"workPhone\" [(ngModel)]=\"editVictim.workPhone\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('workPhone').errors \r\n && (victimForm.get('workPhone').dirty || victimForm.get('workPhone').touched)\">\r\n <mat-error><strong>Work phone number format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Victim Email:</mat-label>\r\n <input matInput formControlName=\"email\" [(ngModel)]=\"editVictim.email\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('email').errors \r\n && (victimForm.get('email').dirty || victimForm.get('email').touched)\">\r\n <mat-error><strong>victim email format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n \r\n <div></div>\r\n \r\n <app-smart-address \r\n [showPsa]=\"true\" \r\n [modifiedBy]=\"staffId\" \r\n [id]=\"addressId\"\r\n (addressIdChange)=\"onAddressChange($event)\"\r\n [outline]=\"true\" \r\n readonly=\"false\"\r\n [rowHeight]=\"80\" \r\n (isValid)=\"false\" \r\n [addressValidators]=\"addressValidators\"\r\n #addressComponent\r\n >\r\n </app-smart-address>\r\n \r\n \r\n <!-- Docket: \r\n <div>\r\n <div *ngFor=\"let docket of docketlist; let i=index\">\r\n <mat-checkbox >{{docket.docketNumber}}</mat-checkbox>\r\n </div>\r\n </div> -->\r\n\r\n <mat-checkbox color=\"primary\" formControlName=\"allowCsosaContactFlag\" name=\"allowCsosaContactFlag\" [(ngModel)]=\"editVictim.allowCsosaContactFlag\">victim wants to be contacted by CSOSA</mat-checkbox>\r\n \r\n </div> \r\n\r\n <mat-card>\r\n <mat-form-field>\r\n <mat-label> Children in Common</mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"commonChildrenFlag\" [(ngModel)]=\"editVictim.commonChildrenFlag\" (change)=\"radioCicChange($event)\">\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"commonChildrenDivFlag\">\r\n \r\n <mat-form-field >\r\n <mat-label>\r\n Children number\r\n </mat-label>\r\n <input matInput formControlName=\"commonChildrenNumber\" [(ngModel)]=\"editVictim.commonChildrenNumber\" >\r\n </mat-form-field>\r\n \r\n </div>\r\n \r\n <mat-form-field>\r\n <mat-label>CPO: </mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"cpoExpirationFlag\" [(ngModel)]=\"editVictim.cpoExpirationFlag\" (change)=\"radioCpoChange($event)\">\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n <div *ngIf=\"cpoExpirationDivFlag\"> \r\n <mat-form-field>\r\n <mat-label>Expiration Date: </mat-label>\r\n <input matInput \r\n [matDatepicker]=\"cpoDateRef\" \r\n formControlName=\"cpoExpirationDate\" \r\n (click)=\"cpoDateRef.open()\" \r\n [(ngModel)]=\"editVictim.cpoExpirationDate\" >\r\n <mat-datepicker-toggle [for]=\"cpoDateRef\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #cpoDateRef></mat-datepicker>\r\n </mat-form-field>\r\n\r\n </div>\r\n \r\n <br>\r\n <br>\r\n \r\n <mat-form-field>\r\n <mat-label>Victim has a Support System in Place? </mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"supportInPlaceFlag\" [(ngModel)]=\"editVictim.supportInPlaceFlag\" (change)=\"radioSupportChange($event)\">\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n <div *ngIf=\"supportInPlaceDivFlag\"> \r\n <mat-form-field>\r\n <mat-label>Support type? </mat-label>\r\n <mat-select #supportSel formControlName=\"victimSupports\" [(ngModel)]=\"editVictim.victimSupports\" multiple>\r\n <div (mouseleave)=\"supportSel.close()\">\r\n <mat-option color=\"primary\" *ngFor=\"let item of victimSupportTypes\" [value]=\"item.victimSupportTypeId\">\r\n {{item.name}}\r\n </mat-option>\r\n </div>\r\n </mat-select>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n\r\n </div>\r\n \r\n <br>\r\n <br>\r\n\r\n <mat-form-field>\r\n <mat-label>Weapons Involved?</mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"weaponInvolvedFlag\" (change)=\"radioWeaponChange($event)\" [(ngModel)]=\"editVictim.weaponInvolvedFlag\" >\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n \r\n <div *ngIf=\"weaponInvolvedDivFlag\"> \r\n <mat-form-field>\r\n <mat-label>Weapon Type</mat-label>\r\n <mat-select #weaponSel formControlName=\"victimWeaponUses\" multiple [(ngModel)]=\"editVictim.victimWeaponUses\" (selectionChange)=\"checkOtherWeapon($event.value)\" >\r\n <div (mouseleave)=\"weaponSel.close()\">\r\n <mat-option color=\"primary\" *ngFor=\"let item of weaponTypes\" [value]=\"item.weaponTypeId\">\r\n {{item.name}}\r\n </mat-option>\r\n </div>\r\n </mat-select>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div *ngIf=\"otherWeaponFlag\"> \r\n <mat-form-field>\r\n <mat-label>Other Weapon:* </mat-label>\r\n <input matInput formControlName=\"otherWeapon\" >\r\n </mat-form-field>\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('otherWeapon').errors \r\n && (victimForm.get('otherWeapon').dirty || victimForm.get('otherWeapon').touched)\">\r\n <mat-error><strong>Other weapon is required.</strong></mat-error>\r\n </div>\r\n </div>\r\n\r\n \r\n <br>\r\n <br>\r\n \r\n <mat-form-field>\r\n <mat-label>Was Offender under the influence of alcohol at the time of the offense?</mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"alcoholUseFlag\" [(ngModel)]=\"editVictim.alcoholUseFlag\" >\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n <br>\r\n <br>\r\n\r\n <mat-form-field>\r\n <mat-label>Was Offender under the influence of drugs at the time of the offense?</mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"drugUseFlag\" (change)=\"radioDrugChange($event)\" [(ngModel)]=\"editVictim.drugUseFlag\" >\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n <div *ngIf=\"drugUseDivFlag\"> \r\n <mat-form-field>\r\n <mat-label>Drug:</mat-label>\r\n <mat-select #drugSel formControlName=\"victimDrugUses\" multiple (selectionChange)=\"checkOtherDrug($event.value)\" >\r\n <div (mouseleave)=\"drugSel.close()\">\r\n <mat-option color=\"primary\" *ngFor=\"let item of drugs\" [value]=\"item.drugTypeId\">\r\n {{item.name}}\r\n </mat-option>\r\n \r\n </div>\r\n </mat-select>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n </div>\r\n\r\n <div *ngIf=\"otherDrugFlag\"> \r\n <mat-form-field>\r\n <mat-label>Other Drug:* </mat-label>\r\n <input matInput formControlName=\"otherDrug\" >\r\n </mat-form-field>\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('otherDrug').errors \r\n && (victimForm.get('otherDrug').dirty || victimForm.get('otherDrug').touched)\">\r\n <mat-error><strong>Other drug is required.</strong></mat-error>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n\r\n <div>\r\n <div>\r\n <mat-label>\r\n Access Risk: 1 thru 10 (10 greatest risk): <b> {{editVictim.accessRisk}}</b>\r\n </mat-label>\r\n </div>\r\n <div>\r\n \r\n <mat-slider\r\n formControlName=\"accessRisk\"\r\n thumbLabel=\"true\"\r\n [displayWith]=\"formatLabel\"\r\n min=\"1\"\r\n max=\"10\"\r\n [(ngModel)]=\"editVictim.accessRisk\" \r\n ></mat-slider>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card> \r\n\r\n \r\n <br><br><br> \r\n </mat-tab>\r\n \r\n <mat-tab *ngIf=\"guardianTabFlag\" label=\"Legal Guardian\">\r\n <div class='container'>\r\n <mat-form-field>\r\n <mat-label>Guardian Last Name:</mat-label>\r\n <input matInput formControlName=\"guardianLastName\" [(ngModel)]=\"editVictim.guardianLastName\" > \r\n <!-- <div class=\"help-block\" *ngIf=\"victimForm.get('guardianLastName').errors \">\r\n <mat-error>Guardian last name is <strong>required</strong></mat-error>\r\n </div> -->\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Guardian First Name:</mat-label>\r\n <input matInput formControlName=\"guardianFirstName\" [(ngModel)]=\"editVictim.guardianFirstName\" >\r\n <!-- <div class=\"help-block\" *ngIf=\"victimForm.get('guardianFirstName').errors \">\r\n <mat-error>Guardian first name is <strong>required</strong></mat-error>\r\n </div> -->\r\n \r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Guardian Prefix:</mat-label>\r\n <mat-select formControlName=\"guardianPrefixId\" [(ngModel)]=\"editVictim.guardianPrefixId\" >\r\n <mat-option *ngFor=\"let item of prefixes\" [value]=\"item.prefixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Guardian Suffix:</mat-label>\r\n <mat-select formControlName=\"guardianSuffixId\" [(ngModel)]=\"editVictim.guardianSuffixId\" >\r\n <mat-option *ngFor=\"let item of suffixes\" [value]=\"item.suffixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n \r\n <!-- <mat-form-field>\r\n <mat-select placeholder=\"Choose\" formControlName=\"guardianGender\" [(ngModel)]=\"editVictim.guardianGender\">\r\n <mat-option *ngFor=\"let item of genders\" [value]=\"item.genderCode\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field> -->\r\n \r\n \r\n <mat-form-field>\r\n <mat-label>Date of Birth:</mat-label>\r\n <input matInput \r\n [matDatepicker]=\"guardianDateRef\" \r\n formControlName=\"guardianBirthDate\"\r\n [(ngModel)]=\"editVictim.guardianBirthDate\" \r\n (click)=\"guardianDateRef.open()\" \r\n >\r\n <mat-datepicker-toggle [for]=\"guardianDateRef\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #guardianDateRef></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <div></div>\r\n <mat-form-field >\r\n <mat-checkbox \r\n color = \"primary\" \r\n formControlName=\"guardianNoPhoneFlag\" \r\n \r\n >\r\n No Phone (If there is no phone, the phone fields are no longer required)</mat-checkbox>\r\n <input matInput placeholder=\"\" style=\"display: none;\">\r\n </mat-form-field>\r\n\r\n\r\n <div></div>\r\n <mat-card>\r\n <mat-form-field >\r\n <mat-label>Guardian Home Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"guardianHomePhone\" \r\n [(ngModel)]=\"editVictim.guardianHomePhone\" \r\n phoneMask\r\n maxlength=\"14\" >\r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianHomePhone').errors \r\n && (victimForm.get('guardianHomePhone').dirty || victimForm.get('guardianHomePhone').touched)\">\r\n <mat-error><strong>Guardian home phone number format is not correct.</strong></mat-error>\r\n </div>\r\n \r\n\r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Guardian Cell Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"guardianCellPhone\" \r\n [(ngModel)]=\"editVictim.guardianCellPhone\" \r\n phoneMask\r\n maxlength=\"14\" \r\n >\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianCellPhone').errors \r\n && (victimForm.get('guardianCellPhone').dirty || victimForm.get('guardianCellPhone').touched)\">\r\n <mat-error><strong>Guardian Cell phone number format is not correct.</strong></mat-error>\r\n </div>\r\n\r\n \r\n\r\n \r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Guardian Work Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"guardianWorkPhone\" \r\n [(ngModel)]=\"editVictim.guardianWorkPhone\" \r\n phoneMask\r\n maxlength=\"14\" >\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianWorkPhone').errors \r\n && (victimForm.get('guardianWorkPhone').dirty || victimForm.get('guardianWorkPhone').touched)\">\r\n <mat-error><strong>Guardian work phone number format is not correct.</strong></mat-error>\r\n </div>\r\n \r\n \r\n </mat-form-field>\r\n </mat-card>\r\n \r\n <div></div>\r\n\r\n <mat-form-field>\r\n <mat-label>Guardian Email:</mat-label>\r\n <input matInput formControlName=\"guardianEmail\" [(ngModel)]=\"editVictim.guardianEmail\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianEmail').errors \r\n && (victimForm.get('guardianEmail').dirty || victimForm.get('guardianEmail').touched)\">\r\n <mat-error><strong>Guardian email format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n <div></div>\r\n \r\n <div>\r\n <app-smart-address \r\n\r\n [showPsa]=\"true\" \r\n [modifiedBy]=\"staffId\" \r\n [id]=\"guardianAddressId\"\r\n (addressIdChange)=\"onGuardianAddressChange($event)\"\r\n [outline]=\"true\" \r\n readonly=\"false\"\r\n [rowHeight]=\"80\" \r\n (isValid)=\"false\" \r\n [addressValidators]=\"addressValidators\"\r\n #guardianAddressComponent\r\n >\r\n </app-smart-address>\r\n </div>\r\n </div>\r\n \r\n <br><br><br> \r\n </mat-tab>\r\n \r\n <!--advocate-->\r\n \r\n <mat-tab *ngIf=\"advocateTabFlag\" label=\"Advocate\" > \r\n <div class='container'>\r\n \r\n <mat-form-field>\r\n <mat-label>Advocate Last Name:</mat-label>\r\n <input matInput formControlName=\"advocateLastName\" [(ngModel)]=\"editVictim.advocateLastName\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateLastName').errors \">\r\n <mat-error>Advocate last name is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Advocate First Name:</mat-label>\r\n <input matInput formControlName=\"advocateFirstName\" [(ngModel)]=\"editVictim.advocateFirstName\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateFirstName').errors \">\r\n <mat-error>Advocate first name is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Advocate Prefix:</mat-label>\r\n <mat-select formControlName=\"advocatePrefixId\" [(ngModel)]=\"editVictim.advocatePrefixId\" >\r\n <mat-option *ngFor=\"let item of prefixes\" [value]=\"item.prefixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Advocate Suffix:</mat-label>\r\n <mat-select formControlName=\"advocateSuffixId\" [(ngModel)]=\"editVictim.advocateSuffixId\" >\r\n <mat-option *ngFor=\"let item of suffixes\" [value]=\"item.suffixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n \r\n <mat-form-field>\r\n <mat-checkbox \r\n color = \"primary\" \r\n formControlName=\"advocateNoPhoneFlag\" \r\n \r\n [(ngModel)]=\"editVictim.advocateNoPhoneFlag\" >\r\n No Phone (If there is no phone, the phone fields are no longer required)</mat-checkbox>\r\n <input matInput placeholder=\"\" style=\"display: none;\">\r\n </mat-form-field>\r\n\r\n <div></div> \r\n <mat-card> \r\n <mat-form-field >\r\n <mat-label>Advocate Home Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"advocateHomePhone\" \r\n [(ngModel)]=\"editVictim.advocateHomePhone\"\r\n phoneMask\r\n maxlength=\"14\" >\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateHomePhone').errors \r\n && (victimForm.get('advocateHomePhone').dirty || victimForm.get('advocateHomePhone').touched)\">\r\n <mat-error><strong>Advocate home number format is not correct.</strong></mat-error>\r\n </div>\r\n \r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Advocate Cell Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"advocateCellPhone\" \r\n [(ngModel)]=\"editVictim.advocateCellPhone\" \r\n phoneMask\r\n maxlength=\"14\">\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateCellPhone').errors \r\n && (victimForm.get('advocateCellPhone').dirty || victimForm.get('advocateCellPhone').touched)\">\r\n <mat-error><strong>Advocate cell number format is not correct.</strong></mat-error>\r\n </div>\r\n\r\n \r\n </mat-form-field> \r\n\r\n <mat-form-field>\r\n <mat-label>Advocate Work Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"advocateWorkPhone\" \r\n [(ngModel)]=\"editVictim.advocateWorkPhone\" \r\n phoneMask\r\n maxlength=\"14\"\r\n >\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateWorkPhone').errors \r\n && (victimForm.get('advocateWorkPhone').dirty || victimForm.get('advocateWorkPhone').touched)\">\r\n <mat-error><strong>Advocate work number format is not correct.</strong></mat-error>\r\n </div>\r\n \r\n </mat-form-field>\r\n </mat-card>\r\n\r\n <div></div>\r\n \r\n <mat-form-field>\r\n <mat-label>Advocate Email:</mat-label>\r\n <input matInput formControlName=\"advocateEmail\" [(ngModel)]=\"editVictim.advocateEmail\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateEmail').errors \r\n && (victimForm.get('advocateEmail').dirty || victimForm.get('advocateEmail').touched)\">\r\n <mat-error><strong>Advocate email format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n <div></div>\r\n\r\n \r\n <div >\r\n <app-smart-address \r\n [showPsa]=\"true\" \r\n [modifiedBy]=\"staffId\" \r\n [id]=\"advocateAddressId\"\r\n (addressIdChange)=\"onAdvocateAddressChange($event)\"\r\n [outline]=\"true\" \r\n readonly=\"false\"\r\n [rowHeight]=\"80\" \r\n (isValid)=\"false\" \r\n [addressValidators]=\"addressValidators\"\r\n #advocateAddressComponent >\r\n </app-smart-address>\r\n </div>\r\n </div>\r\n <br><br><br> \r\n </mat-tab>\r\n \r\n \r\n <mat-tab label=\"Emergency Contact\">\r\n <div class='container'>\r\n \r\n <mat-form-field>\r\n <mat-label>Emergency Contact Name:</mat-label>\r\n <input matInput formControlName=\"emergencyContact\" [(ngModel)]=\"editVictim.emergencyContact\" >\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Emergency Phone Number:</mat-label>\r\n <input matInput formControlName=\"emergencyContactPhone\" [(ngModel)]=\"editVictim.emergencyContactPhone\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('emergencyContactPhone').errors \r\n && (victimForm.get('emergencyContactPhone').dirty || victimForm.get('emergencyContactPhone').touched)\">\r\n <mat-error><strong>Emergency contact number format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n </div>\r\n <br><br><br> \r\n </mat-tab> \r\n \r\n </mat-tab-group>\r\n <div class='outer'>\r\n <div>\r\n All buttons apply to all tabs. If save button is grey, please check each tab to make sure the required field is filled.<br><br>\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('minorFlag').errors \r\n && (victimForm.get('minorFlag').dirty || victimForm.get('minorFlag').touched)\">\r\n <mat-error>If victim a minor field is <strong>required</strong></mat-error>\r\n </div>\r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('victimAdvocateFlag').errors \r\n && (victimForm.get('victimAdvocateFlag').dirty || victimForm.get('victimAdvocateFlag').touched)\">\r\n <mat-error>If victim has advocate field is <strong>required</strong></mat-error>\r\n </div> \r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('underSupervisionFlag').errors \r\n && (victimForm.get('underSupervisionFlag').dirty || victimForm.get('underSupervisionFlag').touched)\">\r\n <mat-error>Under supervision field is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('victimOffenderRelationshipTypeId').errors \r\n && (victimForm.get('victimOffenderRelationshipTypeId').dirty || victimForm.get('victimOffenderRelationshipTypeId').touched)\">\r\n <mat-error>Relationship is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('lastName').errors \r\n && (victimForm.get('lastName').dirty || victimForm.get('lastName').touched)\">\r\n <mat-error>Victim last name is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('firstName').errors \r\n && (victimForm.get('firstName').dirty || victimForm.get('firstName').touched)\">\r\n <mat-error>victim first name is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianFirstName').errors \r\n && (victimForm.get('guardianFirstName').dirty || victimForm.get('guardianFirstName').touched)\">\r\n <mat-error>Guardian first name is <strong>required</strong></mat-error>\r\n </div>\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianLastName').errors\r\n && (victimForm.get('guardianLastName').dirty || victimForm.get('guardianLastName').touched)\" >\r\n <mat-error>Guardian last name is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateLastName').errors\r\n && (victimForm.get('advocateLastName').dirty || victimForm.get('advocateLastName').touched)\" >\r\n <mat-error>Advocate last name is <strong>required</strong></mat-error>\r\n </div> \r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateFirstName').errors\r\n && (victimForm.get('advocateFirstName').dirty || victimForm.get('advocateFirstName').touched)\">\r\n <mat-error>Advocate first name is <strong>required</strong></mat-error>\r\n </div>\r\n\r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('otherWeapon').errors \r\n && (victimForm.get('otherWeapon').dirty || victimForm.get('otherWeapon').touched)\">\r\n <mat-error>Other weapon field is <strong>required</strong></mat-error>\r\n </div>\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('otherDrug').errors \r\n && (victimForm.get('otherDrug').dirty || victimForm.get('otherDrug').touched)\">\r\n <mat-error>Other drug field is <strong>required</strong></mat-error>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n <div class=\"inner\">\r\n <button mat-raised-button color=\"primary\" (click)=\"saveVictim()\" [disabled]=\"!victimForm.valid\" >Save </button> \r\n </div>\r\n \r\n <div *ngIf=\"showDelete\" class=\"inner\">\r\n <button mat-raised-button color=\"primary\" (click)=\"deleteVictim()\">Delete </button>\r\n </div>\r\n \r\n <div class=\"inner\">\r\n <button mat-raised-button color=\"primary\" (click)=\"cancel()\">Clear </button>\r\n </div>\r\n \r\n <button mat-raised-button color=\"primary\" (click)=\"back()\">Back</button>\r\n\r\n </div>\r\n\r\n </div>\r\n <br>\r\n <br>\r\n\r\n <div align=\"right\">\r\n <button mat-raised-button color=\"primary\" (click)=\"addContact()\" >Add victim contact</button>\r\n </div>\r\n \r\n <div>\r\n\r\n <mat-table #table [dataSource]=\"contactDataSource\" class=\"example-table\">\r\n <ng-container matColumnDef=\"contactDate\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Contact Date</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.contactDate | date}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"victimContactMethod\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Contact Method</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.victimContactMethod}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"nextContactDate\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Next Contact Date</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.nextContactDate | date}} </mat-cell>\r\n </ng-container>\r\n \r\n \r\n <ng-container matColumnDef=\"staff\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Contact By</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.staff}} </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"comment\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Comment</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.comment}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"contactId\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\"></mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\">\r\n \r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"['contactDate', 'victimContactMethod','nextContactDate', 'staff', 'comment', 'contactId']\" class=\"example-header-row\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns:['contactDate', 'victimContactMethod','nextContactDate', 'staff', 'comment', 'contactId'];\" class=\"example-row\"></mat-row>\r\n </mat-table>\r\n\r\n\r\n </div>\r\n \r\n </mat-card-content>\r\n</mat-card>\r\n",
|
1228
|
-
providers: [CommonDialogService],
|
1229
|
-
styles: ["mat-form-field{width:100%}.container{margin:16px;display:-ms-grid;display:grid;-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,1fr);grid-gap:10px;grid-auto-rows:minmax(50px,auto);justify-items:stretch}@media only screen and (max-width:1120px){.container{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;grid-row-gap:15px}}@media only screen and (max-width:675px){.container{display:flex;flex-direction:column}}#outer{width:100%;text-align:center}.inner{display:inline-block}.tp-radio-group{display:flex;justify-content:space-between}"]
|
1230
|
-
}] }
|
1231
|
-
];
|
1232
|
-
/** @nocollapse */
|
1233
|
-
SmartVictimDetailComponent.ctorParameters = () => [
|
1234
|
-
{ type: Location },
|
1235
|
-
{ type: FormBuilder },
|
1236
|
-
{ type: MatDialog },
|
1237
|
-
{ type: ActivatedRoute },
|
1238
|
-
{ type: Router },
|
1239
|
-
{ type: MatSnackBar },
|
1240
|
-
{ type: CommonDialogService },
|
1241
|
-
{ type: NgcSmartVictimService }
|
1242
|
-
];
|
1243
|
-
SmartVictimDetailComponent.propDecorators = {
|
1244
|
-
victimDetail: [{ type: Input }],
|
1245
|
-
staffId: [{ type: Input }],
|
1246
|
-
offenderId: [{ type: Input }],
|
1247
|
-
isIntake: [{ type: Input }],
|
1248
|
-
onSave: [{ type: Output }],
|
1249
|
-
onCancel: [{ type: Output }]
|
1250
|
-
};
|
1251
|
-
if (false) {
|
1252
|
-
/** @type {?} */
|
1253
|
-
SmartVictimDetailComponent.prototype.victimDetail;
|
1254
|
-
/** @type {?} */
|
1255
|
-
SmartVictimDetailComponent.prototype.staffId;
|
1256
|
-
/** @type {?} */
|
1257
|
-
SmartVictimDetailComponent.prototype.offenderId;
|
1258
|
-
/** @type {?} */
|
1259
|
-
SmartVictimDetailComponent.prototype.isIntake;
|
1260
|
-
/** @type {?} */
|
1261
|
-
SmartVictimDetailComponent.prototype.onSave;
|
1262
|
-
/** @type {?} */
|
1263
|
-
SmartVictimDetailComponent.prototype.onCancel;
|
1264
|
-
/** @type {?} */
|
1265
|
-
SmartVictimDetailComponent.prototype.victimId;
|
1266
|
-
/** @type {?} */
|
1267
|
-
SmartVictimDetailComponent.prototype.victimForm;
|
1268
|
-
/** @type {?} */
|
1269
|
-
SmartVictimDetailComponent.prototype.drugs;
|
1270
|
-
/** @type {?} */
|
1271
|
-
SmartVictimDetailComponent.prototype.victimSupportTypes;
|
1272
|
-
/** @type {?} */
|
1273
|
-
SmartVictimDetailComponent.prototype.prefixes;
|
1274
|
-
/** @type {?} */
|
1275
|
-
SmartVictimDetailComponent.prototype.suffixes;
|
1276
|
-
/** @type {?} */
|
1277
|
-
SmartVictimDetailComponent.prototype.relationshipTypes;
|
1278
|
-
/** @type {?} */
|
1279
|
-
SmartVictimDetailComponent.prototype.genders;
|
1280
|
-
/** @type {?} */
|
1281
|
-
SmartVictimDetailComponent.prototype.docketlist;
|
1282
|
-
/** @type {?} */
|
1283
|
-
SmartVictimDetailComponent.prototype.weaponTypes;
|
1284
|
-
/** @type {?} */
|
1285
|
-
SmartVictimDetailComponent.prototype.flagOption;
|
1286
|
-
/** @type {?} */
|
1287
|
-
SmartVictimDetailComponent.prototype.selectedWeaponTypes;
|
1288
|
-
/** @type {?} */
|
1289
|
-
SmartVictimDetailComponent.prototype.selectedVictimSupportTypes;
|
1290
|
-
/** @type {?} */
|
1291
|
-
SmartVictimDetailComponent.prototype.selectedDrugs;
|
1292
|
-
/** @type {?} */
|
1293
|
-
SmartVictimDetailComponent.prototype.id;
|
1294
|
-
/** @type {?} */
|
1295
|
-
SmartVictimDetailComponent.prototype.hidden;
|
1296
|
-
/**
|
1297
|
-
* @type {?}
|
1298
|
-
* @private
|
1299
|
-
*/
|
1300
|
-
SmartVictimDetailComponent.prototype.sub;
|
1301
|
-
/** @type {?} */
|
1302
|
-
SmartVictimDetailComponent.prototype.victimAdvocate;
|
1303
|
-
/** @type {?} */
|
1304
|
-
SmartVictimDetailComponent.prototype.victimGuardian;
|
1305
|
-
/** @type {?} */
|
1306
|
-
SmartVictimDetailComponent.prototype.victimWeaponUse;
|
1307
|
-
/** @type {?} */
|
1308
|
-
SmartVictimDetailComponent.prototype.victimSupport;
|
1309
|
-
/** @type {?} */
|
1310
|
-
SmartVictimDetailComponent.prototype.victimDrugUse;
|
1311
|
-
/** @type {?} */
|
1312
|
-
SmartVictimDetailComponent.prototype.result;
|
1313
|
-
/** @type {?} */
|
1314
|
-
SmartVictimDetailComponent.prototype.editMode;
|
1315
|
-
/** @type {?} */
|
1316
|
-
SmartVictimDetailComponent.prototype.guardianTabFlag;
|
1317
|
-
/** @type {?} */
|
1318
|
-
SmartVictimDetailComponent.prototype.advocateTabFlag;
|
1319
|
-
/** @type {?} */
|
1320
|
-
SmartVictimDetailComponent.prototype.commonChildrenDivFlag;
|
1321
|
-
/** @type {?} */
|
1322
|
-
SmartVictimDetailComponent.prototype.cpoExpirationDivFlag;
|
1323
|
-
/** @type {?} */
|
1324
|
-
SmartVictimDetailComponent.prototype.supportInPlaceDivFlag;
|
1325
|
-
/** @type {?} */
|
1326
|
-
SmartVictimDetailComponent.prototype.weaponInvolvedDivFlag;
|
1327
|
-
/** @type {?} */
|
1328
|
-
SmartVictimDetailComponent.prototype.drugUseDivFlag;
|
1329
|
-
/** @type {?} */
|
1330
|
-
SmartVictimDetailComponent.prototype.showDelete;
|
1331
|
-
/** @type {?} */
|
1332
|
-
SmartVictimDetailComponent.prototype.addressId;
|
1333
|
-
/** @type {?} */
|
1334
|
-
SmartVictimDetailComponent.prototype.advocateAddressId;
|
1335
|
-
/** @type {?} */
|
1336
|
-
SmartVictimDetailComponent.prototype.guardianAddressId;
|
1337
|
-
/** @type {?} */
|
1338
|
-
SmartVictimDetailComponent.prototype.datePipe;
|
1339
|
-
/** @type {?} */
|
1340
|
-
SmartVictimDetailComponent.prototype.emailPattern;
|
1341
|
-
/** @type {?} */
|
1342
|
-
SmartVictimDetailComponent.prototype.phoneNumber;
|
1343
|
-
/** @type {?} */
|
1344
|
-
SmartVictimDetailComponent.prototype.editVictim;
|
1345
|
-
/** @type {?} */
|
1346
|
-
SmartVictimDetailComponent.prototype.victimAge;
|
1347
|
-
/** @type {?} */
|
1348
|
-
SmartVictimDetailComponent.prototype.otherWeaponFlag;
|
1349
|
-
/** @type {?} */
|
1350
|
-
SmartVictimDetailComponent.prototype.otherDrugFlag;
|
1351
|
-
/** @type {?} */
|
1352
|
-
SmartVictimDetailComponent.prototype.contactDataSource;
|
1353
|
-
/** @type {?} */
|
1354
|
-
SmartVictimDetailComponent.prototype.contactList;
|
1355
|
-
/** @type {?} */
|
1356
|
-
SmartVictimDetailComponent.prototype.guardianPhoneExistFlag;
|
1357
|
-
/** @type {?} */
|
1358
|
-
SmartVictimDetailComponent.prototype.advocatePhoneExistFlag;
|
1359
|
-
/** @type {?} */
|
1360
|
-
SmartVictimDetailComponent.prototype.phoneValidationFlag;
|
1361
|
-
/** @type {?} */
|
1362
|
-
SmartVictimDetailComponent.prototype.guaridanNoPhoneChkFlag;
|
1363
|
-
/** @type {?} */
|
1364
|
-
SmartVictimDetailComponent.prototype.advocateNoPhoneChkFlag;
|
1365
|
-
/** @type {?} */
|
1366
|
-
SmartVictimDetailComponent.prototype.addressValidators;
|
1367
|
-
/**
|
1368
|
-
* @type {?}
|
1369
|
-
* @private
|
1370
|
-
*/
|
1371
|
-
SmartVictimDetailComponent.prototype.location;
|
1372
|
-
/**
|
1373
|
-
* @type {?}
|
1374
|
-
* @private
|
1375
|
-
*/
|
1376
|
-
SmartVictimDetailComponent.prototype.formBuilder;
|
1377
|
-
/**
|
1378
|
-
* @type {?}
|
1379
|
-
* @private
|
1380
|
-
*/
|
1381
|
-
SmartVictimDetailComponent.prototype.dialog;
|
1382
|
-
/**
|
1383
|
-
* @type {?}
|
1384
|
-
* @private
|
1385
|
-
*/
|
1386
|
-
SmartVictimDetailComponent.prototype.route;
|
1387
|
-
/**
|
1388
|
-
* @type {?}
|
1389
|
-
* @private
|
1390
|
-
*/
|
1391
|
-
SmartVictimDetailComponent.prototype.router;
|
1392
|
-
/** @type {?} */
|
1393
|
-
SmartVictimDetailComponent.prototype.snackBar;
|
1394
|
-
/**
|
1395
|
-
* @type {?}
|
1396
|
-
* @private
|
1397
|
-
*/
|
1398
|
-
SmartVictimDetailComponent.prototype.commonDialogService;
|
1399
|
-
/**
|
1400
|
-
* @type {?}
|
1401
|
-
* @private
|
1402
|
-
*/
|
1403
|
-
SmartVictimDetailComponent.prototype.victimService;
|
1404
|
-
}
|
1405
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3NtYXJ0L25nYy1zbWFydC12aWN0aW0vIiwic291cmNlcyI6WyJsaWIvc21hcnQtdmljdGltLWRldGFpbC9zbWFydC12aWN0aW0tZGV0YWlsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQWEsV0FBVyxFQUFDLFVBQVUsRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxTQUFTLEVBQUMsV0FBVyxFQUFpQixRQUFRLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBYyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUMsTUFBSSx1QkFBdUIsQ0FBQztBQUczRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUc1RCwrQkFFQzs7OztBQUNELDhCQUVDOzs7Ozs7O0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFNBQW9CLEVBQ3ZELFNBQXNCLEVBQ3RCLGNBQXVCO0lBQ3pCLE9BQU87Ozs7SUFBQyxXQUFXLENBQUMsRUFBRTtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQztTQUNYOztZQUNHLEtBQUssR0FBRyxJQUFJO1FBQ2hCLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDakIsS0FBSyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksY0FBYyxJQUFJLEtBQUssRUFBRTs7a0JBQ3ZCLFdBQVcsR0FBRyxFQUFFO1lBQ3RCLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDcEMsS0FBSyxHQUFHLFdBQVcsQ0FBQTtTQUNsQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2IsQ0FBQyxFQUFDLENBQUE7QUFDRixDQUFDOzs7Ozs7O0FBR0QsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFNBQW1CLEVBQzVELFNBQXNCLEVBQ3RCLGNBQXVCO0lBQ3pCLE9BQU87Ozs7SUFBQyxXQUFXLENBQUMsRUFBRTtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQztTQUNYOztZQUNHLEtBQUssR0FBRyxJQUFJO1FBQ2hCLElBQUksU0FBUyxFQUFFLElBQUUsSUFBSSxFQUFFO1lBQ3ZCLEtBQUssR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFJLGNBQWMsSUFBSSxLQUFLLEVBQUU7O2tCQUN2QixXQUFXLEdBQUcsRUFBRTtZQUN0QixXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLEtBQUssR0FBRyxXQUFXLENBQUE7U0FDbEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNiLENBQUMsRUFBQyxDQUFBO0FBQ0YsQ0FBQztBQVFELE1BQU0sT0FBTywwQkFBMEI7Ozs7Ozs7Ozs7O0lBd0V0QyxZQUNXLFFBQWtCLEVBQ2xCLFdBQXdCLEVBQ3hCLE1BQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZixRQUFxQixFQUNwQixtQkFBd0MsRUFDeEMsYUFBb0M7UUFQcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3BCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBL0VyQyxpQkFBWSxHQUFHLG1CQUFRLEVBQUUsRUFBQSxDQUFDO1FBS3pCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBb0J4QyxXQUFNLEdBQVUsSUFBSSxDQUFDO1FBRXJCLG1CQUFjLEdBQW9CLG1CQUFnQixFQUFFLEVBQUEsQ0FBQztRQUNyRCxtQkFBYyxHQUFtQixtQkFBZ0IsRUFBRSxFQUFBLENBQUM7UUFNcEQsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLHlCQUFvQixHQUFhLEtBQUssQ0FBQztRQUN2QywwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFDOUIsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLGFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLDBDQUEwQyxDQUFDO1FBQzFELGdCQUFXLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLGVBQVUsR0FBVyxtQkFBUSxFQUFFLEVBQUEsQ0FBQztRQUVoQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixzQkFBaUIsR0FBRSxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFFNUMsMkJBQXNCLEdBQWEsS0FBSyxDQUFDO1FBQ3pDLDJCQUFzQixHQUFhLEtBQUssQ0FBQztRQUN6Qyx3QkFBbUIsR0FBYSxLQUFLLENBQUM7UUFDdEMsMkJBQXNCLEdBQVksSUFBSSxDQUFDO1FBQ3ZDLDJCQUFzQixHQUFhLElBQUksQ0FBQztRQUV4QyxzQkFBaUIsR0FBc0I7WUFDckMsTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQVdHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVPLFFBQVE7UUFFZixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLG9CQUFvQixFQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDdEYsZ0NBQWdDLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNoRyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN6RSxTQUFTLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMxRSxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDL0IsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUMvQixVQUFVLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ2hDLFNBQVMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDaEMsU0FBUyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBQyxDQUFDO1lBQzNGLFNBQVMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFFLENBQUMsQ0FBQztZQUMzRixTQUFTLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFDLENBQUM7WUFDM0YsS0FBSyxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUUsQ0FBQyxDQUFDO1lBQ3ZGLFNBQVMsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLGtCQUFrQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbkYsZ0JBQWdCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ3RDLGlCQUFpQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRTtZQUN2QyxnQkFBZ0IsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDdEMsZ0JBQWdCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHOztZQUV2QyxpQkFBaUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDeEMsbUJBQW1CLEVBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1lBRXpDLGlCQUFpQixFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBRSxDQUFDO1lBQ25HLGlCQUFpQixFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBRSxDQUFDO1lBQ25HLGlCQUFpQixFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBRSxDQUFDO1lBR25HLGFBQWEsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFFLENBQUMsQ0FBQztZQUMvRixtQkFBbUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFHMUMsaUJBQWlCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFFLENBQUM7WUFDcEcsaUJBQWlCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFFLENBQUM7WUFDcEcsaUJBQWlCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFFLENBQUM7WUFHckcsZ0JBQWdCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ3RDLGdCQUFnQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUN2QyxpQkFBaUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsMEJBQTBCOzs7WUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDbEssZ0JBQWdCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLDBCQUEwQjs7O1lBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLEdBQUUsVUFBVSxDQUFDLFFBQVEsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9KLGFBQWEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFFLENBQUMsQ0FBQztZQUNoRyxnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDdkMscUJBQXFCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFDLENBQUM7WUFDdEcsaUJBQWlCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ3hDLFlBQVksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDbkMsYUFBYSxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNuQyxnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDdkMsZUFBZSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUN0QyxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQzNCLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDN0IsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUM5QixrQkFBa0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDekMsb0JBQW9CLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQzFDLGlCQUFpQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUN4QyxpQkFBaUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDeEMsVUFBVSxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNoQyxXQUFXLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ2pDLGtCQUFrQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUN6QyxrQkFBa0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDekMsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNsQyxTQUFTLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ2hDLGNBQWMsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDcEMsY0FBYyxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNwQyxnQkFBZ0IsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDdEMsY0FBYyxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNwQyxxQkFBcUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7U0FHakQsQ0FBQyxDQUFDO1FBRUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBRWpDLENBQUM7Ozs7O0lBRU8sVUFBVTtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBRXZCLE9BQU87U0FDUjtRQUFBLENBQUM7UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVM7Ozs7Z0JBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM1QixDQUFDLEVBQUMsQ0FBQzthQUNKO1lBRUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztpQkFDMUMsU0FBUzs7OztZQUFDLENBQUMsTUFBYyxFQUFFLEVBQUU7Z0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsbUJBQVEsTUFBTSxFQUFBLENBQUM7O29CQUU3QixZQUFZLEdBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTzs7OztnQkFBRSxDQUFDLENBQUEsRUFBRSxHQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQTs7c0JBQ3BGLHFCQUFxQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUNuRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7O29CQUd6QyxjQUFjLEdBQUUsRUFBRTs7b0JBQ2xCLFdBQVcsR0FBRyxFQUFFO2dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU87Ozs7Z0JBQUUsQ0FBQyxDQUFBLEVBQUU7b0JBQzNDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksT0FBTyxFQUFDO3dCQUM1QixXQUFXLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7cUJBQzdCO2dCQUVILENBQUMsRUFBRyxDQUFBOztzQkFHRSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDdkUsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDOztzQkFFM0Msa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7OztvQkFLckMsV0FBVyxHQUFFLEVBQUU7O29CQUNmLFNBQVMsR0FBRyxFQUFFO2dCQUVsQixPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7Z0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTzs7OztnQkFBRSxDQUFDLENBQUEsRUFBRTtvQkFFekMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLElBQUksRUFBQzt3QkFDeEIsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO3dCQUMxQixDQUFDLENBQUMsVUFBVSxHQUFFLE9BQU8sQ0FBQztxQkFFdkI7b0JBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRWpDLENBQUMsRUFBRyxDQUFBO2dCQUVKLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQzs7c0JBSW5CLHFCQUFxQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUNuRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7O3NCQUV0QyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFJckMsU0FBUztnQkFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUzs7OztnQkFDckQsV0FBVyxDQUFDLEVBQUU7b0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7b0JBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDakQsQ0FBQyxFQUNGLENBQUM7Z0JBRUYsZ0JBQWdCO2dCQUVoQixJQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEtBQUssS0FBSyxFQUFFO29CQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7aUJBQzFEO2dCQUNELElBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLEVBQUU7b0JBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztpQkFDMUQ7WUFFSCxDQUFDOzs7O1lBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMscUVBQXFFLENBQUMsQ0FBQztZQUM1RixDQUFDLEVBQUMsQ0FBQztZQUNMLE9BQU87U0FDUjthQUFNO1lBQ0gsS0FBSztTQUVQO0lBQ0YsQ0FBQzs7OztJQUVELFdBQVc7SUFFWCxDQUFDOzs7OztJQUVELGVBQWUsQ0FBQyxTQUFTO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFDRCx1QkFBdUIsQ0FBQyxtQkFBbUI7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxDQUFDLENBQUE7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFJLG1CQUFtQixDQUFDO0lBQ2hELENBQUM7Ozs7O0lBQ0QsdUJBQXVCLENBQUMsbUJBQW1CO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQyxDQUFBO1FBQ3BFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztJQUMvQyxDQUFDOzs7O0lBQ0QsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7OztJQUtDLFFBQVE7UUFFTixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7Ozs7Y0FNckIsc0JBQXNCLEdBQUcsRUFBQyxHQUFHOzs7WUFBQztnQkFBbUIsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFDO29CQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztpQkFBQztnQkFDakcsSUFBRyxJQUFJLENBQUMsU0FBUyxJQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFDeEU7OzBCQUFPLGlCQUFpQixHQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztvQkFBQyxDQUFDLG1CQUFBLGlCQUFpQixFQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUMsSUFBSSxDQUFDO29CQUM5RCxPQUFNLENBQUMsVUFBVSxJQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFBQztnQkFDL0UsT0FBTyxLQUFLLENBQUM7WUFBQSxDQUFDLENBQUEsRUFBQyxHQUFHOzs7O1lBQUMsVUFBUyxLQUFhLElBQUUsSUFBSSxDQUFDLFNBQVMsR0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQSxHQUFFO1FBQzFGLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsc0JBQXNCLENBQUUsQ0FBQztRQUM3RSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLHNCQUFzQixDQUFFLENBQUM7UUFDOUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxzQkFBc0IsQ0FBRSxDQUFDO1FBQ3RGLG9CQUFvQjtRQUluQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUUsSUFBSSxFQUFFO1lBQzNCLGNBQWM7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFFLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBRTNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFHbkQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixJQUFFLElBQUksRUFBQztnQkFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7YUFDaEM7WUFFRixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFDOztzQkFDekIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUM3RCxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBRXZEO1lBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBQzs7c0JBQ3ZCLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDekQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUVyRDtZQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1lBQ2xFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1lBQ2xFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1lBQ2xFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztZQUM5RCxJQUFJLENBQUMsaUJBQWlCLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztZQUU5RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FFbkI7YUFBTTtZQUNMLGdCQUFnQjtZQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFDLG1CQUFtQixFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1NBRXpEO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDdkQsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUMsRUFDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQ3ZDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLEVBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUzs7OztRQUN4QyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxFQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDeEMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUMsRUFDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDakQsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsTUFBTTs7OztZQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLHNCQUFzQixLQUFLLElBQUksQ0FBRSxFQUFDLENBQUM7UUFDM0gsQ0FBQyxFQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDNUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQyxFQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDM0MsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsRUFDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQzFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7WUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxFQUNGLENBQUM7UUFDRiwrREFBK0Q7UUFDL0Qsc0JBQXNCO1FBQ3RCLCtCQUErQjtRQUMvQixNQUFNO1FBRU4sS0FBSztRQUVMLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVk7YUFDNUMsU0FBUzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLHFFQUFxRTtZQUNyRSxvRUFBb0U7WUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFdEUsQ0FBQyxFQUFDLENBQUM7UUFHSCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFlBQVk7YUFDckQsU0FBUzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUV0RSxDQUFDLEVBQUMsQ0FBQztJQUVMLENBQUM7Ozs7SUFFRCxJQUFJO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXRDLENBQUM7Ozs7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQjthQUN2QixPQUFPLENBQUMsRUFBRSxFQUFFLG9DQUFvQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7YUFDOUQsU0FBUzs7OztRQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBSSxHQUFHLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3FCQUMxRCxTQUFTOzs7O2dCQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLEVBQUU7d0JBQzdDLFFBQVEsRUFBRSxJQUFJO3FCQUFHLENBQUMsQ0FBQztnQkFBQSxDQUFDLEVBRXRCLENBQUM7Z0JBQ0gsb0NBQW9DO2dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdkM7UUFDSixDQUFDLEVBQUMsQ0FBQztJQUVOLENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsTUFBc0I7UUFDdEMsMkVBQTJFO1FBQzFFLDRFQUE0RTtRQUc1RSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzdCLDhEQUE4RDtZQUM5RCwrREFBK0Q7WUFDOUQsb0RBQW9EO1NBR3JEO2FBQ0c7WUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM5Qiw2Q0FBNkM7WUFDN0MsOENBQThDO1NBRzlDO1FBRUgsbURBQW1EO1FBQ2xELHFEQUFxRDtJQUV0RCxDQUFDOzs7OztJQUVELG1CQUFtQixDQUFDLE1BQXNCOztjQUVsQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQzs7Y0FDakUsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7UUFDekUsNkVBQTZFO1FBSTdFLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsdUJBQXVCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBRzdEO2FBQ0c7WUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUU3Qix1QkFBdUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQyx3QkFBd0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUU1QztRQUVELHVCQUF1QixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDakQsd0JBQXdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUVwRCxDQUFDOzs7OztJQUVELGNBQWMsQ0FBQyxNQUFzQjtRQUNuQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7WUFDbEMsZ0JBQWdCO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUN0QzthQUNHO1lBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztTQUNwQztJQUNILENBQUM7Ozs7O0lBRUQsYUFBYSxDQUFDLElBQUk7UUFDaEIsSUFBRyxJQUFJLElBQUksZ0JBQWdCLEVBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0U7YUFDSSxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FFNUU7SUFDRixDQUFDOzs7OztJQUNELGtCQUFrQixDQUFDLE1BQXNCO1FBQ3ZDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztTQUNuQzthQUNHO1lBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztTQUNwQztJQUNILENBQUM7Ozs7O0lBQ0QsaUJBQWlCLENBQUMsTUFBc0I7UUFDdEMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1NBQ25DO2FBQ0c7WUFDRixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzs7Ozs7SUFDRCxlQUFlLENBQUMsTUFBc0I7UUFDcEMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjthQUNHO1lBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDN0I7SUFDSCxDQUFDOzs7OztJQUVELGNBQWMsQ0FBQyxNQUFzQjtRQUNuQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjthQUNHO1lBQ0YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztTQUNuQztJQUNILENBQUM7Ozs7O0lBRUQsZUFBZSxDQUFDLE1BQU07O1lBQ2pCLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUksTUFBTSxDQUFDLEtBQUs7O1lBQ3JDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUM7WUFFaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMseUlBQXlJLEVBQUUsRUFBRSxFQUFFO2dCQUNsSyxRQUFRLEVBQUUsSUFBSTthQUFFLENBQUMsQ0FBQzs7a0JBQ1osWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztZQUNyRCxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLDRFQUE0RTtZQUMzRSw2RUFBNkU7WUFHNUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDN0IsOERBQThEO1lBQy9ELGdFQUFnRTtTQUlqRTtJQUVILENBQUM7Ozs7O0lBQ0QsZ0JBQWdCLENBQUMsU0FBUzs7Y0FFbEIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBQzVELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixrQkFBa0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBRXJEO2FBQUk7WUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN0QztRQUNGLGtCQUFrQixDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsQ0FBQzs7Ozs7SUFFRCxjQUFjLENBQUMsT0FBTzs7Y0FFZCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFDeEQsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7U0FHbkQ7YUFBSTtZQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDO1NBR3BDO1FBQ0YsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzs7OztJQUdELFVBQVU7UUFDUiwyQ0FBMkM7UUFFN0Msc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFDN0M7WUFDRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFDO2dCQUMxQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBQztvQkFDbkQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxFQUFFLEVBQUM7d0JBQy9DLElBQUksQ0FBQyxzQkFBc0IsR0FBSSxJQUFJLENBQUM7cUJBQ3pDO2lCQUNGO2FBQ0E7WUFJRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBQztnQkFDekQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUM7b0JBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssRUFBRSxFQUFDO3dCQUMvQyxJQUFJLENBQUMsc0JBQXNCLEdBQUksSUFBSSxDQUFDO3FCQUN6QztpQkFDRjthQUNBO1lBR0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBQztnQkFDMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUM7b0JBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEtBQUssRUFBRSxFQUFDO3dCQUM5QyxJQUFJLENBQUMsc0JBQXNCLEdBQUksSUFBSSxDQUFDO3FCQUN6QztpQkFDRjthQUNBO1NBRUY7UUFFQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBR3pDLElBQUksSUFBSSxDQUFDLHNCQUFzQixLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLEVBQ2hHO1lBRU0sSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsbUJBQW1CO2lCQUN2QixPQUFPLENBQUMsRUFBRSxFQUFFLHdGQUF3RixFQUFFLElBQUksQ0FBQztpQkFDM0csU0FBUzs7OztZQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUFFLElBQUksQ0FBQyxNQUFNLEdBQUksR0FBRyxDQUFDO1lBRXRDLENBQUMsRUFBQyxDQUFDO1NBQ1I7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUxQyxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUM5QztZQUNFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUM7Z0JBQzFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFDO29CQUNuRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLEVBQUUsRUFBQzt3QkFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFJLElBQUksQ0FBQztxQkFDekM7aUJBQ0Y7YUFDQTtZQUlELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFDO2dCQUN6RCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBQztvQkFDbkQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxFQUFFLEVBQUM7d0JBQy9DLElBQUksQ0FBQyxzQkFBc0IsR0FBSSxJQUFJLENBQUM7cUJBQ3pDO2lCQUNGO2FBQ0E7WUFHRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFDO2dCQUMxQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBQztvQkFDbkQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxFQUFFLEVBQUM7d0JBQzlDLElBQUksQ0FBQyxzQkFBc0IsR0FBSSxJQUFJLENBQUM7cUJBQ3pDO2lCQUNGO2FBQ0E7U0FFRDtRQUVBLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUN6RCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFekMsSUFBRyxJQUFJLENBQUMsc0JBQXNCLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG1CQUFtQixLQUFLLEtBQUssRUFDL0Y7WUFFTSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxtQkFBbUI7aUJBQ3ZCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsd0ZBQXdGLEVBQUUsSUFBSSxDQUFDO2lCQUMzRyxTQUFTOzs7O1lBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLE1BQU0sR0FBSSxHQUFHLENBQUM7WUFFdEMsQ0FBQyxFQUFDLENBQUM7U0FDUjtRQUdBLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZDLElBQUssSUFBSSxDQUFDLG1CQUFtQixLQUFLLEtBQUssRUFBQztZQUdyQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFDOzs7b0JBRzFCLGdCQUFnQixHQUFHLEVBQUU7Z0JBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFDO29CQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTzs7OztvQkFBQyxPQUFPLENBQUMsRUFBRTs7OEJBQ2pELGFBQWEsR0FBRSxtQkFBZSxFQUFFLEVBQUE7d0JBQ2hDLGFBQWEsQ0FBQyxRQUFRLEdBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO3dCQUN2RCxhQUFhLENBQUMsbUJBQW1CLEdBQUUsT0FBTyxDQUFDO3dCQUMzQyxhQUFhLENBQUMsVUFBVSxHQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7d0JBQ3ZDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDeEMsQ0FBQyxFQUFDLENBQUM7aUJBQ047O29CQUVFLGdCQUFnQixHQUFHLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztnQkFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUM7b0JBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPOzs7O29CQUFDLE9BQU8sQ0FBQyxFQUFFOzs4QkFDbEQsYUFBYSxHQUFHLG1CQUFlLEVBQUUsRUFBQTt3QkFDdkMsYUFBYSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7d0JBRW5DLElBQUksT0FBTyxLQUFJLE9BQU8sSUFBSSxPQUFPLEtBQUssRUFBRSxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUM7NEJBQzVELGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDOzRCQUNoQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQzt5QkFDMUQ7NkJBQ0c7NEJBQ0gsYUFBYSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7NEJBQ25DLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO3lCQUMvQjt3QkFFRCxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7d0JBQ3hDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO3dCQUN4RCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3JDLENBQUMsRUFBQyxDQUFDO2lCQUNIO2dCQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0RBQW9ELENBQUMsQ0FBQztnQkFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQzs7b0JBSWhELGtCQUFrQixHQUFHLEVBQUU7Z0JBRTNCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUM7b0JBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU87Ozs7b0JBQUMsT0FBTyxDQUFDLEVBQUU7OzhCQUNoRCxlQUFlLEdBQUcsbUJBQWlCLEVBQUUsRUFBQTt3QkFDM0MsZUFBZSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7d0JBQzFELGVBQWUsQ0FBQyxZQUFZLEdBQUUsT0FBTyxDQUFDO3dCQUV0QyxJQUFJLE9BQU8sSUFBRyxPQUFPLEVBQUM7NEJBQ3JCLGVBQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO3lCQUNoRTs2QkFDRzs0QkFDSCxlQUFlLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzt5QkFDbkM7d0JBRUQsZUFBZSxDQUFDLFVBQVUsR0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUN6QyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzdDLENBQUMsRUFBQyxDQUFDO2lCQUNKOztzQkFFSyxTQUFTLEdBQUc7b0JBQ1YsUUFBUSxFQUFFLENBQUM7b0JBQ1gsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixnQ0FBZ0MsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0M7b0JBQ3ZGLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRO29CQUN4QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUztvQkFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUN2RixRQUFRLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQy9FLFFBQVEsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQSxDQUFDLENBQUMsSUFBSTtvQkFDOUUsU0FBUyxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNqRixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUEsQ0FBQyxDQUFDLElBQUk7b0JBQ3BGLG9CQUFvQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtvQkFDaEUsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVM7b0JBQzFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtvQkFDNUQsU0FBUyxFQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNwRixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQ25GLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUMsSUFBSTtvQkFDbEYsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQyxJQUFJO29CQUN0RSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDLENBQUM7b0JBQy9FLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDekcscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFBLENBQUMsQ0FBQyxJQUFJO29CQUN0SCxrQkFBa0IsRUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7b0JBQzdELG9CQUFvQixFQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtvQkFDakUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCO29CQUMxRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNySSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7b0JBQzVELGtCQUFrQixFQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtvQkFDN0QsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVc7b0JBQzlDLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjO29CQUNwRCxVQUFVLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVTtvQkFDM0MsVUFBVSxFQUFDLElBQUksQ0FBQyxPQUFPO29CQUN2QixlQUFlLEVBQUUsSUFBSTtvQkFDckIsZUFBZSxFQUFFLElBQUk7b0JBQ3JCLGNBQWMsRUFBRSxnQkFBZ0I7b0JBQ2hDLGNBQWMsRUFBRSxnQkFBZ0I7b0JBQ2hDLGdCQUFnQixFQUFFLGtCQUFrQjtvQkFFcEMsaUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsZ0JBQWdCLEVBQUUsSUFBSTtvQkFDdEIsYUFBYSxFQUFFLElBQUk7b0JBQ25CLGdCQUFnQixFQUFFLElBQUk7b0JBQ3RCLGdCQUFnQixFQUFFLElBQUk7b0JBQ3RCLG1CQUFtQixFQUFFLElBQUk7b0JBQ3pCLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGdCQUFnQixFQUFFLElBQUk7b0JBQ3RCLGFBQWEsRUFBRSxJQUFJO29CQUNuQixnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixtQkFBbUIsRUFBRSxJQUFJO29CQUN6QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixZQUFZLEVBQUUsSUFBSTtvQkFDbEIscUJBQXFCLEVBQUUsSUFBSTtpQkFHMUI7Z0JBRUwsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBQztvQkFDdkIsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQzNCO3FCQUFNO29CQUNOLFNBQVMsQ0FBQyxTQUFTLEdBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztpQkFDdEM7Z0JBRUQsU0FBUyxDQUFDLGlCQUFpQixHQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDdEQsU0FBUyxDQUFDLGlCQUFpQixHQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUzs7OztnQkFDaEQsQ0FBQyxLQUFVLEVBQUUsRUFBRTs7MEJBRVIsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFFdEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLEVBQUM7d0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7OzhCQUN4QixjQUFjLEdBQW1COzRCQUN0QyxnQkFBZ0IsRUFBRSxFQUFFOzRCQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCOzRCQUNoRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCOzRCQUNoRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCOzRCQUNoRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUEsQ0FBQyxDQUFDLElBQUk7NEJBQ2hFLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUEsQ0FBQyxDQUFDLElBQUk7NEJBQ3hHLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7NEJBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7NEJBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7NEJBQ2xELEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhOzRCQUMxQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87eUJBRzNCO3dCQUVDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3FCQUN2RTtvQkFFQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUM7OzhCQUV0QyxjQUFjLEdBQW1COzRCQUNyQyxnQkFBZ0IsRUFBRSxFQUFFOzRCQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCOzRCQUNoRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCOzRCQUNoRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCOzRCQUNoRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUEsQ0FBQyxDQUFDLElBQUk7NEJBQy9ELFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUEsQ0FBQyxDQUFDLElBQUk7NEJBQ3ZHLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7NEJBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7NEJBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7NEJBQ2xELEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhOzRCQUMxQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87eUJBRzFCO3dCQUVBLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3FCQUV2RTtvQkFFQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUFFLEVBQUU7d0JBQ2pELFFBQVEsRUFBRSxJQUFJO3FCQUNSLENBQUMsQ0FBQztvQkFFVixZQUFZO29CQUNaLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBRyxJQUFJLEVBQUM7d0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztxQkFDdEM7eUJBRUQ7d0JBQ0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO3FCQUN0QztvQkFDRCxzQ0FBc0M7Z0JBRXhDLENBQUMsRUFDRCxDQUFDO2FBRUY7aUJBQ0k7Z0JBQ0gsZUFBZTtnQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sQ0FBQyxHQUFHLENBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztnQkFFckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztnQkFDcEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsR0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQztnQkFDN0csSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUM1RCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDcEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDcEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBLENB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Qzs7SUFDakMsMkRBQXVDOztJQUN2QywwREFBdUM7O0lBQ3ZDLDJEQUF1Qzs7SUFDdkMsMkRBQXVDOztJQUN2QyxvREFBZ0M7O0lBQ2hDLGdEQUE0Qjs7SUFDNUIsK0NBQXNCOztJQUN0Qix1REFBOEI7O0lBQzlCLHVEQUE4Qjs7SUFDOUIsOENBQWlDOztJQUNqQyxrREFBMEQ7O0lBQzFELGlEQUF3Qjs7SUFDeEIsZ0RBQWdDOztJQUNoQywrQ0FBa0I7O0lBQ2xCLHFEQUFpQzs7SUFDakMsbURBQStCOztJQUUvQix1REFBNEM7O0lBQzVDLGlEQUF1Qjs7SUFDdkIsNERBQXlDOztJQUN6Qyw0REFBeUM7O0lBQ3pDLHlEQUFzQzs7SUFDdEMsNERBQXVDOztJQUN2Qyw0REFBd0M7O0lBRXhDLHVEQU9FOzs7OztJQUdBLDhDQUEwQjs7Ozs7SUFDMUIsaURBQWdDOzs7OztJQUNoQyw0Q0FBeUI7Ozs7O0lBQ3pCLDJDQUE2Qjs7Ozs7SUFDN0IsNENBQXNCOztJQUN0Qiw4Q0FBNEI7Ozs7O0lBQzVCLHlEQUFnRDs7Ozs7SUFDaEQsbURBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uQ2hhbmdlcywgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLFZhbGlkYXRvcnMsVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyxNYXRTbmFja0JhcixNYXRSYWRpb0NoYW5nZSwgTWF0SW5wdXQsIE1hdFNlbGVjdCwgTWF0UmFkaW9Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcclxuaW1wb3J0IHsgVmljdGltLFZpY3RpbURydWdVc2UsIENvbnRhY3QsIFZpY3RpbUFkdm9jYXRlLFZpY3RpbUd1YXJkaWFuLFZpY3RpbVdlYXBvblVzZSxWaWN0aW1TdXBwb3J0IH0gZnJvbSAnLi4vc21hcnQtdmljdGltLm1vZGVsJztcclxuaW1wb3J0IHsgTmdjU21hcnRWaWN0aW1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtdmljdGltLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tbW9uRGlhbG9nU2VydmljZX0gZnJvbSAnLi4vLi9jb21tb24tZGlhbG9nL2NvbW1vbi1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBmb3JtYXREYXRlLCBMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHl9ZnJvbSdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyB0cnVuY2F0ZSB9IGZyb20gJ2ZzJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IEFkZHJlc3NWYWxpZGF0b3JzLCBTbWFydEFkZHJlc3NDb21wb25lbnQgfSBmcm9tICdAY3NtYXJ0L25nYy1zbWFydC1hZGRyZXNzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbkZuIHtcclxuICAoKTogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ0ZuIHtcclxuICAoKTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29uZGl0aW9uYWxWYWxpZGF0b3IocHJlZGljYXRlOiBCb29sZWFuRm4sXHJcbiAgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbixcclxuICBlcnJvck5hbWVzcGFjZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxucmV0dXJuIChmb3JtQ29udHJvbCA9PiB7XHJcbmlmICghZm9ybUNvbnRyb2wucGFyZW50KSB7XHJcbnJldHVybiBudWxsO1xyXG59XHJcbmxldCBlcnJvciA9IG51bGw7XHJcbmlmIChwcmVkaWNhdGUoKSkge1xyXG5lcnJvciA9IHZhbGlkYXRvcihmb3JtQ29udHJvbCk7XHJcbn1cclxuaWYgKGVycm9yTmFtZXNwYWNlICYmIGVycm9yKSB7XHJcbmNvbnN0IGN1c3RvbUVycm9yID0ge307XHJcbmN1c3RvbUVycm9yW2Vycm9yTmFtZXNwYWNlXSA9IGVycm9yO1xyXG5lcnJvciA9IGN1c3RvbUVycm9yXHJcbn1cclxucmV0dXJuIGVycm9yO1xyXG59KVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ0NvbmRpdGlvbmFsVmFsaWRhdG9yKHByZWRpY2F0ZTogU3RyaW5nRm4sXHJcbiAgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbixcclxuICBlcnJvck5hbWVzcGFjZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxucmV0dXJuIChmb3JtQ29udHJvbCA9PiB7XHJcbmlmICghZm9ybUNvbnRyb2wucGFyZW50KSB7XHJcbnJldHVybiBudWxsO1xyXG59XHJcbmxldCBlcnJvciA9IG51bGw7XHJcbmlmIChwcmVkaWNhdGUoKT09J1lTJykge1xyXG5lcnJvciA9IHZhbGlkYXRvcihmb3JtQ29udHJvbCk7XHJcbn1cclxuaWYgKGVycm9yTmFtZXNwYWNlICYmIGVycm9yKSB7XHJcbmNvbnN0IGN1c3RvbUVycm9yID0ge307XHJcbmN1c3RvbUVycm9yW2Vycm9yTmFtZXNwYWNlXSA9IGVycm9yO1xyXG5lcnJvciA9IGN1c3RvbUVycm9yXHJcbn1cclxucmV0dXJuIGVycm9yO1xyXG59KVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NzbWFydC12aWN0aW0tZGV0YWlsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtdmljdGltLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtdmljdGltLWRldGFpbC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ29tbW9uRGlhbG9nU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0VmljdGltRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHZpY3RpbURldGFpbCA9IDxWaWN0aW0+e307XHJcbiAgQElucHV0KCkgc3RhZmZJZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG9mZmVuZGVySWQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc0ludGFrZTogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgXHJcblxyXG4gIHZpY3RpbUlkOiBudW1iZXI7XHJcbiAgdmljdGltRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBkcnVnczogYW55O1xyXG4gIHZpY3RpbVN1cHBvcnRUeXBlczogYW55O1xyXG4gIHByZWZpeGVzOiBhbnk7XHJcbiAgLy92aWN0aW06IFZpY3RpbSA9IDxWaWN0aW0+e307XHJcbiAgc3VmZml4ZXM6IGFueTtcclxuICByZWxhdGlvbnNoaXBUeXBlczogYW55O1xyXG4gIGdlbmRlcnM6IGFueTtcclxuICBkb2NrZXRsaXN0OiBhbnk7XHJcbiAgd2VhcG9uVHlwZXM6IGFueTtcclxuICBmbGFnT3B0aW9uOiBhbnk7XHJcbiAgc2VsZWN0ZWRXZWFwb25UeXBlczogYW55O1xyXG4gIHNlbGVjdGVkVmljdGltU3VwcG9ydFR5cGVzOiBhbnk7XHJcbiAgc2VsZWN0ZWREcnVnczogYW55O1xyXG4gIGlkOiBhbnk7XHJcbiAgaGlkZGVuOiBib29sZWFuPXRydWU7XHJcbiAgcHJpdmF0ZSBzdWI6IGFueTtcclxuICB2aWN0aW1BZHZvY2F0ZTogVmljdGltQWR2b2NhdGUgPSAgPFZpY3RpbUFkdm9jYXRlPnt9O1xyXG4gIHZpY3RpbUd1YXJkaWFuOiBWaWN0aW1HdWFyZGlhbiA9IDxWaWN0aW1HdWFyZGlhbj57fTsgXHJcbiAgdmljdGltV2VhcG9uVXNlOiBWaWN0aW1XZWFwb25Vc2U7XHJcbiAgdmljdGltU3VwcG9ydDogVmljdGltU3VwcG9ydDtcclxuICB2aWN0aW1EcnVnVXNlOiBWaWN0aW1EcnVnVXNlO1xyXG4gIHJlc3VsdDogYW55O1xyXG4gIGVkaXRNb2RlOiBhbnk7XHJcbiAgZ3VhcmRpYW5UYWJGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWR2b2NhdGVUYWJGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29tbW9uQ2hpbGRyZW5EaXZGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3BvRXhwaXJhdGlvbkRpdkZsYWcgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3VwcG9ydEluUGxhY2VEaXZGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgd2VhcG9uSW52b2x2ZWREaXZGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJ1Z1VzZURpdkZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RGVsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWRkcmVzc0lkOiBudW1iZXIgPSAwO1xyXG4gIGFkdm9jYXRlQWRkcmVzc0lkOiBudW1iZXIgPSAwO1xyXG4gIGd1YXJkaWFuQWRkcmVzc0lkOiBudW1iZXIgPSAwO1xyXG4gIGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbi1VUycpO1xyXG4gIGVtYWlsUGF0dGVybiA9IFwiXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSRcIjtcclxuICBwaG9uZU51bWJlciA9IFwiXFxcXGR7MTB9XCI7XHJcbiAgZWRpdFZpY3RpbTogVmljdGltID0gPFZpY3RpbT57fTtcclxuICB2aWN0aW1BZ2U6IG51bWJlcjtcclxuICBvdGhlcldlYXBvbkZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvdGhlckRydWdGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnRhY3REYXRhU291cmNlPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XHJcbiAgY29udGFjdExpc3Q6IENvbnRhY3RbXTtcclxuICBndWFyZGlhblBob25lRXhpc3RGbGFnOiBib29sZWFuID0gIGZhbHNlO1xyXG4gIGFkdm9jYXRlUGhvbmVFeGlzdEZsYWc6IGJvb2xlYW4gPSAgZmFsc2U7XHJcbiAgcGhvbmVWYWxpZGF0aW9uRmxhZzogYm9vbGVhbiA9ICBmYWxzZTtcclxuICBndWFyaWRhbk5vUGhvbmVDaGtGbGFnOiBib29sZWFuID0gdHJ1ZTtcclxuICBhZHZvY2F0ZU5vUGhvbmVDaGtGbGFnOiBib29sZWFuID0gIHRydWU7XHJcblxyXG4gIGFkZHJlc3NWYWxpZGF0b3JzOiBBZGRyZXNzVmFsaWRhdG9ycyA9IHtcclxuICAgIHN0cmVldDogW10sXHJcbiAgICBzdHJlZXQyOiBbXSxcclxuICAgIGNpdHk6IFtdLFxyXG4gICAgc3RhdGVDb2RlOiBbXSxcclxuICAgIHppcENvZGU6IFtdLFxyXG4gICAgcHNhQ29kZTogW10sXHJcbiAgfTtcclxuXHJcbiBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyBzbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBwcml2YXRlIGNvbW1vbkRpYWxvZ1NlcnZpY2U6IENvbW1vbkRpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpY3RpbVNlcnZpY2U6IE5nY1NtYXJ0VmljdGltU2VydmljZSkge1xyXG4gICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIGluaXRGb3JtKCkge1xyXG4gICAgXHJcbiAgICB0aGlzLnZpY3RpbUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgdW5kZXJTdXBlcnZpc2lvbkZsYWc6ICBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbIFZhbGlkYXRvcnMucmVxdWlyZWRdKSksXHJcbiAgICAgIHZpY3RpbU9mZmVuZGVyUmVsYXRpb25zaGlwVHlwZUlkOm5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFsgVmFsaWRhdG9ycy5yZXF1aXJlZF0pKSxcclxuICAgICAgbGFzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFsgVmFsaWRhdG9ycy5yZXF1aXJlZF0pKSxcclxuICAgICAgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbIFZhbGlkYXRvcnMucmVxdWlyZWRdKSksXHJcbiAgICAgIG1pZGRsZU5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgcHJlZml4SWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgc3VmZml4SWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZ2VuZGVyQ29kZTpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGJpcnRoRGF0ZTogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBob21lUGhvbmU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSkpLFxyXG4gICAgICBjZWxsUGhvbmU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSkpLFxyXG4gICAgICB3b3JrUGhvbmU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSkpLFxyXG4gICAgICBlbWFpbDpuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuZW1haWxQYXR0ZXJuKSBdKSksXHJcbiAgICAgIG1pbm9yRmxhZzpuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbIFZhbGlkYXRvcnMucmVxdWlyZWRdKSksXHJcbiAgICAgIHZpY3RpbUFkdm9jYXRlRmxhZzogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoWyBWYWxpZGF0b3JzLnJlcXVpcmVkXSkpLFxyXG4gICAgICBndWFyZGlhbkxhc3ROYW1lOm5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZ3VhcmRpYW5GaXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywpLFxyXG4gICAgICBndWFyZGlhblByZWZpeElkOm5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZ3VhcmRpYW5TdWZmaXhJZDogbmV3IEZvcm1Db250cm9sKCcnLCApLCAgICAgICAgXHJcbiAgICAgIC8vZ3VhcmRpYW5HZW5kZXI6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBndWFyZGlhbkJpcnRoRGF0ZTogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBndWFyZGlhbk5vUGhvbmVGbGFnOm5ldyBGb3JtQ29udHJvbCh0cnVlKSxcclxuXHJcbiAgICAgIGd1YXJkaWFuSG9tZVBob25lOm5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSApKSxcclxuICAgICAgZ3VhcmRpYW5DZWxsUGhvbmU6bmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLnBob25lTnVtYmVyKSBdICkpLFxyXG4gICAgICBndWFyZGlhbldvcmtQaG9uZTpuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMucGhvbmVOdW1iZXIpIF0gKSksXHJcbiAgICAgXHJcbiAgICAgXHJcbiAgICAgIGd1YXJkaWFuRW1haWw6bmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLmVtYWlsUGF0dGVybikgXSkpLFxyXG4gICAgICBhZHZvY2F0ZU5vUGhvbmVGbGFnOiBuZXcgRm9ybUNvbnRyb2wodHJ1ZSksXHJcbiAgXHJcblxyXG4gICAgICBhZHZvY2F0ZVdvcmtQaG9uZTpuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLnBob25lTnVtYmVyKSBdICkpLFxyXG4gICAgICBhZHZvY2F0ZUhvbWVQaG9uZTpuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLnBob25lTnVtYmVyKSBdICkpLFxyXG4gICAgICBhZHZvY2F0ZUNlbGxQaG9uZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoWyBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSApKSxcclxuICAgICBcclxuXHJcbiAgICAgIGFkdm9jYXRlU3VmZml4SWQ6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBhZHZvY2F0ZVByZWZpeElkOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGFkdm9jYXRlRmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIHN0cmluZ0NvbmRpdGlvbmFsVmFsaWRhdG9yKCgpID0+IHRoaXMudmljdGltRm9ybS5nZXQoJ3ZpY3RpbUFkdm9jYXRlRmxhZycpLnZhbHVlLCAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgJ2lsbHVtaW5hdGlFcnJvcicpKSxcclxuICAgICAgYWR2b2NhdGVMYXN0TmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBzdHJpbmdDb25kaXRpb25hbFZhbGlkYXRvcigoKSA9PiB0aGlzLnZpY3RpbUZvcm0uZ2V0KCd2aWN0aW1BZHZvY2F0ZUZsYWcnKS52YWx1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCwnaWxsdW1pbmF0aUVycm9yJykpLFxyXG4gICAgICBhZHZvY2F0ZUVtYWlsOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuZW1haWxQYXR0ZXJuKSBdKSksXHJcbiAgICAgIGVtZXJnZW5jeUNvbnRhY3Q6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZW1lcmdlbmN5Q29udGFjdFBob25lOm5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSkpLFxyXG4gICAgICBlbWVyZ2VuY3lDaGlsZHJlbjogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBlbWVyZ2VuY3lDcG86IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZW1lcmdlbmN5RHJ1ZzpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGVtZXJnZW5jeVN1cHBvcnQ6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZW1lcmdlbmN5V2VhcG9uOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGRydWc6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgd2VhcG9uOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIHN1cHBvcnQ6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgY29tbW9uQ2hpbGRyZW5GbGFnOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGNvbW1vbkNoaWxkcmVuTnVtYmVyOm5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgY3BvRXhwaXJhdGlvbkZsYWc6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgY3BvRXhwaXJhdGlvbkRhdGU6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgYWNjZXNzUmlzazpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGRydWdVc2VGbGFnOm5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgc3VwcG9ydEluUGxhY2VGbGFnOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIHdlYXBvbkludm9sdmVkRmxhZzogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBvdGhlcldlYXBvbjogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBvdGhlckRydWc6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgYWxjb2hvbFVzZUZsYWc6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICB2aWN0aW1TdXBwb3J0czpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIHZpY3RpbVdlYXBvblVzZXM6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICB2aWN0aW1EcnVnVXNlczpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGFsbG93Q3Nvc2FDb250YWN0RmxhZzogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgXHJcbiBcclxufSk7XHJcblxyXG4gICAgdGhpcy52aWN0aW1Gb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcblx0XHR0aGlzLnZpY3RpbUZvcm0ubWFya0FzVW50b3VjaGVkKCk7XHJcblxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIF9nZXRWaWN0aW0oKSB7XHJcbiAgICBpZiAodGhpcy52aWN0aW1JZCA9PT0gMCkgeyBcclxuICAgICAgXHJcbiAgICAgIHJldHVybjsgXHJcbiAgICB9O1xyXG5cdFx0aWYgKHRoaXMuZWRpdE1vZGUgPT0gdHJ1ZSkge1xyXG4gICAgY29uc29sZS5sb2coJ2ZpbmQgdmljdGltIGlkIGluc2lkZSBnZXRWaWN0aW0nKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltSWQpO1xyXG5cclxuICAgIGlmICh0aGlzLnZpY3RpbUlkID09PSB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuc3ViID0gdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMudmljdGltSWQgPSBwYXJhbXNbJ3ZpY3RpbUlkJ107XHJcbiAgICAgIGNvbnNvbGUubG9nKCdteSB0aGlzLnZpY3RpbUlkJyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltSWQpO1xyXG4gICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0VmljdGltKHRoaXMudmljdGltSWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZpY3RpbTogVmljdGltKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3ZpY3RpbSBkYXRhIDEnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh2aWN0aW0pO1xyXG4gICAgICAgIHRoaXMuZWRpdFZpY3RpbSA9IDxWaWN0aW0+dmljdGltO1xyXG4gICAgIFxyXG4gICAgICAgIHZhciBzdXBwb3J0c0RhdGEgPVtdO1xyXG4gICAgICAgIHRoaXMuZWRpdFZpY3RpbS52aWN0aW1TdXBwb3J0cy5mb3JFYWNoKCB0PT57c3VwcG9ydHNEYXRhLnB1c2godC52aWN0aW1TdXBwb3J0VHlwZUlkKTsgfSAgKVxyXG4gICAgICAgIGNvbnN0IHZpY3RpbVN1cHBvcnRzQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ3ZpY3RpbVN1cHBvcnRzJyk7XHJcbiAgICAgICAgdmljdGltU3VwcG9ydHNDb250cm9sLnNldFZhbHVlKHN1cHBvcnRzRGF0YSk7XHJcblxyXG5cclxuICAgICAgICB2YXIgd2VhcG9uVXNlc0RhdGEgPVtdO1xyXG4gICAgICAgIHZhciBvdGhlcldlYXBvbiA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0VmljdGltLnZpY3RpbVdlYXBvblVzZXMuZm9yRWFjaCggdD0+e1xyXG4gICAgICAgICAgd2VhcG9uVXNlc0RhdGEucHVzaCh0LndlYXBvblR5cGVJZCk7IFxyXG4gICAgICAgICAgaWYgKHQud2VhcG9uVHlwZUlkID09IFwiT1RIRVJcIil7XHJcbiAgICAgICAgICAgIG90aGVyV2VhcG9uID0gdC5vdGhlcldlYXBvbjtcclxuICAgICAgICAgICAgdGhpcy5vdGhlcldlYXBvbkZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIH0gIClcclxuXHJcblxyXG4gICAgICAgIGNvbnN0IHZpY3RpbVdlYXBvblVzZXNDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgndmljdGltV2VhcG9uVXNlcycpO1xyXG4gICAgICAgIHZpY3RpbVdlYXBvblVzZXNDb250cm9sLnNldFZhbHVlKHdlYXBvblVzZXNEYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3RoZXJXZWFwb25Db250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnb3RoZXJXZWFwb24nKTtcclxuICAgICAgICBvdGhlcldlYXBvbkNvbnRyb2wuc2V0VmFsdWUob3RoZXJXZWFwb24pO1xyXG5cclxuXHJcbiAgICAgICAgLy90aGlzLndlYXBvblVzZXNEYXRhID0gdGhpcy5lZGl0VmljdGltLnZpY3RpbVdlYXBvblVzZXM7XHJcbiAgICAgICBcclxuICAgICAgICB2YXIgZHJ1Z1VzZURhdGEgPVtdO1xyXG4gICAgICAgIHZhciBvdGhlckRydWcgPSBcIlwiO1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnbG9hZCB0aGlzLmVkaXRWaWN0aW0udmljdGltRHJ1Z1VzZXMnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmVkaXRWaWN0aW0udmljdGltRHJ1Z1VzZXMpO1xyXG4gICAgICAgIHRoaXMuZWRpdFZpY3RpbS52aWN0aW1EcnVnVXNlcy5mb3JFYWNoKCB0PT57XHJcbiAgXHJcbiAgICAgICAgICBpZiAodC5kcnVnVHlwZUlkID09PSBudWxsKXtcclxuICAgICAgICAgICAgb3RoZXJEcnVnID0gdC5vdGhlckRydWc7XHJcbiAgICAgICAgICAgIHRoaXMub3RoZXJEcnVnRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHQuZHJ1Z1R5cGVJZCA9J09USEVSJztcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcnVnVXNlRGF0YS5wdXNoKHQuZHJ1Z1R5cGVJZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgfSAgKVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygndGhpcy5lZGl0VmljdGltLnZpY3RpbURydWdVc2VzIGFmdGVyIHB1c2gnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhkcnVnVXNlRGF0YSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgY29uc3QgdmljdGltRHJ1Z1VzZXNDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgndmljdGltRHJ1Z1VzZXMnKTtcclxuICAgICAgICB2aWN0aW1EcnVnVXNlc0NvbnRyb2wuc2V0VmFsdWUoZHJ1Z1VzZURhdGEpO1xyXG5cclxuICAgICAgICBjb25zdCBvdGhlckRydWdDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnb3RoZXJEcnVnJyk7XHJcbiAgICAgICAgb3RoZXJEcnVnQ29udHJvbC5zZXRWYWx1ZShvdGhlckRydWcpO1xyXG5cclxuXHJcblxyXG4gICAgICAgIC8vY29udGFjdFxyXG4gICAgICAgIHRoaXMudmljdGltU2VydmljZS5nZXRDb250YWN0cyh0aGlzLnZpY3RpbUlkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICBjb250YWN0TGlzdCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb250YWN0TGlzdCcpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjb250YWN0TGlzdCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFjdExpc3QgPSBjb250YWN0TGlzdDsgXHJcbiAgICAgICAgICAgIHRoaXMuY29udGFjdERhdGFTb3VyY2UuZGF0YSA9IHRoaXMuY29udGFjdExpc3Q7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy9ubyBwaG9uZSBmaWVsZFxyXG5cclxuICAgICAgICBpZiAoIHRoaXMuZWRpdFZpY3RpbS5ndWFyZGlhbk5vUGhvbmVGbGFnID09PSBmYWxzZSApe1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1Gb3JtLnBhdGNoVmFsdWUoe2d1YXJkaWFuTm9QaG9uZUZsYWc6IGZhbHNlfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICggdGhpcy5lZGl0VmljdGltLmFkdm9jYXRlTm9QaG9uZUZsYWcgPT09IGZhbHNlICl7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUZvcm0ucGF0Y2hWYWx1ZSh7YWR2b2NhdGVOb1Bob25lRmxhZzogZmFsc2V9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFwiRXJyb3Igb2NjdXJlZCB3aGlsZSByZXRyaXZpbmcgVmljdGltIEluZm9ybWF0aW9uLiBQbGVhc2UgdHJ5IGFnYWluLlwiKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm47XHJcblx0XHR9IGVsc2Uge1xyXG4gICAgICAvL25ld1xyXG5cclxuICAgfVxyXG4gIH1cclxuICBcclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICBcclxuICB9XHJcblxyXG4gIG9uQWRkcmVzc0NoYW5nZShhZGRyZXNzSWQpIHsgICAgXHJcbiAgICB0aGlzLnZpY3RpbUZvcm0ucGF0Y2hWYWx1ZSh7YWRkcmVzc0lkOiBhZGRyZXNzSWR9KVxyXG4gICAgdGhpcy5hZGRyZXNzSWQgPSBhZGRyZXNzSWQ7XHJcbiAgfVxyXG4gIG9uR3VhcmRpYW5BZGRyZXNzQ2hhbmdlKE15R3VhcmRpYW5BZGRyZXNzSWQpIHsgICAgXHJcbiAgICB0aGlzLnZpY3RpbUZvcm0ucGF0Y2hWYWx1ZSh7Z3VhcmRpYW5BZGRyZXNzSWQ6IE15R3VhcmRpYW5BZGRyZXNzSWR9KVxyXG4gICAgdGhpcy5ndWFyZGlhbkFkZHJlc3NJZCA9ICBNeUd1YXJkaWFuQWRkcmVzc0lkO1xyXG4gIH1cclxuICBvbkFkdm9jYXRlQWRkcmVzc0NoYW5nZShNeUFkdm9jYXRlQWRkcmVzc0lkKSB7ICAgIFxyXG4gICAgdGhpcy52aWN0aW1Gb3JtLnBhdGNoVmFsdWUoe2Fkdm9jYXRlQWRkcmVzc0lkOiBNeUFkdm9jYXRlQWRkcmVzc0lkfSlcclxuICAgIHRoaXMuYWR2b2NhdGVBZGRyZXNzSWQgPSBNeUFkdm9jYXRlQWRkcmVzc0lkO1xyXG4gIH1cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLnZpY3RpbUZvcm0ucmVzZXQoKTtcclxufVxyXG5cclxuXHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnc2hvdyBvZmZlbmRlcklkJyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLm9mZmVuZGVySWQpO1xyXG4gICAgY29uc29sZS5sb2coJ3Nob3cgc3RhZmZJZCcpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5zdGFmZklkKTtcclxuICAgIGNvbnNvbGUubG9nKCdzaG93IGlzSW50YWtlJyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmlzSW50YWtlKTtcclxuICAgIC8vdGhpcy52aWN0aW1EZXRhaWwuZ3VhcmRpYW5Ob1Bob25lRmxhZyA9IHRydWU7XHJcbiAgICAvL3RoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbk5vUGhvbmVGbGFnID0gIHRydWU7XHJcbiAgICAvL3RoaXMudmljdGltRm9ybS5nZXQoJ2d1YXJkaWFuTm9QaG9uZUZsYWcnKS5zZXRWYWx1ZSh0cnVlKTtcclxuXHJcbiAgICAgICAvL3JlcXVpcmVkIGZpZWxkXHJcbiAgICBjb25zdCByZXF1aXJlZEltcGxlbWVudGF0aW9uID0ge2dldDpmdW5jdGlvbigpOmJvb2xlYW57aWYodGhpcy5fcmVxdWlyZWQpe3JldHVybiB0aGlzLl9yZXF1aXJlZDt9XHJcbiAgICBpZih0aGlzLm5nQ29udHJvbCYmdGhpcy5uZ0NvbnRyb2wuY29udHJvbCYmdGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWxpZGF0b3JcclxuICAgICAgKXtjb25zdCBlbXB0eVZhbHVlQ29udHJvbD1PYmplY3QuYXNzaWduKHt9LFxyXG4gICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wpOyhlbXB0eVZhbHVlQ29udHJvbCBhcyBhbnkpLnZhbHVlPW51bGw7XHJcbiAgICAgICAgcmV0dXJuKCdyZXF1aXJlZCdpbih0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvcihlbXB0eVZhbHVlQ29udHJvbCl8fHt9KSk7fVxyXG4gICAgICAgIHJldHVybiBmYWxzZTt9LHNldDpmdW5jdGlvbih2YWx1ZTpib29sZWFuKXt0aGlzLl9yZXF1aXJlZD1jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO30sfTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWF0SW5wdXQucHJvdG90eXBlLCdyZXF1aXJlZCcscmVxdWlyZWRJbXBsZW1lbnRhdGlvbiwpO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXRTZWxlY3QucHJvdG90eXBlLCdyZXF1aXJlZCcscmVxdWlyZWRJbXBsZW1lbnRhdGlvbiwpO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXRSYWRpb0dyb3VwLnByb3RvdHlwZSwncmVxdWlyZWQnLHJlcXVpcmVkSW1wbGVtZW50YXRpb24sKTtcclxuICAgIC8vcmVxdWlyZWQgZmllbGQgZW5kXHJcblxyXG4gICAgXHJcblxyXG4gICAgIGlmICh0aGlzLnZpY3RpbURldGFpbCE9bnVsbCkge1xyXG4gICAgICAgLy8gZWRpdCByZWNvcmRcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IHRydWU7IFxyXG4gICAgICB0aGlzLnNob3dEZWxldGU9IHRydWU7ICAgICBcclxuICAgICAgdGhpcy52aWN0aW1JZCA9IHRoaXMudmljdGltRGV0YWlsLnZpY3RpbUlkO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5ndWFyZGlhblRhYkZsYWcgPSB0aGlzLnZpY3RpbURldGFpbC5taW5vckZsYWc7XHJcblxyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMudmljdGltRGV0YWlsLnZpY3RpbUFkdm9jYXRlRmxhZz09J1lTJyl7XHJcbiAgICAgICAgICAgIHRoaXMuYWR2b2NhdGVUYWJGbGFnID0gdHJ1ZTtcclxuICAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm90aGVyV2VhcG9uRmxhZyA9PSB0cnVlKXtcclxuICAgICAgICBjb25zdCBvdGhlcldlYXBvbkNvbnRyb2wgPSB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdvdGhlcldlYXBvbicpO1xyXG4gICAgICAgIG90aGVyV2VhcG9uQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMub3RoZXJEcnVnRmxhZyA9PSB0cnVlKXtcclxuICAgICAgICBjb25zdCBvdGhlckRydWdDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnb3RoZXJEcnVnJyk7XHJcbiAgICAgICAgb3RoZXJEcnVnQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jcG9FeHBpcmF0aW9uRGl2RmxhZyAgPXRoaXMudmljdGltRGV0YWlsLmNwb0V4cGlyYXRpb25GbGFnO1xyXG4gICAgICB0aGlzLmNvbW1vbkNoaWxkcmVuRGl2RmxhZyA9IHRoaXMudmljdGltRGV0YWlsLmNvbW1vbkNoaWxkcmVuRmxhZztcclxuICAgICAgdGhpcy5zdXBwb3J0SW5QbGFjZURpdkZsYWc9ICB0aGlzLnZpY3RpbURldGFpbC5zdXBwb3J0SW5QbGFjZUZsYWc7XHJcbiAgICAgIHRoaXMud2VhcG9uSW52b2x2ZWREaXZGbGFnPSAgdGhpcy52aWN0aW1EZXRhaWwud2VhcG9uSW52b2x2ZWRGbGFnO1xyXG4gICAgICB0aGlzLmRydWdVc2VEaXZGbGFnPSAgdGhpcy52aWN0aW1EZXRhaWwuZHJ1Z1VzZUZsYWc7XHJcbiAgICAgIHRoaXMuYWRkcmVzc0lkID0gdGhpcy52aWN0aW1EZXRhaWwuYWRkcmVzc0lkO1xyXG4gICAgICB0aGlzLmd1YXJkaWFuQWRkcmVzc0lkID0gIHRoaXMudmljdGltRGV0YWlsLmd1YXJkaWFuQWRkcmVzc0lkO1xyXG4gICAgICB0aGlzLmFkdm9jYXRlQWRkcmVzc0lkID0gIHRoaXMudmljdGltRGV0YWlsLmFkdm9jYXRlQWRkcmVzc0lkO1xyXG5cclxuICAgICAgdGhpcy5fZ2V0VmljdGltKCk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy9hZGQgbmV3IHJlY29yZFxyXG4gICAgICB0aGlzLnZpY3RpbUZvcm0ucGF0Y2hWYWx1ZSh7Z3VhcmRpYW5Ob1Bob25lRmxhZzogdHJ1ZX0pO1xyXG4gICAgICB0aGlzLnZpY3RpbUZvcm0ucGF0Y2hWYWx1ZSh7YWR2b2NhdGVOb1Bob25lRmxhZzogdHJ1ZX0pO1xyXG4gICBcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0RmxhZ09wdGlvblllc05vVW5rbm93bnMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbGFnT3B0aW9uID0gaXRlbXM7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0R2VuZGVycygpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmdlbmRlcnMgPSBpdGVtcztcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMudmljdGltU2VydmljZS5nZXRQcmVmaXhlcygpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnByZWZpeGVzID0gaXRlbXM7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0U3VmZml4ZXMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdWZmaXhlcyA9IGl0ZW1zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy52aWN0aW1TZXJ2aWNlLmdldFJlbGF0aW9uc2hpcFR5cGVzKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoaXRlbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVsYXRpb25zaGlwVHlwZXMgPSBpdGVtcy5maWx0ZXIoICh5KSA9PiAoeS5yZWxhdGlvbnNoaXBDYXRlZ29yeUlkID09PSAnU1QnIHx8IHkucmVsYXRpb25zaGlwQ2F0ZWdvcnlJZCA9PT0gJ0ZNJyApKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMudmljdGltU2VydmljZS5nZXRTdXBwb3J0VHlwZXMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy52aWN0aW1TdXBwb3J0VHlwZXMgPSBpdGVtcztcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMudmljdGltU2VydmljZS5nZXRXZWFwb25UeXBlcygpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLndlYXBvblR5cGVzID0gaXRlbXM7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0RHJ1Z3NUeXBlcygpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZHJ1ZyBsb29rdXAgaXRlbXMnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhpdGVtcyk7XHJcbiAgICAgICAgdGhpcy5kcnVncyA9IGl0ZW1zO1xyXG4gICAgICAgIHRoaXMuZHJ1Z3MucHVzaCh7ZHJ1Z1R5cGVJZDogJ09USEVSJywgbmFtZTogJ090aGVyJ30pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZHJ1Z3MpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgLy8gdGhpcy52aWN0aW1TZXJ2aWNlLmdldERvY2tldExpc3QodGhpcy5vZmZlbmRlcklkKS5zdWJzY3JpYmUoXHJcbiAgICAvLyAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgdGhpcy5kb2NrZXRsaXN0ID0gaXRlbXM7XHJcbiAgICAvLyAgIH1cclxuXHJcbiAgICAvLyApO1xyXG5cclxuICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ21pbm9yRmxhZycpLnZhbHVlQ2hhbmdlc1xyXG4gICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAvLyB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdndWFyZGlhbkZpcnN0TmFtZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgIC8vIHRoaXMudmljdGltRm9ybS5nZXQoJ2d1YXJkaWFuTGFzdE5hbWUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5Xb3JrUGhvbmUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5Ib21lUGhvbmUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5DZWxsUGhvbmUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICBcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICB0aGlzLnZpY3RpbUZvcm0uZ2V0KCd2aWN0aW1BZHZvY2F0ZUZsYWcnKS52YWx1ZUNoYW5nZXNcclxuICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2Fkdm9jYXRlRmlyc3ROYW1lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2Fkdm9jYXRlTGFzdE5hbWUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnYWR2b2NhdGVXb3JrUGhvbmUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnYWR2b2NhdGVIb21lUGhvbmUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnYWR2b2NhdGVDZWxsUGhvbmUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICBcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGJhY2soKXtcclxuXHJcbiAgICB0aGlzLm9uU2F2ZS5lbWl0KHRoaXMudmljdGltRGV0YWlsKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZGVsZXRlVmljdGltKCkge1xyXG4gICAgdGhpcy5jb21tb25EaWFsb2dTZXJ2aWNlXHJcbiAgICAuY29uZmlybSgnJywgJ0RvIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFZpY3RpbT8nLCAnWWVzJywgJ05vJylcclxuICAgIC5zdWJzY3JpYmUocmVzID0+IHt0aGlzLnJlc3VsdCA9ICByZXM7XHJcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMudmljdGltU2VydmljZS5kZWxldGVWaWN0aW1zKHRoaXMudmljdGltRGV0YWlsLnZpY3RpbUlkKVxyXG4gICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignRGVsZXRlIFN1Y2Nlc3NmdWxseSEnLCAnJywge1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsIH0pO31cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3ZpY3RpbSddKTtcclxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLnZpY3RpbURldGFpbCk7XHJcbiAgICAgICAgfVxyXG4gICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHJhZGlvTWlub3JDaGFuZ2UoJGV2ZW50OiBNYXRSYWRpb0NoYW5nZSl7XHJcbiAgIC8vIGNvbnN0IGd1YXJkaWFuTGFzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5MYXN0TmFtZScpO1xyXG4gICAgLy9jb25zdCBndWFyZGlhbkZpcnN0TmFtZUNvbnRyb2wgPSB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdndWFyZGlhbkZpcnN0TmFtZScpO1xyXG5cclxuICBcclxuICAgIGlmICgkZXZlbnQudmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5ndWFyZGlhblRhYkZsYWcgPSB0cnVlO1xyXG4gICAgIC8vIGd1YXJkaWFuTGFzdE5hbWVDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgLy8gZ3VhcmRpYW5GaXJzdE5hbWVDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIC8vdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuTm9QaG9uZUZsYWcgPSAgdHJ1ZTtcclxuICAgXHJcbiAgICAgXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICB0aGlzLmd1YXJkaWFuVGFiRmxhZyA9IGZhbHNlO1xyXG4gICAgIC8vIGd1YXJkaWFuTGFzdE5hbWVDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgIC8vIGd1YXJkaWFuRmlyc3ROYW1lQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICBcclxuICAgICBcclxuICAgIH1cclxuXHJcblx0XHQvL2d1YXJkaWFuTGFzdE5hbWVDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgLy8gZ3VhcmRpYW5GaXJzdE5hbWVDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgXHJcbiAgfVxyXG5cclxuICByYWRpb0Fkdm9jYXRlQ2hhbmdlKCRldmVudDogTWF0UmFkaW9DaGFuZ2Upe1xyXG5cclxuICAgIGNvbnN0IGFkdm9jYXRlTGFzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnYWR2b2NhdGVMYXN0TmFtZScpO1xyXG4gICAgY29uc3QgYWR2b2NhdGVGaXJzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnYWR2b2NhdGVGaXJzdE5hbWUnKTtcclxuICAgIC8vIGNvbnN0IGFkdm9jYXRlTm9QaG9uZUNvbnRyb2wgPSB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdhZHZvY2F0ZU5vUGhvbmVGbGFnJyk7XHJcbiAgICBcclxuICBcclxuXHJcbiAgICBpZiAoJGV2ZW50LnZhbHVlID09PSBcIllTXCIpIHtcclxuICAgICAgdGhpcy5hZHZvY2F0ZVRhYkZsYWcgPSB0cnVlO1xyXG4gICAgICBhZHZvY2F0ZUxhc3ROYW1lQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBhZHZvY2F0ZUZpcnN0TmFtZUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5hZHZvY2F0ZVRhYkZsYWcgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgICBhZHZvY2F0ZUxhc3ROYW1lQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgYWR2b2NhdGVGaXJzdE5hbWVDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBhZHZvY2F0ZUxhc3ROYW1lQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICBhZHZvY2F0ZUZpcnN0TmFtZUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICByYWRpb0NpY0NoYW5nZSgkZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKXtcclxuICAgIGlmICgkZXZlbnQudmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5jb21tb25DaGlsZHJlbkRpdkZsYWcgPSB0cnVlO1xyXG4gICAgICAvLyByZXF1cmllIGZpZWxkXHJcbiAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycygnY29tbW9uQ2hpbGRyZW4nKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuY29tbW9uQ2hpbGRyZW5EaXZGbGFnID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWxpZGF0b3JzKHR5cGUpIHtcclxuICAgIGlmKHR5cGUgPT0gJ2NvbW1vbkNoaWxkcmVuJyl7XHJcbiAgICB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdjb21tb25DaGlsZHJlbk51bWJlcicpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnY29tbW9uQ2hpbGRyZW5OdW1iZXInKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICB9XHJcbiAgIGVsc2UgaWYgKHR5cGUgPT0gJ2Nwbycpe1xyXG4gICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnY3BvRXhwaXJhdGlvbkRhdGUnKS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2Nwb0V4cGlyYXRpb25EYXRlJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgIH1cclxuICB9XHJcbiAgcmFkaW9TdXBwb3J0Q2hhbmdlKCRldmVudDogTWF0UmFkaW9DaGFuZ2Upe1xyXG4gICAgaWYgKCRldmVudC52YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnN1cHBvcnRJblBsYWNlRGl2RmxhZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICB0aGlzLnN1cHBvcnRJblBsYWNlRGl2RmxhZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICByYWRpb1dlYXBvbkNoYW5nZSgkZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKXtcclxuICAgIGlmICgkZXZlbnQudmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy53ZWFwb25JbnZvbHZlZERpdkZsYWcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy53ZWFwb25JbnZvbHZlZERpdkZsYWcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgcmFkaW9EcnVnQ2hhbmdlKCRldmVudDogTWF0UmFkaW9DaGFuZ2Upe1xyXG4gICAgaWYgKCRldmVudC52YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmRydWdVc2VEaXZGbGFnID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuZHJ1Z1VzZURpdkZsYWcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJhZGlvQ3BvQ2hhbmdlKCRldmVudDogTWF0UmFkaW9DaGFuZ2Upe1xyXG4gICAgaWYgKCRldmVudC52YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNwb0V4cGlyYXRpb25EaXZGbGFnID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKCdjcG8nKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuY3BvRXhwaXJhdGlvbkRpdkZsYWcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZURPQkNoYW5nZSgkZXZlbnQgKXtcclxuICAgdmFyIGFnZURpZk1zID0gRGF0ZS5ub3coKSAtICAkZXZlbnQudmFsdWU7XHJcbiAgIHZhciBhZ2VEYXRlID0gbmV3IERhdGUoYWdlRGlmTXMpOyBcclxuICAgIGlmKCBNYXRoLmFicyhhZ2VEYXRlLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTcwKSA8PSAxOCl7XHJcbiAgICAgXHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdWaWN0aW0gaXMgYSBNaW5vci4gVGhpcyBpbmZvcm1hdGlvbiBpcyBhIHNlbnNpdGl2ZSBhbmQgc2hvdWxkIG5vdCBiZSBkaXNjbG9zZWQgdG8gYW55IHVuYXV0aG9yaXplZCBwYXJ0aWVzLiBDb250YWN0IHRoZSBsZWdhbCBndWFyZGlhbi4nLCAnJywge1xyXG4gICAgICAgIGR1cmF0aW9uOiA2MDAwLH0pO1xyXG4gICAgICAgIGNvbnN0IG1pbm9yQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ21pbm9yRmxhZycpO1xyXG4gICAgICAgIG1pbm9yQ29udHJvbC5zZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgLy8gIGNvbnN0IGd1YXJkaWFuTGFzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5MYXN0TmFtZScpO1xyXG4gICAgICAgLy8gY29uc3QgZ3VhcmRpYW5GaXJzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5GaXJzdE5hbWUnKTtcclxuICAgICAgXHJcblxyXG4gICAgICAgIHRoaXMuZ3VhcmRpYW5UYWJGbGFnID0gdHJ1ZTtcclxuICAgICAgIC8vIGd1YXJkaWFuTGFzdE5hbWVDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIC8vICBndWFyZGlhbkZpcnN0TmFtZUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgXHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgY2hlY2tPdGhlcldlYXBvbihXZWFwb25Vc2Upe1xyXG5cclxuICAgIGNvbnN0IG90aGVyV2VhcG9uQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ290aGVyV2VhcG9uJyk7XHJcbiAgICAgaWYgKFdlYXBvblVzZS5pbmNsdWRlcyhcIk9USEVSXCIpKXtcclxuICAgICB0aGlzLm90aGVyV2VhcG9uRmxhZyA9IHRydWU7XHJcbiAgICAgb3RoZXJXZWFwb25Db250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5vdGhlcldlYXBvbkZsYWcgPSBmYWxzZTtcclxuICAgICAgb3RoZXJXZWFwb25Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgfVxyXG4gICBvdGhlcldlYXBvbkNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tPdGhlckRydWcoRHJ1Z1VzZSl7XHJcblxyXG4gICAgY29uc3Qgb3RoZXJEcnVnQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ290aGVyRHJ1ZycpO1xyXG4gICAgIGlmIChEcnVnVXNlLmluY2x1ZGVzKFwiT1RIRVJcIikpe1xyXG4gICAgIHRoaXMub3RoZXJEcnVnRmxhZyA9IHRydWU7XHJcbiAgICAgb3RoZXJEcnVnQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgXHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMub3RoZXJEcnVnRmxhZyA9IGZhbHNlO1xyXG4gICAgICBvdGhlckRydWdDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgXHJcblxyXG4gICAgfVxyXG4gICBvdGhlckRydWdDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcbiBcclxuICAvLyNyZWdpb24gXCJzYXZlIHZpY3RpbVwiXHJcbiAgc2F2ZVZpY3RpbSgpIHtcclxuICAgIC8vdmFyIG15UGF0aCAgPSAgdGhpcy5yb3V0ZXIudXJsLnNsaWNlKC0xMClcclxuXHJcbiAgLy9ndWFyZGlhbiBwaG9uZSBsb2dpY1xyXG4gIGlmICghdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuTm9QaG9uZUZsYWcpXHJcbiAgIHtcclxuICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuSG9tZVBob25lKXtcclxuICAgICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ib21lUGhvbmUgIT09IG51bGwpe1xyXG4gICAgICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuSG9tZVBob25lICE9PSBcIlwiKXtcclxuICAgICAgICAgICAgIHRoaXMuZ3VhcmRpYW5QaG9uZUV4aXN0RmxhZyA9ICB0cnVlO1xyXG4gICAgICAgfVxyXG4gICAgIH1cclxuICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbldvcmtQaG9uZSAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbldvcmtQaG9uZSAhPT0gbnVsbCl7XHJcbiAgICAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbldvcmtQaG9uZSAhPT0gXCJcIil7XHJcbiAgICAgICAgICAgIHRoaXMuZ3VhcmRpYW5QaG9uZUV4aXN0RmxhZyA9ICB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5DZWxsUGhvbmUpe1xyXG4gICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQ2VsbFBob25lICE9PSBudWxsKXtcclxuICAgICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQ2VsbGhvbmUgIT09IFwiXCIpe1xyXG4gICAgICAgICAgICB0aGlzLmd1YXJkaWFuUGhvbmVFeGlzdEZsYWcgPSAgdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuTm9QaG9uZUZsYWcnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbk5vUGhvbmVGbGFnKTtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmd1YXJkaWFuUGhvbmVFeGlzdEZsYWcnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZ3VhcmRpYW5QaG9uZUV4aXN0RmxhZyk7XHJcbiBcclxuXHJcbiAgICBpZiAodGhpcy5ndWFyZGlhblBob25lRXhpc3RGbGFnID09PSBmYWxzZSAmJiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ob1Bob25lRmxhZyA9PT0gZmFsc2UpXHJcbiAgICB7XHJcbiAgICAgXHJcbiAgICAgICAgICB0aGlzLnBob25lVmFsaWRhdGlvbkZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25EaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAud2FybmluZygnJywgJ1BsZWFzZSBjaGVjayB0aGUgZ3VhcmRpYW4gcGhvbmUgZmllbGQuIFlvdSBoYXZlIHRvIGZpbGwgb25lIG9mIHRoZSB0aHJlZSBwaG9uZSBmaWxlZHMuJywgJ09rJylcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHt0aGlzLnJlc3VsdCA9ICByZXM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLnBob25lVmFsaWRhdGlvbkZsYWcnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMucGhvbmVWYWxpZGF0aW9uRmxhZyk7XHJcblxyXG4vL2Fkdm9jYXRlIHBob25lIGxvZ2ljXHJcbmlmICghdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlTm9QaG9uZUZsYWcpXHJcbntcclxuICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlSG9tZVBob25lKXtcclxuICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVIb21lUGhvbmUgIT09IG51bGwpe1xyXG4gICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlSG9tZVBob25lICE9PSBcIlwiKXtcclxuICAgICAgICAgIHRoaXMuYWR2b2NhdGVQaG9uZUV4aXN0RmxhZyA9ICB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZVdvcmtQaG9uZSAhPT0gdW5kZWZpbmVkKXtcclxuICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZVdvcmtQaG9uZSAhPT0gbnVsbCl7XHJcbiAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZVdvcmtQaG9uZSAhPT0gXCJcIil7XHJcbiAgICAgICAgIHRoaXMuYWR2b2NhdGVQaG9uZUV4aXN0RmxhZyA9ICB0cnVlO1xyXG4gICB9XHJcbiB9XHJcbiB9XHJcblxyXG5cclxuIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVDZWxsUGhvbmUpe1xyXG4gICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlQ2VsbFBob25lICE9PSBudWxsKXtcclxuICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlQ2VsbGhvbmUgIT09IFwiXCIpe1xyXG4gICAgICAgICB0aGlzLmFkdm9jYXRlUGhvbmVFeGlzdEZsYWcgPSAgdHJ1ZTtcclxuICAgfVxyXG4gfVxyXG4gfVxyXG5cclxufVxyXG5cclxuIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVOb1Bob25lRmxhZycpO1xyXG4gY29uc29sZS5sb2codGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlTm9QaG9uZUZsYWcpO1xyXG4gY29uc29sZS5sb2coJ3RoaXMuYWR2b2NhdGVQaG9uZUV4aXN0RmxhZycpO1xyXG4gY29uc29sZS5sb2codGhpcy5hZHZvY2F0ZVBob25lRXhpc3RGbGFnKTtcclxuXHJcbiBpZih0aGlzLmFkdm9jYXRlUGhvbmVFeGlzdEZsYWcgPT09IGZhbHNlICYmIHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZU5vUGhvbmVGbGFnID09PSBmYWxzZSlcclxuIHtcclxuICBcclxuICAgICAgIHRoaXMucGhvbmVWYWxpZGF0aW9uRmxhZyA9IHRydWU7XHJcbiAgICAgICB0aGlzLmNvbW1vbkRpYWxvZ1NlcnZpY2VcclxuICAgICAgIC53YXJuaW5nKCcnLCAnUGxlYXNlIGNoZWNrIHRoZSBhZHZvY2F0ZSBwaG9uZSBmaWVsZC4gWW91IGhhdmUgdG8gZmlsbCBvbmUgb2YgdGhlIHRocmVlIHBob25lIGZpbGVkcy4nLCAnT2snKVxyXG4gICAgICAgLnN1YnNjcmliZShyZXMgPT4ge3RoaXMucmVzdWx0ID0gIHJlcztcclxuICAgICAgICAgXHJcbiAgICAgICB9KTtcclxuIH1cclxuXHJcblxyXG4gIGNvbnNvbGUubG9nKCd0aGlzLnBob25lVmFsaWRhdGlvbkZsYWcgMScpO1xyXG4gIGNvbnNvbGUubG9nKHRoaXMucGhvbmVWYWxpZGF0aW9uRmxhZyk7XHJcbiBpZiAoIHRoaXMucGhvbmVWYWxpZGF0aW9uRmxhZyA9PT0gZmFsc2Upe1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy52aWN0aW1EZXRhaWwgPT09IG51bGwpe1xyXG4gICAgICAvL2luc2VydCBuZXcgdmljdGltXHJcbiBcclxuICAgICB2YXIgbXlWaWN0aW1TdXBwb3J0cyA9IFtdO1xyXG4gICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltU3VwcG9ydHMpe1xyXG4gICAgICB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltU3VwcG9ydHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgY29uc3QgdmljdGltU3VwcG9ydD0gPFZpY3RpbVN1cHBvcnQ+e307XHJcbiAgICAgICAgICAgIHZpY3RpbVN1cHBvcnQudmljdGltSWQ9IHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1JZDtcclxuICAgICAgICAgICAgdmljdGltU3VwcG9ydC52aWN0aW1TdXBwb3J0VHlwZUlkPSBlbGVtZW50O1xyXG4gICAgICAgICAgICB2aWN0aW1TdXBwb3J0Lm1vZGlmaWVkQnk9IHRoaXMuc3RhZmZJZDtcclxuICAgICAgICAgICAgbXlWaWN0aW1TdXBwb3J0cy5wdXNoKHZpY3RpbVN1cHBvcnQpO1xyXG4gICAgICAgICB9KTtcclxuICAgICB9XHJcblxyXG4gICAgdmFyIG15VmljdGltRHJ1Z1VzZXMgPSBbXTtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgZHVyaW5nIHNhdmUnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcyk7XHJcbiAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbURydWdVc2VzKXtcclxuICAgICAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbURydWdVc2VzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgY29uc3QgdmljdGltRHJ1Z1VzZSA9IDxWaWN0aW1EcnVnVXNlPnt9O1xyXG4gICAgIHZpY3RpbURydWdVc2UuZHJ1Z1R5cGVJZCA9IGVsZW1lbnQ7XHJcblxyXG4gICAgIGlmIChlbGVtZW50ID09PVwiT1RIRVJcIiB8fCBlbGVtZW50ID09PSBcIlwiIHx8IGVsZW1lbnQgPT09IG51bGwpe1xyXG4gICAgICB2aWN0aW1EcnVnVXNlLmRydWdUeXBlSWQgPSBudWxsO1xyXG4gICAgICB2aWN0aW1EcnVnVXNlLm90aGVyRHJ1ZyA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5vdGhlckRydWc7XHJcbiAgICAgfVxyXG4gICAgIGVsc2V7XHJcbiAgICAgIHZpY3RpbURydWdVc2UuZHJ1Z1R5cGVJZCA9IGVsZW1lbnQ7XHJcbiAgICAgIHZpY3RpbURydWdVc2Uub3RoZXJEcnVnID0gbnVsbDsgXHJcbiAgICAgfVxyXG4gICAgIFxyXG4gICAgIHZpY3RpbURydWdVc2UubW9kaWZpZWRCeSA9IHRoaXMuc3RhZmZJZDtcclxuICAgICB2aWN0aW1EcnVnVXNlLnZpY3RpbUlkID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbUlkO1xyXG4gICAgIG15VmljdGltRHJ1Z1VzZXMucHVzaCh2aWN0aW1EcnVnVXNlKTtcclxuICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbURydWdVc2VzIGR1cmluZyBzYXZlIDEnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcyk7XHJcblxyXG5cclxuXHJcbiAgdmFyIG15VmljdGltV2VhcG9uVXNlcyA9IFtdO1xyXG5cclxuICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbVdlYXBvblVzZXMpe1xyXG4gICAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbVdlYXBvblVzZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgIGNvbnN0IHZpY3RpbVdlYXBvblVzZSA9IDxWaWN0aW1XZWFwb25Vc2U+e307XHJcbiAgICAgICB2aWN0aW1XZWFwb25Vc2UudmljdGltSWQ9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltSWQ7XHJcbiAgICAgICB2aWN0aW1XZWFwb25Vc2Uud2VhcG9uVHlwZUlkPSBlbGVtZW50O1xyXG5cclxuICAgICAgIGlmIChlbGVtZW50ID09XCJPVEhFUlwiKXtcclxuICAgICAgICB2aWN0aW1XZWFwb25Vc2Uub3RoZXJXZWFwb24gPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUub3RoZXJXZWFwb247XHJcbiAgICAgICB9XHJcbiAgICAgICBlbHNle1xyXG4gICAgICAgIHZpY3RpbVdlYXBvblVzZS5vdGhlcldlYXBvbiA9IG51bGw7IFxyXG4gICAgICAgfVxyXG5cclxuICAgICAgIHZpY3RpbVdlYXBvblVzZS5tb2RpZmllZEJ5PSB0aGlzLnN0YWZmSWQ7XHJcbiAgICAgICBteVZpY3RpbVdlYXBvblVzZXMucHVzaCh2aWN0aW1XZWFwb25Vc2UpO1xyXG4gICB9KTtcclxuIH1cclxuXHJcbiBjb25zdCBuZXdWaWN0aW0gPSB7XHJcbiAgICAgICAgIHZpY3RpbUlkOiAwLFxyXG4gICAgICAgICBvZmZlbmRlcklkOiB0aGlzLm9mZmVuZGVySWQsXHJcbiAgICAgICAgIHZpY3RpbU9mZmVuZGVyUmVsYXRpb25zaGlwVHlwZUlkOnRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcFR5cGVJZCxcclxuICAgICAgICAgbGFzdE5hbWU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5sYXN0TmFtZSxcclxuICAgICAgICAgZmlyc3ROYW1lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZmlyc3ROYW1lLFxyXG4gICAgICAgICBtaWRkbGVOYW1lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUubWlkZGxlTmFtZSAgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUubWlkZGxlTmFtZSA6IG51bGwsXHJcbiAgICAgICAgIHByZWZpeElkOnRoaXMudmljdGltRm9ybS52YWx1ZS5wcmVmaXhJZCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5wcmVmaXhJZCA6IG51bGwgLFxyXG4gICAgICAgICBzdWZmaXhJZDp0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VmZml4SWQgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VmZml4SWQ6IG51bGwsXHJcbiAgICAgICAgIGJpcnRoRGF0ZTp0aGlzLnZpY3RpbUZvcm0udmFsdWUuYmlydGhEYXRlPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYmlydGhEYXRlIDogbnVsbCxcclxuICAgICAgICAgZ2VuZGVyQ29kZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmdlbmRlckNvZGU/IHRoaXMudmljdGltRm9ybS52YWx1ZS5nZW5kZXJDb2RlOiBudWxsLFxyXG4gICAgICAgICB1bmRlclN1cGVydmlzaW9uRmxhZzogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnVuZGVyU3VwZXJ2aXNpb25GbGFnLFxyXG4gICAgICAgICBtaW5vckZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5taW5vckZsYWcsXHJcbiAgICAgICAgIHZpY3RpbUFkdm9jYXRlRmxhZzogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbUFkdm9jYXRlRmxhZyxcclxuICAgICAgICAgaG9tZVBob25lOiAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmhvbWVQaG9uZSA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ob21lUGhvbmUgOiBudWxsLFxyXG4gICAgICAgICB3b3JrUGhvbmU6IHRoaXMudmljdGltRm9ybS52YWx1ZS53b3JrUGhvbmUgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUud29ya1Bob25lIDogbnVsbCxcclxuICAgICAgICAgY2VsbFBob25lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY2VsbFBob25lID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmNlbGxQaG9uZTogbnVsbCxcclxuICAgICAgICAgZW1haWw6IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWFpbCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWFpbDogbnVsbCxcclxuICAgICAgICAgYWRkcmVzc0lkOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWRkcmVzc0lkID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkZHJlc3NJZDogMSxcclxuICAgICAgICAgZW1lcmdlbmN5Q29udGFjdDogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmVtZXJnZW5jeUNvbnRhY3QgID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmVtZXJnZW5jeUNvbnRhY3QgOiBudWxsLFxyXG4gICAgICAgICBlbWVyZ2VuY3lDb250YWN0UGhvbmU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWVyZ2VuY3lDb250YWN0UGhvbmUgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZW1lcmdlbmN5Q29udGFjdFBob25lOiBudWxsICxcclxuICAgICAgICAgY29tbW9uQ2hpbGRyZW5GbGFnOiAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmNvbW1vbkNoaWxkcmVuRmxhZyxcclxuICAgICAgICAgY29tbW9uQ2hpbGRyZW5OdW1iZXI6ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY29tbW9uQ2hpbGRyZW5OdW1iZXIsXHJcbiAgICAgICAgIGNwb0V4cGlyYXRpb25GbGFnOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY3BvRXhwaXJhdGlvbkZsYWcsXHJcbiAgICAgICAgIGNwb0V4cGlyYXRpb25EYXRlOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY3BvRXhwaXJhdGlvbkRhdGUgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3RhcnREYXRlLCAnc2hvcnQnKSA6IG51bGwsXHJcbiAgICAgICAgIHN1cHBvcnRJblBsYWNlRmxhZzogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnN1cHBvcnRJblBsYWNlRmxhZyxcclxuICAgICAgICAgd2VhcG9uSW52b2x2ZWRGbGFnOiAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLndlYXBvbkludm9sdmVkRmxhZyxcclxuICAgICAgICAgZHJ1Z1VzZUZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5kcnVnVXNlRmxhZyxcclxuICAgICAgICAgYWxjb2hvbFVzZUZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5hbGNvaG9sVXNlRmxhZyxcclxuICAgICAgICAgYWNjZXNzUmlzazp0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWNjZXNzUmlzayxcclxuICAgICAgICAgbW9kaWZpZWRCeTp0aGlzLnN0YWZmSWQsXHJcbiAgICAgICAgIHZWaWN0aW1BZHZvY2F0ZTogbnVsbCxcclxuICAgICAgICAgdlZpY3RpbUd1YXJkaWFuOiBudWxsLFxyXG4gICAgICAgICB2aWN0aW1EcnVnVXNlczogbXlWaWN0aW1EcnVnVXNlcyxcclxuICAgICAgICAgdmljdGltU3VwcG9ydHM6IG15VmljdGltU3VwcG9ydHMsXHJcbiAgICAgICAgIHZpY3RpbVdlYXBvblVzZXM6IG15VmljdGltV2VhcG9uVXNlcyxcclxuXHJcbiAgICAgICAgIGFkdm9jYXRlRmlyc3ROYW1lOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZUxhc3ROYW1lOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZUVtYWlsOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZVByZWZpeElkOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZVN1ZmZpeElkOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZU5vUGhvbmVGbGFnOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZUhvbWVQaG9uZTogbnVsbCxcclxuICAgICAgICAgYWR2b2NhdGVXb3JrUGhvbmU6IG51bGwsXHJcbiAgICAgICAgIGFkdm9jYXRlQ2VsbFBob25lOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZUFkZHJlc3NJZDogbnVsbCxcclxuICAgICAgICAgZ3VhcmRpYW5GaXJzdE5hbWU6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuTGFzdE5hbWU6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuRW1haWw6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuUHJlZml4SWQ6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuU3VmZml4SWQ6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuTm9QaG9uZUZsYWc6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuSG9tZVBob25lOiBudWxsLFxyXG4gICAgICAgICBndWFyZGlhbldvcmtQaG9uZTogbnVsbCxcclxuICAgICAgICAgZ3VhcmRpYW5DZWxsUGhvbmU6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuQWRkcmVzc0lkOiBudWxsLFxyXG4gICAgICAgICBndWFyZGlhbkJpcnRoRGF0ZTogbnVsbCxcclxuICAgICAgICAgcmVsYXRpb25zaGlwOiBudWxsLFxyXG4gICAgICAgICBhbGxvd0Nzb3NhQ29udGFjdEZsYWc6IG51bGxcclxuICAgICAgICAgXHJcblxyXG4gICAgICAgICB9XHJcblxyXG4gICAgIGlmICh0aGlzLmFkZHJlc3NJZCA9PSAwKXtcclxuICAgICAgbmV3VmljdGltLmFkZHJlc3NJZCA9IG51bGw7XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgbmV3VmljdGltLmFkZHJlc3NJZCA9ICB0aGlzLmFkZHJlc3NJZDtcclxuICAgICB9XHJcbiAgICAgXHJcbiAgICAgbmV3VmljdGltLmFkdm9jYXRlQWRkcmVzc0lkID0gIHRoaXMuYWR2b2NhdGVBZGRyZXNzSWQ7XHJcbiAgICAgbmV3VmljdGltLmd1YXJkaWFuQWRkcmVzc0lkID0gIHRoaXMuZ3VhcmRpYW5BZGRyZXNzSWQ7XHJcbiAgICAgIGNvbnNvbGUubG9nKCduZXdWaWN0aW0nKTtcclxuICAgICAgY29uc29sZS5sb2cobmV3VmljdGltKTtcclxuICAgICB0aGlzLnZpY3RpbVNlcnZpY2UucG9zdFZpY3RpbXMobmV3VmljdGltKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIGNvbnN0IGlkID0gaXRlbXMgPyBpdGVtcy52aWN0aW1JZCA6ICcnO1xyXG5cclxuICAgICAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1BZHZvY2F0ZUZsYWcgPT0gXCJZU1wiKXtcclxuICAgICAgICAgICBjb25zb2xlLmxvZygnYWRkIGFkdm9jYXRlJyk7XHJcbiAgICAgICAgIGNvbnN0IHZpY3RpbUFkdm9jYXRlOiBWaWN0aW1BZHZvY2F0ZSA9IHtcclxuICAgICAgICAgIHZpY3RpbUFkdm9jYXRlSWQ6IGlkLFxyXG4gICAgICAgICAgbGFzdE5hbWU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUxhc3ROYW1lLFxyXG4gICAgICAgICAgZmlyc3ROYW1lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVGaXJzdE5hbWUsXHJcbiAgICAgICAgICBwcmVmaXhJZDogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlUHJlZml4SWQsXHJcbiAgICAgICAgICBzdWZmaXhJZDogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlU3VmZml4SWQsXHJcbiAgICAgICAgICBhZGRyZXNzSWQ6IHRoaXMuYWR2b2NhdGVBZGRyZXNzSWQgPyB0aGlzLmFkdm9jYXRlQWRkcmVzc0lkOiBudWxsLFxyXG4gICAgICAgICAgbm9QaG9uZUZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZU5vUGhvbmVGbGFnID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlTm9QaG9uZUZsYWc6IG51bGwsXHJcbiAgICAgICAgICBob21lUGhvbmU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUhvbWVQaG9uZSxcclxuICAgICAgICAgIHdvcmtQaG9uZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlV29ya1Bob25lLFxyXG4gICAgICAgICAgY2VsbFBob25lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVDZWxsUGhvbmUsXHJcbiAgICAgICAgICBlbWFpbDogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlRW1haWwsXHJcbiAgICAgICAgICBtb2RpZmllZEJ5OiB0aGlzLnN0YWZmSWRcclxuICAgICAgICAgIFxyXG4gICAgXHJcbiAgICAgIH07XHJcbiAgICAgICBcclxuICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2UucG9zdFZpY3RpbUFkdm9jYXRlKGlkLCB2aWN0aW1BZHZvY2F0ZSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuIFxyXG4gICAgICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUubWlub3JGbGFnID09IHRydWUpe1xyXG4gICAgICBcclxuICAgICAgICBjb25zdCB2aWN0aW1HdWFyZGlhbjogVmljdGltR3VhcmRpYW4gPSB7XHJcbiAgICAgICAgICB2aWN0aW1HdWFyZGlhbklkOiBpZCxcclxuICAgICAgICAgIGxhc3ROYW1lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5MYXN0TmFtZSxcclxuICAgICAgICAgIGZpcnN0TmFtZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuRmlyc3ROYW1lLFxyXG4gICAgICAgICAgcHJlZml4SWQ6IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhblByZWZpeElkLCBcclxuICAgICAgICAgIHN1ZmZpeElkOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5TdWZmaXhJZCxcclxuICAgICAgICAgIGJpcnRoRGF0ZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQmlydGhEYXRlLFxyXG4gICAgICAgICAgYWRkcmVzc0lkOiB0aGlzLmd1YXJkaWFuQWRkcmVzc0lkPyB0aGlzLmd1YXJkaWFuQWRkcmVzc0lkOiBudWxsLFxyXG4gICAgICAgICAgbm9QaG9uZUZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbk5vUGhvbmVGbGFnPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ob1Bob25lRmxhZzogbnVsbCxcclxuICAgICAgICAgIGhvbWVQaG9uZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuSG9tZVBob25lLFxyXG4gICAgICAgICAgd29ya1Bob25lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Xb3JrUGhvbmUsXHJcbiAgICAgICAgICBjZWxsUGhvbmU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbkNlbGxQaG9uZSxcclxuICAgICAgICAgIGVtYWlsOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5FbWFpbCxcclxuICAgICAgICAgIG1vZGlmaWVkQnk6IHRoaXMuc3RhZmZJZFxyXG4gICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgIH07XHJcbiAgICAgICBcclxuICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2UucG9zdFZpY3RpbUd1YXJkaWFuKGlkLCB2aWN0aW1HdWFyZGlhbikuc3Vic2NyaWJlKCk7XHJcbiAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkZCBWaWN0aW0gU3VjY2Vzc2Z1bGx5IScsICcnLCB7XHJcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vaW5zZXJ0IG5ld1xyXG4gICAgICAgIGlmICh0aGlzLmlzSW50YWtlPT09dHJ1ZSl7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3ZpY3RpbUhvbWUnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3ZpY3RpbUxpc3QnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vdGhpcy5vblNhdmUuZW1pdCh0aGlzLnZpY3RpbURldGFpbCk7XHJcbiAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgKTtcclxuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy91cGRhdGUgdmljdGltXHJcbiAgICAgIGNvbnNvbGUubG9nKCcgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbU9mZmVuZGVyUmVsYXRpb25zaGlwVHlwZUlkJyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltT2ZmZW5kZXJSZWxhdGlvbnNoaXBUeXBlSWQpO1xyXG4gXHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLnVuZGVyU3VwZXJ2aXNpb25GbGFnID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnVuZGVyU3VwZXJ2aXNpb25GbGFnO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcFR5cGVJZCA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltT2ZmZW5kZXJSZWxhdGlvbnNoaXBUeXBlSWQ7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmxhc3ROYW1lID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmxhc3ROYW1lO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5maXJzdE5hbWUgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZmlyc3ROYW1lO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5taWRkbGVOYW1lID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLm1pZGRsZU5hbWU7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLnByZWZpeElkID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnByZWZpeElkID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnByZWZpeElkIDogbnVsbDtcclxuICAgICAgdGhpcy52aWN0aW1EZXRhaWwuc3VmZml4SWQgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VmZml4SWQgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VmZml4SWQgOiBudWxsO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5iaXJ0aERhdGUgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYmlydGhEYXRlO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5nZW5kZXJDb2RlID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmdlbmRlckNvZGU7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLm1pbm9yRmxhZyA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5taW5vckZsYWc7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmhvbWVQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5ob21lUGhvbmU/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ob21lUGhvbmU6IG51bGw7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLndvcmtQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS53b3JrUGhvbmU/IHRoaXMudmljdGltRm9ybS52YWx1ZS53b3JrUGhvbmU6IG51bGw7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmNlbGxQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5jZWxsUGhvbmU/IHRoaXMudmljdGltRm9ybS52YWx1ZS5jZWxsUGhvbmU6IG51bGw7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmVtYWlsID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmVtYWlsO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1BZHZvY2F0ZUZsYWcgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltQWR2b2NhdGVGbGFnO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5lbWVyZ2VuY3lDb250YWN0ID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmVtZXJnZW5jeUNvbnRhY3Q7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmVtZXJnZW5jeUNvbnRhY3RQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWVyZ2VuY3lDb250YWN0UGhvbmU/IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWVyZ2VuY3lDb250YWN0UGhvbmU6IG51bGw7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmNvbW1vbkNoaWxkcmVuRmxhZyA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5jb21tb25DaGlsZHJlbkZsYWc7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmNvbW1vbkNoaWxkcmVuTnVtYmVyID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmNvbW1vbkNoaWxkcmVuTnVtYmVyO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5jcG9FeHBpcmF0aW9uRGF0ZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5jcG9FeHBpcmF0aW9uRGF0ZTtcclxuICAgICAgdGhpcy52aWN0aW1EZXRhaWwuY3BvRXhwaXJhdGlvbkZsYWcgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY3BvRXhwaXJhdGlvbkZsYWc7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLnN1cHBvcnRJblBsYWNlRmxhZyA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VwcG9ydEluUGxhY2VGbGFnO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC53ZWFwb25JbnZvbHZlZEZsYWcgPSAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLndlYXBvbkludm9sdmVkRmxhZztcclxuICAgICAgdGhpcy52aWN0aW1EZXRhaWwuZHJ1Z1VzZUZsYWcgPSAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmRydWdVc2VGbGFnO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5hbGNvaG9sVXNlRmxhZyA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWxjb2hvbFVzZUZsYWc7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmFjY2Vzc1Jpc2sgPSAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFjY2Vzc1Jpc2s7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmFkZHJlc3NJZCA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWRkcmVzc0lkO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5hbGxvd0Nzb3NhQ29udGFjdEZsYWcgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWxsb3dDc29zYUNvbnRhY3RGbGFnO1xyXG4gICAgIFxyXG4gICAgXHJcbiAgICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1TdXBwb3J0cyA9IFtdO1xyXG4gICAgICAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbVN1cHBvcnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgdmljdGltU3VwcG9ydD0gPFZpY3RpbVN1cHBvcnQ+e307XHJcbiAgICAgICAgICAgICAgdmljdGltU3VwcG9ydC52aWN0aW1JZD0gdGhpcy52aWN0aW1EZXRhaWwudmljdGltSWQ7XHJcbiAgICAgICAgICAgICAgdmljdGltU3VwcG9ydC52aWN0aW1TdXBwb3J0VHlwZUlkPSBlbGVtZW50O1xyXG4gICAgICAgICAgICAgIHZpY3RpbVN1cHBvcnQubW9kaWZpZWRCeT0gdGhpcy5zdGFmZklkO1xyXG4gICAgICAgICAgICAgIHRoaXMudmljdGltRGV0YWlsLnZpY3RpbVN1cHBvcnRzLnB1c2godmljdGltU3VwcG9ydCk7XHJcbiAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1EcnVnVXNlcyA9IFtdO1xyXG5cclxuICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgY2FsY3VsYXRlJylcclxuICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcylcclxuXHJcbiAgICAgICB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBjb25zdCB2aWN0aW1EcnVnVXNlID0gPFZpY3RpbURydWdVc2U+e307XHJcbiAgICAgICAgdmljdGltRHJ1Z1VzZS5kcnVnVHlwZUlkID0gZWxlbWVudDtcclxuICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgYmVmb3JlJylcclxuICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcylcclxuICAgICAgIFxyXG4gICAgICAgIGlmIChlbGVtZW50ID09PSBcIk9USEVSXCIgfHwgZWxlbWVudCA9PT0gXCJcIiAgKXtcclxuICAgICAgICAgIHZpY3RpbURydWdVc2UuZHJ1Z1R5cGVJZCA9IG51bGw7XHJcbiAgICAgICAgICB2aWN0aW1EcnVnVXNlLm90aGVyRHJ1ZyA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5vdGhlckRydWc7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHZpY3RpbURydWdVc2UuZHJ1Z1R5cGVJZCA9IGVsZW1lbnQ7XHJcbiAgICAgICAgICB2aWN0aW1EcnVnVXNlLm90aGVyRHJ1ZyA9IG51bGw7XHJcbiAgICAgICAgIH1cclxuXHJcbiAgICAgICAgdmljdGltRHJ1Z1VzZS5tb2RpZmllZEJ5ID0gdGhpcy5zdGFmZklkO1xyXG4gICAgICAgIHZpY3RpbURydWdVc2UudmljdGltSWQgPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1EcnVnVXNlcy5wdXNoKHZpY3RpbURydWdVc2UpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgYWZ0ZXInKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcylcclxuICAgICAgICBcclxuICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgIHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcy5maWx0ZXIod29yZCA9PiAoICEod29yZC5kcnVnVHlwZUlkID09PSBudWxsICAmJiB3b3JkLm90aGVyRHJ1ZyA9PT0gbnVsbCkgICAgKSk7XHJcblxyXG5cclxuICAgICAgY29uc29sZS5sb2coJ2FkanVzdCB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgJylcclxuICAgICAgY29uc29sZS5sb2codGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbURydWdVc2VzKVxyXG4gXHJcbiAgICAgdGhpcy52aWN0aW1EZXRhaWwudmljdGltV2VhcG9uVXNlcyA9IFtdO1xyXG4gICAgIHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1XZWFwb25Vc2VzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2aWN0aW1XZWFwb25Vc2UgPSA8VmljdGltV2VhcG9uVXNlPnt9O1xyXG4gICAgICAgICAgdmljdGltV2VhcG9uVXNlLnZpY3RpbUlkPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgICAgICAgIHZpY3RpbVdlYXBvblVzZS53ZWFwb25UeXBlSWQ9IGVsZW1lbnQ7ICAgXHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3dlYXBvbiBlbGVtZW50Jyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50KTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS5vdGhlcldlYXBvbik7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltV2VhcG9uVXNlcyk7XHJcblxyXG4gICAgICAgICBpZiAoZWxlbWVudCA9PVwiT1RIRVJcIil7XHJcbiAgICAgICAgICB2aWN0aW1XZWFwb25Vc2Uub3RoZXJXZWFwb249dGhpcy52aWN0aW1Gb3JtLnZhbHVlLm90aGVyV2VhcG9uO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB2aWN0aW1XZWFwb25Vc2Uub3RoZXJXZWFwb24gPSBudWxsO1xyXG4gICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdmljdGltV2VhcG9uVXNlLm1vZGlmaWVkQnk9IHRoaXMuc3RhZmZJZDtcclxuICAgICAgICAgIHRoaXMudmljdGltRGV0YWlsLnZpY3RpbVdlYXBvblVzZXMucHVzaCh2aWN0aW1XZWFwb25Vc2UpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgIFxyXG4gICAgICBjb25zb2xlLmxvZygndGhpcy52aWN0aW1EZXRhaWwgYmVmb3JlIGVtaXQnKTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy52aWN0aW1EZXRhaWwpO1xyXG5cclxuICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlLnB1dFZpY3RpbXModGhpcy52aWN0aW1EZXRhaWwudmljdGltSWQsdGhpcy52aWN0aW1EZXRhaWwpLnN1YnNjcmliZShcclxuICAgICAgICAoaXRlbXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdVcGRhdGUgU3VjY2Vzc2Z1bGx5IScsICcnLCB7XHJcbiAgICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAvL0Fkdm9jYXRlIHNlY3Rpb25cclxuXHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUFkdm9jYXRlLnZpY3RpbUFkdm9jYXRlSWQgPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgICAgICAgIHRoaXMudmljdGltQWR2b2NhdGUubGFzdE5hbWU9IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUxhc3ROYW1lO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5maXJzdE5hbWU9IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUZpcnN0TmFtZTtcclxuICAgICAgICAgIHRoaXMudmljdGltQWR2b2NhdGUucHJlZml4SWQ9IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZVByZWZpeElkID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlUHJlZml4SWQgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5zdWZmaXhJZD0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlU3VmZml4SWQgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVTdWZmaXhJZCA6IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUFkdm9jYXRlLmFkZHJlc3NJZD0gdGhpcy5hZHZvY2F0ZUFkZHJlc3NJZCA/IHRoaXMuYWR2b2NhdGVBZGRyZXNzSWQgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5ub1Bob25lRmxhZz0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlTm9QaG9uZUZsYWc/IHRydWU6IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5ob21lUGhvbmU9IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUhvbWVQaG9uZSA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUhvbWVQaG9uZSA6IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUFkdm9jYXRlLndvcmtQaG9uZT0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlV29ya1Bob25lID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlV29ya1Bob25lIDogbnVsbDtcclxuICAgICAgICAgIHRoaXMudmljdGltQWR2b2NhdGUuY2VsbFBob25lPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVDZWxsUGhvbmUgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVDZWxsUGhvbmUgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5lbWFpbD0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlRW1haWwgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVFbWFpbCA6IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUFkdm9jYXRlLm1vZGlmaWVkQnk9IHRoaXMuc3RhZmZJZDtcclxuICAgICBcclxuICAgICAgIFxyXG4gICAgICBpZiAodGhpcy52aWN0aW1EZXRhaWwudmljdGltQWR2b2NhdGVGbGFnPT0nWVMnKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmKHRoaXMudmljdGltRGV0YWlsLmFkdm9jYXRlRmlyc3ROYW1lICE9IG51bGwpe1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlLnB1dFZpY3RpbUFkdm9jYXRlKHRoaXMudmljdGltRGV0YWlsLnZpY3RpbUlkLHRoaXMudmljdGltQWR2b2NhdGUpLnN1YnNjcmliZShcclxuICAgICAgICAgIHJlc3A9Pnt9ICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhZGQgYWR2b2NhdGUnKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy52aWN0aW1BZHZvY2F0ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudmljdGltU2VydmljZS5wb3N0VmljdGltQWR2b2NhdGUodGhpcy52aWN0aW1EZXRhaWwudmljdGltSWQsIHRoaXMudmljdGltQWR2b2NhdGUpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgXHJcbiAgICAvLyBndWFyZGlhbiBzZWN0aW9uXHJcbiAgICB0aGlzLnZpY3RpbUd1YXJkaWFuLnZpY3RpbUd1YXJkaWFuSWQgPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4ubGFzdE5hbWUgPSAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuTGFzdE5hbWU7XHJcbiAgICB0aGlzLnZpY3RpbUd1YXJkaWFuLmZpcnN0TmFtZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbkZpcnN0TmFtZTtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4ucHJlZml4SWQgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5QcmVmaXhJZCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhblByZWZpeElkIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4uc3VmZml4SWQgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5TdWZmaXhJZCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhblN1ZmZpeElkIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4uYWRkcmVzc0lkID0gdGhpcy5ndWFyZGlhbkFkZHJlc3NJZCA/IHRoaXMuZ3VhcmRpYW5BZGRyZXNzSWQgOiBudWxsO1xyXG4gICAgdGhpcy52aWN0aW1HdWFyZGlhbi5ub1Bob25lRmxhZyA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ob1Bob25lRmxhZz8gdHJ1ZTogZmFsc2U7XHJcbiAgICB0aGlzLnZpY3RpbUd1YXJkaWFuLmhvbWVQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbkhvbWVQaG9uZSA/ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ib21lUGhvbmUgOiBudWxsO1xyXG4gICAgdGhpcy52aWN0aW1HdWFyZGlhbi53b3JrUGhvbmUgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Xb3JrUGhvbmUgPyAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuV29ya1Bob25lIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4uY2VsbFBob25lID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQ2VsbFBob25lID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQ2VsbFBob25lIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4uZW1haWwgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5FbWFpbCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbkVtYWlsIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4ubW9kaWZpZWRCeSA9IHRoaXMuc3RhZmZJZDtcclxuICBcclxuICAgIGlmICh0aGlzLnZpY3RpbURldGFpbC5taW5vckZsYWcgPT0gdHJ1ZSlcclxuICAgIHtcclxuICAgICAgIGlmKHRoaXMudmljdGltRGV0YWlsLmd1YXJkaWFuRmlyc3ROYW1lICE9IG51bGwgKVxyXG4gICAgICAgIHRoaXMudmljdGltU2VydmljZS5wdXRWaWN0aW1HdWFyZGlhbih0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZCx0aGlzLnZpY3RpbUd1YXJkaWFuKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzcD0+e1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnYWRkIGd1cmRpYW4nKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltR3VhcmRpYW4pO1xyXG4gICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2UucG9zdFZpY3RpbUd1YXJkaWFuKHRoaXMudmljdGltRGV0YWlsLnZpY3RpbUlkLCB0aGlzLnZpY3RpbUd1YXJkaWFuKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgIH1cclxuICAgXHJcbiAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgKTtcclxuICAgIFxyXG4gICAgfVxyXG4gIH0vL2VuZCBvZiB0aGlzLnBob25lVmFsaWRhdGlvbkZsYWcgPSBmYWxzZVxyXG4gICAgXHJcbiAgICB0aGlzLm9uU2F2ZS5lbWl0KHRoaXMudmljdGltRGV0YWlsKTtcclxuIFxyXG4gICAgICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBcInNhdmUgdmljdGltXCJcclxuICAgICAgYWRkQ29udGFjdCgpe1xyXG5cclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsndmljdGltQ29udGFjdCcsdGhpcy52aWN0aW1JZF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGZvcm1hdExhYmVsKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgXHJcbn1cclxuIl19
|