@touchpoll/tp-survey 0.0.21 → 0.0.23

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.
@@ -295,7 +295,7 @@ export class ContainerAnswerComponent {
295
295
  return resArray;
296
296
  }
297
297
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ContainerAnswerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
298
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: ContainerAnswerComponent, isStandalone: true, selector: "tp-survey-container-answer", inputs: { findVariable: { classPropertyName: "findVariable", publicName: "findVariable", isSignal: true, isRequired: true, transformFunction: null }, question: { classPropertyName: "question", publicName: "question", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: true, transformFunction: null }, viewModel: { classPropertyName: "viewModel", publicName: "viewModel", isSignal: true, isRequired: true, transformFunction: null }, answers: { classPropertyName: "answers", publicName: "answers", isSignal: true, isRequired: false, transformFunction: null }, developerMode: { classPropertyName: "developerMode", publicName: "developerMode", isSignal: true, isRequired: false, transformFunction: null }, languageList: { classPropertyName: "languageList", publicName: "languageList", isSignal: true, isRequired: true, transformFunction: null }, repositoryPath: { classPropertyName: "repositoryPath", publicName: "repositoryPath", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { logicChanged: "logicChanged", answerChanged: "answerChanged", onLanguageChange: "onLanguageChange" }, ngImport: i0, template: "<div class=\"container-main\" [formGroup]=\"answerForm\">\r\n @switch (question().QuestionType) {\r\n\r\n @case (questionsType.eqLANG) {\r\n <tp-survey-answer-lang\r\n [languageList]=\"languageList()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [language]=\"2\"\r\n [viewModel]=\"viewModel()\"\r\n (onLanguageChange)=\"onLanguageChange.emit($event)\"/>\r\n }\r\n\r\n @case (questionsType.eqINFO) {\r\n <tp-survey-answer-info\r\n formControlName=\"answer\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"/>\r\n }\r\n\r\n @case (questionsType.eqSS) {\r\n <tp-survey-answer-ss\r\n formControlName=\"answer\"\r\n [question]=\"question()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n (onAlternativeClick)=\"onAlternativeClick($event)\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqMS) {\r\n <tp-survey-answer-ms\r\n formControlName=\"answer\"\r\n [question]=\"question()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [alternativeMaxAnswersCount]=\"question().AlternativeMaxAnswersCount\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n (onAlternativeClick)=\"onAlternativeClick($event)\"/>\r\n }\r\n\r\n @case (questionsType.eqOD) {\r\n <tp-survey-answer-od\r\n formControlName=\"answer\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [minValue]=\"question().ODMinValue\"\r\n [maxValue]=\"question().ODMaxValue\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqOL) {\r\n <tp-survey-answer-ol\r\n formControlName=\"answer\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [telephoneInput]=\"question().OLTypeTel\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqSL) {\r\n <tp-survey-answer-sl\r\n formControlName=\"answer\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n [sectionList]=\"visibleSectionList()\"\r\n [multiSelect]=\"question().MultiSelect\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [maxCount]=\"this.question().SLSectionMaxAnswersCount\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqEND) {\r\n <tp-survey-answer-end\r\n formControlName=\"answer\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n />\r\n }\r\n }\r\n\r\n <div class=\"container-additional-answer\">\r\n @for (addAnswer of answerForm.controls.additionalAnswers.controls | keyValues; track addAnswer) {\r\n @if (addAnswer.name | getAdditionalValueByValue:visibleAdditionalAnswerList(); as additionalAnswerObject ) {\r\n <tp-survey-answer-additional\r\n [control]=\"addAnswer.control\"\r\n [class.full-width]=\"additionalAnswerObject.AnswerType===AdditionalAnswerType.aatText\"\r\n [answerType]=\"additionalAnswerObject.AnswerType\"\r\n [caption]=\"additionalAnswerObject.MultiLangCaptions | multiLangObjectToHtml:language()\"\r\n [numberMinValue]=\"additionalAnswerObject.NumberMinValue\"\r\n [numberMaxValue]=\"additionalAnswerObject.NumberMaxValue\"\r\n [textMultiline]=\"additionalAnswerObject.TextMultiline\"\r\n [captionPosition]=\"additionalAnswerObject.CaptionPosition\"/>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n", styles: [".container-main{display:flex;flex-flow:column;align-items:center}tp-survey-answer-sl{width:100%}.full-width{width:100%}:host-context(.tp-view-desktop) .container-main{max-width:896px;margin:0 auto;padding:0 1em}:host-context(.tp-view-desktop) .container-additional-answer{padding:1em;display:flex;flex-flow:column;align-items:baseline;gap:2em}:host-context(.tp-view-tablet) .container-main{width:100%;height:100%;overflow:auto}:host-context(.tp-view-tablet) .container-additional-answer{padding:1em;display:flex;flex-flow:column;align-items:baseline;gap:2em}@media (max-width: 480px){:host-context(.tp-view-desktop) .container-additional-answer{width:100%}}\n"], dependencies: [{ kind: "component", type: AnswerODComponent, selector: "tp-survey-answer-od", inputs: ["minValue", "maxValue"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: AnswerSSComponent, selector: "tp-survey-answer-ss", inputs: ["question", "alternativeList"], outputs: ["onAlternativeClick"] }, { kind: "component", type: AnswerInfoComponent, selector: "tp-survey-answer-info" }, { kind: "component", type: AnswerMSComponent, selector: "tp-survey-answer-ms", inputs: ["question", "alternativeList", "alternativeMaxAnswersCount"], outputs: ["onAlternativeClick"] }, { kind: "component", type: AnswerAdditionalComponent, selector: "tp-survey-answer-additional", inputs: ["control", "answerType", "caption", "numberMinValue", "numberMaxValue", "textMultiline", "captionPosition"] }, { kind: "pipe", type: MultiLangObjectToHtmlPipe, name: "multiLangObjectToHtml" }, { kind: "component", type: AnswerEndComponent, selector: "tp-survey-answer-end" }, { kind: "component", type: AnswerOLComponent, selector: "tp-survey-answer-ol", inputs: ["telephoneInput"] }, { kind: "component", type: AnswerSLComponent, selector: "tp-survey-answer-sl", inputs: ["alternativeList", "sectionList", "multiSelect", "maxCount"] }, { kind: "pipe", type: GetAdditionalValueByValuePipe, name: "getAdditionalValueByValue" }, { kind: "pipe", type: KeyValuesPipe, name: "keyValues" }, { kind: "component", type: AnswerLangComponent, selector: "tp-survey-answer-lang", inputs: ["languageList"], outputs: ["onLanguageChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
298
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: ContainerAnswerComponent, isStandalone: true, selector: "tp-survey-container-answer", inputs: { findVariable: { classPropertyName: "findVariable", publicName: "findVariable", isSignal: true, isRequired: true, transformFunction: null }, question: { classPropertyName: "question", publicName: "question", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: true, transformFunction: null }, viewModel: { classPropertyName: "viewModel", publicName: "viewModel", isSignal: true, isRequired: true, transformFunction: null }, answers: { classPropertyName: "answers", publicName: "answers", isSignal: true, isRequired: false, transformFunction: null }, developerMode: { classPropertyName: "developerMode", publicName: "developerMode", isSignal: true, isRequired: false, transformFunction: null }, languageList: { classPropertyName: "languageList", publicName: "languageList", isSignal: true, isRequired: true, transformFunction: null }, repositoryPath: { classPropertyName: "repositoryPath", publicName: "repositoryPath", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { logicChanged: "logicChanged", answerChanged: "answerChanged", onLanguageChange: "onLanguageChange" }, ngImport: i0, template: "<div class=\"container-main\" [formGroup]=\"answerForm\">\r\n @switch (question().QuestionType) {\r\n\r\n @case (questionsType.eqLANG) {\r\n <tp-survey-answer-lang\r\n [languageList]=\"languageList()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [language]=\"2\"\r\n [viewModel]=\"viewModel()\"\r\n (onLanguageChange)=\"onLanguageChange.emit($event)\"/>\r\n }\r\n\r\n @case (questionsType.eqINFO) {\r\n <tp-survey-answer-info\r\n formControlName=\"answer\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"/>\r\n }\r\n\r\n @case (questionsType.eqSS) {\r\n <tp-survey-answer-ss\r\n formControlName=\"answer\"\r\n [question]=\"question()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n (onAlternativeClick)=\"onAlternativeClick($event)\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqMS) {\r\n <tp-survey-answer-ms\r\n formControlName=\"answer\"\r\n [question]=\"question()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [alternativeMaxAnswersCount]=\"question().AlternativeMaxAnswersCount\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n (onAlternativeClick)=\"onAlternativeClick($event)\"/>\r\n }\r\n\r\n @case (questionsType.eqOD) {\r\n <tp-survey-answer-od\r\n formControlName=\"answer\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [minValue]=\"question().ODMinValue\"\r\n [maxValue]=\"question().ODMaxValue\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqOL) {\r\n <tp-survey-answer-ol\r\n formControlName=\"answer\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [telephoneInput]=\"question().OLTypeTel\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqSL) {\r\n <tp-survey-answer-sl\r\n formControlName=\"answer\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n [sectionList]=\"visibleSectionList()\"\r\n [multiSelect]=\"question().MultiSelect\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [maxCount]=\"this.question().SLSectionMaxAnswersCount\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqEND) {\r\n <tp-survey-answer-end\r\n formControlName=\"answer\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n />\r\n }\r\n }\r\n\r\n <div class=\"container-additional-answer\">\r\n @for (addAnswer of answerForm.controls.additionalAnswers.controls | keyValues; track addAnswer) {\r\n @if (addAnswer.name | getAdditionalValueByValue:visibleAdditionalAnswerList(); as additionalAnswerObject ) {\r\n <tp-survey-answer-additional\r\n [control]=\"addAnswer.control\"\r\n [class.full-width]=\"additionalAnswerObject.AnswerType===AdditionalAnswerType.aatText\"\r\n [answerType]=\"additionalAnswerObject.AnswerType\"\r\n [caption]=\"additionalAnswerObject.MultiLangCaptions | multiLangObjectToHtml:language()\"\r\n [numberMinValue]=\"additionalAnswerObject.NumberMinValue\"\r\n [numberMaxValue]=\"additionalAnswerObject.NumberMaxValue\"\r\n [textMultiline]=\"additionalAnswerObject.TextMultiline\"\r\n [captionPosition]=\"additionalAnswerObject.CaptionPosition\"/>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n", styles: [".container-main{display:flex;flex-flow:column;align-items:center}tp-survey-answer-sl{width:100%}.full-width{width:100%}:host-context(.tp-view-desktop) .container-main{margin:0 auto;padding:0 1em}:host-context(.tp-view-desktop) .container-additional-answer{padding:1em;display:flex;flex-flow:column;align-items:baseline;gap:2em}:host-context(.tp-view-tablet) .container-main{width:100%;height:100%;overflow:auto}:host-context(.tp-view-tablet) .container-additional-answer{padding:1em;display:flex;flex-flow:column;align-items:baseline;gap:2em}@media (max-width: 480px){:host-context(.tp-view-desktop) .container-additional-answer{width:100%}}\n"], dependencies: [{ kind: "component", type: AnswerODComponent, selector: "tp-survey-answer-od", inputs: ["minValue", "maxValue"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: AnswerSSComponent, selector: "tp-survey-answer-ss", inputs: ["question", "alternativeList"], outputs: ["onAlternativeClick"] }, { kind: "component", type: AnswerInfoComponent, selector: "tp-survey-answer-info" }, { kind: "component", type: AnswerMSComponent, selector: "tp-survey-answer-ms", inputs: ["question", "alternativeList", "alternativeMaxAnswersCount"], outputs: ["onAlternativeClick"] }, { kind: "component", type: AnswerAdditionalComponent, selector: "tp-survey-answer-additional", inputs: ["control", "answerType", "caption", "numberMinValue", "numberMaxValue", "textMultiline", "captionPosition"] }, { kind: "pipe", type: MultiLangObjectToHtmlPipe, name: "multiLangObjectToHtml" }, { kind: "component", type: AnswerEndComponent, selector: "tp-survey-answer-end" }, { kind: "component", type: AnswerOLComponent, selector: "tp-survey-answer-ol", inputs: ["telephoneInput"] }, { kind: "component", type: AnswerSLComponent, selector: "tp-survey-answer-sl", inputs: ["alternativeList", "sectionList", "multiSelect", "maxCount"] }, { kind: "pipe", type: GetAdditionalValueByValuePipe, name: "getAdditionalValueByValue" }, { kind: "pipe", type: KeyValuesPipe, name: "keyValues" }, { kind: "component", type: AnswerLangComponent, selector: "tp-survey-answer-lang", inputs: ["languageList"], outputs: ["onLanguageChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
299
299
  }
300
300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ContainerAnswerComponent, decorators: [{
301
301
  type: Component,
@@ -314,6 +314,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
314
314
  GetAdditionalValueByValuePipe,
315
315
  KeyValuesPipe,
316
316
  AnswerLangComponent
317
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container-main\" [formGroup]=\"answerForm\">\r\n @switch (question().QuestionType) {\r\n\r\n @case (questionsType.eqLANG) {\r\n <tp-survey-answer-lang\r\n [languageList]=\"languageList()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [language]=\"2\"\r\n [viewModel]=\"viewModel()\"\r\n (onLanguageChange)=\"onLanguageChange.emit($event)\"/>\r\n }\r\n\r\n @case (questionsType.eqINFO) {\r\n <tp-survey-answer-info\r\n formControlName=\"answer\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"/>\r\n }\r\n\r\n @case (questionsType.eqSS) {\r\n <tp-survey-answer-ss\r\n formControlName=\"answer\"\r\n [question]=\"question()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n (onAlternativeClick)=\"onAlternativeClick($event)\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqMS) {\r\n <tp-survey-answer-ms\r\n formControlName=\"answer\"\r\n [question]=\"question()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [alternativeMaxAnswersCount]=\"question().AlternativeMaxAnswersCount\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n (onAlternativeClick)=\"onAlternativeClick($event)\"/>\r\n }\r\n\r\n @case (questionsType.eqOD) {\r\n <tp-survey-answer-od\r\n formControlName=\"answer\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [minValue]=\"question().ODMinValue\"\r\n [maxValue]=\"question().ODMaxValue\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqOL) {\r\n <tp-survey-answer-ol\r\n formControlName=\"answer\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [telephoneInput]=\"question().OLTypeTel\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqSL) {\r\n <tp-survey-answer-sl\r\n formControlName=\"answer\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n [sectionList]=\"visibleSectionList()\"\r\n [multiSelect]=\"question().MultiSelect\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [maxCount]=\"this.question().SLSectionMaxAnswersCount\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqEND) {\r\n <tp-survey-answer-end\r\n formControlName=\"answer\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n />\r\n }\r\n }\r\n\r\n <div class=\"container-additional-answer\">\r\n @for (addAnswer of answerForm.controls.additionalAnswers.controls | keyValues; track addAnswer) {\r\n @if (addAnswer.name | getAdditionalValueByValue:visibleAdditionalAnswerList(); as additionalAnswerObject ) {\r\n <tp-survey-answer-additional\r\n [control]=\"addAnswer.control\"\r\n [class.full-width]=\"additionalAnswerObject.AnswerType===AdditionalAnswerType.aatText\"\r\n [answerType]=\"additionalAnswerObject.AnswerType\"\r\n [caption]=\"additionalAnswerObject.MultiLangCaptions | multiLangObjectToHtml:language()\"\r\n [numberMinValue]=\"additionalAnswerObject.NumberMinValue\"\r\n [numberMaxValue]=\"additionalAnswerObject.NumberMaxValue\"\r\n [textMultiline]=\"additionalAnswerObject.TextMultiline\"\r\n [captionPosition]=\"additionalAnswerObject.CaptionPosition\"/>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n", styles: [".container-main{display:flex;flex-flow:column;align-items:center}tp-survey-answer-sl{width:100%}.full-width{width:100%}:host-context(.tp-view-desktop) .container-main{max-width:896px;margin:0 auto;padding:0 1em}:host-context(.tp-view-desktop) .container-additional-answer{padding:1em;display:flex;flex-flow:column;align-items:baseline;gap:2em}:host-context(.tp-view-tablet) .container-main{width:100%;height:100%;overflow:auto}:host-context(.tp-view-tablet) .container-additional-answer{padding:1em;display:flex;flex-flow:column;align-items:baseline;gap:2em}@media (max-width: 480px){:host-context(.tp-view-desktop) .container-additional-answer{width:100%}}\n"] }]
317
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container-main\" [formGroup]=\"answerForm\">\r\n @switch (question().QuestionType) {\r\n\r\n @case (questionsType.eqLANG) {\r\n <tp-survey-answer-lang\r\n [languageList]=\"languageList()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [language]=\"2\"\r\n [viewModel]=\"viewModel()\"\r\n (onLanguageChange)=\"onLanguageChange.emit($event)\"/>\r\n }\r\n\r\n @case (questionsType.eqINFO) {\r\n <tp-survey-answer-info\r\n formControlName=\"answer\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"/>\r\n }\r\n\r\n @case (questionsType.eqSS) {\r\n <tp-survey-answer-ss\r\n formControlName=\"answer\"\r\n [question]=\"question()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n (onAlternativeClick)=\"onAlternativeClick($event)\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqMS) {\r\n <tp-survey-answer-ms\r\n formControlName=\"answer\"\r\n [question]=\"question()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [alternativeMaxAnswersCount]=\"question().AlternativeMaxAnswersCount\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n (onAlternativeClick)=\"onAlternativeClick($event)\"/>\r\n }\r\n\r\n @case (questionsType.eqOD) {\r\n <tp-survey-answer-od\r\n formControlName=\"answer\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [minValue]=\"question().ODMinValue\"\r\n [maxValue]=\"question().ODMaxValue\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqOL) {\r\n <tp-survey-answer-ol\r\n formControlName=\"answer\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [telephoneInput]=\"question().OLTypeTel\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqSL) {\r\n <tp-survey-answer-sl\r\n formControlName=\"answer\"\r\n [alternativeList]=\"visibleAlternativeList()\"\r\n [sectionList]=\"visibleSectionList()\"\r\n [multiSelect]=\"question().MultiSelect\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [findVariable]=\"findVariable()\"\r\n [maxCount]=\"this.question().SLSectionMaxAnswersCount\"\r\n />\r\n }\r\n\r\n @case (questionsType.eqEND) {\r\n <tp-survey-answer-end\r\n formControlName=\"answer\"\r\n [findVariable]=\"findVariable()\"\r\n [repositoryPath]=\"repositoryPath()\"\r\n [language]=\"language()\"\r\n [viewModel]=\"viewModel()\"\r\n />\r\n }\r\n }\r\n\r\n <div class=\"container-additional-answer\">\r\n @for (addAnswer of answerForm.controls.additionalAnswers.controls | keyValues; track addAnswer) {\r\n @if (addAnswer.name | getAdditionalValueByValue:visibleAdditionalAnswerList(); as additionalAnswerObject ) {\r\n <tp-survey-answer-additional\r\n [control]=\"addAnswer.control\"\r\n [class.full-width]=\"additionalAnswerObject.AnswerType===AdditionalAnswerType.aatText\"\r\n [answerType]=\"additionalAnswerObject.AnswerType\"\r\n [caption]=\"additionalAnswerObject.MultiLangCaptions | multiLangObjectToHtml:language()\"\r\n [numberMinValue]=\"additionalAnswerObject.NumberMinValue\"\r\n [numberMaxValue]=\"additionalAnswerObject.NumberMaxValue\"\r\n [textMultiline]=\"additionalAnswerObject.TextMultiline\"\r\n [captionPosition]=\"additionalAnswerObject.CaptionPosition\"/>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n", styles: [".container-main{display:flex;flex-flow:column;align-items:center}tp-survey-answer-sl{width:100%}.full-width{width:100%}:host-context(.tp-view-desktop) .container-main{margin:0 auto;padding:0 1em}:host-context(.tp-view-desktop) .container-additional-answer{padding:1em;display:flex;flex-flow:column;align-items:baseline;gap:2em}:host-context(.tp-view-tablet) .container-main{width:100%;height:100%;overflow:auto}:host-context(.tp-view-tablet) .container-additional-answer{padding:1em;display:flex;flex-flow:column;align-items:baseline;gap:2em}@media (max-width: 480px){:host-context(.tp-view-desktop) .container-additional-answer{width:100%}}\n"] }]
318
318
  }], ctorParameters: () => [] });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmFuc3dlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cC5zdXJ2ZXkvc3JjL2xpYi9jb21wb25lbnQvYW5zd2VyL2NvbnRhaW5lci5hbnN3ZXIvY29udGFpbmVyLmFuc3dlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cC5zdXJ2ZXkvc3JjL2xpYi9jb21wb25lbnQvYW5zd2VyL2NvbnRhaW5lci5hbnN3ZXIvY29udGFpbmVyLmFuc3dlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQywrQkFBK0IsRUFDL0Isc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDakgsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDM0YsT0FBTyxFQUFD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QixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsNkJBQTZCO3dCQUM3QixhQUFhO3dCQUNiLG1CQUFtQjtxQkFDcEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBhZGRpdGlvbmFsQW5zd2VyRGVmYXVsdFZhbGlkYXRvcixcclxuICBhZGRpdGlvbmFsQW5zd2VyTnVtYmVyVmFsaWRhdG9yLFxyXG4gIGFuc3dlckRlZmF1bHRWYWxpZGF0b3IsXHJcbiAgYW5zd2VyTVNWYWxpZGF0b3IsXHJcbiAgYW5zd2VyT0RWYWxpZGF0b3IsXHJcbiAgYW5zd2VyT0xWYWxpZGF0b3IsXHJcbiAgYW5zd2VyU2xWYWxpZGF0b3IsXHJcbiAgYW5zd2VyU1NWYWxpZGF0b3JcclxufSBmcm9tICcuL2NvbnRhaW5lci5hbnN3ZXIudmFsaWRhdG9yJztcclxuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtBbnN3ZXJTU0NvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLnNzL2Fuc3dlci5zcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Fuc3dlckluZm9Db21wb25lbnR9IGZyb20gJy4uL2Fuc3dlci5pbmZvL2Fuc3dlci5pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7QW5zd2VyTVNDb21wb25lbnR9IGZyb20gJy4uL2Fuc3dlci5tcy9hbnN3ZXIubXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtLZXlWYWx1ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TXVsdGlMYW5nT2JqZWN0VG9IdG1sUGlwZX0gZnJvbSAnLi4vLi4vLi4vcGlwZS9tdWx0aS5sYW5nLm9iamVjdC50by5odG1sL211bHRpLmxhbmcub2JqZWN0LnRvLmh0bWwucGlwZSc7XHJcbmltcG9ydCB7QW5zd2VyQWRkaXRpb25hbENvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLmFkZGl0aW9uYWwvYW5zd2VyLmFkZGl0aW9uYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHtBbnN3ZXJFbmRDb21wb25lbnR9IGZyb20gJy4uL2Fuc3dlci5lbmQvYW5zd2VyLmVuZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtBbnN3ZXJPTENvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLm9sL2Fuc3dlci5vbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Fuc3dlclNMQ29tcG9uZW50fSBmcm9tICcuLi9hbnN3ZXIuc2wvYW5zd2VyLnNsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0FkZGl0aW9uYWxBbnN3ZXIsIEFuc3dlclNsVHlwZSwgQW5zd2VyVCwgVEZpbmRWYXJpYWJsZVZvaWR9IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS50eXBlJztcclxuaW1wb3J0IHtBbnN3ZXJPRENvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLm9kL2Fuc3dlci5vZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Fuc3dlckNoYW5nZSwgSUN1cnJlbnRRdWVzdGlvbkFuc3dlciwgSWRiQWRkaXRpb25hbEFuc3dlciwgSWRiQWx0ZXJuYXRpdmUsIElkYkJhc2VQYXJhbXNMYW5ndWFnZSwgSWRiUXVlc3Rpb24sIElkYlNlY3Rpb259IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0FkZGl0aW9uYWxBbnN3ZXJUeXBlLCBRdWVzdGlvbnNUeXBlLCBWaWV3TW9kZWx9IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS5lbnVtJztcclxuaW1wb3J0IHtUcFN1cnZleUxvZ2ljU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS90cC5zdXJ2ZXkubG9naWMvdHAuc3VydmV5LmxvZ2ljLnNlcnZpY2UnO1xyXG5pbXBvcnQge01JU1NJTkdfVkFMVUV9IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS5jb25zdCc7XHJcbmltcG9ydCB7R2V0QWRkaXRpb25hbFZhbHVlQnlWYWx1ZVBpcGV9IGZyb20gJy4uLy4uLy4uL3BpcGUvZ2V0LmFkZGl0aW9uYWwudmFsdWUuYnkudmFsdWUvZ2V0LmFkZGl0aW9uYWwudmFsdWUuYnkudmFsdWUucGlwZSc7XHJcbmltcG9ydCB7S2V5VmFsdWVzUGlwZX0gZnJvbSAnLi4vLi4vLi4vcGlwZS9rZXkudmFsdWVzL2tleS52YWx1ZXMucGlwZSc7XHJcbmltcG9ydCB7QW5zd2VyTGFuZ0NvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLmxhbmcvYW5zd2VyLmxhbmcuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBJQW5zd2VyRm9ybSB7XHJcbiAgYW5zd2VyOiBGb3JtQ29udHJvbDxBbnN3ZXJUPjtcclxuICBhZGRpdGlvbmFsQW5zd2VyczogRm9ybUdyb3VwPHtcclxuICAgIFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sPEFkZGl0aW9uYWxBbnN3ZXI+XHJcbiAgfT47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHAtc3VydmV5LWNvbnRhaW5lci1hbnN3ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQW5zd2VyT0RDb21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQW5zd2VyU1NDb21wb25lbnQsXHJcbiAgICBBbnN3ZXJJbmZvQ29tcG9uZW50LFxyXG4gICAgQW5zd2VyTVNDb21wb25lbnQsXHJcbiAgICBBbnN3ZXJBZGRpdGlvbmFsQ29tcG9uZW50LFxyXG4gICAgS2V5VmFsdWVQaXBlLFxyXG4gICAgTXVsdGlMYW5nT2JqZWN0VG9IdG1sUGlwZSxcclxuICAgIEFuc3dlckVuZENvbXBvbmVudCxcclxuICAgIEFuc3dlck9MQ29tcG9uZW50LFxyXG4gICAgQW5zd2VyU0xDb21wb25lbnQsXHJcbiAgICBHZXRBZGRpdGlvbmFsVmFsdWVCeVZhbHVlUGlwZSxcclxuICAgIEtleVZhbHVlc1BpcGUsXHJcbiAgICBBbnN3ZXJMYW5nQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29udGFpbmVyLmFuc3dlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvbnRhaW5lci5hbnN3ZXIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250YWluZXJBbnN3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgZmluZFZhcmlhYmxlID0gaW5wdXQucmVxdWlyZWQ8VEZpbmRWYXJpYWJsZVZvaWQ+KCk7XHJcbiAgcXVlc3Rpb24gPSBpbnB1dC5yZXF1aXJlZDxJZGJRdWVzdGlvbj4oKTtcclxuICBsYW5ndWFnZSA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICB2aWV3TW9kZWwgPSBpbnB1dC5yZXF1aXJlZDxWaWV3TW9kZWw+KCk7XHJcbiAgYW5zd2VycyA9IGlucHV0PElDdXJyZW50UXVlc3Rpb25BbnN3ZXI+KCk7XHJcbiAgZGV2ZWxvcGVyTW9kZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBsYW5ndWFnZUxpc3QgPSBpbnB1dC5yZXF1aXJlZDxBcnJheTxJZGJCYXNlUGFyYW1zTGFuZ3VhZ2U+PigpO1xyXG4gIHJlcG9zaXRvcnlQYXRoID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgdmlzaWJsZUFsdGVybmF0aXZlTGlzdCA9IHNpZ25hbDxBcnJheTxJZGJBbHRlcm5hdGl2ZT4+KFtdKTtcclxuICB2aXNpYmxlU2VjdGlvbkxpc3QgPSBzaWduYWw8QXJyYXk8SWRiU2VjdGlvbj4+KFtdKTtcclxuICB2aXNpYmxlQWRkaXRpb25hbEFuc3dlckxpc3QgPSBzaWduYWw8QXJyYXk8SWRiQWRkaXRpb25hbEFuc3dlcj4+KFtdKTtcclxuICBsb2dpY0NoYW5nZWQgPSBvdXRwdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4oKTtcclxuICBhbnN3ZXJDaGFuZ2VkID0gb3V0cHV0PEFuc3dlckNoYW5nZT4oKTtcclxuICBvbkxhbmd1YWdlQ2hhbmdlID0gb3V0cHV0PG51bWJlcj4oKTtcclxuXHJcbiAgcXVlc3Rpb25zVHlwZSA9IFF1ZXN0aW9uc1R5cGU7XHJcbiAgYW5zd2VyRm9ybTogRm9ybUdyb3VwPElBbnN3ZXJGb3JtPjtcclxuICByZWFkb25seSBBZGRpdGlvbmFsQW5zd2VyVHlwZSA9IEFkZGl0aW9uYWxBbnN3ZXJUeXBlO1xyXG4gICNhbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzOiBBcnJheTxbbnVtYmVyLCBudW1iZXJdPiA9IFtdO1xyXG4gIHJlYWRvbmx5ICNsb2dpYyA9IGluamVjdChUcFN1cnZleUxvZ2ljU2VydmljZSk7XHJcbiAgcmVhZG9ubHkgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5hbnN3ZXJGb3JtID0gbmV3IEZvcm1Hcm91cDxJQW5zd2VyRm9ybT4oe1xyXG4gICAgICBhbnN3ZXI6IG5ldyBGb3JtQ29udHJvbDxBbnN3ZXJUPihudWxsICksXHJcbiAgICAgIGFkZGl0aW9uYWxBbnN3ZXJzOiBuZXcgRm9ybUdyb3VwKHt9KSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhbnN3ZXJWYWx1ZSA9IHRoaXMuYW5zd2VycygpPy5xdWVzdGlvbj8uQW5zd2VyVmFsdWUgPz8gbnVsbDtcclxuICAgIGNvbnN0IGFuc3dlclZhbHVlQ2xlYXIgPSBhbnN3ZXJWYWx1ZSA9PT0gTUlTU0lOR19WQUxVRSA/IG51bGwgOiBhbnN3ZXJWYWx1ZTtcclxuICAgIHRoaXMuYW5zd2VyRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgYW5zd2VyOiBhbnN3ZXJWYWx1ZUNsZWFyLFxyXG4gICAgICBhZGRpdGlvbmFsQW5zd2VyczogdGhpcy5hbnN3ZXJzKCk/LnF1ZXN0aW9uPy5BbnN3ZXJBZGRpdGlvbmFsXHJcbiAgICB9LCB7ZW1pdEV2ZW50OmZhbHNlfSk7XHJcblxyXG4gICAgdGhpcy4jYWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcyA9IHRoaXMuYW5zd2VycygpPy5xdWVzdGlvbj8uQWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcyA/PyBbXTtcclxuICAgIHRoaXMuI3VwZGF0ZUFsdGVybmF0aXZlc0FuZFNlY3Rpb25zKCk7XHJcbiAgICB0aGlzLiN1cGRhdGVBZGRpdGlvbmFsQW5zd2Vycyh0cnVlKTtcclxuICAgIHRoaXMuI2FkZFZhbGlkYXRvcigpO1xyXG5cclxuICAgIHRoaXMuYW5zd2VyRm9ybS52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcclxuICAgICB0YXAoKCkgPT4gdGhpcy5sb2dpY0NoYW5nZWQuZW1pdCh0aGlzLiNnZXRMb2dpY1ZhcnMoKSkpLCAvL9GI0LvRkdC8INC90L7QstGL0LUg0LvQvtCz0LjRh9C10YHQutC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LUo0LzQvtC20LXRgiDQvtCx0L3QvtCy0LjRgtGM0YHRjyDRgdC/0LjRgdC+0LogYWRkaXRpb25hbEFuc3dlcnMpXHJcbiAgICAgdGFwKCgpID0+IHRoaXMuI3VwZGF0ZUFkZGl0aW9uYWxBbnN3ZXJzKGZhbHNlKSksIC8v0L/QtdGA0LXRgdGC0YDQsNC40LLQsNC10LwgYWRkaXRpb25hbEFuc3dlcnNcclxuICAgICBtYXAodmFsdWVzID0+IHtcclxuICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9ICh0aGlzLmFuc3dlckZvcm0uY29udHJvbHMuYWRkaXRpb25hbEFuc3dlcnMgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgIGNvbnN0IGFkZGl0aW9uYWxBbnN3ZXJOb3JtYWxpemVkOiBSZWNvcmQ8bnVtYmVyLCBBZGRpdGlvbmFsQW5zd2VyPiA9IHt9O1xyXG4gICAgICAgdGhpcy5xdWVzdGlvbigpLkFkZGl0aW9uYWxBbnN3ZXJsaXN0LmZvckVhY2goYWEgPT4ge1xyXG4gICAgICAgICBjb25zdCBpc1Zpc2libGUgPSB0aGlzLnZpc2libGVBZGRpdGlvbmFsQW5zd2VyTGlzdCgpLmZpbmQoZmFhID0+IGZhYS5WYWx1ZSA9PT0gYWEuVmFsdWUpO1xyXG4gICAgICAgICBpZiAoaXNWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgYWRkaXRpb25hbEFuc3dlck5vcm1hbGl6ZWRbYWEuVmFsdWVdID0gISF2YWx1ZXMuYWRkaXRpb25hbEFuc3dlcnMgPyB2YWx1ZXMuYWRkaXRpb25hbEFuc3dlcnNbYWEuVmFsdWVdISA6IE1JU1NJTkdfVkFMVUU7XHJcbiAgICAgICAgICAgZm9ybUdyb3VwLmdldChhYS5WYWx1ZS50b1N0cmluZygpKT8uZW5hYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSlcclxuICAgICAgICAgfSBlbHNlICB7XHJcbiAgICAgICAgICAgYWRkaXRpb25hbEFuc3dlck5vcm1hbGl6ZWRbYWEuVmFsdWVdID0gTUlTU0lOR19WQUxVRTtcclxuICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KGFhLlZhbHVlLnRvU3RyaW5nKCkpPy5kaXNhYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSlcclxuICAgICAgICAgfVxyXG4gICAgICAgfSk7XHJcbiAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICBhbnN3ZXI6dmFsdWVzLmFuc3dlcixcclxuICAgICAgICAgYWRkaXRpb25hbEFuc3dlcnM6IGFkZGl0aW9uYWxBbnN3ZXJOb3JtYWxpemVkLFxyXG4gICAgICAgfVxyXG4gICAgIH0pLFxyXG4gICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuYW5zd2VyQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICBndWlkOiB0aGlzLnF1ZXN0aW9uKCkuUXVlc3Rpb25HdWlkLFxyXG4gICAgICAgIGlzQ29tcGxldGU6IHRoaXMuYW5zd2VyRm9ybS52YWxpZCxcclxuICAgICAgICBhbnN3ZXI6IGRhdGEuYW5zd2VyISxcclxuICAgICAgICBhZGRpdGlvbmFsQW5zd2VyczogZGF0YS5hZGRpdGlvbmFsQW5zd2VycyBhcyBSZWNvcmQ8bnVtYmVyLCBBZGRpdGlvbmFsQW5zd2VyPixcclxuICAgICAgICBsb2dpY1ZhcnM6IHRoaXMuI2dldExvZ2ljVmFycygpLFxyXG4gICAgICAgIHZpZXdlZEFsdGVybmF0aXZlVmFsdWVzOiB0aGlzLnZpc2libGVBbHRlcm5hdGl2ZUxpc3QoKS5tYXAoYWx0ID0+IGFsdC5WYWx1ZSksXHJcbiAgICAgICAgdmlld2VkU2VjdGlvbkd1aWRzOiAgdGhpcy52aXNpYmxlU2VjdGlvbkxpc3QoKS5tYXAoYWx0ID0+IGFsdC5TZWN0aW9uR3VpZCksXHJcbiAgICAgICAgYWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrczogQXJyYXkuZnJvbSh0aGlzLiNhbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzKVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy4jc2V0RGVmYXVsdEFuc3dlcnMoKTtcclxuICB9XHJcblxyXG4gICNhZGRWYWxpZGF0b3IoKTogdm9pZHtcclxuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5xdWVzdGlvbigpO1xyXG4gICAgdGhpcy5hbnN3ZXJGb3JtLmNvbnRyb2xzLmFuc3dlci5hZGRWYWxpZGF0b3JzKGFuc3dlckRlZmF1bHRWYWxpZGF0b3IoKSk7XHJcblxyXG4gICAgc3dpdGNoIChxdWVzdGlvbi5RdWVzdGlvblR5cGUpe1xyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFTUzoge1xyXG4gICAgICAgIHRoaXMuYW5zd2VyRm9ybS5jb250cm9scy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhhbnN3ZXJTU1ZhbGlkYXRvcigpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxTVM6IHtcclxuICAgICAgICB0aGlzLmFuc3dlckZvcm0uY29udHJvbHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoYW5zd2VyTVNWYWxpZGF0b3IodGhpcy52aXNpYmxlQWx0ZXJuYXRpdmVMaXN0KCkubGVuZ3RoLCAgdGhpcy5xdWVzdGlvbigpLkFsdGVybmF0aXZlTWluQW5zd2Vyc0NvdW50LCB0aGlzLnF1ZXN0aW9uKCkuQWx0ZXJuYXRpdmVNYXhBbnN3ZXJzQ291bnQpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxT0Q6IHtcclxuICAgICAgICB0aGlzLmFuc3dlckZvcm0uY29udHJvbHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoYW5zd2VyT0RWYWxpZGF0b3IocXVlc3Rpb24uT0RNaW5WYWx1ZSwgcXVlc3Rpb24uT0RNYXhWYWx1ZSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFPTDoge1xyXG4gICAgICAgIHRoaXMuYW5zd2VyRm9ybS5jb250cm9scy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhhbnN3ZXJPTFZhbGlkYXRvcihxdWVzdGlvbi5PTFR5cGVUZWwpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxU0w6IHtcclxuICAgICAgICB0aGlzLmFuc3dlckZvcm0uY29udHJvbHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoYW5zd2VyU2xWYWxpZGF0b3IodGhpcy5xdWVzdGlvbigpLlJlcXVpcmVBbGxBbnN3ZXJzLCB0aGlzLnF1ZXN0aW9uKCkuU0xTZWN0aW9uTWluQW5zd2Vyc0NvdW50LCB0aGlzLnZpc2libGVTZWN0aW9uTGlzdCgpKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICNzZXREZWZhdWx0QW5zd2VycygpOiB2b2lke1xyXG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uKCk7XHJcbiAgICBjb25zdCBpc0xhbmcgPSBxdWVzdGlvbi5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFMQU5HO1xyXG4gICAgY29uc3QgaXNJbmZvID0gcXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxSU5GTztcclxuICAgIGNvbnN0IGlzRW5kICA9IHF1ZXN0aW9uLlF1ZXN0aW9uVHlwZSA9PT0gUXVlc3Rpb25zVHlwZS5lcUVORDtcclxuICAgIGNvbnN0IGlzU1NNUyA9IChxdWVzdGlvbi5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFTUyB8fCBxdWVzdGlvbi5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFNUykgJiYgKHRoaXMudmlzaWJsZUFsdGVybmF0aXZlTGlzdCgpLmxlbmd0aCA9PT0gMCk7XHJcblxyXG4gICAgaWYgKGlzSW5mbyB8fCBpc0VuZCB8fCBpc1NTTVMgfHwgaXNMYW5nKSB7XHJcbiAgICAgIGxldCBkZWZhdWx0QW5zd2VyO1xyXG4gICAgICBzd2l0Y2ggKHF1ZXN0aW9uLlF1ZXN0aW9uVHlwZSkge1xyXG4gICAgICAgIGNhc2UgUXVlc3Rpb25zVHlwZS5lcU1TOiBkZWZhdWx0QW5zd2VyID0gW107IGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUXVlc3Rpb25zVHlwZS5lcVNTOiBkZWZhdWx0QW5zd2VyID0gMDsgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDogZGVmYXVsdEFuc3dlciA9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v0LzQvtC20LXRgiDQstC+0LfQvdC40LrQvdGD0YLRjCDRgdC40YLRg9Cw0YbQuNGPLCDQutC+0LPQtNCwINC90LXRgiDQsNC70YzRgtC10YDQvdCw0YLQuNCyINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPLtCyINGN0YLQvtC8INGB0LvRg9GH0LDQtSDQstC+0L/RgNC+0YEg0L/QvtC60LDQt9GL0LLQsNGC0Ywg0L3QtSDQvdGD0LbQvdC+LCDQutCw0Log0L7RgtCy0LXRgiDQt9Cw0L/QuNGB0YvQstCw0LXQvCAwINC4INC/0LXRgNC10YXQvtC00LjQvCDQvdCwINGB0LvQtdC00YPRjtGJ0LjQuVxyXG4gICAgICB0aGlzLmFuc3dlckZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgYW5zd2VyOiBkZWZhdWx0QW5zd2VyXHJcbiAgICAgIH0sIHtlbWl0RXZlbnQ6IHRydWV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL9GB0L7QsdC40YDQsNC10Lwg0LLRgdC1INC70L7Qs9C40YfQtdGB0LrQuNC1INC/0LXRgNC10LzQtdC90L3Ri9C1LCDQutC+0YLQvtGA0YvQtSDQs9C10L3QtdGA0LjRgiDQstC+0L/RgNC+0YFcclxuICAjZ2V0TG9naWNWYXJzKCk6IFJlY29yZDxzdHJpbmcsIGFueT57XHJcbiAgICBjb25zdCBxdWVzdGlvblR5cGUgPSB0aGlzLnF1ZXN0aW9uKCkuUXVlc3Rpb25UeXBlO1xyXG4gICAgY29uc3QgYW5zd2VyID0gdGhpcy5hbnN3ZXJGb3JtLmNvbnRyb2xzLmFuc3dlci52YWx1ZTtcclxuICAgIGNvbnN0IGxvZ2ljT2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcblxyXG4gICAgLy/Qv9C10YDQtdC80LXQvdC90LDRjyDRgdCw0LzQvtCz0L4g0LLQvtC/0YDQvtGB0LBcclxuICAgIGNvbnN0IHF1ZXN0aW9uU3lzTmFtZSA9IHRoaXMucXVlc3Rpb24oKS5TeXNOYW1lO1xyXG5cclxuICAgIC8v0L7RgtCy0LXRgiDQvdCwINC+0YHQvdC+0LLQvdC+0Lkg0LLQvtC/0YDQvtGBXHJcbiAgICBsb2dpY09ialtxdWVzdGlvblN5c05hbWVdID0gdGhpcy5hbnN3ZXJGb3JtLnZhbHVlLmFuc3dlcjtcclxuXHJcbiAgICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFTUzoge1xyXG4gICAgICAgIC8v0LrQsNC20LTQsNGPINCw0LvRjNGC0LXRgNC90LDRgtC40LLQsCDQuNC80LXQtdGCINGB0LLQvtGOINC/0LXRgNC10LzQtdC90L3Rg9GOLCAxINC90LDQttCw0YLQsCwgMCDQvdC1INC90LDQttCw0YLQsCDQuNC70Lgg0YHQutGA0YvRgtCwKNGB0LrRgNGL0YLQsCDRgdC+0LzQvdC40YLQtdC70YzQvdC+LCDRh9GC0L4g0Y3RgtC+INC/0YDQsNCy0LjQu9GM0L3QvilcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uKCkuQWx0ZXJuYXRpdmVsaXN0LmZvckVhY2goIGFsdCA9PiBsb2dpY09ialtgJHtxdWVzdGlvblN5c05hbWV9JHthbHQuU3lzTmFtZX1gXSA9IGFuc3dlciA9PT0gYWx0LlZhbHVlID8gMSA6IDApOyAvLyDQv9C10YDQtdC80LXQvdC90YvQtSDQsNC70YzRgtC10YDQvdCw0YLQuNCyXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNhc2UgUXVlc3Rpb25zVHlwZS5lcU1TOiB7XHJcbiAgICAgICAgY29uc3QgYW5zd2VycyA9IEFycmF5LmlzQXJyYXkodGhpcy5hbnN3ZXJGb3JtLnZhbHVlLmFuc3dlcikgPyB0aGlzLmFuc3dlckZvcm0udmFsdWUuYW5zd2VyIDogW107XHJcbiAgICAgICAgLy/QutCw0LbQtNCw0Y8g0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwINC40LzQtdC10YIg0YHQstC+0Y4g0L/QtdGA0LXQvNC10L3QvdGD0Y4sIDEg0L3QsNC20LDRgtCwLCAwINC90LUg0L3QsNC20LDRgtCwINC40LvQuCDRgdC60YDRi9GC0LAo0YHQutGA0YvRgtCwINGB0L7QvNC90LjRgtC10LvRjNC90L4sINGH0YLQviDRjdGC0L4g0L/RgNCw0LLQuNC70YzQvdC+KVxyXG4gICAgICAgIHRoaXMucXVlc3Rpb24oKS5BbHRlcm5hdGl2ZWxpc3QuZm9yRWFjaCggYWx0ID0+IGxvZ2ljT2JqW2Ake3F1ZXN0aW9uU3lzTmFtZX0ke2FsdC5TeXNOYW1lfWBdID0gYW5zd2Vycy5maW5kKHZhbCA9PiB2YWwgPT09IGFsdC5WYWx1ZSkgPyAxIDogMCk7IC8vINC/0LXRgNC10LzQtdC90L3Ri9C1INCw0LvRjNGC0LXRgNC90LDRgtC40LJcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxT0w6IHtcclxuICAgICAgICAvL9C70L7Qs9C40YfQtdGB0LrQsNGPINC/0LXRgNC10LzQtdC90L3QsNGPINC00LvRjyBPTCDQstC+0L/RgNC+0YHQsCAtIDEsINCwINC90LUg0YLQviDRh9GC0L4g0LLQstC10LvQuFxyXG4gICAgICAgIGxvZ2ljT2JqW3F1ZXN0aW9uU3lzTmFtZV0gPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFTTDoge1xyXG4gICAgICAgIC8q0KLRg9GCINGB0LvQvtC20L3QtdC1INGH0LXQvCDQsiDQvtGB0YLQsNC70YzQvdGL0YUg0YLQuNC/0LDRhSDQstC+0L/RgNC+0YHQvtCyLlxyXG4gICAgICAgICogMS4g0JvQvtCz0LjRh9C10YHQutCw0Y8g0L/QtdGA0LXQvNC10L3QvdCw0Y8g0LTQu9GPIFNMINCy0L7Qv9GA0L7RgdCwXHJcbiAgICAgICAgKiAyLiDQm9C+0LPQuNGH0LXRgdC60LDRjyDQv9C10YDQtdC80LXQvdC90LDRjyDQtNC70Y8g0LrQsNC20LTQvtC5INGB0LXQutGG0LjQuFxyXG4gICAgICAgICogMy4g0JvQvtCz0LjRh9C10YHQutC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LUg0LTQu9GPINC60LDQttC00L7QuSDQsNC70YzRgtC10YDQvdCw0YLQuNCy0YsgKyDRgdC10LrRhtC40LhcclxuICAgICAgICAqICovXHJcblxyXG4gICAgICAgIC8vMS4g0JvQvtCz0LjRh9C10YHQutCw0Y8g0L/QtdGA0LXQvNC10L3QvdCw0Y8g0LTQu9GPIFNMINCy0L7Qv9GA0L7RgdCwIC0gMSwg0LAg0L3QtSDRgtC+INGH0YLQviDQstCy0LXQu9C4XHJcbiAgICAgICAgbG9naWNPYmpbcXVlc3Rpb25TeXNOYW1lXSA9IDE7XHJcblxyXG4gICAgICAgIC8v0JrQsNC20LTQsNGPINGB0LXQutGG0LjRjyDQtNC+0LvQttC90Ysg0LjQvNC10YLRjCDRgdCy0L7RjiDQu9C+0LPQuNGH0LXRgdC60YPRjiDQv9C10YDQtdC80LXQvdC90YPRjiwgYXJyYXk8bnVtYmVyPiDQtdGB0LvQuCBtdWx0aXNlbGVjdCwgbnVtYmVyINC10YHQu9C4IG11bHRpc2VsZWN0ID0gZmFsc2UsIC05NyDQtdGB0LvQuCDRgdC10LrRhtC40Y8g0L3QtSDQsdGL0LvQsCDQv9C+0LrQsNC30LDQvdCwLlxyXG4gICAgICAgIC8vKyDQtNC70Y8g0LrQsNC20LTQvtC5INGB0LXQutGG0LjQuCDQvdGD0LbQvdC+INC00L7QsdCw0LLQu9GP0YLRjCDQu9C+0LPQuNGH0LXRgdC60LjQtSDQv9C10YDQtdC80LXQvdC90YvQtSDQtNC70Y8g0LrQsNC20LTQvtC5INCw0LvRjNGC0LXRgNC90LDRgtC40LLRiy4gMSDQvdCw0LbQsNGC0LAsIDAg0L7RgtC20LDRgtCwLCAtOTcg0LXRgdC70Lgg0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwINC90LUg0LHRi9C70LAg0L/QvtC60LDQt9Cw0L3QsC5cclxuICAgICAgICBjb25zdCBmdWxsQW5zd2VycyA9IHRoaXMuYW5zd2VyRm9ybS52YWx1ZS5hbnN3ZXIgYXMgQW5zd2VyU2xUeXBlO1xyXG4gICAgICAgIGNvbnN0IHZpc2libGVBbHRlcm5hdGl2ZUxpc3QgPSB0aGlzLnZpc2libGVBbHRlcm5hdGl2ZUxpc3QoKS5tYXAoYWx0ID0+IGFsdC5WYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbigpLlNlY3Rpb25saXN0LmZvckVhY2goc2VjdGlvbiA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzZWN0aW9uU3lzTmFtZSA9IHNlY3Rpb24uU3lzTmFtZTtcclxuXHJcbiAgICAgICAgICAvL9C10YHQu9C4IHVuZGVmaW5lZCwg0YLQviDQt9Cw0LzQtdC90LjQvCDQvdCwIC05NyDRjdGC0L4g0LfQvdCw0YfQuNGCINGB0LXQutGG0LjRjyDQvdC1INCx0YvQu9CwINC/0L7QutCw0LfQsNC90LAuXHJcbiAgICAgICAgICBjb25zdCBzZWN0aW9uQW5zd2VyID0gZnVsbEFuc3dlcnNbc2VjdGlvbi5TZWN0aW9uR3VpZC50b1N0cmluZygpXSA/PyBNSVNTSU5HX1ZBTFVFO1xyXG5cclxuICAgICAgICAgIC8vMi4g0LTQvtCx0LDQstC70Y/QtdC8INC/0LXRgNC10LzQtdC90L3Rg9GOINGB0LDQvNC+0Lkg0YHQtdC60YbQuNC4LlxyXG4gICAgICAgICAgbG9naWNPYmpbc2VjdGlvblN5c05hbWVdID0gc2VjdGlvbkFuc3dlcjtcclxuICAgICAgICAgIHRoaXMucXVlc3Rpb24oKS5BbHRlcm5hdGl2ZWxpc3QuZm9yRWFjaChhbHRlcm5hdGl2ZSA9PiB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uQWx0ZXJuYXRpdmVTeXNOYW1lID0gYCR7c2VjdGlvblN5c05hbWV9JHthbHRlcm5hdGl2ZS5TeXNOYW1lfWA7XHJcbiAgICAgICAgICAgIC8v0YHQtdC60YbQuNGPINC90LUg0LHRi9C70LAg0L/QvtC60LDQt9Cw0L3QsCwg0LfQvdCw0YfQuNGCINCw0LvRjNGC0LXRgNC90LDRgtC40LLRiyDRgtC+0LbQtVxyXG4gICAgICAgICAgICBpZiAoc2VjdGlvbkFuc3dlciA9PT0gTUlTU0lOR19WQUxVRSkgIHtcclxuICAgICAgICAgICAgICBsb2dpY09ialtzZWN0aW9uQWx0ZXJuYXRpdmVTeXNOYW1lXSA9IE1JU1NJTkdfVkFMVUU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy/RgdC90LDRh9Cw0LvQsCDQvdGD0LbQvdC+INC/0YDQvtCy0LXRgNC40YLRjCDQsdGL0LvQsCDQu9C4INC/0L7QutCw0LfQsNC90LAg0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwLCDQtdGB0LvQuCDQvdC10YJcclxuICAgICAgICAgICAgICAvL9Cw0LvRjNGC0LXRgNC90LDRgtC40LLRiyDQvdC10YIg0LIg0YHQv9C40YHQutC1INC/0L7QutCw0LfQsNC90L3Ri9GFXHJcbiAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlQWx0ZXJuYXRpdmVMaXN0LmZpbmQodmlzaWJsZVZhbCA9PiB2aXNpYmxlVmFsID09PSBhbHRlcm5hdGl2ZS5WYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGxvZ2ljT2JqW3NlY3Rpb25BbHRlcm5hdGl2ZVN5c05hbWVdID0gTUlTU0lOR19WQUxVRTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy/QsNC70YzRgtC10YDQvdCw0YLQuNCy0Ysg0LXRgdGC0Ywg0LIg0YHQv9C40YHQutC1INC/0L7QutCw0LfQsNC90L3Ri9GFLCDQvdGD0LbQvdC+INGD0LfQvdCw0YLRjCDQsdGL0LvQsCDQvdCw0LbQsNGC0LAg0LjQu9C4INC90LXRgi5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzUHJlc3NlZCA9IEFycmF5LmlzQXJyYXkoc2VjdGlvbkFuc3dlcikgPyBzZWN0aW9uQW5zd2VyLmluY2x1ZGVzKGFsdGVybmF0aXZlLlZhbHVlKSA6IHNlY3Rpb25BbnN3ZXIgPT09IGFsdGVybmF0aXZlLlZhbHVlO1xyXG4gICAgICAgICAgICAgICAgbG9naWNPYmpbc2VjdGlvbkFsdGVybmF0aXZlU3lzTmFtZV0gPSBpc1ByZXNzZWQgPyAxIDogMDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/Qu9C+0LPQuNGH0LXRgdC60LjQtSDQv9C10YDQtdC80LXQvdC90YvQtSDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9GFINCy0L7Qv9GA0L7RgdC+0LIuXHJcbiAgICB0aGlzLnF1ZXN0aW9uKCkuQWRkaXRpb25hbEFuc3dlcmxpc3QuZm9yRWFjaChhYSA9PiB7XHJcbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxBbnN3ZXIgPSAhIXRoaXMuYW5zd2VyRm9ybS52YWx1ZS5hZGRpdGlvbmFsQW5zd2VycyA/IHRoaXMuYW5zd2VyRm9ybS52YWx1ZS5hZGRpdGlvbmFsQW5zd2VycyFbYWEuVmFsdWUudG9TdHJpbmcoKV0gOiBNSVNTSU5HX1ZBTFVFO1xyXG4gICAgICBjb25zdCBhZGRpdGlvbmFsQW5zd2VyU3lzTmFtZSA9IGAke3F1ZXN0aW9uU3lzTmFtZX0ke2FhLlN5c05hbWV9YDtcclxuICAgICAgaWYgKGFkZGl0aW9uYWxBbnN3ZXIgPT09IE1JU1NJTkdfVkFMVUUpIHtcclxuICAgICAgICAvL9C00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0Lkg0L7RgtCy0LXRgiDQvdC1INCx0YvQuyDQv9C+0LrQsNC30LDQvSwgKNGB0LrRgNGL0YIg0L/QviDQu9C+0LPQuNC60LUpXHJcbiAgICAgICAgbG9naWNPYmpbYWRkaXRpb25hbEFuc3dlclN5c05hbWVdID0gTUlTU0lOR19WQUxVRTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvL9C10YHQu9C4INC90LAg0LLQvtC/0YDQvtGBINC90LUg0L7RgtCy0LXRh9Cw0LvQuChudWxsKSwg0Y3RgtC+0YIg0YHQsNC80YvQuSBudWxsINC4INC00L7QsdCw0LLQu9GP0LXQvCDQutCw0Log0L7RgtCy0LXRgi5cclxuICAgICAgICBpZiAoYWRkaXRpb25hbEFuc3dlciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgbG9naWNPYmpbYWRkaXRpb25hbEFuc3dlclN5c05hbWVdID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy/QtdGB0LvQuCDQstC+0L/RgNC+0YEg0YLQuNC/0LAg0YLQtdC60YHRgiwg0LrQsNC6INC/0LXRgNC10LzQtdC90L3Rg9GOINC00L7QsdCw0LLQuNC8IDEsINCyINC+0YHRgtCw0LvRjNC90YvRhSDRgdC70YPRh9Cw0Y/RhSDRgdCw0Lwg0L7RgtCy0LXRgi5cclxuICAgICAgICAgIGxvZ2ljT2JqW2FkZGl0aW9uYWxBbnN3ZXJTeXNOYW1lXSA9IGFhLkFuc3dlclR5cGUgPT09IEFkZGl0aW9uYWxBbnN3ZXJUeXBlLmFhdFRleHQgPyAxIDogYWRkaXRpb25hbEFuc3dlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxvZ2ljT2JqO1xyXG4gIH1cclxuXHJcbiAgI3VwZGF0ZUFsdGVybmF0aXZlc0FuZFNlY3Rpb25zKCk6IHZvaWR7XHJcbiAgICBjb25zdCBkZXZlbG9wZXJNb2RlID0gdGhpcy5kZXZlbG9wZXJNb2RlKCk7XHJcbiAgICAvL9GE0LjQu9GM0YLRgNGD0LXQvCDQsNC70YzRgtC10YDQvdCw0YLQuNCy0YssXHJcbiAgICBjb25zdCBmaWx0ZXJlZEFsdGVybmF0aXZlTGlzdCA9IHRoaXMucXVlc3Rpb24oKS5BbHRlcm5hdGl2ZWxpc3QuZmlsdGVyKGFsdCA9PiBkZXZlbG9wZXJNb2RlIHx8IHRoaXMuI2xvZ2ljLmV4ZWN1dGVMb2dpYyhhbHQuRW5hYmxlRXhwcmVzc2lvbikpO1xyXG5cclxuICAgIC8v0YTQuNC70YzRgtGA0YPQtdC8INGB0LXQutGG0LjQuCxcclxuICAgIGNvbnN0IGZpbHRlcmVkU2VjdGlvbkxpc3QgPSB0aGlzLnF1ZXN0aW9uKCkuU2VjdGlvbmxpc3QuZmlsdGVyKHNlYyA9PiBkZXZlbG9wZXJNb2RlIHx8IHRoaXMuI2xvZ2ljLmV4ZWN1dGVMb2dpYyhzZWMuRW5hYmxlRXhwcmVzc2lvbikpO1xyXG5cclxuICAgIC8v0LzQtdC90Y/QtdC8INGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtSDRgtC10YUsINC60L7RgtC+0YDRi9C1INGN0YLQvtCz0L4g0YLRgNC10LHRg9GO0YIg0Lgg0L7QsdC90L7QstC70Y/QtdC8INCz0LvQvtCx0LDQu9GM0L3Rg9GOINC/0LXRgNC10LzQtdC90L3Rg9GOXHJcbiAgICB0aGlzLnZpc2libGVBbHRlcm5hdGl2ZUxpc3Quc2V0KHRoaXMuI2FycmFuZ2VSb3RhdGVkTGlzdChmaWx0ZXJlZEFsdGVybmF0aXZlTGlzdCkpO1xyXG4gICAgLy/QtNC70Y8g0YHQtdC60YbQuNC5INGC0L7QttC1INGB0LDQvNC+0LVcclxuICAgIHRoaXMudmlzaWJsZVNlY3Rpb25MaXN0LnNldCh0aGlzLiNhcnJhbmdlUm90YXRlZExpc3QoZmlsdGVyZWRTZWN0aW9uTGlzdCkpO1xyXG4gIH1cclxuXHJcbiAgI3VwZGF0ZUFkZGl0aW9uYWxBbnN3ZXJzKGlzSW5pdDogYm9vbGVhbik6IHZvaWR7XHJcbiAgICBjb25zdCBkZXZlbG9wZXJNb2RlID0gdGhpcy5kZXZlbG9wZXJNb2RlKCk7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSAodGhpcy5hbnN3ZXJGb3JtLmNvbnRyb2xzLmFkZGl0aW9uYWxBbnN3ZXJzIGFzIEZvcm1Hcm91cCk7XHJcblxyXG4gICAgaWYgKGlzSW5pdCkge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uKCkuQWRkaXRpb25hbEFuc3dlcmxpc3QuZm9yRWFjaChhYSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChhYS5BbnN3ZXJUeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIEFkZGl0aW9uYWxBbnN3ZXJUeXBlLmFhdE51bWJlcjogIGZvcm1Hcm91cC5hZGRDb250cm9sKGFhLlZhbHVlLnRvU3RyaW5nKCksIG5ldyBGb3JtQ29udHJvbDxudW1iZXIgIHwgbnVsbD4obnVsbCx7dmFsaWRhdG9yczogW2FkZGl0aW9uYWxBbnN3ZXJEZWZhdWx0VmFsaWRhdG9yKGFhLklzUmVxdWlyZWQpLCBhZGRpdGlvbmFsQW5zd2VyTnVtYmVyVmFsaWRhdG9yKGFhLklzUmVxdWlyZWQsIGFhLk51bWJlck1pblZhbHVlLCBhYS5OdW1iZXJNYXhWYWx1ZSldfSksIHtlbWl0RXZlbnQ6IGZhbHNlfSk7IGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBBZGRpdGlvbmFsQW5zd2VyVHlwZS5hYXRUZXh0OiAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChhYS5WYWx1ZS50b1N0cmluZygpLCBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nICB8IG51bGw+KG51bGwse3ZhbGlkYXRvcnM6IFthZGRpdGlvbmFsQW5zd2VyRGVmYXVsdFZhbGlkYXRvcihhYS5Jc1JlcXVpcmVkKV19KSwge2VtaXRFdmVudDogZmFsc2V9KTsgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEFkZGl0aW9uYWxBbnN3ZXJUeXBlLmFhdEJvb2xlYW46IGZvcm1Hcm91cC5hZGRDb250cm9sKGFhLlZhbHVlLnRvU3RyaW5nKCksIG5ldyBGb3JtQ29udHJvbDxib29sZWFuIHwgbnVsbD4obnVsbCx7dmFsaWRhdG9yczogW2FkZGl0aW9uYWxBbnN3ZXJEZWZhdWx0VmFsaWRhdG9yKGFhLklzUmVxdWlyZWQpXX0pLCB7ZW1pdEV2ZW50OiBmYWxzZX0pOyBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICAvL9GE0LjQu9GM0YLRgNGD0LXQvCxcclxuICAgIGNvbnN0IGZpbHRlcmVkQWRkaXRpb25hbEFuc3dlckxpc3QgPSB0aGlzLnF1ZXN0aW9uKCkuQWRkaXRpb25hbEFuc3dlcmxpc3QuZmlsdGVyKGFkZEFuc3dlciA9PiBkZXZlbG9wZXJNb2RlIHx8IHRoaXMuI2xvZ2ljLmV4ZWN1dGVMb2dpYyhhZGRBbnN3ZXIuRW5hYmxlRXhwcmVzc2lvbikpO1xyXG5cclxuICAgIC8v0L7QsdC90L7QstC70Y/QtdC8INCz0LvQvtCx0LDQu9GM0L3Ri9C5INGB0L/QuNGB0L7QulxyXG4gICAgdGhpcy52aXNpYmxlQWRkaXRpb25hbEFuc3dlckxpc3Quc2V0KGZpbHRlcmVkQWRkaXRpb25hbEFuc3dlckxpc3QpO1xyXG4gIH1cclxuXHJcbiAgb25BbHRlcm5hdGl2ZUNsaWNrKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuI2FsdGVybmF0aXZlU2VxdWVuY2VDbGlja3MucHVzaChbdmFsdWUsIG5ldyBEYXRlKCkuZ2V0VGltZSgpXSk7XHJcbiAgfVxyXG5cclxuICAjYXJyYW5nZVJvdGF0ZWRMaXN0PFQgZXh0ZW5kcyBJZGJBbHRlcm5hdGl2ZSB8IElkYlNlY3Rpb24+KGlucHV0QXJyYXk6IEFycmF5PFQ+KTogQXJyYXkgPFQ+IHtcclxuICAgIC8v0KMg0LrQsNC20LTQvtC5INCw0LvRjNGC0LXRgNC90LDRgtC40LLRiyDQuCDRgdC10LrRhtC40Lgg0LXRgdGC0Ywg0L/RgNC40LfQvdCw0LogUm90YXRpb24sINC60L7RgtC+0YDRi9C5INC/0L7Qt9Cy0L7Qu9GP0LXQvCDQvNC10L3Rj9GC0Ywg0L/QvtGA0Y/QtNC+0Log0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDQsNC70YzRgtC10YDQvdCw0YLQuNCy0Ysg0LjQu9C4INGB0LXQutGG0LjQuFxyXG4gICAgLy/QtdGB0LvQuCDQvtC9IHRydWUsINGC0L4g0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwINC4INGB0LXQutGG0LjRjyDQtNC+0LvQttC90LAg0L/QvtC80LXQvdGP0YLRjCDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LVcclxuICAgIGNvbnN0IHJlc0FycmF5OiBBcnJheTxUIHwgbnVtYmVyPiA9IFtdO1xyXG5cclxuICAgIC8v0YDQsNC30LzQtdGAINC80LDRgdGB0LjQstCwXHJcbiAgICBjb25zdCBpbnB1dEFycmF5TGVuZ3RoID0gaW5wdXRBcnJheS5sZW5ndGg7XHJcblxyXG4gICAgLy/Qv9GA0L7RhdC+0LTQuNC80YHRjyDQv9C+INC60LDQttC00L7QvNGDINGN0LvQtdC80LXQvdGC0YMg0LLRhdC+0LTQvdC+0LPQviDQvNCw0YHRgdC40LLQsCwg0Lgg0LrQvtC/0LjRgNGD0LXQvCDQsiDRgNC10LfRg9C70YzRgtC40YDRg9GO0YnQuNC5LCDQldGB0LvQuCBSb3RhdGlvbiwg0LrQvtC/0LjRgNGD0LXQvCDQtdCz0L4g0LjQvdC00LXQutGBLCDQtdGB0LvQuCBSb3RhdGlvbiDQvdC1INGD0LrQsNC30LDQvSwg0LrQvtC/0LjRgNGD0LXQvCDRgdCw0Lwg0L7QsdGK0LXQutGCXHJcbiAgICBpbnB1dEFycmF5LmZvckVhY2goKG9iaiwgaW5kZXgpID0+IHJlc0FycmF5LnB1c2gob2JqLlJvdGF0aW9uID8gaW5kZXggOiBvYmopKTtcclxuXHJcbiAgICAvL9GC0LXQv9C10YDRjCDRgSDQv9C+0LzQvtGJ0YzRjiDRgNCw0L3QtNC+0LzQsCwg0YDQsNGB0YHRgtCw0LLQuNC8INC+0YHRgtCw0LvRjNC90YvQtSDRjdC7LdGC0YtcclxuICAgIHJlc0FycmF5LmZvckVhY2goKG9iaiwgaW5kZXgsIGFycmF5KSA9PiB7XHJcbiAgICAgIGlmICgodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpICYmIChvYmogPj0gMCkpIHtcclxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgLy/QtdGB0LvQuCDQsiDQvdC+0LLQvtC8INC80LDRgdGB0LjQstC1INC90LXRgiDRjdC70LXQvNC10L3RgtCwINC40Lcg0YHRgtCw0YDQvtCz0L4g0LzQsNGB0YHQuNCy0LAg0L/QviByYW5kb20g0LjQvdC00LXQutGB0YMsINGC0L7Qs9C00LAg0LrQvtC/0LjRgNGD0LXQvCDQsiDQvdC+0LLRi9C5INC80LDRgdGB0LjQsiDRgdGC0LDRgNGL0Lkg0LXQu9C10LzQtdC90YIg0LIg0L3QvtCy0YvQuSDQsNC00YDQtdGBXHJcbiAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IE1hdGguZmxvb3IoIE1hdGgucmFuZG9tKCkgKiBpbnB1dEFycmF5TGVuZ3RoICk7XHJcbiAgICAgICAgICBpZiAoYXJyYXkuaW5kZXhPZihpbnB1dEFycmF5W25ld0luZGV4XSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGFycmF5W2luZGV4XSA9IGlucHV0QXJyYXlbbmV3SW5kZXhdO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc0FycmF5IGFzIEFycmF5PFQ+O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW1haW5cIiBbZm9ybUdyb3VwXT1cImFuc3dlckZvcm1cIj5cclxuIEBzd2l0Y2ggKHF1ZXN0aW9uKCkuUXVlc3Rpb25UeXBlKSB7XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxTEFORykge1xyXG4gICA8dHAtc3VydmV5LWFuc3dlci1sYW5nXHJcbiAgIFtsYW5ndWFnZUxpc3RdPVwibGFuZ3VhZ2VMaXN0KClcIlxyXG4gICBbZmluZFZhcmlhYmxlXT1cImZpbmRWYXJpYWJsZSgpXCJcclxuICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICBbbGFuZ3VhZ2VdPVwiMlwiXHJcbiAgIFt2aWV3TW9kZWxdPVwidmlld01vZGVsKClcIlxyXG4gICAob25MYW5ndWFnZUNoYW5nZSk9XCJvbkxhbmd1YWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxSU5GTykge1xyXG4gICA8dHAtc3VydmV5LWFuc3dlci1pbmZvXHJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJcIlxyXG4gICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICAgW2ZpbmRWYXJpYWJsZV09XCJmaW5kVmFyaWFibGUoKVwiXHJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2UoKVwiXHJcbiAgICBbdmlld01vZGVsXT1cInZpZXdNb2RlbCgpXCIvPlxyXG4gIH1cclxuXHJcbiAgQGNhc2UgKHF1ZXN0aW9uc1R5cGUuZXFTUykge1xyXG4gICA8dHAtc3VydmV5LWFuc3dlci1zc1xyXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyXCJcclxuICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvbigpXCJcclxuICAgIFtsYW5ndWFnZV09XCJsYW5ndWFnZSgpXCJcclxuICAgIFt2aWV3TW9kZWxdPVwidmlld01vZGVsKClcIlxyXG4gICAgW2ZpbmRWYXJpYWJsZV09XCJmaW5kVmFyaWFibGUoKVwiXHJcbiAgICBbcmVwb3NpdG9yeVBhdGhdPVwicmVwb3NpdG9yeVBhdGgoKVwiXHJcbiAgICBbYWx0ZXJuYXRpdmVMaXN0XT1cInZpc2libGVBbHRlcm5hdGl2ZUxpc3QoKVwiXHJcbiAgICAob25BbHRlcm5hdGl2ZUNsaWNrKT1cIm9uQWx0ZXJuYXRpdmVDbGljaygkZXZlbnQpXCJcclxuICAgLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxTVMpIHtcclxuICAgPHRwLXN1cnZleS1hbnN3ZXItbXNcclxuICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiXHJcbiAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb24oKVwiXHJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2UoKVwiXHJcbiAgICBbdmlld01vZGVsXT1cInZpZXdNb2RlbCgpXCJcclxuICAgIFtmaW5kVmFyaWFibGVdPVwiZmluZFZhcmlhYmxlKClcIlxyXG4gICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICAgW2FsdGVybmF0aXZlTWF4QW5zd2Vyc0NvdW50XT1cInF1ZXN0aW9uKCkuQWx0ZXJuYXRpdmVNYXhBbnN3ZXJzQ291bnRcIlxyXG4gICAgW2FsdGVybmF0aXZlTGlzdF09XCJ2aXNpYmxlQWx0ZXJuYXRpdmVMaXN0KClcIlxyXG4gICAgKG9uQWx0ZXJuYXRpdmVDbGljayk9XCJvbkFsdGVybmF0aXZlQ2xpY2soJGV2ZW50KVwiLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxT0QpIHtcclxuICAgPHRwLXN1cnZleS1hbnN3ZXItb2RcclxuICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiXHJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2UoKVwiXHJcbiAgICBbdmlld01vZGVsXT1cInZpZXdNb2RlbCgpXCJcclxuICAgIFtmaW5kVmFyaWFibGVdPVwiZmluZFZhcmlhYmxlKClcIlxyXG4gICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICAgW21pblZhbHVlXT1cInF1ZXN0aW9uKCkuT0RNaW5WYWx1ZVwiXHJcbiAgICBbbWF4VmFsdWVdPVwicXVlc3Rpb24oKS5PRE1heFZhbHVlXCJcclxuICAgLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxT0wpIHtcclxuICAgPHRwLXN1cnZleS1hbnN3ZXItb2xcclxuICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiXHJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2UoKVwiXHJcbiAgICBbdmlld01vZGVsXT1cInZpZXdNb2RlbCgpXCJcclxuICAgIFtyZXBvc2l0b3J5UGF0aF09XCJyZXBvc2l0b3J5UGF0aCgpXCJcclxuICAgIFtmaW5kVmFyaWFibGVdPVwiZmluZFZhcmlhYmxlKClcIlxyXG4gICAgW3RlbGVwaG9uZUlucHV0XT1cInF1ZXN0aW9uKCkuT0xUeXBlVGVsXCJcclxuICAgLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxU0wpIHtcclxuICAgPHRwLXN1cnZleS1hbnN3ZXItc2xcclxuICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiXHJcbiAgICBbYWx0ZXJuYXRpdmVMaXN0XT1cInZpc2libGVBbHRlcm5hdGl2ZUxpc3QoKVwiXHJcbiAgICBbc2VjdGlvbkxpc3RdPVwidmlzaWJsZVNlY3Rpb25MaXN0KClcIlxyXG4gICAgW211bHRpU2VsZWN0XT1cInF1ZXN0aW9uKCkuTXVsdGlTZWxlY3RcIlxyXG4gICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlKClcIlxyXG4gICAgW3ZpZXdNb2RlbF09XCJ2aWV3TW9kZWwoKVwiXHJcbiAgICBbcmVwb3NpdG9yeVBhdGhdPVwicmVwb3NpdG9yeVBhdGgoKVwiXHJcbiAgICBbZmluZFZhcmlhYmxlXT1cImZpbmRWYXJpYWJsZSgpXCJcclxuICAgIFttYXhDb3VudF09XCJ0aGlzLnF1ZXN0aW9uKCkuU0xTZWN0aW9uTWF4QW5zd2Vyc0NvdW50XCJcclxuICAgLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxRU5EKSB7XHJcbiAgIDx0cC1zdXJ2ZXktYW5zd2VyLWVuZFxyXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyXCJcclxuICAgIFtmaW5kVmFyaWFibGVdPVwiZmluZFZhcmlhYmxlKClcIlxyXG4gICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlKClcIlxyXG4gICAgW3ZpZXdNb2RlbF09XCJ2aWV3TW9kZWwoKVwiXHJcbiAgIC8+XHJcbiAgfVxyXG4gfVxyXG5cclxuIDxkaXYgY2xhc3M9XCJjb250YWluZXItYWRkaXRpb25hbC1hbnN3ZXJcIj5cclxuICAgQGZvciAoYWRkQW5zd2VyIG9mIGFuc3dlckZvcm0uY29udHJvbHMuYWRkaXRpb25hbEFuc3dlcnMuY29udHJvbHMgfCBrZXlWYWx1ZXM7IHRyYWNrIGFkZEFuc3dlcikge1xyXG4gICAgQGlmIChhZGRBbnN3ZXIubmFtZSB8IGdldEFkZGl0aW9uYWxWYWx1ZUJ5VmFsdWU6dmlzaWJsZUFkZGl0aW9uYWxBbnN3ZXJMaXN0KCk7IGFzIGFkZGl0aW9uYWxBbnN3ZXJPYmplY3QgKSB7XHJcbiAgICAgPHRwLXN1cnZleS1hbnN3ZXItYWRkaXRpb25hbFxyXG4gICAgICBbY29udHJvbF09XCJhZGRBbnN3ZXIuY29udHJvbFwiXHJcbiAgICAgIFtjbGFzcy5mdWxsLXdpZHRoXT1cImFkZGl0aW9uYWxBbnN3ZXJPYmplY3QuQW5zd2VyVHlwZT09PUFkZGl0aW9uYWxBbnN3ZXJUeXBlLmFhdFRleHRcIlxyXG4gICAgICBbYW5zd2VyVHlwZV09XCJhZGRpdGlvbmFsQW5zd2VyT2JqZWN0LkFuc3dlclR5cGVcIlxyXG4gICAgICBbY2FwdGlvbl09XCJhZGRpdGlvbmFsQW5zd2VyT2JqZWN0Lk11bHRpTGFuZ0NhcHRpb25zIHwgbXVsdGlMYW5nT2JqZWN0VG9IdG1sOmxhbmd1YWdlKClcIlxyXG4gICAgICBbbnVtYmVyTWluVmFsdWVdPVwiYWRkaXRpb25hbEFuc3dlck9iamVjdC5OdW1iZXJNaW5WYWx1ZVwiXHJcbiAgICAgIFtudW1iZXJNYXhWYWx1ZV09XCJhZGRpdGlvbmFsQW5zd2VyT2JqZWN0Lk51bWJlck1heFZhbHVlXCJcclxuICAgICAgW3RleHRNdWx0aWxpbmVdPVwiYWRkaXRpb25hbEFuc3dlck9iamVjdC5UZXh0TXVsdGlsaW5lXCJcclxuICAgICAgW2NhcHRpb25Qb3NpdGlvbl09XCJhZGRpdGlvbmFsQW5zd2VyT2JqZWN0LkNhcHRpb25Qb3NpdGlvblwiLz5cclxuICAgIH1cclxuICAgfVxyXG4gPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmFuc3dlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cC5zdXJ2ZXkvc3JjL2xpYi9jb21wb25lbnQvYW5zd2VyL2NvbnRhaW5lci5hbnN3ZXIvY29udGFpbmVyLmFuc3dlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cC5zdXJ2ZXkvc3JjL2xpYi9jb21wb25lbnQvYW5zd2VyL2NvbnRhaW5lci5hbnN3ZXIvY29udGFpbmVyLmFuc3dlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQywrQkFBK0IsRUFDL0Isc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDakgsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDM0YsT0FBTyxFQUFD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QixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsNkJBQTZCO3dCQUM3QixhQUFhO3dCQUNiLG1CQUFtQjtxQkFDcEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBhZGRpdGlvbmFsQW5zd2VyRGVmYXVsdFZhbGlkYXRvcixcclxuICBhZGRpdGlvbmFsQW5zd2VyTnVtYmVyVmFsaWRhdG9yLFxyXG4gIGFuc3dlckRlZmF1bHRWYWxpZGF0b3IsXHJcbiAgYW5zd2VyTVNWYWxpZGF0b3IsXHJcbiAgYW5zd2VyT0RWYWxpZGF0b3IsXHJcbiAgYW5zd2VyT0xWYWxpZGF0b3IsXHJcbiAgYW5zd2VyU2xWYWxpZGF0b3IsXHJcbiAgYW5zd2VyU1NWYWxpZGF0b3JcclxufSBmcm9tICcuL2NvbnRhaW5lci5hbnN3ZXIudmFsaWRhdG9yJztcclxuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtBbnN3ZXJTU0NvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLnNzL2Fuc3dlci5zcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Fuc3dlckluZm9Db21wb25lbnR9IGZyb20gJy4uL2Fuc3dlci5pbmZvL2Fuc3dlci5pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7QW5zd2VyTVNDb21wb25lbnR9IGZyb20gJy4uL2Fuc3dlci5tcy9hbnN3ZXIubXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtLZXlWYWx1ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TXVsdGlMYW5nT2JqZWN0VG9IdG1sUGlwZX0gZnJvbSAnLi4vLi4vLi4vcGlwZS9tdWx0aS5sYW5nLm9iamVjdC50by5odG1sL211bHRpLmxhbmcub2JqZWN0LnRvLmh0bWwucGlwZSc7XHJcbmltcG9ydCB7QW5zd2VyQWRkaXRpb25hbENvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLmFkZGl0aW9uYWwvYW5zd2VyLmFkZGl0aW9uYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHtBbnN3ZXJFbmRDb21wb25lbnR9IGZyb20gJy4uL2Fuc3dlci5lbmQvYW5zd2VyLmVuZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtBbnN3ZXJPTENvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLm9sL2Fuc3dlci5vbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Fuc3dlclNMQ29tcG9uZW50fSBmcm9tICcuLi9hbnN3ZXIuc2wvYW5zd2VyLnNsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0FkZGl0aW9uYWxBbnN3ZXIsIEFuc3dlclNsVHlwZSwgQW5zd2VyVCwgVEZpbmRWYXJpYWJsZVZvaWR9IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS50eXBlJztcclxuaW1wb3J0IHtBbnN3ZXJPRENvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLm9kL2Fuc3dlci5vZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Fuc3dlckNoYW5nZSwgSUN1cnJlbnRRdWVzdGlvbkFuc3dlciwgSWRiQWRkaXRpb25hbEFuc3dlciwgSWRiQWx0ZXJuYXRpdmUsIElkYkJhc2VQYXJhbXNMYW5ndWFnZSwgSWRiUXVlc3Rpb24sIElkYlNlY3Rpb259IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0FkZGl0aW9uYWxBbnN3ZXJUeXBlLCBRdWVzdGlvbnNUeXBlLCBWaWV3TW9kZWx9IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS5lbnVtJztcclxuaW1wb3J0IHtUcFN1cnZleUxvZ2ljU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS90cC5zdXJ2ZXkubG9naWMvdHAuc3VydmV5LmxvZ2ljLnNlcnZpY2UnO1xyXG5pbXBvcnQge01JU1NJTkdfVkFMVUV9IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS5jb25zdCc7XHJcbmltcG9ydCB7R2V0QWRkaXRpb25hbFZhbHVlQnlWYWx1ZVBpcGV9IGZyb20gJy4uLy4uLy4uL3BpcGUvZ2V0LmFkZGl0aW9uYWwudmFsdWUuYnkudmFsdWUvZ2V0LmFkZGl0aW9uYWwudmFsdWUuYnkudmFsdWUucGlwZSc7XHJcbmltcG9ydCB7S2V5VmFsdWVzUGlwZX0gZnJvbSAnLi4vLi4vLi4vcGlwZS9rZXkudmFsdWVzL2tleS52YWx1ZXMucGlwZSc7XHJcbmltcG9ydCB7QW5zd2VyTGFuZ0NvbXBvbmVudH0gZnJvbSAnLi4vYW5zd2VyLmxhbmcvYW5zd2VyLmxhbmcuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBJQW5zd2VyRm9ybSB7XHJcbiAgYW5zd2VyOiBGb3JtQ29udHJvbDxBbnN3ZXJUPjtcclxuICBhZGRpdGlvbmFsQW5zd2VyczogRm9ybUdyb3VwPHtcclxuICAgIFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sPEFkZGl0aW9uYWxBbnN3ZXI+XHJcbiAgfT47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHAtc3VydmV5LWNvbnRhaW5lci1hbnN3ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQW5zd2VyT0RDb21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQW5zd2VyU1NDb21wb25lbnQsXHJcbiAgICBBbnN3ZXJJbmZvQ29tcG9uZW50LFxyXG4gICAgQW5zd2VyTVNDb21wb25lbnQsXHJcbiAgICBBbnN3ZXJBZGRpdGlvbmFsQ29tcG9uZW50LFxyXG4gICAgS2V5VmFsdWVQaXBlLFxyXG4gICAgTXVsdGlMYW5nT2JqZWN0VG9IdG1sUGlwZSxcclxuICAgIEFuc3dlckVuZENvbXBvbmVudCxcclxuICAgIEFuc3dlck9MQ29tcG9uZW50LFxyXG4gICAgQW5zd2VyU0xDb21wb25lbnQsXHJcbiAgICBHZXRBZGRpdGlvbmFsVmFsdWVCeVZhbHVlUGlwZSxcclxuICAgIEtleVZhbHVlc1BpcGUsXHJcbiAgICBBbnN3ZXJMYW5nQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29udGFpbmVyLmFuc3dlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvbnRhaW5lci5hbnN3ZXIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250YWluZXJBbnN3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgZmluZFZhcmlhYmxlID0gaW5wdXQucmVxdWlyZWQ8VEZpbmRWYXJpYWJsZVZvaWQ+KCk7XHJcbiAgcXVlc3Rpb24gPSBpbnB1dC5yZXF1aXJlZDxJZGJRdWVzdGlvbj4oKTtcclxuICBsYW5ndWFnZSA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICB2aWV3TW9kZWwgPSBpbnB1dC5yZXF1aXJlZDxWaWV3TW9kZWw+KCk7XHJcbiAgYW5zd2VycyA9IGlucHV0PElDdXJyZW50UXVlc3Rpb25BbnN3ZXI+KCk7XHJcbiAgZGV2ZWxvcGVyTW9kZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBsYW5ndWFnZUxpc3QgPSBpbnB1dC5yZXF1aXJlZDxBcnJheTxJZGJCYXNlUGFyYW1zTGFuZ3VhZ2U+PigpO1xyXG4gIHJlcG9zaXRvcnlQYXRoID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgdmlzaWJsZUFsdGVybmF0aXZlTGlzdCA9IHNpZ25hbDxBcnJheTxJZGJBbHRlcm5hdGl2ZT4+KFtdKTtcclxuICB2aXNpYmxlU2VjdGlvbkxpc3QgPSBzaWduYWw8QXJyYXk8SWRiU2VjdGlvbj4+KFtdKTtcclxuICB2aXNpYmxlQWRkaXRpb25hbEFuc3dlckxpc3QgPSBzaWduYWw8QXJyYXk8SWRiQWRkaXRpb25hbEFuc3dlcj4+KFtdKTtcclxuICBsb2dpY0NoYW5nZWQgPSBvdXRwdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4oKTtcclxuICBhbnN3ZXJDaGFuZ2VkID0gb3V0cHV0PEFuc3dlckNoYW5nZT4oKTtcclxuICBvbkxhbmd1YWdlQ2hhbmdlID0gb3V0cHV0PG51bWJlcj4oKTtcclxuXHJcbiAgcXVlc3Rpb25zVHlwZSA9IFF1ZXN0aW9uc1R5cGU7XHJcbiAgYW5zd2VyRm9ybTogRm9ybUdyb3VwPElBbnN3ZXJGb3JtPjtcclxuICByZWFkb25seSBBZGRpdGlvbmFsQW5zd2VyVHlwZSA9IEFkZGl0aW9uYWxBbnN3ZXJUeXBlO1xyXG4gICNhbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzOiBBcnJheTxbbnVtYmVyLCBudW1iZXJdPiA9IFtdO1xyXG4gIHJlYWRvbmx5ICNsb2dpYyA9IGluamVjdChUcFN1cnZleUxvZ2ljU2VydmljZSk7XHJcbiAgcmVhZG9ubHkgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5hbnN3ZXJGb3JtID0gbmV3IEZvcm1Hcm91cDxJQW5zd2VyRm9ybT4oe1xyXG4gICAgICBhbnN3ZXI6IG5ldyBGb3JtQ29udHJvbDxBbnN3ZXJUPihudWxsICksXHJcbiAgICAgIGFkZGl0aW9uYWxBbnN3ZXJzOiBuZXcgRm9ybUdyb3VwKHt9KSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhbnN3ZXJWYWx1ZSA9IHRoaXMuYW5zd2VycygpPy5xdWVzdGlvbj8uQW5zd2VyVmFsdWUgPz8gbnVsbDtcclxuICAgIGNvbnN0IGFuc3dlclZhbHVlQ2xlYXIgPSBhbnN3ZXJWYWx1ZSA9PT0gTUlTU0lOR19WQUxVRSA/IG51bGwgOiBhbnN3ZXJWYWx1ZTtcclxuICAgIHRoaXMuYW5zd2VyRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgYW5zd2VyOiBhbnN3ZXJWYWx1ZUNsZWFyLFxyXG4gICAgICBhZGRpdGlvbmFsQW5zd2VyczogdGhpcy5hbnN3ZXJzKCk/LnF1ZXN0aW9uPy5BbnN3ZXJBZGRpdGlvbmFsXHJcbiAgICB9LCB7ZW1pdEV2ZW50OmZhbHNlfSk7XHJcblxyXG4gICAgdGhpcy4jYWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcyA9IHRoaXMuYW5zd2VycygpPy5xdWVzdGlvbj8uQWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrcyA/PyBbXTtcclxuICAgIHRoaXMuI3VwZGF0ZUFsdGVybmF0aXZlc0FuZFNlY3Rpb25zKCk7XHJcbiAgICB0aGlzLiN1cGRhdGVBZGRpdGlvbmFsQW5zd2Vycyh0cnVlKTtcclxuICAgIHRoaXMuI2FkZFZhbGlkYXRvcigpO1xyXG5cclxuICAgIHRoaXMuYW5zd2VyRm9ybS52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcclxuICAgICB0YXAoKCkgPT4gdGhpcy5sb2dpY0NoYW5nZWQuZW1pdCh0aGlzLiNnZXRMb2dpY1ZhcnMoKSkpLCAvL9GI0LvRkdC8INC90L7QstGL0LUg0LvQvtCz0LjRh9C10YHQutC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LUo0LzQvtC20LXRgiDQvtCx0L3QvtCy0LjRgtGM0YHRjyDRgdC/0LjRgdC+0LogYWRkaXRpb25hbEFuc3dlcnMpXHJcbiAgICAgdGFwKCgpID0+IHRoaXMuI3VwZGF0ZUFkZGl0aW9uYWxBbnN3ZXJzKGZhbHNlKSksIC8v0L/QtdGA0LXRgdGC0YDQsNC40LLQsNC10LwgYWRkaXRpb25hbEFuc3dlcnNcclxuICAgICBtYXAodmFsdWVzID0+IHtcclxuICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9ICh0aGlzLmFuc3dlckZvcm0uY29udHJvbHMuYWRkaXRpb25hbEFuc3dlcnMgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgIGNvbnN0IGFkZGl0aW9uYWxBbnN3ZXJOb3JtYWxpemVkOiBSZWNvcmQ8bnVtYmVyLCBBZGRpdGlvbmFsQW5zd2VyPiA9IHt9O1xyXG4gICAgICAgdGhpcy5xdWVzdGlvbigpLkFkZGl0aW9uYWxBbnN3ZXJsaXN0LmZvckVhY2goYWEgPT4ge1xyXG4gICAgICAgICBjb25zdCBpc1Zpc2libGUgPSB0aGlzLnZpc2libGVBZGRpdGlvbmFsQW5zd2VyTGlzdCgpLmZpbmQoZmFhID0+IGZhYS5WYWx1ZSA9PT0gYWEuVmFsdWUpO1xyXG4gICAgICAgICBpZiAoaXNWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgYWRkaXRpb25hbEFuc3dlck5vcm1hbGl6ZWRbYWEuVmFsdWVdID0gISF2YWx1ZXMuYWRkaXRpb25hbEFuc3dlcnMgPyB2YWx1ZXMuYWRkaXRpb25hbEFuc3dlcnNbYWEuVmFsdWVdISA6IE1JU1NJTkdfVkFMVUU7XHJcbiAgICAgICAgICAgZm9ybUdyb3VwLmdldChhYS5WYWx1ZS50b1N0cmluZygpKT8uZW5hYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSlcclxuICAgICAgICAgfSBlbHNlICB7XHJcbiAgICAgICAgICAgYWRkaXRpb25hbEFuc3dlck5vcm1hbGl6ZWRbYWEuVmFsdWVdID0gTUlTU0lOR19WQUxVRTtcclxuICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KGFhLlZhbHVlLnRvU3RyaW5nKCkpPy5kaXNhYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSlcclxuICAgICAgICAgfVxyXG4gICAgICAgfSk7XHJcbiAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICBhbnN3ZXI6dmFsdWVzLmFuc3dlcixcclxuICAgICAgICAgYWRkaXRpb25hbEFuc3dlcnM6IGFkZGl0aW9uYWxBbnN3ZXJOb3JtYWxpemVkLFxyXG4gICAgICAgfVxyXG4gICAgIH0pLFxyXG4gICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuYW5zd2VyQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICBndWlkOiB0aGlzLnF1ZXN0aW9uKCkuUXVlc3Rpb25HdWlkLFxyXG4gICAgICAgIGlzQ29tcGxldGU6IHRoaXMuYW5zd2VyRm9ybS52YWxpZCxcclxuICAgICAgICBhbnN3ZXI6IGRhdGEuYW5zd2VyISxcclxuICAgICAgICBhZGRpdGlvbmFsQW5zd2VyczogZGF0YS5hZGRpdGlvbmFsQW5zd2VycyBhcyBSZWNvcmQ8bnVtYmVyLCBBZGRpdGlvbmFsQW5zd2VyPixcclxuICAgICAgICBsb2dpY1ZhcnM6IHRoaXMuI2dldExvZ2ljVmFycygpLFxyXG4gICAgICAgIHZpZXdlZEFsdGVybmF0aXZlVmFsdWVzOiB0aGlzLnZpc2libGVBbHRlcm5hdGl2ZUxpc3QoKS5tYXAoYWx0ID0+IGFsdC5WYWx1ZSksXHJcbiAgICAgICAgdmlld2VkU2VjdGlvbkd1aWRzOiAgdGhpcy52aXNpYmxlU2VjdGlvbkxpc3QoKS5tYXAoYWx0ID0+IGFsdC5TZWN0aW9uR3VpZCksXHJcbiAgICAgICAgYWx0ZXJuYXRpdmVTZXF1ZW5jZUNsaWNrczogQXJyYXkuZnJvbSh0aGlzLiNhbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzKVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy4jc2V0RGVmYXVsdEFuc3dlcnMoKTtcclxuICB9XHJcblxyXG4gICNhZGRWYWxpZGF0b3IoKTogdm9pZHtcclxuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5xdWVzdGlvbigpO1xyXG4gICAgdGhpcy5hbnN3ZXJGb3JtLmNvbnRyb2xzLmFuc3dlci5hZGRWYWxpZGF0b3JzKGFuc3dlckRlZmF1bHRWYWxpZGF0b3IoKSk7XHJcblxyXG4gICAgc3dpdGNoIChxdWVzdGlvbi5RdWVzdGlvblR5cGUpe1xyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFTUzoge1xyXG4gICAgICAgIHRoaXMuYW5zd2VyRm9ybS5jb250cm9scy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhhbnN3ZXJTU1ZhbGlkYXRvcigpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxTVM6IHtcclxuICAgICAgICB0aGlzLmFuc3dlckZvcm0uY29udHJvbHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoYW5zd2VyTVNWYWxpZGF0b3IodGhpcy52aXNpYmxlQWx0ZXJuYXRpdmVMaXN0KCkubGVuZ3RoLCAgdGhpcy5xdWVzdGlvbigpLkFsdGVybmF0aXZlTWluQW5zd2Vyc0NvdW50LCB0aGlzLnF1ZXN0aW9uKCkuQWx0ZXJuYXRpdmVNYXhBbnN3ZXJzQ291bnQpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxT0Q6IHtcclxuICAgICAgICB0aGlzLmFuc3dlckZvcm0uY29udHJvbHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoYW5zd2VyT0RWYWxpZGF0b3IocXVlc3Rpb24uT0RNaW5WYWx1ZSwgcXVlc3Rpb24uT0RNYXhWYWx1ZSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFPTDoge1xyXG4gICAgICAgIHRoaXMuYW5zd2VyRm9ybS5jb250cm9scy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhhbnN3ZXJPTFZhbGlkYXRvcihxdWVzdGlvbi5PTFR5cGVUZWwpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxU0w6IHtcclxuICAgICAgICB0aGlzLmFuc3dlckZvcm0uY29udHJvbHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoYW5zd2VyU2xWYWxpZGF0b3IodGhpcy5xdWVzdGlvbigpLlJlcXVpcmVBbGxBbnN3ZXJzLCB0aGlzLnF1ZXN0aW9uKCkuU0xTZWN0aW9uTWluQW5zd2Vyc0NvdW50LCB0aGlzLnZpc2libGVTZWN0aW9uTGlzdCgpKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICNzZXREZWZhdWx0QW5zd2VycygpOiB2b2lke1xyXG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uKCk7XHJcbiAgICBjb25zdCBpc0xhbmcgPSBxdWVzdGlvbi5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFMQU5HO1xyXG4gICAgY29uc3QgaXNJbmZvID0gcXVlc3Rpb24uUXVlc3Rpb25UeXBlID09PSBRdWVzdGlvbnNUeXBlLmVxSU5GTztcclxuICAgIGNvbnN0IGlzRW5kICA9IHF1ZXN0aW9uLlF1ZXN0aW9uVHlwZSA9PT0gUXVlc3Rpb25zVHlwZS5lcUVORDtcclxuICAgIGNvbnN0IGlzU1NNUyA9IChxdWVzdGlvbi5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFTUyB8fCBxdWVzdGlvbi5RdWVzdGlvblR5cGUgPT09IFF1ZXN0aW9uc1R5cGUuZXFNUykgJiYgKHRoaXMudmlzaWJsZUFsdGVybmF0aXZlTGlzdCgpLmxlbmd0aCA9PT0gMCk7XHJcblxyXG4gICAgaWYgKGlzSW5mbyB8fCBpc0VuZCB8fCBpc1NTTVMgfHwgaXNMYW5nKSB7XHJcbiAgICAgIGxldCBkZWZhdWx0QW5zd2VyO1xyXG4gICAgICBzd2l0Y2ggKHF1ZXN0aW9uLlF1ZXN0aW9uVHlwZSkge1xyXG4gICAgICAgIGNhc2UgUXVlc3Rpb25zVHlwZS5lcU1TOiBkZWZhdWx0QW5zd2VyID0gW107IGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUXVlc3Rpb25zVHlwZS5lcVNTOiBkZWZhdWx0QW5zd2VyID0gMDsgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDogZGVmYXVsdEFuc3dlciA9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v0LzQvtC20LXRgiDQstC+0LfQvdC40LrQvdGD0YLRjCDRgdC40YLRg9Cw0YbQuNGPLCDQutC+0LPQtNCwINC90LXRgiDQsNC70YzRgtC10YDQvdCw0YLQuNCyINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPLtCyINGN0YLQvtC8INGB0LvRg9GH0LDQtSDQstC+0L/RgNC+0YEg0L/QvtC60LDQt9GL0LLQsNGC0Ywg0L3QtSDQvdGD0LbQvdC+LCDQutCw0Log0L7RgtCy0LXRgiDQt9Cw0L/QuNGB0YvQstCw0LXQvCAwINC4INC/0LXRgNC10YXQvtC00LjQvCDQvdCwINGB0LvQtdC00YPRjtGJ0LjQuVxyXG4gICAgICB0aGlzLmFuc3dlckZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgYW5zd2VyOiBkZWZhdWx0QW5zd2VyXHJcbiAgICAgIH0sIHtlbWl0RXZlbnQ6IHRydWV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL9GB0L7QsdC40YDQsNC10Lwg0LLRgdC1INC70L7Qs9C40YfQtdGB0LrQuNC1INC/0LXRgNC10LzQtdC90L3Ri9C1LCDQutC+0YLQvtGA0YvQtSDQs9C10L3QtdGA0LjRgiDQstC+0L/RgNC+0YFcclxuICAjZ2V0TG9naWNWYXJzKCk6IFJlY29yZDxzdHJpbmcsIGFueT57XHJcbiAgICBjb25zdCBxdWVzdGlvblR5cGUgPSB0aGlzLnF1ZXN0aW9uKCkuUXVlc3Rpb25UeXBlO1xyXG4gICAgY29uc3QgYW5zd2VyID0gdGhpcy5hbnN3ZXJGb3JtLmNvbnRyb2xzLmFuc3dlci52YWx1ZTtcclxuICAgIGNvbnN0IGxvZ2ljT2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcblxyXG4gICAgLy/Qv9C10YDQtdC80LXQvdC90LDRjyDRgdCw0LzQvtCz0L4g0LLQvtC/0YDQvtGB0LBcclxuICAgIGNvbnN0IHF1ZXN0aW9uU3lzTmFtZSA9IHRoaXMucXVlc3Rpb24oKS5TeXNOYW1lO1xyXG5cclxuICAgIC8v0L7RgtCy0LXRgiDQvdCwINC+0YHQvdC+0LLQvdC+0Lkg0LLQvtC/0YDQvtGBXHJcbiAgICBsb2dpY09ialtxdWVzdGlvblN5c05hbWVdID0gdGhpcy5hbnN3ZXJGb3JtLnZhbHVlLmFuc3dlcjtcclxuXHJcbiAgICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFTUzoge1xyXG4gICAgICAgIC8v0LrQsNC20LTQsNGPINCw0LvRjNGC0LXRgNC90LDRgtC40LLQsCDQuNC80LXQtdGCINGB0LLQvtGOINC/0LXRgNC10LzQtdC90L3Rg9GOLCAxINC90LDQttCw0YLQsCwgMCDQvdC1INC90LDQttCw0YLQsCDQuNC70Lgg0YHQutGA0YvRgtCwKNGB0LrRgNGL0YLQsCDRgdC+0LzQvdC40YLQtdC70YzQvdC+LCDRh9GC0L4g0Y3RgtC+INC/0YDQsNCy0LjQu9GM0L3QvilcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uKCkuQWx0ZXJuYXRpdmVsaXN0LmZvckVhY2goIGFsdCA9PiBsb2dpY09ialtgJHtxdWVzdGlvblN5c05hbWV9JHthbHQuU3lzTmFtZX1gXSA9IGFuc3dlciA9PT0gYWx0LlZhbHVlID8gMSA6IDApOyAvLyDQv9C10YDQtdC80LXQvdC90YvQtSDQsNC70YzRgtC10YDQvdCw0YLQuNCyXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNhc2UgUXVlc3Rpb25zVHlwZS5lcU1TOiB7XHJcbiAgICAgICAgY29uc3QgYW5zd2VycyA9IEFycmF5LmlzQXJyYXkodGhpcy5hbnN3ZXJGb3JtLnZhbHVlLmFuc3dlcikgPyB0aGlzLmFuc3dlckZvcm0udmFsdWUuYW5zd2VyIDogW107XHJcbiAgICAgICAgLy/QutCw0LbQtNCw0Y8g0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwINC40LzQtdC10YIg0YHQstC+0Y4g0L/QtdGA0LXQvNC10L3QvdGD0Y4sIDEg0L3QsNC20LDRgtCwLCAwINC90LUg0L3QsNC20LDRgtCwINC40LvQuCDRgdC60YDRi9GC0LAo0YHQutGA0YvRgtCwINGB0L7QvNC90LjRgtC10LvRjNC90L4sINGH0YLQviDRjdGC0L4g0L/RgNCw0LLQuNC70YzQvdC+KVxyXG4gICAgICAgIHRoaXMucXVlc3Rpb24oKS5BbHRlcm5hdGl2ZWxpc3QuZm9yRWFjaCggYWx0ID0+IGxvZ2ljT2JqW2Ake3F1ZXN0aW9uU3lzTmFtZX0ke2FsdC5TeXNOYW1lfWBdID0gYW5zd2Vycy5maW5kKHZhbCA9PiB2YWwgPT09IGFsdC5WYWx1ZSkgPyAxIDogMCk7IC8vINC/0LXRgNC10LzQtdC90L3Ri9C1INCw0LvRjNGC0LXRgNC90LDRgtC40LJcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBRdWVzdGlvbnNUeXBlLmVxT0w6IHtcclxuICAgICAgICAvL9C70L7Qs9C40YfQtdGB0LrQsNGPINC/0LXRgNC10LzQtdC90L3QsNGPINC00LvRjyBPTCDQstC+0L/RgNC+0YHQsCAtIDEsINCwINC90LUg0YLQviDRh9GC0L4g0LLQstC10LvQuFxyXG4gICAgICAgIGxvZ2ljT2JqW3F1ZXN0aW9uU3lzTmFtZV0gPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlIFF1ZXN0aW9uc1R5cGUuZXFTTDoge1xyXG4gICAgICAgIC8q0KLRg9GCINGB0LvQvtC20L3QtdC1INGH0LXQvCDQsiDQvtGB0YLQsNC70YzQvdGL0YUg0YLQuNC/0LDRhSDQstC+0L/RgNC+0YHQvtCyLlxyXG4gICAgICAgICogMS4g0JvQvtCz0LjRh9C10YHQutCw0Y8g0L/QtdGA0LXQvNC10L3QvdCw0Y8g0LTQu9GPIFNMINCy0L7Qv9GA0L7RgdCwXHJcbiAgICAgICAgKiAyLiDQm9C+0LPQuNGH0LXRgdC60LDRjyDQv9C10YDQtdC80LXQvdC90LDRjyDQtNC70Y8g0LrQsNC20LTQvtC5INGB0LXQutGG0LjQuFxyXG4gICAgICAgICogMy4g0JvQvtCz0LjRh9C10YHQutC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LUg0LTQu9GPINC60LDQttC00L7QuSDQsNC70YzRgtC10YDQvdCw0YLQuNCy0YsgKyDRgdC10LrRhtC40LhcclxuICAgICAgICAqICovXHJcblxyXG4gICAgICAgIC8vMS4g0JvQvtCz0LjRh9C10YHQutCw0Y8g0L/QtdGA0LXQvNC10L3QvdCw0Y8g0LTQu9GPIFNMINCy0L7Qv9GA0L7RgdCwIC0gMSwg0LAg0L3QtSDRgtC+INGH0YLQviDQstCy0LXQu9C4XHJcbiAgICAgICAgbG9naWNPYmpbcXVlc3Rpb25TeXNOYW1lXSA9IDE7XHJcblxyXG4gICAgICAgIC8v0JrQsNC20LTQsNGPINGB0LXQutGG0LjRjyDQtNC+0LvQttC90Ysg0LjQvNC10YLRjCDRgdCy0L7RjiDQu9C+0LPQuNGH0LXRgdC60YPRjiDQv9C10YDQtdC80LXQvdC90YPRjiwgYXJyYXk8bnVtYmVyPiDQtdGB0LvQuCBtdWx0aXNlbGVjdCwgbnVtYmVyINC10YHQu9C4IG11bHRpc2VsZWN0ID0gZmFsc2UsIC05NyDQtdGB0LvQuCDRgdC10LrRhtC40Y8g0L3QtSDQsdGL0LvQsCDQv9C+0LrQsNC30LDQvdCwLlxyXG4gICAgICAgIC8vKyDQtNC70Y8g0LrQsNC20LTQvtC5INGB0LXQutGG0LjQuCDQvdGD0LbQvdC+INC00L7QsdCw0LLQu9GP0YLRjCDQu9C+0LPQuNGH0LXRgdC60LjQtSDQv9C10YDQtdC80LXQvdC90YvQtSDQtNC70Y8g0LrQsNC20LTQvtC5INCw0LvRjNGC0LXRgNC90LDRgtC40LLRiy4gMSDQvdCw0LbQsNGC0LAsIDAg0L7RgtC20LDRgtCwLCAtOTcg0LXRgdC70Lgg0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwINC90LUg0LHRi9C70LAg0L/QvtC60LDQt9Cw0L3QsC5cclxuICAgICAgICBjb25zdCBmdWxsQW5zd2VycyA9IHRoaXMuYW5zd2VyRm9ybS52YWx1ZS5hbnN3ZXIgYXMgQW5zd2VyU2xUeXBlO1xyXG4gICAgICAgIGNvbnN0IHZpc2libGVBbHRlcm5hdGl2ZUxpc3QgPSB0aGlzLnZpc2libGVBbHRlcm5hdGl2ZUxpc3QoKS5tYXAoYWx0ID0+IGFsdC5WYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbigpLlNlY3Rpb25saXN0LmZvckVhY2goc2VjdGlvbiA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzZWN0aW9uU3lzTmFtZSA9IHNlY3Rpb24uU3lzTmFtZTtcclxuXHJcbiAgICAgICAgICAvL9C10YHQu9C4IHVuZGVmaW5lZCwg0YLQviDQt9Cw0LzQtdC90LjQvCDQvdCwIC05NyDRjdGC0L4g0LfQvdCw0YfQuNGCINGB0LXQutGG0LjRjyDQvdC1INCx0YvQu9CwINC/0L7QutCw0LfQsNC90LAuXHJcbiAgICAgICAgICBjb25zdCBzZWN0aW9uQW5zd2VyID0gZnVsbEFuc3dlcnNbc2VjdGlvbi5TZWN0aW9uR3VpZC50b1N0cmluZygpXSA/PyBNSVNTSU5HX1ZBTFVFO1xyXG5cclxuICAgICAgICAgIC8vMi4g0LTQvtCx0LDQstC70Y/QtdC8INC/0LXRgNC10LzQtdC90L3Rg9GOINGB0LDQvNC+0Lkg0YHQtdC60YbQuNC4LlxyXG4gICAgICAgICAgbG9naWNPYmpbc2VjdGlvblN5c05hbWVdID0gc2VjdGlvbkFuc3dlcjtcclxuICAgICAgICAgIHRoaXMucXVlc3Rpb24oKS5BbHRlcm5hdGl2ZWxpc3QuZm9yRWFjaChhbHRlcm5hdGl2ZSA9PiB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uQWx0ZXJuYXRpdmVTeXNOYW1lID0gYCR7c2VjdGlvblN5c05hbWV9JHthbHRlcm5hdGl2ZS5TeXNOYW1lfWA7XHJcbiAgICAgICAgICAgIC8v0YHQtdC60YbQuNGPINC90LUg0LHRi9C70LAg0L/QvtC60LDQt9Cw0L3QsCwg0LfQvdCw0YfQuNGCINCw0LvRjNGC0LXRgNC90LDRgtC40LLRiyDRgtC+0LbQtVxyXG4gICAgICAgICAgICBpZiAoc2VjdGlvbkFuc3dlciA9PT0gTUlTU0lOR19WQUxVRSkgIHtcclxuICAgICAgICAgICAgICBsb2dpY09ialtzZWN0aW9uQWx0ZXJuYXRpdmVTeXNOYW1lXSA9IE1JU1NJTkdfVkFMVUU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy/RgdC90LDRh9Cw0LvQsCDQvdGD0LbQvdC+INC/0YDQvtCy0LXRgNC40YLRjCDQsdGL0LvQsCDQu9C4INC/0L7QutCw0LfQsNC90LAg0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwLCDQtdGB0LvQuCDQvdC10YJcclxuICAgICAgICAgICAgICAvL9Cw0LvRjNGC0LXRgNC90LDRgtC40LLRiyDQvdC10YIg0LIg0YHQv9C40YHQutC1INC/0L7QutCw0LfQsNC90L3Ri9GFXHJcbiAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlQWx0ZXJuYXRpdmVMaXN0LmZpbmQodmlzaWJsZVZhbCA9PiB2aXNpYmxlVmFsID09PSBhbHRlcm5hdGl2ZS5WYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGxvZ2ljT2JqW3NlY3Rpb25BbHRlcm5hdGl2ZVN5c05hbWVdID0gTUlTU0lOR19WQUxVRTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy/QsNC70YzRgtC10YDQvdCw0YLQuNCy0Ysg0LXRgdGC0Ywg0LIg0YHQv9C40YHQutC1INC/0L7QutCw0LfQsNC90L3Ri9GFLCDQvdGD0LbQvdC+INGD0LfQvdCw0YLRjCDQsdGL0LvQsCDQvdCw0LbQsNGC0LAg0LjQu9C4INC90LXRgi5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzUHJlc3NlZCA9IEFycmF5LmlzQXJyYXkoc2VjdGlvbkFuc3dlcikgPyBzZWN0aW9uQW5zd2VyLmluY2x1ZGVzKGFsdGVybmF0aXZlLlZhbHVlKSA6IHNlY3Rpb25BbnN3ZXIgPT09IGFsdGVybmF0aXZlLlZhbHVlO1xyXG4gICAgICAgICAgICAgICAgbG9naWNPYmpbc2VjdGlvbkFsdGVybmF0aXZlU3lzTmFtZV0gPSBpc1ByZXNzZWQgPyAxIDogMDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/Qu9C+0LPQuNGH0LXRgdC60LjQtSDQv9C10YDQtdC80LXQvdC90YvQtSDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9GFINCy0L7Qv9GA0L7RgdC+0LIuXHJcbiAgICB0aGlzLnF1ZXN0aW9uKCkuQWRkaXRpb25hbEFuc3dlcmxpc3QuZm9yRWFjaChhYSA9PiB7XHJcbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxBbnN3ZXIgPSAhIXRoaXMuYW5zd2VyRm9ybS52YWx1ZS5hZGRpdGlvbmFsQW5zd2VycyA/IHRoaXMuYW5zd2VyRm9ybS52YWx1ZS5hZGRpdGlvbmFsQW5zd2VycyFbYWEuVmFsdWUudG9TdHJpbmcoKV0gOiBNSVNTSU5HX1ZBTFVFO1xyXG4gICAgICBjb25zdCBhZGRpdGlvbmFsQW5zd2VyU3lzTmFtZSA9IGAke3F1ZXN0aW9uU3lzTmFtZX0ke2FhLlN5c05hbWV9YDtcclxuICAgICAgaWYgKGFkZGl0aW9uYWxBbnN3ZXIgPT09IE1JU1NJTkdfVkFMVUUpIHtcclxuICAgICAgICAvL9C00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0Lkg0L7RgtCy0LXRgiDQvdC1INCx0YvQuyDQv9C+0LrQsNC30LDQvSwgKNGB0LrRgNGL0YIg0L/QviDQu9C+0LPQuNC60LUpXHJcbiAgICAgICAgbG9naWNPYmpbYWRkaXRpb25hbEFuc3dlclN5c05hbWVdID0gTUlTU0lOR19WQUxVRTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvL9C10YHQu9C4INC90LAg0LLQvtC/0YDQvtGBINC90LUg0L7RgtCy0LXRh9Cw0LvQuChudWxsKSwg0Y3RgtC+0YIg0YHQsNC80YvQuSBudWxsINC4INC00L7QsdCw0LLQu9GP0LXQvCDQutCw0Log0L7RgtCy0LXRgi5cclxuICAgICAgICBpZiAoYWRkaXRpb25hbEFuc3dlciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgbG9naWNPYmpbYWRkaXRpb25hbEFuc3dlclN5c05hbWVdID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy/QtdGB0LvQuCDQstC+0L/RgNC+0YEg0YLQuNC/0LAg0YLQtdC60YHRgiwg0LrQsNC6INC/0LXRgNC10LzQtdC90L3Rg9GOINC00L7QsdCw0LLQuNC8IDEsINCyINC+0YHRgtCw0LvRjNC90YvRhSDRgdC70YPRh9Cw0Y/RhSDRgdCw0Lwg0L7RgtCy0LXRgi5cclxuICAgICAgICAgIGxvZ2ljT2JqW2FkZGl0aW9uYWxBbnN3ZXJTeXNOYW1lXSA9IGFhLkFuc3dlclR5cGUgPT09IEFkZGl0aW9uYWxBbnN3ZXJUeXBlLmFhdFRleHQgPyAxIDogYWRkaXRpb25hbEFuc3dlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxvZ2ljT2JqO1xyXG4gIH1cclxuXHJcbiAgI3VwZGF0ZUFsdGVybmF0aXZlc0FuZFNlY3Rpb25zKCk6IHZvaWR7XHJcbiAgICBjb25zdCBkZXZlbG9wZXJNb2RlID0gdGhpcy5kZXZlbG9wZXJNb2RlKCk7XHJcbiAgICAvL9GE0LjQu9GM0YLRgNGD0LXQvCDQsNC70YzRgtC10YDQvdCw0YLQuNCy0YssXHJcbiAgICBjb25zdCBmaWx0ZXJlZEFsdGVybmF0aXZlTGlzdCA9IHRoaXMucXVlc3Rpb24oKS5BbHRlcm5hdGl2ZWxpc3QuZmlsdGVyKGFsdCA9PiBkZXZlbG9wZXJNb2RlIHx8IHRoaXMuI2xvZ2ljLmV4ZWN1dGVMb2dpYyhhbHQuRW5hYmxlRXhwcmVzc2lvbikpO1xyXG5cclxuICAgIC8v0YTQuNC70YzRgtGA0YPQtdC8INGB0LXQutGG0LjQuCxcclxuICAgIGNvbnN0IGZpbHRlcmVkU2VjdGlvbkxpc3QgPSB0aGlzLnF1ZXN0aW9uKCkuU2VjdGlvbmxpc3QuZmlsdGVyKHNlYyA9PiBkZXZlbG9wZXJNb2RlIHx8IHRoaXMuI2xvZ2ljLmV4ZWN1dGVMb2dpYyhzZWMuRW5hYmxlRXhwcmVzc2lvbikpO1xyXG5cclxuICAgIC8v0LzQtdC90Y/QtdC8INGA0LDRgdC/0L7Qu9C+0LbQtdC90LjQtSDRgtC10YUsINC60L7RgtC+0YDRi9C1INGN0YLQvtCz0L4g0YLRgNC10LHRg9GO0YIg0Lgg0L7QsdC90L7QstC70Y/QtdC8INCz0LvQvtCx0LDQu9GM0L3Rg9GOINC/0LXRgNC10LzQtdC90L3Rg9GOXHJcbiAgICB0aGlzLnZpc2libGVBbHRlcm5hdGl2ZUxpc3Quc2V0KHRoaXMuI2FycmFuZ2VSb3RhdGVkTGlzdChmaWx0ZXJlZEFsdGVybmF0aXZlTGlzdCkpO1xyXG4gICAgLy/QtNC70Y8g0YHQtdC60YbQuNC5INGC0L7QttC1INGB0LDQvNC+0LVcclxuICAgIHRoaXMudmlzaWJsZVNlY3Rpb25MaXN0LnNldCh0aGlzLiNhcnJhbmdlUm90YXRlZExpc3QoZmlsdGVyZWRTZWN0aW9uTGlzdCkpO1xyXG4gIH1cclxuXHJcbiAgI3VwZGF0ZUFkZGl0aW9uYWxBbnN3ZXJzKGlzSW5pdDogYm9vbGVhbik6IHZvaWR7XHJcbiAgICBjb25zdCBkZXZlbG9wZXJNb2RlID0gdGhpcy5kZXZlbG9wZXJNb2RlKCk7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSAodGhpcy5hbnN3ZXJGb3JtLmNvbnRyb2xzLmFkZGl0aW9uYWxBbnN3ZXJzIGFzIEZvcm1Hcm91cCk7XHJcblxyXG4gICAgaWYgKGlzSW5pdCkge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uKCkuQWRkaXRpb25hbEFuc3dlcmxpc3QuZm9yRWFjaChhYSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChhYS5BbnN3ZXJUeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIEFkZGl0aW9uYWxBbnN3ZXJUeXBlLmFhdE51bWJlcjogIGZvcm1Hcm91cC5hZGRDb250cm9sKGFhLlZhbHVlLnRvU3RyaW5nKCksIG5ldyBGb3JtQ29udHJvbDxudW1iZXIgIHwgbnVsbD4obnVsbCx7dmFsaWRhdG9yczogW2FkZGl0aW9uYWxBbnN3ZXJEZWZhdWx0VmFsaWRhdG9yKGFhLklzUmVxdWlyZWQpLCBhZGRpdGlvbmFsQW5zd2VyTnVtYmVyVmFsaWRhdG9yKGFhLklzUmVxdWlyZWQsIGFhLk51bWJlck1pblZhbHVlLCBhYS5OdW1iZXJNYXhWYWx1ZSldfSksIHtlbWl0RXZlbnQ6IGZhbHNlfSk7IGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBBZGRpdGlvbmFsQW5zd2VyVHlwZS5hYXRUZXh0OiAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChhYS5WYWx1ZS50b1N0cmluZygpLCBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nICB8IG51bGw+KG51bGwse3ZhbGlkYXRvcnM6IFthZGRpdGlvbmFsQW5zd2VyRGVmYXVsdFZhbGlkYXRvcihhYS5Jc1JlcXVpcmVkKV19KSwge2VtaXRFdmVudDogZmFsc2V9KTsgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEFkZGl0aW9uYWxBbnN3ZXJUeXBlLmFhdEJvb2xlYW46IGZvcm1Hcm91cC5hZGRDb250cm9sKGFhLlZhbHVlLnRvU3RyaW5nKCksIG5ldyBGb3JtQ29udHJvbDxib29sZWFuIHwgbnVsbD4obnVsbCx7dmFsaWRhdG9yczogW2FkZGl0aW9uYWxBbnN3ZXJEZWZhdWx0VmFsaWRhdG9yKGFhLklzUmVxdWlyZWQpXX0pLCB7ZW1pdEV2ZW50OiBmYWxzZX0pOyBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICAvL9GE0LjQu9GM0YLRgNGD0LXQvCxcclxuICAgIGNvbnN0IGZpbHRlcmVkQWRkaXRpb25hbEFuc3dlckxpc3QgPSB0aGlzLnF1ZXN0aW9uKCkuQWRkaXRpb25hbEFuc3dlcmxpc3QuZmlsdGVyKGFkZEFuc3dlciA9PiBkZXZlbG9wZXJNb2RlIHx8IHRoaXMuI2xvZ2ljLmV4ZWN1dGVMb2dpYyhhZGRBbnN3ZXIuRW5hYmxlRXhwcmVzc2lvbikpO1xyXG5cclxuICAgIC8v0L7QsdC90L7QstC70Y/QtdC8INCz0LvQvtCx0LDQu9GM0L3Ri9C5INGB0L/QuNGB0L7QulxyXG4gICAgdGhpcy52aXNpYmxlQWRkaXRpb25hbEFuc3dlckxpc3Quc2V0KGZpbHRlcmVkQWRkaXRpb25hbEFuc3dlckxpc3QpO1xyXG4gIH1cclxuXHJcbiAgb25BbHRlcm5hdGl2ZUNsaWNrKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuI2FsdGVybmF0aXZlU2VxdWVuY2VDbGlja3MucHVzaChbdmFsdWUsIG5ldyBEYXRlKCkuZ2V0VGltZSgpXSk7XHJcbiAgfVxyXG5cclxuICAjYXJyYW5nZVJvdGF0ZWRMaXN0PFQgZXh0ZW5kcyBJZGJBbHRlcm5hdGl2ZSB8IElkYlNlY3Rpb24+KGlucHV0QXJyYXk6IEFycmF5PFQ+KTogQXJyYXkgPFQ+IHtcclxuICAgIC8v0KMg0LrQsNC20LTQvtC5INCw0LvRjNGC0LXRgNC90LDRgtC40LLRiyDQuCDRgdC10LrRhtC40Lgg0LXRgdGC0Ywg0L/RgNC40LfQvdCw0LogUm90YXRpb24sINC60L7RgtC+0YDRi9C5INC/0L7Qt9Cy0L7Qu9GP0LXQvCDQvNC10L3Rj9GC0Ywg0L/QvtGA0Y/QtNC+0Log0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDQsNC70YzRgtC10YDQvdCw0YLQuNCy0Ysg0LjQu9C4INGB0LXQutGG0LjQuFxyXG4gICAgLy/QtdGB0LvQuCDQvtC9IHRydWUsINGC0L4g0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwINC4INGB0LXQutGG0LjRjyDQtNC+0LvQttC90LAg0L/QvtC80LXQvdGP0YLRjCDRgNCw0YHQv9C+0LvQvtC20LXQvdC40LVcclxuICAgIGNvbnN0IHJlc0FycmF5OiBBcnJheTxUIHwgbnVtYmVyPiA9IFtdO1xyXG5cclxuICAgIC8v0YDQsNC30LzQtdGAINC80LDRgdGB0LjQstCwXHJcbiAgICBjb25zdCBpbnB1dEFycmF5TGVuZ3RoID0gaW5wdXRBcnJheS5sZW5ndGg7XHJcblxyXG4gICAgLy/Qv9GA0L7RhdC+0LTQuNC80YHRjyDQv9C+INC60LDQttC00L7QvNGDINGN0LvQtdC80LXQvdGC0YMg0LLRhdC+0LTQvdC+0LPQviDQvNCw0YHRgdC40LLQsCwg0Lgg0LrQvtC/0LjRgNGD0LXQvCDQsiDRgNC10LfRg9C70YzRgtC40YDRg9GO0YnQuNC5LCDQldGB0LvQuCBSb3RhdGlvbiwg0LrQvtC/0LjRgNGD0LXQvCDQtdCz0L4g0LjQvdC00LXQutGBLCDQtdGB0LvQuCBSb3RhdGlvbiDQvdC1INGD0LrQsNC30LDQvSwg0LrQvtC/0LjRgNGD0LXQvCDRgdCw0Lwg0L7QsdGK0LXQutGCXHJcbiAgICBpbnB1dEFycmF5LmZvckVhY2goKG9iaiwgaW5kZXgpID0+IHJlc0FycmF5LnB1c2gob2JqLlJvdGF0aW9uID8gaW5kZXggOiBvYmopKTtcclxuXHJcbiAgICAvL9GC0LXQv9C10YDRjCDRgSDQv9C+0LzQvtGJ0YzRjiDRgNCw0L3QtNC+0LzQsCwg0YDQsNGB0YHRgtCw0LLQuNC8INC+0YHRgtCw0LvRjNC90YvQtSDRjdC7LdGC0YtcclxuICAgIHJlc0FycmF5LmZvckVhY2goKG9iaiwgaW5kZXgsIGFycmF5KSA9PiB7XHJcbiAgICAgIGlmICgodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpICYmIChvYmogPj0gMCkpIHtcclxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgLy/QtdGB0LvQuCDQsiDQvdC+0LLQvtC8INC80LDRgdGB0LjQstC1INC90LXRgiDRjdC70LXQvNC10L3RgtCwINC40Lcg0YHRgtCw0YDQvtCz0L4g0LzQsNGB0YHQuNCy0LAg0L/QviByYW5kb20g0LjQvdC00LXQutGB0YMsINGC0L7Qs9C00LAg0LrQvtC/0LjRgNGD0LXQvCDQsiDQvdC+0LLRi9C5INC80LDRgdGB0LjQsiDRgdGC0LDRgNGL0Lkg0LXQu9C10LzQtdC90YIg0LIg0L3QvtCy0YvQuSDQsNC00YDQtdGBXHJcbiAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IE1hdGguZmxvb3IoIE1hdGgucmFuZG9tKCkgKiBpbnB1dEFycmF5TGVuZ3RoICk7XHJcbiAgICAgICAgICBpZiAoYXJyYXkuaW5kZXhPZihpbnB1dEFycmF5W25ld0luZGV4XSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGFycmF5W2luZGV4XSA9IGlucHV0QXJyYXlbbmV3SW5kZXhdO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc0FycmF5IGFzIEFycmF5PFQ+O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW1haW5cIiBbZm9ybUdyb3VwXT1cImFuc3dlckZvcm1cIj5cclxuIEBzd2l0Y2ggKHF1ZXN0aW9uKCkuUXVlc3Rpb25UeXBlKSB7XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxTEFORykge1xyXG4gICA8dHAtc3VydmV5LWFuc3dlci1sYW5nXHJcbiAgIFtsYW5ndWFnZUxpc3RdPVwibGFuZ3VhZ2VMaXN0KClcIlxyXG4gICBbZmluZFZhcmlhYmxlXT1cImZpbmRWYXJpYWJsZSgpXCJcclxuICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICBbbGFuZ3VhZ2VdPVwiMlwiXHJcbiAgIFt2aWV3TW9kZWxdPVwidmlld01vZGVsKClcIlxyXG4gICAob25MYW5ndWFnZUNoYW5nZSk9XCJvbkxhbmd1YWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxSU5GTykge1xyXG4gICA8dHAtc3VydmV5LWFuc3dlci1pbmZvXHJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJcIlxyXG4gICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICAgW2ZpbmRWYXJpYWJsZV09XCJmaW5kVmFyaWFibGUoKVwiXHJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2UoKVwiXHJcbiAgICBbdmlld01vZGVsXT1cInZpZXdNb2RlbCgpXCIvPlxyXG4gIH1cclxuXHJcbiAgQGNhc2UgKHF1ZXN0aW9uc1R5cGUuZXFTUykge1xyXG4gICA8dHAtc3VydmV5LWFuc3dlci1zc1xyXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyXCJcclxuICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvbigpXCJcclxuICAgIFtsYW5ndWFnZV09XCJsYW5ndWFnZSgpXCJcclxuICAgIFt2aWV3TW9kZWxdPVwidmlld01vZGVsKClcIlxyXG4gICAgW2ZpbmRWYXJpYWJsZV09XCJmaW5kVmFyaWFibGUoKVwiXHJcbiAgICBbcmVwb3NpdG9yeVBhdGhdPVwicmVwb3NpdG9yeVBhdGgoKVwiXHJcbiAgICBbYWx0ZXJuYXRpdmVMaXN0XT1cInZpc2libGVBbHRlcm5hdGl2ZUxpc3QoKVwiXHJcbiAgICAob25BbHRlcm5hdGl2ZUNsaWNrKT1cIm9uQWx0ZXJuYXRpdmVDbGljaygkZXZlbnQpXCJcclxuICAgLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxTVMpIHtcclxuICAgPHRwLXN1cnZleS1hbnN3ZXItbXNcclxuICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiXHJcbiAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb24oKVwiXHJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2UoKVwiXHJcbiAgICBbdmlld01vZGVsXT1cInZpZXdNb2RlbCgpXCJcclxuICAgIFtmaW5kVmFyaWFibGVdPVwiZmluZFZhcmlhYmxlKClcIlxyXG4gICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICAgW2FsdGVybmF0aXZlTWF4QW5zd2Vyc0NvdW50XT1cInF1ZXN0aW9uKCkuQWx0ZXJuYXRpdmVNYXhBbnN3ZXJzQ291bnRcIlxyXG4gICAgW2FsdGVybmF0aXZlTGlzdF09XCJ2aXNpYmxlQWx0ZXJuYXRpdmVMaXN0KClcIlxyXG4gICAgKG9uQWx0ZXJuYXRpdmVDbGljayk9XCJvbkFsdGVybmF0aXZlQ2xpY2soJGV2ZW50KVwiLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxT0QpIHtcclxuICAgPHRwLXN1cnZleS1hbnN3ZXItb2RcclxuICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiXHJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2UoKVwiXHJcbiAgICBbdmlld01vZGVsXT1cInZpZXdNb2RlbCgpXCJcclxuICAgIFtmaW5kVmFyaWFibGVdPVwiZmluZFZhcmlhYmxlKClcIlxyXG4gICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICAgW21pblZhbHVlXT1cInF1ZXN0aW9uKCkuT0RNaW5WYWx1ZVwiXHJcbiAgICBbbWF4VmFsdWVdPVwicXVlc3Rpb24oKS5PRE1heFZhbHVlXCJcclxuICAgLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxT0wpIHtcclxuICAgPHRwLXN1cnZleS1hbnN3ZXItb2xcclxuICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiXHJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2UoKVwiXHJcbiAgICBbdmlld01vZGVsXT1cInZpZXdNb2RlbCgpXCJcclxuICAgIFtyZXBvc2l0b3J5UGF0aF09XCJyZXBvc2l0b3J5UGF0aCgpXCJcclxuICAgIFtmaW5kVmFyaWFibGVdPVwiZmluZFZhcmlhYmxlKClcIlxyXG4gICAgW3RlbGVwaG9uZUlucHV0XT1cInF1ZXN0aW9uKCkuT0xUeXBlVGVsXCJcclxuICAgLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxU0wpIHtcclxuICAgPHRwLXN1cnZleS1hbnN3ZXItc2xcclxuICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiXHJcbiAgICBbYWx0ZXJuYXRpdmVMaXN0XT1cInZpc2libGVBbHRlcm5hdGl2ZUxpc3QoKVwiXHJcbiAgICBbc2VjdGlvbkxpc3RdPVwidmlzaWJsZVNlY3Rpb25MaXN0KClcIlxyXG4gICAgW211bHRpU2VsZWN0XT1cInF1ZXN0aW9uKCkuTXVsdGlTZWxlY3RcIlxyXG4gICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlKClcIlxyXG4gICAgW3ZpZXdNb2RlbF09XCJ2aWV3TW9kZWwoKVwiXHJcbiAgICBbcmVwb3NpdG9yeVBhdGhdPVwicmVwb3NpdG9yeVBhdGgoKVwiXHJcbiAgICBbZmluZFZhcmlhYmxlXT1cImZpbmRWYXJpYWJsZSgpXCJcclxuICAgIFttYXhDb3VudF09XCJ0aGlzLnF1ZXN0aW9uKCkuU0xTZWN0aW9uTWF4QW5zd2Vyc0NvdW50XCJcclxuICAgLz5cclxuICB9XHJcblxyXG4gIEBjYXNlIChxdWVzdGlvbnNUeXBlLmVxRU5EKSB7XHJcbiAgIDx0cC1zdXJ2ZXktYW5zd2VyLWVuZFxyXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyXCJcclxuICAgIFtmaW5kVmFyaWFibGVdPVwiZmluZFZhcmlhYmxlKClcIlxyXG4gICAgW3JlcG9zaXRvcnlQYXRoXT1cInJlcG9zaXRvcnlQYXRoKClcIlxyXG4gICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlKClcIlxyXG4gICAgW3ZpZXdNb2RlbF09XCJ2aWV3TW9kZWwoKVwiXHJcbiAgIC8+XHJcbiAgfVxyXG4gfVxyXG5cclxuIDxkaXYgY2xhc3M9XCJjb250YWluZXItYWRkaXRpb25hbC1hbnN3ZXJcIj5cclxuICAgQGZvciAoYWRkQW5zd2VyIG9mIGFuc3dlckZvcm0uY29udHJvbHMuYWRkaXRpb25hbEFuc3dlcnMuY29udHJvbHMgfCBrZXlWYWx1ZXM7IHRyYWNrIGFkZEFuc3dlcikge1xyXG4gICAgQGlmIChhZGRBbnN3ZXIubmFtZSB8IGdldEFkZGl0aW9uYWxWYWx1ZUJ5VmFsdWU6dmlzaWJsZUFkZGl0aW9uYWxBbnN3ZXJMaXN0KCk7IGFzIGFkZGl0aW9uYWxBbnN3ZXJPYmplY3QgKSB7XHJcbiAgICAgPHRwLXN1cnZleS1hbnN3ZXItYWRkaXRpb25hbFxyXG4gICAgICBbY29udHJvbF09XCJhZGRBbnN3ZXIuY29udHJvbFwiXHJcbiAgICAgIFtjbGFzcy5mdWxsLXdpZHRoXT1cImFkZGl0aW9uYWxBbnN3ZXJPYmplY3QuQW5zd2VyVHlwZT09PUFkZGl0aW9uYWxBbnN3ZXJUeXBlLmFhdFRleHRcIlxyXG4gICAgICBbYW5zd2VyVHlwZV09XCJhZGRpdGlvbmFsQW5zd2VyT2JqZWN0LkFuc3dlclR5cGVcIlxyXG4gICAgICBbY2FwdGlvbl09XCJhZGRpdGlvbmFsQW5zd2VyT2JqZWN0Lk11bHRpTGFuZ0NhcHRpb25zIHwgbXVsdGlMYW5nT2JqZWN0VG9IdG1sOmxhbmd1YWdlKClcIlxyXG4gICAgICBbbnVtYmVyTWluVmFsdWVdPVwiYWRkaXRpb25hbEFuc3dlck9iamVjdC5OdW1iZXJNaW5WYWx1ZVwiXHJcbiAgICAgIFtudW1iZXJNYXhWYWx1ZV09XCJhZGRpdGlvbmFsQW5zd2VyT2JqZWN0Lk51bWJlck1heFZhbHVlXCJcclxuICAgICAgW3RleHRNdWx0aWxpbmVdPVwiYWRkaXRpb25hbEFuc3dlck9iamVjdC5UZXh0TXVsdGlsaW5lXCJcclxuICAgICAgW2NhcHRpb25Qb3NpdGlvbl09XCJhZGRpdGlvbmFsQW5zd2VyT2JqZWN0LkNhcHRpb25Qb3NpdGlvblwiLz5cclxuICAgIH1cclxuICAgfVxyXG4gPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19