@touchpoll/tp-survey 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/tp.survey.answer/tp.survey.answer.mjs +1 -4
- package/esm2022/lib/core/tp.survey.core/tp.survey.core.service.mjs +45 -9
- package/esm2022/lib/core/tp.survey.interview/tp.survey.interview.service.mjs +1 -1
- package/fesm2022/touchpoll-tp-survey.mjs +44 -11
- package/fesm2022/touchpoll-tp-survey.mjs.map +1 -1
- package/lib/core/tp.survey.answer/tp.survey.answer.d.ts +1 -2
- package/package.json +1 -1
|
@@ -23,8 +23,5 @@ export class Answer {
|
|
|
23
23
|
this.AnswerAdditional[Number(key)] = null;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
addAnswer(answerValue, answerAdditional, asComplete) {
|
|
27
|
-
this.AnswerValue = answerValue;
|
|
28
|
-
}
|
|
29
26
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAuc3VydmV5LmFuc3dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RwLnN1cnZleS9zcmMvbGliL2NvcmUvdHAuc3VydmV5LmFuc3dlci90cC5zdXJ2ZXkuYW5zd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxNQUFNLE9BQU8sTUFBTTtJQVdqQixZQUFZLElBQVksRUFBRSxVQUFrQixDQUFDLENBQUM7UUFSckMscUJBQWdCLEdBQXFDLEVBQUUsQ0FBQztRQUN4RCw0QkFBdUIsR0FBa0IsRUFBRSxDQUFDO1FBQzVDLHVCQUFrQixHQUFrQixFQUFFLENBQUM7UUFDdkMsOEJBQXlCLEdBQTRCLEVBQUUsQ0FBQztRQUNqRSxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGdCQUFXLEdBQVEsYUFBYSxDQUFDO1FBQ2pDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7Q0FLRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVF1ZXN0aW9uQW5zd2VyfSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtBZGRpdGlvbmFsQW5zd2VyfSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkudHlwZSc7XHJcbmltcG9ydCB7TUlTU0lOR19WQUxVRX0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LmNvbnN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBBbnN3ZXIgaW1wbGVtZW50cyBJUXVlc3Rpb25BbnN3ZXIge1xyXG4gIHJlYWRvbmx5IFF1ZXN0aW9uR1VJRDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IFF1ZXN0aW9uVmVyc2lvbjogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IEFuc3dlckFkZGl0aW9uYWw6IFJlY29yZDxzdHJpbmcsIEFkZGl0aW9uYWxBbnN3ZXI+ID0ge307XHJcbiAgcmVhZG9ubHkgVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICByZWFkb25seSBWaWV3ZWRTZWN0aW9uR3VpZHM6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICByZWFkb25seSBBbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzOiBBcnJheTxbbnVtYmVyLCBudW1iZXJdPiA9IFtdO1xyXG4gIFN0YXJ0ZWRBdCA9IDA7XHJcbiAgRmluaXNoZWRBdCA9IDA7XHJcbiAgQW5zd2VyVmFsdWU6IGFueSA9IE1JU1NJTkdfVkFMVUU7XHJcbiAgYW5zd2VySXNDb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKGd1aWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyID0gLTEpIHtcclxuICAgIHRoaXMuUXVlc3Rpb25HVUlEID0gZ3VpZDtcclxuICAgIHRoaXMuUXVlc3Rpb25WZXJzaW9uID0gdmVyc2lvbjtcclxuICB9XHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLlN0YXJ0ZWRBdCA9IDA7XHJcbiAgICB0aGlzLkZpbmlzaGVkQXQgPSAwO1xyXG4gICAgdGhpcy5BbnN3ZXJWYWx1ZSA9IE1JU1NJTkdfVkFMVUU7XHJcbiAgICB0aGlzLlZpZXdlZEFsdGVybmF0aXZlVmFsdWVzLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLlZpZXdlZFNlY3Rpb25HdWlkcy5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5BbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzLmxlbmd0aCA9IDA7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLkFuc3dlckFkZGl0aW9uYWwpKSB7XHJcbiAgICAgIHRoaXMuQW5zd2VyQWRkaXRpb25hbFtOdW1iZXIoa2V5KV0gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBhZGRBbnN3ZXIoYW5zd2VyVmFsdWU6IHVua25vd24sIGFuc3dlckFkZGl0aW9uYWw6IExvZ2ljT2JqZWN0LCBhc0NvbXBsZXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLkFuc3dlclZhbHVlID0gYW5zd2VyVmFsdWU7XHJcbiAgLy8gfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -15,6 +15,7 @@ export class TpSurveyCoreService {
|
|
|
15
15
|
#surveyQuotas = new SurveyQuotas();
|
|
16
16
|
#questionary;
|
|
17
17
|
#displayedQuestions = []; // нужно для навигации по кнопке back
|
|
18
|
+
#questionLogicVarContainer = {}; //Нужно знать какая логическая переменная относится к какому вопросу. НапримерЮ когда нужно ее отчистить при переходе назад.
|
|
18
19
|
#destroyRef = inject(DestroyRef);
|
|
19
20
|
constructor(platformId, _logic, _interview) {
|
|
20
21
|
this.platformId = platformId;
|
|
@@ -86,6 +87,7 @@ export class TpSurveyCoreService {
|
|
|
86
87
|
if (!!previousQuestionNum) {
|
|
87
88
|
const prevQuestion = this.#questionary?.Questions[previousQuestionNum];
|
|
88
89
|
if (!!prevQuestion) {
|
|
90
|
+
this.#clearAnswerForCurrentQuestion(); // отчистим ответ на вопрос, если он уже есть.
|
|
89
91
|
this.#changeCurrentQuestion(prevQuestion);
|
|
90
92
|
}
|
|
91
93
|
}
|
|
@@ -94,22 +96,29 @@ export class TpSurveyCoreService {
|
|
|
94
96
|
const answer = this._interview.findAnswerByGuid(guid);
|
|
95
97
|
return answer?.answerIsComplete ?? false;
|
|
96
98
|
}
|
|
99
|
+
/*
|
|
100
|
+
* функция по номеру вопроса, ищет ответ на этот guid, и возвращает ответ на этот вопрос.
|
|
101
|
+
* если это ss ms, вместо номеров альтернатив подставляет текст.
|
|
102
|
+
* работает только для eqOL, eqSS, eqMS
|
|
103
|
+
* */
|
|
97
104
|
guidToTextAnswer(guid, languageId) {
|
|
98
105
|
const answer = this.findAnswerByGuid(guid);
|
|
99
106
|
const question = this.#findQuestionByGuid(guid);
|
|
107
|
+
//если ответа нет, ревнём пустую строку
|
|
100
108
|
if (!question || !answer || answer.AnswerValue === -97) {
|
|
101
109
|
return '';
|
|
102
110
|
}
|
|
103
111
|
const questionType = question.QuestionType;
|
|
104
|
-
console.log(0);
|
|
105
112
|
switch (questionType) {
|
|
106
113
|
case QuestionsType.eqOL: return answer.AnswerValue;
|
|
107
114
|
case QuestionsType.eqSS: {
|
|
115
|
+
//находим альтернативу и подставляем заголовок альтернативы с указанным языком, если заголовка нет, вернём alias
|
|
108
116
|
const alternative = question.Alternativelist.find(alt => alt.Value === answer.AnswerValue);
|
|
109
117
|
const altText = alternative?.MultiLangCaptions.find(obj => obj.lang === languageId);
|
|
110
118
|
return (altText?.CaptionHtml || alternative?.alias) ?? '';
|
|
111
119
|
}
|
|
112
120
|
case QuestionsType.eqMS: {
|
|
121
|
+
//всё то же самое, что и ss, только тут массив ответов,
|
|
113
122
|
const answerArray = answer.AnswerValue;
|
|
114
123
|
const alternativeArray = question.Alternativelist.filter(alt => answerArray.indexOf(alt.Value) > 0);
|
|
115
124
|
const altTextArray = alternativeArray.map(alt => (alt.MultiLangCaptions.find(obj => obj.lang === languageId)?.CaptionHtml || alt.alias) ?? '');
|
|
@@ -225,8 +234,8 @@ export class TpSurveyCoreService {
|
|
|
225
234
|
this.#eventBus.next({ key: SurveyEvents.seQuestionAnswersChange, data: { question: this.#currentQuestion.value, answerIsComplete: answer.answerIsComplete } });
|
|
226
235
|
//может возникнуть ситуация, когда нет ни одной альтернативы или секции для отображения.в этом случае вопрос показывать не нужно, как ответ записываем 0 и переходим на следующий
|
|
227
236
|
const question = this.#findQuestionByGuid(eventData.guid);
|
|
228
|
-
//ситуация для ss/ms
|
|
229
|
-
if (!!question && answer.answerIsComplete && (question.QuestionType === 'SS' || question.QuestionType === 'MS') && (eventData.viewedAlternativeValues.length === 0)) {
|
|
237
|
+
//ситуация для ss/ms вопросов и для неявных вопросов
|
|
238
|
+
if (!!question && answer.answerIsComplete && (question.QuestionType === 'SS' || question.QuestionType === 'MS') && ((eventData.viewedAlternativeValues.length === 0) || question.Implicit)) {
|
|
230
239
|
this.goToNextQuestion();
|
|
231
240
|
}
|
|
232
241
|
}
|
|
@@ -327,19 +336,31 @@ export class TpSurveyCoreService {
|
|
|
327
336
|
if (!answer) {
|
|
328
337
|
throw new Error('answer not found');
|
|
329
338
|
}
|
|
339
|
+
const logicVarSet = new Set();
|
|
340
|
+
this.#questionLogicVarContainer[question.QuestionGuid.toString()] = logicVarSet;
|
|
341
|
+
logicVarSet.add(question.SysName); //привязываем переменную к вопросу
|
|
330
342
|
this._logic.setLogicValue(question.SysName, MISSING_VALUE); // переменная самого вопроса
|
|
331
343
|
//добавим доп ответы и логику для них
|
|
332
344
|
question.AdditionalAnswerlist.forEach(aa => {
|
|
345
|
+
const aaSysName = `${question.SysName}${aa.SysName}`;
|
|
333
346
|
answer.AnswerAdditional[aa.Value] = null;
|
|
334
|
-
this._logic.setLogicValue(
|
|
347
|
+
this._logic.setLogicValue(aaSysName, MISSING_VALUE); // логика для переменных доп ответа
|
|
348
|
+
logicVarSet.add(aaSysName); //привязываем переменную к вопросу
|
|
335
349
|
});
|
|
336
350
|
// если в тексте postScript есть запись типа setVar('varName', value); нужно инициализировать переменную varName значением -97.
|
|
337
351
|
if (!!question.PostScript) {
|
|
338
|
-
(question.PostScript.match(/(\bsetvar\b)\(['|"](.*?)['|"]/gim) ?? []).map(scriptVar => scriptVar.match(/['|"](.+)['|"]/i)[1]).forEach(varName =>
|
|
352
|
+
(question.PostScript.match(/(\bsetvar\b)\(['|"](.*?)['|"]/gim) ?? []).map(scriptVar => scriptVar.match(/['|"](.+)['|"]/i)[1]).forEach(varName => {
|
|
353
|
+
logicVarSet.add(varName); //привязываем переменную к вопросу
|
|
354
|
+
this._logic.setLogicValue(varName, null);
|
|
355
|
+
});
|
|
339
356
|
}
|
|
340
357
|
// для Вопросов SS/MS нужно прописать логику альтернатив sysname вопроса + sysname альтернативы
|
|
341
358
|
if (question.Sectionlist.length <= 0) { // для Вопросов SS/MS
|
|
342
|
-
question.Alternativelist.forEach(alt =>
|
|
359
|
+
question.Alternativelist.forEach(alt => {
|
|
360
|
+
const aSysName = `${question.SysName}${alt.SysName}`;
|
|
361
|
+
this._logic.setLogicValue(aSysName, MISSING_VALUE);
|
|
362
|
+
logicVarSet.add(aSysName); //привязываем переменную к вопросу
|
|
363
|
+
});
|
|
343
364
|
}
|
|
344
365
|
else {
|
|
345
366
|
//для вопросов у которых есть секции проинициализируем каждую секцию
|
|
@@ -352,8 +373,13 @@ export class TpSurveyCoreService {
|
|
|
352
373
|
}
|
|
353
374
|
// для Вопросов SL нужно прописать логику альтернатив и секций sysname секции + sysname альтернативы
|
|
354
375
|
this._logic.setLogicValue(section.SysName, MISSING_VALUE); // переменная самой секции
|
|
376
|
+
logicVarSet.add(section.SysName); //привязываем переменную к вопросу
|
|
355
377
|
//логика альтернатив SL вопроса
|
|
356
|
-
question.Alternativelist.forEach(alt =>
|
|
378
|
+
question.Alternativelist.forEach(alt => {
|
|
379
|
+
const aSysName = `${section.SysName}${alt.SysName}`;
|
|
380
|
+
this._logic.setLogicValue(aSysName, MISSING_VALUE);
|
|
381
|
+
logicVarSet.add(aSysName); //привязываем переменную к вопросу
|
|
382
|
+
});
|
|
357
383
|
});
|
|
358
384
|
}
|
|
359
385
|
});
|
|
@@ -397,13 +423,23 @@ export class TpSurveyCoreService {
|
|
|
397
423
|
answer: questionAnswer,
|
|
398
424
|
additionalAnswers: {},
|
|
399
425
|
logicVars: {},
|
|
400
|
-
viewedAlternativeValues: [],
|
|
426
|
+
viewedAlternativeValues: Array.isArray(questionAnswer) ? questionAnswer : [questionAnswer],
|
|
401
427
|
viewedSectionGuids: [],
|
|
402
428
|
alternativeSequenceClicks: []
|
|
403
429
|
};
|
|
404
430
|
this.updateAnswer(answerChange);
|
|
405
431
|
}
|
|
406
432
|
}
|
|
433
|
+
#clearAnswerForCurrentQuestion() {
|
|
434
|
+
const currentQuestionGuid = this.#currentQuestion.value?.QuestionGuid ?? -1;
|
|
435
|
+
//удаляем сам ответ на вопрос
|
|
436
|
+
this._interview.findAnswerByGuid(currentQuestionGuid)?.clear();
|
|
437
|
+
//удаляем переменные которые относятся к этому вопросу
|
|
438
|
+
const logicSet = this.#questionLogicVarContainer[currentQuestionGuid];
|
|
439
|
+
if (!!logicSet) {
|
|
440
|
+
logicSet.forEach(sysName => this._logic.setLogicValue(sysName, MISSING_VALUE));
|
|
441
|
+
}
|
|
442
|
+
}
|
|
407
443
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TpSurveyCoreService, deps: [{ token: PLATFORM_ID }, { token: i1.TpSurveyLogicService }, { token: i2.TpSurveyInterviewService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
408
444
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TpSurveyCoreService, providedIn: 'root' }); }
|
|
409
445
|
}
|
|
@@ -416,4 +452,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
416
452
|
type: Inject,
|
|
417
453
|
args: [PLATFORM_ID]
|
|
418
454
|
}] }, { type: i1.TpSurveyLogicService }, { type: i2.TpSurveyInterviewService }] });
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAuc3VydmV5LmNvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RwLnN1cnZleS9zcmMvbGliL2NvcmUvdHAuc3VydmV5LmNvcmUvdHAuc3VydmV5LmNvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRWhFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUduQyxPQUFPLEVBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdqRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFTOUQsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7SUFDMUMsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXFCLElBQUksQ0FBQyxDQUFDO0lBQzFFLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25DLFlBQVksQ0FBa0I7SUFDOUIsbUJBQW1CLEdBQWtCLEVBQUUsQ0FBQyxDQUFDLHFDQUFxQztJQUNyRSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLFlBQWtELFVBQWtCLEVBQW1CLE1BQTRCLEVBQW1CLFVBQW9DO1FBQXhILGVBQVUsR0FBVixVQUFVLENBQVE7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFBbUIsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7UUFDeEssZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNqQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxjQUFjLENBQUUsRUFDckQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNwQyxDQUFDLFNBQVMsQ0FBQztZQUNWLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ2hMLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsa0JBQWtDLEVBQUUsU0FBcUMsRUFBRSxVQUFtQyxFQUFFLFlBQXFCO1FBQy9JLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztRQUV2QyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLHlFQUF5RTtZQUN6RSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUV0SCxzQkFBc0I7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEssQ0FBQztRQUVELHlDQUF5QztRQUN6QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVwRCxtTUFBbU07UUFDbk0sSUFBSSxnQkFBZ0IsR0FBdUIsU0FBUyxDQUFDO1FBQ3JELHNHQUFzRztRQUN0RyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEQsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFbEQsOERBQThEO1lBQzlELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRWhFLDZDQUE2QztZQUM3QyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN2QixnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLDJLQUEySztZQUMzSyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdFLENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBQyxFQUFDLENBQUMsQ0FBQztRQUUvRixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxZQUFhLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsRUFBRSxDQUFDLEdBQUcsR0FBa0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDeEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDeEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUN4QixDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsbURBQW1EO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE9BQVE7UUFDVixDQUFDO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxZQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMscURBQXFEO1FBQ3JGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsOEZBQThGO1FBQzFKLElBQUksQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDMUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVk7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxPQUFPLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxLQUFLLENBQUE7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVksRUFBRSxVQUFrQjtRQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLFFBQVEsWUFBWSxFQUFFLENBQUM7WUFFckIsS0FBSyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQ25ELEtBQUssYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRixPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsSUFBSSxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVELENBQUM7WUFDRCxLQUFLLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBNEIsQ0FBQztnQkFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNwRyxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxFQUFFLFdBQVcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQy9JLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxTQUFvQyxFQUFFLFVBQWtDO1FBQzVGLHVDQUF1QztRQUN2QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM3QixTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsdUhBQXVIO1FBQ3ZILDJFQUEyRTtRQUMzRSxNQUFNLGNBQWMsR0FBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUcsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsV0FBd0I7UUFDN0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUNwRCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXpDLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RCOzs7Z0JBR0k7WUFDSixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4RSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7WUFDMUMsQ0FBQztZQUVELDBEQUEwRDtZQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4Qyx3REFBd0Q7UUFDeEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEIsU0FBUyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7UUFFM0UsbURBQW1EO1FBQ25ELElBQUksV0FBVyxDQUFDLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBRUQseUZBQXlGO1FBQ3pGLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWUsRUFBRSxLQUFVO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXVCO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsMEpBQTBKO1FBQzFKLG1LQUFtSztRQUNuSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxLQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQztZQUU3RCwySEFBMkg7WUFDM0gsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2xCLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQzVCLE1BQU0sc0JBQXNCLEdBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3RGLElBQUksQ0FBQyxzQkFBc0IsRUFBQyxDQUFDO3dCQUMzQixPQUFNO29CQUNSLENBQUM7b0JBQ0QsTUFBTSxxQkFBcUIsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRyxTQUFTLENBQUMsTUFBdUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDakksc0JBQXNCLENBQUMsV0FBVyxHQUFHLHFCQUFxQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDbkgsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsOENBQThDO1lBQzlDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ04sdUNBQXVDO1lBQ3ZDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN4QyxDQUFDO1FBRUQsbUdBQW1HO1FBQ25HLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBRXJGLCtGQUErRjtRQUMvRixNQUFNLENBQUMsdUJBQXVCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMxQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpGLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFL0UsTUFBTSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDNUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUc3RixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBRXBILElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUMsRUFBQyxDQUFDLENBQUM7UUFFM0osaUxBQWlMO1FBQ2pMLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUQsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQThCO1FBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNwQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsSUFBSSxnQkFBZ0I7UUFDbEIsc0RBQXNEO1FBQ3RELE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQixJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLENBQUM7WUFDSCxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUFBLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVixXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBbUI7WUFDaEMsUUFBUSxFQUFFLENBQUMsRUFBSyxXQUFXO1lBQzNCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO1lBQ3RDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTztZQUMxQixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUM7WUFDL0MsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ25ELGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDO1lBQzlELFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7WUFDcEMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDakMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtZQUM3QyxhQUFhLEVBQUUsV0FBVztZQUMxQixPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN6RDtZQUNELGVBQWUsRUFBRTtnQkFDZiwwQkFBMEIsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7YUFDbkc7WUFDRCxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3BCLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQztRQUVwRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQ3BELGlCQUFpQjtRQUNqQixNQUFNLFdBQVcsR0FBRyxlQUFlLEVBQUUsWUFBWSxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDdEcsMEZBQTBGO1lBQzFGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDMUYsK0RBQStEO1lBQy9ELElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuQixPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7UUFFRCx5SkFBeUo7UUFDekosSUFBSSxlQUFlLEdBQUcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5RCxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUUsQ0FBQztZQUM1SSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsV0FBVyxDQUFDO2dCQUN0RixJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLDRDQUE0QztvQkFDaEYsZUFBZSxHQUFHLFFBQVMsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsb0VBQW9FO1FBQ3BFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDM0MsR0FBRyxDQUFDO1lBQ0YsK0JBQStCO1lBQy9CLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFhLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRXhELHVIQUF1SDtZQUN2SCxJQUFJLENBQUMsQ0FBQyxZQUFZLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRyxDQUFDO2dCQUMvSixPQUFPLGVBQWUsQ0FBQztZQUN6QixDQUFDO1lBQ0QscUVBQXFFO1lBQ3JFLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsUUFBUSxlQUFlLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLHdDQUF3QztRQUN2RixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsWUFBZ0M7UUFDakQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM5QixtQ0FBbUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFckYsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7WUFFeEYscUNBQXFDO1lBQ3JDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3pDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsbUNBQW1DO1lBQ25ILENBQUMsQ0FBQyxDQUFDO1lBRUgsaUlBQWlJO1lBQ2pJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlMLENBQUM7WUFFRCwrRkFBK0Y7WUFDL0YsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBLHFCQUFxQjtnQkFDMUQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDekgsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLG9FQUFvRTtnQkFDcEUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBRXJDLGtDQUFrQztvQkFDbEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUU5RSxtQ0FBbUM7b0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3dCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ3RDLENBQUM7b0JBRUQsb0dBQW9HO29CQUNwRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsMEJBQTBCO29CQUVyRiwrQkFBK0I7b0JBQy9CLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUN4SCxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsbUJBQW1CLENBQUMsSUFBWTtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQ2xGLGdEQUFnRDtRQUNoRCxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELDBCQUEwQixDQUFDLFFBQXFCO1FBQzlDLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssYUFBYSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRyxDQUFDO1lBQ3pILElBQUksY0FBc0MsQ0FBQztZQUUzQyxJQUFJLFFBQVEsQ0FBQyxZQUFZLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pHLGNBQWMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pELGNBQWMsR0FBRyxRQUFRLENBQUMsZUFBZTtxQkFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7cUJBQzdELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBRUQsTUFBTSxZQUFZLEdBQWlCO2dCQUNqQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFlBQVk7Z0JBQzNCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixNQUFNLEVBQUUsY0FBZTtnQkFDdkIsaUJBQWlCLEVBQUUsRUFBRTtnQkFDckIsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsdUJBQXVCLEVBQUUsRUFBRTtnQkFDM0Isa0JBQWtCLEVBQUUsRUFBRTtnQkFDdEIseUJBQXlCLEVBQUUsRUFBRTthQUM5QixDQUFBO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBRUgsQ0FBQzs4R0FsZFUsbUJBQW1CLGtCQU9WLFdBQVc7a0hBUHBCLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFRYyxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc3Ryb3lSZWYsIGluamVjdCwgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1N1cnZleVF1b3Rhc30gZnJvbSAnLi4vdHAuc2VydmV5LnF1b3RhL3RwLnN1cnZleS5xdW90YSc7XHJcbmltcG9ydCB7VHBTdXJ2ZXlMb2dpY1NlcnZpY2V9IGZyb20gJy4uL3RwLnN1cnZleS5sb2dpYy90cC5zdXJ2ZXkubG9naWMuc2VydmljZSc7XHJcbmltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7QW5zd2VyQ2hhbmdlLCBJZGJRdWVzdGlvbiwgSWRiUXVlc3Rpb25hcnksIElJbnRlcnZpZXdEYXRhLCBJSW50ZXJ2aWV3TG9naWNWYXIsIElRdWVzdGlvbkFuc3dlcn0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LmludGVyZmFjZSc7XHJcbmltcG9ydCB7VHBTdXJ2ZXlJbnRlcnZpZXdTZXJ2aWNlfSBmcm9tICcuLi90cC5zdXJ2ZXkuaW50ZXJ2aWV3L3RwLnN1cnZleS5pbnRlcnZpZXcuc2VydmljZSc7XHJcbmltcG9ydCB7UXVlc3Rpb25zVHlwZSwgUmVzdWx0YXRpdmVTdGF0dXMsIFN1cnZleUV2ZW50cywgVmFsaWRTdGF0dXN9IGZyb20gJy4uLy4uL3RwLnN1cnZleS5lbnVtJztcclxuaW1wb3J0IHtBbnN3ZXJ9IGZyb20gJy4uL3RwLnN1cnZleS5hbnN3ZXIvdHAuc3VydmV5LmFuc3dlcic7XHJcbmltcG9ydCB7QW5zd2VyU2xUeXBlLCBMb2dpY09iamVjdH0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LnR5cGUnO1xyXG5pbXBvcnQge01JU1NJTkdfVkFMVUV9IGZyb20gJy4uLy4uL3RwLnN1cnZleS5jb25zdCc7XHJcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5pbnRlcmZhY2UgQnJvYWRjYXN0RXZlbnQge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIGRhdGE/OiBhbnk7XHJcbn1cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHBTdXJ2ZXlDb3JlU2VydmljZSB7XHJcbiAgcmVhZG9ubHkgI2V2ZW50QnVzID0gbmV3IFN1YmplY3Q8QnJvYWRjYXN0RXZlbnQ+KCk7XHJcbiAgcmVhZG9ubHkgI2N1cnJlbnRRdWVzdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SWRiUXVlc3Rpb24gfCBudWxsPihudWxsKTtcclxuICAjc3VydmV5UXVvdGFzID0gbmV3IFN1cnZleVF1b3RhcygpO1xyXG4gICNxdWVzdGlvbmFyeT86IElkYlF1ZXN0aW9uYXJ5O1xyXG4gICNkaXNwbGF5ZWRRdWVzdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbXTsgLy8g0L3Rg9C20L3QviDQtNC70Y8g0L3QsNCy0LjQs9Cw0YbQuNC4INC/0L4g0LrQvdC+0L/QutC1IGJhY2tcclxuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IG9iamVjdCwgcHJpdmF0ZSByZWFkb25seSBfbG9naWM6IFRwU3VydmV5TG9naWNTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IF9pbnRlcnZpZXc6IFRwU3VydmV5SW50ZXJ2aWV3U2VydmljZSkge1xyXG4gICAgLy8g0LfQsNC/0YPRgdC60LDQvCDQv9GA0L7QstC10YDQutGDINC60LLQvtGCLCDQv9C+0YHQu9C1INGB0LrRgNGL0YLQuNGPINC60LDQttC00L7Qs9C+KNC/0L7Rh9GC0LgpINCy0L7Qv9GA0L7RgdCwIChzZVF1ZXN0aW9uSGlkZSlcclxuICAgIHRoaXMuI2V2ZW50QnVzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXHJcbiAgICAgZmlsdGVyKGV2ID0+IGV2LmtleSA9PT0gU3VydmV5RXZlbnRzLnNlUXVlc3Rpb25IaWRlICksXHJcbiAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxyXG4gICAgKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB0aGlzLiNzdXJ2ZXlRdW90YXMuZmluZEZpbGxlZFF1b3Rhcyh0aGlzLiNjdXJyZW50UXVlc3Rpb24udmFsdWU/LlF1ZXN0aW9uTnVtID8/IC0xLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9sb2dpYy5nZXRMb2dpY1ZhcnMoKSksIHRoaXMuX2ludGVydmlldy5nZXRBbnN3ZXJMaXN0KCkpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldHVwU3VydmV5KHF1ZXN0aW9uYXJ5UmF3RGF0YTogSWRiUXVlc3Rpb25hcnksIGxvZ2ljVmFycz86IEFycmF5PElJbnRlcnZpZXdMb2dpY1Zhcj4sIGFuc3dlckxpc3Q/OiBBcnJheTxJUXVlc3Rpb25BbnN3ZXI+LCBxdWVzdGlvbkd1aWQ/OiBudW1iZXIpIHtcclxuICAgIC8v0LXRgdC70Lgg0LDQvdC60LXRgtGLINC90LXRgiwg0LTQtdC70LDRgtGMINC90LXRh9C10LPQvi5cclxuICAgIGlmICghcXVlc3Rpb25hcnlSYXdEYXRhKSB7XHJcbiAgICAgIHRoaXMuI2N1cnJlbnRRdWVzdGlvbi5uZXh0KG51bGwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy4jcXVlc3Rpb25hcnkgPSBxdWVzdGlvbmFyeVJhd0RhdGE7XHJcblxyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgLy/Rg9C30L3QsNC10Lwg0LXRgdGC0Ywg0LvQuCDQstC+0L/RgNC+0YEg0LrQvtGC0L7RgNGL0Lkg0YPQutCw0LfQsNC70Lgg0LTQu9GPINC/0LXRgNC10YXQvtC00LAg0L/RgNC4INC30LDQv9C+0LvQvdC10L3QuNC4INC60LLQvtGC0YtcclxuICAgICAgY29uc3QgZGVzdGluYXRpb25RdWVzdGlvbiA9IHRoaXMuI2ZpbmRRdWVzdGlvbkJ5R3VpZChxdWVzdGlvbmFyeVJhd0RhdGEuQmFzZVBhcmFtcy5RdW90YUxpbWl0RGVzdGluYXRpb25RdWVzdGlvbkd1aWQpO1xyXG5cclxuICAgICAgLy/QuNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdC8INC60LLQvtGC0YtcclxuICAgICAgdGhpcy4jc3VydmV5UXVvdGFzLnNldFF1b3RhcyhxdWVzdGlvbmFyeVJhd0RhdGEuUXVvdGFzLCBxdWVzdGlvbmFyeVJhd0RhdGEuUXVvdGFzMmQsIGRlc3RpbmF0aW9uUXVlc3Rpb24/LlF1ZXN0aW9uR3VpZCA/PyAtMSwgZGVzdGluYXRpb25RdWVzdGlvbj8uUXVlc3Rpb25OdW0gPz8gLTEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v0YHQvtC30LTQsNC00LjQvCDQvtGC0LLQtdGC0Ysg0Lgg0LvQvtCz0LjRh9C10YHQutC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LVcclxuICAgIHRoaXMuI2luaXRpYXRlUXVlc3Rpb25zKHRoaXMuI3F1ZXN0aW9uYXJ5LlF1ZXN0aW9ucylcclxuXHJcbiAgICAvLyDQnNC+0LbQtdGCINCx0YvRgtGMIDIg0LLQsNGA0LjQsNC90YLQsCDQt9Cw0L/Rg9GB0LrQsCDQuNC90YLQtdGA0LLRjNGOLCAxLdC90L7QstC+0LUg0LjQvdGC0LXRgNCy0YzRjiwgMi3Qv9C10YDQtdC30LDQv9GD0YHQuiDRgdGC0LDRgNC+0LPQviDQuNC90YLQtdGA0LLRjNGOLiDQkiDQv9C10YDQstC+0Lwg0YHQu9GD0YfQsNC1INC90LDRh9Cw0LvQviDRjdGC0L4gbGFuZyDQuNC70Lgg0L/QtdGA0LLRi9C5INCy0L7Qv9GA0L7RgS4g0JLQviDQstGC0L7RgNC+0LwsINGBINC/0L7RgdC70LXQtNC90LXQs9C+INCy0L7Qv9GA0L7RgdCwINC90LAg0LrQvtGC0L7RgNGL0Lkg0L7RgtCy0LXRgtC40LvQuC5cclxuICAgIGxldCBzdGFydFF1ZXN0aW9uTnVtOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAvL9C10YHQu9C4INC30LDQs9GA0YPQttCw0LXQvCDRgNCw0L3QtdC1INC90LUg0LfQsNC60L7QvdGH0LXQvdC90L7QtSDQuNC90YLQtdGA0LLRjNGOLCDQv9GA0L7QtNC+0LvQttCw0LXQvCDRgSDQvNC10YHRgtCwINC/0L7RgdC70LXQtNC90LXQs9C+INCy0L7Qv9GA0L7RgdCwICjRgdC70YPRh9Cw0Lkg0L3QvtC80LXRgCAyKVxyXG4gICAgaWYgKCEhbG9naWNWYXJzICYmICEhYW5zd2VyTGlzdCAmJiAhIXF1ZXN0aW9uR3VpZCkge1xyXG4gICAgICAvL9C30LDQs9GA0YPQttCw0LXQvCDRgdGC0LDRgNGL0LUg0LvQvtCz0LjRh9C10YHQutC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LUg0Lgg0L7RgtCy0LXRgtGLXHJcbiAgICAgIHRoaXMuI2ZpbGxPbGRJbnRlcnZpZXdEYXRhKGxvZ2ljVmFycywgYW5zd2VyTGlzdCk7XHJcblxyXG4gICAgICAvL9C40YnQtdC8INC90L7QvNC10YAg0LLQvtC/0YDQvtGB0LAsINC60L7RgtC+0YDRi9C5INCx0YvQuyDQv9C+0YHQu9C10LTQvdC40Lkg0L/QtdGA0LXQtCDRgdC+0YXRgNCw0L3QtdC90LjQtdC8LlxyXG4gICAgICBjb25zdCBxdWVzdGlvbkxhc3RTYXZlID0gdGhpcy4jZmluZFF1ZXN0aW9uQnlHdWlkKHF1ZXN0aW9uR3VpZCk7XHJcblxyXG4gICAgICAvL9CS0L7Qv9GA0L7RgSDQvNC+0LPQu9C4INGD0LTQsNC70LjRgtGMLiDQotC+0LPQtNCwINC90LDRh9C90LXQvCDRgdC90LDRh9Cw0LvQsC5cclxuICAgICAgaWYgKCEhcXVlc3Rpb25MYXN0U2F2ZSkge1xyXG4gICAgICAgIHN0YXJ0UXVlc3Rpb25OdW0gPSBxdWVzdGlvbkxhc3RTYXZlLlF1ZXN0aW9uTnVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoc3RhcnRRdWVzdGlvbk51bSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIC8v0K3RgtC+INC90L7QstC+0LUg0LjQvdGC0LXRgNCy0YzRjiwg0LHQtdC3INGA0LDQvdC10LUg0YHQvtGF0YDQsNC90ZHQvdC90YvRhSDQtNCw0L3QvdGL0YUo0YHQu9GD0YfQsNC5IDEpLiDQl9Cw0L/Rg9GB0LrQsNC10Lwg0L7Qv9GA0L7RgSwg0L/QtdGA0LLRi9C5INGN0LrRgNCw0L0g0Y3RgtC+IExhbmcg0LLQvtC/0YDQvtGBLCDQvdC+INC10YHQu9C4INCy0YvQsdC+0YDQsCDRj9C30YvQutCwINC90LXRgiwg0L/RgNC+0L/Rg9GB0LrQsNC10Lwg0Lgg0L/QtdGA0LXRhdC+0LTQuNC8INC90LAgMS3QuSDQstC+0L/RgNC+0YFcclxuICAgICAgc3RhcnRRdWVzdGlvbk51bSA9IHRoaXMuI2FjdGl2ZUxhbmdDb3VudCA+IDEgPyAwIDogdGhpcy4jbmV4dFF1ZXN0aW9uTnVtKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/Qv9C+0YjQu9GR0Lwg0YHQvtCx0YvRgtC40LUg0L4g0L3QsNGH0LDQu9C1INC+0L/RgNC+0YHQsFxyXG4gICAgdGhpcy4jZXZlbnRCdXMubmV4dCh7a2V5OiBTdXJ2ZXlFdmVudHMuc2VTdXJ2ZXlTdGFydCwgZGF0YToge3F1ZXN0aW9uYXJ5OiB0aGlzLiNxdWVzdGlvbmFyeX19KTtcclxuXHJcbiAgICAvL9C/0L7QutCw0LfRi9Cy0LDQtdC8INCy0L7Qv9GA0L7RgVxyXG4gICAgdGhpcy4jY2hhbmdlQ3VycmVudFF1ZXN0aW9uKHRoaXMuI3F1ZXN0aW9uYXJ5IS5RdWVzdGlvbnNbc3RhcnRRdWVzdGlvbk51bV0pO1xyXG4gIH1cclxuXHJcbiAgb24oLi4ua2V5OiBBcnJheTxzdHJpbmc+KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLiNldmVudEJ1cy5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgIGZpbHRlcihldmVudCA9PiBrZXkuaW5jbHVkZXMoZXZlbnQua2V5KSksXHJcbiAgICAgbWFwKGV2ZW50ID0+IGV2ZW50LmRhdGEpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ29Ub05leHRRdWVzdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnRRdWVzdGlvbiA9IHRoaXMuI2N1cnJlbnRRdWVzdGlvbi52YWx1ZTtcclxuICAgIGlmICghY3VycmVudFF1ZXN0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8v0LXRgdC70Lgg0L7RgtCy0LXRgiDQvdCwINGC0LXQutGD0YnQuNC5INCy0L7Qv9GA0L7RgSDQvdC1INC30LDQutC+0L3Rh9C10L0sINCy0YvRhdC+0LTQuNC8XHJcbiAgICBpZiAoIXRoaXMuX2ludGVydmlldy5xdWVzdGlvbklzQ29tcGxldGUoY3VycmVudFF1ZXN0aW9uLlF1ZXN0aW9uR3VpZCkpIHtcclxuICAgICAgcmV0dXJuIDtcclxuICAgIH1cclxuXHJcbiAgICAvL9C10YHQu9C4INGD0LrQsNC30LDQvSBQb3N0U2NyaXB0LCDQstGL0L/QvtC70L3QuNC8INC10LPQvlxyXG4gICAgaWYgKCEhY3VycmVudFF1ZXN0aW9uLlBvc3RTY3JpcHQpIHtcclxuICAgICAgdGhpcy5fbG9naWMuZXhlY3V0ZVBvc3RTY3JpcHQoY3VycmVudFF1ZXN0aW9uLlBvc3RTY3JpcHQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy4jY2hhbmdlQ3VycmVudFF1ZXN0aW9uKHRoaXMuI3F1ZXN0aW9uYXJ5IS5RdWVzdGlvbnNbdGhpcy4jbmV4dFF1ZXN0aW9uTnVtKCldKTtcclxuICB9XHJcblxyXG4gIGdvVG9CYWNrUXVlc3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLiNkaXNwbGF5ZWRRdWVzdGlvbnMucG9wKCk7IC8vINGD0LTQsNC70LjQvCDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDRgtC+0Lwg0YfRgtC+INC/0L7QutCw0LfRi9Cy0LDQu9C4INGN0YLQvtGCINCy0L7Qv9GA0L7RgVxyXG4gICAgY29uc3QgcHJldmlvdXNRdWVzdGlvbk51bSA9IHRoaXMuI2Rpc3BsYXllZFF1ZXN0aW9ucy5wb3AoKTsgLy8g0YPQt9C90LDQtdC8INC90L7QvNC10YAg0LLQvtC/0YDQvtGB0LAg0L3QsCDQutC+0YLQvtGA0YvQuSDQvdCw0Lwg0L3QsNC00L4g0L/QtdGA0LXQudGC0LgsINC4INGD0LTQsNC70LjQvCDQuNC90YTQvtGA0LzQsNGG0LjRjiDRh9GC0L4t0LHRiyDQvdC1INC00YPQsdC70LjRgNC+0LLQsNGC0YxcclxuICAgIGlmICghIXByZXZpb3VzUXVlc3Rpb25OdW0pIHtcclxuICAgICAgY29uc3QgcHJldlF1ZXN0aW9uID0gdGhpcy4jcXVlc3Rpb25hcnk/LlF1ZXN0aW9uc1twcmV2aW91c1F1ZXN0aW9uTnVtXTtcclxuICAgICAgaWYgKCEhcHJldlF1ZXN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy4jY2hhbmdlQ3VycmVudFF1ZXN0aW9uKHByZXZRdWVzdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHF1ZXN0aW9uSXNDb21wbGV0ZShndWlkOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGFuc3dlciA9IHRoaXMuX2ludGVydmlldy5maW5kQW5zd2VyQnlHdWlkKGd1aWQpO1xyXG4gICAgcmV0dXJuIGFuc3dlcj8uYW5zd2VySXNDb21wbGV0ZSA/PyBmYWxzZVxyXG4gIH1cclxuICBcclxuICBndWlkVG9UZXh0QW5zd2VyKGd1aWQ6IG51bWJlciwgbGFuZ3VhZ2VJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGFuc3dlciA9IHRoaXMuZmluZEFuc3dlckJ5R3VpZChndWlkKTtcclxuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy4jZmluZFF1ZXN0aW9uQnlHdWlkKGd1aWQpO1xyXG4gICAgaWYgKCFxdWVzdGlvbiB8fCAhYW5zd2VyIHx8IGFuc3dlci5BbnN3ZXJWYWx1ZSA9PT0gLTk3KSB7XHJcbiAgICAgIHJldHVybiAnJ1xyXG4gICAgfVxyXG4gICAgY29uc3QgcXVlc3Rpb25UeXBlID0gcXVlc3Rpb24uUXVlc3Rpb25UeXBlO1xyXG4gICAgY29uc29sZS5sb2coMCk7XHJcbiAgICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xyXG4gICAgICBcclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxT0w6IHJldHVybiBhbnN3ZXIuQW5zd2VyVmFsdWU7XHJcbiAgICAgIGNhc2UgUXVlc3Rpb25zVHlwZS5lcVNTOiB7XHJcbiAgICAgICAgY29uc3QgYWx0ZXJuYXRpdmUgPSBxdWVzdGlvbi5BbHRlcm5hdGl2ZWxpc3QuZmluZChhbHQgPT4gYWx0LlZhbHVlID09PSBhbnN3ZXIuQW5zd2VyVmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IGFsdFRleHQgPSBhbHRlcm5hdGl2ZT8uTXVsdGlMYW5nQ2FwdGlvbnMuZmluZChvYmogPT4gb2JqLmxhbmcgPT09IGxhbmd1YWdlSWQpO1xyXG4gICAgICAgIHJldHVybiAoYWx0VGV4dD8uQ2FwdGlvbkh0bWwgfHwgYWx0ZXJuYXRpdmU/LmFsaWFzKSA/PyAnJztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFNUzoge1xyXG4gICAgICAgIGNvbnN0IGFuc3dlckFycmF5ID0gYW5zd2VyLkFuc3dlclZhbHVlIGFzIEFycmF5PG51bWJlcj47XHJcbiAgICAgICAgY29uc3QgYWx0ZXJuYXRpdmVBcnJheSA9IHF1ZXN0aW9uLkFsdGVybmF0aXZlbGlzdC5maWx0ZXIoYWx0ID0+IGFuc3dlckFycmF5LmluZGV4T2YoYWx0LlZhbHVlKSA+IDApO1xyXG4gICAgICAgIGNvbnN0IGFsdFRleHRBcnJheSA9IGFsdGVybmF0aXZlQXJyYXkubWFwKGFsdCA9PiAoYWx0Lk11bHRpTGFuZ0NhcHRpb25zLmZpbmQob2JqID0+IG9iai5sYW5nID09PSBsYW5ndWFnZUlkKT8uQ2FwdGlvbkh0bWwgfHwgYWx0LmFsaWFzKSA/PyAnJyk7XHJcbiAgICAgICAgcmV0dXJuIGFsdFRleHRBcnJheS5qb2luKCcsICcpO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNmaWxsT2xkSW50ZXJ2aWV3RGF0YShsb2dpY1ZhcnM6IEFycmF5PElJbnRlcnZpZXdMb2dpY1Zhcj4sIGFuc3dlckxpc3Q6IEFycmF5PElRdWVzdGlvbkFuc3dlcj4pOiB2b2lke1xyXG4gICAgLy/Qv9GA0L7Qv9C40YjQtdC8INGB0YLQsNGA0YvQtSDQu9C+0LPQuNGH0LXRgdC60LjQtSDQv9C10YDQtdC80LXQvdC90YvQtVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobG9naWNWYXJzKSkge1xyXG4gICAgICBsb2dpY1ZhcnMuZm9yRWFjaChsb2dpY1Zhck9iaiA9PiB7XHJcbiAgICAgICAgdGhpcy5fbG9naWMuc2V0TG9naWNWYWx1ZShsb2dpY1Zhck9iai5ubSwgbG9naWNWYXJPYmoudmwpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIC8v0L/RgNC+0L/QuNGI0LXQvCDRgdGC0LDRgNGL0LUg0L7RgtCy0LXRgtGLXHJcbiAgICB0aGlzLl9pbnRlcnZpZXcub3ZlcnJpZGVBbnN3ZXJzKGFuc3dlckxpc3QpO1xyXG5cclxuICAgIC8v0L3Rg9C20L3QviDQstC10YDQvdGD0YLRjCDQstGA0LXQvNGPINC90LDRh9Cw0LvQsCDQuNC90YLQtdGA0LLRjNGOLCDQvtGC0LTQtdC70YzQvdC+INC+0L3QviDQvdC1INGB0L7RhdGA0LDQvdGP0LXRgtGB0Y8sINC/0L7RjdGC0L7QvNGDINCy0L7Qt9GM0LzRkdC8INC80LjQvdC40LzQsNC70YzQvdC+0LUg0LLRgNC10LzRjyDQvdCw0YfQsNC70LAg0LjQtyDQvtGC0LLQtdGC0L7QslxyXG4gICAgLy/RhNC40LvRjNGC0YDRg9C10Lwg0LLRgdC1INCy0L7Qv9GA0L7RgdGLINGDINC60L7RgtC+0YDRi9GFINC+0L3QviDRg9C60LDQt9Cw0L3Qvig+MCkg0Lgg0YLRgNCw0L3RgdGE0L7RgNC80LjRgNGD0LXQvCDQsiDRh9C40YHQu9C+LlxyXG4gICAgY29uc3Qgc3RhcnRlZEF0QXJyYXkgPSAgYW5zd2VyTGlzdC5maWx0ZXIoYW5zd2VyID0+IGFuc3dlci5TdGFydGVkQXQgPiAwKS5tYXAoYW5zd2VyID0+IGFuc3dlci5TdGFydGVkQXQpO1xyXG5cclxuICAgIC8v0LHQtdGA0ZHQvCDQvNC40L3QuNC80LDQu9GM0L3QvtC1XHJcbiAgICB0aGlzLl9pbnRlcnZpZXcuc3RhcnRlZEF0ID0gTWF0aC5taW4oLi4uc3RhcnRlZEF0QXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgI2NoYW5nZUN1cnJlbnRRdWVzdGlvbihuZXdRdWVzdGlvbjogSWRiUXVlc3Rpb24pOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnRRdWVzdGlvbiA9IHRoaXMuI2N1cnJlbnRRdWVzdGlvbi52YWx1ZTtcclxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgaWYgKCEhY3VycmVudFF1ZXN0aW9uKSB7XHJcbiAgICAgIC8qXHJcbiAgICAgINCh0L7RhdGA0LDQvdC40Lwg0LLRgNC10LzRjyDQvdCw0YfQsNC70LAg0LjQvdGC0LXRgNCy0YzRji4g0KTQuNC60YHQuNGA0L7QstCw0YLRjCDQsdGD0LTQtdC8INC90LUg0YEg0YHQsNC80L7Qs9C+INC90LDRh9Cw0LvQsCwg0LAg0YEg0L7RgtCy0LXRgtCwINC90LAg0L/QtdGA0LLRi9C5INCy0L7Qv9GA0L7RgS5cclxuICAgICAg0J/QvtGC0L7QvNGDINGH0YLQviDQv9GA0LDQutGC0LjQutCwINGC0LDQutCw0Y8sINC+0YLQutGA0YvRgtGMINCw0L3QutC10YLRgyDQvdCwINC/0LvQsNC90YjQtdGC0LUg0Lgg0YXQvtC00LjRgtGMINC40YHQutCw0YLRjCDRgNC10YHQv9C+0L3QtNC10L3RgtC+0LIg0Lgg0LjQty3Qt9CwINGN0YLQvtCz0L4g0LTQu9C40YLQtdC70YzQvdC+0YHRgtGMINC40L3RgtC10YDQstGM0Y4g0LzQvtC20LXRgiDQsdGL0YLRjCDQvdC10YDQtdC70LXQstCw0L3RgtC90L4uXHJcbiAgICAgICogKi9cclxuICAgICAgaWYgKHRoaXMuX2ludGVydmlldy5zdGFydGVkQXQgPT09IDAgJiYgY3VycmVudFF1ZXN0aW9uLlF1ZXN0aW9uTnVtID49IDApIHtcclxuICAgICAgICB0aGlzLl9pbnRlcnZpZXcuc3RhcnRlZEF0ID0gY3VycmVudFRpbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v0L3Rg9C20L3QviDRgdC+0YXRgNCw0L3QuNGC0YwgRmluaXNoZWRBdCDQsiDQvtGC0LLQtdGC0LDRhSDQtNC70Y8g0YHRgtCw0YDQvtCz0L4g0LLQvtC/0YDQvtGB0LBcclxuICAgICAgY29uc3QgYW5zd2VyID0gdGhpcy5faW50ZXJ2aWV3LmZpbmRBbnN3ZXJCeUd1aWQoY3VycmVudFF1ZXN0aW9uLlF1ZXN0aW9uR3VpZCk7XHJcbiAgICAgIGlmICghIWFuc3dlcikge1xyXG4gICAgICAgIGFuc3dlci5GaW5pc2hlZEF0ID0gY3VycmVudFRpbWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jZXZlbnRCdXMubmV4dCh7a2V5OiBTdXJ2ZXlFdmVudHMuc2VRdWVzdGlvbkhpZGUsIGRhdGE6IGN1cnJlbnRRdWVzdGlvbn0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy4jZGlzcGxheWVkUXVlc3Rpb25zLnB1c2gobmV3UXVlc3Rpb24uUXVlc3Rpb25OdW0pO1xyXG4gICAgdGhpcy4jY3VycmVudFF1ZXN0aW9uLm5leHQobmV3UXVlc3Rpb24pO1xyXG5cclxuICAgIC8v0L3Rg9C20L3QviDRgdC+0YXRgNCw0L3QuNGC0YwgU3RhcnRlZEF0INCyINC+0YLQstC10YLQsNGFINC00LvRjyDQvdC+0LLQvtCz0L4g0LLQvtC/0YDQvtGB0LBcclxuICAgIGNvbnN0IGFuc3dlck5ldyA9IHRoaXMuX2ludGVydmlldy5maW5kQW5zd2VyQnlHdWlkKG5ld1F1ZXN0aW9uLlF1ZXN0aW9uR3VpZCk7XHJcbiAgICBpZiAoISFhbnN3ZXJOZXcpIHtcclxuICAgICAgYW5zd2VyTmV3LlN0YXJ0ZWRBdCA9IGN1cnJlbnRUaW1lO1xyXG4gICAgfVxyXG4gICAgdGhpcy4jZXZlbnRCdXMubmV4dCh7a2V5OiBTdXJ2ZXlFdmVudHMuc2VRdWVzdGlvblNob3csIGRhdGE6IG5ld1F1ZXN0aW9ufSk7XHJcblxyXG4gICAgLy/QtdGB0LvQuCDQvdC+0LLRi9C5INGN0LrRgNCw0L0g0Y3RgtC+IGVuZCDRgtC+0LPQtNCwINC30LDQstC10YDRiNCw0LXQvCDQuNC90YLQtdGA0LLRjNGOXHJcbiAgICBpZiAobmV3UXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSAnRU5EJykge1xyXG4gICAgICB0aGlzLiNmaW5pc2hJbnRlcnZpZXcoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy/QtdGB0LvQuCDRjdGC0L4g0L3QtdGP0LLQvdGL0Lkg0LLQvtC/0YDQvtGBINC4INGN0YLQviBzcyDQuNC70LggbXMg0LLQvtC/0YDQvtGBINGC0L7Qs9C00LAg0L/QvtGB0YfQuNGC0LDQtdC8INC30L3QsNGH0LXQvdC40Y8g0YMg0Y3RgtC+0LPQviDQstC+0L/RgNC+0YHQsFxyXG4gICAgaWYgKG5ld1F1ZXN0aW9uLkltcGxpY2l0KSB7XHJcbiAgICAgIHRoaXMuI2NhbGN1bGF0ZUltcGxpY2l0UXVlc3Rpb24obmV3UXVlc3Rpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3VycmVudFF1ZXN0aW9uJCgpOiBPYnNlcnZhYmxlPElkYlF1ZXN0aW9uIHwgbnVsbD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuI2N1cnJlbnRRdWVzdGlvbi5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGZpbmRBbnN3ZXJCeUd1aWQoZ3VpZDogbnVtYmVyKTogQW5zd2VyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcnZpZXcuZmluZEFuc3dlckJ5R3VpZChndWlkKTtcclxuICB9XHJcblxyXG4gIHNldExvZ2ljVmFsdWUodmFyTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9sb2dpYy5zZXRMb2dpY1ZhbHVlKHZhck5hbWUsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldExvZ2ljVmFycygpOiBMb2dpY09iamVjdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9naWMuZ2V0TG9naWNWYXJzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBbnN3ZXJMaXN0KCk6IEFycmF5PEFuc3dlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ludGVydmlldy5nZXRBbnN3ZXJMaXN0KCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBbnN3ZXIoZXZlbnREYXRhOiBBbnN3ZXJDaGFuZ2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFuc3dlciA9IHRoaXMuX2ludGVydmlldy5maW5kQW5zd2VyQnlHdWlkKGV2ZW50RGF0YS5ndWlkKTtcclxuICAgIGlmICghYW5zd2VyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL9Cy0L7Qv9GA0L7RgdGLINC60L7RgtC+0YDRi9C1INCyINGB0LLQvtC10Lwg0YHQvtGB0YLQsNCy0LUg0LjQvNC10LXRgiDRgdC10LrRhtC40LgsINGF0YDQsNC90Y/RgiDQvtGC0LLQtdGC0Ysg0YfRg9GC0Ywg0L/QviDQtNGA0YPQs9C+0LzRgywg0YLQvtGH0L3QtdC1INC+0YLQstC10YIg0L3QsCDQutCw0LbQtNGD0Y4g0YHQtdC60YbQuNGOINGN0YLQviDQvtGC0LTQtdC70YzQvdGL0Lkg0L7QsdGK0LXQutGCINCyICBfaW50ZXJ2aWV3LmFuc3dlckxpc3RcclxuICAgIC8v0L/QvtGN0YLQvtC80YMg0L7RgtCy0LXRgiDQtNC70Y8g0YLQsNC60LjRhSDRgtC40L/QvtCyINCy0L7Qv9GA0L7RgdC+0LIg0Y3RgtC+IFtrZXk6IHN0cmluZ106IEFycmF5PG51bWJlcj4gfCBudW1iZXIsINCz0LTQtSBrZXkoZ3VpZCDRgdC10LrRhtC40LgpINGN0YLQviDQvtGC0LLQtdGCINC90LAg0YHQtdC60YbQuNGOLCDQtdGB0LvQuCBrZXkg0L3QtdGCLCDRgdC10LrRhtC40Y8g0L3QtSDQsdGL0LvQsCDQv9C+0LrQsNC30LDQvdCwXHJcbiAgICBpZiAodGhpcy4jY3VycmVudFF1ZXN0aW9uLnZhbHVlPy5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFTTCkge1xyXG4gICAgICBjb25zdCBzZWN0aW9uTGlzdCA9IHRoaXMuI2N1cnJlbnRRdWVzdGlvbi52YWx1ZT8uU2VjdGlvbmxpc3Q7XHJcblxyXG4gICAgICAvL9C/0YDQvtC50LTRkdC80YHRjyDQv9C+INC60LDQttC00L7QuSDRgdC10LrRhtC40Lgg0Lgg0LXRgdC70Lgg0LTQu9GPINC90LXRkSDQtdGB0YLRjCDQvtGC0LLQtdGCLCDQt9Cw0L/QuNGI0LXQvCwg0LIg0L/RgNC+0YLQuNCy0L3QvtC8INGB0LvRg9GH0LDQtSDQstC80LXRgdGC0L4g0L7RgtCy0LXRgtCwINGD0LrQsNC20LXQvCAtOTcoTUlTU0lOR19WQUxVRSlcclxuICAgICAgaWYgKCEhc2VjdGlvbkxpc3QpIHtcclxuICAgICAgICBzZWN0aW9uTGlzdC5mb3JFYWNoKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc2VjdGlvbkludGVydmlld0Fuc3dlciA9ICB0aGlzLl9pbnRlcnZpZXcuZmluZEFuc3dlckJ5R3VpZChzZWN0aW9uLlNlY3Rpb25HdWlkKTtcclxuICAgICAgICAgIGlmICghc2VjdGlvbkludGVydmlld0Fuc3dlcil7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3Qgc2VjdGlvblF1ZXN0aW9uQW5zd2VyID0gZXZlbnREYXRhLmFuc3dlciA/ICAoZXZlbnREYXRhLmFuc3dlciBhcyBBbnN3ZXJTbFR5cGUpW3NlY3Rpb24uU2VjdGlvbkd1aWQudG9TdHJpbmcoKV0gOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICBzZWN0aW9uSW50ZXJ2aWV3QW5zd2VyLkFuc3dlclZhbHVlID0gc2VjdGlvblF1ZXN0aW9uQW5zd2VyID09PSB1bmRlZmluZWQgPyBNSVNTSU5HX1ZBTFVFIDogc2VjdGlvblF1ZXN0aW9uQW5zd2VyO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8v0L7RgtCy0LXRgiDRgdCw0LzQvtCz0L4g0LjRgdGF0L7QtNC90L7Qs9C+INCy0L7Qv9GA0L7RgdCwINC00L7Qu9C20LXQvSDQsdGL0YLRjCAxXHJcbiAgICAgIGFuc3dlci5BbnN3ZXJWYWx1ZSA9IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvL9C+0YLQstC10YIg0L3QsCDQstC+0L/RgNC+0YEg0YMg0LrQvtGC0L7RgNC+0LPQviDQvdC10YIg0YHQtdC60YbQuNC5XHJcbiAgICAgIGFuc3dlci5BbnN3ZXJWYWx1ZSA9IGV2ZW50RGF0YS5hbnN3ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLy/QvdCwINCy0L7Qv9GA0L7RgSDQvtGC0LLQtdGC0LjQu9C4INGC0L7Qs9C00LAg0LrQvtCz0LTQsCDQtdGB0YLRjCDQstGB0LUg0L7RgtCy0LXRgtGLINC4INCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0LvQvtCz0LjQutCwINC60L3QvtC/0LrQuCDQtNCw0LvQtdC1KNC10YHQu9C4INC10ZEg0YPQutCw0LfQsNC70LgpXHJcbiAgICBhbnN3ZXIuYW5zd2VySXNDb21wbGV0ZSA9IGV2ZW50RGF0YS5pc0NvbXBsZXRlICYmIHRoaXMuI25leHRCdXR0b25FeHByZXNzaW9uSXNUcnVlKCk7XHJcblxyXG4gICAgLy9WaWV3ZWRBbHRlcm5hdGl2ZVZhbHVlcyDQuCBWaWV3ZWRTZWN0aW9uR3VpZHMuINCiLtC6LiDQvtC90LggcmVhZG9ubHkg0YHQvdCw0YfQsNC70LAg0YPQtNCw0LvQuNC8LCDQv9C+0YLQvtC8INC00L7QsdCw0LLQuNC8XHJcbiAgICBhbnN3ZXIuVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXMubGVuZ3RoID0gMDtcclxuICAgIGV2ZW50RGF0YS52aWV3ZWRBbHRlcm5hdGl2ZVZhbHVlcy5mb3JFYWNoKG9hID0+IGFuc3dlci5WaWV3ZWRBbHRlcm5hdGl2ZVZhbHVlcy5wdXNoKG9hKSk7XHJcblxyXG4gICAgYW5zd2VyLlZpZXdlZFNlY3Rpb25HdWlkcy5sZW5ndGggPSAwO1xyXG4gICAgZXZlbnREYXRhLnZpZXdlZFNlY3Rpb25HdWlkcy5mb3JFYWNoKG9hID0+IGFuc3dlci5WaWV3ZWRTZWN0aW9uR3VpZHMucHVzaChvYSkpO1xyXG5cclxuICAgIGFuc3dlci5BbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzLmxlbmd0aCA9IDA7XHJcbiAgICBldmVudERhdGEuYWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcy5mb3JFYWNoKG9hID0+IGFuc3dlci5BbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzLnB1c2gob2EpKTtcclxuXHJcblxyXG4gICAgT2JqZWN0LmVudHJpZXMoYW5zd2VyLkFuc3dlckFkZGl0aW9uYWwpLmZvckVhY2goKFtrZXldKSA9PiBkZWxldGUgYW5zd2VyLkFuc3dlckFkZGl0aW9uYWxbTnVtYmVyKGtleSldKTtcclxuICAgIE9iamVjdC5lbnRyaWVzKGV2ZW50RGF0YS5hZGRpdGlvbmFsQW5zd2VycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBhbnN3ZXIuQW5zd2VyQWRkaXRpb25hbFtOdW1iZXIoa2V5KV0gPSB2YWx1ZSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVMb2dpYyhldmVudERhdGEubG9naWNWYXJzKTtcclxuXHJcbiAgICB0aGlzLiNldmVudEJ1cy5uZXh0KHtrZXk6IFN1cnZleUV2ZW50cy5zZVF1ZXN0aW9uQW5zd2Vyc0NoYW5nZSwgZGF0YToge3F1ZXN0aW9uOiB0aGlzLiNjdXJyZW50UXVlc3Rpb24udmFsdWUsIGFuc3dlcklzQ29tcGxldGU6IGFuc3dlci5hbnN3ZXJJc0NvbXBsZXRlfX0pO1xyXG5cclxuICAgIC8v0LzQvtC20LXRgiDQstC+0LfQvdC40LrQvdGD0YLRjCDRgdC40YLRg9Cw0YbQuNGPLCDQutC+0LPQtNCwINC90LXRgiDQvdC4INC+0LTQvdC+0Lkg0LDQu9GM0YLQtdGA0L3QsNGC0LjQstGLINC40LvQuCDRgdC10LrRhtC40Lgg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8u0LIg0Y3RgtC+0Lwg0YHQu9GD0YfQsNC1INCy0L7Qv9GA0L7RgSDQv9C+0LrQsNC30YvQstCw0YLRjCDQvdC1INC90YPQttC90L4sINC60LDQuiDQvtGC0LLQtdGCINC30LDQv9C40YHRi9Cy0LDQtdC8IDAg0Lgg0L/QtdGA0LXRhdC+0LTQuNC8INC90LAg0YHQu9C10LTRg9GO0YnQuNC5XHJcbiAgICBjb25zdCBxdWVzdGlvbiA9IHRoaXMuI2ZpbmRRdWVzdGlvbkJ5R3VpZChldmVudERhdGEuZ3VpZCk7XHJcbiAgICAvL9GB0LjRgtGD0LDRhtC40Y8g0LTQu9GPIHNzL21zINCy0L7Qv9GA0L7RgdC+0LIsXHJcbiAgICBpZiAoISFxdWVzdGlvbiAmJiBhbnN3ZXIuYW5zd2VySXNDb21wbGV0ZSAmJiAocXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSAnU1MnIHx8IHF1ZXN0aW9uLlF1ZXN0aW9uVHlwZSA9PT0gJ01TJykgJiYgKGV2ZW50RGF0YS52aWV3ZWRBbHRlcm5hdGl2ZVZhbHVlcy5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgIHRoaXMuZ29Ub05leHRRdWVzdGlvbigpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb2dpYyhsb2dpY1ZhcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lke1xyXG4gICAgT2JqZWN0LmVudHJpZXMobG9naWNWYXJzKS5mb3JFYWNoKChbdmFyTmFtZSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0TG9naWNWYWx1ZSh2YXJOYW1lLCB2YWx1ZSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvL9Cy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60L7Qu9C40YfQtdGB0YLQstC+INCw0LrRgtC40LLQvdGL0YUg0Y/Qt9GL0LrQvtCyXHJcbiAgZ2V0ICNhY3RpdmVMYW5nQ291bnQoKTogbnVtYmVyIHtcclxuICAgIC8v0LXRgdC70Lgg0LDQvdC60LXRgtCwINC/0L4g0LrQsNC60L7QuS3RgtC+INC/0YDQuNGH0LjQvdC1INC90YMg0YPQutCw0LfQsNC90LAsINCy0LXRgNC90ZHQvCAwXHJcbiAgICByZXR1cm4gdGhpcy4jcXVlc3Rpb25hcnk/LkJhc2VQYXJhbXMuTGFuZ3VhZ2VMaXN0LmZpbHRlciggbGFuZ09iaiA9PiBsYW5nT2JqLmlzQWN0aXZlKS5sZW5ndGggPz8gMDtcclxuICB9XHJcblxyXG4gIC8v0LLQvtC30LLRgNCw0YnQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0LLQvtC/0YDQvtGB0L7QslxyXG4gIGdldCAjcXVlc3Rpb25zQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLiNxdWVzdGlvbmFyeT8uUXVlc3Rpb25zLmxlbmd0aCA/PyAwO1xyXG4gIH1cclxuXHJcbiAgI2ZpbmlzaEludGVydmlldygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKTtcclxuICAgIGxldCByZXN1bHREaXJ0eTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJlc3VsdERpcnR5ID0gdGhpcy5fbG9naWMuZXhlY3V0ZUxvZ2ljKHRoaXMuI3F1ZXN0aW9uYXJ5Py5CYXNlUGFyYW1zLlJlc3VsdGF0aXZlU2NyaXB0ID8/ICcnKTtcclxuICAgIH1jYXRjaCAoZSkge1xyXG4gICAgICByZXN1bHREaXJ0eSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGludGVydmlldzogSUludGVydmlld0RhdGEgPSB7XHJcbiAgICAgIExhbmd1YWdlOiAwLCAgICAvL3RvZG8gbGFuZ1xyXG4gICAgICBTcG90SWQ6IDAsXHJcbiAgICAgIERldmljZUlkOiAwLFxyXG4gICAgICBEZXZpY2VUeXBlOiAwLFxyXG4gICAgICBSZXN1bHRhdGl2ZTogUmVzdWx0YXRpdmVTdGF0dXMucnNVbnNldCxcclxuICAgICAgVmFsaWQ6IFZhbGlkU3RhdHVzLnZzVW5zZXQsXHJcbiAgICAgIFdhdmU6IHRoaXMuI3F1ZXN0aW9uYXJ5Py5JbmZvLmN1cnJlbnRfd2F2ZSA/PyAwLFxyXG4gICAgICBRdWVzdGlvbmFyeU5hbWU6IHRoaXMuI3F1ZXN0aW9uYXJ5Py5JbmZvLm5hbWUgPz8gJycsXHJcbiAgICAgIFF1ZXN0aW9uYXJ5R3VpZDogdGhpcy4jcXVlc3Rpb25hcnk/LkluZm8ucXVlc3Rpb25hcnlfZ3VpZCA/PyAwLFxyXG4gICAgICBTdGFydGVkQXQ6IHRoaXMuX2ludGVydmlldy5zdGFydGVkQXQsXHJcbiAgICAgIEZpbmlzaGVkQXQ6IGN1cnJlbnRUaW1lLmdldFRpbWUoKSxcclxuICAgICAgVGluZVpvbmVCaWFzOiBjdXJyZW50VGltZS5nZXRUaW1lem9uZU9mZnNldCgpLFxyXG4gICAgICBSZXN1bHRhdERpcnR5OiByZXN1bHREaXJ0eSxcclxuICAgICAgQW5zd2Vyczoge1xyXG4gICAgICAgIEFuc3ZlcnNMaXN0OiBBcnJheS5mcm9tKHRoaXMuX2ludGVydmlldy5nZXRBbnN3ZXJMaXN0KCkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGFkZGl0aW9uYWxfaW5mbzoge1xyXG4gICAgICAgIFF1ZXN0aW9uYXJ5VXBkYXRlVGltZXN0YW1wOiBuZXcgRGF0ZSh0aGlzLiNxdWVzdGlvbmFyeT8uSW5mby5sYXN0X3VwZGF0ZV90aW1lc3RhbXAgPz8gMCkuZ2V0VGltZSgpICxcclxuICAgICAgfSxcclxuICAgICAgUmVzdWx0UXVvdGFHdWlkczogW10sXHJcbiAgICAgIFJlc3VsdFF1b3RhMmRHdWlkczogW10sXHJcbiAgICAgIExvZ2ljVmFyczogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ2ljVmFycyA9IHRoaXMuX2xvZ2ljLmdldExvZ2ljVmFycygpO1xyXG4gICAgT2JqZWN0LmVudHJpZXMobG9naWNWYXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IGludGVydmlldy5Mb2dpY1ZhcnMucHVzaCh7bm06IGtleSwgdmw6IHZhbHVlfSkpO1xyXG5cclxuICAgIHRoaXMuI2V2ZW50QnVzLm5leHQoe2tleTogU3VydmV5RXZlbnRzLnNlU3VydmV5RW5kLCBkYXRhOiBpbnRlcnZpZXd9KTtcclxuICB9XHJcblxyXG4gICNuZXh0UXVlc3Rpb25OdW0oKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGN1cnJlbnRRdWVzdGlvbiA9IHRoaXMuI2N1cnJlbnRRdWVzdGlvbi52YWx1ZTtcclxuICAgIC8vINC/0YDQvtCy0LXRgNC40Lwg0LrQstC+0YLRi1xyXG4gICAgY29uc3QgY3VycmVudEd1aWQgPSBjdXJyZW50UXVlc3Rpb24/LlF1ZXN0aW9uR3VpZCA/PyAwO1xyXG4gICAgaWYgKHRoaXMuI3N1cnZleVF1b3Rhcy5xdW90YUlzQ29tcGxldGVkICYmICF0aGlzLiNzdXJ2ZXlRdW90YXMuZ3VpZElzRGVzdGluYXRpb25RdWVzdGlvbihjdXJyZW50R3VpZCkpIHtcclxuICAgICAgLy8g0YMg0L3QsNGBINC10YHRgtGMINC30LDQv9C+0LvQvdC10L3QvdCw0Y8g0LrQstC+0YLQsCwg0L3QsNC50LTQtdC8INCy0L7Qv9GA0L7RgSDQutC+0YLQvtGA0YvQuSDQvdGD0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0L/RgNC4INC30LDQv9C+0LvQvdC10L3QuNC4INC60LLQvtGC0YtcclxuICAgICAgY29uc3QgZGVzdGluYXRpb25RID0gdGhpcy4jZmluZFF1ZXN0aW9uQnlHdWlkKHRoaXMuI3N1cnZleVF1b3Rhcy5kZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCk7XHJcbiAgICAgIC8v0LXRgdC70Lgg0LLQvtC/0YDQvtGBINC10YHRgtGMKNC10LPQviDQvNC+0LPQu9C4INGD0LTQsNC70LjRgtGMINC40Lcg0LDQvdC60LXRgtGLKSwg0L/QvtC60LDQt9GL0LLQsNC10YIg0LXQs9C+XHJcbiAgICAgIGlmICghIWRlc3RpbmF0aW9uUSkge1xyXG4gICAgICAgIHJldHVybiBkZXN0aW5hdGlvblEuUXVlc3Rpb25OdW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDQtdGB0LvQuCDQvdC10YIg0LfQsNC/0L7Qu9C90LXQvdC90L7QuSDQutCy0L7RgtGLLCDQv9C10YDQtdGF0L7QtNC40Lwg0L3QsCDRgdC70LXQtNGD0Y7RidC40Lkg0LLQvtC/0YDQvtGBLCDQuNGJ0LXQvCDRgdC70LXQtNGD0Y7RidC40Lkg0LLQvtC/0YDQvtGBINC60L7RgtC+0YDRi9C5INC80Ysg0LzQvtC20LXQvCDQvtGC0L7QsdGA0LDQt9C40YLRjCAo0LTQviDQu9C+0LPQuNC60LAg0LzQvtC20LXRgiDQt9Cw0L/RgNC10YLQuNGC0Ywg0L/QvtC60LDQtyDQstC+0L/RgNC+0YHQsClcclxuICAgIGxldCBuZXh0UXVlc3Rpb25OdW0gPSAoY3VycmVudFF1ZXN0aW9uPy5RdWVzdGlvbk51bSA/PyAwKSArIDE7XHJcblxyXG4gICAgLy8g0L3QviDRgdC90LDRh9Cw0LvQsCDQv9GA0L7QstC10YDQuNC8INC/0L7RgdC70LUg0LvQvtCz0LjQutGDXHJcbiAgICBpZiAoISFjdXJyZW50UXVlc3Rpb24pIHtcclxuICAgICAgY29uc3QgZGVzdFEgPSBjdXJyZW50UXVlc3Rpb24ubG9naWNsaXN0LmZpbmQobG9nT2JqID0+IChsb2dPYmouRGVzdGluYXRpb25RdWVzdGlvbkd1aWQgPiAwKSAmJiB0aGlzLl9sb2dpYy5leGVjdXRlTG9naWMobG9nT2JqLkxvZ2ljVGV4dCkgKTtcclxuICAgICAgaWYgKCEhZGVzdFEpIHtcclxuICAgICAgICBjb25zdCBkZXN0UU51bSA9IHRoaXMuI2ZpbmRRdWVzdGlvbkJ5R3VpZChkZXN0US5EZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCk/LlF1ZXN0aW9uTnVtO1xyXG4gICAgICAgIGlmIChOdW1iZXIuaXNTYWZlSW50ZWdlcihkZXN0UU51bSkpIHsgLy8g0LLQvtC/0YDQvtGBINC80L7QsyDQsdGL0YLRjCDRg9C00LDQu9GR0L0sINCwINC70L7Qs9C40LrRgyDQvtGB0YLQsNCy0LjRgtGMXHJcbiAgICAgICAgICBuZXh0UXVlc3Rpb25OdW0gPSBkZXN0UU51bSE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g0L7QsdGJ0LXQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQstC+0L/RgNC+0YHQvtCyLCDRhtC40LrQuyDQsdGD0LTQtdGCINGB0YfQuNGC0LDRgtGMINC00L4g0Y3RgtC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsFxyXG4gICAgY29uc3QgcXVlc3Rpb25Db3VudCA9IHRoaXMuI3F1ZXN0aW9uc0NvdW50O1xyXG4gICAgZG8ge1xyXG4gICAgICAvL9C/0L7RgtC10L3RhtC40LDQu9GM0L3QviDRgdC70LXQtNGD0Y7RidC40Lkg0LLQvtC/0YDQvtGBXHJcbiAgICAgIGNvbnN0IHEgPSB0aGlzLiNxdWVzdGlvbmFyeSEuUXVlc3Rpb25zW25leHRRdWVzdGlvbk51bV07XHJcblxyXG4gICAgICAvL9C10YHQu9C4INGN0YLQviDQv9C+0YHQu9C10LTQvdC40Lkg0LLQvtC/0YDQvtGBINC40LvQuCDQtdGB0LvQuCDQstGL0L/QvtC70L3Rj9C10YLRgdGPIEJlZm9yZUV4cHJlc3Npb24g0Lgg0Y3RgtC+0YIg0LLQvtC/0YDQvtGBINC90LUgRGVzdGluYXRpb25RdW90YSwg0LzQvtC20LXQvCDQtdCz0L4g0L/QvtC60LDQt9Cw0YLRjFxyXG4gICAgICBpZiAocS5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFFTkQgfHwgKHRoaXMuX2xvZ2ljLmV4ZWN1dGVMb2dpYyhxLkJlZm9yZUV4cHJlc3Npb24pICYmICF0aGlzLiNzdXJ2ZXlRdW90YXMuZ3VpZElzRGVzdGluYXRpb25RdWVzdGlvbihxLlF1ZXN0aW9uR3VpZCkpICkge1xyXG4gICAgICAgIHJldHVybiBuZXh0UXVlc3Rpb25OdW07XHJcbiAgICAgIH1cclxuICAgICAgLy/QstC+0L/RgNC+0YEg0L3QtdC70YzQt9GPINC/0L7QutCw0LfRi9Cy0LDRgtGMLCDRg9Cy0LXQu9C40YfQuNCy0LDQtdC8INGB0YfRkdGC0YfQuNC6INGC0LXQutGD0YnQtdCz0L4g0LLQvtC/0YDQvtGB0LAg0L3QsCAxXHJcbiAgICAgIG5leHRRdWVzdGlvbk51bSsrO1xyXG4gICAgfSB3aGlsZSAobmV4dFF1ZXN0aW9uTnVtIDwgcXVlc3Rpb25Db3VudCAtIDEpOyAvLyBlbmQg0LLQvtC/0YDQvtGBINC00L7Qu9C20LXQvSDQstGB0LXQs9C00LAg0LHRi9GC0Ywg0L/QvtC60LDQt9Cw0L1cclxuICAgIHJldHVybiBuZXh0UXVlc3Rpb25OdW07XHJcbiAgfVxyXG5cclxuICAjaW5pdGlhdGVRdWVzdGlvbnMocXVlc3Rpb25MaXN0OiBBcnJheTxJZGJRdWVzdGlvbj4pOiB2b2lke1xyXG4gICAgcXVlc3Rpb25MaXN0LmZvckVhY2gocXVlc3Rpb24gPT4ge1xyXG4gICAgICAvL9GB0L7Qt9C00LDRkdC8INC/0YPRgdGC0L7QuSDQvtGC0LLQtdGCINC00LvRjyDQstC+0L/RgNC+0YHQsC5cclxuICAgICAgY29uc3QgYW5zd2VyID0gdGhpcy5faW50ZXJ2aWV3LmNyZWF0ZUFuc3dlcihxdWVzdGlvbi5RdWVzdGlvbkd1aWQsIHF1ZXN0aW9uLlZlcnNpb24pO1xyXG5cclxuICAgICAgLy/RgtCw0LrQvtCz0L4g0LHRi9GC0Ywg0L3QtSDQtNC+0LvQttC90L4sINGN0YLQviDQvtGI0LjQsdC60LBcclxuICAgICAgaWYgKCFhbnN3ZXIpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fuc3dlciBub3QgZm91bmQnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fbG9naWMuc2V0TG9naWNWYWx1ZShxdWVzdGlvbi5TeXNOYW1lLCBNSVNTSU5HX1ZBTFVFKTsgLy8g0L/QtdGA0LXQvNC10L3QvdCw0Y8g0YHQsNC80L7Qs9C+INCy0L7Qv9GA0L7RgdCwXHJcblxyXG4gICAgICAvL9C00L7QsdCw0LLQuNC8INC00L7QvyDQvtGC0LLQtdGC0Ysg0Lgg0LvQvtCz0LjQutGDINC00LvRjyDQvdC40YVcclxuICAgICAgcXVlc3Rpb24uQWRkaXRpb25hbEFuc3dlcmxpc3QuZm9yRWFjaChhYSA9PiB7XHJcbiAgICAgICAgYW5zd2VyLkFuc3dlckFkZGl0aW9uYWxbYWEuVmFsdWVdID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9sb2dpYy5zZXRMb2dpY1ZhbHVlKGAke3F1ZXN0aW9uLlN5c05hbWV9JHthYS5TeXNOYW1lfWAsIE1JU1NJTkdfVkFMVUUpOyAvLyDQu9C+0LPQuNC60LAg0LTQu9GPINC/0LXRgNC10LzQtdC90L3Ri9GFINC00L7QvyDQvtGC0LLQtdGC0LBcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyDQtdGB0LvQuCDQsiDRgtC10LrRgdGC0LUgcG9zdFNjcmlwdCDQtdGB0YLRjCDQt9Cw0L/QuNGB0Ywg0YLQuNC/0LAgc2V0VmFyKCd2YXJOYW1lJywgIHZhbHVlKTsgINC90YPQttC90L4g0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNGC0Ywg0L/QtdGA0LXQvNC10L3QvdGD0Y4gdmFyTmFtZSDQt9C90LDRh9C10L3QuNC10LwgLTk3LlxyXG4gICAgICBpZiAoISFxdWVzdGlvbi5Qb3N0U2NyaXB0KSB7XHJcbiAgICAgICAgKHF1ZXN0aW9uLlBvc3RTY3JpcHQubWF0Y2goLyhcXGJzZXR2YXJcXGIpXFwoWyd8XCJdKC4qPylbJ3xcIl0vZ2ltKSA/PyBbXSkubWFwKHNjcmlwdFZhciA9PiBzY3JpcHRWYXIubWF0Y2goL1snfFwiXSguKylbJ3xcIl0vaSkhWzFdKS5mb3JFYWNoKHZhck5hbWUgPT4gdGhpcy5fbG9naWMuc2V0TG9naWNWYWx1ZSh2YXJOYW1lLCBudWxsKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vINC00LvRjyDQktC+0L/RgNC+0YHQvtCyIFNTL01TINC90YPQttC90L4g0L/RgNC+0L/QuNGB0LDRgtGMINC70L7Qs9C40LrRgyDQsNC70YzRgtC10YDQvdCw0YLQuNCyIHN5c25hbWUg0LLQvtC/0YDQvtGB0LAgKyBzeXNuYW1lINCw0LvRjNGC0LXRgNC90LDRgtC40LLRi1xyXG4gICAgICBpZiAocXVlc3Rpb24uU2VjdGlvbmxpc3QubGVuZ3RoIDw9IDApIHsvLyDQtNC70Y8g0JLQvtC/0YDQvtGB0L7QsiBTUy9NU1xyXG4gICAgICAgIHF1ZXN0aW9uLkFsdGVybmF0aXZlbGlzdC5mb3JFYWNoKGFsdCA9PiB0aGlzLl9sb2dpYy5zZXRMb2dpY1ZhbHVlKGAke3F1ZXN0aW9uLlN5c05hbWV9JHthbHQuU3lzTmFtZX1gLCBNSVNTSU5HX1ZBTFVFKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy/QtNC70Y8g0LLQvtC/0YDQvtGB0L7QsiDRgyDQutC+0YLQvtGA0YvRhSDQtdGB0YLRjCDRgdC10LrRhtC40Lgg0L/RgNC+0LjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXQvCDQutCw0LbQtNGD0Y4g0YHQtdC60YbQuNGOXHJcbiAgICAgICAgcXVlc3Rpb24uU2VjdGlvbmxpc3QuZm9yRWFjaChzZWN0aW9uID0+IHtcclxuXHJcbiAgICAgICAgICAvL9GB0L7Qt9C00LDRkdC8INC/0YPRgdGC0L7QuSDQvtGC0LLQtdGCINC00LvRjyDRgdC10LrRhtC40LguXHJcbiAgICAgICAgICBjb25zdCBhbnN3ZXJGb3JTZWN0aW9uID0gdGhpcy5faW50ZXJ2aWV3LmNyZWF0ZUFuc3dlcihzZWN0aW9uLlNlY3Rpb25HdWlkLCAxKTtcclxuXHJcbiAgICAgICAgICAvL9GC0LDQutC+0LPQviDQsdGL0YLRjCDQvdC1INC00L7Qu9C20L3Qviwg0Y3RgtC+INC+0YjQuNCx0LrQsFxyXG4gICAgICAgICAgaWYgKCFhbnN3ZXJGb3JTZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYW5zd2VyIG5vdCBmb3VuZCcpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vINC00LvRjyDQktC+0L/RgNC+0YHQvtCyIFNMINC90YPQttC90L4g0L/RgNC+0L/QuNGB0LDRgtGMINC70L7Qs9C40LrRgyDQsNC70YzRgtC10YDQvdCw0YLQuNCyINC4INGB0LXQutGG0LjQuSBzeXNuYW1lINGB0LXQutGG0LjQuCArIHN5c25hbWUg0LDQu9GM0YLQtdGA0L3QsNGC0LjQstGLXHJcbiAgICAgICAgICB0aGlzLl9sb2dpYy5zZXRMb2dpY1ZhbHVlKHNlY3Rpb24uU3lzTmFtZSwgTUlTU0lOR19WQUxVRSk7IC8vINC/0LXRgNC10LzQtdC90L3QsNGPINGB0LDQvNC+0Lkg0YHQtdC60YbQuNC4XHJcblxyXG4gICAgICAgICAgLy/Qu9C+0LPQuNC60LAg0LDQu9GM0YLQtdGA0L3QsNGC0LjQsiBTTCDQstC+0L/RgNC+0YHQsFxyXG4gICAgICAgICAgcXVlc3Rpb24uQWx0ZXJuYXRpdmVsaXN0LmZvckVhY2goYWx0ID0+IHRoaXMuX2xvZ2ljLnNldExvZ2ljVmFsdWUoYCR7c2VjdGlvbi5TeXNOYW1lfSR7YWx0LlN5c05hbWV9YCwgTUlTU0lOR19WQUxVRSkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvL9C40YnQtdGCINCy0L7Qv9GA0L7RgSDQvdCwIGd1aWRcclxuICAjZmluZFF1ZXN0aW9uQnlHdWlkKGd1aWQ6IG51bWJlcik6IElkYlF1ZXN0aW9uIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghdGhpcy4jcXVlc3Rpb25hcnkpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLiNxdWVzdGlvbmFyeS5RdWVzdGlvbnMuZmluZChxID0+IHEuUXVlc3Rpb25HdWlkID09PSBndWlkKTtcclxuICB9XHJcblxyXG4gICNuZXh0QnV0dG9uRXhwcmVzc2lvbklzVHJ1ZSgpOiBib29sZWFue1xyXG4gICAgY29uc3QgYnV0dG9uTmV4dEV4cHJlc3Npb24gPSB0aGlzLiNjdXJyZW50UXVlc3Rpb24udmFsdWU/LkJ0bk5leHRFeHByZXNzaW9uID8/ICcnO1xyXG4gICAgLy/QtdGB0LvQuCDRgdC60YDQuNC/0YLQsCDQtNC70Y8g0LrQvdC+0L/QutC4INC00LDQu9C10LUg0L3QtdGCLCDQstC10YDQvdGR0LwgdHJ1ZVxyXG4gICAgaWYgKGJ1dHRvbk5leHRFeHByZXNzaW9uLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbG9naWMuZXhlY3V0ZUxvZ2ljKGJ1dHRvbk5leHRFeHByZXNzaW9uKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2NhbGN1bGF0ZUltcGxpY2l0UXVlc3Rpb24ocXVlc3Rpb246IElkYlF1ZXN0aW9uKTogdm9pZHtcclxuICAgIGlmIChxdWVzdGlvbi5JbXBsaWNpdCAmJiAocXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxU1MgfHwgcXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxTVMpICkge1xyXG4gICAgICBsZXQgcXVlc3Rpb25BbnN3ZXI6IG51bWJlciB8IEFycmF5PG51bWJlcj47XHJcblxyXG4gICAgICBpZiAocXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxU1MpIHtcclxuICAgICAgICBjb25zdCBhbHQgPSBxdWVzdGlvbi5BbHRlcm5hdGl2ZWxpc3QuZmluZChhbHQgPT4gdGhpcy5fbG9naWMuZXhlY3V0ZUxvZ2ljKGFsdC5FbmFibGVFeHByZXNzaW9uKSk7XHJcbiAgICAgICAgcXVlc3Rpb25BbnN3ZXIgPSAhIWFsdCA/IGFsdC5WYWx1ZSA6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChxdWVzdGlvbi5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFNUykge1xyXG4gICAgICAgIHF1ZXN0aW9uQW5zd2VyID0gcXVlc3Rpb24uQWx0ZXJuYXRpdmVsaXN0XHJcbiAgICAgICAgICAuZmlsdGVyKGFsdCA9PiB0aGlzLl9sb2dpYy5leGVjdXRlTG9naWMoYWx0LkVuYWJsZUV4cHJlc3Npb24pKVxyXG4gICAgICAgICAgLm1hcChhbHQgPT4gYWx0LlZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYW5zd2VyQ2hhbmdlOiBBbnN3ZXJDaGFuZ2UgPSB7XHJcbiAgICAgICAgZ3VpZDogcXVlc3Rpb24uUXVlc3Rpb25HdWlkLFxyXG4gICAgICAgIGlzQ29tcGxldGU6IHRydWUsXHJcbiAgICAgICAgYW5zd2VyOiBxdWVzdGlvbkFuc3dlciEsXHJcbiAgICAgICAgYWRkaXRpb25hbEFuc3dlcnM6IHt9LFxyXG4gICAgICAgIGxvZ2ljVmFyczoge30sXHJcbiAgICAgICAgdmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXM6IFtdLFxyXG4gICAgICAgIHZpZXdlZFNlY3Rpb25HdWlkczogW10sXHJcbiAgICAgICAgYWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrczogW11cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZUFuc3dlcihhbnN3ZXJDaGFuZ2UpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuIl19
|
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAuc3VydmV5LmNvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RwLnN1cnZleS9zcmMvbGliL2NvcmUvdHAuc3VydmV5LmNvcmUvdHAuc3VydmV5LmNvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRWhFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUduQyxPQUFPLEVBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdqRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFjOUQsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7SUFDMUMsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXFCLElBQUksQ0FBQyxDQUFDO0lBQzFFLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25DLFlBQVksQ0FBa0I7SUFDOUIsbUJBQW1CLEdBQWtCLEVBQUUsQ0FBQyxDQUFDLHFDQUFxQztJQUM5RSwwQkFBMEIsR0FBdUIsRUFBRSxDQUFDLENBQUMsNEhBQTRIO0lBQ3hLLFdBQVcsR0FBRyxNQUFNLENBQUMs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TUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBU2MsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZXN0cm95UmVmLCBpbmplY3QsIEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtTdXJ2ZXlRdW90YXN9IGZyb20gJy4uL3RwLnNlcnZleS5xdW90YS90cC5zdXJ2ZXkucXVvdGEnO1xyXG5pbXBvcnQge1RwU3VydmV5TG9naWNTZXJ2aWNlfSBmcm9tICcuLi90cC5zdXJ2ZXkubG9naWMvdHAuc3VydmV5LmxvZ2ljLnNlcnZpY2UnO1xyXG5pbXBvcnQge2lzUGxhdGZvcm1Ccm93c2VyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0Fuc3dlckNoYW5nZSwgSWRiUXVlc3Rpb24sIElkYlF1ZXN0aW9uYXJ5LCBJSW50ZXJ2aWV3RGF0YSwgSUludGVydmlld0xvZ2ljVmFyLCBJUXVlc3Rpb25BbnN3ZXJ9IGZyb20gJy4uLy4uL3RwLnN1cnZleS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1RwU3VydmV5SW50ZXJ2aWV3U2VydmljZX0gZnJvbSAnLi4vdHAuc3VydmV5LmludGVydmlldy90cC5zdXJ2ZXkuaW50ZXJ2aWV3LnNlcnZpY2UnO1xyXG5pbXBvcnQge1F1ZXN0aW9uc1R5cGUsIFJlc3VsdGF0aXZlU3RhdHVzLCBTdXJ2ZXlFdmVudHMsIFZhbGlkU3RhdHVzfSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkuZW51bSc7XHJcbmltcG9ydCB7QW5zd2VyfSBmcm9tICcuLi90cC5zdXJ2ZXkuYW5zd2VyL3RwLnN1cnZleS5hbnN3ZXInO1xyXG5pbXBvcnQge0Fuc3dlclNsVHlwZSwgTG9naWNPYmplY3R9IGZyb20gJy4uLy4uL3RwLnN1cnZleS50eXBlJztcclxuaW1wb3J0IHtNSVNTSU5HX1ZBTFVFfSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkuY29uc3QnO1xyXG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuaW50ZXJmYWNlIEJyb2FkY2FzdEV2ZW50IHtcclxuICBrZXk6IHN0cmluZztcclxuICBkYXRhPzogYW55O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSUxvZ2ljVmFyQ29udGFpbmVyIHtcclxuICBbcXVlc3Rpb25HdWlkOiBzdHJpbmddOiBTZXQ8c3RyaW5nPjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHBTdXJ2ZXlDb3JlU2VydmljZSB7XHJcbiAgcmVhZG9ubHkgI2V2ZW50QnVzID0gbmV3IFN1YmplY3Q8QnJvYWRjYXN0RXZlbnQ+KCk7XHJcbiAgcmVhZG9ubHkgI2N1cnJlbnRRdWVzdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SWRiUXVlc3Rpb24gfCBudWxsPihudWxsKTtcclxuICAjc3VydmV5UXVvdGFzID0gbmV3IFN1cnZleVF1b3RhcygpO1xyXG4gICNxdWVzdGlvbmFyeT86IElkYlF1ZXN0aW9uYXJ5O1xyXG4gICNkaXNwbGF5ZWRRdWVzdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbXTsgLy8g0L3Rg9C20L3QviDQtNC70Y8g0L3QsNCy0LjQs9Cw0YbQuNC4INC/0L4g0LrQvdC+0L/QutC1IGJhY2tcclxuICAjcXVlc3Rpb25Mb2dpY1ZhckNvbnRhaW5lcjogSUxvZ2ljVmFyQ29udGFpbmVyID0ge307IC8v0J3Rg9C20L3QviDQt9C90LDRgtGMINC60LDQutCw0Y8g0LvQvtCz0LjRh9C10YHQutCw0Y8g0L/QtdGA0LXQvNC10L3QvdCw0Y8g0L7RgtC90L7RgdC40YLRgdGPINC6INC60LDQutC+0LzRgyDQstC+0L/RgNC+0YHRgy4g0J3QsNC/0YDQuNC80LXRgNCuINC60L7Qs9C00LAg0L3Rg9C20L3QviDQtdC1INC+0YLRh9C40YHRgtC40YLRjCDQv9GA0Lgg0L/QtdGA0LXRhdC+0LTQtSDQvdCw0LfQsNC0LlxyXG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZDogb2JqZWN0LCBwcml2YXRlIHJlYWRvbmx5IF9sb2dpYzogVHBTdXJ2ZXlMb2dpY1NlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgX2ludGVydmlldzogVHBTdXJ2ZXlJbnRlcnZpZXdTZXJ2aWNlKSB7XHJcbiAgICAvLyDQt9Cw0L/Rg9GB0LrQsNC8INC/0YDQvtCy0LXRgNC60YMg0LrQstC+0YIsINC/0L7RgdC70LUg0YHQutGA0YvRgtC40Y8g0LrQsNC20LTQvtCz0L4o0L/QvtGH0YLQuCkg0LLQvtC/0YDQvtGB0LAgKHNlUXVlc3Rpb25IaWRlKVxyXG4gICAgdGhpcy4jZXZlbnRCdXMuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICBmaWx0ZXIoZXYgPT4gZXYua2V5ID09PSBTdXJ2ZXlFdmVudHMuc2VRdWVzdGlvbkhpZGUgKSxcclxuICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXHJcbiAgICApLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHRoaXMuI3N1cnZleVF1b3Rhcy5maW5kRmlsbGVkUXVvdGFzKHRoaXMuI2N1cnJlbnRRdWVzdGlvbi52YWx1ZT8uUXVlc3Rpb25OdW0gPz8gLTEsIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2xvZ2ljLmdldExvZ2ljVmFycygpKSwgdGhpcy5faW50ZXJ2aWV3LmdldEFuc3dlckxpc3QoKSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0dXBTdXJ2ZXkocXVlc3Rpb25hcnlSYXdEYXRhOiBJZGJRdWVzdGlvbmFyeSwgbG9naWNWYXJzPzogQXJyYXk8SUludGVydmlld0xvZ2ljVmFyPiwgYW5zd2VyTGlzdD86IEFycmF5PElRdWVzdGlvbkFuc3dlcj4sIHF1ZXN0aW9uR3VpZD86IG51bWJlcikge1xyXG4gICAgLy/QtdGB0LvQuCDQsNC90LrQtdGC0Ysg0L3QtdGCLCDQtNC10LvQsNGC0Ywg0L3QtdGH0LXQs9C+LlxyXG4gICAgaWYgKCFxdWVzdGlvbmFyeVJhd0RhdGEpIHtcclxuICAgICAgdGhpcy4jY3VycmVudFF1ZXN0aW9uLm5leHQobnVsbCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiNxdWVzdGlvbmFyeSA9IHF1ZXN0aW9uYXJ5UmF3RGF0YTtcclxuXHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAvL9GD0LfQvdCw0LXQvCDQtdGB0YLRjCDQu9C4INCy0L7Qv9GA0L7RgSDQutC+0YLQvtGA0YvQuSDRg9C60LDQt9Cw0LvQuCDQtNC70Y8g0L/QtdGA0LXRhdC+0LTQsCDQv9GA0Lgg0LfQsNC/0L7Qu9C90LXQvdC40Lgg0LrQstC+0YLRi1xyXG4gICAgICBjb25zdCBkZXN0aW5hdGlvblF1ZXN0aW9uID0gdGhpcy4jZmluZFF1ZXN0aW9uQnlHdWlkKHF1ZXN0aW9uYXJ5UmF3RGF0YS5CYXNlUGFyYW1zLlF1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCk7XHJcblxyXG4gICAgICAvL9C40L3QuNGG0LjQsNC70LjQt9C40YDRg9C10Lwg0LrQstC+0YLRi1xyXG4gICAgICB0aGlzLiNzdXJ2ZXlRdW90YXMuc2V0UXVvdGFzKHF1ZXN0aW9uYXJ5UmF3RGF0YS5RdW90YXMsIHF1ZXN0aW9uYXJ5UmF3RGF0YS5RdW90YXMyZCwgZGVzdGluYXRpb25RdWVzdGlvbj8uUXVlc3Rpb25HdWlkID8/IC0xLCBkZXN0aW5hdGlvblF1ZXN0aW9uPy5RdWVzdGlvbk51bSA/PyAtMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/RgdC+0LfQtNCw0LTQuNC8INC+0YLQstC10YLRiyDQuCDQu9C+0LPQuNGH0LXRgdC60LjQtSDQv9C10YDQtdC80LXQvdC90YvQtVxyXG4gICAgdGhpcy4jaW5pdGlhdGVRdWVzdGlvbnModGhpcy4jcXVlc3Rpb25hcnkuUXVlc3Rpb25zKVxyXG5cclxuICAgIC8vINCc0L7QttC10YIg0LHRi9GC0YwgMiDQstCw0YDQuNCw0L3RgtCwINC30LDQv9GD0YHQutCwINC40L3RgtC10YDQstGM0Y4sIDEt0L3QvtCy0L7QtSDQuNC90YLQtdGA0LLRjNGOLCAyLdC/0LXRgNC10LfQsNC/0YPRgdC6INGB0YLQsNGA0L7Qs9C+INC40L3RgtC10YDQstGM0Y4uINCSINC/0LXRgNCy0L7QvCDRgdC70YPRh9Cw0LUg0L3QsNGH0LDQu9C+INGN0YLQviBsYW5nINC40LvQuCDQv9C10YDQstGL0Lkg0LLQvtC/0YDQvtGBLiDQktC+INCy0YLQvtGA0L7QvCwg0YEg0L/QvtGB0LvQtdC00L3QtdCz0L4g0LLQvtC/0YDQvtGB0LAg0L3QsCDQutC+0YLQvtGA0YvQuSDQvtGC0LLQtdGC0LjQu9C4LlxyXG4gICAgbGV0IHN0YXJ0UXVlc3Rpb25OdW06IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIC8v0LXRgdC70Lgg0LfQsNCz0YDRg9C20LDQtdC8INGA0LDQvdC10LUg0L3QtSDQt9Cw0LrQvtC90YfQtdC90L3QvtC1INC40L3RgtC10YDQstGM0Y4sINC/0YDQvtC00L7Qu9C20LDQtdC8INGBINC80LXRgdGC0LAg0L/QvtGB0LvQtdC00L3QtdCz0L4g0LLQvtC/0YDQvtGB0LAgKNGB0LvRg9GH0LDQuSDQvdC+0LzQtdGAIDIpXHJcbiAgICBpZiAoISFsb2dpY1ZhcnMgJiYgISFhbnN3ZXJMaXN0ICYmICEhcXVlc3Rpb25HdWlkKSB7XHJcbiAgICAgIC8v0LfQsNCz0YDRg9C20LDQtdC8INGB0YLQsNGA0YvQtSDQu9C+0LPQuNGH0LXRgdC60LjQtSDQv9C10YDQtdC80LXQvdC90YvQtSDQuCDQvtGC0LLQtdGC0YtcclxuICAgICAgdGhpcy4jZmlsbE9sZEludGVydmlld0RhdGEobG9naWNWYXJzLCBhbnN3ZXJMaXN0KTtcclxuXHJcbiAgICAgIC8v0LjRidC10Lwg0L3QvtC80LXRgCDQstC+0L/RgNC+0YHQsCwg0LrQvtGC0L7RgNGL0Lkg0LHRi9C7INC/0L7RgdC70LXQtNC90LjQuSDQv9C10YDQtdC0INGB0L7RhdGA0LDQvdC10L3QuNC10LwuXHJcbiAgICAgIGNvbnN0IHF1ZXN0aW9uTGFzdFNhdmUgPSB0aGlzLiNmaW5kUXVlc3Rpb25CeUd1aWQocXVlc3Rpb25HdWlkKTtcclxuXHJcbiAgICAgIC8v0JLQvtC/0YDQvtGBINC80L7Qs9C70Lgg0YPQtNCw0LvQuNGC0YwuINCi0L7Qs9C00LAg0L3QsNGH0L3QtdC8INGB0L3QsNGH0LDQu9CwLlxyXG4gICAgICBpZiAoISFxdWVzdGlvbkxhc3RTYXZlKSB7XHJcbiAgICAgICAgc3RhcnRRdWVzdGlvbk51bSA9IHF1ZXN0aW9uTGFzdFNhdmUuUXVlc3Rpb25OdW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzdGFydFF1ZXN0aW9uTnVtID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy/QrdGC0L4g0L3QvtCy0L7QtSDQuNC90YLQtdGA0LLRjNGOLCDQsdC10Lcg0YDQsNC90LXQtSDRgdC+0YXRgNCw0L3RkdC90L3Ri9GFINC00LDQvdC90YvRhSjRgdC70YPRh9Cw0LkgMSkuINCX0LDQv9GD0YHQutCw0LXQvCDQvtC/0YDQvtGBLCDQv9C10YDQstGL0Lkg0Y3QutGA0LDQvSDRjdGC0L4gTGFuZyDQstC+0L/RgNC+0YEsINC90L4g0LXRgdC70Lgg0LLRi9Cx0L7RgNCwINGP0LfRi9C60LAg0L3QtdGCLCDQv9GA0L7Qv9GD0YHQutCw0LXQvCDQuCDQv9C10YDQtdGF0L7QtNC40Lwg0L3QsCAxLdC5INCy0L7Qv9GA0L7RgVxyXG4gICAgICBzdGFydFF1ZXN0aW9uTnVtID0gdGhpcy4jYWN0aXZlTGFuZ0NvdW50ID4gMSA/IDAgOiB0aGlzLiNuZXh0UXVlc3Rpb25OdW0oKTtcclxuICAgIH1cclxuXHJcbiAgICAvL9C/0L7RiNC70ZHQvCDRgdC+0LHRi9GC0LjQtSDQviDQvdCw0YfQsNC70LUg0L7Qv9GA0L7RgdCwXHJcbiAgICB0aGlzLiNldmVudEJ1cy5uZXh0KHtrZXk6IFN1cnZleUV2ZW50cy5zZVN1cnZleVN0YXJ0LCBkYXRhOiB7cXVlc3Rpb25hcnk6IHRoaXMuI3F1ZXN0aW9uYXJ5fX0pO1xyXG5cclxuICAgIC8v0L/QvtC60LDQt9GL0LLQsNC10Lwg0LLQvtC/0YDQvtGBXHJcbiAgICB0aGlzLiNjaGFuZ2VDdXJyZW50UXVlc3Rpb24odGhpcy4jcXVlc3Rpb25hcnkhLlF1ZXN0aW9uc1tzdGFydFF1ZXN0aW9uTnVtXSk7XHJcbiAgfVxyXG5cclxuICBvbiguLi5rZXk6IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuI2V2ZW50QnVzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXHJcbiAgICAgZmlsdGVyKGV2ZW50ID0+IGtleS5pbmNsdWRlcyhldmVudC5rZXkpKSxcclxuICAgICBtYXAoZXZlbnQgPT4gZXZlbnQuZGF0YSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnb1RvTmV4dFF1ZXN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY3VycmVudFF1ZXN0aW9uID0gdGhpcy4jY3VycmVudFF1ZXN0aW9uLnZhbHVlO1xyXG4gICAgaWYgKCFjdXJyZW50UXVlc3Rpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy/QtdGB0LvQuCDQvtGC0LLQtdGCINC90LAg0YLQtdC60YPRidC40Lkg0LLQvtC/0YDQvtGBINC90LUg0LfQsNC60L7QvdGH0LXQvSwg0LLRi9GF0L7QtNC40LxcclxuICAgIGlmICghdGhpcy5faW50ZXJ2aWV3LnF1ZXN0aW9uSXNDb21wbGV0ZShjdXJyZW50UXVlc3Rpb24uUXVlc3Rpb25HdWlkKSkge1xyXG4gICAgICByZXR1cm4gO1xyXG4gICAgfVxyXG5cclxuICAgIC8v0LXRgdC70Lgg0YPQutCw0LfQsNC9IFBvc3RTY3JpcHQsINCy0YvQv9C+0LvQvdC40Lwg0LXQs9C+XHJcbiAgICBpZiAoISFjdXJyZW50UXVlc3Rpb24uUG9zdFNjcmlwdCkge1xyXG4gICAgICB0aGlzLl9sb2dpYy5leGVjdXRlUG9zdFNjcmlwdChjdXJyZW50UXVlc3Rpb24uUG9zdFNjcmlwdCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLiNjaGFuZ2VDdXJyZW50UXVlc3Rpb24odGhpcy4jcXVlc3Rpb25hcnkhLlF1ZXN0aW9uc1t0aGlzLiNuZXh0UXVlc3Rpb25OdW0oKV0pO1xyXG4gIH1cclxuXHJcbiAgZ29Ub0JhY2tRdWVzdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuI2Rpc3BsYXllZFF1ZXN0aW9ucy5wb3AoKTsgLy8g0YPQtNCw0LvQuNC8INC40L3RhNC+0YDQvNCw0YbQuNGOINC+INGC0L7QvCDRh9GC0L4g0L/QvtC60LDQt9GL0LLQsNC70Lgg0Y3RgtC+0YIg0LLQvtC/0YDQvtGBXHJcbiAgICBjb25zdCBwcmV2aW91c1F1ZXN0aW9uTnVtID0gdGhpcy4jZGlzcGxheWVkUXVlc3Rpb25zLnBvcCgpOyAvLyDRg9C30L3QsNC10Lwg0L3QvtC80LXRgCDQstC+0L/RgNC+0YHQsCDQvdCwINC60L7RgtC+0YDRi9C5INC90LDQvCDQvdCw0LTQviDQv9C10YDQtdC50YLQuCwg0Lgg0YPQtNCw0LvQuNC8INC40L3RhNC+0YDQvNCw0YbQuNGOINGH0YLQvi3QsdGLINC90LUg0LTRg9Cx0LvQuNGA0L7QstCw0YLRjFxyXG4gICAgaWYgKCEhcHJldmlvdXNRdWVzdGlvbk51bSkge1xyXG4gICAgICBjb25zdCBwcmV2UXVlc3Rpb24gPSB0aGlzLiNxdWVzdGlvbmFyeT8uUXVlc3Rpb25zW3ByZXZpb3VzUXVlc3Rpb25OdW1dO1xyXG4gICAgICBpZiAoISFwcmV2UXVlc3Rpb24pIHtcclxuICAgICAgICB0aGlzLiNjbGVhckFuc3dlckZvckN1cnJlbnRRdWVzdGlvbigpOy8vINC+0YLRh9C40YHRgtC40Lwg0L7RgtCy0LXRgiDQvdCwINCy0L7Qv9GA0L7RgSwg0LXRgdC70Lgg0L7QvSDRg9C20LUg0LXRgdGC0YwuXHJcbiAgICAgICAgdGhpcy4jY2hhbmdlQ3VycmVudFF1ZXN0aW9uKHByZXZRdWVzdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHF1ZXN0aW9uSXNDb21wbGV0ZShndWlkOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGFuc3dlciA9IHRoaXMuX2ludGVydmlldy5maW5kQW5zd2VyQnlHdWlkKGd1aWQpO1xyXG4gICAgcmV0dXJuIGFuc3dlcj8uYW5zd2VySXNDb21wbGV0ZSA/PyBmYWxzZVxyXG4gIH1cclxuICBcclxuICAvKlxyXG4gICog0YTRg9C90LrRhtC40Y8g0L/QviDQvdC+0LzQtdGA0YMg0LLQvtC/0YDQvtGB0LAsINC40YnQtdGCINC+0YLQstC10YIg0L3QsCDRjdGC0L7RgiBndWlkLCDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQvtGC0LLQtdGCINC90LAg0Y3RgtC+0YIg0LLQvtC/0YDQvtGBLlxyXG4gICog0LXRgdC70Lgg0Y3RgtC+IHNzIG1zLCDQstC80LXRgdGC0L4g0L3QvtC80LXRgNC+0LIg0LDQu9GM0YLQtdGA0L3QsNGC0LjQsiDQv9C+0LTRgdGC0LDQstC70Y/QtdGCINGC0LXQutGB0YIuXHJcbiAgKiDRgNCw0LHQvtGC0LDQtdGCINGC0L7Qu9GM0LrQviDQtNC70Y8gZXFPTCwgZXFTUywgZXFNU1xyXG4gICogKi9cclxuICBndWlkVG9UZXh0QW5zd2VyKGd1aWQ6IG51bWJlciwgbGFuZ3VhZ2VJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGFuc3dlciA9IHRoaXMuZmluZEFuc3dlckJ5R3VpZChndWlkKTtcclxuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy4jZmluZFF1ZXN0aW9uQnlHdWlkKGd1aWQpO1xyXG4gICAgXHJcbiAgICAvL9C10YHQu9C4INC+0YLQstC10YLQsCDQvdC10YIsINGA0LXQstC90ZHQvCDQv9GD0YHRgtGD0Y4g0YHRgtGA0L7QutGDXHJcbiAgICBpZiAoIXF1ZXN0aW9uIHx8ICFhbnN3ZXIgfHwgYW5zd2VyLkFuc3dlclZhbHVlID09PSAtOTcpIHtcclxuICAgICAgcmV0dXJuICcnXHJcbiAgICB9XHJcbiAgICBjb25zdCBxdWVzdGlvblR5cGUgPSBxdWVzdGlvbi5RdWVzdGlvblR5cGU7XHJcbiAgICBcclxuICAgIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XHJcbiAgICAgIFxyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFPTDogcmV0dXJuIGFuc3dlci5BbnN3ZXJWYWx1ZTtcclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxU1M6IHtcclxuICAgICAgICAvL9C90LDRhdC+0LTQuNC8INCw0LvRjNGC0LXRgNC90LDRgtC40LLRgyDQuCDQv9C+0LTRgdGC0LDQstC70Y/QtdC8INC30LDQs9C+0LvQvtCy0L7QuiDQsNC70YzRgtC10YDQvdCw0YLQuNCy0Ysg0YEg0YPQutCw0LfQsNC90L3Ri9C8INGP0LfRi9C60L7QvCwg0LXRgdC70Lgg0LfQsNCz0L7Qu9C+0LLQutCwINC90LXRgiwg0LLQtdGA0L3RkdC8IGFsaWFzXHJcbiAgICAgICAgY29uc3QgYWx0ZXJuYXRpdmUgPSBxdWVzdGlvbi5BbHRlcm5hdGl2ZWxpc3QuZmluZChhbHQgPT4gYWx0LlZhbHVlID09PSBhbnN3ZXIuQW5zd2VyVmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IGFsdFRleHQgPSBhbHRlcm5hdGl2ZT8uTXVsdGlMYW5nQ2FwdGlvbnMuZmluZChvYmogPT4gb2JqLmxhbmcgPT09IGxhbmd1YWdlSWQpO1xyXG5cclxuICAgICAgICByZXR1cm4gKGFsdFRleHQ/LkNhcHRpb25IdG1sIHx8IGFsdGVybmF0aXZlPy5hbGlhcykgPz8gJyc7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxTVM6IHtcclxuICAgICAgICAvL9Cy0YHRkSDRgtC+INC20LUg0YHQsNC80L7QtSwg0YfRgtC+INC4IHNzLCDRgtC+0LvRjNC60L4g0YLRg9GCINC80LDRgdGB0LjQsiDQvtGC0LLQtdGC0L7QsixcclxuICAgICAgICBjb25zdCBhbnN3ZXJBcnJheSA9IGFuc3dlci5BbnN3ZXJWYWx1ZSBhcyBBcnJheTxudW1iZXI+O1xyXG4gICAgICAgIGNvbnN0IGFsdGVybmF0aXZlQXJyYXkgPSBxdWVzdGlvbi5BbHRlcm5hdGl2ZWxpc3QuZmlsdGVyKGFsdCA9PiBhbnN3ZXJBcnJheS5pbmRleE9mKGFsdC5WYWx1ZSkgPiAwKTtcclxuICAgICAgICBjb25zdCBhbHRUZXh0QXJyYXkgPSBhbHRlcm5hdGl2ZUFycmF5Lm1hcChhbHQgPT4gKGFsdC5NdWx0aUxhbmdDYXB0aW9ucy5maW5kKG9iaiA9PiBvYmoubGFuZyA9PT0gbGFuZ3VhZ2VJZCk/LkNhcHRpb25IdG1sIHx8IGFsdC5hbGlhcykgPz8gJycpO1xyXG4gICAgICAgIHJldHVybiBhbHRUZXh0QXJyYXkuam9pbignLCAnKTtcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjZmlsbE9sZEludGVydmlld0RhdGEobG9naWNWYXJzOiBBcnJheTxJSW50ZXJ2aWV3TG9naWNWYXI+LCBhbnN3ZXJMaXN0OiBBcnJheTxJUXVlc3Rpb25BbnN3ZXI+KTogdm9pZHtcclxuICAgIC8v0L/RgNC+0L/QuNGI0LXQvCDRgdGC0LDRgNGL0LUg0LvQvtCz0LjRh9C10YHQutC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LVcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGxvZ2ljVmFycykpIHtcclxuICAgICAgbG9naWNWYXJzLmZvckVhY2gobG9naWNWYXJPYmogPT4ge1xyXG4gICAgICAgIHRoaXMuX2xvZ2ljLnNldExvZ2ljVmFsdWUobG9naWNWYXJPYmoubm0sIGxvZ2ljVmFyT2JqLnZsKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICAvL9C/0YDQvtC/0LjRiNC10Lwg0YHRgtCw0YDRi9C1INC+0YLQstC10YLRi1xyXG4gICAgdGhpcy5faW50ZXJ2aWV3Lm92ZXJyaWRlQW5zd2VycyhhbnN3ZXJMaXN0KTtcclxuXHJcbiAgICAvL9C90YPQttC90L4g0LLQtdGA0L3Rg9GC0Ywg0LLRgNC10LzRjyDQvdCw0YfQsNC70LAg0LjQvdGC0LXRgNCy0YzRjiwg0L7RgtC00LXQu9GM0L3QviDQvtC90L4g0L3QtSDRgdC+0YXRgNCw0L3Rj9C10YLRgdGPLCDQv9C+0Y3RgtC+0LzRgyDQstC+0LfRjNC80ZHQvCDQvNC40L3QuNC80LDQu9GM0L3QvtC1INCy0YDQtdC80Y8g0L3QsNGH0LDQu9CwINC40Lcg0L7RgtCy0LXRgtC+0LJcclxuICAgIC8v0YTQuNC70YzRgtGA0YPQtdC8INCy0YHQtSDQstC+0L/RgNC+0YHRiyDRgyDQutC+0YLQvtGA0YvRhSDQvtC90L4g0YPQutCw0LfQsNC90L4oPjApINC4INGC0YDQsNC90YHRhNC+0YDQvNC40YDRg9C10Lwg0LIg0YfQuNGB0LvQvi5cclxuICAgIGNvbnN0IHN0YXJ0ZWRBdEFycmF5ID0gIGFuc3dlckxpc3QuZmlsdGVyKGFuc3dlciA9PiBhbnN3ZXIuU3RhcnRlZEF0ID4gMCkubWFwKGFuc3dlciA9PiBhbnN3ZXIuU3RhcnRlZEF0KTtcclxuXHJcbiAgICAvL9Cx0LXRgNGR0Lwg0LzQuNC90LjQvNCw0LvRjNC90L7QtVxyXG4gICAgdGhpcy5faW50ZXJ2aWV3LnN0YXJ0ZWRBdCA9IE1hdGgubWluKC4uLnN0YXJ0ZWRBdEFycmF5KTtcclxuICB9XHJcblxyXG4gICNjaGFuZ2VDdXJyZW50UXVlc3Rpb24obmV3UXVlc3Rpb246IElkYlF1ZXN0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50UXVlc3Rpb24gPSB0aGlzLiNjdXJyZW50UXVlc3Rpb24udmFsdWU7XHJcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG5cclxuICAgIGlmICghIWN1cnJlbnRRdWVzdGlvbikge1xyXG4gICAgICAvKlxyXG4gICAgICDQodC+0YXRgNCw0L3QuNC8INCy0YDQtdC80Y8g0L3QsNGH0LDQu9CwINC40L3RgtC10YDQstGM0Y4uINCk0LjQutGB0LjRgNC+0LLQsNGC0Ywg0LHRg9C00LXQvCDQvdC1INGBINGB0LDQvNC+0LPQviDQvdCw0YfQsNC70LAsINCwINGBINC+0YLQstC10YLQsCDQvdCwINC/0LXRgNCy0YvQuSDQstC+0L/RgNC+0YEuXHJcbiAgICAgINCf0L7RgtC+0LzRgyDRh9GC0L4g0L/RgNCw0LrRgtC40LrQsCDRgtCw0LrQsNGPLCDQvtGC0LrRgNGL0YLRjCDQsNC90LrQtdGC0YMg0L3QsCDQv9C70LDQvdGI0LXRgtC1INC4INGF0L7QtNC40YLRjCDQuNGB0LrQsNGC0Ywg0YDQtdGB0L/QvtC90LTQtdC90YLQvtCyINC4INC40Lct0LfQsCDRjdGC0L7Qs9C+INC00LvQuNGC0LXQu9GM0L3QvtGB0YLRjCDQuNC90YLQtdGA0LLRjNGOINC80L7QttC10YIg0LHRi9GC0Ywg0L3QtdGA0LXQu9C10LLQsNC90YLQvdC+LlxyXG4gICAgICAqICovXHJcbiAgICAgIGlmICh0aGlzLl9pbnRlcnZpZXcuc3RhcnRlZEF0ID09PSAwICYmIGN1cnJlbnRRdWVzdGlvbi5RdWVzdGlvbk51bSA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5faW50ZXJ2aWV3LnN0YXJ0ZWRBdCA9IGN1cnJlbnRUaW1lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL9C90YPQttC90L4g0YHQvtGF0YDQsNC90LjRgtGMIEZpbmlzaGVkQXQg0LIg0L7RgtCy0LXRgtCw0YUg0LTQu9GPINGB0YLQsNGA0L7Qs9C+INCy0L7Qv9GA0L7RgdCwXHJcbiAgICAgIGNvbnN0IGFuc3dlciA9IHRoaXMuX2ludGVydmlldy5maW5kQW5zd2VyQnlHdWlkKGN1cnJlbnRRdWVzdGlvbi5RdWVzdGlvbkd1aWQpO1xyXG4gICAgICBpZiAoISFhbnN3ZXIpIHtcclxuICAgICAgICBhbnN3ZXIuRmluaXNoZWRBdCA9IGN1cnJlbnRUaW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuI2V2ZW50QnVzLm5leHQoe2tleTogU3VydmV5RXZlbnRzLnNlUXVlc3Rpb25IaWRlLCBkYXRhOiBjdXJyZW50UXVlc3Rpb259KTtcclxuICAgIH1cclxuICAgIHRoaXMuI2Rpc3BsYXllZFF1ZXN0aW9ucy5wdXNoKG5ld1F1ZXN0aW9uLlF1ZXN0aW9uTnVtKTtcclxuICAgIHRoaXMuI2N1cnJlbnRRdWVzdGlvbi5uZXh0KG5ld1F1ZXN0aW9uKTtcclxuXHJcbiAgICAvL9C90YPQttC90L4g0YHQvtGF0YDQsNC90LjRgtGMIFN0YXJ0ZWRBdCDQsiDQvtGC0LLQtdGC0LDRhSDQtNC70Y8g0L3QvtCy0L7Qs9C+INCy0L7Qv9GA0L7RgdCwXHJcbiAgICBjb25zdCBhbnN3ZXJOZXcgPSB0aGlzLl9pbnRlcnZpZXcuZmluZEFuc3dlckJ5R3VpZChuZXdRdWVzdGlvbi5RdWVzdGlvbkd1aWQpO1xyXG4gICAgaWYgKCEhYW5zd2VyTmV3KSB7XHJcbiAgICAgIGFuc3dlck5ldy5TdGFydGVkQXQgPSBjdXJyZW50VGltZTtcclxuICAgIH1cclxuICAgIHRoaXMuI2V2ZW50QnVzLm5leHQoe2tleTogU3VydmV5RXZlbnRzLnNlUXVlc3Rpb25TaG93LCBkYXRhOiBuZXdRdWVzdGlvbn0pO1xyXG5cclxuICAgIC8v0LXRgdC70Lgg0L3QvtCy0YvQuSDRjdC60YDQsNC9INGN0YLQviBlbmQg0YLQvtCz0LTQsCDQt9Cw0LLQtdGA0YjQsNC10Lwg0LjQvdGC0LXRgNCy0YzRjlxyXG4gICAgaWYgKG5ld1F1ZXN0aW9uLlF1ZXN0aW9uVHlwZSA9PT0gJ0VORCcpIHtcclxuICAgICAgdGhpcy4jZmluaXNoSW50ZXJ2aWV3KCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8v0LXRgdC70Lgg0Y3RgtC+INC90LXRj9Cy0L3Ri9C5INCy0L7Qv9GA0L7RgSDQuCDRjdGC0L4gc3Mg0LjQu9C4IG1zINCy0L7Qv9GA0L7RgSDRgtC+0LPQtNCwINC/0L7RgdGH0LjRgtCw0LXQvCDQt9C90LDRh9C10L3QuNGPINGDINGN0YLQvtCz0L4g0LLQvtC/0YDQvtGB0LBcclxuICAgIGlmIChuZXdRdWVzdGlvbi5JbXBsaWNpdCkge1xyXG4gICAgICB0aGlzLiNjYWxjdWxhdGVJbXBsaWNpdFF1ZXN0aW9uKG5ld1F1ZXN0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1cnJlbnRRdWVzdGlvbiQoKTogT2JzZXJ2YWJsZTxJZGJRdWVzdGlvbiB8IG51bGw+IHtcclxuICAgIHJldHVybiB0aGlzLiNjdXJyZW50UXVlc3Rpb24uYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBmaW5kQW5zd2VyQnlHdWlkKGd1aWQ6IG51bWJlcik6IEFuc3dlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5faW50ZXJ2aWV3LmZpbmRBbnN3ZXJCeUd1aWQoZ3VpZCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2dpY1ZhbHVlKHZhck5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fbG9naWMuc2V0TG9naWNWYWx1ZSh2YXJOYW1lLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2dpY1ZhcnMoKTogTG9naWNPYmplY3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvZ2ljLmdldExvZ2ljVmFycygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5zd2VyTGlzdCgpOiBBcnJheTxBbnN3ZXI+IHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcnZpZXcuZ2V0QW5zd2VyTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQW5zd2VyKGV2ZW50RGF0YTogQW5zd2VyQ2hhbmdlKTogdm9pZCB7XHJcbiAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLl9pbnRlcnZpZXcuZmluZEFuc3dlckJ5R3VpZChldmVudERhdGEuZ3VpZCk7XHJcbiAgICBpZiAoIWFuc3dlcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy/QstC+0L/RgNC+0YHRiyDQutC+0YLQvtGA0YvQtSDQsiDRgdCy0L7QtdC8INGB0L7RgdGC0LDQstC1INC40LzQtdC10YIg0YHQtdC60YbQuNC4LCDRhdGA0LDQvdGP0YIg0L7RgtCy0LXRgtGLINGH0YPRgtGMINC/0L4g0LTRgNGD0LPQvtC80YMsINGC0L7Rh9C90LXQtSDQvtGC0LLQtdGCINC90LAg0LrQsNC20LTRg9GOINGB0LXQutGG0LjRjiDRjdGC0L4g0L7RgtC00LXQu9GM0L3Ri9C5INC+0LHRitC10LrRgiDQsiAgX2ludGVydmlldy5hbnN3ZXJMaXN0XHJcbiAgICAvL9C/0L7RjdGC0L7QvNGDINC+0YLQstC10YIg0LTQu9GPINGC0LDQutC40YUg0YLQuNC/0L7QsiDQstC+0L/RgNC+0YHQvtCyINGN0YLQviBba2V5OiBzdHJpbmddOiBBcnJheTxudW1iZXI+IHwgbnVtYmVyLCDQs9C00LUga2V5KGd1aWQg0YHQtdC60YbQuNC4KSDRjdGC0L4g0L7RgtCy0LXRgiDQvdCwINGB0LXQutGG0LjRjiwg0LXRgdC70Lgga2V5INC90LXRgiwg0YHQtdC60YbQuNGPINC90LUg0LHRi9C70LAg0L/QvtC60LDQt9Cw0L3QsFxyXG4gICAgaWYgKHRoaXMuI2N1cnJlbnRRdWVzdGlvbi52YWx1ZT8uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxU0wpIHtcclxuICAgICAgY29uc3Qgc2VjdGlvbkxpc3QgPSB0aGlzLiNjdXJyZW50UXVlc3Rpb24udmFsdWU/LlNlY3Rpb25saXN0O1xyXG5cclxuICAgICAgLy/Qv9GA0L7QudC00ZHQvNGB0Y8g0L/QviDQutCw0LbQtNC+0Lkg0YHQtdC60YbQuNC4INC4INC10YHQu9C4INC00LvRjyDQvdC10ZEg0LXRgdGC0Ywg0L7RgtCy0LXRgiwg0LfQsNC/0LjRiNC10LwsINCyINC/0YDQvtGC0LjQstC90L7QvCDRgdC70YPRh9Cw0LUg0LLQvNC10YHRgtC+INC+0YLQstC10YLQsCDRg9C60LDQttC10LwgLTk3KE1JU1NJTkdfVkFMVUUpXHJcbiAgICAgIGlmICghIXNlY3Rpb25MaXN0KSB7XHJcbiAgICAgICAgc2VjdGlvbkxpc3QuZm9yRWFjaChzZWN0aW9uID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNlY3Rpb25JbnRlcnZpZXdBbnN3ZXIgPSAgdGhpcy5faW50ZXJ2aWV3LmZpbmRBbnN3ZXJCeUd1aWQoc2VjdGlvbi5TZWN0aW9uR3VpZCk7XHJcbiAgICAgICAgICBpZiAoIXNlY3Rpb25JbnRlcnZpZXdBbnN3ZXIpe1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHNlY3Rpb25RdWVzdGlvbkFuc3dlciA9IGV2ZW50RGF0YS5hbnN3ZXIgPyAgKGV2ZW50RGF0YS5hbnN3ZXIgYXMgQW5zd2VyU2xUeXBlKVtzZWN0aW9uLlNlY3Rpb25HdWlkLnRvU3RyaW5nKCldIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgc2VjdGlvbkludGVydmlld0Fuc3dlci5BbnN3ZXJWYWx1ZSA9IHNlY3Rpb25RdWVzdGlvbkFuc3dlciA9PT0gdW5kZWZpbmVkID8gTUlTU0lOR19WQUxVRSA6IHNlY3Rpb25RdWVzdGlvbkFuc3dlcjtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICAvL9C+0YLQstC10YIg0YHQsNC80L7Qs9C+INC40YHRhdC+0LTQvdC+0LPQviDQstC+0L/RgNC+0YHQsCDQtNC+0LvQttC10L0g0LHRi9GC0YwgMVxyXG4gICAgICBhbnN3ZXIuQW5zd2VyVmFsdWUgPSAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy/QvtGC0LLQtdGCINC90LAg0LLQvtC/0YDQvtGBINGDINC60L7RgtC+0YDQvtCz0L4g0L3QtdGCINGB0LXQutGG0LjQuVxyXG4gICAgICBhbnN3ZXIuQW5zd2VyVmFsdWUgPSBldmVudERhdGEuYW5zd2VyO1xyXG4gICAgfVxyXG5cclxuICAgIC8v0L3QsCDQstC+0L/RgNC+0YEg0L7RgtCy0LXRgtC40LvQuCDRgtC+0LPQtNCwINC60L7Qs9C00LAg0LXRgdGC0Ywg0LLRgdC1INC+0YLQstC10YLRiyDQuCDQstGL0L/QvtC70L3Rj9C10YLRgdGPINC70L7Qs9C40LrQsCDQutC90L7Qv9C60Lgg0LTQsNC70LXQtSjQtdGB0LvQuCDQtdGRINGD0LrQsNC30LDQu9C4KVxyXG4gICAgYW5zd2VyLmFuc3dlcklzQ29tcGxldGUgPSBldmVudERhdGEuaXNDb21wbGV0ZSAmJiB0aGlzLiNuZXh0QnV0dG9uRXhwcmVzc2lvbklzVHJ1ZSgpO1xyXG5cclxuICAgIC8vVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXMg0LggVmlld2VkU2VjdGlvbkd1aWRzLiDQoi7Qui4g0L7QvdC4IHJlYWRvbmx5INGB0L3QsNGH0LDQu9CwINGD0LTQsNC70LjQvCwg0L/QvtGC0L7QvCDQtNC+0LHQsNCy0LjQvFxyXG4gICAgYW5zd2VyLlZpZXdlZEFsdGVybmF0aXZlVmFsdWVzLmxlbmd0aCA9IDA7XHJcbiAgICBldmVudERhdGEudmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXMuZm9yRWFjaChvYSA9PiBhbnN3ZXIuVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXMucHVzaChvYSkpO1xyXG5cclxuICAgIGFuc3dlci5WaWV3ZWRTZWN0aW9uR3VpZHMubGVuZ3RoID0gMDtcclxuICAgIGV2ZW50RGF0YS52aWV3ZWRTZWN0aW9uR3VpZHMuZm9yRWFjaChvYSA9PiBhbnN3ZXIuVmlld2VkU2VjdGlvbkd1aWRzLnB1c2gob2EpKTtcclxuXHJcbiAgICBhbnN3ZXIuQWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcy5sZW5ndGggPSAwO1xyXG4gICAgZXZlbnREYXRhLmFsdGVybmF0aXZlU2VxdWVuY2VDbGlja3MuZm9yRWFjaChvYSA9PiBhbnN3ZXIuQWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcy5wdXNoKG9hKSk7XHJcblxyXG5cclxuICAgIE9iamVjdC5lbnRyaWVzKGFuc3dlci5BbnN3ZXJBZGRpdGlvbmFsKS5mb3JFYWNoKChba2V5XSkgPT4gZGVsZXRlIGFuc3dlci5BbnN3ZXJBZGRpdGlvbmFsW051bWJlcihrZXkpXSk7XHJcbiAgICBPYmplY3QuZW50cmllcyhldmVudERhdGEuYWRkaXRpb25hbEFuc3dlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gYW5zd2VyLkFuc3dlckFkZGl0aW9uYWxbTnVtYmVyKGtleSldID0gdmFsdWUpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlTG9naWMoZXZlbnREYXRhLmxvZ2ljVmFycyk7XHJcblxyXG4gICAgdGhpcy4jZXZlbnRCdXMubmV4dCh7a2V5OiBTdXJ2ZXlFdmVudHMuc2VRdWVzdGlvbkFuc3dlcnNDaGFuZ2UsIGRhdGE6IHtxdWVzdGlvbjogdGhpcy4jY3VycmVudFF1ZXN0aW9uLnZhbHVlLCBhbnN3ZXJJc0NvbXBsZXRlOiBhbnN3ZXIuYW5zd2VySXNDb21wbGV0ZX19KTtcclxuXHJcbiAgICAvL9C80L7QttC10YIg0LLQvtC30L3QuNC60L3Rg9GC0Ywg0YHQuNGC0YPQsNGG0LjRjywg0LrQvtCz0LTQsCDQvdC10YIg0L3QuCDQvtC00L3QvtC5INCw0LvRjNGC0LXRgNC90LDRgtC40LLRiyDQuNC70Lgg0YHQtdC60YbQuNC4INC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPLtCyINGN0YLQvtC8INGB0LvRg9GH0LDQtSDQstC+0L/RgNC+0YEg0L/QvtC60LDQt9GL0LLQsNGC0Ywg0L3QtSDQvdGD0LbQvdC+LCDQutCw0Log0L7RgtCy0LXRgiDQt9Cw0L/QuNGB0YvQstCw0LXQvCAwINC4INC/0LXRgNC10YXQvtC00LjQvCDQvdCwINGB0LvQtdC00YPRjtGJ0LjQuVxyXG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLiNmaW5kUXVlc3Rpb25CeUd1aWQoZXZlbnREYXRhLmd1aWQpO1xyXG4gICAgLy/RgdC40YLRg9Cw0YbQuNGPINC00LvRjyBzcy9tcyDQstC+0L/RgNC+0YHQvtCyINC4INC00LvRjyDQvdC10Y/QstC90YvRhSDQstC+0L/RgNC+0YHQvtCyXHJcbiAgICBpZiAoISFxdWVzdGlvbiAmJiBhbnN3ZXIuYW5zd2VySXNDb21wbGV0ZSAmJiAocXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSAnU1MnIHx8IHF1ZXN0aW9uLlF1ZXN0aW9uVHlwZSA9PT0gJ01TJykgJiYgKCAoZXZlbnREYXRhLnZpZXdlZEFsdGVybmF0aXZlVmFsdWVzLmxlbmd0aCA9PT0gMCkgfHwgcXVlc3Rpb24uSW1wbGljaXQpKSB7XHJcbiAgICAgIHRoaXMuZ29Ub05leHRRdWVzdGlvbigpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb2dpYyhsb2dpY1ZhcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lke1xyXG4gICAgT2JqZWN0LmVudHJpZXMobG9naWNWYXJzKS5mb3JFYWNoKChbdmFyTmFtZSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0TG9naWNWYWx1ZSh2YXJOYW1lLCB2YWx1ZSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvL9Cy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60L7Qu9C40YfQtdGB0YLQstC+INCw0LrRgtC40LLQvdGL0YUg0Y/Qt9GL0LrQvtCyXHJcbiAgZ2V0ICNhY3RpdmVMYW5nQ291bnQoKTogbnVtYmVyIHtcclxuICAgIC8v0LXRgdC70Lgg0LDQvdC60LXRgtCwINC/0L4g0LrQsNC60L7QuS3RgtC+INC/0YDQuNGH0LjQvdC1INC90YMg0YPQutCw0LfQsNC90LAsINCy0LXRgNC90ZHQvCAwXHJcbiAgICByZXR1cm4gdGhpcy4jcXVlc3Rpb25hcnk/LkJhc2VQYXJhbXMuTGFuZ3VhZ2VMaXN0LmZpbHRlciggbGFuZ09iaiA9PiBsYW5nT2JqLmlzQWN0aXZlKS5sZW5ndGggPz8gMDtcclxuICB9XHJcblxyXG4gIC8v0LLQvtC30LLRgNCw0YnQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0LLQvtC/0YDQvtGB0L7QslxyXG4gIGdldCAjcXVlc3Rpb25zQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLiNxdWVzdGlvbmFyeT8uUXVlc3Rpb25zLmxlbmd0aCA/PyAwO1xyXG4gIH1cclxuXHJcbiAgI2ZpbmlzaEludGVydmlldygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKTtcclxuICAgIGxldCByZXN1bHREaXJ0eTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJlc3VsdERpcnR5ID0gdGhpcy5fbG9naWMuZXhlY3V0ZUxvZ2ljKHRoaXMuI3F1ZXN0aW9uYXJ5Py5CYXNlUGFyYW1zLlJlc3VsdGF0aXZlU2NyaXB0ID8/ICcnKTtcclxuICAgIH1jYXRjaCAoZSkge1xyXG4gICAgICByZXN1bHREaXJ0eSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGludGVydmlldzogSUludGVydmlld0RhdGEgPSB7XHJcbiAgICAgIExhbmd1YWdlOiAwLCAgICAvL3RvZG8gbGFuZ1xyXG4gICAgICBTcG90SWQ6IDAsXHJcbiAgICAgIERldmljZUlkOiAwLFxyXG4gICAgICBEZXZpY2VUeXBlOiAwLFxyXG4gICAgICBSZXN1bHRhdGl2ZTogUmVzdWx0YXRpdmVTdGF0dXMucnNVbnNldCxcclxuICAgICAgVmFsaWQ6IFZhbGlkU3RhdHVzLnZzVW5zZXQsXHJcbiAgICAgIFdhdmU6IHRoaXMuI3F1ZXN0aW9uYXJ5Py5JbmZvLmN1cnJlbnRfd2F2ZSA/PyAwLFxyXG4gICAgICBRdWVzdGlvbmFyeU5hbWU6IHRoaXMuI3F1ZXN0aW9uYXJ5Py5JbmZvLm5hbWUgPz8gJycsXHJcbiAgICAgIFF1ZXN0aW9uYXJ5R3VpZDogdGhpcy4jcXVlc3Rpb25hcnk/LkluZm8ucXVlc3Rpb25hcnlfZ3VpZCA/PyAwLFxyXG4gICAgICBTdGFydGVkQXQ6IHRoaXMuX2ludGVydmlldy5zdGFydGVkQXQsXHJcbiAgICAgIEZpbmlzaGVkQXQ6IGN1cnJlbnRUaW1lLmdldFRpbWUoKSxcclxuICAgICAgVGluZVpvbmVCaWFzOiBjdXJyZW50VGltZS5nZXRUaW1lem9uZU9mZnNldCgpLFxyXG4gICAgICBSZXN1bHRhdERpcnR5OiByZXN1bHREaXJ0eSxcclxuICAgICAgQW5zd2Vyczoge1xyXG4gICAgICAgIEFuc3ZlcnNMaXN0OiBBcnJheS5mcm9tKHRoaXMuX2ludGVydmlldy5nZXRBbnN3ZXJMaXN0KCkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGFkZGl0aW9uYWxfaW5mbzoge1xyXG4gICAgICAgIFF1ZXN0aW9uYXJ5VXBkYXRlVGltZXN0YW1wOiBuZXcgRGF0ZSh0aGlzLiNxdWVzdGlvbmFyeT8uSW5mby5sYXN0X3VwZGF0ZV90aW1lc3RhbXAgPz8gMCkuZ2V0VGltZSgpICxcclxuICAgICAgfSxcclxuICAgICAgUmVzdWx0UXVvdGFHdWlkczogW10sXHJcbiAgICAgIFJlc3VsdFF1b3RhMmRHdWlkczogW10sXHJcbiAgICAgIExvZ2ljVmFyczogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ2ljVmFycyA9IHRoaXMuX2xvZ2ljLmdldExvZ2ljVmFycygpO1xyXG4gICAgT2JqZWN0LmVudHJpZXMobG9naWNWYXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IGludGVydmlldy5Mb2dpY1ZhcnMucHVzaCh7bm06IGtleSwgdmw6IHZhbHVlfSkpO1xyXG5cclxuICAgIHRoaXMuI2V2ZW50QnVzLm5leHQoe2tleTogU3VydmV5RXZlbnRzLnNlU3VydmV5RW5kLCBkYXRhOiBpbnRlcnZpZXd9KTtcclxuICB9XHJcblxyXG4gICNuZXh0UXVlc3Rpb25OdW0oKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGN1cnJlbnRRdWVzdGlvbiA9IHRoaXMuI2N1cnJlbnRRdWVzdGlvbi52YWx1ZTtcclxuICAgIC8vINC/0YDQvtCy0LXRgNC40Lwg0LrQstC+0YLRi1xyXG4gICAgY29uc3QgY3VycmVudEd1aWQgPSBjdXJyZW50UXVlc3Rpb24/LlF1ZXN0aW9uR3VpZCA/PyAwO1xyXG4gICAgaWYgKHRoaXMuI3N1cnZleVF1b3Rhcy5xdW90YUlzQ29tcGxldGVkICYmICF0aGlzLiNzdXJ2ZXlRdW90YXMuZ3VpZElzRGVzdGluYXRpb25RdWVzdGlvbihjdXJyZW50R3VpZCkpIHtcclxuICAgICAgLy8g0YMg0L3QsNGBINC10YHRgtGMINC30LDQv9C+0LvQvdC10L3QvdCw0Y8g0LrQstC+0YLQsCwg0L3QsNC50LTQtdC8INCy0L7Qv9GA0L7RgSDQutC+0YLQvtGA0YvQuSDQvdGD0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0L/RgNC4INC30LDQv9C+0LvQvdC10L3QuNC4INC60LLQvtGC0YtcclxuICAgICAgY29uc3QgZGVzdGluYXRpb25RID0gdGhpcy4jZmluZFF1ZXN0aW9uQnlHdWlkKHRoaXMuI3N1cnZleVF1b3Rhcy5kZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCk7XHJcbiAgICAgIC8v0LXRgdC70Lgg0LLQvtC/0YDQvtGBINC10YHRgtGMKNC10LPQviDQvNC+0LPQu9C4INGD0LTQsNC70LjRgtGMINC40Lcg0LDQvdC60LXRgtGLKSwg0L/QvtC60LDQt9GL0LLQsNC10YIg0LXQs9C+XHJcbiAgICAgIGlmICghIWRlc3RpbmF0aW9uUSkge1xyXG4gICAgICAgIHJldHVybiBkZXN0aW5hdGlvblEuUXVlc3Rpb25OdW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDQtdGB0LvQuCDQvdC10YIg0LfQsNC/0L7Qu9C90LXQvdC90L7QuSDQutCy0L7RgtGLLCDQv9C10YDQtdGF0L7QtNC40Lwg0L3QsCDRgdC70LXQtNGD0Y7RidC40Lkg0LLQvtC/0YDQvtGBLCDQuNGJ0LXQvCDRgdC70LXQtNGD0Y7RidC40Lkg0LLQvtC/0YDQvtGBINC60L7RgtC+0YDRi9C5INC80Ysg0LzQvtC20LXQvCDQvtGC0L7QsdGA0LDQt9C40YLRjCAo0LTQviDQu9C+0LPQuNC60LAg0LzQvtC20LXRgiDQt9Cw0L/RgNC10YLQuNGC0Ywg0L/QvtC60LDQtyDQstC+0L/RgNC+0YHQsClcclxuICAgIGxldCBuZXh0UXVlc3Rpb25OdW0gPSAoY3VycmVudFF1ZXN0aW9uPy5RdWVzdGlvbk51bSA/PyAwKSArIDE7XHJcblxyXG4gICAgLy8g0L3QviDRgdC90LDRh9Cw0LvQsCDQv9GA0L7QstC10YDQuNC8INC/0L7RgdC70LUg0LvQvtCz0LjQutGDXHJcbiAgICBpZiAoISFjdXJyZW50UXVlc3Rpb24pIHtcclxuICAgICAgY29uc3QgZGVzdFEgPSBjdXJyZW50UXVlc3Rpb24ubG9naWNsaXN0LmZpbmQobG9nT2JqID0+IChsb2dPYmouRGVzdGluYXRpb25RdWVzdGlvbkd1aWQgPiAwKSAmJiB0aGlzLl9sb2dpYy5leGVjdXRlTG9naWMobG9nT2JqLkxvZ2ljVGV4dCkgKTtcclxuICAgICAgaWYgKCEhZGVzdFEpIHtcclxuICAgICAgICBjb25zdCBkZXN0UU51bSA9IHRoaXMuI2ZpbmRRdWVzdGlvbkJ5R3VpZChkZXN0US5EZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCk/LlF1ZXN0aW9uTnVtO1xyXG4gICAgICAgIGlmIChOdW1iZXIuaXNTYWZlSW50ZWdlcihkZXN0UU51bSkpIHsgLy8g0LLQvtC/0YDQvtGBINC80L7QsyDQsdGL0YLRjCDRg9C00LDQu9GR0L0sINCwINC70L7Qs9C40LrRgyDQvtGB0YLQsNCy0LjRgtGMXHJcbiAgICAgICAgICBuZXh0UXVlc3Rpb25OdW0gPSBkZXN0UU51bSE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g0L7QsdGJ0LXQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQstC+0L/RgNC+0YHQvtCyLCDRhtC40LrQuyDQsdGD0LTQtdGCINGB0YfQuNGC0LDRgtGMINC00L4g0Y3RgtC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsFxyXG4gICAgY29uc3QgcXVlc3Rpb25Db3VudCA9IHRoaXMuI3F1ZXN0aW9uc0NvdW50O1xyXG4gICAgZG8ge1xyXG4gICAgICAvL9C/0L7RgtC10L3RhtC40LDQu9GM0L3QviDRgdC70LXQtNGD0Y7RidC40Lkg0LLQvtC/0YDQvtGBXHJcbiAgICAgIGNvbnN0IHEgPSB0aGlzLiNxdWVzdGlvbmFyeSEuUXVlc3Rpb25zW25leHRRdWVzdGlvbk51bV07XHJcblxyXG4gICAgICAvL9C10YHQu9C4INGN0YLQviDQv9C+0YHQu9C10LTQvdC40Lkg0LLQvtC/0YDQvtGBINC40LvQuCDQtdGB0LvQuCDQstGL0L/QvtC70L3Rj9C10YLRgdGPIEJlZm9yZUV4cHJlc3Npb24g0Lgg0Y3RgtC+0YIg0LLQvtC/0YDQvtGBINC90LUgRGVzdGluYXRpb25RdW90YSwg0LzQvtC20LXQvCDQtdCz0L4g0L/QvtC60LDQt9Cw0YLRjFxyXG4gICAgICBpZiAocS5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFFTkQgfHwgKHRoaXMuX2xvZ2ljLmV4ZWN1dGVMb2dpYyhxLkJlZm9yZUV4cHJlc3Npb24pICYmICF0aGlzLiNzdXJ2ZXlRdW90YXMuZ3VpZElzRGVzdGluYXRpb25RdWVzdGlvbihxLlF1ZXN0aW9uR3VpZCkpICkge1xyXG4gICAgICAgIHJldHVybiBuZXh0UXVlc3Rpb25OdW07XHJcbiAgICAgIH1cclxuICAgICAgLy/QstC+0L/RgNC+0YEg0L3QtdC70YzQt9GPINC/0L7QutCw0LfRi9Cy0LDRgtGMLCDRg9Cy0LXQu9C40YfQuNCy0LDQtdC8INGB0YfRkdGC0YfQuNC6INGC0LXQutGD0YnQtdCz0L4g0LLQvtC/0YDQvtGB0LAg0L3QsCAxXHJcbiAgICAgIG5leHRRdWVzdGlvbk51bSsrO1xyXG4gICAgfSB3aGlsZSAobmV4dFF1ZXN0aW9uTnVtIDwgcXVlc3Rpb25Db3VudCAtIDEpOyAvLyBlbmQg0LLQvtC/0YDQvtGBINC00L7Qu9C20LXQvSDQstGB0LXQs9C00LAg0LHRi9GC0Ywg0L/QvtC60LDQt9Cw0L1cclxuICAgIHJldHVybiBuZXh0UXVlc3Rpb25OdW07XHJcbiAgfVxyXG5cclxuICAjaW5pdGlhdGVRdWVzdGlvbnMocXVlc3Rpb25MaXN0OiBBcnJheTxJZGJRdWVzdGlvbj4pOiB2b2lke1xyXG4gICAgcXVlc3Rpb25MaXN0LmZvckVhY2gocXVlc3Rpb24gPT4ge1xyXG4gICAgICAvL9GB0L7Qt9C00LDRkdC8INC/0YPRgdGC0L7QuSDQvtGC0LLQtdGCINC00LvRjyDQstC+0L/RgNC+0YHQsC5cclxuICAgICAgY29uc3QgYW5zd2VyID0gdGhpcy5faW50ZXJ2aWV3LmNyZWF0ZUFuc3dlcihxdWVzdGlvbi5RdWVzdGlvbkd1aWQsIHF1ZXN0aW9uLlZlcnNpb24pO1xyXG5cclxuICAgICAgLy/RgtCw0LrQvtCz0L4g0LHRi9GC0Ywg0L3QtSDQtNC+0LvQttC90L4sINGN0YLQviDQvtGI0LjQsdC60LBcclxuICAgICAgaWYgKCFhbnN3ZXIpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fuc3dlciBub3QgZm91bmQnKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgY29uc3QgbG9naWNWYXJTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgdGhpcy4jcXVlc3Rpb25Mb2dpY1ZhckNvbnRhaW5lcltxdWVzdGlvbi5RdWVzdGlvbkd1aWQudG9TdHJpbmcoKV0gPSBsb2dpY1ZhclNldDtcclxuICAgICAgXHJcbiAgICAgIGxvZ2ljVmFyU2V0LmFkZChxdWVzdGlvbi5TeXNOYW1lKTsvL9C/0YDQuNCy0Y/Qt9GL0LLQsNC10Lwg0L/QtdGA0LXQvNC10L3QvdGD0Y4g0Log0LLQvtC/0YDQvtGB0YNcclxuICAgICAgdGhpcy5fbG9naWMuc2V0TG9naWNWYWx1ZShxdWVzdGlvbi5TeXNOYW1lLCBNSVNTSU5HX1ZBTFVFKTsgLy8g0L/QtdGA0LXQvNC10L3QvdCw0Y8g0YHQsNC80L7Qs9C+INCy0L7Qv9GA0L7RgdCwXHJcblxyXG4gICAgICAvL9C00L7QsdCw0LLQuNC8INC00L7QvyDQvtGC0LLQtdGC0Ysg0Lgg0LvQvtCz0LjQutGDINC00LvRjyDQvdC40YVcclxuICAgICAgcXVlc3Rpb24uQWRkaXRpb25hbEFuc3dlcmxpc3QuZm9yRWFjaChhYSA9PiB7XHJcbiAgICAgICAgY29uc3QgYWFTeXNOYW1lID0gYCR7cXVlc3Rpb24uU3lzTmFtZX0ke2FhLlN5c05hbWV9YDtcclxuICAgICAgICBhbnN3ZXIuQW5zd2VyQWRkaXRpb25hbFthYS5WYWx1ZV0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2xvZ2ljLnNldExvZ2ljVmFsdWUoYWFTeXNOYW1lLCBNSVNTSU5HX1ZBTFVFKTsgLy8g0LvQvtCz0LjQutCwINC00LvRjyDQv9C10YDQtdC80LXQvdC90YvRhSDQtNC+0L8g0L7RgtCy0LXRgtCwXHJcbiAgICAgICAgbG9naWNWYXJTZXQuYWRkKGFhU3lzTmFtZSk7IC8v0L/RgNC40LLRj9C30YvQstCw0LXQvCDQv9C10YDQtdC80LXQvdC90YPRjiDQuiDQstC+0L/RgNC+0YHRg1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vINC10YHQu9C4INCyINGC0LXQutGB0YLQtSBwb3N0U2NyaXB0INC10YHRgtGMINC30LDQv9C40YHRjCDRgtC40L/QsCBzZXRWYXIoJ3Zhck5hbWUnLCAgdmFsdWUpOyAg0L3Rg9C20L3QviDQuNC90LjRhtC40LDQu9C40LfQuNGA0L7QstCw0YLRjCDQv9C10YDQtdC80LXQvdC90YPRjiB2YXJOYW1lINC30L3QsNGH0LXQvdC40LXQvCAtOTcuXHJcbiAgICAgIGlmICghIXF1ZXN0aW9uLlBvc3RTY3JpcHQpIHtcclxuICAgICAgICAocXVlc3Rpb24uUG9zdFNjcmlwdC5tYXRjaCgvKFxcYnNldHZhclxcYilcXChbJ3xcIl0oLio/KVsnfFwiXS9naW0pID8/IFtdKS5tYXAoc2NyaXB0VmFyID0+IHNjcmlwdFZhci5tYXRjaCgvWyd8XCJdKC4rKVsnfFwiXS9pKSFbMV0pLmZvckVhY2godmFyTmFtZSA9PiB7XHJcbiAgICAgICAgICBsb2dpY1ZhclNldC5hZGQodmFyTmFtZSk7Ly/Qv9GA0LjQstGP0LfRi9Cy0LDQtdC8INC/0LXRgNC10LzQtdC90L3Rg9GOINC6INCy0L7Qv9GA0L7RgdGDXHJcbiAgICAgICAgICB0aGlzLl9sb2dpYy5zZXRMb2dpY1ZhbHVlKHZhck5hbWUsIG51bGwpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vINC00LvRjyDQktC+0L/RgNC+0YHQvtCyIFNTL01TINC90YPQttC90L4g0L/RgNC+0L/QuNGB0LDRgtGMINC70L7Qs9C40LrRgyDQsNC70YzRgtC10YDQvdCw0YLQuNCyIHN5c25hbWUg0LLQvtC/0YDQvtGB0LAgKyBzeXNuYW1lINCw0LvRjNGC0LXRgNC90LDRgtC40LLRi1xyXG4gICAgICBpZiAocXVlc3Rpb24uU2VjdGlvbmxpc3QubGVuZ3RoIDw9IDApIHsvLyDQtNC70Y8g0JLQvtC/0YDQvtGB0L7QsiBTUy9NU1xyXG4gICAgICAgIHF1ZXN0aW9uLkFsdGVybmF0aXZlbGlzdC5mb3JFYWNoKGFsdCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBhU3lzTmFtZSA9IGAke3F1ZXN0aW9uLlN5c05hbWV9JHthbHQuU3lzTmFtZX1gXHJcbiAgICAgICAgICB0aGlzLl9sb2dpYy5zZXRMb2dpY1ZhbHVlKGFTeXNOYW1lLCBNSVNTSU5HX1ZBTFVFKTtcclxuICAgICAgICAgIGxvZ2ljVmFyU2V0LmFkZChhU3lzTmFtZSk7IC8v0L/RgNC40LLRj9C30YvQstCw0LXQvCDQv9C10YDQtdC80LXQvdC90YPRjiDQuiDQstC+0L/RgNC+0YHRg1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8v0LTQu9GPINCy0L7Qv9GA0L7RgdC+0LIg0YMg0LrQvtGC0L7RgNGL0YUg0LXRgdGC0Ywg0YHQtdC60YbQuNC4INC/0YDQvtC40L3QuNGG0LjQsNC70LjQt9C40YDRg9C10Lwg0LrQsNC20LTRg9GOINGB0LXQutGG0LjRjlxyXG4gICAgICAgIHF1ZXN0aW9uLlNlY3Rpb25saXN0LmZvckVhY2goc2VjdGlvbiA9PiB7XHJcblxyXG4gICAgICAgICAgLy/RgdC+0LfQtNCw0ZHQvCDQv9GD0YHRgtC+0Lkg0L7RgtCy0LXRgiDQtNC70Y8g0YHQtdC60YbQuNC4LlxyXG4gICAgICAgICAgY29uc3QgYW5zd2VyRm9yU2VjdGlvbiA9IHRoaXMuX2ludGVydmlldy5jcmVhdGVBbnN3ZXIoc2VjdGlvbi5TZWN0aW9uR3VpZCwgMSk7XHJcblxyXG4gICAgICAgICAgLy/RgtCw0LrQvtCz0L4g0LHRi9GC0Ywg0L3QtSDQtNC+0LvQttC90L4sINGN0YLQviDQvtGI0LjQsdC60LBcclxuICAgICAgICAgIGlmICghYW5zd2VyRm9yU2VjdGlvbikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fuc3dlciBub3QgZm91bmQnKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyDQtNC70Y8g0JLQvtC/0YDQvtGB0L7QsiBTTCDQvdGD0LbQvdC+INC/0YDQvtC/0LjRgdCw0YLRjCDQu9C+0LPQuNC60YMg0LDQu9GM0YLQtdGA0L3QsNGC0LjQsiDQuCDRgdC10LrRhtC40Lkgc3lzbmFtZSDRgdC10LrRhtC40LggKyBzeXNuYW1lINCw0LvRjNGC0LXRgNC90LDRgtC40LLRi1xyXG4gICAgICAgICAgdGhpcy5fbG9naWMuc2V0TG9naWNWYWx1ZShzZWN0aW9uLlN5c05hbWUsIE1JU1NJTkdfVkFMVUUpOyAvLyDQv9C10YDQtdC80LXQvdC90LDRjyDRgdCw0LzQvtC5INGB0LXQutGG0LjQuFxyXG4gICAgICAgICAgbG9naWNWYXJTZXQuYWRkKHNlY3Rpb24uU3lzTmFtZSk7IC8v0L/RgNC40LLRj9C30YvQstCw0LXQvCDQv9C10YDQtdC80LXQvdC90YPRjiDQuiDQstC+0L/RgNC+0YHRg1xyXG5cclxuICAgICAgICAgIC8v0LvQvtCz0LjQutCwINCw0LvRjNGC0LXRgNC90LDRgtC40LIgU0wg0LLQvtC/0YDQvtGB0LBcclxuICAgICAgICAgIHF1ZXN0aW9uLkFsdGVybmF0aXZlbGlzdC5mb3JFYWNoKGFsdCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFTeXNOYW1lID0gYCR7c2VjdGlvbi5TeXNOYW1lfSR7YWx0LlN5c05hbWV9YDtcclxuICAgICAgICAgICAgdGhpcy5fbG9naWMuc2V0TG9naWNWYWx1ZShhU3lzTmFtZSwgTUlTU0lOR19WQUxVRSk7XHJcbiAgICAgICAgICAgIGxvZ2ljVmFyU2V0LmFkZChhU3lzTmFtZSk7IC8v0L/RgNC40LLRj9C30YvQstCw0LXQvCDQv9C10YDQtdC80LXQvdC90YPRjiDQuiDQstC+0L/RgNC+0YHRg1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8v0LjRidC10YIg0LLQvtC/0YDQvtGBINC90LAgZ3VpZFxyXG4gICNmaW5kUXVlc3Rpb25CeUd1aWQoZ3VpZDogbnVtYmVyKTogSWRiUXVlc3Rpb24gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCF0aGlzLiNxdWVzdGlvbmFyeSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuI3F1ZXN0aW9uYXJ5LlF1ZXN0aW9ucy5maW5kKHEgPT4gcS5RdWVzdGlvbkd1aWQgPT09IGd1aWQpO1xyXG4gIH1cclxuXHJcbiAgI25leHRCdXR0b25FeHByZXNzaW9uSXNUcnVlKCk6IGJvb2xlYW57XHJcbiAgICBjb25zdCBidXR0b25OZXh0RXhwcmVzc2lvbiA9IHRoaXMuI2N1cnJlbnRRdWVzdGlvbi52YWx1ZT8uQnRuTmV4dEV4cHJlc3Npb24gPz8gJyc7XHJcbiAgICAvL9C10YHQu9C4INGB0LrRgNC40L/RgtCwINC00LvRjyDQutC90L7Qv9C60Lgg0LTQsNC70LXQtSDQvdC10YIsINCy0LXRgNC90ZHQvCB0cnVlXHJcbiAgICBpZiAoYnV0dG9uTmV4dEV4cHJlc3Npb24udHJpbSgpID09PSAnJykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9sb2dpYy5leGVjdXRlTG9naWMoYnV0dG9uTmV4dEV4cHJlc3Npb24pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjY2FsY3VsYXRlSW1wbGljaXRRdWVzdGlvbihxdWVzdGlvbjogSWRiUXVlc3Rpb24pOiB2b2lkIHtcclxuICAgIGlmIChxdWVzdGlvbi5JbXBsaWNpdCAmJiAocXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxU1MgfHwgcXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxTVMpICkge1xyXG4gICAgICBsZXQgcXVlc3Rpb25BbnN3ZXI6IG51bWJlciB8IEFycmF5PG51bWJlcj47XHJcblxyXG4gICAgICBpZiAocXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxU1MpIHtcclxuICAgICAgICBjb25zdCBhbHQgPSBxdWVzdGlvbi5BbHRlcm5hdGl2ZWxpc3QuZmluZChhbHQgPT4gdGhpcy5fbG9naWMuZXhlY3V0ZUxvZ2ljKGFsdC5FbmFibGVFeHByZXNzaW9uKSk7XHJcbiAgICAgICAgcXVlc3Rpb25BbnN3ZXIgPSAhIWFsdCA/IGFsdC5WYWx1ZSA6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChxdWVzdGlvbi5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFNUykge1xyXG4gICAgICAgIHF1ZXN0aW9uQW5zd2VyID0gcXVlc3Rpb24uQWx0ZXJuYXRpdmVsaXN0XHJcbiAgICAgICAgICAuZmlsdGVyKGFsdCA9PiB0aGlzLl9sb2dpYy5leGVjdXRlTG9naWMoYWx0LkVuYWJsZUV4cHJlc3Npb24pKVxyXG4gICAgICAgICAgLm1hcChhbHQgPT4gYWx0LlZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYW5zd2VyQ2hhbmdlOiBBbnN3ZXJDaGFuZ2UgPSB7XHJcbiAgICAgICAgZ3VpZDogcXVlc3Rpb24uUXVlc3Rpb25HdWlkLFxyXG4gICAgICAgIGlzQ29tcGxldGU6IHRydWUsXHJcbiAgICAgICAgYW5zd2VyOiBxdWVzdGlvbkFuc3dlciEsXHJcbiAgICAgICAgYWRkaXRpb25hbEFuc3dlcnM6IHt9LFxyXG4gICAgICAgIGxvZ2ljVmFyczoge30sXHJcbiAgICAgICAgdmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXM6IEFycmF5LmlzQXJyYXkocXVlc3Rpb25BbnN3ZXIhKSA/IHF1ZXN0aW9uQW5zd2VyIDogW3F1ZXN0aW9uQW5zd2VyIV0sXHJcbiAgICAgICAgdmlld2VkU2VjdGlvbkd1aWRzOiBbXSxcclxuICAgICAgICBhbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzOiBbXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXBkYXRlQW5zd2VyKGFuc3dlckNoYW5nZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gICNjbGVhckFuc3dlckZvckN1cnJlbnRRdWVzdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnRRdWVzdGlvbkd1aWQgPSB0aGlzLiNjdXJyZW50UXVlc3Rpb24udmFsdWU/LlF1ZXN0aW9uR3VpZCA/PyAtMTtcclxuICAgIFxyXG4gICAgLy/Rg9C00LDQu9GP0LXQvCDRgdCw0Lwg0L7RgtCy0LXRgiDQvdCwINCy0L7Qv9GA0L7RgVxyXG4gICAgdGhpcy5faW50ZXJ2aWV3LmZpbmRBbnN3ZXJCeUd1aWQoY3VycmVudFF1ZXN0aW9uR3VpZCk/LmNsZWFyKCk7XHJcblxyXG4gICAgLy/Rg9C00LDQu9GP0LXQvCDQv9C10YDQtdC80LXQvdC90YvQtSDQutC+0YLQvtGA0YvQtSDQvtGC0L3QvtGB0Y/RgtGB0Y8g0Log0Y3RgtC+0LzRgyDQstC+0L/RgNC+0YHRg1xyXG4gICAgY29uc3QgbG9naWNTZXQgPSB0aGlzLiNxdWVzdGlvbkxvZ2ljVmFyQ29udGFpbmVyW2N1cnJlbnRRdWVzdGlvbkd1aWRdO1xyXG4gICAgaWYgKCEhbG9naWNTZXQpIHtcclxuICAgICAgbG9naWNTZXQuZm9yRWFjaChzeXNOYW1lID0+dGhpcy5fbG9naWMuc2V0TG9naWNWYWx1ZShzeXNOYW1lLCBNSVNTSU5HX1ZBTFVFKSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
65
65
|
providedIn: 'root'
|
|
66
66
|
}]
|
|
67
67
|
}] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAuc3VydmV5LmludGVydmlldy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHAuc3VydmV5L3NyYy9saWIvY29yZS90cC5zdXJ2ZXkuaW50ZXJ2aWV3L3RwLnN1cnZleS5pbnRlcnZpZXcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFNUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBS3pDLE1BQU0sT0FBTyx3QkFBd0I7SUFIckM7UUFJRSxnQkFBVyxHQUFtQixFQUFFLENBQUM7UUFDakMsY0FBUyxHQUFXLENBQUMsQ0FBQztLQTREdkI7SUE3REMsV0FBVyxDQUFzQjtJQUdqQyxZQUFZLENBQUMsSUFBWSxFQUFFLE9BQWU7UUFDeEMsK0NBQStDO1FBQy9DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QseUNBQXlDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNuRCxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQStCO1FBQzdDLHdDQUF3QztRQUN4QyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDakYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDaEIsdUJBQXVCO2dCQUN2QixTQUFTLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUM7Z0JBRTlDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztnQkFDMUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUU1QyxrR0FBa0c7Z0JBQ2xHLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7b0JBQ3pFLE9BQU8sU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUNELDJCQUEyQjtnQkFDM0IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztvQkFDdEUsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDMUMsQ0FBQztnQkFFRCx5SUFBeUk7Z0JBQ3pJLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QyxTQUFTLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUU1RixTQUFTLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDeEMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFbEYsU0FBUyxDQUFDLHlCQUF5QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQy9DLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEcsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E3RFUsd0JBQXdCO2tIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5zd2VyfSBmcm9tICcuLi90cC5zdXJ2ZXkuYW5zd2VyL3RwLnN1cnZleS5hbnN3ZXInO1xyXG5pbXBvcnQge0lRdWVzdGlvbkFuc3dlcn0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LmludGVyZmFjZSc7XHJcbmltcG9ydCB7TUlTU0lOR19WQUxVRX0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LmNvbnN0JztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRwU3VydmV5SW50ZXJ2aWV3U2VydmljZSB7XHJcbiAgI2Fuc3dlckxpc3Q6IEFycmF5PEFuc3dlcj4gID0gW107XHJcbiAgc3RhcnRlZEF0OiBudW1iZXIgPSAwO1xyXG5cclxuICBjcmVhdGVBbnN3ZXIoZ3VpZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIpOiBBbnN3ZXIge1xyXG4gICAgLy/QuNGI0LXQvCDQvtGC0LLQtdGCINGBINGC0LDQutC40Lwg0LbQtSDQvdC+0LzQtdGA0L7QvCDQutCw0Log0Lgg0LIg0LLQvtC/0YDQvtGB0LVcclxuICAgIGxldCBhbnN3ZXIgPSB0aGlzLmZpbmRBbnN3ZXJCeUd1aWQoZ3VpZCk7XHJcblxyXG4gICAgLy/QtdGB0LvQuCDQvtGC0LLQtdGC0LAg0YEg0YLQsNC60LjQvCDQvdC+0LzQtdGA0L7QvCDQstC+0L/RgNC+0YHQsCDQvdC10YIsINGB0L7Qt9C00LDQtNC40LxcclxuICAgIGlmICghYW5zd2VyKSB7XHJcbiAgICAgIGFuc3dlciA9IG5ldyBBbnN3ZXIoZ3VpZCwgdmVyc2lvbilcclxuICAgICAgdGhpcy4jYW5zd2VyTGlzdC5wdXNoKGFuc3dlcik7XHJcbiAgICB9XHJcbiAgICAvL9Cy0LXRgNC90ZHQvCDRgtC+LCDRh9GC0L4g0YHQvtC30LTQsNC70Lgg0LjQu9C4INGC0L4g0YfRgtC+INC90LDRiNC70LhcclxuICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgfVxyXG5cclxuICBmaW5kQW5zd2VyQnlHdWlkKGd1aWQ6IG51bWJlcik6IEFuc3dlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy4jYW5zd2VyTGlzdC5maW5kKGEgPT4gYS5RdWVzdGlvbkdVSUQgPT09IGd1aWQpO1xyXG4gIH1cclxuXHJcbiAgcXVlc3Rpb25Jc0NvbXBsZXRlKGd1aWQ6IG51bWJlcik6IGJvb2xlYW57XHJcbiAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLmZpbmRBbnN3ZXJCeUd1aWQoZ3VpZCk7XHJcbiAgICByZXR1cm4gIWFuc3dlciA/IGZhbHNlIDogYW5zd2VyLmFuc3dlcklzQ29tcGxldGU7XHJcbiAgfVxyXG5cclxuICBnZXRBbnN3ZXJMaXN0KCk6IEFycmF5PEFuc3dlcj57XHJcbiAgICByZXR1cm4gdGhpcy4jYW5zd2VyTGlzdDtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlQW5zd2VycyhhbnN3ZXJzOiBBcnJheTxJUXVlc3Rpb25BbnN3ZXI+KTogdm9pZHtcclxuICAgIC8v0L3QtSDQsdGD0LTQtdC8INGC0YDQvtCz0LDRgtGMINCy0L7Qv9GA0L7RgdGLINC60L7RgtC+0YDRi9C1ID0gLTk3XHJcbiAgICBhbnN3ZXJzLmZpbHRlcihhbnN3ZXIgPT4gYW5zd2VyLkFuc3dlclZhbHVlICE9PSBNSVNTSU5HX1ZBTFVFKS5mb3JFYWNoKG9sZEFuc3dlciA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0Fuc3dlciA9IHRoaXMuI2Fuc3dlckxpc3QuZmluZChhYSA9PiBhYS5RdWVzdGlvbkdVSUQgPT09IG9sZEFuc3dlci5RdWVzdGlvbkdVSUQpO1xyXG4gICAgICBpZiAoISFuZXdBbnN3ZXIpIHtcclxuICAgICAgICAvL9Cy0LXRgNC90ZHQvCDQvtGB0L3QvtCy0L3QvtC5INC+0YLQstC10YJcclxuICAgICAgICBuZXdBbnN3ZXIuQW5zd2VyVmFsdWUgPSBvbGRBbnN3ZXIuQW5zd2VyVmFsdWU7XHJcblxyXG4gICAgICAgIG5ld0Fuc3dlci5TdGFydGVkQXQgPSBvbGRBbnN3ZXIuU3RhcnRlZEF0O1xyXG4gICAgICAgIG5ld0Fuc3dlci5GaW5pc2hlZEF0ID0gb2xkQW5zd2VyLkZpbmlzaGVkQXQ7XHJcblxyXG4gICAgICAgIC8v0KEg0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQvNC4INC+0YLQstC10YLQsNC80Lgg0YHQu9C+0LbQvdC10LUsINC+0L3QuCDQv9C+0LzQtdGH0LXQvdGLIHJlYWRvbmx5LiDQn9C+0Y3RgtC+0LzRgyDRgdC90LDRh9Cw0LvQsCDRg9C00LDQu9C40LwsINC/0L7RgtC+0Lwg0LTQvtCx0LDQstC40LxcclxuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobmV3QW5zd2VyLkFuc3dlckFkZGl0aW9uYWwpKSB7XHJcbiAgICAgICAgICAgZGVsZXRlIG5ld0Fuc3dlci5BbnN3ZXJBZGRpdGlvbmFsW3Byb3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL9C00L7QsdCw0LLQu9GP0LXQvCDRgdGC0LDRgNGL0LUg0LfQvdCw0YfQtdC90LjRj1xyXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9sZEFuc3dlci5BbnN3ZXJBZGRpdGlvbmFsKSkge1xyXG4gICAgICAgICAgbmV3QW5zd2VyLkFuc3dlckFkZGl0aW9uYWxba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy/QotC+INC20LUg0YHQsNC80L7QtSDRgSBWaWV3ZWRBbHRlcm5hdGl2ZVZhbHVlcyDQuCBWaWV3ZWRTZWN0aW9uR3VpZHMg0LggQWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcy4g0KIu0LouINC+0L3QuCByZWFkb25seSDRgdC90LDRh9Cw0LvQsCDRg9C00LDQu9C40LwsINC/0L7RgtC+0Lwg0LTQvtCx0LDQstC40LxcclxuICAgICAgICBuZXdBbnN3ZXIuVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXMubGVuZ3RoID0gMDtcclxuICAgICAgICBvbGRBbnN3ZXIuVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXMuZm9yRWFjaChvYSA9PiBuZXdBbnN3ZXIuVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXMucHVzaChvYSkpO1xyXG5cclxuICAgICAgICBuZXdBbnN3ZXIuVmlld2VkU2VjdGlvbkd1aWRzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgb2xkQW5zd2VyLlZpZXdlZFNlY3Rpb25HdWlkcy5mb3JFYWNoKG9hID0+IG5ld0Fuc3dlci5WaWV3ZWRTZWN0aW9uR3VpZHMucHVzaChvYSkpO1xyXG5cclxuICAgICAgICBuZXdBbnN3ZXIuQWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcy5sZW5ndGggPSAwO1xyXG4gICAgICAgIG9sZEFuc3dlci5BbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzLmZvckVhY2gob2EgPT4gbmV3QW5zd2VyLkFsdGVybmF0aXZlU2VxdWVuY2VDbGlja3MucHVzaChvYSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|