survey-analytics 1.10.1 → 1.10.2
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/package.json +2 -2
- package/survey-analytics-datatables.types/analytics-localization/english.d.ts +1 -0
- package/survey-analytics-datatables.types/analytics-localization/japanese.d.ts +66 -0
- package/survey-analytics-datatables.types/analytics-localization/russian.d.ts +11 -10
- package/survey-analytics-datatables.types/entries/datatables.d.ts +1 -0
- package/survey-analytics-datatables.types/localizationManager.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/english.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/japanese.d.ts +66 -0
- package/survey-analytics-tabulator.types/analytics-localization/russian.d.ts +11 -10
- package/survey-analytics-tabulator.types/entries/tabulator.d.ts +1 -0
- package/survey-analytics-tabulator.types/localizationManager.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/english.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/japanese.d.ts +66 -0
- package/survey-analytics.types/analytics-localization/russian.d.ts +11 -10
- package/survey-analytics.types/entries/summary.d.ts +1 -0
- package/survey-analytics.types/localizationManager.d.ts +1 -0
- package/survey.analytics.css +1 -1
- package/survey.analytics.datatables.css +1 -1
- package/survey.analytics.datatables.js +142 -33
- package/survey.analytics.datatables.min.css +1 -1
- package/survey.analytics.datatables.min.js +2 -2
- package/survey.analytics.js +187 -72
- package/survey.analytics.min.css +1 -1
- package/survey.analytics.min.js +3 -3
- package/survey.analytics.tabulator.css +1 -1
- package/survey.analytics.tabulator.js +144 -35
- package/survey.analytics.tabulator.min.css +1 -1
- package/survey.analytics.tabulator.min.js +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* surveyjs - SurveyJS Dashboard library v1.10.
|
|
2
|
+
* surveyjs - SurveyJS Dashboard library v1.10.2
|
|
3
3
|
* Copyright (c) 2015-2024 Devsoft Baltic OÜ - http://surveyjs.io/
|
|
4
4
|
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
|
5
5
|
*/
|
|
@@ -123,6 +123,8 @@ module.exports = "<svg style=\"display:none;\"><symbol viewBox=\"0 0 16 16\" id=
|
|
|
123
123
|
__webpack_require__.r(__webpack_exports__);
|
|
124
124
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arabicStrings", function() { return arabicStrings; });
|
|
125
125
|
/* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
|
|
126
|
+
// This dictionary contains 1 untranslated or inherited localization strings.
|
|
127
|
+
// These strings are commented out. Uncomment and edit them if you want to add your translations.
|
|
126
128
|
|
|
127
129
|
var arabicStrings = {
|
|
128
130
|
groupButton: "زرار المجموعة",
|
|
@@ -144,6 +146,7 @@ var arabicStrings = {
|
|
|
144
146
|
visualizer_number: "متوسط",
|
|
145
147
|
visualizer_choices: "جدول",
|
|
146
148
|
visualizer_selectBase: "رسم بياني",
|
|
149
|
+
// visualizer_matrix: "Chart",
|
|
147
150
|
chartType_bar: "شريط",
|
|
148
151
|
chartType_vbar: "شريط عمودي",
|
|
149
152
|
chartType_stackedbar: "شريط مكدس",
|
|
@@ -213,6 +216,8 @@ _localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].localeNames["a
|
|
|
213
216
|
__webpack_require__.r(__webpack_exports__);
|
|
214
217
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dutchStrings", function() { return dutchStrings; });
|
|
215
218
|
/* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
|
|
219
|
+
// This dictionary contains 1 untranslated or inherited localization strings.
|
|
220
|
+
// These strings are commented out. Uncomment and edit them if you want to add your translations.
|
|
216
221
|
|
|
217
222
|
var dutchStrings = {
|
|
218
223
|
groupButton: "Groep door mij",
|
|
@@ -234,6 +239,7 @@ var dutchStrings = {
|
|
|
234
239
|
visualizer_number: "Gemiddeld",
|
|
235
240
|
visualizer_choices: "Tafel",
|
|
236
241
|
visualizer_selectBase: "Zeekaart",
|
|
242
|
+
// visualizer_matrix: "Chart",
|
|
237
243
|
chartType_bar: "Bar",
|
|
238
244
|
chartType_vbar: "Verticale balk",
|
|
239
245
|
chartType_stackedbar: "Gestapelde Bar",
|
|
@@ -338,6 +344,7 @@ var englishStrings = {
|
|
|
338
344
|
visualizer_number: "Average",
|
|
339
345
|
visualizer_choices: "Table",
|
|
340
346
|
visualizer_selectBase: "Chart",
|
|
347
|
+
visualizer_matrix: "Chart",
|
|
341
348
|
chartType_bar: "Bar",
|
|
342
349
|
chartType_vbar: "Vertical Bar",
|
|
343
350
|
chartType_stackedbar: "Stacked Bar",
|
|
@@ -404,6 +411,8 @@ var englishStrings = {
|
|
|
404
411
|
__webpack_require__.r(__webpack_exports__);
|
|
405
412
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "farsiStrings", function() { return farsiStrings; });
|
|
406
413
|
/* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
|
|
414
|
+
// This dictionary contains 1 untranslated or inherited localization strings.
|
|
415
|
+
// These strings are commented out. Uncomment and edit them if you want to add your translations.
|
|
407
416
|
|
|
408
417
|
var farsiStrings = {
|
|
409
418
|
groupButton: "گروه بندی با",
|
|
@@ -425,6 +434,7 @@ var farsiStrings = {
|
|
|
425
434
|
visualizer_number: "متوسط",
|
|
426
435
|
visualizer_choices: "جدول",
|
|
427
436
|
visualizer_selectBase: "نمودار",
|
|
437
|
+
// visualizer_matrix: "Chart",
|
|
428
438
|
chartType_bar: "میله ای",
|
|
429
439
|
chartType_vbar: "نوار عمودی",
|
|
430
440
|
chartType_stackedbar: "نوار پشته",
|
|
@@ -536,6 +546,8 @@ _localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].localeNames["f
|
|
|
536
546
|
__webpack_require__.r(__webpack_exports__);
|
|
537
547
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "frenchStrings", function() { return frenchStrings; });
|
|
538
548
|
/* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
|
|
549
|
+
// This dictionary contains 1 untranslated or inherited localization strings.
|
|
550
|
+
// These strings are commented out. Uncomment and edit them if you want to add your translations.
|
|
539
551
|
|
|
540
552
|
var frenchStrings = {
|
|
541
553
|
groupButton: "Grouper",
|
|
@@ -557,6 +569,7 @@ var frenchStrings = {
|
|
|
557
569
|
visualizer_number: "Moyenne",
|
|
558
570
|
visualizer_choices: "Table",
|
|
559
571
|
visualizer_selectBase: "Graphique",
|
|
572
|
+
// visualizer_matrix: "Chart",
|
|
560
573
|
chartType_bar: "Barres",
|
|
561
574
|
chartType_vbar: "Barre verticale",
|
|
562
575
|
chartType_stackedbar: "Barres empilées",
|
|
@@ -642,6 +655,8 @@ _localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].localeNames["f
|
|
|
642
655
|
__webpack_require__.r(__webpack_exports__);
|
|
643
656
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "germanStrings", function() { return germanStrings; });
|
|
644
657
|
/* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
|
|
658
|
+
// This dictionary contains 1 untranslated or inherited localization strings.
|
|
659
|
+
// These strings are commented out. Uncomment and edit them if you want to add your translations.
|
|
645
660
|
|
|
646
661
|
var germanStrings = {
|
|
647
662
|
groupButton: "Gruppieren",
|
|
@@ -663,6 +678,7 @@ var germanStrings = {
|
|
|
663
678
|
visualizer_number: "Durchschnitt",
|
|
664
679
|
visualizer_choices: "Liste",
|
|
665
680
|
visualizer_selectBase: "Diagrammtyp",
|
|
681
|
+
// visualizer_matrix: "Chart",
|
|
666
682
|
chartType_bar: "Balkendiagramm",
|
|
667
683
|
chartType_vbar: "Balkendiagramm vertikal",
|
|
668
684
|
chartType_stackedbar: "Gestapeltes Balkendiagramm",
|
|
@@ -713,6 +729,90 @@ _localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].locales["de"]
|
|
|
713
729
|
_localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].localeNames["de"] = "Deutsch";
|
|
714
730
|
|
|
715
731
|
|
|
732
|
+
/***/ }),
|
|
733
|
+
|
|
734
|
+
/***/ "./src/analytics-localization/japanese.ts":
|
|
735
|
+
/*!************************************************!*\
|
|
736
|
+
!*** ./src/analytics-localization/japanese.ts ***!
|
|
737
|
+
\************************************************/
|
|
738
|
+
/*! exports provided: japaneseStrings */
|
|
739
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
740
|
+
|
|
741
|
+
"use strict";
|
|
742
|
+
__webpack_require__.r(__webpack_exports__);
|
|
743
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "japaneseStrings", function() { return japaneseStrings; });
|
|
744
|
+
/* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
|
|
745
|
+
|
|
746
|
+
var japaneseStrings = {
|
|
747
|
+
groupButton: "グループ化",
|
|
748
|
+
ungroupButton: "グループ解除",
|
|
749
|
+
selectButton: "選択",
|
|
750
|
+
hideColumn: "列を非表示",
|
|
751
|
+
showColumn: "列を表示",
|
|
752
|
+
makePrivateColumn: "列を非公開にする",
|
|
753
|
+
makePublicColumn: "列を公開する",
|
|
754
|
+
moveToDetail: "詳細に移動",
|
|
755
|
+
showAsColumn: "列として表示",
|
|
756
|
+
filterPlaceholder: "検索...",
|
|
757
|
+
removeRows: "行を削除",
|
|
758
|
+
showLabel: "表示",
|
|
759
|
+
entriesLabel: "件",
|
|
760
|
+
visualizer_text: "テキスト",
|
|
761
|
+
visualizer_wordcloud: "ワードクラウド",
|
|
762
|
+
visualizer_histogram: "ヒストグラム",
|
|
763
|
+
visualizer_number: "平均",
|
|
764
|
+
visualizer_choices: "テーブル",
|
|
765
|
+
visualizer_selectBase: "チャート",
|
|
766
|
+
chartType_bar: "棒グラフ",
|
|
767
|
+
chartType_vbar: "縦棒グラフ",
|
|
768
|
+
chartType_stackedbar: "積み上げ棒グラフ",
|
|
769
|
+
chartType_doughnut: "ドーナツチャート",
|
|
770
|
+
chartType_pie: "円グラフ",
|
|
771
|
+
chartType_scatter: "散布図",
|
|
772
|
+
chartType_gauge: "ゲージ",
|
|
773
|
+
chartType_bullet: "バレット",
|
|
774
|
+
hideButton: "非表示",
|
|
775
|
+
makePrivateButton: "非公開にする",
|
|
776
|
+
makePublicButton: "公開する",
|
|
777
|
+
showButton: "表示",
|
|
778
|
+
filter: "フィルター",
|
|
779
|
+
resetFilter: "フィルターをリセット",
|
|
780
|
+
changeLocale: "言語を変更",
|
|
781
|
+
clearButton: "クリア",
|
|
782
|
+
addElement: "表示する質問を選択...",
|
|
783
|
+
defaultOrder: "デフォルト順",
|
|
784
|
+
ascOrder: "昇順",
|
|
785
|
+
descOrder: "降順",
|
|
786
|
+
showMinorColumns: "マイナー列を表示",
|
|
787
|
+
otherCommentTitle: "その他のアイテムとコメント",
|
|
788
|
+
showPercentages: "パーセンテージを表示",
|
|
789
|
+
hidePercentages: "パーセンテージを非表示",
|
|
790
|
+
pdfDownloadCaption: "PDF",
|
|
791
|
+
xlsxDownloadCaption: "Excel",
|
|
792
|
+
csvDownloadCaption: "CSV",
|
|
793
|
+
saveDiagramAsPNG: "プロットをPNGファイルとして保存",
|
|
794
|
+
hideEmptyAnswers: "空の回答を非表示",
|
|
795
|
+
showEmptyAnswers: "空の回答を表示",
|
|
796
|
+
"topNValueText-1": "すべての回答",
|
|
797
|
+
"topNValueText5": "上位5つの回答",
|
|
798
|
+
"topNValueText10": "上位10の回答",
|
|
799
|
+
"topNValueText20": "上位20の回答",
|
|
800
|
+
hideMissingAnswers: "欠損値を非表示",
|
|
801
|
+
showMissingAnswers: "欠損値を表示",
|
|
802
|
+
missingAnswersLabel: "欠損値",
|
|
803
|
+
noVisualizerForQuestion: "この質問タイプはまだ視覚化されていません",
|
|
804
|
+
noResults: "まだ結果がありません",
|
|
805
|
+
showPerValues: "値ごとに表示",
|
|
806
|
+
showPerColumns: "列ごとに表示",
|
|
807
|
+
answer: "回答",
|
|
808
|
+
correctAnswer: "正解: ",
|
|
809
|
+
percent: "パーセント",
|
|
810
|
+
responses: "回答数"
|
|
811
|
+
};
|
|
812
|
+
_localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].locales["ja"] = japaneseStrings;
|
|
813
|
+
_localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].localeNames["ja"] = "Japanese";
|
|
814
|
+
|
|
815
|
+
|
|
716
816
|
/***/ }),
|
|
717
817
|
|
|
718
818
|
/***/ "./src/analytics-localization/norwegian.ts":
|
|
@@ -726,6 +826,8 @@ _localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].localeNames["d
|
|
|
726
826
|
__webpack_require__.r(__webpack_exports__);
|
|
727
827
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "norwegianStrings", function() { return norwegianStrings; });
|
|
728
828
|
/* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
|
|
829
|
+
// This dictionary contains 1 untranslated or inherited localization strings.
|
|
830
|
+
// These strings are commented out. Uncomment and edit them if you want to add your translations.
|
|
729
831
|
|
|
730
832
|
var norwegianStrings = {
|
|
731
833
|
groupButton: "Grupper",
|
|
@@ -747,6 +849,7 @@ var norwegianStrings = {
|
|
|
747
849
|
visualizer_number: "Gjennomsnitt",
|
|
748
850
|
visualizer_choices: "Bord",
|
|
749
851
|
visualizer_selectBase: "Sjøkart",
|
|
852
|
+
// visualizer_matrix: "Chart",
|
|
750
853
|
chartType_bar: "Stolpediagram",
|
|
751
854
|
chartType_vbar: "Vertikal stolpe",
|
|
752
855
|
chartType_stackedbar: "Stablet stolpediagram",
|
|
@@ -839,6 +942,8 @@ _localizationManager__WEBPACK_IMPORTED_MODULE_0__["localization"].localeNames["n
|
|
|
839
942
|
__webpack_require__.r(__webpack_exports__);
|
|
840
943
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "portugueseStrings", function() { return portugueseStrings; });
|
|
841
944
|
/* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
|
|
945
|
+
// This dictionary contains 1 untranslated or inherited localization strings.
|
|
946
|
+
// These strings are commented out. Uncomment and edit them if you want to add your translations.
|
|
842
947
|
|
|
843
948
|
var portugueseStrings = {
|
|
844
949
|
groupButton: "Agrupar Por Mim",
|
|
@@ -860,6 +965,7 @@ var portugueseStrings = {
|
|
|
860
965
|
visualizer_number: "Média",
|
|
861
966
|
visualizer_choices: "Tabela",
|
|
862
967
|
visualizer_selectBase: "Gráfico",
|
|
968
|
+
// visualizer_matrix: "Chart",
|
|
863
969
|
chartType_bar: "Barra",
|
|
864
970
|
chartType_vbar: "Barra vertical",
|
|
865
971
|
chartType_stackedbar: "Barra Empilhada",
|
|
@@ -891,9 +997,9 @@ var portugueseStrings = {
|
|
|
891
997
|
hideEmptyAnswers: "Esconder perguntas vazias",
|
|
892
998
|
showEmptyAnswers: "Mostrar perguntas vazias",
|
|
893
999
|
"topNValueText-1": "Todas as respostas",
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
1000
|
+
topNValueText5: "Primeiras 5 respostas",
|
|
1001
|
+
topNValueText10: "Primeiras 10 respostas",
|
|
1002
|
+
topNValueText20: "Primeiras 20 respostas",
|
|
897
1003
|
hideMissingAnswers: "Ocultar perguntas não respondidas",
|
|
898
1004
|
showMissingAnswers: "Mostrar perguntas não respondidas",
|
|
899
1005
|
missingAnswersLabel: "Perguntas não respondidas",
|
|
@@ -934,16 +1040,20 @@ var russianStrings = {
|
|
|
934
1040
|
makePrivateColumn: "Сделать столбец приватным",
|
|
935
1041
|
makePublicColumn: "Сделать столбец публичным",
|
|
936
1042
|
moveToDetail: "Спрятать в раскрывающуюся секцию",
|
|
937
|
-
filter: "Фильтр",
|
|
938
1043
|
showAsColumn: "Показать как столбец",
|
|
1044
|
+
filterPlaceholder: "Поиск...",
|
|
1045
|
+
removeRows: "Удалить строки",
|
|
1046
|
+
showLabel: "Показать",
|
|
1047
|
+
entriesLabel: "записей",
|
|
939
1048
|
visualizer_text: "Таблица",
|
|
940
1049
|
visualizer_wordcloud: "Облако тэгов",
|
|
941
1050
|
visualizer_histogram: "Гистограмма",
|
|
942
1051
|
visualizer_number: "Среднее значение",
|
|
943
1052
|
visualizer_choices: "Таблица",
|
|
944
1053
|
visualizer_selectBase: "Диаграмма",
|
|
945
|
-
|
|
1054
|
+
visualizer_matrix: "Диаграмма",
|
|
946
1055
|
chartType_bar: "Столбчатая диаграмма",
|
|
1056
|
+
chartType_vbar: "Вертикальная столбчатая диаграмма",
|
|
947
1057
|
chartType_stackedbar: "Столбчатая диаграмма с накоплением",
|
|
948
1058
|
chartType_doughnut: "Кольцевая диаграмма",
|
|
949
1059
|
chartType_pie: "Круговая диаграмма",
|
|
@@ -951,7 +1061,10 @@ var russianStrings = {
|
|
|
951
1061
|
chartType_gauge: "Измерительная диаграмма",
|
|
952
1062
|
chartType_bullet: "Маркированная диаграмма",
|
|
953
1063
|
hideButton: "Скрыть",
|
|
1064
|
+
makePrivateButton: "Сделать приватным",
|
|
1065
|
+
makePublicButton: "Сделать публичным",
|
|
954
1066
|
showButton: "Показать",
|
|
1067
|
+
filter: "Фильтр",
|
|
955
1068
|
resetFilter: "Очистить фильтр",
|
|
956
1069
|
changeLocale: "Сменить язык",
|
|
957
1070
|
clearButton: "Очистить",
|
|
@@ -961,14 +1074,6 @@ var russianStrings = {
|
|
|
961
1074
|
descOrder: "Сортировать по убыванию",
|
|
962
1075
|
showMinorColumns: "Показать второстепенные столбцы",
|
|
963
1076
|
otherCommentTitle: "Другое и комментарии",
|
|
964
|
-
noVisualizerForQuestion: "Этот тип вопроса не поддерживается",
|
|
965
|
-
noResults: "Результаты отсутствуют",
|
|
966
|
-
filterPlaceholder: "Поиск...",
|
|
967
|
-
removeRows: "Удалить строки",
|
|
968
|
-
showLabel: "Показать",
|
|
969
|
-
entriesLabel: "записей",
|
|
970
|
-
makePrivateButton: "Сделать приватным",
|
|
971
|
-
makePublicButton: "Сделать публичным",
|
|
972
1077
|
showPercentages: "Показать проценты",
|
|
973
1078
|
hidePercentages: "Скрыть проценты",
|
|
974
1079
|
pdfDownloadCaption: "PDF",
|
|
@@ -978,12 +1083,14 @@ var russianStrings = {
|
|
|
978
1083
|
hideEmptyAnswers: "Скрыть пустые ответы",
|
|
979
1084
|
showEmptyAnswers: "Показать пустые ответы",
|
|
980
1085
|
"topNValueText-1": "Все ответы",
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
1086
|
+
topNValueText5: "Первые 5 ответов",
|
|
1087
|
+
topNValueText10: "Первые 10 ответов",
|
|
1088
|
+
topNValueText20: "Первые 20 ответов",
|
|
984
1089
|
hideMissingAnswers: "Скрыть отсутствующие ответы",
|
|
985
1090
|
showMissingAnswers: "Показать отсутствующие ответы",
|
|
986
1091
|
missingAnswersLabel: "Отсутствующие ответы",
|
|
1092
|
+
noVisualizerForQuestion: "Этот тип вопроса не поддерживается",
|
|
1093
|
+
noResults: "Результаты отсутствуют",
|
|
987
1094
|
showPerValues: "По значениям",
|
|
988
1095
|
showPerColumns: "По столбцам",
|
|
989
1096
|
answer: "Ответ",
|
|
@@ -1019,27 +1126,28 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1019
1126
|
/* harmony import */ var _analytics_localization_russian__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../analytics-localization/russian */ "./src/analytics-localization/russian.ts");
|
|
1020
1127
|
/* harmony import */ var _analytics_localization_dutch__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../analytics-localization/dutch */ "./src/analytics-localization/dutch.ts");
|
|
1021
1128
|
/* harmony import */ var _analytics_localization_arabic__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../analytics-localization/arabic */ "./src/analytics-localization/arabic.ts");
|
|
1022
|
-
/* harmony import */ var
|
|
1023
|
-
/* harmony import */ var
|
|
1024
|
-
/* harmony import */ var
|
|
1025
|
-
/* harmony import */ var
|
|
1026
|
-
/* harmony import */ var
|
|
1027
|
-
/* harmony
|
|
1129
|
+
/* harmony import */ var _analytics_localization_japanese__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../analytics-localization/japanese */ "./src/analytics-localization/japanese.ts");
|
|
1130
|
+
/* harmony import */ var _tables_extensions_rowextensions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../tables/extensions/rowextensions */ "./src/tables/extensions/rowextensions.ts");
|
|
1131
|
+
/* harmony import */ var _tables_extensions_headerextensions__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../tables/extensions/headerextensions */ "./src/tables/extensions/headerextensions.ts");
|
|
1132
|
+
/* harmony import */ var _tables_extensions_columnextensions__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../tables/extensions/columnextensions */ "./src/tables/extensions/columnextensions.ts");
|
|
1133
|
+
/* harmony import */ var _tables_extensions_detailsextensions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../tables/extensions/detailsextensions */ "./src/tables/extensions/detailsextensions.ts");
|
|
1134
|
+
/* harmony import */ var _tables_table__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../tables/table */ "./src/tables/table.ts");
|
|
1135
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableEvent", function() { return _tables_table__WEBPACK_IMPORTED_MODULE_14__["TableEvent"]; });
|
|
1028
1136
|
|
|
1029
|
-
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Table", function() { return
|
|
1137
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Table", function() { return _tables_table__WEBPACK_IMPORTED_MODULE_14__["Table"]; });
|
|
1030
1138
|
|
|
1031
|
-
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableRow", function() { return
|
|
1139
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableRow", function() { return _tables_table__WEBPACK_IMPORTED_MODULE_14__["TableRow"]; });
|
|
1032
1140
|
|
|
1033
|
-
/* harmony import */ var
|
|
1034
|
-
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DataTables", function() { return
|
|
1141
|
+
/* harmony import */ var _tables_datatables__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../tables/datatables */ "./src/tables/datatables.ts");
|
|
1142
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DataTables", function() { return _tables_datatables__WEBPACK_IMPORTED_MODULE_15__["DataTables"]; });
|
|
1035
1143
|
|
|
1036
|
-
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DatatablesRow", function() { return
|
|
1144
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DatatablesRow", function() { return _tables_datatables__WEBPACK_IMPORTED_MODULE_15__["DatatablesRow"]; });
|
|
1037
1145
|
|
|
1038
|
-
/* harmony import */ var
|
|
1039
|
-
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableExtensions", function() { return
|
|
1146
|
+
/* harmony import */ var _tables_extensions_tableextensions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../tables/extensions/tableextensions */ "./src/tables/extensions/tableextensions.ts");
|
|
1147
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableExtensions", function() { return _tables_extensions_tableextensions__WEBPACK_IMPORTED_MODULE_16__["TableExtensions"]; });
|
|
1040
1148
|
|
|
1041
|
-
/* harmony import */ var
|
|
1042
|
-
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DocumentHelper", function() { return
|
|
1149
|
+
/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/index */ "./src/utils/index.ts");
|
|
1150
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DocumentHelper", function() { return _utils_index__WEBPACK_IMPORTED_MODULE_17__["DocumentHelper"]; });
|
|
1043
1151
|
|
|
1044
1152
|
|
|
1045
1153
|
//localization
|
|
@@ -1051,6 +1159,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1051
1159
|
|
|
1052
1160
|
|
|
1053
1161
|
|
|
1162
|
+
|
|
1054
1163
|
//extensions
|
|
1055
1164
|
|
|
1056
1165
|
|
|
@@ -3156,4 +3265,4 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_survey_core__;
|
|
|
3156
3265
|
|
|
3157
3266
|
/******/ });
|
|
3158
3267
|
});
|
|
3159
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bcGMtbmFtZV0vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL1twYy1uYW1lXS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvc3ZnYnVuZGxlLmh0bWwiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vYXJhYmljLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2R1dGNoLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2VuZ2xpc2gudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vZmFyc2kudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vZnJlbmNoLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2dlcm1hbi50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9ub3J3ZWdpYW4udHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vcG9ydHVndWVzZS50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9ydXNzaWFuLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy9lbnRyaWVzL2RhdGF0YWJsZXMudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2xvY2FsaXphdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL3RhYmxlcy9jb2x1bW5idWlsZGVyLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy90YWJsZXMvY29sdW1ucy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL2NvbmZpZy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL2RhdGF0YWJsZXMuc2Nzcz85M2U1Iiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy90YWJsZXMvZGF0YXRhYmxlcy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL2V4dGVuc2lvbnMvY29sdW1uZXh0ZW5zaW9ucy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL2V4dGVuc2lvbnMvZGV0YWlsc2V4dGVuc2lvbnMudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL3RhYmxlcy9leHRlbnNpb25zL2hlYWRlcmV4dGVuc2lvbnMudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL3RhYmxlcy9leHRlbnNpb25zL3Jvd2V4dGVuc2lvbnMudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL3RhYmxlcy9leHRlbnNpb25zL3RhYmxlZXh0ZW5zaW9ucy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL3RhYmxlLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy91dGlscy9oZWxwZXJzLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy91dGlscy9pbmRleC50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vZXh0ZXJuYWwge1wicm9vdFwiOlwiU3VydmV5XCIsXCJjb21tb25qczJcIjpcInN1cnZleS1jb3JlXCIsXCJjb21tb25qc1wiOlwic3VydmV5LWNvcmVcIixcImFtZFwiOlwic3VydmV5LWNvcmVcIn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTztRQ1ZBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNB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LEVBQUUsRUFBRSxFQUFFO1lBQ3RDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNkLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTztTQUNsQixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQzs7Ozs7Ozs7Ozs7O0FDOU9ELHlEIiwiZmlsZSI6InN1cnZleS5hbmFseXRpY3MuZGF0YXRhYmxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInN1cnZleS1jb3JlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwiU3VydmV5QW5hbHl0aWNzRGF0YXRhYmxlc1wiLCBbXCJzdXJ2ZXktY29yZVwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJTdXJ2ZXlBbmFseXRpY3NEYXRhdGFibGVzXCJdID0gZmFjdG9yeShyZXF1aXJlKFwic3VydmV5LWNvcmVcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIlN1cnZleUFuYWx5dGljc0RhdGF0YWJsZXNcIl0gPSBmYWN0b3J5KHJvb3RbXCJTdXJ2ZXlcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9zdXJ2ZXlfY29yZV9fKSB7XG5yZXR1cm4gIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvZW50cmllcy9kYXRhdGFibGVzLnRzXCIpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBcIjxzdmcgc3R5bGU9XFxcImRpc3BsYXk6bm9uZTtcXFwiPjxzeW1ib2wgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBpZD1cXFwic2Etc3ZnLWRldGFpbFxcXCI+PGNpcmNsZSBjeD1cXFwiMS41XFxcIiBjeT1cXFwiOC41XFxcIiByPVxcXCIxLjVcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjcuNVxcXCIgY3k9XFxcIjguNVxcXCIgcj1cXFwiMS41XFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxMy41XFxcIiBjeT1cXFwiOC41XFxcIiByPVxcXCIxLjVcXFwiPjwvY2lyY2xlPjwvc3ltYm9sPjxzeW1ib2wgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBpZD1cXFwic2Etc3ZnLWRyYWdcXFwiPjxwYXRoIGQ9XFxcIk0xMyA1bC0xIDEgMSAxSDlWM2wxIDEgMS0xLTMtMy0zIDMgMSAxIDEtMXY0SDNsMS0xLTEtMS0zIDMgMyAzIDEtMS0xLTFoNHY0bC0xLTEtMSAxIDMgMyAzLTMtMS0xLTEgMVY5aDRsLTEgMSAxIDEgMy0zelxcXCI+PC9wYXRoPjwvc3ltYm9sPjxzeW1ib2wgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBpZD1cXFwic2Etc3ZnLWhpZGVcXFwiPjxwYXRoIGQ9XFxcIk0xMi43OSA0LjJMMTYgMWwtMS0xLTMuMzIgMy4zMkMxMC41NyAyLjU1IDkuMzIgMiA4IDIgMy42MyAyIDAgNy45NyAwIDcuOTdzMS4yNyAyLjEgMy4yMSAzLjgybC0zLjIzIDMuMjMuOTguOTggMy4zNS0zLjM0QzUuNDEgMTMuNDQgNi42NyAxNCA4IDE0YzQuMzcgMCA4LTYgOC02cy0xLjI3LTIuMDktMy4yMS0zLjh6TTIgNy45N2MxLjA3LTEuNDcgMy42MS00IDYtNCAuOCAwIDEuNi4yNyAyLjM1LjY4bC0uNzguNzhjLS40Ni0uMjktLjk5LS40Ni0xLjU3LS40Ni0xLjY2IDAtMyAxLjM0LTMgMyAwIC41OC4xNyAxLjExLjQ2IDEuNTdsLS45Ny45N0ExMy4zOCAxMy4zOCAwIDAgMSAyIDcuOTd6bTYgNGMtLjggMC0xLjU5LS4yNy0yLjMzLS42N2wuNzgtLjc3Yy40NS4yNy45OC40NCAxLjU1LjQ0IDEuNjYgMCAzLTEuMzQgMy0zIDAtLjU3LS4xNy0xLjA5LS40NC0xLjU1bC45OC0uOThjMS4xMS44NyAyLjAxIDEuOTEgMi40NiAyLjUyLTEuMDcgMS40OC0zLjYxIDQuMDEtNiA0LjAxelxcXCI+PC9wYXRoPjwvc3ltYm9sPjxzeW1ib2wgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBpZD1cXFwic2Etc3ZnLW1ha2Vwcml2YXRlXFxcIj48Y2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiNFxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTggOGMtMy4zMSAwLTYgMi43My02IDQuNjdTNS4yNyAxNSA4IDE1czYtLjQgNi0yLjMzUzExLjMxIDggOCA4elxcXCI+PC9wYXRoPjwvc3ltYm9sPjxzeW1ib2wgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBpZD1cXFwic2Etc3ZnLW1ha2VwdWJsaWNcXFwiPjxjaXJjbGUgY3g9XFxcIjZcXFwiIGN5PVxcXCI1XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNMTAgNWMwIC4zNC0uMDYuNjctLjE0Ljk5LjA1IDAgLjA5LjAxLjE0LjAxIDEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zQzguOTcgMCA4LjA3LjUyIDcuNTMgMS4zIDguOTggMS45MSAxMCAzLjMzIDEwIDV6TTYgOWMtMy4zMSAwLTYgMi43My02IDQuNjdTMy4yNyAxNiA2IDE2czYtLjQgNi0yLjMzUzkuMzEgOSA2IDl6TTEwIDdjLS4xOSAwLS4zOC4wMS0uNTcuMDNhNC4xNCA0LjE0IDAgMCAxLTEuMzcgMS4zOWMzIC44MyA1LjIzIDMuMzEgNS40MiA1LjI4IDEuNDQtLjMxIDIuNTItLjkyIDIuNTItMi4wM0MxNiA5Ljc0IDEzLjMxIDcgMTAgN3pcXFwiPjwvcGF0aD48L3N5bWJvbD48c3ltYm9sIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgaWQ9XFxcInNhLXN2Zy1tb3ZldG9kZXRhaWxzXFxcIj48Y2lyY2xlIGN4PVxcXCIxLjVcXFwiIGN5PVxcXCIxNC41XFxcIiByPVxcXCIxLjVcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjcuNVxcXCIgY3k9XFxcIjE0LjVcXFwiIHI9XFxcIjEuNVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMTMuNVxcXCIgY3k9XFxcIjE0LjVcXFwiIHI9XFxcIjEuNVxcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTEyIDFoM3Y5aC0zek0yLjAyIDcuMDJMMSA2IDAgN2wzIDMgMy0zLTEtMS0uOTQuOTRDNC4zMyA0LjczIDYuMjEgMyA4LjUgM2MuMTcgMCAuMzMuMDMuNS4wNVYxLjAzQzguODMgMS4wMSA4LjY3IDEgOC41IDEgNS4wOCAxIDIuMjcgMy42NiAyLjAyIDcuMDJ6XFxcIj48L3BhdGg+PC9zeW1ib2w+PHN5bWJvbCB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGlkPVxcXCJzYS1zdmctbm9uY29tbWVyY2lhbFxcXCI+PHBhdGggZD1cXFwiTTggMEwwIDE1aDE2TDggMHptMSAxM0g3di0yaDJ2MnptLTItM1Y1aDJ2NUg3elxcXCI+PC9wYXRoPjwvc3ltYm9sPjxzeW1ib2wgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBpZD1cXFwic2Etc3ZnLXNvcnRpbmdcXFwiPjxwYXRoIGQ9XFxcIk04IDNsMiAyIDEtMS0zLTMtMyAzIDEgMXpNOCAxM2wtMi0yLTEgMSAzIDMgMy0zLTEtMXpcXFwiPjwvcGF0aD48L3N5bWJvbD48L3N2Zz5cIjsiLCJpbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIGFyYWJpY1N0cmluZ3MgPSB7XG4gIGdyb3VwQnV0dG9uOiBcItiy2LHYp9ixINin2YTZhdis2YXZiNi52KlcIixcbiAgdW5ncm91cEJ1dHRvbjogXCLYqtmFINin2YTYqtit2K/ZitirINmF2YYg2K7ZhNin2YTZiVwiLFxuICBzZWxlY3RCdXR0b246IFwi2KfYrtiq2LFcIixcbiAgaGlkZUNvbHVtbjogXCLYp9iu2YHYp9ihINin2YTYudmF2YjYr1wiLFxuICBzaG93Q29sdW1uOiBcItin2LjZh9in2LFcIixcbiAgbWFrZVByaXZhdGVDb2x1bW46IFwi2KPYrNi52YQg2KfZhNi52YXZiNivINiu2KfYtVwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcItij2KzYudmEINin2YTYudmF2YjYryDYudin2YVcIixcbiAgbW92ZVRvRGV0YWlsOiBcItin2YbYqtmC2YQg2KXZhNmJINin2YTYqtmB2KfYtdmK2YRcIixcbiAgc2hvd0FzQ29sdW1uOiBcItil2LjZh9in2LEg2YPYudmF2YjYr1wiLFxuICBmaWx0ZXJQbGFjZWhvbGRlcjogXCLYqNit2KsuLi5cIixcbiAgcmVtb3ZlUm93czogXCLYrdiw2YFcIixcbiAgc2hvd0xhYmVsOiBcItin2LjZh9in2LFcIixcbiAgZW50cmllc0xhYmVsOiBcItmF2K/YrtmE2KfYqlwiLFxuICB2aXN1YWxpemVyX3RleHQ6IFwi2KzYr9in2YjZhFwiLFxuICB2aXN1YWxpemVyX3dvcmRjbG91ZDogXCLZg9mE2YXYp9iqXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcItin2YTYsdiz2YUg2KfZhNio2YrYp9mG2YpcIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwi2YXYqtmI2LPYt1wiLFxuICB2aXN1YWxpemVyX2Nob2ljZXM6IFwi2KzYr9mI2YRcIixcbiAgdmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcItix2LPZhSDYqNmK2KfZhtmKXCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwi2LTYsdmK2LdcIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwi2LTYsdmK2Lcg2LnZhdmI2K/ZilwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCLYtNix2YrYtyDZhdmD2K/Ys1wiLFxuICBjaGFydFR5cGVfZG91Z2hudXQ6IFwiRG91Z2hudXRcIixcbiAgY2hhcnRUeXBlX3BpZTogXCJQaWVcIixcbiAgY2hhcnRUeXBlX3NjYXR0ZXI6IFwiU2NhdHRlclwiLFxuICBjaGFydFR5cGVfZ2F1Z2U6IFwiR2F1Z2VcIixcbiAgY2hhcnRUeXBlX2J1bGxldDogXCJCdWxsZXRcIixcbiAgaGlkZUJ1dHRvbjogXCLYp9iu2YHYp9ihXCIsXG4gIG1ha2VQcml2YXRlQnV0dG9uOiBcItij2KzYudmEINiu2KfYtVwiLFxuICBtYWtlUHVibGljQnV0dG9uOiBcItij2KzYudmEINi52KfZhVwiLFxuICBzaG93QnV0dG9uOiBcItin2LjZh9in2LFcIixcbiAgZmlsdGVyOiBcItiq2LHYtNitXCIsXG4gIHJlc2V0RmlsdGVyOiBcItil2LnYp9iv2Kkg2KrYudmK2YrZhlwiLFxuICBjaGFuZ2VMb2NhbGU6IFwi2KrYutmK2YrYsSDYp9mE2YTYutipXCIsXG4gIGNsZWFyQnV0dG9uOiBcItmF2LPYrVwiLFxuICBhZGRFbGVtZW50OiBcItin2K7YqtixINiz2KTYp9mE2KfZiyDZhNmE2LnYsdi2IC4uLlwiLFxuICBkZWZhdWx0T3JkZXI6IFwi2KfZhNiq2LHYqtmK2Kgg2KfZhNin2YHYqtix2KfYttmKXCIsXG4gIGFzY09yZGVyOiBcItiq2LXYp9i52K/ZiVwiLFxuICBkZXNjT3JkZXI6IFwi2KrZhtin2LLZhNmJXCIsXG4gIHNob3dNaW5vckNvbHVtbnM6IFwi2KXYuNmH2KfYsSDYp9mE2KPYudmF2K/YqSDYp9mE2KvYp9mG2YjZitipXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcItio2YbZiNivINmI2KrYudmE2YrZgtin2Kog2KPYrtix2YlcIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcIti52LHYtiDYp9mE2YbYs9ioINin2YTZhdim2YjZitipXCIsXG4gIGhpZGVQZXJjZW50YWdlczogXCLYpdiu2YHYp9ihINin2YTZhtiz2KhcIixcbiAgcGRmRG93bmxvYWRDYXB0aW9uOiBcIlBERlwiLFxuICB4bHN4RG93bmxvYWRDYXB0aW9uOiBcIkV4Y2VsXCIsXG4gIGNzdkRvd25sb2FkQ2FwdGlvbjogXCJDU1ZcIixcbiAgc2F2ZURpYWdyYW1Bc1BORzogXCLYqtmG2LLZitmEINio2LXZiti62KkgcG5nXCIsXG4gIGhpZGVFbXB0eUFuc3dlcnM6IFwi2KXYrtmB2KfYoSDYp9mE2KXYrNin2KjYp9iqINin2YTZgdin2LHYutipXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwi2KXYuNmH2KfYsSDYp9mE2KXYrNin2KjYp9iqINin2YTZgdin2LHYutipXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwi2KzZhdmK2Lkg2KfZhNil2KzYp9io2KfYqlwiLFxuICB0b3BOVmFsdWVUZXh0NTogXCLYo9mH2YUgNSDYpdis2KfYqNin2KpcIixcbiAgdG9wTlZhbHVlVGV4dDEwOiBcItij2YHYttmEIDEwINil2KzYp9io2KfYqlwiLFxuICB0b3BOVmFsdWVUZXh0MjA6IFwi2KPZgdi22YQgMjAg2KXYrNin2KjYqVwiLFxuICBoaWRlTWlzc2luZ0Fuc3dlcnM6IFwi2KXYrtmB2KfYoSDYp9mE2KXYrNin2KjYp9iqINin2YTZhdmB2YLZiNiv2KlcIixcbiAgc2hvd01pc3NpbmdBbnN3ZXJzOiBcIti52LHYtiDYp9mE2KXYrNin2KjYp9iqINin2YTZhdmB2YLZiNiv2KlcIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCLYo9is2YjYqNipINmF2YHZgtmI2K/YqVwiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCLZhNmFINmK2KrZhSDYp9mE2LnYsdi2INio2LnYr1wiLFxuICBub1Jlc3VsdHM6IFwi2YTYpyDZitmI2KzYryDZhtiq2KfYptisINmE2YTYudix2LZcIixcbiAgc2hvd1BlclZhbHVlczogXCLZhNmD2YQg2KfZhNmC2YrZhVwiLFxuICBzaG93UGVyQ29sdW1uczogXCLZhNmD2YQg2KfZhNij2LnZhdiv2KlcIixcbiAgYW5zd2VyOiBcItil2KzYqFwiLFxuICBjb3JyZWN0QW5zd2VyOiBcItin2YTYp9is2KfYqNipINin2YTYtdit2YrYrdipOiBcIixcbiAgcGVyY2VudDogXCLYp9mE2YbYs9io2Ycg2KfZhNmF2KbZiNmK2YdcIixcbiAgcmVzcG9uc2VzOiBcItin2YTYp9iz2KrYrNin2KjYp9iqXCJcbn07XG5cbmxvY2FsaXphdGlvbi5sb2NhbGVzW1wiYXJcIl0gPSBhcmFiaWNTdHJpbmdzO1xubG9jYWxpemF0aW9uLmxvY2FsZU5hbWVzW1wiYXJcIl0gPSBcItin2YTYudix2KjZitipXCI7XG5cbi8vIFRoZSBmb2xsb3dpbmcgc3RyaW5ncyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBieSBhIG1hY2hpbmUgdHJhbnNsYXRpb24gc2VydmljZVxuLy8gUmVtb3ZlIHRob3NlIHN0cmluZ3MgdGhhdCB5b3UgaGF2ZSBjb3JyZWN0ZWQgbWFudWFsbHlcbi8vIHVuZGVmaW5lZC50b3BOVmFsdWVUZXh0LTE6IFwiQWxsIGFuc3dlcnNcIiA9PiBcItis2YXZiti5INin2YTYpdis2KfYqNin2KpcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQ1OiBcIlRvcCA1IGFuc3dlcnNcIiA9PiBcItij2YfZhSA1INil2KzYp9io2KfYqlwiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dDEwOiBcIlRvcCAxMCBhbnN3ZXJzXCIgPT4gXCLYo9mB2LbZhCAxMCDYpdis2KfYqNin2KpcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQyMDogXCJUb3AgMjAgYW5zd2Vyc1wiID0+IFwi2KPZgdi22YQgMjAg2KXYrNin2KjYqVwiIiwiaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcblxuZXhwb3J0IHZhciBkdXRjaFN0cmluZ3MgPSB7XG4gIGdyb3VwQnV0dG9uOiBcIkdyb2VwIGRvb3IgbWlqXCIsXG4gIHVuZ3JvdXBCdXR0b246IFwiRGVncm9lcGVyZW4gYmlqIG1palwiLFxuICBzZWxlY3RCdXR0b246IFwiU2VsZWN0ZWVyIG1palwiLFxuICBoaWRlQ29sdW1uOiBcIktvbG9tIHZlcmJlcmdlblwiLFxuICBzaG93Q29sdW1uOiBcIlRvb24ga29sb21cIixcbiAgbWFrZVByaXZhdGVDb2x1bW46IFwiS29sb20gcHJpdsOpIG1ha2VuXCIsXG4gIG1ha2VQdWJsaWNDb2x1bW46IFwiTWFhayBkZSBrb2xvbSBvcGVuYmFhclwiLFxuICBtb3ZlVG9EZXRhaWw6IFwiR2EgbmFhciBEZXRhaWxcIixcbiAgc2hvd0FzQ29sdW1uOiBcIldlZXJnZXZlbiBhbHMga29sb21cIixcbiAgZmlsdGVyUGxhY2Vob2xkZXI6IFwiWm9la2VuLi4uXCIsXG4gIHJlbW92ZVJvd3M6IFwiVmVyd2lqZGVyIHJpamVuXCIsXG4gIHNob3dMYWJlbDogXCJUb25lblwiLFxuICBlbnRyaWVzTGFiZWw6IFwiaW56ZW5kaW5nZW5cIixcbiAgdmlzdWFsaXplcl90ZXh0OiBcIlRla3N0ZW4gaW4gdGFiZWxcIixcbiAgdmlzdWFsaXplcl93b3JkY2xvdWQ6IFwiV29yZGNsb3VkXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbVwiLFxuICB2aXN1YWxpemVyX251bWJlcjogXCJHZW1pZGRlbGRcIixcbiAgdmlzdWFsaXplcl9jaG9pY2VzOiBcIlRhZmVsXCIsXG4gIHZpc3VhbGl6ZXJfc2VsZWN0QmFzZTogXCJaZWVrYWFydFwiLFxuICBjaGFydFR5cGVfYmFyOiBcIkJhclwiLFxuICBjaGFydFR5cGVfdmJhcjogXCJWZXJ0aWNhbGUgYmFsa1wiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCJHZXN0YXBlbGRlIEJhclwiLFxuICBjaGFydFR5cGVfZG91Z2hudXQ6IFwiRG9udXRcIixcbiAgY2hhcnRUeXBlX3BpZTogXCJUYWFydFwiLFxuICBjaGFydFR5cGVfc2NhdHRlcjogXCJWZXJzdHJvb2llblwiLFxuICBjaGFydFR5cGVfZ2F1Z2U6IFwiTWV0ZXJcIixcbiAgY2hhcnRUeXBlX2J1bGxldDogXCJLb2dlbFwiLFxuICBoaWRlQnV0dG9uOiBcIlZlcmJlcmdlblwiLFxuICBtYWtlUHJpdmF0ZUJ1dHRvbjogXCJNYWFrIHByaXZlXCIsXG4gIG1ha2VQdWJsaWNCdXR0b246IFwiT3BlbmJhYXIgbWFrZW5cIixcbiAgc2hvd0J1dHRvbjogXCJUb25lblwiLFxuICBmaWx0ZXI6IFwiRmlsdGVyXCIsXG4gIHJlc2V0RmlsdGVyOiBcIkZpbHRlciByZXNldHRlblwiLFxuICBjaGFuZ2VMb2NhbGU6IFwiV2lqemlnIGRlIGxhbmRpbnN0ZWxsaW5nXCIsXG4gIGNsZWFyQnV0dG9uOiBcIkRvb3J6aWNodGlnXCIsXG4gIGFkZEVsZW1lbnQ6IFwiS2llcyBlZW4gdnJhYWcgb20gd2VlciB0ZSBnZXZlbiAuLi5cIixcbiAgZGVmYXVsdE9yZGVyOiBcIlN0YW5kYWFyZHZvbGdvcmRlXCIsXG4gIGFzY09yZGVyOiBcIk9wbG9wZW5kXCIsXG4gIGRlc2NPcmRlcjogXCJBZmxvcGVuZFwiLFxuICBzaG93TWlub3JDb2x1bW5zOiBcIlRvb24ga2xlaW5lIGtvbG9tbWVuXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcIkFuZGVyZSBpdGVtcyBlbiBvcG1lcmtpbmdlblwiLFxuICBzaG93UGVyY2VudGFnZXM6IFwiUGVyY2VudGFnZXMgd2VlcmdldmVuXCIsXG4gIGhpZGVQZXJjZW50YWdlczogXCJWZXJiZXJnIHBlcmNlbnRhZ2VzXCIsXG4gIHBkZkRvd25sb2FkQ2FwdGlvbjogXCJQREZcIixcbiAgeGxzeERvd25sb2FkQ2FwdGlvbjogXCJFeGNlbFwiLFxuICBjc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIsXG4gIHNhdmVEaWFncmFtQXNQTkc6IFwiRG93bmxvYWQgcGxvdCBhbHMgZWVuIHBuZ1wiLFxuICBoaWRlRW1wdHlBbnN3ZXJzOiBcIlZlcmJlcmcgbGVnZSBhbnR3b29yZGVuXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwiVG9vbiBsZWdlIGFudHdvb3JkZW5cIixcbiAgXCJ0b3BOVmFsdWVUZXh0LTFcIjogXCJBbGxlIGFudHdvb3JkZW5cIixcbiAgdG9wTlZhbHVlVGV4dDU6IFwiVG9wIDUgYW50d29vcmRlblwiLFxuICB0b3BOVmFsdWVUZXh0MTA6IFwiVG9wIDEwIGFudHdvb3JkZW5cIixcbiAgdG9wTlZhbHVlVGV4dDIwOiBcIlRvcCAyMCBhbnR3b29yZGVuXCIsXG4gIGhpZGVNaXNzaW5nQW5zd2VyczogXCJPbnRicmVrZW5kZSBhbnR3b29yZGVuIHZlcmJlcmdlblwiLFxuICBzaG93TWlzc2luZ0Fuc3dlcnM6IFwiT250YnJla2VuZGUgYW50d29vcmRlbiB3ZWVyZ2V2ZW5cIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCJPbnRicmVrZW5kZSBhbnR3b29yZGVuXCIsXG4gIG5vVmlzdWFsaXplckZvclF1ZXN0aW9uOiBcIkRpdCB2cmFhZ3R5cGUgaXMgbm9nIG5pZXQgZ2V2aXN1YWxpc2VlcmRcIixcbiAgbm9SZXN1bHRzOiBcIkVyIHppam4gbm9nIGdlZW4gcmVzdWx0YXRlblwiLFxuICBzaG93UGVyVmFsdWVzOiBcIlBlciB3YWFyZGVuXCIsXG4gIHNob3dQZXJDb2x1bW5zOiBcIlBlciBLb2xvbW1lblwiLFxuICBhbnN3ZXI6IFwiQW50d29vcmRlblwiLFxuICBjb3JyZWN0QW5zd2VyOiBcIkdvZWQgYW50d29vcmQ6IFwiLFxuICBwZXJjZW50OiBcIlByb2NlbnRcIixcbiAgcmVzcG9uc2VzOiBcIlJlYWN0aWVzXCJcbn07XG5cbi8vVW5jb21tZW50IHRoZXNlIHR3byBsaW5lcyBvbiBjcmVhdGluZyBhIHRyYW5zbGF0aW9uIGZpbGUuIFlvdSBzaG91bGQgcmVwbGFjZSBcImVuXCIgYW5kIGVuU3RyaW5ncyB3aXRoIHlvdXIgbG9jYWxlIChcImZyXCIsIFwiZGVcIiBhbmQgc28gb24pIGFuZCB5b3VyIHZhcmlhYmxlLlxubG9jYWxpemF0aW9uLmxvY2FsZXNbXCJubFwiXSA9IGR1dGNoU3RyaW5ncztcbmxvY2FsaXphdGlvbi5sb2NhbGVOYW1lc1tcIm5sXCJdID0gXCJOZWRlcmxhbmRzXCI7XG5cbi8vIFRoZSBmb2xsb3dpbmcgc3RyaW5ncyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBieSBhIG1hY2hpbmUgdHJhbnNsYXRpb24gc2VydmljZVxuLy8gUmVtb3ZlIHRob3NlIHN0cmluZ3MgdGhhdCB5b3UgaGF2ZSBjb3JyZWN0ZWQgbWFudWFsbHlcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX2hpc3RvZ3JhbTogXCJIaXN0b2dyYW1cIiA9PiBcIkhpc3RvZ3JhbVwiXG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9udW1iZXI6IFwiQXZlcmFnZVwiID0+IFwiR2VtaWRkZWxkXCJcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX2Nob2ljZXM6IFwiVGFibGVcIiA9PiBcIlRhZmVsXCJcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwiQ2hhcnRcIiA9PiBcIlplZWthYXJ0XCJcbi8vIHVuZGVmaW5lZC5jaGFydFR5cGVfdmJhcjogXCJWZXJ0aWNhbCBCYXJcIiA9PiBcIlZlcnRpY2FsZSBiYWxrXCJcbi8vIHVuZGVmaW5lZC5maWx0ZXI6IFwiRmlsdGVyXCIgPT4gXCJGaWx0ZXJcIlxuLy8gdW5kZWZpbmVkLmhpZGVNaXNzaW5nQW5zd2VyczogXCJIaWRlIG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiT250YnJla2VuZGUgYW50d29vcmRlbiB2ZXJiZXJnZW5cIlxuLy8gdW5kZWZpbmVkLnNob3dNaXNzaW5nQW5zd2VyczogXCJTaG93IG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiT250YnJla2VuZGUgYW50d29vcmRlbiB3ZWVyZ2V2ZW5cIlxuLy8gdW5kZWZpbmVkLm1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwiTWlzc2luZyBhbnN3ZXJzXCIgPT4gXCJPbnRicmVrZW5kZSBhbnR3b29yZGVuXCJcbi8vIHVuZGVmaW5lZC5ub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCJUaGlzIHF1ZXN0aW9uIHR5cGUgaXMgbm90IHZpc3VhbGl6ZWQgeWV0XCIgPT4gXCJEaXQgdnJhYWd0eXBlIGlzIG5vZyBuaWV0IGdldmlzdWFsaXNlZXJkXCJcbi8vIHVuZGVmaW5lZC5ub1Jlc3VsdHM6IFwiVGhlcmUgYXJlIG5vIHJlc3VsdHMgeWV0XCIgPT4gXCJFciB6aWpuIG5vZyBnZWVuIHJlc3VsdGF0ZW5cIlxuLy8gdW5kZWZpbmVkLnNob3dQZXJWYWx1ZXM6IFwiUGVyIFZhbHVlc1wiID0+IFwiUGVyIHdhYXJkZW5cIlxuLy8gdW5kZWZpbmVkLnNob3dQZXJDb2x1bW5zOiBcIlBlciBDb2x1bW5zXCIgPT4gXCJQZXIgS29sb21tZW5cIlxuLy8gdW5kZWZpbmVkLmFuc3dlcjogXCJBbnN3ZXJcIiA9PiBcIkFudHdvb3JkZW5cIlxuLy8gdW5kZWZpbmVkLmNvcnJlY3RBbnN3ZXI6IFwiQ29ycmVjdCBhbnN3ZXI6IFwiID0+IFwiR29lZCBhbnR3b29yZDogXCJcbi8vIHVuZGVmaW5lZC5wZXJjZW50OiBcIlBlcmNlbnRcIiA9PiBcIlByb2NlbnRcIlxuLy8gdW5kZWZpbmVkLnJlc3BvbnNlczogXCJSZXNwb25zZXNcIiA9PiBcIlJlYWN0aWVzXCIiLCIvLyBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IGNyZWF0ZSBhIGN1c3RvbSBkaWN0aW9uYXJ5XG4vLyBpbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIGVuZ2xpc2hTdHJpbmdzID0ge1xuICBncm91cEJ1dHRvbjogXCJHcm91cCBCeSBNZVwiLFxuICB1bmdyb3VwQnV0dG9uOiBcIlVuZ3JvdXAgQnkgTWVcIixcbiAgc2VsZWN0QnV0dG9uOiBcIlNlbGVjdCBNZVwiLFxuICBoaWRlQ29sdW1uOiBcIkhpZGUgY29sdW1uXCIsXG4gIHNob3dDb2x1bW46IFwiU2hvdyBjb2x1bW5cIixcbiAgbWFrZVByaXZhdGVDb2x1bW46IFwiTWFrZSBjb2x1bW4gcHJpdmF0ZVwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcIk1ha2UgY29sdW1uIHB1YmxpY1wiLFxuICBtb3ZlVG9EZXRhaWw6IFwiTW92ZSB0byBEZXRhaWxcIixcbiAgc2hvd0FzQ29sdW1uOiBcIlNob3cgYXMgQ29sdW1uXCIsXG4gIGZpbHRlclBsYWNlaG9sZGVyOiBcIlNlYXJjaC4uLlwiLFxuICByZW1vdmVSb3dzOiBcIlJlbW92ZSByb3dzXCIsXG4gIHNob3dMYWJlbDogXCJTaG93XCIsXG4gIGVudHJpZXNMYWJlbDogXCJlbnRyaWVzXCIsXG4gIHZpc3VhbGl6ZXJfdGV4dDogXCJUZXh0cyBpbiB0YWJsZVwiLFxuICB2aXN1YWxpemVyX3dvcmRjbG91ZDogXCJXb3JkY2xvdWRcIixcbiAgdmlzdWFsaXplcl9oaXN0b2dyYW06IFwiSGlzdG9ncmFtXCIsXG4gIHZpc3VhbGl6ZXJfbnVtYmVyOiBcIkF2ZXJhZ2VcIixcbiAgdmlzdWFsaXplcl9jaG9pY2VzOiBcIlRhYmxlXCIsXG4gIHZpc3VhbGl6ZXJfc2VsZWN0QmFzZTogXCJDaGFydFwiLFxuICBjaGFydFR5cGVfYmFyOiBcIkJhclwiLFxuICBjaGFydFR5cGVfdmJhcjogXCJWZXJ0aWNhbCBCYXJcIixcbiAgY2hhcnRUeXBlX3N0YWNrZWRiYXI6IFwiU3RhY2tlZCBCYXJcIixcbiAgY2hhcnRUeXBlX2RvdWdobnV0OiBcIkRvdWdobnV0XCIsXG4gIGNoYXJ0VHlwZV9waWU6IFwiUGllXCIsXG4gIGNoYXJ0VHlwZV9zY2F0dGVyOiBcIlNjYXR0ZXJcIixcbiAgY2hhcnRUeXBlX2dhdWdlOiBcIkdhdWdlXCIsXG4gIGNoYXJ0VHlwZV9idWxsZXQ6IFwiQnVsbGV0XCIsXG4gIGhpZGVCdXR0b246IFwiSGlkZVwiLFxuICBtYWtlUHJpdmF0ZUJ1dHRvbjogXCJNYWtlIHByaXZhdGVcIixcbiAgbWFrZVB1YmxpY0J1dHRvbjogXCJNYWtlIHB1YmxpY1wiLFxuICBzaG93QnV0dG9uOiBcIlNob3dcIixcbiAgZmlsdGVyOiBcIkZpbHRlclwiLFxuICByZXNldEZpbHRlcjogXCJSZXNldCBGaWx0ZXJcIixcbiAgY2hhbmdlTG9jYWxlOiBcIkNoYW5nZSBMb2NhbGVcIixcbiAgY2xlYXJCdXR0b246IFwiQ2xlYXJcIixcbiAgYWRkRWxlbWVudDogXCJDaG9vc2UgcXVlc3Rpb24gdG8gc2hvdy4uLlwiLFxuICBkZWZhdWx0T3JkZXI6IFwiRGVmYXVsdCBPcmRlclwiLFxuICBhc2NPcmRlcjogXCJBc2NlbmRpbmdcIixcbiAgZGVzY09yZGVyOiBcIkRlc2NlbmRpbmdcIixcbiAgc2hvd01pbm9yQ29sdW1uczogXCJTaG93IG1pbm9yIGNvbHVtbnNcIixcbiAgb3RoZXJDb21tZW50VGl0bGU6IFwiT3RoZXIgaXRlbXMgYW5kIGNvbW1lbnRzXCIsXG4gIHNob3dQZXJjZW50YWdlczogXCJTaG93IHBlcmNlbnRhZ2VzXCIsXG4gIGhpZGVQZXJjZW50YWdlczogXCJIaWRlIHBlcmNlbnRhZ2VzXCIsXG4gIHBkZkRvd25sb2FkQ2FwdGlvbjogXCJQREZcIixcbiAgeGxzeERvd25sb2FkQ2FwdGlvbjogXCJFeGNlbFwiLFxuICBjc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIsXG4gIHNhdmVEaWFncmFtQXNQTkc6IFwiRG93bmxvYWQgcGxvdCBhcyBhIFBORyBmaWxlXCIsXG4gIGhpZGVFbXB0eUFuc3dlcnM6IFwiSGlkZSBlbXB0eSBhbnN3ZXJzXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwiU2hvdyBlbXB0eSBhbnN3ZXJzXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwiQWxsIGFuc3dlcnNcIixcbiAgXCJ0b3BOVmFsdWVUZXh0NVwiOiBcIlRvcCA1IGFuc3dlcnNcIixcbiAgXCJ0b3BOVmFsdWVUZXh0MTBcIjogXCJUb3AgMTAgYW5zd2Vyc1wiLFxuICBcInRvcE5WYWx1ZVRleHQyMFwiOiBcIlRvcCAyMCBhbnN3ZXJzXCIsXG4gIGhpZGVNaXNzaW5nQW5zd2VyczogXCJIaWRlIG1pc3NpbmcgYW5zd2Vyc1wiLFxuICBzaG93TWlzc2luZ0Fuc3dlcnM6IFwiU2hvdyBtaXNzaW5nIGFuc3dlcnNcIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCJNaXNzaW5nIGFuc3dlcnNcIixcbiAgbm9WaXN1YWxpemVyRm9yUXVlc3Rpb246IFwiVGhpcyBxdWVzdGlvbiB0eXBlIGlzIG5vdCB2aXN1YWxpemVkIHlldFwiLFxuICBub1Jlc3VsdHM6IFwiVGhlcmUgYXJlIG5vIHJlc3VsdHMgeWV0XCIsXG4gIHNob3dQZXJWYWx1ZXM6IFwiUGVyIFZhbHVlc1wiLFxuICBzaG93UGVyQ29sdW1uczogXCJQZXIgQ29sdW1uc1wiLFxuICBhbnN3ZXI6IFwiQW5zd2VyXCIsXG4gIGNvcnJlY3RBbnN3ZXI6IFwiQ29ycmVjdCBhbnN3ZXI6IFwiLFxuICBwZXJjZW50OiBcIlBlcmNlbnRcIixcbiAgcmVzcG9uc2VzOiBcIlJlc3BvbnNlc1wiXG59O1xuXG4vLyBVbmNvbW1lbnQgdGhlIGxpbmVzIGJlbG93IGlmIHlvdSBjcmVhdGUgYSBjdXN0b20gZGljdGlvbmFyeS5cbi8vIFJlcGxhY2UgXCJlblwiIHdpdGggYSBjdXN0b20gbG9jYWxlIGNvZGUgKGZvciBleGFtcGxlLCBcImZyXCIgb3IgXCJkZVwiKSxcbi8vIFJlcGxhY2UgYGVuZ2xpc2hTdHJpbmdzYCB3aXRoIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0aGF0IGNvbnRhaW5zIHRoZSBjdXN0b20gZGljdGlvbmFyeS5cbi8vIGxvY2FsaXphdGlvbi5sb2NhbGVzW1wiZW5cIl0gPSBlbmdsaXNoU3RyaW5ncztcbi8vIGxvY2FsaXphdGlvbi5sb2NhbGVOYW1lc1tcImVuXCJdID0gXCJFbmdsaXNoXCI7XG4iLCJpbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIGZhcnNpU3RyaW5ncyA9IHtcbiAgZ3JvdXBCdXR0b246IFwi2q/YsdmI2Ycg2KjZhtiv24wg2KjYp1wiLFxuICB1bmdyb3VwQnV0dG9uOiBcItit2LDZgSDar9ix2YjZh1wiLFxuICBzZWxlY3RCdXR0b246IFwi2KfZhtiq2K7Yp9ioXCIsXG4gIGhpZGVDb2x1bW46IFwi2YXYrtmB24wg2qnYsdiv2YYg2LPYqtmI2YZcIixcbiAgc2hvd0NvbHVtbjogXCLZhtmF2KfbjNi0INiz2KrZiNmGXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcItiu2LXZiNi124wg2qnYsdiv2YYg2LPYqtmI2YZcIixcbiAgbWFrZVB1YmxpY0NvbHVtbjogXCLYudmF2YjZhduMINqp2LHYr9mGINiz2KrZiNmGXCIsXG4gIG1vdmVUb0RldGFpbDogXCLYp9mG2KrZgtin2YQg2KjZhyDYrNiy2KbbjNin2KpcIixcbiAgc2hvd0FzQ29sdW1uOiBcItmG2YXYp9uM2LQg2KjZhyDYudmG2YjYp9mGINiz2KrZiNmGXCIsXG4gIGZpbHRlclBsYWNlaG9sZGVyOiBcItis2LPYqtis2YguLi5cIixcbiAgcmVtb3ZlUm93czogXCLYrdiw2YEg2LPYt9ix2YfYp1wiLFxuICBzaG93TGFiZWw6IFwi2YbZhdin24zYtFwiLFxuICBlbnRyaWVzTGFiZWw6IFwi2YjYsdmI2K/bjFwiLFxuICB2aXN1YWxpemVyX3RleHQ6IFwi2YXYqtmI2YYg2K/YsSDYrNiv2YjZhFwiLFxuICB2aXN1YWxpemVyX3dvcmRjbG91ZDogXCLYp9io2LEg2qnZhNmF2KfYqlwiLFxuICB2aXN1YWxpemVyX2hpc3RvZ3JhbTogXCLZh9uM2LPYqtmI2q/Ysdin2YVcIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwi2YXYqtmI2LPYt1wiLFxuICB2aXN1YWxpemVyX2Nob2ljZXM6IFwi2KzYr9mI2YRcIixcbiAgdmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcItmG2YXZiNiv2KfYsVwiLFxuICBjaGFydFR5cGVfYmFyOiBcItmF24zZhNmHINin24xcIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwi2YbZiNin2LEg2LnZhdmI2K/bjFwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCLZhtmI2KfYsSDZvti02KrZh1wiLFxuICBjaGFydFR5cGVfZG91Z2hudXQ6IFwi2K/ZiNmG2KfYqlwiLFxuICBjaGFydFR5cGVfcGllOiBcItiv2KfYqNix2Ycg2KfbjChwaWUpXCIsXG4gIGNoYXJ0VHlwZV9zY2F0dGVyOiBcItm+2LHYp9qp2YbYr9qv24woU2NhdHRlcilcIixcbiAgY2hhcnRUeXBlX2dhdWdlOiBcIti52YLYsdio2Ycg2KfbjFwiLFxuICBjaGFydFR5cGVfYnVsbGV0OiBcIkJ1bGxldFwiLFxuICBoaWRlQnV0dG9uOiBcItmF2K7ZgduMXCIsXG4gIG1ha2VQcml2YXRlQnV0dG9uOiBcItiu2LXZiNi124wg2qnYsdiv2YZcIixcbiAgbWFrZVB1YmxpY0J1dHRvbjogXCLYudmF2YjZhduMINqp2LHYr9mGXCIsXG4gIHNob3dCdXR0b246IFwi2YbZhdin24zYtFwiLFxuICBmaWx0ZXI6IFwi2YHbjNmE2KrYsVwiLFxuICByZXNldEZpbHRlcjogXCLYqNin2LLZhti02KfZhtuMINmB24zZhNiq2LHZh9inXCIsXG4gIGNoYW5nZUxvY2FsZTogXCLYqti624zbjNixINmF2K3ZhNuMXCIsXG4gIGNsZWFyQnV0dG9uOiBcItm+2KfaqSDaqdix2K/ZhlwiLFxuICBhZGRFbGVtZW50OiBcItin2YbYqtiu2KfYqCDYs9mI2KfZhCDYqNix2KfbjCDZhtmF2KfbjNi0Li4uXCIsXG4gIGRlZmF1bHRPcmRlcjogXCLYqtix2KrbjNioINm+24zYtNmB2LHYtlwiLFxuICBhc2NPcmRlcjogXCLYtdi52YjYr9uMXCIsXG4gIGRlc2NPcmRlcjogXCLZhtiy2YjZhNuMXCIsXG4gIHNob3dNaW5vckNvbHVtbnM6IFwi2YbZhdin24zYtCDYs9iq2YjZhtmH2KfbjCDZgdix2LnbjFwiLFxuICBvdGhlckNvbW1lbnRUaXRsZTogXCLYs9in24zYsSDZhdmI2KfYsdivINmIINmG2LjYsdin2KpcIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcItmG2YXYp9uM2LQg2K/Ysdi12K9cIixcbiAgaGlkZVBlcmNlbnRhZ2VzOiBcItiv2LHYtdiv2YfYp9uMINmF2K7ZgduMXCIsXG4gIHBkZkRvd25sb2FkQ2FwdGlvbjogXCLZvtuMINiv24wg2KfZgVwiLFxuICB4bHN4RG93bmxvYWRDYXB0aW9uOiBcItin2qnYs9mEXCIsXG4gIGNzdkRvd25sb2FkQ2FwdGlvbjogXCJDc3ZcIixcbiAgc2F2ZURpYWdyYW1Bc1BORzogXCLYr9in2YbZhNmI2K8g2LfYsditINio2Ycg2LnZhtmI2KfZhiDbjNqpINmB2KfbjNmEIFBOR1wiLFxuICBoaWRlRW1wdHlBbnN3ZXJzOiBcItmF2K7ZgduMINqp2LHYr9mGINm+2KfYs9iu2YfYp9uMINiu2KfZhNuMXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwi2YbZhdin24zYtCDZvtin2LPYrtmH2KfbjCDYrtin2YTbjFwiLFxuICBcInRvcE5WYWx1ZVRleHQtMVwiOiBcItmH2YXZhyDZvtin2LPYriDZh9inXCIsXG4gIHRvcE5WYWx1ZVRleHQ1OiBcIjUg2b7Yp9iz2K4g2KjYsdiq2LFcIixcbiAgdG9wTlZhbHVlVGV4dDEwOiBcIjEwINm+2KfYs9iuINio2LHYqtixXCIsXG4gIHRvcE5WYWx1ZVRleHQyMDogXCIyMCDZvtin2LPYriDYqNix2KrYsVwiLFxuICBoaWRlTWlzc2luZ0Fuc3dlcnM6IFwi2YXYrtmB24wg2qnYsdiv2YYg2b7Yp9iz2K7Zh9in24wg2q/Zhdi02K/Zh1wiLFxuICBzaG93TWlzc2luZ0Fuc3dlcnM6IFwi2YbZhdin24zYtCDZvtin2LPYrtmH2KfbjCDar9mF2LTYr9mHXCIsXG4gIG1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwi2b7Yp9iz2K4g2YfYp9uMINqv2YXYtNiv2YdcIixcbiAgbm9WaXN1YWxpemVyRm9yUXVlc3Rpb246IFwi2KfbjNmGINmG2YjYuSDYs9mI2KfZhCDZh9mG2YjYsiDYqtis2LPZhSDZhti02K/ZhyDYp9iz2KpcIixcbiAgbm9SZXN1bHRzOiBcItmH2YbZiNiyINmG2KrbjNis2Ycg2KfbjCDYrdin2LXZhCDZhti02K/ZhyDYp9iz2KpcIixcbiAgc2hvd1BlclZhbHVlczogXCLYqNmHINin2LLYp9uMINmH2LEg2KfYsdiy2LRcIixcbiAgc2hvd1BlckNvbHVtbnM6IFwi2K/YsSDZh9ixINiz2KrZiNmGXCIsXG4gIGFuc3dlcjogXCLZvtin2LPYrlwiLFxuICBjb3JyZWN0QW5zd2VyOiBcItm+2KfYs9iuINi12K3bjNitOiBcIixcbiAgcGVyY2VudDogXCLYr9ix2LXYr1wiLFxuICByZXNwb25zZXM6IFwi2b7Yp9iz2K5cIlxufTtcblxubG9jYWxpemF0aW9uLmxvY2FsZXNbXCJmYVwiXSA9IGZhcnNpU3RyaW5ncztcbmxvY2FsaXphdGlvbi5sb2NhbGVOYW1lc1tcImZhXCJdID0gXCLZgdin2LHYs9uMXCI7XG5cbi8vIFRoZSBmb2xsb3dpbmcgc3RyaW5ncyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBieSBhIG1hY2hpbmUgdHJhbnNsYXRpb24gc2VydmljZVxuLy8gUmVtb3ZlIHRob3NlIHN0cmluZ3MgdGhhdCB5b3UgaGF2ZSBjb3JyZWN0ZWQgbWFudWFsbHlcbi8vIHVuZGVmaW5lZC5tYWtlUHJpdmF0ZUNvbHVtbjogXCJNYWtlIGNvbHVtbiBwcml2YXRlXCIgPT4gXCLYrti12YjYtduMINqp2LHYr9mGINiz2KrZiNmGXCJcbi8vIHVuZGVmaW5lZC5tYWtlUHVibGljQ29sdW1uOiBcIk1ha2UgY29sdW1uIHB1YmxpY1wiID0+IFwi2LnZhdmI2YXbjCDaqdix2K/ZhiDYs9iq2YjZhlwiXG4vLyB1bmRlZmluZWQuZmlsdGVyUGxhY2Vob2xkZXI6IFwiU2VhcmNoLi4uXCIgPT4gXCLYrNiz2KrYrNmILi4uXCJcbi8vIHVuZGVmaW5lZC5yZW1vdmVSb3dzOiBcIlJlbW92ZSByb3dzXCIgPT4gXCLYrdiw2YEg2LPYt9ix2YfYp1wiXG4vLyB1bmRlZmluZWQuc2hvd0xhYmVsOiBcIlNob3dcIiA9PiBcItmG2YXYp9uM2LRcIlxuLy8gdW5kZWZpbmVkLmVudHJpZXNMYWJlbDogXCJlbnRyaWVzXCIgPT4gXCLZiNix2YjYr9uMXCJcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX2hpc3RvZ3JhbTogXCJIaXN0b2dyYW1cIiA9PiBcItmH24zYs9iq2Yjar9ix2KfZhVwiXG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9udW1iZXI6IFwiQXZlcmFnZVwiID0+IFwi2YXYqtmI2LPYt1wiXG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9jaG9pY2VzOiBcIlRhYmxlXCIgPT4gXCLYrNiv2YjZhFwiXG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcIkNoYXJ0XCIgPT4gXCLZhtmF2YjYr9in2LFcIlxuLy8gdW5kZWZpbmVkLmNoYXJ0VHlwZV92YmFyOiBcIlZlcnRpY2FsIEJhclwiID0+IFwi2YbZiNin2LEg2LnZhdmI2K/bjFwiXG4vLyB1bmRlZmluZWQuY2hhcnRUeXBlX3N0YWNrZWRiYXI6IFwiU3RhY2tlZCBCYXJcIiA9PiBcItmG2YjYp9ixINm+2LTYqtmHXCJcbi8vIHVuZGVmaW5lZC5jaGFydFR5cGVfZG91Z2hudXQ6IFwiRG91Z2hudXRcIiA9PiBcItiv2YjZhtin2KpcIlxuLy8gdW5kZWZpbmVkLm1ha2VQcml2YXRlQnV0dG9uOiBcIk1ha2UgcHJpdmF0ZVwiID0+IFwi2K7YtdmI2LXbjCDaqdix2K/ZhlwiXG4vLyB1bmRlZmluZWQubWFrZVB1YmxpY0J1dHRvbjogXCJNYWtlIHB1YmxpY1wiID0+IFwi2LnZhdmI2YXbjCDaqdix2K/ZhlwiXG4vLyB1bmRlZmluZWQuc2hvd0J1dHRvbjogXCJTaG93XCIgPT4gXCLZhtmF2KfbjNi0XCJcbi8vIHVuZGVmaW5lZC5maWx0ZXI6IFwiRmlsdGVyXCIgPT4gXCLZgduM2YTYqtixXCJcbi8vIHVuZGVmaW5lZC5jaGFuZ2VMb2NhbGU6IFwiQ2hhbmdlIExvY2FsZVwiID0+IFwi2KrYutuM24zYsSDZhdit2YTbjFwiXG4vLyB1bmRlZmluZWQuZGVmYXVsdE9yZGVyOiBcIkRlZmF1bHQgT3JkZXJcIiA9PiBcItiq2LHYqtuM2Kgg2b7bjNi02YHYsdi2XCJcbi8vIHVuZGVmaW5lZC5hc2NPcmRlcjogXCJBc2NlbmRpbmdcIiA9PiBcIti12LnZiNiv24xcIlxuLy8gdW5kZWZpbmVkLmRlc2NPcmRlcjogXCJEZXNjZW5kaW5nXCIgPT4gXCLZhtiy2YjZhNuMXCJcbi8vIHVuZGVmaW5lZC5zaG93TWlub3JDb2x1bW5zOiBcIlNob3cgbWlub3IgY29sdW1uc1wiID0+IFwi2YbZhdin24zYtCDYs9iq2YjZhtmH2KfbjCDZgdix2LnbjFwiXG4vLyB1bmRlZmluZWQub3RoZXJDb21tZW50VGl0bGU6IFwiT3RoZXIgaXRlbXMgYW5kIGNvbW1lbnRzXCIgPT4gXCLYs9in24zYsSDZhdmI2KfYsdivINmIINmG2LjYsdin2KpcIlxuLy8gdW5kZWZpbmVkLnNob3dQZXJjZW50YWdlczogXCJTaG93IHBlcmNlbnRhZ2VzXCIgPT4gXCLZhtmF2KfbjNi0INiv2LHYtdivXCJcbi8vIHVuZGVmaW5lZC5oaWRlUGVyY2VudGFnZXM6IFwiSGlkZSBwZXJjZW50YWdlc1wiID0+IFwi2K/Ysdi12K/Zh9in24wg2YXYrtmB24xcIlxuLy8gdW5kZWZpbmVkLnBkZkRvd25sb2FkQ2FwdGlvbjogXCJQREZcIiA9PiBcItm+24wg2K/bjCDYp9mBXCJcbi8vIHVuZGVmaW5lZC54bHN4RG93bmxvYWRDYXB0aW9uOiBcIkV4Y2VsXCIgPT4gXCLYp9qp2LPZhFwiXG4vLyB1bmRlZmluZWQuY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNTVlwiID0+IFwiQ3N2XCJcbi8vIHVuZGVmaW5lZC5zYXZlRGlhZ3JhbUFzUE5HOiBcIkRvd25sb2FkIHBsb3QgYXMgYSBQTkcgZmlsZVwiID0+IFwi2K/Yp9mG2YTZiNivINi32LHYrSDYqNmHINi52YbZiNin2YYg24zaqSDZgdin24zZhCBQTkdcIlxuLy8gdW5kZWZpbmVkLmhpZGVFbXB0eUFuc3dlcnM6IFwiSGlkZSBlbXB0eSBhbnN3ZXJzXCIgPT4gXCLZhdiu2YHbjCDaqdix2K/ZhiDZvtin2LPYrtmH2KfbjCDYrtin2YTbjFwiXG4vLyB1bmRlZmluZWQuc2hvd0VtcHR5QW5zd2VyczogXCJTaG93IGVtcHR5IGFuc3dlcnNcIiA9PiBcItmG2YXYp9uM2LQg2b7Yp9iz2K7Zh9in24wg2K7Yp9mE24xcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQtMTogXCJBbGwgYW5zd2Vyc1wiID0+IFwi2YfZhdmHINm+2KfYs9iuINmH2KdcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQ1OiBcIlRvcCA1IGFuc3dlcnNcIiA9PiBcIjUg2b7Yp9iz2K4g2KjYsdiq2LFcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQxMDogXCJUb3AgMTAgYW5zd2Vyc1wiID0+IFwiMTAg2b7Yp9iz2K4g2KjYsdiq2LFcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQyMDogXCJUb3AgMjAgYW5zd2Vyc1wiID0+IFwiMjAg2b7Yp9iz2K4g2KjYsdiq2LFcIlxuLy8gdW5kZWZpbmVkLmhpZGVNaXNzaW5nQW5zd2VyczogXCJIaWRlIG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwi2YXYrtmB24wg2qnYsdiv2YYg2b7Yp9iz2K7Zh9in24wg2q/Zhdi02K/Zh1wiXG4vLyB1bmRlZmluZWQuc2hvd01pc3NpbmdBbnN3ZXJzOiBcIlNob3cgbWlzc2luZyBhbnN3ZXJzXCIgPT4gXCLZhtmF2KfbjNi0INm+2KfYs9iu2YfYp9uMINqv2YXYtNiv2YdcIlxuLy8gdW5kZWZpbmVkLm1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwiTWlzc2luZyBhbnN3ZXJzXCIgPT4gXCLZvtin2LPYriDZh9in24wg2q/Zhdi02K/Zh1wiXG4vLyB1bmRlZmluZWQubm9WaXN1YWxpemVyRm9yUXVlc3Rpb246IFwiVGhpcyBxdWVzdGlvbiB0eXBlIGlzIG5vdCB2aXN1YWxpemVkIHlldFwiID0+IFwi2KfbjNmGINmG2YjYuSDYs9mI2KfZhCDZh9mG2YjYsiDYqtis2LPZhSDZhti02K/ZhyDYp9iz2KpcIlxuLy8gdW5kZWZpbmVkLm5vUmVzdWx0czogXCJUaGVyZSBhcmUgbm8gcmVzdWx0cyB5ZXRcIiA9PiBcItmH2YbZiNiyINmG2KrbjNis2Ycg2KfbjCDYrdin2LXZhCDZhti02K/ZhyDYp9iz2KpcIlxuLy8gdW5kZWZpbmVkLnNob3dQZXJWYWx1ZXM6IFwiUGVyIFZhbHVlc1wiID0+IFwi2KjZhyDYp9iy2KfbjCDZh9ixINin2LHYsti0XCJcbi8vIHVuZGVmaW5lZC5zaG93UGVyQ29sdW1uczogXCJQZXIgQ29sdW1uc1wiID0+IFwi2K/YsSDZh9ixINiz2KrZiNmGXCJcbi8vIHVuZGVmaW5lZC5hbnN3ZXI6IFwiQW5zd2VyXCIgPT4gXCLZvtin2LPYrlwiXG4vLyB1bmRlZmluZWQuY29ycmVjdEFuc3dlcjogXCJDb3JyZWN0IGFuc3dlcjogXCIgPT4gXCLZvtin2LPYriDYtdit24zYrTogXCJcbi8vIHVuZGVmaW5lZC5wZXJjZW50OiBcIlBlcmNlbnRcIiA9PiBcItiv2LHYtdivXCJcbi8vIHVuZGVmaW5lZC5yZXNwb25zZXM6IFwiUmVzcG9uc2VzXCIgPT4gXCLZvtin2LPYrlwiXG4iLCJpbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIGZyZW5jaFN0cmluZ3MgPSB7XG4gIGdyb3VwQnV0dG9uOiBcIkdyb3VwZXJcIixcbiAgdW5ncm91cEJ1dHRvbjogXCJEaXNzb2NpZXJcIixcbiAgc2VsZWN0QnV0dG9uOiBcIlPDqWxlY3Rpb25uZXJcIixcbiAgaGlkZUNvbHVtbjogXCJNYXNxdWVyIGNvbG9ubmVcIixcbiAgc2hvd0NvbHVtbjogXCJBZmZpY2hlciBjb2xvbm5lXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcIlJlbmRyZSBsYSBjb2xvbm5lIHByaXbDqVwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcIlJlbmRyZSBsYSBjb2xvbm5lIHB1YmxpY1wiLFxuICBtb3ZlVG9EZXRhaWw6IFwiRMOpcGxhY2VyIHZlcnMgZMOpdGFpbHNcIixcbiAgc2hvd0FzQ29sdW1uOiBcIkFmZmljaGVyIGVuIGNvbG9ubmVcIixcbiAgZmlsdGVyUGxhY2Vob2xkZXI6IFwiUmVjaGVyY2hlci4uLlwiLFxuICByZW1vdmVSb3dzOiBcIlN1cHByaW1lciBjb2xvbm5lXCIsXG4gIHNob3dMYWJlbDogXCJBZmZpY2hlclwiLFxuICBlbnRyaWVzTGFiZWw6IFwiZW50csOpZXNcIixcbiAgdmlzdWFsaXplcl90ZXh0OiBcIlRleHRlcyBlbiB0YWJsZVwiLFxuICB2aXN1YWxpemVyX3dvcmRjbG91ZDogXCJOdWFnZXMgZGUgbW90c1wiLFxuICB2aXN1YWxpemVyX2hpc3RvZ3JhbTogXCJIaXN0b2dyYW1tZVwiLFxuICB2aXN1YWxpemVyX251bWJlcjogXCJNb3llbm5lXCIsXG4gIHZpc3VhbGl6ZXJfY2hvaWNlczogXCJUYWJsZVwiLFxuICB2aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwiR3JhcGhpcXVlXCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwiQmFycmVzXCIsXG4gIGNoYXJ0VHlwZV92YmFyOiBcIkJhcnJlIHZlcnRpY2FsZVwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCJCYXJyZXMgZW1waWzDqWVzXCIsXG4gIGNoYXJ0VHlwZV9kb3VnaG51dDogXCJBbm5lYXVcIixcbiAgY2hhcnRUeXBlX3BpZTogXCJTZWN0ZXVyc1wiLFxuICBjaGFydFR5cGVfc2NhdHRlcjogXCJOdWFnZXMgZGUgcG9pbnRzXCIsXG4gIGNoYXJ0VHlwZV9nYXVnZTogXCJHYXVnZVwiLFxuICBjaGFydFR5cGVfYnVsbGV0OiBcIkJ1bGxlc1wiLFxuICBoaWRlQnV0dG9uOiBcIk1hc3F1ZXJcIixcbiAgbWFrZVByaXZhdGVCdXR0b246IFwiUmVuZHJlIHByaXbDqVwiLFxuICBtYWtlUHVibGljQnV0dG9uOiBcIlJlbmRyZSBwdWJsaXF1ZVwiLFxuICBzaG93QnV0dG9uOiBcIkFmZmljaGVyXCIsXG4gIGZpbHRlcjogXCJGaWx0cmVcIixcbiAgcmVzZXRGaWx0ZXI6IFwiUmFmcmFpY2hpciBGaWx0cmVzXCIsXG4gIGNoYW5nZUxvY2FsZTogXCJDaGFuZ2VyIGxlcyBwYXJhbcOodHJlcyByw6lnaW9uYXV4XCIsXG4gIGNsZWFyQnV0dG9uOiBcIlJhZnJhaWNoaXJcIixcbiAgYWRkRWxlbWVudDogXCJDaG9pc2lyIGxhIHF1ZXN0aW9uIMOgIGFmZmljaGVyLi4uXCIsXG4gIGRlZmF1bHRPcmRlcjogXCJEZWZhdXRcIixcbiAgYXNjT3JkZXI6IFwiQXNjZW5kYW50XCIsXG4gIGRlc2NPcmRlcjogXCJEZXNjZW5kYW50XCIsXG4gIHNob3dNaW5vckNvbHVtbnM6IFwiQWZmaWNoZXIgbGVzIGNvbG9ubmVzIG1pbmV1cmVzXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcIkF1dHJlIMOpbMOpbWVudCBldCBjb21tZW50YWlyZXNcIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcIkFmZmljaGVyIGxlcyBwb3VyY2VudGFnZXNcIixcbiAgaGlkZVBlcmNlbnRhZ2VzOiBcIk1hc3F1ZXIgbGVzIHBvdXJjZW50YWdlc1wiLFxuICBwZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxsZXJcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkZpY2hpZXIgQ1NWXCIsXG4gIHNhdmVEaWFncmFtQXNQTkc6IFwiU2F1dmVyIGVuIHBuZ1wiLFxuICBoaWRlRW1wdHlBbnN3ZXJzOiBcIk1hc3F1ZXIgbGVzIHLDqXBvbnNlcyB2aWRlc1wiLFxuICBzaG93RW1wdHlBbnN3ZXJzOiBcIkFmZmljaGVyIGxlcyByw6lwb25zZXMgdmlkZXNcIixcbiAgXCJ0b3BOVmFsdWVUZXh0LTFcIjogXCJUb3V0ZXMgbGVzIHLDqXBvbnNlc1wiLFxuICB0b3BOVmFsdWVUZXh0NTogXCJUb3AgNSBkZXMgcsOpcG9uc2VzXCIsXG4gIHRvcE5WYWx1ZVRleHQxMDogXCJUb3AgMTAgZGVzIHLDqXBvbnNlc1wiLFxuICB0b3BOVmFsdWVUZXh0MjA6IFwiVG9wIDIwIGRlcyByw6lwb25zZXNcIixcbiAgaGlkZU1pc3NpbmdBbnN3ZXJzOiBcIk1hc3F1ZXIgbGVzIHLDqXBvbnNlcyBtYW5xdWFudGVzXCIsXG4gIHNob3dNaXNzaW5nQW5zd2VyczogXCJBZmZpY2hlciBsZXMgcsOpcG9uc2VzIG1hbnF1YW50ZXNcIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCJSw6lwb25zZXMgbWFucXVhbnRlc1wiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCJDZSB0eXBlIGRlIHF1ZXN0aW9uIG4nZXN0IHBhcyBlbmNvcmUgdmlzdWFsaXPDqVwiLFxuICBub1Jlc3VsdHM6IFwiSWwgbid5IGEgcGFzIGVuY29yZSBkZSByw6lzdWx0YXRzXCIsXG4gIHNob3dQZXJWYWx1ZXM6IFwiUGFyIHZhbGV1clwiLFxuICBzaG93UGVyQ29sdW1uczogXCJQYXIgY29sb25uZVwiLFxuICBhbnN3ZXI6IFwiUsOpcG9uc2VcIixcbiAgY29ycmVjdEFuc3dlcjogXCJSw6lwb25zZSBjb3JyZWN0ZTogXCIsXG4gIHBlcmNlbnQ6IFwiUG91cmNlbnRhZ2VcIixcbiAgcmVzcG9uc2VzOiBcIlLDqXBvbnNlc1wiXG59O1xuXG5sb2NhbGl6YXRpb24ubG9jYWxlc1tcImZyXCJdID0gZnJlbmNoU3RyaW5ncztcbmxvY2FsaXphdGlvbi5sb2NhbGVOYW1lc1tcImZyXCJdID0gXCJGcmFuw6dhaXNcIjtcblxuLy8gVGhlIGZvbGxvd2luZyBzdHJpbmdzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIGJ5IGEgbWFjaGluZSB0cmFuc2xhdGlvbiBzZXJ2aWNlXG4vLyBSZW1vdmUgdGhvc2Ugc3RyaW5ncyB0aGF0IHlvdSBoYXZlIGNvcnJlY3RlZCBtYW51YWxseVxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbVwiID0+IFwiSGlzdG9ncmFtbWVcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfbnVtYmVyOiBcIkF2ZXJhZ2VcIiA9PiBcIk1veWVubmVcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfY2hvaWNlczogXCJUYWJsZVwiID0+IFwiVGFibGVcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfc2VsZWN0QmFzZTogXCJDaGFydFwiID0+IFwiR3JhcGhpcXVlXCJcbi8vIHVuZGVmaW5lZC5jaGFydFR5cGVfdmJhcjogXCJWZXJ0aWNhbCBCYXJcIiA9PiBcIkJhcnJlIHZlcnRpY2FsZVwiXG4vLyB1bmRlZmluZWQuY2hhbmdlTG9jYWxlOiBcIkNoYW5nZSBMb2NhbGVcIiA9PiBcIkNoYW5nZXIgbGVzIHBhcmFtw6h0cmVzIHLDqWdpb25hdXhcIlxuLy8gdW5kZWZpbmVkLnNob3dQZXJjZW50YWdlczogXCJTaG93IHBlcmNlbnRhZ2VzXCIgPT4gXCJBZmZpY2hlciBsZXMgcG91cmNlbnRhZ2VzXCJcbi8vIHVuZGVmaW5lZC5oaWRlUGVyY2VudGFnZXM6IFwiSGlkZSBwZXJjZW50YWdlc1wiID0+IFwiTWFzcXVlciBsZXMgcG91cmNlbnRhZ2VzXCJcbi8vIHVuZGVmaW5lZC5wZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIgPT4gXCJQREZcIlxuLy8gdW5kZWZpbmVkLnhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxcIiA9PiBcIkV4Y2VsbGVyXCJcbi8vIHVuZGVmaW5lZC5jc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIgPT4gXCJGaWNoaWVyIENTVlwiXG4vLyB1bmRlZmluZWQuaGlkZUVtcHR5QW5zd2VyczogXCJIaWRlIGVtcHR5IGFuc3dlcnNcIiA9PiBcIk1hc3F1ZXIgbGVzIHLDqXBvbnNlcyB2aWRlc1wiXG4vLyB1bmRlZmluZWQuc2hvd0VtcHR5QW5zd2VyczogXCJTaG93IGVtcHR5IGFuc3dlcnNcIiA9PiBcIkFmZmljaGVyIGxlcyByw6lwb25zZXMgdmlkZXNcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQtMTogXCJBbGwgYW5zd2Vyc1wiID0+IFwiVG91dGVzIGxlcyByw6lwb25zZXNcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQ1OiBcIlRvcCA1IGFuc3dlcnNcIiA9PiBcIlRvcCA1IGRlcyByw6lwb25zZXNcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQxMDogXCJUb3AgMTAgYW5zd2Vyc1wiID0+IFwiVG9wIDEwIGRlcyByw6lwb25zZXNcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQyMDogXCJUb3AgMjAgYW5zd2Vyc1wiID0+IFwiVG9wIDIwIGRlcyByw6lwb25zZXNcIlxuLy8gdW5kZWZpbmVkLmhpZGVNaXNzaW5nQW5zd2VyczogXCJIaWRlIG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiTWFzcXVlciBsZXMgcsOpcG9uc2VzIG1hbnF1YW50ZXNcIlxuLy8gdW5kZWZpbmVkLnNob3dNaXNzaW5nQW5zd2VyczogXCJTaG93IG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiQWZmaWNoZXIgbGVzIHLDqXBvbnNlcyBtYW5xdWFudGVzXCJcbi8vIHVuZGVmaW5lZC5taXNzaW5nQW5zd2Vyc0xhYmVsOiBcIk1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiUsOpcG9uc2VzIG1hbnF1YW50ZXNcIiIsImltcG9ydCB7IGxvY2FsaXphdGlvbiB9IGZyb20gXCIuLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbmV4cG9ydCB2YXIgZ2VybWFuU3RyaW5ncyA9IHtcbiAgZ3JvdXBCdXR0b246IFwiR3J1cHBpZXJlblwiLFxuICB1bmdyb3VwQnV0dG9uOiBcIkdydXBwaWVydW5nIGF1ZmhlYmVuXCIsXG4gIHNlbGVjdEJ1dHRvbjogXCJNaWNoIGF1c3fDpGhsZW5cIixcbiAgaGlkZUNvbHVtbjogXCJTcGFsdGUgYXVzYmxlbmRlblwiLFxuICBzaG93Q29sdW1uOiBcIlNwYWx0ZSBlaW5ibGVuZGVuXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcIlNwYWx0ZSBwcml2YXQgbWFjaGVuXCIsXG4gIG1ha2VQdWJsaWNDb2x1bW46IFwiU3BhbHRlIHZlcsO2ZmZlbnRsaWNoZW5cIixcbiAgbW92ZVRvRGV0YWlsOiBcImluIERldGFpbHMgdmVyc2NoaWViZW5cIixcbiAgc2hvd0FzQ29sdW1uOiBcIkFscyBTcGFsdGUgYW56ZWlnZW5cIixcbiAgZmlsdGVyUGxhY2Vob2xkZXI6IFwiU3VjaGUuLi5cIixcbiAgcmVtb3ZlUm93czogXCJaZWlsZW4gZW50ZmVybmVuXCIsXG4gIHNob3dMYWJlbDogXCJhbnplaWdlblwiLFxuICBlbnRyaWVzTGFiZWw6IFwiRWludHLDpGdlXCIsXG4gIHZpc3VhbGl6ZXJfdGV4dDogXCJUZXh0ZSBpbiBUYWJlbGxlbmZvcm1cIixcbiAgdmlzdWFsaXplcl93b3JkY2xvdWQ6IFwiV29yZGNsb3VkXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbW1cIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwiRHVyY2hzY2huaXR0XCIsXG4gIHZpc3VhbGl6ZXJfY2hvaWNlczogXCJMaXN0ZVwiLFxuICB2aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwiRGlhZ3JhbW10eXBcIixcbiAgY2hhcnRUeXBlX2JhcjogXCJCYWxrZW5kaWFncmFtbVwiLFxuICBjaGFydFR5cGVfdmJhcjogXCJCYWxrZW5kaWFncmFtbSB2ZXJ0aWthbFwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCJHZXN0YXBlbHRlcyBCYWxrZW5kaWFncmFtbVwiLFxuICBjaGFydFR5cGVfZG91Z2hudXQ6IFwiRG9udXQtRGlhZ3JhbW1cIixcbiAgY2hhcnRUeXBlX3BpZTogXCJLcmVpc2RpYWdyYW1tXCIsXG4gIGNoYXJ0VHlwZV9zY2F0dGVyOiBcIlB1bmt0ZWRpYWdyYW1tXCIsXG4gIGNoYXJ0VHlwZV9nYXVnZTogXCJQZWdlbGRpYWdyYW1tXCIsXG4gIGNoYXJ0VHlwZV9idWxsZXQ6IFwiQXVmesOkaGx1bmdzZGlhZ3JhbW1cIixcbiAgaGlkZUJ1dHRvbjogXCJBdXNibGVuZGVuXCIsXG4gIG1ha2VQcml2YXRlQnV0dG9uOiBcIlByaXZhdCBtYWNoZW5cIixcbiAgbWFrZVB1YmxpY0J1dHRvbjogXCLDlmZmZW50bGljaCBtYWNoZW5cIixcbiAgc2hvd0J1dHRvbjogXCJBbnplaWdlblwiLFxuICBmaWx0ZXI6IFwiRmlsdGVyXCIsXG4gIHJlc2V0RmlsdGVyOiBcIkZpbHRlciB6dXLDvGNrc2V0emVuXCIsXG4gIGNoYW5nZUxvY2FsZTogXCJMb2thbGlzaWVydW5nIMOkbmRlcm5cIixcbiAgY2xlYXJCdXR0b246IFwiRWluc3RlbGx1bmdlbiBsw7ZzY2hlblwiLFxuICBhZGRFbGVtZW50OiBcIlfDpGhsZW4gU2llIGVpbmUgRnJhZ2UsIHVtIHp1IHplaWdlbi4uLlwiLFxuICBkZWZhdWx0T3JkZXI6IFwiU3RhbmRhcmRyZWloZW5mb2xnZVwiLFxuICBhc2NPcmRlcjogXCJBdWZzdGVpZ2VuZFwiLFxuICBkZXNjT3JkZXI6IFwiQWJzdGVpZ2VuZFwiLFxuICBzaG93TWlub3JDb2x1bW5zOiBcIktsZWluZXJlIFNwYWx0ZW4gYW56ZWlnZW5cIixcbiAgb3RoZXJDb21tZW50VGl0bGU6IFwiQW5kZXJlIFB1bmt0ZSB1bmQgS29tbWVudGFyZVwiLFxuICBzaG93UGVyY2VudGFnZXM6IFwiUHJvemVudHPDpHR6ZSBhbnplaWdlblwiLFxuICBoaWRlUGVyY2VudGFnZXM6IFwiUHJvemVudHPDpHR6ZSBhdXNibGVuZGVuXCIsXG4gIHBkZkRvd25sb2FkQ2FwdGlvbjogXCJQREZcIixcbiAgeGxzeERvd25sb2FkQ2FwdGlvbjogXCJFeGNlbFwiLFxuICBjc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIsXG4gIHNhdmVEaWFncmFtQXNQTkc6IFwiRGlhZ3JhbW0gYWxzIHBuZyBoZXJ1bnRlcmxhZGVuXCIsXG4gIGhpZGVFbXB0eUFuc3dlcnM6IFwiTGVlcmUgQW50d29ydGVuIGF1c2JsZW5kZW5cIixcbiAgc2hvd0VtcHR5QW5zd2VyczogXCJMZWVyZSBBbnR3b3J0ZW4gYW56ZWlnZW5cIixcbiAgXCJ0b3BOVmFsdWVUZXh0LTFcIjogXCJBbGxlIEFudHdvcnRlblwiLFxuICB0b3BOVmFsdWVUZXh0NTogXCJUb3AgNSBBbnR3b3J0ZW5cIixcbiAgdG9wTlZhbHVlVGV4dDEwOiBcIlRvcCAxMCBBbnR3b3J0ZW5cIixcbiAgdG9wTlZhbHVlVGV4dDIwOiBcIlRvcCAyMCBBbnR3b3J0ZW5cIixcbiAgaGlkZU1pc3NpbmdBbnN3ZXJzOiBcIkZlaGxlbmRlIEFudHdvcnRlbiBhdXNibGVuZGVuXCIsXG4gIHNob3dNaXNzaW5nQW5zd2VyczogXCJGZWhsZW5kZSBBbnR3b3J0ZW4gYW56ZWlnZW5cIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCJGZWhsZWRlIEFudHdvcnRlblwiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCJGw7xyIGRpZXNlbiBGcmFnZXR5cCBnaWJ0IGVzIG5vY2gga2VpbmUgVmlzdWFsaXNpZXJ1bmcuXCIsXG4gIG5vUmVzdWx0czogXCJFcyBsaWVnZW4gbm9jaCBrZWluZSBFcmdlYm5pc3NlIHZvclwiLFxuICBzaG93UGVyVmFsdWVzOiBcIlBybyBXZXJ0XCIsXG4gIHNob3dQZXJDb2x1bW5zOiBcIlBybyBTcGFsdGVcIixcbiAgYW5zd2VyOiBcIkFudHdvcnRcIixcbiAgY29ycmVjdEFuc3dlcjogXCJLb3JyZWt0ZSBBbnR3b3J0OiBcIixcbiAgcGVyY2VudDogXCJQcm96ZW50XCIsXG4gIHJlc3BvbnNlczogXCJBbnR3b3J0ZW5cIlxufTtcbmxvY2FsaXphdGlvbi5sb2NhbGVzW1wiZGVcIl0gPSBnZXJtYW5TdHJpbmdzO1xubG9jYWxpemF0aW9uLmxvY2FsZU5hbWVzW1wiZGVcIl0gPSBcIkRldXRzY2hcIjtcbiIsImltcG9ydCB7IGxvY2FsaXphdGlvbiB9IGZyb20gXCIuLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbmV4cG9ydCB2YXIgbm9yd2VnaWFuU3RyaW5ncyA9IHtcbiAgZ3JvdXBCdXR0b246IFwiR3J1cHBlclwiLFxuICB1bmdyb3VwQnV0dG9uOiBcIk9wcGhldiBncnVwcGVyaW5nXCIsXG4gIHNlbGVjdEJ1dHRvbjogXCJWZWxnXCIsXG4gIGhpZGVDb2x1bW46IFwiU2tqdWwga29sb25uZVwiLFxuICBzaG93Q29sdW1uOiBcIlZpcyBrb2xvbm5lXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcIkdqw7hyIGtvbG9ubmUgcHJpdmF0XCIsXG4gIG1ha2VQdWJsaWNDb2x1bW46IFwiR2rDuHIga29sb25uZSBvZmZlbnRsaWdcIixcbiAgbW92ZVRvRGV0YWlsOiBcIkZseXR0IHRpbCBkZXRhbGplcnQgdmlzbmluZ1wiLFxuICBzaG93QXNDb2x1bW46IFwiVmlzIHNvbSBrb2xvbm5lXCIsXG4gIGZpbHRlclBsYWNlaG9sZGVyOiBcIlPDuGsuLi5cIixcbiAgcmVtb3ZlUm93czogXCJGamVybiByYWRlclwiLFxuICBzaG93TGFiZWw6IFwiVmlzXCIsXG4gIGVudHJpZXNMYWJlbDogXCJvcHBmw7hyaW5nZXJcIixcbiAgdmlzdWFsaXplcl90ZXh0OiBcIlRhYmVsbHZpc25pbmdcIixcbiAgdmlzdWFsaXplcl93b3JkY2xvdWQ6IFwiT3Jkc2t5XCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbVwiLFxuICB2aXN1YWxpemVyX251bWJlcjogXCJHamVubm9tc25pdHRcIixcbiAgdmlzdWFsaXplcl9jaG9pY2VzOiBcIkJvcmRcIixcbiAgdmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcIlNqw7hrYXJ0XCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwiU3RvbHBlZGlhZ3JhbVwiLFxuICBjaGFydFR5cGVfdmJhcjogXCJWZXJ0aWthbCBzdG9scGVcIixcbiAgY2hhcnRUeXBlX3N0YWNrZWRiYXI6IFwiU3RhYmxldCBzdG9scGVkaWFncmFtXCIsXG4gIGNoYXJ0VHlwZV9kb3VnaG51dDogXCJIanVsZGlhZ3JhbVwiLFxuICBjaGFydFR5cGVfcGllOiBcIlNla3RvcmRpYWdyYW1cIixcbiAgY2hhcnRUeXBlX3NjYXR0ZXI6IFwiUHVua3RkaWFncmFtXCIsXG4gIGNoYXJ0VHlwZV9nYXVnZTogXCJNw6VsZWRpYWdyYW1cIixcbiAgY2hhcnRUeXBlX2J1bGxldDogXCJLdWxlZGlhZ3JhbVwiLFxuICBoaWRlQnV0dG9uOiBcIlNranVsXCIsXG4gIG1ha2VQcml2YXRlQnV0dG9uOiBcIkdqw7hyIHByaXZhdFwiLFxuICBtYWtlUHVibGljQnV0dG9uOiBcIkdqw7hyIG9mZmVudGxpZ1wiLFxuICBzaG93QnV0dG9uOiBcIlZpc1wiLFxuICBmaWx0ZXI6IFwiRmlsdGVyXCIsXG4gIHJlc2V0RmlsdGVyOiBcIk51bGxzdGlsbCBmaWx0ZXJcIixcbiAgY2hhbmdlTG9jYWxlOiBcIkJ5dHQgc3Byw6VrXCIsXG4gIGNsZWFyQnV0dG9uOiBcIlTDuG1cIixcbiAgYWRkRWxlbWVudDogXCJWZWxnIHNww7hyc23DpWwuLi5cIixcbiAgZGVmYXVsdE9yZGVyOiBcIlN0YW5kYXJkXCIsXG4gIGFzY09yZGVyOiBcIlN0aWdlbmRlXCIsXG4gIGRlc2NPcmRlcjogXCJTeW5rZW5kZVwiLFxuICBzaG93TWlub3JDb2x1bW5zOiBcIlZpcyBtaW5kcmUga29sb25uZXJcIixcbiAgb3RoZXJDb21tZW50VGl0bGU6IFwiQW5uZXQgb2cga29tbWVudGFyZXJcIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcIlZpcyBwcm9zZW50ZXJcIixcbiAgaGlkZVBlcmNlbnRhZ2VzOiBcIlNranVsIHByb3NlbnRlclwiLFxuICBwZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwiT3ZlcmfDpVwiLFxuICBjc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIsXG4gIHNhdmVEaWFncmFtQXNQTkc6IFwiTGFzdCBuZWQgcGxvdHQgc29tIGVuIFBORy1maWxcIixcbiAgaGlkZUVtcHR5QW5zd2VyczogXCJTa2p1bCB0b21tZSBzdmFyXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwiVmlzIHRvbW1lIHN2YXJcIixcbiAgXCJ0b3BOVmFsdWVUZXh0LTFcIjogXCJBbGxlIHN2YXJcIixcbiAgdG9wTlZhbHVlVGV4dDU6IFwiVG9wcCA1IHN2YXJcIixcbiAgdG9wTlZhbHVlVGV4dDEwOiBcIlRvcHAgMTAgc3ZhclwiLFxuICB0b3BOVmFsdWVUZXh0MjA6IFwiVG9wcCAyMCBzdmFyXCIsXG4gIGhpZGVNaXNzaW5nQW5zd2VyczogXCJTa2p1bCBtYW5nbGVuZGUgc3ZhclwiLFxuICBzaG93TWlzc2luZ0Fuc3dlcnM6IFwiVmlzIG1hbmdsZW5kZSBzdmFyXCIsXG4gIG1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwiTWFuZ2xlciBzdmFyXCIsXG4gIG5vVmlzdWFsaXplckZvclF1ZXN0aW9uOiBcIkRlbm5lIHNww7hyc23DpWxzdHlwZW4gZXIgaWtrZSB2aXN1YWxpc2VydCBlbm7DpVwiLFxuICBub1Jlc3VsdHM6IFwiRGV0IGVyIGluZ2VuIHJlc3VsdGF0ZXIgZW5uw6VcIixcbiAgc2hvd1BlclZhbHVlczogXCJQZXIgdmVyZGllclwiLFxuICBzaG93UGVyQ29sdW1uczogXCJQZXIga29sb25uZXJcIixcbiAgYW5zd2VyOiBcIlN2YXJlXCIsXG4gIGNvcnJlY3RBbnN3ZXI6IFwiUmlrdGlnIHN2YXI6IFwiLFxuICBwZXJjZW50OiBcIlByb3NlbnRcIixcbiAgcmVzcG9uc2VzOiBcIlN2YXJcIlxufTtcblxubG9jYWxpemF0aW9uLmxvY2FsZXNbXCJub1wiXSA9IG5vcndlZ2lhblN0cmluZ3M7XG5sb2NhbGl6YXRpb24ubG9jYWxlTmFtZXNbXCJub1wiXSA9IFwiTm9yc2tcIjtcblxuLy8gVGhlIGZvbGxvd2luZyBzdHJpbmdzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIGJ5IGEgbWFjaGluZSB0cmFuc2xhdGlvbiBzZXJ2aWNlXG4vLyBSZW1vdmUgdGhvc2Ugc3RyaW5ncyB0aGF0IHlvdSBoYXZlIGNvcnJlY3RlZCBtYW51YWxseVxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbVwiID0+IFwiSGlzdG9ncmFtXCJcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX251bWJlcjogXCJBdmVyYWdlXCIgPT4gXCJHamVubm9tc25pdHRcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfY2hvaWNlczogXCJUYWJsZVwiID0+IFwiQm9yZFwiXG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcIkNoYXJ0XCIgPT4gXCJTasO4a2FydFwiXG4vLyB1bmRlZmluZWQuY2hhcnRUeXBlX3ZiYXI6IFwiVmVydGljYWwgQmFyXCIgPT4gXCJWZXJ0aWthbCBzdG9scGVcIlxuLy8gdW5kZWZpbmVkLmZpbHRlcjogXCJGaWx0ZXJcIiA9PiBcIkZpbHRlclwiXG4vLyB1bmRlZmluZWQucGRmRG93bmxvYWRDYXB0aW9uOiBcIlBERlwiID0+IFwiUERGXCJcbi8vIHVuZGVmaW5lZC54bHN4RG93bmxvYWRDYXB0aW9uOiBcIkV4Y2VsXCIgPT4gXCJPdmVyZ8OlXCJcbi8vIHVuZGVmaW5lZC5jc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIgPT4gXCJDU1ZcIlxuLy8gdW5kZWZpbmVkLnNhdmVEaWFncmFtQXNQTkc6IFwiRG93bmxvYWQgcGxvdCBhcyBhIFBORyBmaWxlXCIgPT4gXCJMYXN0IG5lZCBwbG90dCBzb20gZW4gUE5HLWZpbFwiXG4vLyB1bmRlZmluZWQuaGlkZUVtcHR5QW5zd2VyczogXCJIaWRlIGVtcHR5IGFuc3dlcnNcIiA9PiBcIlNranVsIHRvbW1lIHN2YXJcIlxuLy8gdW5kZWZpbmVkLnNob3dFbXB0eUFuc3dlcnM6IFwiU2hvdyBlbXB0eSBhbnN3ZXJzXCIgPT4gXCJWaXMgdG9tbWUgc3ZhclwiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dC0xOiBcIkFsbCBhbnN3ZXJzXCIgPT4gXCJBbGxlIHN2YXJcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQ1OiBcIlRvcCA1IGFuc3dlcnNcIiA9PiBcIlRvcHAgNSBzdmFyXCJcbi8vIHVuZGVmaW5lZC50b3BOVmFsdWVUZXh0MTA6IFwiVG9wIDEwIGFuc3dlcnNcIiA9PiBcIlRvcHAgMTAgc3ZhclwiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dDIwOiBcIlRvcCAyMCBhbnN3ZXJzXCIgPT4gXCJUb3BwIDIwIHN2YXJcIlxuLy8gdW5kZWZpbmVkLmhpZGVNaXNzaW5nQW5zd2VyczogXCJIaWRlIG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiU2tqdWwgbWFuZ2xlbmRlIHN2YXJcIlxuLy8gdW5kZWZpbmVkLnNob3dNaXNzaW5nQW5zd2VyczogXCJTaG93IG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiVmlzIG1hbmdsZW5kZSBzdmFyXCJcbi8vIHVuZGVmaW5lZC5taXNzaW5nQW5zd2Vyc0xhYmVsOiBcIk1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiTWFuZ2xlciBzdmFyXCJcbi8vIHVuZGVmaW5lZC5ub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCJUaGlzIHF1ZXN0aW9uIHR5cGUgaXMgbm90IHZpc3VhbGl6ZWQgeWV0XCIgPT4gXCJEZW5uZSBzcMO4cnNtw6Vsc3R5cGVuIGVyIGlra2UgdmlzdWFsaXNlcnQgZW5uw6VcIlxuLy8gdW5kZWZpbmVkLm5vUmVzdWx0czogXCJUaGVyZSBhcmUgbm8gcmVzdWx0cyB5ZXRcIiA9PiBcIkRldCBlciBpbmdlbiByZXN1bHRhdGVyIGVubsOlXCJcbi8vIHVuZGVmaW5lZC5zaG93UGVyVmFsdWVzOiBcIlBlciBWYWx1ZXNcIiA9PiBcIlBlciB2ZXJkaWVyXCJcbi8vIHVuZGVmaW5lZC5zaG93UGVyQ29sdW1uczogXCJQZXIgQ29sdW1uc1wiID0+IFwiUGVyIGtvbG9ubmVyXCJcbi8vIHVuZGVmaW5lZC5hbnN3ZXI6IFwiQW5zd2VyXCIgPT4gXCJTdmFyZVwiXG4vLyB1bmRlZmluZWQuY29ycmVjdEFuc3dlcjogXCJDb3JyZWN0IGFuc3dlcjogXCIgPT4gXCJSaWt0aWcgc3ZhcjogXCJcbi8vIHVuZGVmaW5lZC5wZXJjZW50OiBcIlBlcmNlbnRcIiA9PiBcIlByb3NlbnRcIlxuLy8gdW5kZWZpbmVkLnJlc3BvbnNlczogXCJSZXNwb25zZXNcIiA9PiBcIlN2YXJcIiIsImltcG9ydCB7IGxvY2FsaXphdGlvbiB9IGZyb20gXCIuLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbmV4cG9ydCB2YXIgcG9ydHVndWVzZVN0cmluZ3MgPSB7XG4gIGdyb3VwQnV0dG9uOiBcIkFncnVwYXIgUG9yIE1pbVwiLFxuICB1bmdyb3VwQnV0dG9uOiBcIkRlc2FncnVwYXIgUG9yIE1pbVwiLFxuICBzZWxlY3RCdXR0b246IFwiU2VsZWNpb25hclwiLFxuICBoaWRlQ29sdW1uOiBcIkVzY29uZGVyIGNvbHVuYVwiLFxuICBzaG93Q29sdW1uOiBcIk1vc3RyYXIgY29sdW5hXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcIlRvcm5hciBjb2x1bmEgcHJpdmFkYVwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcIlRvcm5hciBjb2x1bmEgcMO6YmxpY2FcIixcbiAgbW92ZVRvRGV0YWlsOiBcIk1vdmVyIHBhcmEgRGV0YWxoZXNcIixcbiAgc2hvd0FzQ29sdW1uOiBcIk1vc3RyYXIgY29tbyBDb2x1bmFcIixcbiAgZmlsdGVyUGxhY2Vob2xkZXI6IFwiUGVzcXVpc2FyLi4uXCIsXG4gIHJlbW92ZVJvd3M6IFwiUmVtb3ZlciBsaW5oYXNcIixcbiAgc2hvd0xhYmVsOiBcIk1vc3RyYXJcIixcbiAgZW50cmllc0xhYmVsOiBcImVudHJhZGFzXCIsXG4gIHZpc3VhbGl6ZXJfdGV4dDogXCJUZXh0b3MgZW0gdGFiZWxhXCIsXG4gIHZpc3VhbGl6ZXJfd29yZGNsb3VkOiBcIk51dmVtIGRlIHBhbGF2cmFzXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbWFcIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwiTcOpZGlhXCIsXG4gIHZpc3VhbGl6ZXJfY2hvaWNlczogXCJUYWJlbGFcIixcbiAgdmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcIkdyw6FmaWNvXCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwiQmFycmFcIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwiQmFycmEgdmVydGljYWxcIixcbiAgY2hhcnRUeXBlX3N0YWNrZWRiYXI6IFwiQmFycmEgRW1waWxoYWRhXCIsXG4gIGNoYXJ0VHlwZV9kb3VnaG51dDogXCJSb3NjYVwiLFxuICBjaGFydFR5cGVfcGllOiBcIlRhcnRlXCIsXG4gIGNoYXJ0VHlwZV9zY2F0dGVyOiBcIkxhc3Ryb1wiLFxuICBjaGFydFR5cGVfZ2F1Z2U6IFwiRXNjYWxhXCIsXG4gIGNoYXJ0VHlwZV9idWxsZXQ6IFwiQmFsYVwiLFxuICBoaWRlQnV0dG9uOiBcIkVzY29uZGVyXCIsXG4gIG1ha2VQcml2YXRlQnV0dG9uOiBcIlRvcm5hciBwcml2YWRvXCIsXG4gIG1ha2VQdWJsaWNCdXR0b246IFwiVG9ybmFyIHDDumJsaWNvXCIsXG4gIHNob3dCdXR0b246IFwiTW9zdHJhclwiLFxuICBmaWx0ZXI6IFwiRmlsdHJhclwiLFxuICByZXNldEZpbHRlcjogXCJSZXN0YXVyYXIgRmlsdHJvXCIsXG4gIGNoYW5nZUxvY2FsZTogXCJNdWRhciBMb2NhbGl6YcOnw6NvXCIsXG4gIGNsZWFyQnV0dG9uOiBcIkxpbXBhclwiLFxuICBhZGRFbGVtZW50OiBcIkVzY29saGVyIHF1ZXN0w6NvIHBhcmEgbW9zdHJhci4uLlwiLFxuICBkZWZhdWx0T3JkZXI6IFwiT3JkZW5hw6fDo28gUGFkcsOjb1wiLFxuICBhc2NPcmRlcjogXCJBc2NlbmRlbnRlXCIsXG4gIGRlc2NPcmRlcjogXCJEZXNjZW5kZW50ZVwiLFxuICBzaG93TWlub3JDb2x1bW5zOiBcIk1vc3RyYXIgY29sdW5hcyBtZW5vcmVzXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcIk91dHJvcyBpdGVucyBlIGNvbWVudMOhcmlvc1wiLFxuICBzaG93UGVyY2VudGFnZXM6IFwiTW9zdHJhciBwZXJjZW50dWFpc1wiLFxuICBoaWRlUGVyY2VudGFnZXM6IFwiRXNjb25kZXIgcGVyY2VudHVhaXNcIixcbiAgcGRmRG93bmxvYWRDYXB0aW9uOiBcIlBERlwiLFxuICB4bHN4RG93bmxvYWRDYXB0aW9uOiBcIkV4Y2VsXCIsXG4gIGNzdkRvd25sb2FkQ2FwdGlvbjogXCJDU1ZcIixcbiAgc2F2ZURpYWdyYW1Bc1BORzogXCJCYWl4YXIgZGlhZ3JhbWEgY29tbyBQTkdcIixcbiAgaGlkZUVtcHR5QW5zd2VyczogXCJFc2NvbmRlciBwZXJndW50YXMgdmF6aWFzXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwiTW9zdHJhciBwZXJndW50YXMgdmF6aWFzXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwiVG9kYXMgYXMgcmVzcG9zdGFzXCIsXG4gIFwidG9wTlZhbHVlVGV4dDVcIjogXCJQcmltZWlyYXMgNSByZXNwb3N0YXNcIixcbiAgXCJ0b3BOVmFsdWVUZXh0MTBcIjogXCJQcmltZWlyYXMgMTAgcmVzcG9zdGFzXCIsXG4gIFwidG9wTlZhbHVlVGV4dDIwXCI6IFwiUHJpbWVpcmFzIDIwIHJlc3Bvc3Rhc1wiLFxuICBoaWRlTWlzc2luZ0Fuc3dlcnM6IFwiT2N1bHRhciBwZXJndW50YXMgbsOjbyByZXNwb25kaWRhc1wiLFxuICBzaG93TWlzc2luZ0Fuc3dlcnM6IFwiTW9zdHJhciBwZXJndW50YXMgbsOjbyByZXNwb25kaWRhc1wiLFxuICBtaXNzaW5nQW5zd2Vyc0xhYmVsOiBcIlBlcmd1bnRhcyBuw6NvIHJlc3BvbmRpZGFzXCIsXG4gIG5vVmlzdWFsaXplckZvclF1ZXN0aW9uOiBcIkVzdGUgdGlwbyBkZSBwZXJndW50YSBhaW5kYSBuw6NvIGZvaSB2aXN1YWxpemFkYVwiLFxuICBub1Jlc3VsdHM6IFwiQWluZGEgbsOjbyBwb3NzdWkgcmVzdWx0YWRvc1wiLFxuICBzaG93UGVyVmFsdWVzOiBcIlBvciB2YWxvcmVzXCIsXG4gIHNob3dQZXJDb2x1bW5zOiBcIlBvciBjb2x1bmFzXCIsXG4gIGFuc3dlcjogXCJSZXNwb3N0YVwiLFxuICBjb3JyZWN0QW5zd2VyOiBcIlJlc3Bvc3RhIGNvcnJldGE6IFwiLFxuICBwZXJjZW50OiBcIlBlcmNlbnRhZ2VtXCIsXG4gIHJlc3BvbnNlczogXCJSZXNwb3N0YXNcIlxufTtcblxuLy9VbmNvbW1lbnQgdGhlc2UgdHdvIGxpbmVzIG9uIGNyZWF0aW5nIGEgdHJhbnNsYXRpb24gZmlsZS4gWW91IHNob3VsZCByZXBsYWNlIFwiZW5cIiBhbmQgZW5TdHJpbmdzIHdpdGggeW91ciBsb2NhbGUgKFwiZnJcIiwgXCJkZVwiIGFuZCBzbyBvbikgYW5kIHlvdXIgdmFyaWFibGUuXG5sb2NhbGl6YXRpb24ubG9jYWxlc1tcInB0XCJdID0gcG9ydHVndWVzZVN0cmluZ3M7XG5sb2NhbGl6YXRpb24ubG9jYWxlTmFtZXNbXCJwdFwiXSA9IFwiUG9ydHVndcOqc1wiO1xuIiwiaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcblxuZXhwb3J0IHZhciBydXNzaWFuU3RyaW5ncyA9IHtcbiAgZ3JvdXBCdXR0b246IFwi0KHQs9GA0YPQv9C/0LjRgNC+0LLQsNGC0YxcIixcbiAgdW5ncm91cEJ1dHRvbjogXCLQoNCw0LfQs9GA0YPQv9C/0LjRgNC+0LLQsNGC0YxcIixcbiAgc2VsZWN0QnV0dG9uOiBcItCS0YvQsdGA0LDRgtGMXCIsXG4gIGhpZGVDb2x1bW46IFwi0KHQutGA0YvRgtGMINGB0YLQvtC70LHQtdGGXCIsXG4gIHNob3dDb2x1bW46IFwi0J/QvtC60LDQt9Cw0YLRjCDRgdGC0L7Qu9Cx0LXRhlwiLFxuICBtYWtlUHJpdmF0ZUNvbHVtbjogXCLQodC00LXQu9Cw0YLRjCDRgdGC0L7Qu9Cx0LXRhiDQv9GA0LjQstCw0YLQvdGL0LxcIixcbiAgbWFrZVB1YmxpY0NvbHVtbjogXCLQodC00LXQu9Cw0YLRjCDRgdGC0L7Qu9Cx0LXRhiDQv9GD0LHQu9C40YfQvdGL0LxcIixcbiAgbW92ZVRvRGV0YWlsOiBcItCh0L/RgNGP0YLQsNGC0Ywg0LIg0YDQsNGB0LrRgNGL0LLQsNGO0YnRg9GO0YHRjyDRgdC10LrRhtC40Y5cIixcbiAgZmlsdGVyOiBcItCk0LjQu9GM0YLRgFwiLFxuICBzaG93QXNDb2x1bW46IFwi0J/QvtC60LDQt9Cw0YLRjCDQutCw0Log0YHRgtC+0LvQsdC10YZcIixcbiAgdmlzdWFsaXplcl90ZXh0OiBcItCi0LDQsdC70LjRhtCwXCIsXG4gIHZpc3VhbGl6ZXJfd29yZGNsb3VkOiBcItCe0LHQu9Cw0LrQviDRgtGN0LPQvtCyXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcItCT0LjRgdGC0L7Qs9GA0LDQvNC80LBcIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwi0KHRgNC10LTQvdC10LUg0LfQvdCw0YfQtdC90LjQtVwiLFxuICB2aXN1YWxpemVyX2Nob2ljZXM6IFwi0KLQsNCx0LvQuNGG0LBcIixcbiAgdmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcItCU0LjQsNCz0YDQsNC80LzQsFwiLFxuICBjaGFydFR5cGVfdmJhcjogXCLQktC10YDRgtC40LrQsNC70YzQvdCw0Y8g0YHRgtC+0LvQsdGH0LDRgtCw0Y8g0LTQuNCw0LPRgNCw0LzQvNCwXCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwi0KHRgtC+0LvQsdGH0LDRgtCw0Y8g0LTQuNCw0LPRgNCw0LzQvNCwXCIsXG4gIGNoYXJ0VHlwZV9zdGFja2VkYmFyOiBcItCh0YLQvtC70LHRh9Cw0YLQsNGPINC00LjQsNCz0YDQsNC80LzQsCDRgSDQvdCw0LrQvtC/0LvQtdC90LjQtdC8XCIsXG4gIGNoYXJ0VHlwZV9kb3VnaG51dDogXCLQmtC+0LvRjNGG0LXQstCw0Y8g0LTQuNCw0LPRgNCw0LzQvNCwXCIsXG4gIGNoYXJ0VHlwZV9waWU6IFwi0JrRgNGD0LPQvtCy0LDRjyDQtNC40LDQs9GA0LDQvNC80LBcIixcbiAgY2hhcnRUeXBlX3NjYXR0ZXI6IFwi0KLQvtGH0LXRh9C90LDRjyDQtNC40LDQs9GA0LDQvNC80LBcIixcbiAgY2hhcnRUeXBlX2dhdWdlOiBcItCY0LfQvNC10YDQuNGC0LXQu9GM0L3QsNGPINC00LjQsNCz0YDQsNC80LzQsFwiLFxuICBjaGFydFR5cGVfYnVsbGV0OiBcItCc0LDRgNC60LjRgNC+0LLQsNC90L3QsNGPINC00LjQsNCz0YDQsNC80LzQsFwiLFxuICBoaWRlQnV0dG9uOiBcItCh0LrRgNGL0YLRjFwiLFxuICBzaG93QnV0dG9uOiBcItCf0L7QutCw0LfQsNGC0YxcIixcbiAgcmVzZXRGaWx0ZXI6IFwi0J7Rh9C40YHRgtC40YLRjCDRhNC40LvRjNGC0YBcIixcbiAgY2hhbmdlTG9jYWxlOiBcItCh0LzQtdC90LjRgtGMINGP0LfRi9C6XCIsXG4gIGNsZWFyQnV0dG9uOiBcItCe0YfQuNGB0YLQuNGC0YxcIixcbiAgYWRkRWxlbWVudDogXCLQktGL0LHQtdGA0LjRgtC1INCy0L7Qv9GA0L7RgS4uLlwiLFxuICBkZWZhdWx0T3JkZXI6IFwi0J/QvtGA0Y/QtNC+0Log0L/QviDRg9C80L7Qu9GH0LDQvdC40Y5cIixcbiAgYXNjT3JkZXI6IFwi0KHQvtGA0YLQuNGA0L7QstCw0YLRjCDQv9C+INCy0L7Qt9GA0LDRgdGC0LDQvdC40Y5cIixcbiAgZGVzY09yZGVyOiBcItCh0L7RgNGC0LjRgNC+0LLQsNGC0Ywg0L/QviDRg9Cx0YvQstCw0L3QuNGOXCIsXG4gIHNob3dNaW5vckNvbHVtbnM6IFwi0J/QvtC60LDQt9Cw0YLRjCDQstGC0L7RgNC+0YHRgtC10L/QtdC90L3Ri9C1INGB0YLQvtC70LHRhtGLXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcItCU0YDRg9Cz0L7QtSDQuCDQutC+0LzQvNC10L3RgtCw0YDQuNC4XCIsXG4gIG5vVmlzdWFsaXplckZvclF1ZXN0aW9uOiBcItCt0YLQvtGCINGC0LjQvyDQstC+0L/RgNC+0YHQsCDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgtGB0Y9cIixcbiAgbm9SZXN1bHRzOiBcItCg0LXQt9GD0LvRjNGC0LDRgtGLINC+0YLRgdGD0YLRgdGC0LLRg9GO0YJcIixcbiAgZmlsdGVyUGxhY2Vob2xkZXI6IFwi0J/QvtC40YHQui4uLlwiLFxuICByZW1vdmVSb3dzOiBcItCj0LTQsNC70LjRgtGMINGB0YLRgNC+0LrQuFwiLFxuICBzaG93TGFiZWw6IFwi0J/QvtC60LDQt9Cw0YLRjFwiLFxuICBlbnRyaWVzTGFiZWw6IFwi0LfQsNC/0LjRgdC10LlcIixcbiAgbWFrZVByaXZhdGVCdXR0b246IFwi0KHQtNC10LvQsNGC0Ywg0L/RgNC40LLQsNGC0L3Ri9C8XCIsXG4gIG1ha2VQdWJsaWNCdXR0b246IFwi0KHQtNC10LvQsNGC0Ywg0L/Rg9Cx0LvQuNGH0L3Ri9C8XCIsXG4gIHNob3dQZXJjZW50YWdlczogXCLQn9C+0LrQsNC30LDRgtGMINC/0YDQvtGG0LXQvdGC0YtcIixcbiAgaGlkZVBlcmNlbnRhZ2VzOiBcItCh0LrRgNGL0YLRjCDQv9GA0L7RhtC10L3RgtGLXCIsXG4gIHBkZkRvd25sb2FkQ2FwdGlvbjogXCJQREZcIixcbiAgeGxzeERvd25sb2FkQ2FwdGlvbjogXCJFeGNlbFwiLFxuICBjc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIsXG4gIHNhdmVEaWFncmFtQXNQTkc6IFwi0KHQutCw0YfQsNGC0Ywg0LTQuNCw0LPRgNCw0LzQvNGDINCyINGE0L7RgNC80LDRgtC1IFBOR1wiLFxuICBoaWRlRW1wdHlBbnN3ZXJzOiBcItCh0LrRgNGL0YLRjCDQv9GD0YHRgtGL0LUg0L7RgtCy0LXRgtGLXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwi0J/QvtC60LDQt9Cw0YLRjCDQv9GD0YHRgtGL0LUg0L7RgtCy0LXRgtGLXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwi0JLRgdC1INC+0YLQstC10YLRi1wiLFxuICBcInRvcE5WYWx1ZVRleHQ1XCI6IFwi0J/QtdGA0LLRi9C1IDUg0L7RgtCy0LXRgtC+0LJcIixcbiAgXCJ0b3BOVmFsdWVUZXh0MTBcIjogXCLQn9C10YDQstGL0LUgMTAg0L7RgtCy0LXRgtC+0LJcIixcbiAgXCJ0b3BOVmFsdWVUZXh0MjBcIjogXCLQn9C10YDQstGL0LUgMjAg0L7RgtCy0LXRgtC+0LJcIixcbiAgaGlkZU1pc3NpbmdBbnN3ZXJzOiBcItCh0LrRgNGL0YLRjCDQvtGC0YHRg9GC0YHRgtCy0YPRjtGJ0LjQtSDQvtGC0LLQtdGC0YtcIixcbiAgc2hvd01pc3NpbmdBbnN3ZXJzOiBcItCf0L7QutCw0LfQsNGC0Ywg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0L7RgtCy0LXRgtGLXCIsXG4gIG1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwi0J7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0L7RgtCy0LXRgtGLXCIsXG4gIHNob3dQZXJWYWx1ZXM6IFwi0J/QviDQt9C90LDRh9C10L3QuNGP0LxcIixcbiAgc2hvd1BlckNvbHVtbnM6IFwi0J/QviDRgdGC0L7Qu9Cx0YbQsNC8XCIsXG4gIGFuc3dlcjogXCLQntGC0LLQtdGCXCIsXG4gIGNvcnJlY3RBbnN3ZXI6IFwi0J/RgNCw0LLQuNC70YzQvdGL0Lkg0L7RgtCy0LXRgjogXCIsXG4gIHBlcmNlbnQ6IFwi0L/RgNC+0YbQtdC90YLQvtCyXCIsXG4gIHJlc3BvbnNlczogXCLQvtGC0LLQtdGC0L7QslwiXG59O1xuXG5sb2NhbGl6YXRpb24ubG9jYWxlc1tcInJ1XCJdID0gcnVzc2lhblN0cmluZ3M7XG5sb2NhbGl6YXRpb24ubG9jYWxlTmFtZXNbXCJydVwiXSA9IFwi0KDRg9GB0YHQutC40LlcIjtcbiIsImV4cG9ydCAqIGZyb20gXCIuLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbi8vbG9jYWxpemF0aW9uXG5pbXBvcnQgXCIuLi9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2ZhcnNpXCI7XG5pbXBvcnQgXCIuLi9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2ZyZW5jaFwiO1xuaW1wb3J0IFwiLi4vYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9nZXJtYW5cIjtcbmltcG9ydCBcIi4uL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vbm9yd2VnaWFuXCI7XG5pbXBvcnQgXCIuLi9hbmFseXRpY3MtbG9jYWxpemF0aW9uL3BvcnR1Z3Vlc2VcIjtcbmltcG9ydCBcIi4uL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vcnVzc2lhblwiO1xuaW1wb3J0IFwiLi4vYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9kdXRjaFwiO1xuaW1wb3J0IFwiLi4vYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9hcmFiaWNcIjtcblxuLy9leHRlbnNpb25zXG5pbXBvcnQgXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy9yb3dleHRlbnNpb25zXCI7XG5pbXBvcnQgXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy9oZWFkZXJleHRlbnNpb25zXCI7XG5pbXBvcnQgXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy9jb2x1bW5leHRlbnNpb25zXCI7XG5pbXBvcnQgXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy9kZXRhaWxzZXh0ZW5zaW9uc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi4vdGFibGVzL3RhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi4vdGFibGVzL2RhdGF0YWJsZXNcIjtcbmV4cG9ydCB7IFRhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy90YWJsZWV4dGVuc2lvbnNcIjtcbmV4cG9ydCB7IERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uL3V0aWxzL2luZGV4XCI7XG4iLCJpbXBvcnQgeyBlbmdsaXNoU3RyaW5ncyB9IGZyb20gXCIuL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vZW5nbGlzaFwiO1xuXG5leHBvcnQgdmFyIGxvY2FsaXphdGlvbiA9IHtcbiAgY3VycmVudExvY2FsZVZhbHVlOiBcIlwiLFxuICBkZWZhdWx0TG9jYWxlVmFsdWU6IFwiZW5cIixcbiAgbG9jYWxlczogPHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfT57fSxcbiAgbG9jYWxlTmFtZXM6IDx7IFtpbmRleDogc3RyaW5nXTogYW55IH0+e30sXG4gIHN1cHBvcnRlZExvY2FsZXM6IDxBcnJheTxhbnk+PltdLFxuICBnZXQgY3VycmVudExvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50TG9jYWxlVmFsdWUgPT09IHRoaXMuZGVmYXVsdExvY2FsZVZhbHVlXG4gICAgICA/IFwiXCJcbiAgICAgIDogdGhpcy5jdXJyZW50TG9jYWxlVmFsdWU7XG4gIH0sXG4gIHNldCBjdXJyZW50TG9jYWxlKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50TG9jYWxlVmFsdWUgPSB2YWw7XG4gIH0sXG4gIGdldCBkZWZhdWx0TG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRMb2NhbGVWYWx1ZTtcbiAgfSxcbiAgc2V0IGRlZmF1bHRMb2NhbGUodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlZmF1bHRMb2NhbGVWYWx1ZSA9IHZhbDtcbiAgfSxcbiAgZ2V0U3RyaW5nOiBmdW5jdGlvbiAoc3RyTmFtZTogc3RyaW5nKSB7XG4gICAgdmFyIGxvYyA9IHRoaXMuY3VycmVudExvY2FsZVxuICAgICAgPyB0aGlzLmxvY2FsZXNbdGhpcy5jdXJyZW50TG9jYWxlXVxuICAgICAgOiB0aGlzLmxvY2FsZXNbdGhpcy5kZWZhdWx0TG9jYWxlXTtcbiAgICBpZiAoIWxvYyB8fCAhbG9jW3N0ck5hbWVdKSBsb2MgPSB0aGlzLmxvY2FsZXNbdGhpcy5kZWZhdWx0TG9jYWxlXTtcbiAgICB2YXIgcmVzdWx0ID0gbG9jW3N0ck5hbWVdO1xuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5sb2NhbGVzW1wiZW5cIl1bc3RyTmFtZV0gfHwgc3RyTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSxcbiAgZ2V0TG9jYWxlczogZnVuY3Rpb24gKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICByZXMucHVzaChcIlwiKTtcbiAgICBpZiAodGhpcy5zdXBwb3J0ZWRMb2NhbGVzICYmIHRoaXMuc3VwcG9ydGVkTG9jYWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3VwcG9ydGVkTG9jYWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXMucHVzaCh0aGlzLnN1cHBvcnRlZExvY2FsZXNbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5sb2NhbGVzKSB7XG4gICAgICAgIHJlcy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlcy5zb3J0KCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxufTtcblxuZXhwb3J0IHZhciBzdXJ2ZXlTdHJpbmdzID0gZW5nbGlzaFN0cmluZ3M7XG4oPGFueT5sb2NhbGl6YXRpb24pLmxvY2FsZXNbXCJlblwiXSA9IGVuZ2xpc2hTdHJpbmdzO1xuKDxhbnk+bG9jYWxpemF0aW9uKS5sb2NhbGVOYW1lc1tcImVuXCJdID0gXCJFbmdsaXNoXCI7XG4iLCJpbXBvcnQgeyBRdWVzdGlvbiwgUXVlc3Rpb25Db21wb3NpdGVNb2RlbCwgUXVlc3Rpb25DdXN0b21Nb2RlbCwgUXVlc3Rpb25GaWxlTW9kZWwsIFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbCwgUXVlc3Rpb25NYXRyaXhNb2RlbCwgUXVlc3Rpb25TZWxlY3RCYXNlIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBCYXNlQ29sdW1uLCBDb21tZW50Q29sdW1uLCBDb21wb3NpdGVRdWVzdGlvbkNvbHVtbiwgQ3VzdG9tUXVlc3Rpb25Db2x1bW4sIEZpbGVDb2x1bW4sIEltYWdlQ29sdW1uLCBNYXRyaXhDb2x1bW4sIE1hdHJpeERyb3Bkb3duQ29sdW1uIH0gZnJvbSBcIi4vY29sdW1uc1wiO1xuaW1wb3J0IHsgSUNvbHVtbiB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiLi90YWJsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5zQnVpbGRlciB7XG4gIGJ1aWxkQ29sdW1ucyhxdWVzdGlvbjogUXVlc3Rpb24sIHRhYmxlOiBUYWJsZSk6IEFycmF5PElDb2x1bW4+O1xufVxuZXhwb3J0IGNsYXNzIERlZmF1bHRDb2x1bW5zQnVpbGRlcjxUIGV4dGVuZHMgUXVlc3Rpb24gPSBRdWVzdGlvbj4gaW1wbGVtZW50cyBJQ29sdW1uc0J1aWxkZXIge1xuICBwcm90ZWN0ZWQgY3JlYXRlQ29sdW1uKHF1ZXN0aW9uOiBULCB0YWJsZTogVGFibGUpIHtcbiAgICByZXR1cm4gbmV3IEJhc2VDb2x1bW4ocXVlc3Rpb24sIHRhYmxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZENvbHVtbnNDb3JlKHF1ZXN0aW9uOiBULCB0YWJsZTogVGFibGUpOiBBcnJheTxJQ29sdW1uPiB7XG4gICAgY29uc3QgY29sdW1uczogQXJyYXk8SUNvbHVtbj4gPSBbXTtcbiAgICBjb2x1bW5zLnB1c2godGhpcy5jcmVhdGVDb2x1bW4ocXVlc3Rpb24sIHRhYmxlKSk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDb2x1bW5zKHF1ZXN0aW9uOiBULCB0YWJsZTogVGFibGUpOiBBcnJheTxJQ29sdW1uPiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zQ29yZShxdWVzdGlvbiwgdGFibGUpO1xuICAgIGlmIChcbiAgICAgIHF1ZXN0aW9uLmhhc0NvbW1lbnQgfHxcbiAgICAgIChxdWVzdGlvbi5oYXNPdGhlciAmJiAoPGFueT5xdWVzdGlvbiBhcyBRdWVzdGlvblNlbGVjdEJhc2UpW1wiZ2V0U3RvcmVPdGhlcnNBc0NvbW1lbnRcIl0oKSlcbiAgICApIHtcbiAgICAgIGNvbHVtbnMucHVzaChuZXcgQ29tbWVudENvbHVtbihxdWVzdGlvbiwgdGFibGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtbnNCdWlsZGVyRmFjdG9yeSB7XG4gIHB1YmxpYyBzdGF0aWMgSW5zdGFuY2U6IENvbHVtbnNCdWlsZGVyRmFjdG9yeSA9IG5ldyBDb2x1bW5zQnVpbGRlckZhY3RvcnkoKTtcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5zQnVpbGRlcnM6IHtbaW5kZXg6IHN0cmluZ106IElDb2x1bW5zQnVpbGRlciB9ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdENvbHVtbnNCdWlsZGVyOiBJQ29sdW1uc0J1aWxkZXIgPSBuZXcgRGVmYXVsdENvbHVtbnNCdWlsZGVyKCk7XG5cbiAgcmVnaXN0ZXJCdWlsZGVyQ29sdW1uKHR5cGU6IHN0cmluZywgY29sdW1uc0J1aWxkZXI6IElDb2x1bW5zQnVpbGRlcikge1xuICAgIHRoaXMuY29sdW1uc0J1aWxkZXJzW3R5cGVdID0gY29sdW1uc0J1aWxkZXI7XG4gIH1cbiAgZ2V0Q29sdW1uc0J1aWxkZXIodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uc0J1aWxkZXJzW3R5cGVdIHx8IHRoaXMuZGVmYXVsdENvbHVtbnNCdWlsZGVyO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNYXRyaXhDb2x1bW5zQnVpbGRlciBleHRlbmRzIERlZmF1bHRDb2x1bW5zQnVpbGRlcjxRdWVzdGlvbk1hdHJpeE1vZGVsPiB7XG4gIHByb3RlY3RlZCBidWlsZENvbHVtbnNDb3JlKHF1ZXN0aW9uQmFzZTogUXVlc3Rpb24sIHRhYmxlOiBUYWJsZSk6IElDb2x1bW5bXSB7XG4gICAgY29uc3QgcXVlc3Rpb24gPSA8UXVlc3Rpb25NYXRyaXhNb2RlbD5xdWVzdGlvbkJhc2U7XG4gICAgY29uc3QgY29sdW1ucyA9IFtdO1xuICAgIHF1ZXN0aW9uLnJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgY29sdW1ucy5wdXNoKG5ldyBNYXRyaXhDb2x1bW4ocXVlc3Rpb24sIHJvdywgdGFibGUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29sdW1ucztcbiAgfVxufVxuQ29sdW1uc0J1aWxkZXJGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQnVpbGRlckNvbHVtbihcIm1hdHJpeFwiLCBuZXcgTWF0cml4Q29sdW1uc0J1aWxkZXIoKSk7XG5cbmV4cG9ydCBjbGFzcyBJbWFnZUNvbHVtbnNCdWlsZGVyIGV4dGVuZHMgRGVmYXVsdENvbHVtbnNCdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbHVtbihxdWVzdGlvbjogUXVlc3Rpb24sIHRhYmxlOiBUYWJsZSk6IEltYWdlQ29sdW1uIHtcbiAgICByZXR1cm4gbmV3IEltYWdlQ29sdW1uKHF1ZXN0aW9uLCB0YWJsZSk7XG4gIH1cbn1cbkNvbHVtbnNCdWlsZGVyRmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckJ1aWxkZXJDb2x1bW4oXCJzaWduYXR1cmVwYWRcIiwgbmV3IEltYWdlQ29sdW1uc0J1aWxkZXIoKSk7XG5cbmV4cG9ydCBjbGFzcyBGaWxlQ29sdW1uc0J1aWxkZXIgZXh0ZW5kcyBEZWZhdWx0Q29sdW1uc0J1aWxkZXI8UXVlc3Rpb25GaWxlTW9kZWw+IHtcbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbHVtbihxdWVzdGlvbjogUXVlc3Rpb25GaWxlTW9kZWwsIHRhYmxlOiBUYWJsZSk6IEZpbGVDb2x1bW4ge1xuICAgIHJldHVybiBuZXcgRmlsZUNvbHVtbihxdWVzdGlvbiwgdGFibGUpO1xuICB9XG59XG5Db2x1bW5zQnVpbGRlckZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJCdWlsZGVyQ29sdW1uKFwiZmlsZVwiLCBuZXcgRmlsZUNvbHVtbnNCdWlsZGVyKCkpO1xuXG5leHBvcnQgY2xhc3MgTWF0cml4RHJvcGRvd25Db2x1bW5CdWlsZGVyIGV4dGVuZHMgRGVmYXVsdENvbHVtbnNCdWlsZGVyIHtcbiAgcHVibGljIGJ1aWxkQ29sdW1ucyhxdWVzdGlvbkJhc2U6IFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbCwgdGFibGU6IFRhYmxlKTogQXJyYXk8SUNvbHVtbj4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uID0gPFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbD5xdWVzdGlvbkJhc2U7XG4gICAgY29uc3QgY29sdW1ucyA9IFtdO1xuICAgIHF1ZXN0aW9uLnJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgcXVlc3Rpb24uY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgIGNvbHVtbnMucHVzaChuZXcgTWF0cml4RHJvcGRvd25Db2x1bW4ocXVlc3Rpb24sIHJvdywgY29sLCB0YWJsZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH1cbn1cbkNvbHVtbnNCdWlsZGVyRmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckJ1aWxkZXJDb2x1bW4oXCJtYXRyaXhkcm9wZG93blwiLCBuZXcgTWF0cml4RHJvcGRvd25Db2x1bW5CdWlsZGVyKCkpO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29sdW1uc0J1aWxkZXIgZXh0ZW5kcyBEZWZhdWx0Q29sdW1uc0J1aWxkZXI8UXVlc3Rpb25DdXN0b21Nb2RlbD4ge1xuICBwcm90ZWN0ZWQgY3JlYXRlQ29sdW1uKHF1ZXN0aW9uOiBRdWVzdGlvbkN1c3RvbU1vZGVsLCB0YWJsZTogVGFibGUpOiBDdXN0b21RdWVzdGlvbkNvbHVtbiB7XG4gICAgcmV0dXJuIG5ldyBDdXN0b21RdWVzdGlvbkNvbHVtbihxdWVzdGlvbiwgdGFibGUpO1xuICB9XG59XG5Db2x1bW5zQnVpbGRlckZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJCdWlsZGVyQ29sdW1uKFwiY3VzdG9tXCIsIG5ldyBDdXN0b21Db2x1bW5zQnVpbGRlcigpKTtcblxuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZUNvbHVtbnNCdWlsZGVyIGV4dGVuZHMgRGVmYXVsdENvbHVtbnNCdWlsZGVyPFF1ZXN0aW9uQ29tcG9zaXRlTW9kZWw+IHtcbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbHVtbihxdWVzdGlvbjogUXVlc3Rpb25Db21wb3NpdGVNb2RlbCwgdGFibGU6IFRhYmxlKTogQ29tcG9zaXRlUXVlc3Rpb25Db2x1bW4ge1xuICAgIHJldHVybiBuZXcgQ29tcG9zaXRlUXVlc3Rpb25Db2x1bW4ocXVlc3Rpb24sIHRhYmxlKTtcbiAgfVxufVxuQ29sdW1uc0J1aWxkZXJGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQnVpbGRlckNvbHVtbihcImNvbXBvc2l0ZVwiLCBuZXcgQ29tcG9zaXRlQ29sdW1uc0J1aWxkZXIoKSk7XG4iLCJpbXBvcnQgeyBCYXNlLCBJdGVtVmFsdWUsIE1hdHJpeFJvd01vZGVsLCBRdWVzdGlvbiwgUXVlc3Rpb25Db21wb3NpdGVNb2RlbCwgUXVlc3Rpb25DdXN0b21Nb2RlbCwgUXVlc3Rpb25GaWxlTW9kZWwsIFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbCwgUXVlc3Rpb25NYXRyaXhNb2RlbCwgc2V0dGluZ3MgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUltYWdlc0NvbnRhaW5lciwgY3JlYXRlTGlua3NDb250YWluZXIgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IElDZWxsRGF0YSwgSUNvbHVtbiwgQ29sdW1uRGF0YVR5cGUsIFF1ZXN0aW9uTG9jYXRpb24sIElDb2x1bW5EYXRhIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBJVGFibGVPcHRpb25zLCBUYWJsZSB9IGZyb20gXCIuL3RhYmxlXCI7XG5leHBvcnQgY2xhc3MgQmFzZUNvbHVtbjxUIGV4dGVuZHMgUXVlc3Rpb24gPSBRdWVzdGlvbj4gaW1wbGVtZW50cyBJQ29sdW1uIHtcbiAgZGF0YVR5cGU6IENvbHVtbkRhdGFUeXBlO1xuICBpc1Zpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc1B1YmxpYzogYm9vbGVhbiA9IHRydWU7XG4gIGxvY2F0aW9uOiBRdWVzdGlvbkxvY2F0aW9uID0gUXVlc3Rpb25Mb2NhdGlvbi5Db2x1bW47XG4gIHdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuICB2aXNpYmxlSW5kZXg/OiBudW1iZXI7XG4gIGlzQ29tbWVudD86IGJvb2xlYW47XG4gIHByaXZhdGUgbmFtZVZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgZGlzcGxheU5hbWVWYWx1ZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcXVlc3Rpb246IFQsIHByb3RlY3RlZCB0YWJsZTogVGFibGUpIHtcbiAgICB0aGlzLmRhdGFUeXBlID0gdGhpcy5nZXREYXRhVHlwZSgpO1xuICB9XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgaWYoIXRoaXMubmFtZVZhbHVlKSB7XG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLmdldE5hbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmFtZVZhbHVlO1xuICB9XG4gIHNldCBuYW1lKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lVmFsdWUgPSB2YWw7XG4gIH1cbiAgZ2V0IGRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYoIXRoaXMuZGlzcGxheU5hbWVWYWx1ZSkge1xuICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RGlzcGxheU5hbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU5hbWVWYWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc3BsYXlOYW1lKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwbGF5TmFtZVZhbHVlID0gdmFsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUudXNlTmFtZXNBc1RpdGxlc1xuICAgICAgPyB0aGlzLnF1ZXN0aW9uLm5hbWVcbiAgICAgIDogKHRoaXMucXVlc3Rpb24udGl0bGUgfHwgXCJcIikudHJpbSgpIHx8IHRoaXMucXVlc3Rpb24ubmFtZTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uLm5hbWU7XG4gIH1cbiAgcHJvdGVjdGVkIGdldERhdGFUeXBlKCk6IENvbHVtbkRhdGFUeXBlIHtcbiAgICByZXR1cm4gQ29sdW1uRGF0YVR5cGUuVGV4dDtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVZhbHVlQ29yZShkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gZGF0YVt0aGlzLm5hbWVdO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwUmVhZHlDaGFuZ2VkQ2FsbGJhY2sodGFibGU6IFRhYmxlLCBxdWVzdGlvbjogUXVlc3Rpb24pIHtcbiAgICBpZighIXF1ZXN0aW9uKSB7XG4gICAgICBjb25zdCBvblJlYWR5Q2hhbmdlZENhbGxiYWNrID0gKHNlbmRlciwgb3B0aW9ucykgPT4ge1xuICAgICAgICBpZihvcHRpb25zLmlzUmVhZHkpIHtcbiAgICAgICAgICB0YWJsZS5yZWZyZXNoKCF0YWJsZS5pc0luaXRUYWJsZURhdGFQcm9jZXNzaW5nKTtcbiAgICAgICAgICBzZW5kZXIub25SZWFkeUNoYW5nZWQucmVtb3ZlKG9uUmVhZHlDaGFuZ2VkQ2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgaWYoIXF1ZXN0aW9uLmlzUmVhZHkpIHtcbiAgICAgICAgcXVlc3Rpb24ub25SZWFkeUNoYW5nZWQuYWRkKG9uUmVhZHlDaGFuZ2VkQ2FsbGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREaXNwbGF5VmFsdWUoZGF0YTogYW55LCB0YWJsZTogVGFibGUsIG9wdGlvbnM6IElUYWJsZU9wdGlvbnMpOiBhbnkge1xuICAgIGxldCBkaXNwbGF5VmFsdWUgPSB0aGlzLmdldERpc3BsYXlWYWx1ZUNvcmUoZGF0YSk7XG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uO1xuXG4gICAgaWYgKCEhcXVlc3Rpb24pIHtcbiAgICAgIGlmIChvcHRpb25zLnVzZVZhbHVlc0FzTGFiZWxzKSB7XG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IHF1ZXN0aW9uLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzcGxheVZhbHVlID0gcXVlc3Rpb24uZGlzcGxheVZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzcGxheVZhbHVlO1xuICB9XG4gIHByaXZhdGUgZm9ybWF0RGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBkaXNwbGF5VmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgID8gZGlzcGxheVZhbHVlXG4gICAgICA6IEpTT04uc3RyaW5naWZ5KGRpc3BsYXlWYWx1ZSkgfHwgXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsRGF0YSh0YWJsZTogVGFibGUsIGRhdGE6IGFueSk6IElDZWxsRGF0YSB7XG4gICAgY29uc3QgZGlzcGxheVZhbHVlID0gdGhpcy5nZXREaXNwbGF5VmFsdWUoZGF0YSwgdGFibGUsIHRhYmxlLm9wdGlvbnMpO1xuICAgIHRoaXMuc2V0dXBSZWFkeUNoYW5nZWRDYWxsYmFjayh0YWJsZSwgdGhpcy5xdWVzdGlvbik7XG4gICAgcmV0dXJuIHsgcXVlc3Rpb246IHRoaXMucXVlc3Rpb24sIGRpc3BsYXlWYWx1ZTogdGhpcy5mb3JtYXREaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlKSB9O1xuICB9XG4gIHB1YmxpYyB0b0pTT04oKTogSUNvbHVtbkRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogdGhpcy5kaXNwbGF5TmFtZSxcbiAgICAgIGRhdGFUeXBlOiB0aGlzLmRhdGFUeXBlLFxuICAgICAgaXNWaXNpYmxlOiB0aGlzLmlzVmlzaWJsZSxcbiAgICAgIGlzUHVibGljOiB0aGlzLmlzUHVibGljLFxuICAgICAgbG9jYXRpb246IHRoaXMubG9jYXRpb25cbiAgICB9O1xuICB9XG4gIHB1YmxpYyBmcm9tSlNPTihkYXRhOiBJQ29sdW1uRGF0YSkge1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHRoaXNba2V5XSA9IGRhdGFba2V5XTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdENvbHVtbiBleHRlbmRzIEJhc2VDb2x1bW4ge1xuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVZhbHVlKGRhdGE6IGFueSwgdGFibGU6IFRhYmxlLCBvcHRpb25zOiBJVGFibGVPcHRpb25zKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVDb3JlKGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tZW50Q29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbiB7XG4gIHByb3RlY3RlZCBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucXVlc3Rpb24ubmFtZX0ke3NldHRpbmdzLmNvbW1lbnRQcmVmaXh9YDtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWVzdGlvbi5oYXNPdGhlclxuICAgICAgPyAoPGFueT50aGlzLnF1ZXN0aW9uKS5vdGhlclRleHRcbiAgICAgIDogdGhpcy5xdWVzdGlvbi5jb21tZW50VGV4dDtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVZhbHVlKGRhdGE6IGFueSwgdGFibGU6IFRhYmxlLCBvcHRpb25zOiBJVGFibGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlc3Rpb24uY29tbWVudDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWF0cml4Q29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbjxRdWVzdGlvbk1hdHJpeE1vZGVsPiB7XG4gIHByaXZhdGUgdmFsdWVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgdmFsdWVQYXRoOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHF1ZXN0aW9uOiBRdWVzdGlvbk1hdHJpeE1vZGVsLCBwcml2YXRlIHJvdzogTWF0cml4Um93TW9kZWwsIHRhYmxlOiBUYWJsZSkge1xuICAgIHN1cGVyKHF1ZXN0aW9uLCB0YWJsZSk7XG4gICAgdGhpcy52YWx1ZU5hbWUgPSB0aGlzLnF1ZXN0aW9uLm5hbWU7XG4gICAgdGhpcy52YWx1ZVBhdGggPSB0aGlzLnJvdz8udmFsdWU7XG4gIH1cbiAgcHJvdGVjdGVkIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWVzdGlvbi5uYW1lICsgXCIuXCIgKyB0aGlzLnJvdz8udmFsdWU7XG4gIH1cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlO1xuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5xdWVzdGlvbjtcbiAgICBjb25zdCByb3cgPSB0aGlzLnJvdztcbiAgICByZXR1cm4gKHRhYmxlLnVzZU5hbWVzQXNUaXRsZXNcbiAgICAgID8gcXVlc3Rpb24ubmFtZVxuICAgICAgOiAocXVlc3Rpb24udGl0bGUgfHwgXCJcIikudHJpbSgpIHx8IHF1ZXN0aW9uLm5hbWUpICsgXCIgLSBcIiArICh0YWJsZS51c2VOYW1lc0FzVGl0bGVzID8gcm93Py52YWx1ZSA6IHJvdz8ubG9jVGV4dC50ZXh0T3JIdG1sKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREaXNwbGF5VmFsdWUoZGF0YTogYW55LCB0YWJsZTogVGFibGUsIG9wdGlvbnM6IElUYWJsZU9wdGlvbnMpIHtcbiAgICBsZXQgZGlzcGxheVZhbHVlID0gZGF0YVt0aGlzLnZhbHVlTmFtZV07XG4gICAgaWYodGhpcy52YWx1ZVBhdGggJiYgdHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgZGlzcGxheVZhbHVlID0gZGlzcGxheVZhbHVlW3RoaXMudmFsdWVQYXRoXTtcbiAgICAgIGlmKGRpc3BsYXlWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNob2ljZVZhbHVlID0gSXRlbVZhbHVlLmdldEl0ZW1CeVZhbHVlKHRoaXMucXVlc3Rpb24uY29sdW1ucywgZGlzcGxheVZhbHVlKTtcbiAgICAgICAgaWYoISFjaG9pY2VWYWx1ZSkge1xuICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9IG9wdGlvbnMudXNlVmFsdWVzQXNMYWJlbHMgPyBjaG9pY2VWYWx1ZS52YWx1ZSA6IGNob2ljZVZhbHVlLmxvY1RleHQudGV4dE9ySHRtbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzcGxheVZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbWFnZUNvbHVtbiBleHRlbmRzIEJhc2VDb2x1bW4ge1xuICBwcm90ZWN0ZWQgZ2V0RGF0YVR5cGUoKTogQ29sdW1uRGF0YVR5cGUge1xuICAgIHJldHVybiBDb2x1bW5EYXRhVHlwZS5JbWFnZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsZUNvbHVtbiBleHRlbmRzIEJhc2VDb2x1bW48UXVlc3Rpb25GaWxlTW9kZWw+IHtcbiAgcHJvdGVjdGVkIGdldERhdGFUeXBlKCk6IENvbHVtbkRhdGFUeXBlIHtcbiAgICByZXR1cm4gQ29sdW1uRGF0YVR5cGUuRmlsZUxpbms7XG4gIH1cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlWYWx1ZShkYXRhOiBhbnksIHRhYmxlOiBUYWJsZSwgb3B0aW9uczogSVRhYmxlT3B0aW9ucykge1xuICAgIGxldCBkaXNwbGF5VmFsdWUgPSB0aGlzLmdldERpc3BsYXlWYWx1ZUNvcmUoZGF0YSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheVZhbHVlKSkge1xuICAgICAgZGlzcGxheVZhbHVlID0gVGFibGUuc2hvd0ZpbGVzQXNJbWFnZXMgPyBjcmVhdGVJbWFnZXNDb250YWluZXIoXG4gICAgICAgIGRpc3BsYXlWYWx1ZVxuICAgICAgKS5vdXRlckhUTUwgOiBjcmVhdGVMaW5rc0NvbnRhaW5lcihcbiAgICAgICAgZGlzcGxheVZhbHVlXG4gICAgICApLm91dGVySFRNTDtcbiAgICB9XG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZTtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIE1hdHJpeERyb3Bkb3duQ29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbjxRdWVzdGlvbk1hdHJpeERyb3Bkb3duTW9kZWw+IHtcbiAgcHJpdmF0ZSByb3dWYWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIGNvbE5hbWU6IHN0cmluZztcbiAgY29uc3RydWN0b3IocXVlc3Rpb246IFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbCwgcHJvdGVjdGVkIHJvdywgcHJvdGVjdGVkIGNvbCwgdGFibGU6IFRhYmxlKSB7XG4gICAgc3VwZXIocXVlc3Rpb24sIHRhYmxlKTtcbiAgICB0aGlzLnJvd1ZhbHVlID0gdGhpcy5yb3cudmFsdWU7XG4gICAgdGhpcy5jb2xOYW1lID0gdGhpcy5jb2wubmFtZTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uLm5hbWUgKyBcIi5cIiArIHRoaXMucm93LnZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbC5uYW1lO1xuICB9XG4gIHByb3RlY3RlZCBnZXREaXNwbGF5TmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZTtcbiAgICBjb25zdCBxdWVzdGlvbiA9IHRoaXMucXVlc3Rpb247XG4gICAgcmV0dXJuICh0aGlzLnRhYmxlLnVzZU5hbWVzQXNUaXRsZXNcbiAgICAgID8gcXVlc3Rpb24ubmFtZVxuICAgICAgOiAocXVlc3Rpb24udGl0bGUgfHwgXCJcIikudHJpbSgpIHx8IHF1ZXN0aW9uLm5hbWUpICsgXCIgLSBcIiArICh0YWJsZS51c2VOYW1lc0FzVGl0bGVzID8gdGhpcy5yb3cudmFsdWUgOiB0aGlzLnJvdy5sb2NUZXh0LnRleHRPckh0bWwpICsgXCIgLSBcIiArICh0YWJsZS51c2VOYW1lc0FzVGl0bGVzID8gdGhpcy5jb2wubmFtZSA6IHRoaXMuY29sLmxvY1RpdGxlLnRleHRPckh0bWwpO1xuXG4gIH1cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlWYWx1ZShkYXRhOiBhbnksIHRhYmxlOiBUYWJsZSwgb3B0aW9uczogSVRhYmxlT3B0aW9ucykge1xuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBkYXRhW3RoaXMucXVlc3Rpb24ubmFtZV07XG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uO1xuICAgIGlmKHRoaXMucm93VmFsdWUgJiYgdGhpcy5jb2xOYW1lICYmIHR5cGVvZiBkaXNwbGF5VmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBbcm93SWQsIGNvbElkXSA9IFt0aGlzLnJvd1ZhbHVlLCB0aGlzLmNvbE5hbWVdO1xuICAgICAgZGlzcGxheVZhbHVlID0gcXVlc3Rpb24udmFsdWU7XG4gICAgICBpZighb3B0aW9ucy51c2VWYWx1ZXNBc0xhYmVscykge1xuICAgICAgICBkaXNwbGF5VmFsdWUgPSBxdWVzdGlvbi5kaXNwbGF5VmFsdWU7XG4gICAgICAgIHJvd0lkID0gcXVlc3Rpb24ucm93cy5maWx0ZXIocm93ID0+IHJvdy52YWx1ZSA9PT0gdGhpcy5yb3dWYWx1ZSlbMF0udGV4dDtcbiAgICAgICAgY29sSWQgPSBxdWVzdGlvbi5nZXRDb2x1bW5CeU5hbWUodGhpcy5jb2xOYW1lKS50aXRsZTtcbiAgICAgIH1cbiAgICAgIGRpc3BsYXlWYWx1ZSA9IChkaXNwbGF5VmFsdWVbcm93SWRdICYmIGRpc3BsYXlWYWx1ZVtyb3dJZF1bY29sSWRdKSB8fCBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gZGlzcGxheVZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21RdWVzdGlvbkNvbHVtbiBleHRlbmRzIEJhc2VDb2x1bW48UXVlc3Rpb25DdXN0b21Nb2RlbD4ge1xuICBwdWJsaWMgZ2V0Q2VsbERhdGEodGFibGU6IFRhYmxlLCBkYXRhOiBhbnkpOiBJQ2VsbERhdGEge1xuICAgIHRoaXMuc2V0dXBSZWFkeUNoYW5nZWRDYWxsYmFjayh0YWJsZSwgdGhpcy5xdWVzdGlvbi5jb250ZW50UXVlc3Rpb24pO1xuICAgIHJldHVybiBzdXBlci5nZXRDZWxsRGF0YSh0YWJsZSwgZGF0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZVF1ZXN0aW9uQ29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbjxRdWVzdGlvbkNvbXBvc2l0ZU1vZGVsPiB7XG4gIHB1YmxpYyBnZXRDZWxsRGF0YSh0YWJsZTogVGFibGUsIGRhdGE6IGFueSk6IElDZWxsRGF0YSB7XG4gICAgY29uc3QgcXVlc3Rpb25MaXN0OiBRdWVzdGlvbltdID0gW107XG4gICAgdGhpcy5xdWVzdGlvbi5jb250ZW50UGFuZWwuYWRkUXVlc3Rpb25zVG9MaXN0KHF1ZXN0aW9uTGlzdCk7XG4gICAgcXVlc3Rpb25MaXN0LmZvckVhY2goKHF1ZXN0aW9uOiBRdWVzdGlvbikgPT4ge1xuICAgICAgdGhpcy5zZXR1cFJlYWR5Q2hhbmdlZENhbGxiYWNrKHRhYmxlLCBxdWVzdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN1cGVyLmdldENlbGxEYXRhKHRhYmxlLCBkYXRhKTtcbiAgfVxufSIsImltcG9ydCB7IFF1ZXN0aW9uLCBTdXJ2ZXlNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgSVRhYmxlT3B0aW9ucywgVGFibGUgfSBmcm9tIFwiLi90YWJsZVwiO1xuXG5leHBvcnQgZW51bSBRdWVzdGlvbkxvY2F0aW9uIHtcbiAgQ29sdW1uLFxuICBSb3csXG59XG5leHBvcnQgZW51bSBDb2x1bW5EYXRhVHlwZSB7XG4gIFRleHQsXG4gIEZpbGVMaW5rLFxuICBJbWFnZSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2VsbERhdGEge1xuICBxdWVzdGlvbjogUXVlc3Rpb247XG4gIGRpc3BsYXlWYWx1ZTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5EYXRhIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBkYXRhVHlwZTogQ29sdW1uRGF0YVR5cGU7XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbiAgaXNQdWJsaWM6IGJvb2xlYW47XG4gIGxvY2F0aW9uOiBRdWVzdGlvbkxvY2F0aW9uO1xuICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgaXNDb21tZW50PzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbiBleHRlbmRzIElDb2x1bW5EYXRhIHtcbiAgdmlzaWJsZUluZGV4PzogbnVtYmVyO1xuICBmcm9tSlNPTihqc29uOiBhbnkpOiB2b2lkO1xuICBnZXRDZWxsRGF0YSh0YWJsZTogVGFibGUsIGRhdGE6IGFueSk6IElDZWxsRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVTdGF0ZSB7XG4gIGxvY2FsZT86IHN0cmluZztcbiAgZWxlbWVudHM/OiBJQ29sdW1uRGF0YVtdO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGVybWlzc2lvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgaXNQdWJsaWM6IGJvb2xlYW47XG59XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iLCJpbXBvcnQgeyBJVGFibGVPcHRpb25zLCBUYWJsZSwgVGFibGVSb3cgfSBmcm9tIFwiLi90YWJsZVwiO1xuaW1wb3J0IHsgU3VydmV5TW9kZWwsIEV2ZW50IH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBDb2x1bW5EYXRhVHlwZSwgSUNvbHVtbiwgSUNvbHVtbkRhdGEsIFF1ZXN0aW9uTG9jYXRpb24gfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbnZhciBzdHlsZXMgPSByZXF1aXJlKFwiLi9kYXRhdGFibGVzLnNjc3NcIik7XG5cbmlmICghIWRvY3VtZW50KSB7XG4gIHZhciBzdmdUZW1wbGF0ZSA9IHJlcXVpcmUoXCJodG1sLWxvYWRlcj9pbnRlcnBvbGF0ZSF2YWwtbG9hZGVyIS4uL3N2Z2J1bmRsZS5odG1sXCIpO1xuICB2YXIgdGVtcGxhdGVIb2xkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICB0ZW1wbGF0ZUhvbGRlci5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIHRlbXBsYXRlSG9sZGVyLmlubmVySFRNTCA9IHN2Z1RlbXBsYXRlO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRlbXBsYXRlSG9sZGVyKTtcbn1cblxudmFyIGpRdWVyeSA9ICg8YW55PndpbmRvdylbXCJqUXVlcnlcIl07XG5cbmludGVyZmFjZSBEYXRhVGFibGVzT3B0aW9ucyBleHRlbmRzIElUYWJsZU9wdGlvbnMge1xuICBidXR0b25zOiBib29sZWFuIHwgc3RyaW5nW10gfCBhbnlbXSB8IGFueTtcblxuICBkb206IHN0cmluZztcblxuICBvcmRlckZpeGVkOiBBcnJheTxudW1iZXIgfCBzdHJpbmc+IHwgQXJyYXk8QXJyYXk8bnVtYmVyIHwgc3RyaW5nPj4gfCBvYmplY3Q7XG5cbiAgcm93R3JvdXA6IGJvb2xlYW4gfCBhbnk7XG5cbiAgaGVhZGVyQ2FsbGJhY2s6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZXMgZXh0ZW5kcyBUYWJsZSB7XG4gIHB1YmxpYyBkYXRhdGFibGVBcGk6IGFueTtcblxuICBwdWJsaWMgY3VycmVudFBhZ2VOdW1iZXI6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIFRoZSBldmVudCBpcyBmaXJlZCBjb2x1bW5zIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY2hhbmdlZC5cbiAgICogPGJyLz4gc2VuZGVyIHRoZSBkYXRhdGFibGVzIGFkYXB0ZXJcbiAgICogPGJyLz4gb3B0aW9ucy5zdXJ2ZXkgY3VycmVudCBzdXJ2ZXlcbiAgICogQHNlZSBnZXRDb2x1bW5zXG4gICAqL1xuICBwdWJsaWMgb25Db2x1bW5zUmVvcmRlcjogRXZlbnQ8XG4gICAgKHNlbmRlcjogRGF0YVRhYmxlcywgb3B0aW9uczogYW55KSA9PiBhbnksXG4gICAgRGF0YVRhYmxlcyxcbiAgICBhbnlcbiAgPiA9IG5ldyBFdmVudDwoc2VuZGVyOiBEYXRhVGFibGVzLCBvcHRpb25zOiBhbnkpID0+IGFueSwgRGF0YVRhYmxlcywgYW55PigpO1xuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdEpRdWVyeSgkOiBhbnkpIHtcbiAgICBqUXVlcnkgPSAkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXQgaGF2ZUNvbW1lcmNpYWxMaWNlbnNlKHZhbDogYm9vbGVhbikge1xuICAgIFRhYmxlLmhhdmVDb21tZXJjaWFsTGljZW5zZSA9IHZhbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN1cnZleTogU3VydmV5TW9kZWwsXG4gICAgZGF0YTogQXJyYXk8T2JqZWN0PixcbiAgICBvcHRpb25zPzogRGF0YVRhYmxlc09wdGlvbnMsXG4gICAgX2NvbHVtbnNEYXRhOiBBcnJheTxJQ29sdW1uRGF0YT4gPSBbXVxuICApIHtcbiAgICBzdXBlcihzdXJ2ZXksIGRhdGEsIG9wdGlvbnMsIF9jb2x1bW5zRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICBpZiAoIXRoaXMucmVuZGVyUmVzdWx0KSByZXR1cm47XG4gICAgY29uc3QgdGFibGVOb2RlID0gdGhpcy5yZW5kZXJSZXN1bHQuY2hpbGRyZW5bMF07XG4gICAgaWYgKGpRdWVyeS5mbi5EYXRhVGFibGUuaXNEYXRhVGFibGUodGFibGVOb2RlKSkge1xuICAgICAgalF1ZXJ5KHRhYmxlTm9kZSkuRGF0YVRhYmxlKCkuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLmRhdGF0YWJsZUFwaSA9IHVuZGVmaW5lZDtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29sdW1uVmlzaWJpbGl0eShjb2x1bW5OYW1lOiBzdHJpbmcsIGlzVmlzaWJsZTogYm9vbGVhbikge1xuICAgIHN1cGVyLnNldENvbHVtblZpc2liaWxpdHkoY29sdW1uTmFtZSwgaXNWaXNpYmxlKTtcbiAgICB0aGlzLmRhdGF0YWJsZUFwaS5jb2x1bW4oY29sdW1uTmFtZSArIFwiOm5hbWVcIikudmlzaWJsZShpc1Zpc2libGUpO1xuICB9XG5cbiAgcHVibGljIHNldENvbHVtbkxvY2F0aW9uKGNvbHVtbk5hbWU6IHN0cmluZywgbG9jYXRpb246IFF1ZXN0aW9uTG9jYXRpb24pIHtcbiAgICBzdXBlci5zZXRDb2x1bW5Mb2NhdGlvbihjb2x1bW5OYW1lLCBsb2NhdGlvbik7XG4gICAgdmFyIGNvbHVtbiA9IHRoaXMuZGF0YXRhYmxlQXBpLmNvbHVtbihjb2x1bW5OYW1lICsgXCI6bmFtZVwiKTtcbiAgICB2YXIgaXNDb2x1bW5Mb2NhdGlvbiA9IGxvY2F0aW9uID09IFF1ZXN0aW9uTG9jYXRpb24uQ29sdW1uO1xuICAgIGNvbHVtbi52aXNpYmxlKGlzQ29sdW1uTG9jYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRhdGF0YWJsZUFwaS5zZWFyY2godmFsdWUpLmRyYXcoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGFwcGx5Q29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHZhciBjb2x1bW4gPSB0aGlzLmRhdGF0YWJsZUFwaS5jb2x1bW4oY29sdW1uTmFtZSArIFwiOm5hbWVcIik7XG4gICAgaWYgKGNvbHVtbi5zZWFyY2goKSAhPT0gdmFsdWUpIHtcbiAgICAgIGNvbHVtbi5zZWFyY2godmFsdWUpLmRyYXcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzb3J0QnlDb2x1bW4oY29sdW1uTmFtZTogc3RyaW5nLCBkaXJlY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHZhciBjb2x1bW4gPSB0aGlzLmRhdGF0YWJsZUFwaS5jb2x1bW4oY29sdW1uTmFtZSArIFwiOm5hbWVcIik7XG4gICAgY29sdW1uLm9yZGVyKGRpcmVjdGlvbikuZHJhdyhmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UGFnZVNpemUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHN1cGVyLnNldFBhZ2VTaXplKHZhbHVlKTtcbiAgICBpZiAodGhpcy5pc1JlbmRlcmVkKSB7XG4gICAgICB0aGlzLmRhdGF0YWJsZUFwaS5wYWdlLmxlbih2YWx1ZSkuZHJhdyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFBhZ2VOdW1iZXIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHN1cGVyLnNldFBhZ2VOdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLmlzUmVuZGVyZWQpIHtcbiAgICAgIHRoaXMuZGF0YXRhYmxlQXBpLnBhZ2UodmFsdWUpLmRyYXcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRQYWdlTnVtYmVyKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmlzUmVuZGVyZWQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kYXRhdGFibGVBcGkucGFnZSgpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcih0YXJnZXROb2RlOiBIVE1MRWxlbWVudCB8IHN0cmluZyk6IHZvaWQge1xuICAgIHN1cGVyLnJlbmRlcih0YXJnZXROb2RlKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHR5cGVvZiB0YXJnZXROb2RlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB0YXJnZXROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0Tm9kZSk7XG4gICAgfVxuICAgIHRhcmdldE5vZGUuY2xhc3NOYW1lICs9IFwiIHNhLXRhYmxlIHNhLWRhdGF0YWJsZXNcIjtcblxuICAgIGNvbnN0IHRhYmxlTm9kZSA9IDxIVE1MVGFibGVFbGVtZW50PihcbiAgICAgIERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0YWJsZVwiLCBcIlwiKVxuICAgICk7XG4gICAgdmFyIGNvbHVtbnMgPSB0aGlzLmdldENvbHVtbnMoKTtcbiAgICB2YXIgY29sdW1uc0RhdGE6IGFueSA9IGNvbHVtbnMubWFwKChjOiBhbnkpID0+IGMuZGF0YSk7XG4gICAgY29uc3QgZHRCdXR0b25DbGFzcyA9XG4gICAgICBcInNhLXRhYmxlX19idG4gc2EtdGFibGVfX2J0bi0tc21hbGwgc2EtdGFibGVfX2J0bi0tZ3JheVwiO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBqUXVlcnkuZXh0ZW5kKFxuICAgICAgdHJ1ZSxcbiAgICAgIHtcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHsgZXh0ZW5kOiBcImNvcHlcIiwgY2xhc3NOYW1lOiBkdEJ1dHRvbkNsYXNzIH0sXG4gICAgICAgICAgeyBleHRlbmQ6IFwiY3N2XCIsIGNsYXNzTmFtZTogZHRCdXR0b25DbGFzcyB9LFxuICAgICAgICAgIHsgZXh0ZW5kOiBcInByaW50XCIsIGNsYXNzTmFtZTogZHRCdXR0b25DbGFzcyB9LFxuICAgICAgICBdLFxuICAgICAgICBkb206ICdCPFwic2EtdGFibGVfX2hlYWRlci1leHRlbnNpb25zXCI+cHJ0aXAnLFxuICAgICAgICAvLyBvcmRlcmluZzogZmFsc2UsXG4gICAgICAgIGRhdGE6IHRoaXMudGFibGVEYXRhLFxuICAgICAgICBwYWdlTGVuZ3RoOiB0aGlzLmN1cnJlbnRQYWdlU2l6ZSxcbiAgICAgICAgcmVzcG9uc2l2ZTogZmFsc2UsXG4gICAgICAgIHNjcm9sbFg6IHRydWUsXG4gICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgIGNvbFJlb3JkZXI6IHtcbiAgICAgICAgICBmaXhlZENvbHVtbnNMZWZ0OiAxLFxuICAgICAgICAgIHJlYWx0aW1lOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy9vcmRlckZpeGVkOiBbWzEsIFwiYXNjXCJdXSxcbiAgICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgICBzU2VhcmNoOiBcIiBcIixcbiAgICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcjogXCJTZWFyY2guLi5cIixcbiAgICAgICAgICBzTGVuZ3RoTWVudTogXCJTaG93IF9NRU5VXyBlbnRyaWVzXCIsXG4gICAgICAgICAgcGFnaW5hdGU6IHtcbiAgICAgICAgICAgIHByZXZpb3VzOiBcIiBcIixcbiAgICAgICAgICAgIG5leHQ6IFwiIFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdDogXCJhcGlcIixcbiAgICAgICAgaGVhZGVyQ2FsbGJhY2s6IChcbiAgICAgICAgICB0aGVhZDogYW55LFxuICAgICAgICAgIGRhdGE6IGFueSxcbiAgICAgICAgICBzdGFydDogYW55LFxuICAgICAgICAgIGVuZDogYW55LFxuICAgICAgICAgIGRpc3BsYXk6IGFueVxuICAgICAgICApID0+IHtcbiAgICAgICAgICB2YXIgZGF0YXRhYmxlQXBpID0galF1ZXJ5KHRhYmxlTm9kZSkuZGF0YVRhYmxlKCkuYXBpKCk7XG4gICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAgIGRhdGF0YWJsZUFwaVxuICAgICAgICAgICAgLmNvbHVtbnMoKVxuICAgICAgICAgICAgLmVxKDApXG4gICAgICAgICAgICAuZWFjaCgoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICB2YXIgJHRoTm9kZSA9IGpRdWVyeShkYXRhdGFibGVBcGkuY29sdW1ucyhpbmRleCkuaGVhZGVyKCkpO1xuICAgICAgICAgICAgICAkdGhOb2RlLnVuYmluZChcImNsaWNrLkRUXCIpO1xuICAgICAgICAgICAgICBpZiAoISFjb2x1bW5zRGF0YVtpbmRleF0gJiYgJHRoTm9kZS5oYXMoXCJidXR0b25cIikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgXCJzYS10YWJsZV9fYWN0aW9uLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBzZWxmLmV4dGVuc2lvbnMucmVuZGVyKGNvbnRhaW5lciwgXCJjb2x1bW5cIiwge1xuICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZTogY29sdW1uc0RhdGFbaW5kZXhdLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5vbm1vdXNlZG93biA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoIXNlbGYuaXNDb2x1bW5SZW9yZGVyRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ29sdW1uUmVvcmRlcigpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJHRoTm9kZS5wcmVwZW5kKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aGlzLl9vcHRpb25zXG4gICAgKTtcblxuICAgIHRhcmdldE5vZGUuYXBwZW5kQ2hpbGQodGFibGVOb2RlKTtcbiAgICB0YWJsZU5vZGUuY2xhc3NOYW1lID0gXCJzYS1kYXRhdGFibGVzX190YWJsZSBkaXNwbGF5IHJlc3BvbnNpdmUgZGF0YVRhYmxlXCI7XG5cbiAgICBjb25zdCBkYXRhdGFibGVBcGlSZWYgPSAodGhpcy5kYXRhdGFibGVBcGkgPSBqUXVlcnkodGFibGVOb2RlKS5EYXRhVGFibGUoXG4gICAgICBvcHRpb25zXG4gICAgKSk7XG4gICAgdmFyIGV4dGVuc2lvbnNDb250YWluZXIgPSBqUXVlcnkoXCJkaXYuc2EtdGFibGVfX2hlYWRlci1leHRlbnNpb25zXCIpWzBdO1xuXG4gICAgLy8gdGhpcy5vblRhYmxlVG9vbHNDcmVhdGVkLmZpcmUodGhpcywgeyBleHRlbnNpb25zOiBleHRlbnNpb25zIH0pO1xuICAgIHRoaXMuZXh0ZW5zaW9ucy5yZW5kZXIoZXh0ZW5zaW9uc0NvbnRhaW5lciwgXCJoZWFkZXJcIik7XG5cbiAgICBkYXRhdGFibGVBcGlSZWYucGFnZShzZWxmLmN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICB0aGlzLmRhdGF0YWJsZUFwaS5yb3dHcm91cCgpLmVuYWJsZShmYWxzZSkuZHJhdyhmYWxzZSk7XG5cbiAgICBkYXRhdGFibGVBcGlSZWYub24oXG4gICAgICBcImNvbHVtbi1yZW9yZGVyXCIsXG4gICAgICAoZTogYW55LCBzZXR0aW5nczogYW55LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5tb3ZlQ29sdW1uKGRldGFpbHMuZnJvbSAtIDEsIGRldGFpbHMudG8gLSAxKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlQ29sdW1uUmVvcmRlcigpO1xuICAgICAgICB0aGlzLm9uQ29sdW1uc1Jlb3JkZXIuZmlyZSh0aGlzLCB7IGNvbHVtbnM6IHRoaXMuY29sdW1ucyB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZGF0YXRhYmxlQXBpUmVmXG4gICAgICAucm93cygpXG4gICAgICAuZXEoMClcbiAgICAgIC5lYWNoKChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHZhciByb3cgPSBkYXRhdGFibGVBcGlSZWYucm93KGluZGV4KTtcbiAgICAgICAgdmFyIGRldGFpbHNUciA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0clwiKTtcbiAgICAgICAgdmFyIGRldGFpbHNUZCA9IDxIVE1MVGFibGVEYXRhQ2VsbEVsZW1lbnQ+KFxuICAgICAgICAgIERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0ZFwiLCBcInNhLWRhdGF0YWJsZXNfX2RldGFpbHMtY29udGFpbmVyXCIpXG4gICAgICAgICk7XG4gICAgICAgIGRldGFpbHNUci5hcHBlbmRDaGlsZChkZXRhaWxzVGQpO1xuICAgICAgICB2YXIgcm93RWxlbWVudCA9IHJvdy5ub2RlKCk7XG4gICAgICAgIHZhciBmaXJzdENlbGwgPSByb3cuY2VsbChyb3cuaW5kZXgoKSwgMCkubm9kZSgpO1xuICAgICAgICB2YXIgdGFibGVSb3cgPSBuZXcgRGF0YXRhYmxlc1Jvdyh0aGlzLCBmaXJzdENlbGwsIGRldGFpbHNUZCwgcm93KTtcbiAgICAgICAgdGFibGVSb3cub25Ub2dnbGVEZXRhaWxzLmFkZCgoc2VuZGVyOiBUYWJsZVJvdywgb3B0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgZGV0YWlsc1RkLmNvbFNwYW4gPSByb3dFbGVtZW50LmNoaWxkRWxlbWVudENvdW50O1xuICAgICAgICAgICAgcm93RWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgZGV0YWlsc1RyLFxuICAgICAgICAgICAgICByb3dFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoISFkZXRhaWxzVHIucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICBkZXRhaWxzVHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkZXRhaWxzVHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Jvd3MucHVzaCh0YWJsZVJvdyk7XG4gICAgICAgIHRhYmxlUm93LnJlbmRlcigpO1xuICAgICAgfSk7XG4gICAgZGF0YXRhYmxlQXBpUmVmLmRyYXcoZmFsc2UpO1xuICAgIHRoaXMucmVuZGVyUmVzdWx0ID0gdGFyZ2V0Tm9kZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5zKCk6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IGNvbHVtbnM6IGFueSA9IHRoaXMuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgdmFyIHF1ZXN0aW9uID0gdGhpcy5zdXJ2ZXkuZ2V0UXVlc3Rpb25CeU5hbWUoY29sdW1uLm5hbWUpO1xuICAgICAgY29uc3QgY29sdW1uVGl0bGUgPSAocXVlc3Rpb24gJiYgKHRoaXMub3B0aW9ucy51c2VOYW1lc0FzVGl0bGVzID8gcXVlc3Rpb24ubmFtZSA6IHF1ZXN0aW9uLnRpdGxlKSkgfHwgY29sdW1uLmRpc3BsYXlOYW1lO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgIGRhdGE6IGNvbHVtbi5uYW1lLFxuICAgICAgICBzVGl0bGU6IGpRdWVyeT8uZm4uZGF0YVRhYmxlLnJlbmRlci50ZXh0KCkuZGlzcGxheShjb2x1bW5UaXRsZSkgfHwgY29sdW1uVGl0bGUsXG4gICAgICAgIHZpc2libGU6IHRoaXMuaXNDb2x1bW5WaXNpYmxlKGNvbHVtbiksXG4gICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRDb250ZW50OiBcIlwiLFxuICAgICAgICB3aWR0aDpcbiAgICAgICAgICB0eXBlb2YgY29sdW1uLndpZHRoID09IFwibnVtYmVyXCIgPyBjb2x1bW4ud2lkdGggKyBcInB4XCIgOiBjb2x1bW4ud2lkdGgsXG4gICAgICAgIHJlbmRlcjogKF9kYXRhOiBvYmplY3QsIF90eXBlOiBzdHJpbmcsIHJvdzogYW55KSA9PiB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gcm93W2NvbHVtbi5uYW1lXTtcbiAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09PSBDb2x1bW5EYXRhVHlwZS5GaWxlTGluaykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09PSBDb2x1bW5EYXRhVHlwZS5JbWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiPGltYWdlIHNyYz0nXCIgKyB2YWx1ZSArIFwiJy8+XCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8galF1ZXJ5KFwiPGRpdj5cIikudGV4dCh2YWx1ZSkuaHRtbCgpXG4gICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBvcmRlcmFibGU6IGZhbHNlLFxuICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICBkZWZhdWx0Q29udGVudDogXCJcIixcbiAgICAgIH0sXG4gICAgXS5jb25jYXQoY29sdW1ucyk7XG4gIH1cblxuICBwdWJsaWMgbGF5b3V0KCkge1xuICAgICEhdGhpcy5kYXRhdGFibGVBcGkgJiYgdGhpcy5kYXRhdGFibGVBcGkuY29sdW1ucy5hZGp1c3QoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YXRhYmxlc1JvdyBleHRlbmRzIFRhYmxlUm93IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRhYmxlOiBUYWJsZSxcbiAgICBwcm90ZWN0ZWQgZXh0ZW5zaW9uc0NvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gICAgcHJvdGVjdGVkIGRldGFpbHNDb250YWluZXI6IEhUTUxFbGVtZW50LFxuICAgIHByaXZhdGUgX2lubmVyUm93OiBhbnlcbiAgKSB7XG4gICAgc3VwZXIodGFibGUsIGV4dGVuc2lvbnNDb250YWluZXIsIGRldGFpbHNDb250YWluZXIpO1xuICAgIHRoaXMucm93RWxlbWVudCA9IF9pbm5lclJvdy5ub2RlKCk7XG4gICAgdGhpcy5yb3dEYXRhID0gX2lubmVyUm93LmRhdGEoKTtcbiAgICB0aGlzLl9pbm5lclJvdyA9IHRoaXMuX2lubmVyUm93LnJvdyh0aGlzLnJvd0VsZW1lbnQpO1xuICAgICg8RGF0YVRhYmxlcz50YWJsZSkub25Db2x1bW5zUmVvcmRlci5hZGQoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIHJvd0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIHJvd0RhdGE6IGFueTtcblxuICBwdWJsaWMgZ2V0IGlubmVyUm93KCkge1xuICAgIHJldHVybiB0aGlzLl9pbm5lclJvdy5yb3codGhpcy5yb3dFbGVtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5yb3dFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0RhdGEoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLnJvd0RhdGE7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSb3cuaW5kZXgoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoKTogdm9pZCB7XG4gICAgdGhpcy5pbm5lclJvdy5yZW1vdmUoKS5kcmF3KCk7XG4gICAgc3VwZXIucmVtb3ZlKCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIi4uL3RhYmxlXCI7XG5pbXBvcnQgeyBEb2N1bWVudEhlbHBlciB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uLy4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB7IFRhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL3RhYmxlZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgUXVlc3Rpb25Mb2NhdGlvbiwgSUNvbHVtbiB9IGZyb20gXCIuLi9jb25maWdcIjtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiY29sdW1uXCIsXG4gIG5hbWU6IFwiZHJhZ1wiLFxuICB2aXNpYmxlSW5kZXg6IDAsXG4gIHJlbmRlcjogZnVuY3Rpb24gKHRhYmxlOiBUYWJsZSwgb3B0aW9uczogYW55KSB7XG4gICAgY29uc3QgYnRuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICBcInNhLXRhYmxlX19zdmctYnV0dG9uIHNhLXRhYmxlX19kcmFnLWJ1dHRvblwiXG4gICAgKTtcbiAgICBidG4uYXBwZW5kQ2hpbGQoRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnRWxlbWVudChcImRyYWdcIikpO1xuICAgIGJ0bi5vbm1vdXNlZG93biA9IChlKSA9PiB7XG4gICAgICB0YWJsZS5lbmFibGVDb2x1bW5SZW9yZGVyKCk7XG4gICAgfTtcbiAgICByZXR1cm4gYnRuO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcImNvbHVtblwiLFxuICBuYW1lOiBcInNvcnRcIixcbiAgdmlzaWJsZUluZGV4OiAxLFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZTogVGFibGUsIG9wdGlvbnM6IGFueSkge1xuICAgIGNvbnN0IGRlc2NUaXRsZSA9IGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJkZXNjT3JkZXJcIik7XG4gICAgY29uc3QgYXNjVGl0bGUgPSBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwiYXNjT3JkZXJcIik7XG4gICAgdmFyIGJ0biA9IERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0J1dHRvbihcInNvcnRpbmdcIik7XG4gICAgYnRuLnRpdGxlID0gXCJcIjtcbiAgICB2YXIgZGlyZWN0aW9uID0gXCJhc2NcIjtcbiAgICBidG4ub25jbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJhc2NcIikge1xuICAgICAgICBidG4udGl0bGUgPSBkZXNjVGl0bGU7XG4gICAgICAgIGRpcmVjdGlvbiA9IFwiZGVzY1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnRuLnRpdGxlID0gYXNjVGl0bGU7XG4gICAgICAgIGRpcmVjdGlvbiA9IFwiYXNjXCI7XG4gICAgICB9XG4gICAgICB0YWJsZS5zb3J0QnlDb2x1bW4ob3B0aW9ucy5jb2x1bW5OYW1lLCBkaXJlY3Rpb24pO1xuICAgIH07XG4gICAgYnRuLm9uZHJhZyA9IChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH07XG4gICAgcmV0dXJuIGJ0bjtcbiAgfSxcbn0pO1xuXG5UYWJsZUV4dGVuc2lvbnMucmVnaXN0ZXJFeHRlbnNpb24oe1xuICBsb2NhdGlvbjogXCJjb2x1bW5cIixcbiAgbmFtZTogXCJoaWRlXCIsXG4gIHZpc2libGVJbmRleDogMixcbiAgcmVuZGVyOiBmdW5jdGlvbiAodGFibGU6IFRhYmxlLCBvcHRpb25zOiBhbnkpIHtcbiAgICB2YXIgYnRuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnQnV0dG9uKFwiaGlkZVwiKTtcbiAgICBidG4udGl0bGUgPSBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwiaGlkZUNvbHVtblwiKTtcbiAgICBidG4ub25jbGljayA9ICgpID0+IHtcbiAgICAgIHRhYmxlLnNldENvbHVtblZpc2liaWxpdHkob3B0aW9ucy5jb2x1bW5OYW1lLCBmYWxzZSk7XG4gICAgfTtcbiAgICByZXR1cm4gYnRuO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcImNvbHVtblwiLFxuICBuYW1lOiBcIm1vdmV0b2RldGFpbHNcIixcbiAgdmlzaWJsZUluZGV4OiAzLFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZTogVGFibGUsIG9wdGlvbnM6IGFueSkge1xuICAgIGNvbnN0IGJ1dHRvbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0J1dHRvbihcIm1vdmV0b2RldGFpbHNcIik7XG4gICAgYnV0dG9uLnRpdGxlID0gbG9jYWxpemF0aW9uLmdldFN0cmluZyhcIm1vdmVUb0RldGFpbFwiKTtcbiAgICBidXR0b24ub25jbGljayA9IChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGFibGUuc2V0Q29sdW1uTG9jYXRpb24ob3B0aW9ucy5jb2x1bW5OYW1lLCBRdWVzdGlvbkxvY2F0aW9uLlJvdyk7XG4gICAgfTtcbiAgICByZXR1cm4gYnV0dG9uO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcImNvbHVtblwiLFxuICBuYW1lOiBcImZpbHRlclwiLFxuICB2aXNpYmxlSW5kZXg6IDQsXG4gIHJlbmRlcjogZnVuY3Rpb24gKHRhYmxlOiBUYWJsZSwgb3B0aW9uczogYW55KSB7XG4gICAgdmFyIGVsID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlSW5wdXQoXG4gICAgICBcInNhLXRhYmxlX19maWx0ZXJcIixcbiAgICAgIGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJmaWx0ZXJQbGFjZWhvbGRlclwiKVxuICAgICk7XG4gICAgZWwub25jbGljayA9IChlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGVsLm9uY2hhbmdlID0gKGUpID0+IHtcbiAgICAgIHRhYmxlLmFwcGx5Q29sdW1uRmlsdGVyKG9wdGlvbnMuY29sdW1uTmFtZSwgZWwudmFsdWUpO1xuICAgIH07XG4gICAgcmV0dXJuIGVsO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcImNvbHVtblwiLFxuICBuYW1lOiBcIm1ha2VwdWJsaWNcIixcbiAgdmlzaWJsZUluZGV4OiAtMSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAodGFibGU6IFRhYmxlLCBvcHRpb25zOiBhbnkpIHtcbiAgICBjb25zdCBidXR0b24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpO1xuICAgIGNvbnN0IG1ha2VQcml2YXRlU3ZnID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnRWxlbWVudChcIm1ha2Vwcml2YXRlXCIpO1xuICAgIGNvbnN0IG1ha2VQdWJsaWNTdmcgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVTdmdFbGVtZW50KFwibWFrZXB1YmxpY1wiKTtcbiAgICBjb25zdCBjb2x1bW4gPSB0YWJsZS5nZXRDb2x1bW5CeU5hbWUob3B0aW9ucy5jb2x1bW5OYW1lKTtcblxuICAgIHVwZGF0ZVN0YXRlKGNvbHVtbik7XG4gICAgYnV0dG9uLmFwcGVuZENoaWxkKG1ha2VQcml2YXRlU3ZnKTtcbiAgICBidXR0b24uYXBwZW5kQ2hpbGQobWFrZVB1YmxpY1N2Zyk7XG4gICAgYnV0dG9uLm9uY2xpY2sgPSAoZSkgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbHVtbi5pc1B1YmxpYyA9ICFjb2x1bW4uaXNQdWJsaWM7XG4gICAgICB1cGRhdGVTdGF0ZShjb2x1bW4pO1xuICAgICAgdGFibGUub25QZXJtaXNzaW9uc0NoYW5nZWRDYWxsYmFjayAmJlxuICAgICAgICB0YWJsZS5vblBlcm1pc3Npb25zQ2hhbmdlZENhbGxiYWNrKHRhYmxlKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlU3RhdGUoY29sdW1uOiBJQ29sdW1uKSB7XG4gICAgICBpZiAoY29sdW1uLmlzUHVibGljKSB7XG4gICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSBcInNhLXRhYmxlX19zdmctYnV0dG9uXCI7XG4gICAgICAgIGJ1dHRvbi50aXRsZSA9IGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJtYWtlUHJpdmF0ZUNvbHVtblwiKTtcbiAgICAgICAgbWFrZVByaXZhdGVTdmcuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICBtYWtlUHVibGljU3ZnLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidXR0b24uY2xhc3NOYW1lID0gXCJzYS10YWJsZV9fc3ZnLWJ1dHRvbiBzYS10YWJsZV9fc3ZnLWJ1dHRvbi0tYWN0aXZlXCI7XG4gICAgICAgIGJ1dHRvbi50aXRsZSA9IGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJtYWtlUHVibGljQ29sdW1uXCIpO1xuICAgICAgICBtYWtlUHJpdmF0ZVN2Zy5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgICAgICBtYWtlUHVibGljU3ZnLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ1dHRvbjtcbiAgfSxcbn0pO1xuIiwiaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiLi4vdGFibGVcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIi4uL3RhYmxlXCI7XG5pbXBvcnQgeyBEb2N1bWVudEhlbHBlciB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgQ29sdW1uRGF0YVR5cGUsIFF1ZXN0aW9uTG9jYXRpb24gfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgeyBUYWJsZUV4dGVuc2lvbnMgfSBmcm9tIFwiLi90YWJsZWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IGxvY2FsaXphdGlvbiB9IGZyb20gXCIuLi8uLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRhYmxlOiBUYWJsZSxcbiAgICBwcml2YXRlIHJvdzogVGFibGVSb3csXG4gICAgcHJvdGVjdGVkIHRhcmdldE5vZGU6IEhUTUxFbGVtZW50XG4gICkge1xuICAgIHRoaXMuZGV0YWlsc1RhYmxlID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwidGFibGVcIixcbiAgICAgIFwic2EtdGFibGVfX2RldGFpbC10YWJsZVwiXG4gICAgKTtcbiAgICB0aGlzLnRhYmxlLm9uQ29sdW1uc0xvY2F0aW9uQ2hhbmdlZC5hZGQoKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgZGV0YWlsc1RhYmxlOiBIVE1MRWxlbWVudDtcbiAgcHJvdGVjdGVkIGxvY2F0aW9uID0gXCJkZXRhaWxzXCI7XG5cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhaWxzVGFibGUuaW5uZXJIVE1MID0gXCJcIjtcbiAgICB2YXIgcm93czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICAgIHRoaXMudGFibGUuY29sdW1uc1xuICAgICAgLmZpbHRlcigoY29sdW1uKSA9PiBjb2x1bW4ubG9jYXRpb24gPT09IFF1ZXN0aW9uTG9jYXRpb24uUm93ICYmIGNvbHVtbilcbiAgICAgIC5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgdmFyIHJvdyA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0clwiLCBcInNhLXRhYmxlX19kZXRhaWxcIik7XG4gICAgICAgIHZhciB0ZDEgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwidGRcIik7XG4gICAgICAgIHRkMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb2x1bW4uZGlzcGxheU5hbWUpKTtcbiAgICAgICAgdmFyIHRkMiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0ZFwiKTtcbiAgICAgICAgdGQyLnRleHRDb250ZW50ID0gdGhpcy5yb3cuZ2V0Um93RGF0YSgpW2NvbHVtbi5uYW1lXTtcbiAgICAgICAgaWYoY29sdW1uLmRhdGFUeXBlID09PSBDb2x1bW5EYXRhVHlwZS5JbWFnZSkge1xuICAgICAgICAgIHRkMi5pbm5lckhUTUwgPSBcIjxpbWFnZSBzcmM9J1wiICsgdGQyLnRleHRDb250ZW50ICsgXCInLz5cIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGQzID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInRkXCIpO1xuICAgICAgICB0ZDMuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTaG93QXNDb2x1bW5CdXR0b24oY29sdW1uLm5hbWUpKTtcbiAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkMSk7XG4gICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZDIpO1xuICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQzKTtcbiAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICB9KTtcbiAgICB2YXIgcm93ID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInRyXCIsIFwic2EtdGFibGVfX2RldGFpbFwiKTtcbiAgICB2YXIgdGQgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwidGRcIiwgXCJcIiwgeyBjb2xTcGFuOiAzIH0pO1xuICAgIHZhciBleHRlbnNpb25zID0gbmV3IFRhYmxlRXh0ZW5zaW9ucyh0aGlzLnRhYmxlKTtcbiAgICBleHRlbnNpb25zLnJlbmRlcih0ZCwgXCJkZXRhaWxzXCIsIHsgcm93OiB0aGlzLnJvdyB9KTtcbiAgICBpZiAodGQuY2hpbGRyZW4ubGVuZ3RoICE9IDApIHtcbiAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZCk7XG4gICAgICByb3dzLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgdGhpcy5kZXRhaWxzVGFibGUuYXBwZW5kQ2hpbGQocm93KTtcbiAgICB9KTtcbiAgICB0aGlzLnRhcmdldE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5kZXRhaWxzVGFibGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVNob3dBc0NvbHVtbkJ1dHRvbiA9IChjb2x1bW5OYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCA9PiB7XG4gICAgY29uc3QgYnV0dG9uID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICBcInNhLXRhYmxlX19idG4gc2EtdGFibGVfX2J0bi0tZ3JheVwiXG4gICAgKTtcbiAgICBidXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobG9jYWxpemF0aW9uLmdldFN0cmluZyhcInNob3dBc0NvbHVtblwiKSkpO1xuICAgIGJ1dHRvbi5vbmNsaWNrID0gKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnRhYmxlLnNldENvbHVtbkxvY2F0aW9uKGNvbHVtbk5hbWUsIFF1ZXN0aW9uTG9jYXRpb24uQ29sdW1uKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJ1dHRvbjtcbiAgfTtcblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgaWYgKCEhdGhpcy5kZXRhaWxzVGFibGUucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy5kZXRhaWxzVGFibGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRldGFpbHNUYWJsZSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiLi4vdGFibGVcIjtcbmltcG9ydCB7IERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBUYWJsZUV4dGVuc2lvbnMgfSBmcm9tIFwiLi90YWJsZWV4dGVuc2lvbnNcIjtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwiZmlsdGVyXCIsXG4gIHZpc2libGVJbmRleDogMCxcbiAgcmVuZGVyOiBmdW5jdGlvbiAodGFibGU6IFRhYmxlKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGlucHV0ID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlSW5wdXQoXG4gICAgICBcInNhLXRhYmxlX19nbG9iYWwtZmlsdGVyIHNhLXRhYmxlX19oZWFkZXItZXh0ZW5zaW9uXCIsXG4gICAgICBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwiZmlsdGVyUGxhY2Vob2xkZXJcIilcbiAgICApO1xuICAgIGlucHV0Lm9uY2hhbmdlID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIHRhYmxlLmFwcGx5RmlsdGVyKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfTtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0sXG59KTtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwic2hvd2NvbHVtblwiLFxuICB2aXNpYmxlSW5kZXg6IDIsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZTogVGFibGUpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgZHJvcGRvd24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJzZWxlY3RcIixcbiAgICAgIFwic2EtdGFibGVfX3Nob3ctY29sdW1uIHNhLXRhYmxlX19oZWFkZXItZXh0ZW5zaW9uXCJcbiAgICApO1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgICAgdmFyIGhpZGRlbkNvbHVtbnMgPSB0YWJsZS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgKGNvbHVtbjogYW55KSA9PiAhY29sdW1uLmlzVmlzaWJsZVxuICAgICAgKTtcbiAgICAgIGlmIChoaWRkZW5Db2x1bW5zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGRyb3Bkb3duLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZHJvcGRvd24uc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG4gICAgICBkcm9wZG93bi5pbm5lckhUTUwgPSBcIlwiO1xuICAgICAgdmFyIG9wdGlvbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIiwgXCJcIiwge1xuICAgICAgICB0ZXh0OiBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwic2hvd0NvbHVtblwiKSxcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBkcm9wZG93bi5hcHBlbmRDaGlsZChvcHRpb24pO1xuXG4gICAgICBoaWRkZW5Db2x1bW5zLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XG4gICAgICAgIHZhciB0ZXh0ID0gY29sdW1uLmRpc3BsYXlOYW1lIHx8IGNvbHVtbi5uYW1lO1xuICAgICAgICBpZiAoISF0ZXh0ICYmIHRleHQubGVuZ3RoID4gMjApIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMCwgMjApICsgXCIuLi5cIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3B0aW9uID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCBcIlwiLCB7XG4gICAgICAgICAgdGV4dDogdGV4dCxcbiAgICAgICAgICB0aXRsZTogY29sdW1uLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIHZhbHVlOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRyb3Bkb3duLmFwcGVuZENoaWxkKG9wdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkcm9wZG93bi5vbmNoYW5nZSA9IChlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmICghdmFsKSByZXR1cm47XG4gICAgICB0YWJsZS5zZXRDb2x1bW5WaXNpYmlsaXR5KHZhbCwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHVwZGF0ZSgpO1xuXG4gICAgdmFyIG9uVmlzaWJpbGl0eUNoYW5nZWRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH07XG5cbiAgICB0YWJsZS5vbkNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlZC5hZGQob25WaXNpYmlsaXR5Q2hhbmdlZENhbGxiYWNrKTtcblxuICAgIHRoaXMub25EZXN0cm95ID0gKCkgPT4ge1xuICAgICAgdGFibGUub25Db2x1bW5zVmlzaWJpbGl0eUNoYW5nZWQucmVtb3ZlKG9uVmlzaWJpbGl0eUNoYW5nZWRDYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXR1cm4gZHJvcGRvd247XG4gIH0sXG59KTtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwic2hvd2VudHJpZXNcIixcbiAgdmlzaWJsZUluZGV4OiAzLFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZTogVGFibGUpOiBIVE1MRWxlbWVudCB7XG4gICAgZnVuY3Rpb24gZ2V0RW50cmllc0Ryb3Bkb3duKHRhYmxlOiBUYWJsZSk6IEhUTUxFbGVtZW50IHtcbiAgICAgIGNvbnN0IGVsID0gPEhUTUxTZWxlY3RFbGVtZW50PkRvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIik7XG4gICAgICB2YXIgb3B0aW9uc1ZhbHVlcyA9IHRhYmxlLnBhZ2luYXRpb25TaXplU2VsZWN0b3IgfHwgW1wiMVwiLCBcIjVcIiwgXCIxMFwiLCBcIjI1XCIsIFwiNTBcIiwgXCI3NVwiLCBcIjEwMFwiXTtcbiAgICAgIG9wdGlvbnNWYWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgIHZhciBvcHRpb24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIFwiXCIsIHtcbiAgICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgICAgIHRleHQ6IHZhbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGVsLmFwcGVuZENoaWxkKG9wdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGVsLnZhbHVlID0gU3RyaW5nKHRhYmxlLmdldFBhZ2VTaXplKCkpO1xuXG4gICAgICBlbC5vbmNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgdGFibGUuc2V0UGFnZVNpemUoTnVtYmVyKGVsLnZhbHVlKSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWw7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdG9yQ29udGFpbmVyID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiZGl2XCIsXG4gICAgICBcInNhLXRhYmxlX19lbnRyaWVzXCJcbiAgICApO1xuICAgIGNvbnN0IHNwYWNlU3BhbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwic2EtdGFibGVfX2hlYWRlci1zcGFjZVwiKTtcbiAgICBjb25zdCBzaG93U3BhbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNwYW5cIixcbiAgICAgIFwic2EtdGFibGVfX2VudHJpZXMtbGFiZWwgc2EtdGFibGVfX2VudHJpZXMtbGFiZWwtLXJpZ2h0XCIsXG4gICAgICB7XG4gICAgICAgIGlubmVyVGV4dDogbG9jYWxpemF0aW9uLmdldFN0cmluZyhcInNob3dMYWJlbFwiKSxcbiAgICAgIH1cbiAgICApO1xuICAgIGNvbnN0IGVudHJpZXNTcGFuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwic3BhblwiLFxuICAgICAgXCJzYS10YWJsZV9fZW50cmllcy1sYWJlbCBzYS10YWJsZV9fZW50cmllcy1sYWJlbC0tbGVmdFwiLFxuICAgICAge1xuICAgICAgICBpbm5lclRleHQ6IGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJlbnRyaWVzTGFiZWxcIiksXG4gICAgICB9XG4gICAgKTtcblxuICAgIHNlbGVjdG9yQ29udGFpbmVyLmFwcGVuZENoaWxkKHNwYWNlU3Bhbik7XG4gICAgc2VsZWN0b3JDb250YWluZXIuYXBwZW5kQ2hpbGQoc2hvd1NwYW4pO1xuICAgIHNlbGVjdG9yQ29udGFpbmVyLmFwcGVuZENoaWxkKGdldEVudHJpZXNEcm9wZG93bih0YWJsZSkpO1xuICAgIHNlbGVjdG9yQ29udGFpbmVyLmFwcGVuZENoaWxkKGVudHJpZXNTcGFuKTtcbiAgICByZXR1cm4gc2VsZWN0b3JDb250YWluZXI7XG4gIH0sXG59KTtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwicmVtb3Zlcm93c1wiLFxuICB2aXNpYmxlSW5kZXg6IC0xLFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZSkge1xuICAgIHZhciBidG4gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJidXR0b25cIixcbiAgICAgIFwic2EtdGFibGVfX2J0biBzYS10YWJsZV9fYnRuLS1ncmVlbiBzYS10YWJsZV9faGVhZGVyLWV4dGVuc2lvbiBcIixcbiAgICAgIHsgaW5uZXJUZXh0OiBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwicmVtb3ZlUm93c1wiKSB9XG4gICAgKTtcbiAgICBidG4ub25jbGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRhYmxlLmdldENyZWF0ZWRSb3dzKCkuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIGlmIChyb3cuZ2V0SXNTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgcm93LnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBidG47XG4gIH0sXG59KTtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwiY2hhbmdlbG9jYWxlXCIsXG4gIHZpc2libGVJbmRleDogMSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAodGFibGUpIHtcbiAgICB2YXIgbG9jYWxlcyA9IHRhYmxlLmdldExvY2FsZXMoKTtcbiAgICBpZiAodGFibGUub3B0aW9ucy5kaXNhYmxlTG9jYWxlU3dpdGNoIHx8IGxvY2FsZXMubGVuZ3RoIDwgMikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZWwgPSA8SFRNTFNlbGVjdEVsZW1lbnQ+KFxuICAgICAgRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiLCBcInNhLXRhYmxlX19oZWFkZXItZXh0ZW5zaW9uXCIsIHt9KVxuICAgICk7XG4gICAgdmFyIG9wdGlvbnNWYWx1ZXMgPSBbbG9jYWxpemF0aW9uLmdldFN0cmluZyhcImNoYW5nZUxvY2FsZVwiKV0uY29uY2F0KFxuICAgICAgbG9jYWxlc1xuICAgICk7XG4gICAgb3B0aW9uc1ZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHZhciBvcHRpb24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIFwiXCIsIHtcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgdGV4dDogbG9jYWxpemF0aW9uLmxvY2FsZU5hbWVzW3ZhbF0gfHwgbG9jYWxpemF0aW9uLmdldFN0cmluZyh2YWwpIHx8IHZhbCxcbiAgICAgIH0pO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQob3B0aW9uKTtcbiAgICB9KTtcbiAgICBlbC5vbmNoYW5nZSA9ICgpID0+IHtcbiAgICAgIHRhYmxlLmxvY2FsZSA9IGVsLnZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIGVsO1xuICB9LFxufSk7XG5cbmV4cG9ydCB2YXIgSGVhZGVyRXh0ZW5zaW9uczsiLCJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCIuLi90YWJsZVwiO1xuaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uLy4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB7IERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBUYWJsZUV4dGVuc2lvbnMgfSBmcm9tIFwiLi90YWJsZWV4dGVuc2lvbnNcIjtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwicm93XCIsXG4gIG5hbWU6IFwiZGV0YWlsc1wiLFxuICB2aXNpYmxlSW5kZXg6IDAsXG4gIHJlbmRlcjogKF90YWJsZTogVGFibGUsIG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIGNvbnN0IGJ0biA9IERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0J1dHRvbihcImRldGFpbFwiKTtcbiAgICBidG4udGl0bGUgPSBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwic2hvd01pbm9yQ29sdW1uc1wiKTtcbiAgICBidG4uY2xhc3NOYW1lICs9IFwiIHNhLXRhYmxlX19yb3ctZXh0ZW5zaW9uXCI7XG4gICAgYnRuLm9uY2xpY2sgPSAoKSA9PiB7XG4gICAgICBvcHRpb25zLnJvdy50b2dnbGVEZXRhaWxzKCk7XG4gICAgfTtcbiAgICByZXR1cm4gYnRuO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcInJvd1wiLFxuICBuYW1lOiBcInNlbGVjdFwiLFxuICB2aXNpYmxlSW5kZXg6IC0xLFxuICByZW5kZXI6IGZ1bmN0aW9uIChfdGFibGUsIG9wdCkge1xuICAgIHZhciByb3cgPSBvcHQucm93O1xuICAgIHZhciBjaGVja2JveCA9IDxIVE1MSW5wdXRFbGVtZW50PkRvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcImlucHV0XCIsXG4gICAgICBcInNhLXRhYmxlX19yb3ctZXh0ZW5zaW9uXCIsXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgIH1cbiAgICApO1xuICAgIGNoZWNrYm94LmNoZWNrZWQgPSByb3cuZ2V0SXNTZWxlY3RlZCgpO1xuICAgIGNoZWNrYm94Lm9uY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcm93LnRvZ2dsZVNlbGVjdCgpO1xuICAgIH07XG4gICAgcmV0dXJuIGNoZWNrYm94O1xuICB9LFxufSk7XG4iLCJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCIuLi90YWJsZVwiO1xuXG5pbnRlcmZhY2UgSVRhYmxlRXh0ZW5zaW9uIHtcbiAgbG9jYXRpb246IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2aXNpYmxlSW5kZXg6IG51bWJlcjtcbiAgcmVuZGVyOiAodGFibGU6IFRhYmxlLCBvcHQ6IGFueSkgPT4gSFRNTEVsZW1lbnQ7XG4gIGRlc3Ryb3k/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGVFeHRlbnNpb25zIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZTogVGFibGUpIHt9XG4gIHByaXZhdGUgc3RhdGljIGV4dGVuc2lvbnM6IHsgW2xvY2F0aW9uOiBzdHJpbmddOiBBcnJheTxJVGFibGVFeHRlbnNpb24+IH0gPSB7fTtcbiAgcHJpdmF0ZSByZW5kZXJlZEV4dGVuc2lvbnM6IEFycmF5PElUYWJsZUV4dGVuc2lvbj4gPSBbXTtcblxuICBwdWJsaWMgcmVuZGVyKHRhcmdldE5vZGU6IEhUTUxFbGVtZW50LCBsb2NhdGlvbjogc3RyaW5nLCBvcHRpb25zPzogYW55KSB7XG4gICAgdmFyIGV4dGVuc2lvbnMgPSBUYWJsZUV4dGVuc2lvbnMuZXh0ZW5zaW9uc1tsb2NhdGlvbl07XG4gICAgaWYgKCEhZXh0ZW5zaW9ucykge1xuICAgICAgZXh0ZW5zaW9ucyA9IHRoaXMuc29ydEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7XG4gICAgICBleHRlbnNpb25zLmZvckVhY2goKGV4dGVuc2lvbikgPT4ge1xuICAgICAgICBpZiAoISFleHRlbnNpb24ucmVuZGVyKSB7XG4gICAgICAgICAgdmFyIGFjdGlvbiA9IGV4dGVuc2lvbi5yZW5kZXIodGhpcy50YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgaWYgKCEhYWN0aW9uKSB7XG4gICAgICAgICAgICB0YXJnZXROb2RlLmFwcGVuZENoaWxkKGFjdGlvbik7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkRXh0ZW5zaW9ucy5wdXNoKGV4dGVuc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbmRlcmVkRXh0ZW5zaW9ucy5mb3JFYWNoKChleHRlbnNpb24pID0+IHtcbiAgICAgIGlmICghIWV4dGVuc2lvbi5kZXN0cm95KSBleHRlbnNpb24uZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIHRoaXMucmVuZGVyZWRFeHRlbnNpb25zID0gW107XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbjogSVRhYmxlRXh0ZW5zaW9uKSB7XG4gICAgaWYgKCF0aGlzLmV4dGVuc2lvbnNbZXh0ZW5zaW9uLmxvY2F0aW9uXSlcbiAgICAgIHRoaXMuZXh0ZW5zaW9uc1tleHRlbnNpb24ubG9jYXRpb25dID0gW107XG4gICAgdGhpcy5leHRlbnNpb25zW2V4dGVuc2lvbi5sb2NhdGlvbl0ucHVzaChleHRlbnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVtb3ZlRXh0ZW5zaW9uKGV4dGVuc2lvbjogSVRhYmxlRXh0ZW5zaW9uKSB7XG4gICAgaWYoIWV4dGVuc2lvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBleHRlbnNpb25zID0gVGFibGVFeHRlbnNpb25zLmV4dGVuc2lvbnNbZXh0ZW5zaW9uLmxvY2F0aW9uXTtcbiAgICBjb25zdCBpbmRleCA9IGV4dGVuc2lvbnMuaW5kZXhPZihleHRlbnNpb24pO1xuICAgIGlmKGluZGV4ID49IDApIHtcbiAgICAgIGV4dGVuc2lvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHVucmVnaXN0ZXJFeHRlbnNpb24oXG4gICAgbG9jYXRpb246IHN0cmluZyxcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmdcbiAgKSB7XG4gICAgaWYoIWFjdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYoISFsb2NhdGlvbikge1xuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gVGFibGVFeHRlbnNpb25zLmZpbmRFeHRlbnNpb24obG9jYXRpb24sIGFjdGlvbk5hbWUpO1xuICAgICAgVGFibGVFeHRlbnNpb25zLnJlbW92ZUV4dGVuc2lvbihleHRlbnNpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goKGxvY2F0aW9uOnN0cmluZykgPT4gVGFibGVFeHRlbnNpb25zLnVucmVnaXN0ZXJFeHRlbnNpb24obG9jYXRpb24sIGFjdGlvbk5hbWUpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZpbmRFeHRlbnNpb24oXG4gICAgbG9jYXRpb246IHN0cmluZyxcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmdcbiAgKTogSVRhYmxlRXh0ZW5zaW9uIHtcbiAgICBpZiAoIXRoaXMuZXh0ZW5zaW9uc1tsb2NhdGlvbl0pIHJldHVybiBudWxsO1xuICAgIHZhciBleHRlbnNpb24gPSB0aGlzLmV4dGVuc2lvbnNbbG9jYXRpb25dLmZpbHRlcihmdW5jdGlvbiAoXG4gICAgICBleHRlbnNpb246IElUYWJsZUV4dGVuc2lvblxuICAgICkge1xuICAgICAgcmV0dXJuIGV4dGVuc2lvbi5uYW1lID09IGFjdGlvbk5hbWU7XG4gICAgfSlbMF07XG4gICAgcmV0dXJuIGV4dGVuc2lvbiB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RXh0ZW5zaW9ucyhleHRlbnNpb25zOiBBcnJheTxJVGFibGVFeHRlbnNpb24+KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV4dGVuc2lvbnMpKSByZXR1cm47XG4gICAgcmV0dXJuIFtdXG4gICAgICAuY29uY2F0KGV4dGVuc2lvbnMuZmlsdGVyKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi52aXNpYmxlSW5kZXggPj0gMCkpXG4gICAgICAuc29ydCgoZmlyc3RFeHRlbnNpb24sIHNlY29uZEV4dGVuc2lvbikgPT4ge1xuICAgICAgICByZXR1cm4gZmlyc3RFeHRlbnNpb24udmlzaWJsZUluZGV4IC0gc2Vjb25kRXh0ZW5zaW9uLnZpc2libGVJbmRleDtcbiAgICAgIH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBTdXJ2ZXlNb2RlbCwgUXVlc3Rpb24sIEV2ZW50LCBzZXR0aW5ncywgUXVlc3Rpb25TZWxlY3RCYXNlLCBRdWVzdGlvbk1hdHJpeE1vZGVsLCBJdGVtVmFsdWUsIEpzb25FcnJvciwgRXZlbnRCYXNlIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgKiBhcyBTdXJ2ZXlDb3JlIGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHtcbiAgSVBlcm1pc3Npb24sXG4gIFF1ZXN0aW9uTG9jYXRpb24sXG4gIElUYWJsZVN0YXRlLFxuICBJQ29sdW1uLFxuICBJQ29sdW1uRGF0YSxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBEZXRhaWxzIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy9kZXRhaWxzZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB7IFRhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbnMvdGFibGVleHRlbnNpb25zXCI7XG5pbXBvcnQgeyBjcmVhdGVDb21tZXJjaWFsTGljZW5zZUxpbmssIGNyZWF0ZUltYWdlc0NvbnRhaW5lciwgY3JlYXRlTGlua3NDb250YWluZXIsIERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBDb2x1bW5zQnVpbGRlckZhY3RvcnkgfSBmcm9tIFwiLi9jb2x1bW5idWlsZGVyXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q29sdW1uIH0gZnJvbSBcIi4vY29sdW1uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZU9wdGlvbnMge1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgcHJvcGVydHkgdG8gdHJ1ZSB0byByZW5kZXIgY29sdW1uIGhlYWRpbmdzIHVzaW5nIHF1ZXN0aW9uIG5hbWVzXG4gICAqL1xuICB1c2VOYW1lc0FzVGl0bGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZSB0aGlzIGV2ZW50IHRvIGNoYW5nZSB0aGUgZGlzcGxheSB2YWx1ZSBvZiBxdWVzdGlvbiBpbiB0YWJsZS5cbiAgICogPGJyLz4gYHNlbmRlcmAgLSB0aGUgdGFibGUgb2JqZWN0IHRoYXQgZmlyZXMgdGhlIGV2ZW50LlxuICAgKiA8YnIvPiBgb3B0aW9ucy5xdWVzdGlvbmAgLSB0aGUgcXVlc3Rpb24gb2JlY3QgZm9yIHdoaWNoIGV2ZW50IGlzIGZpcmVkLlxuICAgKiA8YnIvPiBgb3B0aW9ucy5kaXNwbGF5VmFsdWVgIC0gdGhlIHF1ZXN0aW9uIGRpc3BsYXkgdmFsdWUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgb3B0aW9uIGJlZm9yZSBpdCBpcyBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlLlxuICAgKi9cbiAgb25HZXRRdWVzdGlvblZhbHVlPzogKG9wdGlvbnM6IHtcbiAgICBxdWVzdGlvbjogUXVlc3Rpb24sXG4gICAgZGlzcGxheVZhbHVlOiBhbnksXG4gIH0pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUV2ZW50IGV4dGVuZHMgRXZlbnRCYXNlPFRhYmxlPiB7fVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGUge1xuICBwdWJsaWMgc3RhdGljIHNob3dGaWxlc0FzSW1hZ2VzID0gZmFsc2U7XG4gIHB1YmxpYyBzdGF0aWMgaGF2ZUNvbW1lcmNpYWxMaWNlbnNlOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCB0YWJsZURhdGE6IGFueTtcbiAgcHJvdGVjdGVkIGV4dGVuc2lvbnM6IFRhYmxlRXh0ZW5zaW9ucztcbiAgcHJpdmF0ZSBoYXZlQ29tbWVyY2lhbExpY2Vuc2UgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9jb2x1bW5zOiBBcnJheTxJQ29sdW1uPjtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9zdXJ2ZXk6IFN1cnZleU1vZGVsLFxuICAgIHByb3RlY3RlZCBkYXRhOiBBcnJheTxPYmplY3Q+LFxuICAgIHByb3RlY3RlZCBfb3B0aW9uczogSVRhYmxlT3B0aW9ucyA9IHt9LFxuICAgIHByb3RlY3RlZCBfY29sdW1uc0RhdGE6IEFycmF5PElDb2x1bW5EYXRhPiA9IFtdXG4gICkge1xuICAgIGlmKCF0aGlzLl9vcHRpb25zKSB7XG4gICAgICB0aGlzLl9vcHRpb25zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5fY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zKF9zdXJ2ZXkpO1xuICAgIHRoaXMuaW5pdFRhYmxlRGF0YShkYXRhKTtcbiAgICBsb2NhbGl6YXRpb24uY3VycmVudExvY2FsZSA9IHRoaXMuX3N1cnZleS5sb2NhbGU7XG4gICAgdGhpcy5fY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zKF9zdXJ2ZXkpO1xuXG4gICAgaWYoX2NvbHVtbnNEYXRhLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5zRnJvbURhdGEodGhpcy5fY29sdW1uc0RhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBUYWJsZUV4dGVuc2lvbnModGhpcyk7XG4gICAgY29uc3QgZiA9ICg8YW55PlN1cnZleUNvcmUpLmhhc0xpY2Vuc2U7XG4gICAgdGhpcy5oYXZlQ29tbWVyY2lhbExpY2Vuc2UgPSAoISFmICYmIGYoNCkpIHx8XG4gICAgICBUYWJsZS5oYXZlQ29tbWVyY2lhbExpY2Vuc2UgfHxcbiAgICAgICghIV9vcHRpb25zICYmXG4gICAgICAgICh0eXBlb2YgX29wdGlvbnMuaGF2ZUNvbW1lcmNpYWxMaWNlbnNlICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgPyBfb3B0aW9ucy5oYXZlQ29tbWVyY2lhbExpY2Vuc2VcbiAgICAgICAgICA6IGZhbHNlKSk7XG4gIH1cbiAgcHJvdGVjdGVkIHJlbmRlclJlc3VsdDogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBjdXJyZW50UGFnZVNpemU6IG51bWJlciA9IDU7XG4gIHByb3RlY3RlZCBjdXJyZW50UGFnZU51bWJlcjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3Jvd3M6IFRhYmxlUm93W10gPSBbXTtcbiAgcHJvdGVjdGVkIGlzQ29sdW1uUmVvcmRlckVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldHMgcGFnaW5hdGlvbiBzZWxlY3RvciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIHBhZ2luYXRpb25TaXplU2VsZWN0b3I6IG51bWJlcltdID0gWzEsIDUsIDEwLCAyNSwgNTAsIDEwMF07XG5cbiAgcHVibGljIG9uQ29sdW1uc1Zpc2liaWxpdHlDaGFuZ2VkID0gbmV3IFRhYmxlRXZlbnQoKTtcblxuICBwdWJsaWMgb25Db2x1bW5zTG9jYXRpb25DaGFuZ2VkID0gbmV3IFRhYmxlRXZlbnQoKTtcblxuICBwdWJsaWMgb25Sb3dSZW1vdmVkID1uZXcgVGFibGVFdmVudCgpO1xuXG4gIHB1YmxpYyByZW5kZXJEZXRhaWxBY3Rpb25zOiAoXG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICByb3c6IFRhYmxlUm93XG4gICkgPT4gSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIGdldERhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuICBwdWJsaWMgZ2V0IHN1cnZleSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3VydmV5O1xuICB9XG4gIHB1YmxpYyBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBhcHBseUZpbHRlcih2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgcHVibGljIGFic3RyYWN0IGFwcGx5Q29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBzb3J0QnlDb2x1bW4oY29sdW1uTmFtZTogc3RyaW5nLCBkaXJlY3Rpb246IHN0cmluZyk6IHZvaWQ7XG5cbiAgcHVibGljIHJlbmRlcih0YXJnZXROb2RlOiBIVE1MRWxlbWVudCB8IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0Tm9kZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdGFyZ2V0Tm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldE5vZGUpO1xuICAgIH1cbiAgICB0YXJnZXROb2RlLmlubmVySFRNTCA9IFwiXCI7XG4gICAgaWYgKCF0aGlzLmhhdmVDb21tZXJjaWFsTGljZW5zZSkge1xuICAgICAgdGFyZ2V0Tm9kZS5hcHBlbmRDaGlsZChjcmVhdGVDb21tZXJjaWFsTGljZW5zZUxpbmsoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVuYWJsZUNvbHVtblJlb3JkZXIoKSB7XG4gICAgdGhpcy5pc0NvbHVtblJlb3JkZXJFbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlQ29sdW1uUmVvcmRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ29sdW1uUmVvcmRlckVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYWdlTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2VOdW1iZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0UGFnZU51bWJlcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCBwYWdlIHNpemUuXG4gICAqL1xuICBwdWJsaWMgZ2V0UGFnZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZVNpemU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjdXJyZW50IHBhZ2Ugc2l6ZS5cbiAgICovXG4gIHB1YmxpYyBzZXRQYWdlU2l6ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZVNpemUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uU3RhdGVDaGFuZ2VkLmZpcmUodGhpcywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3JlYXRlZFJvd3MoKTogVGFibGVSb3dbXSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCh0aGlzLl9yb3dzKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckNyZWF0ZWRSb3dzKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICByb3cuZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIHRoaXMuX3Jvd3MgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdXNlTmFtZXNBc1RpdGxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucyAmJiB0aGlzLl9vcHRpb25zLnVzZU5hbWVzQXNUaXRsZXMgPT09IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRDb2x1bW5zID0gKHN1cnZleTogU3VydmV5TW9kZWwpID0+IHtcbiAgICBsZXQgY29sdW1uczogQXJyYXk8SUNvbHVtbj4gPSBbXTtcbiAgICB0aGlzLl9zdXJ2ZXkuZ2V0QWxsUXVlc3Rpb25zKCkuZm9yRWFjaCgocXVlc3Rpb246IFF1ZXN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gQ29sdW1uc0J1aWxkZXJGYWN0b3J5Lkluc3RhbmNlLmdldENvbHVtbnNCdWlsZGVyKHF1ZXN0aW9uLmdldFRlbXBsYXRlKCkpO1xuICAgICAgY29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGJ1aWxkZXIuYnVpbGRDb2x1bW5zKHF1ZXN0aW9uLCB0aGlzKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH07XG5cbiAgcHVibGljIGlzQ29sdW1uVmlzaWJsZShjb2x1bW46IElDb2x1bW4pIHtcbiAgICBpZiAoY29sdW1uLmxvY2F0aW9uICE9PSBRdWVzdGlvbkxvY2F0aW9uLkNvbHVtbikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBjb2x1bW4uaXNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zKCkge1xuICAgIHJldHVybiBbXS5jb25jYXQodGhpcy5fY29sdW1ucyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IGNvbHVtbnMoY29sdW1uczogQXJyYXk8SUNvbHVtbj4pIHtcbiAgICB0aGlzLl9jb2x1bW5zID0gY29sdW1ucztcbiAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XG4gICAgdGhpcy5vblN0YXRlQ2hhbmdlZC5maXJlKHRoaXMsIHRoaXMuc3RhdGUpO1xuICB9XG4gIHB1YmxpYyBnZXQgaXNJbml0VGFibGVEYXRhUHJvY2Vzc2luZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuaXNJbml0VGFibGVEYXRhUHJvY2Vzc2luZ1ZhbHVlOyB9XG4gIHByaXZhdGUgaXNJbml0VGFibGVEYXRhUHJvY2Vzc2luZ1ZhbHVlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgaW5pdFRhYmxlRGF0YShkYXRhOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5pc0luaXRUYWJsZURhdGFQcm9jZXNzaW5nVmFsdWUgPSB0cnVlO1xuICAgIHRoaXMudGFibGVEYXRhID0gKGRhdGEgfHwgW10pLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgdmFyIGRhdGFJdGVtOiBhbnkgPSB7fTtcbiAgICAgIHRoaXMuX3N1cnZleS5kYXRhID0gaXRlbTtcbiAgICAgIHRoaXMuX2NvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdCA9IGNvbHVtbi5nZXRDZWxsRGF0YSh0aGlzLCBpdGVtKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9vcHRpb25zLm9uR2V0UXVlc3Rpb25WYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdGhpcy5fb3B0aW9ucy5vbkdldFF1ZXN0aW9uVmFsdWUob3B0KTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhSXRlbVtjb2x1bW4ubmFtZV0gPSBvcHQuZGlzcGxheVZhbHVlO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkYXRhSXRlbTtcbiAgICB9KTtcbiAgICB0aGlzLmlzSW5pdFRhYmxlRGF0YVByb2Nlc3NpbmdWYWx1ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG1vdmVDb2x1bW4oZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgdmFyIGRlbGV0ZWRDb2x1bW5zID0gdGhpcy5fY29sdW1ucy5zcGxpY2UoZnJvbSwgMSk7XG4gICAgdGhpcy5fY29sdW1ucy5zcGxpY2UodG8sIDAsIGRlbGV0ZWRDb2x1bW5zWzBdKTtcbiAgICB0aGlzLm9uU3RhdGVDaGFuZ2VkLmZpcmUodGhpcywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29sdW1uTG9jYXRpb24oY29sdW1uTmFtZTogc3RyaW5nLCBsb2NhdGlvbjogUXVlc3Rpb25Mb2NhdGlvbikge1xuICAgIHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGNvbHVtbk5hbWUpLmxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgdGhpcy5vbkNvbHVtbnNMb2NhdGlvbkNoYW5nZWQuZmlyZSh0aGlzLCB7XG4gICAgICBjb2x1bW5OYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgIH0pO1xuICAgIHRoaXMub25TdGF0ZUNoYW5nZWQuZmlyZSh0aGlzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5CeU5hbWUoY29sdW1uTmFtZTogc3RyaW5nKTogSUNvbHVtbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5uYW1lID09PSBjb2x1bW5OYW1lKVswXTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbk5hbWU6IHN0cmluZywgaXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgdmFyIGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGNvbHVtbk5hbWUpO1xuICAgIGNvbHVtbi5pc1Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgdGhpcy5vbkNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlZC5maXJlKHRoaXMsIHtcbiAgICAgIGNvbHVtbk5hbWU6IGNvbHVtbk5hbWUsXG4gICAgICBjb2x1bW5WaXNpYmlsaXR5OiBpc1Zpc2libGUsXG4gICAgfSk7XG4gICAgdGhpcy5vblN0YXRlQ2hhbmdlZC5maXJlKHRoaXMsIHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgcHVibGljIHNldENvbHVtbldpZHRoKGNvbHVtbk5hbWU6IHN0cmluZywgd2lkdGg6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHZhciBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShjb2x1bW5OYW1lKTtcbiAgICBjb2x1bW4ud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLm9uU3RhdGVDaGFuZ2VkLmZpcmUodGhpcywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlUm93KHJvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICB2YXIgaW5kZXggPSB0aGlzLl9yb3dzLmluZGV4T2Yocm93KTtcbiAgICB0aGlzLl9yb3dzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5vblJvd1JlbW92ZWQuZmlyZSh0aGlzLCB7IHJvdzogcm93IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCBsb2NhbGUgb2YgdGhlIHRhYmxlLlxuICAgKiBJZiBsb2NhbGVzIG1vcmUgdGhhbiBvbmUsIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24gZHJvcGRvd24gd2lsbCBiZSBhZGRlZCBpbiB0aGUgdG9vbGJhclxuICAgKi9cbiAgcHVibGljIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIGxvY2FsaXphdGlvbi5jdXJyZW50TG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgbG9jYWxlIGZvciB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyBzZXQgbG9jYWxlKG5ld0xvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3VydmV5LmxvY2FsZSA9IG5ld0xvY2FsZTtcbiAgICBsb2NhbGl6YXRpb24uY3VycmVudExvY2FsZSA9IG5ld0xvY2FsZTtcbiAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XG4gICAgdGhpcy5vblN0YXRlQ2hhbmdlZC5maXJlKHRoaXMsIHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldExvY2FsZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCh0aGlzLl9zdXJ2ZXkuZ2V0VXNlZExvY2FsZXMoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChoYXJkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAoaGFyZCkge1xuICAgICAgdGhpcy5pbml0VGFibGVEYXRhKHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUmVuZGVyZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLmdldFBhZ2VOdW1iZXIoKTtcbiAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0aGlzLnJlbmRlclJlc3VsdDtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgdGhpcy5yZW5kZXIodGFyZ2V0Tm9kZSk7XG4gICAgICB0aGlzLnNldFBhZ2VTaXplKHRoaXMuY3VycmVudFBhZ2VTaXplKTtcbiAgICAgIHRoaXMuc2V0UGFnZU51bWJlcih0aGlzLmN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLmNsZWFyQ3JlYXRlZFJvd3MoKTtcbiAgICB0aGlzLmV4dGVuc2lvbnMuZGVzdHJveSgpO1xuICAgIHRoaXMucmVuZGVyUmVzdWx0LmlubmVySFRNTCA9IFwiXCI7XG4gICAgdGhpcy5yZW5kZXJSZXN1bHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUmVuZGVyZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5yZW5kZXJSZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVml6dWFsaXphdGlvbiBwYW5lbCBzdGF0ZSBnZXR0ZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IElUYWJsZVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlOiBsb2NhbGl6YXRpb24uY3VycmVudExvY2FsZSxcbiAgICAgIGVsZW1lbnRzOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2NvbHVtbnMpKSxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLmN1cnJlbnRQYWdlU2l6ZSxcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBWaXp1YWxpemF0aW9uIHBhbmVsIHN0YXRlIHNldHRlci5cbiAgICovXG4gIHB1YmxpYyBzZXQgc3RhdGUobmV3U3RhdGU6IElUYWJsZVN0YXRlKSB7XG4gICAgaWYgKCFuZXdTdGF0ZSkgcmV0dXJuO1xuXG4gICAgaWYgKHR5cGVvZiBuZXdTdGF0ZS5sb2NhbGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGxvY2FsaXphdGlvbi5jdXJyZW50TG9jYWxlID0gbmV3U3RhdGUubG9jYWxlO1xuICAgICAgdGhpcy5fc3VydmV5LmxvY2FsZSA9IG5ld1N0YXRlLmxvY2FsZTtcbiAgICAgIHRoaXMuaW5pdFRhYmxlRGF0YSh0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbmV3U3RhdGUuZWxlbWVudHMgIT09IFwidW5kZWZpbmVkXCIpXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNGcm9tRGF0YShuZXdTdGF0ZS5lbGVtZW50cyk7XG4gICAgaWYgKHR5cGVvZiBuZXdTdGF0ZS5wYWdlU2l6ZSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VTaXplID0gbmV3U3RhdGUucGFnZVNpemU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnNGcm9tRGF0YShjb2x1bW5zRGF0YTogQXJyYXk8SUNvbHVtbkRhdGE+KSB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2NvbHVtbnM7XG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICBjb25zdCBlbCA9IGNvbHVtbnNEYXRhLmZpbHRlcihlbCA9PiBjb2x1bW4ubmFtZSA9PT0gZWwubmFtZSlbMF07XG4gICAgICBpZighIWVsKSB7XG4gICAgICAgIGNvbHVtbi5mcm9tSlNPTihlbCk7XG4gICAgICAgIGNvbHVtbi52aXNpYmxlSW5kZXggPSBjb2x1bW5zRGF0YS5pbmRleE9mKGVsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb2x1bW5zRGF0YS5mb3JFYWNoKGVsID0+IHtcbiAgICAgIGxldCBjb2x1bW4gPSBjb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLm5hbWUgPT09IGVsLm5hbWUpWzBdO1xuICAgICAgaWYoIWNvbHVtbikge1xuICAgICAgICBjb2x1bW4gPSBuZXcgRGVmYXVsdENvbHVtbih1bmRlZmluZWQsIHRoaXMpO1xuICAgICAgICBjb2x1bW4uZnJvbUpTT04oZWwpO1xuICAgICAgICBjb2x1bW4udmlzaWJsZUluZGV4ID0gY29sdW1uc0RhdGEuaW5kZXhPZihlbCk7XG4gICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLl9jb2x1bW5zLnNvcnQoKGNvbDEsIGNvbDIpID0+IGNvbDEudmlzaWJsZUluZGV4IC0gY29sMi52aXNpYmxlSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGFibGUgc3RhdGUgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBvblN0YXRlQ2hhbmdlZCA9IG5ldyBUYWJsZUV2ZW50KCk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGFibGUgcGVybWlzc2lvbnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBlcm1pc3Npb25zKCk6IElQZXJtaXNzaW9uW10ge1xuICAgIHJldHVybiA8YW55PnRoaXMuX2NvbHVtbnMubWFwKChjb2x1bW46IElDb2x1bW4pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICBpc1B1YmxpYzogY29sdW1uLmlzUHVibGljLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU2V0cyB0YWJsZSBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHB1YmxpYyBzZXQgcGVybWlzc2lvbnMocGVybWlzc2lvbnM6IElQZXJtaXNzaW9uW10pIHtcbiAgICBjb25zdCB1cGRhdGVkRWxlbWVudHMgPSB0aGlzLl9jb2x1bW5zLm1hcCgoY29sdW1uOiBJQ29sdW1uKSA9PiB7XG4gICAgICBwZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uKSA9PiB7XG4gICAgICAgIGlmIChwZXJtaXNzaW9uLm5hbWUgPT09IGNvbHVtbi5uYW1lKVxuICAgICAgICAgIGNvbHVtbi5pc1B1YmxpYyA9IHBlcm1pc3Npb24uaXNQdWJsaWM7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9KTtcbiAgICB0aGlzLl9jb2x1bW5zID0gW10uY29uY2F0KHVwZGF0ZWRFbGVtZW50cyk7XG4gICAgdGhpcy5vblBlcm1pc3Npb25zQ2hhbmdlZENhbGxiYWNrICYmXG4gICAgICB0aGlzLm9uUGVybWlzc2lvbnNDaGFuZ2VkQ2FsbGJhY2sodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBwZXJtaXNzaW9ucyBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgb25QZXJtaXNzaW9uc0NoYW5nZWRDYWxsYmFjazogYW55O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVSb3cge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGFibGU6IFRhYmxlLFxuICAgIHByb3RlY3RlZCBleHRlbnNpb25zQ29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICBwcm90ZWN0ZWQgZGV0YWlsc0NvbnRhaW5lcjogSFRNTEVsZW1lbnRcbiAgKSB7XG4gICAgdGhpcy5kZXRhaWxzID0gbmV3IERldGFpbHModGFibGUsIHRoaXMsIGRldGFpbHNDb250YWluZXIpO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBUYWJsZUV4dGVuc2lvbnModGFibGUpO1xuICAgIHRhYmxlLm9uQ29sdW1uc0xvY2F0aW9uQ2hhbmdlZC5hZGQodGhpcy5vbkNvbHVtbkxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrKTtcbiAgfVxuICBwdWJsaWMgZGV0YWlsczogRGV0YWlscztcbiAgcHVibGljIGV4dGVuc2lvbnM6IFRhYmxlRXh0ZW5zaW9ucztcbiAgcHJpdmF0ZSBkZXRhaWxlZFJvd0NsYXNzID0gXCJzYS10YWJsZV9fZGV0YWlsLXJvd1wiO1xuICBwcml2YXRlIGlzRGV0YWlsc0V4cGFuZGVkID0gZmFsc2U7XG4gIHB1YmxpYyBvblRvZ2dsZURldGFpbHM6IEV2ZW50PFxuICAgIChzZW5kZXI6IFRhYmxlUm93LCBvcHRpb25zOiBhbnkpID0+IGFueSxcbiAgICBUYWJsZVJvdyxcbiAgICBhbnlcbiAgPiA9IG5ldyBFdmVudDwoc2VuZGVyOiBUYWJsZVJvdywgb3B0aW9uczogYW55KSA9PiBhbnksIFRhYmxlUm93LCBhbnk+KCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgcm93J3MgaHRtbCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RWxlbWVudCgpOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogUmV0dXJucyBkYXRhLCB3aGljaCBpcyBkaXNwbGF5ZWQgaW4gdGhlIHJvdy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRSb3dEYXRhKCk6IGFueTtcblxuICAvKipcbiAgICogUmV0dXJucyBwb3NpdGlvbiBvZiByb3cgaW4gdGhlIHRhYmxlJ3MgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRhUG9zaXRpb24oKTogbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBpc1NlbGVjdGVkOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgdGhpcy5leHRlbnNpb25zLnJlbmRlcih0aGlzLmV4dGVuc2lvbnNDb250YWluZXIsIFwicm93XCIsIHsgcm93OiB0aGlzIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5EZXRhaWxzKCkge1xuICAgIHRoaXMuZGV0YWlscy5vcGVuKCk7XG4gICAgdGhpcy5nZXRFbGVtZW50KCkuY2xhc3NOYW1lICs9IFwiIFwiICsgdGhpcy5kZXRhaWxlZFJvd0NsYXNzO1xuICAgIHRoaXMub25Ub2dnbGVEZXRhaWxzLmZpcmUodGhpcywgeyBpc0V4cGFuZGVkOiB0cnVlIH0pO1xuICAgIHRoaXMuaXNEZXRhaWxzRXhwYW5kZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlscygpIHtcbiAgICB0aGlzLmRldGFpbHMuY2xvc2UoKTtcbiAgICB0aGlzLmdldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZGV0YWlsZWRSb3dDbGFzcyk7XG4gICAgdGhpcy5vblRvZ2dsZURldGFpbHMuZmlyZSh0aGlzLCB7IGlzRXhwYW5kZWQ6IGZhbHNlIH0pO1xuICAgIHRoaXMuaXNEZXRhaWxzRXhwYW5kZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLmlzRGV0YWlsc0V4cGFuZGVkKSB7XG4gICAgICB0aGlzLmNsb3NlRGV0YWlscygpO1xuICAgIH0gZWxzZSB0aGlzLm9wZW5EZXRhaWxzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1NlbGVjdGVkO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VsZWN0ZWQgPSAhdGhpcy5pc1NlbGVjdGVkO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLnJlbW92ZVJvdyh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Db2x1bW5Mb2NhdGlvbkNoYW5nZWRDYWxsYmFjayA9ICgpID0+IHtcbiAgICB0aGlzLmNsb3NlRGV0YWlscygpO1xuICB9O1xuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUub25Db2x1bW5zTG9jYXRpb25DaGFuZ2VkLnJlbW92ZShcbiAgICAgIHRoaXMub25Db2x1bW5Mb2NhdGlvbkNoYW5nZWRDYWxsYmFja1xuICAgICk7XG4gICAgdGhpcy5leHRlbnNpb25zLmRlc3Ryb3koKTtcbiAgfVxufSIsImV4cG9ydCB2YXIgX19hc3NpZ24gPVxuICAoPGFueT5PYmplY3QpW1wiYXNzaWduXCJdIHx8XG4gIGZ1bmN0aW9uKHRhcmdldDogYW55KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yICh2YXIgcCBpbiBzKVxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0YXJnZXRbcF0gPSBzW3BdO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKHRoaXNDbGFzczogYW55LCBiYXNlQ2xhc3M6IGFueSkge1xuICBmb3IgKHZhciBwIGluIGJhc2VDbGFzcylcbiAgICBpZiAoYmFzZUNsYXNzLmhhc093blByb3BlcnR5KHApKSB0aGlzQ2xhc3NbcF0gPSBiYXNlQ2xhc3NbcF07XG4gIGZ1bmN0aW9uIF9fKCkge1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSB0aGlzQ2xhc3M7XG4gIH1cbiAgdGhpc0NsYXNzLnByb3RvdHlwZSA9XG4gICAgYmFzZUNsYXNzID09PSBudWxsXG4gICAgICA/IE9iamVjdC5jcmVhdGUoYmFzZUNsYXNzKVxuICAgICAgOiAoKF9fLnByb3RvdHlwZSA9IGJhc2VDbGFzcy5wcm90b3R5cGUpLCBuZXcgKDxhbnk+X18pKCkpO1xufVxuXG5leHBvcnQgdmFyIF9fcmVzdCA9IGZ1bmN0aW9uKHNvdXJjZTogYW55LCBlOiBhbnkpIHtcbiAgdmFyIHJlc3VsdDogYW55ID0ge307XG4gIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBzb3VyY2UpXG4gICAgaWYgKFxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwgcHJvcGVydHlOYW1lKSAmJlxuICAgICAgZS5pbmRleE9mKHByb3BlcnR5TmFtZSkgPCAwXG4gICAgKVxuICAgICAgcmVzdWx0W3Byb3BlcnR5TmFtZV0gPSBzb3VyY2VbcHJvcGVydHlOYW1lXTtcbiAgaWYgKFxuICAgIHNvdXJjZSAhPSBudWxsICYmXG4gICAgdHlwZW9mICg8YW55Pk9iamVjdClbXCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcIl0gPT09IFwiZnVuY3Rpb25cIlxuICApXG4gICAgZm9yIChcbiAgICAgIHZhciBpID0gMCxcbiAgICAgICAgcHJvcGVydHlTeW1ib2xzID0gKDxhbnk+T2JqZWN0KVtcImdldE93blByb3BlcnR5U3ltYm9sc1wiXShzb3VyY2UpO1xuICAgICAgaSA8IHByb3BlcnR5U3ltYm9scy5sZW5ndGg7XG4gICAgICBpKytcbiAgICApXG4gICAgICBpZiAoZS5pbmRleE9mKHByb3BlcnR5U3ltYm9sc1tpXSkgPCAwKVxuICAgICAgICByZXN1bHRbcHJvcGVydHlTeW1ib2xzW2ldXSA9IHNvdXJjZVtwcm9wZXJ0eVN5bWJvbHNbaV1dO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZGVjbGFyZSB2YXIgUmVmbGVjdDogYW55O1xuXG5leHBvcnQgdmFyIF9fZGVjb3JhdGUgPSBmdW5jdGlvbihcbiAgZGVjb3JhdG9yczogYW55LFxuICB0YXJnZXQ6IGFueSxcbiAga2V5OiBhbnksXG4gIGRlc2M6IGFueVxuKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICByID1cbiAgICAgIGMgPCAzXG4gICAgICAgID8gdGFyZ2V0XG4gICAgICAgIDogZGVzYyA9PT0gbnVsbFxuICAgICAgICAgID8gKGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSlcbiAgICAgICAgICA6IGRlc2MsXG4gICAgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpXG4gICAgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pXG4gICAgICBpZiAoKGQgPSBkZWNvcmF0b3JzW2ldKSlcbiAgICAgICAgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59O1xuIiwiZXhwb3J0IGNsYXNzIERvY3VtZW50SGVscGVyIHtcclxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVNlbGVjdG9yKFxyXG4gICAgb3B0aW9uczogQXJyYXk8eyB2YWx1ZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcgfT4sXHJcbiAgICBpc1NlbGVjdGVkOiAob3B0aW9uOiB7IHZhbHVlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB9KSA9PiBib29sZWFuLFxyXG4gICAgaGFuZGxlcjogKGU6IGFueSkgPT4gdm9pZFxyXG4gICkge1xyXG4gICAgY29uc3Qgc2VsZWN0V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICBzZWxlY3RXcmFwcGVyLmNsYXNzTmFtZSA9IFwic2EtcXVlc3Rpb25fX3NlbGVjdC13cmFwcGVyXCI7XHJcbiAgICBjb25zdCBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2VsZWN0XCIpO1xyXG4gICAgc2VsZWN0LmNsYXNzTmFtZSA9IFwic2EtcXVlc3Rpb25fX3NlbGVjdFwiO1xyXG4gICAgb3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgbGV0IG9wdGlvbkVsZW1lbnQgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIFwiXCIsIHtcclxuICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxyXG4gICAgICAgIHRleHQ6IG9wdGlvbi50ZXh0LFxyXG4gICAgICAgIHNlbGVjdGVkOiBpc1NlbGVjdGVkKG9wdGlvbiksXHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uRWxlbWVudCk7XHJcbiAgICB9KTtcclxuICAgIHNlbGVjdC5vbmNoYW5nZSA9IGhhbmRsZXI7XHJcbiAgICBzZWxlY3RXcmFwcGVyLmFwcGVuZENoaWxkKHNlbGVjdCk7XHJcbiAgICByZXR1cm4gc2VsZWN0V3JhcHBlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlQnV0dG9uKFxyXG4gICAgaGFuZGxlcjogKGU6IGFueSkgPT4gdm9pZCxcclxuICAgIHRleHQgPSBcIlwiLFxyXG4gICAgY2xhc3NOYW1lID0gXCJzYS10b29sYmFyX19idXR0b25cIlxyXG4gICkge1xyXG4gICAgY29uc3QgYnV0dG9uID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgY2xhc3NOYW1lLCB7XHJcbiAgICAgIGlubmVyVGV4dDogdGV4dCxcclxuICAgICAgb25jbGljazogaGFuZGxlcixcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGJ1dHRvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlRWxlbWVudChcclxuICAgIHRhZ05hbWU6IHN0cmluZyxcclxuICAgIGNsYXNzTmFtZTogc3RyaW5nID0gXCJcIixcclxuICAgIGF0dHJzPzogYW55XHJcbiAgKTogSFRNTEVsZW1lbnQge1xyXG4gICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcclxuICAgIGVsLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcclxuICAgIGlmICghIWF0dHJzKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAoPGFueT5lbClba2V5XSA9IGF0dHJzW2tleV07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTdmdFbGVtZW50KHBhdGg6IHN0cmluZyk6IFNWR1NWR0VsZW1lbnQge1xyXG4gICAgY29uc3Qgc3ZnRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcclxuICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxyXG4gICAgICBcInN2Z1wiXHJcbiAgICApO1xyXG4gICAgY29uc3QgdXNlRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcclxuICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxyXG4gICAgICBcInVzZVwiXHJcbiAgICApO1xyXG4gICAgdXNlRWxlbS5zZXRBdHRyaWJ1dGVOUyhcclxuICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXHJcbiAgICAgIFwiaHJlZlwiLFxyXG4gICAgICBcIiNzYS1zdmctXCIgKyBwYXRoXHJcbiAgICApO1xyXG4gICAgc3ZnRWxlbS5hcHBlbmRDaGlsZCh1c2VFbGVtKTtcclxuICAgIHJldHVybiBzdmdFbGVtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTdmdCdXR0b24ocGF0aDogc3RyaW5nKTogSFRNTEJ1dHRvbkVsZW1lbnQge1xyXG4gICAgY29uc3QgYnRuID0gPEhUTUxCdXR0b25FbGVtZW50PihcclxuICAgICAgRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBcInNhLXRhYmxlX19zdmctYnV0dG9uXCIpXHJcbiAgICApO1xyXG4gICAgYnRuLmFwcGVuZENoaWxkKERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0VsZW1lbnQocGF0aCkpO1xyXG4gICAgcmV0dXJuIGJ0bjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlU3ZnVG9nZ2xlQnV0dG9uKFxyXG4gICAgc3ZnUGF0aDE6IHN0cmluZyxcclxuICAgIHN2UHBhdGgyOiBzdHJpbmcsXHJcbiAgICB0ZXh0MTogc3RyaW5nLFxyXG4gICAgdGV4dDI6IHN0cmluZyxcclxuICAgIGhhbmRsZXIxOiAoZTogYW55KSA9PiBhbnksXHJcbiAgICBoYW5kbGVyMjogKGU6IGFueSkgPT4gYW55LFxyXG4gICAgc3RhdGUgPSBcImZpcnN0XCIsXHJcbiAgICBjbGFzc05hbWUgPSBcInNhLXRvb2xiYXJfX2J1dHRvbiBzYS10b29sYmFyX19zdmctYnV0dG9uXCJcclxuICApOiBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdCBzdmcxID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnRWxlbWVudChzdmdQYXRoMSk7XHJcbiAgICBjb25zdCBzdmcyID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnRWxlbWVudChzdlBwYXRoMik7XHJcbiAgICBjb25zdCBidXR0b24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIGNsYXNzTmFtZSk7XHJcblxyXG4gICAgY29uc3QgdG9nZ2xlID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoc3RhdGUgPT09IFwiZmlyc3RcIikge1xyXG4gICAgICAgIHN0YXRlID0gXCJzZWNvbmRcIjtcclxuICAgICAgICBidXR0b24udGl0bGUgPSB0ZXh0MjtcclxuICAgICAgICBidXR0b24ucmVtb3ZlQ2hpbGQoc3ZnMSk7XHJcbiAgICAgICAgYnV0dG9uLmFwcGVuZENoaWxkKHN2ZzIpO1xyXG4gICAgICAgIGhhbmRsZXIyKGUpO1xyXG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBcInNlY29uZFwiKSB7XHJcbiAgICAgICAgc3RhdGUgPSBcImZpcnN0XCI7XHJcbiAgICAgICAgYnV0dG9uLnRpdGxlID0gdGV4dDE7XHJcbiAgICAgICAgYnV0dG9uLnJlbW92ZUNoaWxkKHN2ZzIpO1xyXG4gICAgICAgIGJ1dHRvbi5hcHBlbmRDaGlsZChzdmcxKTtcclxuICAgICAgICBoYW5kbGVyMShlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoc3RhdGUgPT09IFwiZmlyc3RcIikge1xyXG4gICAgICBidXR0b24udGl0bGUgPSB0ZXh0MTtcclxuICAgICAgYnV0dG9uLmFwcGVuZENoaWxkKHN2ZzEpO1xyXG4gICAgfSBlbHNlIGlmICgoc3RhdGUgPSBcInNlY29uZFwiKSkge1xyXG4gICAgICBidXR0b24udGl0bGUgPSB0ZXh0MjtcclxuICAgICAgYnV0dG9uLmFwcGVuZENoaWxkKHN2ZzIpO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbi5vbmNsaWNrID0gdG9nZ2xlO1xyXG5cclxuICAgIHJldHVybiBidXR0b247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUlucHV0KFxyXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXHJcbiAgICBwbGFjZWhvbGRlciA9IFwiXCIsXHJcbiAgICBkZWZhdWx0VmFsdWUgPSBcIlwiXHJcbiAgKTogSFRNTElucHV0RWxlbWVudCB7XHJcbiAgICB2YXIgZWwgPSA8SFRNTElucHV0RWxlbWVudD5Eb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFxyXG4gICAgICBcImlucHV0XCIsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAge1xyXG4gICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlcixcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiBlbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgb3B0aW9ucyA9IHtcclxuICBydW5uaW5nSW5Ccm93c2VyOiB0eXBlb2Ygd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwgPT09IFwiZnVuY3Rpb25cIixcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbGxvd0RvbVJlbmRlcmluZygpIHtcclxuICByZXR1cm4gb3B0aW9ucy5ydW5uaW5nSW5Ccm93c2VyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tbWVyY2lhbExpY2Vuc2VMaW5rKCkge1xyXG4gIGNvbnN0IGNvbnRhaW5lciA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJzYS1jb21tZXJjaWFsXCIpO1xyXG4gIGNvbnN0IGxpbmsgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiYVwiLCBcInNhLWNvbW1lcmNpYWxfX3RleHRcIiwge1xyXG4gICAgaHJlZjogXCJodHRwczovL3d3dy5zdXJ2ZXlqcy5pby9CdXlcIixcclxuICAgIHRhcmdldDogXCJfYmxhbmtcIixcclxuICB9KTtcclxuICBjb25zdCBjb250YWluZXJTcGFuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgXCJcIik7XHJcbiAgY29uc3QgaWNvbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0VsZW1lbnQoXCJub25jb21tZXJjaWFsXCIpO1xyXG4gIGNvbnN0IHRleHRTcGFuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcclxuICAgIFwic3BhblwiLFxyXG4gICAgXCJzYS1jb21tZXJjaWFsX19wcm9kdWN0XCIsXHJcbiAgICB7XHJcbiAgICAgIGlubmVyVGV4dDogXCJQbGVhc2UgcHVyY2hhc2UgYSBTdXJ2ZXlKUyBBbmFseXRpY3MgZGV2ZWxvcGVyIGxpY2Vuc2UgdG8gdXNlIGl0IGluIHlvdXIgYXBwLlwiLFxyXG4gICAgfVxyXG4gICk7XHJcbiAgY29udGFpbmVyLmFwcGVuZENoaWxkKGxpbmspLmFwcGVuZENoaWxkKGNvbnRhaW5lclNwYW4pO1xyXG4gIGNvbnRhaW5lclNwYW4uYXBwZW5kQ2hpbGQoaWNvbik7XHJcbiAgY29udGFpbmVyU3Bhbi5hcHBlbmRDaGlsZCh0ZXh0U3Bhbik7XHJcbiAgcmV0dXJuIGNvbnRhaW5lcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFIZWxwZXIge1xyXG4gIHB1YmxpYyBzdGF0aWMgemlwQXJyYXlzKC4uLmFycmF5czogYW55W10pOiBhbnlbXVtdIHtcclxuICAgIGxldCB6aXBBcnJheTogYW55W10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXlzWzBdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHppcEFycmF5W2ldID0gW107XHJcbiAgICAgIGFycmF5cy5mb3JFYWNoKChhcnIpID0+IHtcclxuICAgICAgICB6aXBBcnJheVtpXS5wdXNoKGFycltpXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHppcEFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB1bnppcEFycmF5cyh6aXBBcnJheTogYW55W11bXSk6IGFueVtdW10ge1xyXG4gICAgbGV0IGFycmF5czogYW55W11bXSA9IFtdO1xyXG4gICAgemlwQXJyYXkuZm9yRWFjaCgodmFsdWUsIGkpID0+IHtcclxuICAgICAgdmFsdWUuZm9yRWFjaCgodmFsLCBqKSA9PiB7XHJcbiAgICAgICAgaWYgKCFhcnJheXNbal0pIGFycmF5c1tqXSA9IFtdO1xyXG4gICAgICAgIGFycmF5c1tqXVtpXSA9IHZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhcnJheXM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgc29ydERpY3Rpb25hcnkoXHJcbiAgICBrZXlzOiBhbnlbXSxcclxuICAgIHZhbHVlczogYW55W10sXHJcbiAgICBkZXNjOiBib29sZWFuXHJcbiAgKTogeyBrZXlzOiBhbnlbXSwgdmFsdWVzOiBhbnlbXSB9IHtcclxuICAgIGxldCBkaWN0aW9uYXJ5ID0gdGhpcy56aXBBcnJheXMoa2V5cywgdmFsdWVzKTtcclxuICAgIGxldCBjb21wYXJhdG9yID0gKGE6IGFueVtdLCBiOiBhbnlbXSwgYXNjOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gYVsxXSA8IGJbMV0gPyAxIDogYVsxXSA9PSBiWzFdID8gMCA6IC0xO1xyXG4gICAgICByZXR1cm4gYXNjID8gcmVzdWx0IDogcmVzdWx0ICogLTE7XHJcbiAgICB9O1xyXG4gICAgZGljdGlvbmFyeS5zb3J0KChhOiBhbnlbXSwgYjogYW55W10pID0+IHtcclxuICAgICAgcmV0dXJuIGRlc2MgPyBjb21wYXJhdG9yKGEsIGIsIGZhbHNlKSA6IGNvbXBhcmF0b3IoYSwgYik7XHJcbiAgICB9KTtcclxuICAgIGxldCBrZXlzQW5kVmFsdWVzID0gdGhpcy51bnppcEFycmF5cyhkaWN0aW9uYXJ5KTtcclxuICAgIHJldHVybiB7IGtleXM6IGtleXNBbmRWYWx1ZXNbMF0sIHZhbHVlczoga2V5c0FuZFZhbHVlc1sxXSB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB0b1BlcmNlbnRhZ2UodmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuICh2YWx1ZSAvIG1heFZhbHVlKSAqIDEwMDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaW5rc0NvbnRhaW5lcihcclxuICBsaW5rczogQXJyYXk8eyBuYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IGFueSB9PlxyXG4pOiBIVE1MRWxlbWVudCB7XHJcbiAgY29uc3QgbGlua3NDb250YWluZXIgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcclxuICAgIGxpbmtzQ29udGFpbmVyLmFwcGVuZENoaWxkKFxyXG4gICAgICBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiYVwiLCBcIlwiLCB7XHJcbiAgICAgICAgaW5uZXJUZXh0OiBsaW5rLm5hbWUsXHJcbiAgICAgICAgZG93bmxvYWQ6IGxpbmsubmFtZSxcclxuICAgICAgICBocmVmOiBsaW5rLmNvbnRlbnQsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH0pO1xyXG4gIHJldHVybiBsaW5rc0NvbnRhaW5lcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUltYWdlc0NvbnRhaW5lcihcclxuICBsaW5rczogQXJyYXk8eyBuYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IGFueSB9PlxyXG4pOiBIVE1MRWxlbWVudCB7XHJcbiAgY29uc3QgbGlua3NDb250YWluZXIgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcclxuICAgIGxpbmtzQ29udGFpbmVyLmFwcGVuZENoaWxkKFxyXG4gICAgICBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIFwiXCIsIHtcclxuICAgICAgICBhbHQ6IGxpbmsubmFtZSxcclxuICAgICAgICBzcmM6IGxpbmsuY29udGVudCxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGxpbmtzQ29udGFpbmVyO1xyXG59XHJcbiIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9zdXJ2ZXlfY29yZV9fOyJdLCJzb3VyY2VSb290IjoiIn0=
|
|
3268
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bcGMtbmFtZV0vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL1twYy1uYW1lXS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvc3ZnYnVuZGxlLmh0bWwiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vYXJhYmljLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2R1dGNoLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2VuZ2xpc2gudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vZmFyc2kudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vZnJlbmNoLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2dlcm1hbi50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9qYXBhbmVzZS50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9ub3J3ZWdpYW4udHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vcG9ydHVndWVzZS50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9ydXNzaWFuLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy9lbnRyaWVzL2RhdGF0YWJsZXMudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL2xvY2FsaXphdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL3RhYmxlcy9jb2x1bW5idWlsZGVyLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy90YWJsZXMvY29sdW1ucy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL2NvbmZpZy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL2RhdGF0YWJsZXMuc2Nzcz85M2U1Iiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy90YWJsZXMvZGF0YXRhYmxlcy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL2V4dGVuc2lvbnMvY29sdW1uZXh0ZW5zaW9ucy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL2V4dGVuc2lvbnMvZGV0YWlsc2V4dGVuc2lvbnMudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL3RhYmxlcy9leHRlbnNpb25zL2hlYWRlcmV4dGVuc2lvbnMudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL3RhYmxlcy9leHRlbnNpb25zL3Jvd2V4dGVuc2lvbnMudHMiLCJ3ZWJwYWNrOi8vW3BjLW5hbWVdLy4vc3JjL3RhYmxlcy9leHRlbnNpb25zL3RhYmxlZXh0ZW5zaW9ucy50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vLi9zcmMvdGFibGVzL3RhYmxlLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy91dGlscy9oZWxwZXJzLnRzIiwid2VicGFjazovL1twYy1uYW1lXS8uL3NyYy91dGlscy9pbmRleC50cyIsIndlYnBhY2s6Ly9bcGMtbmFtZV0vZXh0ZXJuYWwge1wicm9vdFwiOlwiU3VydmV5XCIsXCJjb21tb25qczJcIjpcInN1cnZleS1jb3JlXCIsXCJjb21tb25qc1wiOlwic3VydmV5LWNvcmVcIixcImFtZFwiOlwic3VydmV5LWNvcmVcIn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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NEM7SUFFNUMsSUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQUMsSUFBSTtRQUNqQixjQUFjLENBQUMsV0FBVyxDQUN4QixjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDdEMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2QsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ2xCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDOzs7Ozs7Ozs7Ozs7QUM5T0QseUQiLCJmaWxlIjoic3VydmV5LmFuYWx5dGljcy5kYXRhdGFibGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwic3VydmV5LWNvcmVcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJTdXJ2ZXlBbmFseXRpY3NEYXRhdGFibGVzXCIsIFtcInN1cnZleS1jb3JlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIlN1cnZleUFuYWx5dGljc0RhdGF0YWJsZXNcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJzdXJ2ZXktY29yZVwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiU3VydmV5QW5hbHl0aWNzRGF0YXRhYmxlc1wiXSA9IGZhY3Rvcnkocm9vdFtcIlN1cnZleVwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX3N1cnZleV9jb3JlX18pIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9lbnRyaWVzL2RhdGF0YWJsZXMudHNcIik7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IFwiPHN2ZyBzdHlsZT1cXFwiZGlzcGxheTpub25lO1xcXCI+PHN5bWJvbCB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGlkPVxcXCJzYS1zdmctZGV0YWlsXFxcIj48Y2lyY2xlIGN4PVxcXCIxLjVcXFwiIGN5PVxcXCI4LjVcXFwiIHI9XFxcIjEuNVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiNy41XFxcIiBjeT1cXFwiOC41XFxcIiByPVxcXCIxLjVcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEzLjVcXFwiIGN5PVxcXCI4LjVcXFwiIHI9XFxcIjEuNVxcXCI+PC9jaXJjbGU+PC9zeW1ib2w+PHN5bWJvbCB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGlkPVxcXCJzYS1zdmctZHJhZ1xcXCI+PHBhdGggZD1cXFwiTTEzIDVsLTEgMSAxIDFIOVYzbDEgMSAxLTEtMy0zLTMgMyAxIDEgMS0xdjRIM2wxLTEtMS0xLTMgMyAzIDMgMS0xLTEtMWg0djRsLTEtMS0xIDEgMyAzIDMtMy0xLTEtMSAxVjloNGwtMSAxIDEgMSAzLTN6XFxcIj48L3BhdGg+PC9zeW1ib2w+PHN5bWJvbCB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGlkPVxcXCJzYS1zdmctaGlkZVxcXCI+PHBhdGggZD1cXFwiTTEyLjc5IDQuMkwxNiAxbC0xLTEtMy4zMiAzLjMyQzEwLjU3IDIuNTUgOS4zMiAyIDggMiAzLjYzIDIgMCA3Ljk3IDAgNy45N3MxLjI3IDIuMSAzLjIxIDMuODJsLTMuMjMgMy4yMy45OC45OCAzLjM1LTMuMzRDNS40MSAxMy40NCA2LjY3IDE0IDggMTRjNC4zNyAwIDgtNiA4LTZzLTEuMjctMi4wOS0zLjIxLTMuOHpNMiA3Ljk3YzEuMDctMS40NyAzLjYxLTQgNi00IC44IDAgMS42LjI3IDIuMzUuNjhsLS43OC43OGMtLjQ2LS4yOS0uOTktLjQ2LTEuNTctLjQ2LTEuNjYgMC0zIDEuMzQtMyAzIDAgLjU4LjE3IDEuMTEuNDYgMS41N2wtLjk3Ljk3QTEzLjM4IDEzLjM4IDAgMCAxIDIgNy45N3ptNiA0Yy0uOCAwLTEuNTktLjI3LTIuMzMtLjY3bC43OC0uNzdjLjQ1LjI3Ljk4LjQ0IDEuNTUuNDQgMS42NiAwIDMtMS4zNCAzLTMgMC0uNTctLjE3LTEuMDktLjQ0LTEuNTVsLjk4LS45OGMxLjExLjg3IDIuMDEgMS45MSAyLjQ2IDIuNTItMS4wNyAxLjQ4LTMuNjEgNC4wMS02IDQuMDF6XFxcIj48L3BhdGg+PC9zeW1ib2w+PHN5bWJvbCB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGlkPVxcXCJzYS1zdmctbWFrZXByaXZhdGVcXFwiPjxjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI0XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNOCA4Yy0zLjMxIDAtNiAyLjczLTYgNC42N1M1LjI3IDE1IDggMTVzNi0uNCA2LTIuMzNTMTEuMzEgOCA4IDh6XFxcIj48L3BhdGg+PC9zeW1ib2w+PHN5bWJvbCB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGlkPVxcXCJzYS1zdmctbWFrZXB1YmxpY1xcXCI+PGNpcmNsZSBjeD1cXFwiNlxcXCIgY3k9XFxcIjVcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxwYXRoIGQ9XFxcIk0xMCA1YzAgLjM0LS4wNi42Ny0uMTQuOTkuMDUgMCAuMDkuMDEuMTQuMDEgMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTNDOC45NyAwIDguMDcuNTIgNy41MyAxLjMgOC45OCAxLjkxIDEwIDMuMzMgMTAgNXpNNiA5Yy0zLjMxIDAtNiAyLjczLTYgNC42N1MzLjI3IDE2IDYgMTZzNi0uNCA2LTIuMzNTOS4zMSA5IDYgOXpNMTAgN2MtLjE5IDAtLjM4LjAxLS41Ny4wM2E0LjE0IDQuMTQgMCAwIDEtMS4zNyAxLjM5YzMgLjgzIDUuMjMgMy4zMSA1LjQyIDUuMjggMS40NC0uMzEgMi41Mi0uOTIgMi41Mi0yLjAzQzE2IDkuNzQgMTMuMzEgNyAxMCA3elxcXCI+PC9wYXRoPjwvc3ltYm9sPjxzeW1ib2wgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBpZD1cXFwic2Etc3ZnLW1vdmV0b2RldGFpbHNcXFwiPjxjaXJjbGUgY3g9XFxcIjEuNVxcXCIgY3k9XFxcIjE0LjVcXFwiIHI9XFxcIjEuNVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiNy41XFxcIiBjeT1cXFwiMTQuNVxcXCIgcj1cXFwiMS41XFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxMy41XFxcIiBjeT1cXFwiMTQuNVxcXCIgcj1cXFwiMS41XFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNMTIgMWgzdjloLTN6TTIuMDIgNy4wMkwxIDYgMCA3bDMgMyAzLTMtMS0xLS45NC45NEM0LjMzIDQuNzMgNi4yMSAzIDguNSAzYy4xNyAwIC4zMy4wMy41LjA1VjEuMDNDOC44MyAxLjAxIDguNjcgMSA4LjUgMSA1LjA4IDEgMi4yNyAzLjY2IDIuMDIgNy4wMnpcXFwiPjwvcGF0aD48L3N5bWJvbD48c3ltYm9sIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgaWQ9XFxcInNhLXN2Zy1ub25jb21tZXJjaWFsXFxcIj48cGF0aCBkPVxcXCJNOCAwTDAgMTVoMTZMOCAwem0xIDEzSDd2LTJoMnYyem0tMi0zVjVoMnY1SDd6XFxcIj48L3BhdGg+PC9zeW1ib2w+PHN5bWJvbCB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGlkPVxcXCJzYS1zdmctc29ydGluZ1xcXCI+PHBhdGggZD1cXFwiTTggM2wyIDIgMS0xLTMtMy0zIDMgMSAxek04IDEzbC0yLTItMSAxIDMgMyAzLTMtMS0xelxcXCI+PC9wYXRoPjwvc3ltYm9sPjwvc3ZnPlwiOyIsIi8vIFRoaXMgZGljdGlvbmFyeSBjb250YWlucyAxIHVudHJhbnNsYXRlZCBvciBpbmhlcml0ZWQgbG9jYWxpemF0aW9uIHN0cmluZ3MuXG4vLyBUaGVzZSBzdHJpbmdzIGFyZSBjb21tZW50ZWQgb3V0LiBVbmNvbW1lbnQgYW5kIGVkaXQgdGhlbSBpZiB5b3Ugd2FudCB0byBhZGQgeW91ciB0cmFuc2xhdGlvbnMuXG5pbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIGFyYWJpY1N0cmluZ3MgPSB7XG4gIGdyb3VwQnV0dG9uOiBcItiy2LHYp9ixINin2YTZhdis2YXZiNi52KlcIixcbiAgdW5ncm91cEJ1dHRvbjogXCLYqtmFINin2YTYqtit2K/ZitirINmF2YYg2K7ZhNin2YTZiVwiLFxuICBzZWxlY3RCdXR0b246IFwi2KfYrtiq2LFcIixcbiAgaGlkZUNvbHVtbjogXCLYp9iu2YHYp9ihINin2YTYudmF2YjYr1wiLFxuICBzaG93Q29sdW1uOiBcItin2LjZh9in2LFcIixcbiAgbWFrZVByaXZhdGVDb2x1bW46IFwi2KPYrNi52YQg2KfZhNi52YXZiNivINiu2KfYtVwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcItij2KzYudmEINin2YTYudmF2YjYryDYudin2YVcIixcbiAgbW92ZVRvRGV0YWlsOiBcItin2YbYqtmC2YQg2KXZhNmJINin2YTYqtmB2KfYtdmK2YRcIixcbiAgc2hvd0FzQ29sdW1uOiBcItil2LjZh9in2LEg2YPYudmF2YjYr1wiLFxuICBmaWx0ZXJQbGFjZWhvbGRlcjogXCLYqNit2KsuLi5cIixcbiAgcmVtb3ZlUm93czogXCLYrdiw2YFcIixcbiAgc2hvd0xhYmVsOiBcItin2LjZh9in2LFcIixcbiAgZW50cmllc0xhYmVsOiBcItmF2K/YrtmE2KfYqlwiLFxuICB2aXN1YWxpemVyX3RleHQ6IFwi2KzYr9in2YjZhFwiLFxuICB2aXN1YWxpemVyX3dvcmRjbG91ZDogXCLZg9mE2YXYp9iqXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcItin2YTYsdiz2YUg2KfZhNio2YrYp9mG2YpcIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwi2YXYqtmI2LPYt1wiLFxuICB2aXN1YWxpemVyX2Nob2ljZXM6IFwi2KzYr9mI2YRcIixcbiAgdmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcItix2LPZhSDYqNmK2KfZhtmKXCIsXG4gIC8vIHZpc3VhbGl6ZXJfbWF0cml4OiBcIkNoYXJ0XCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwi2LTYsdmK2LdcIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwi2LTYsdmK2Lcg2LnZhdmI2K/ZilwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCLYtNix2YrYtyDZhdmD2K/Ys1wiLFxuICBjaGFydFR5cGVfZG91Z2hudXQ6IFwiRG91Z2hudXRcIixcbiAgY2hhcnRUeXBlX3BpZTogXCJQaWVcIixcbiAgY2hhcnRUeXBlX3NjYXR0ZXI6IFwiU2NhdHRlclwiLFxuICBjaGFydFR5cGVfZ2F1Z2U6IFwiR2F1Z2VcIixcbiAgY2hhcnRUeXBlX2J1bGxldDogXCJCdWxsZXRcIixcbiAgaGlkZUJ1dHRvbjogXCLYp9iu2YHYp9ihXCIsXG4gIG1ha2VQcml2YXRlQnV0dG9uOiBcItij2KzYudmEINiu2KfYtVwiLFxuICBtYWtlUHVibGljQnV0dG9uOiBcItij2KzYudmEINi52KfZhVwiLFxuICBzaG93QnV0dG9uOiBcItin2LjZh9in2LFcIixcbiAgZmlsdGVyOiBcItiq2LHYtNitXCIsXG4gIHJlc2V0RmlsdGVyOiBcItil2LnYp9iv2Kkg2KrYudmK2YrZhlwiLFxuICBjaGFuZ2VMb2NhbGU6IFwi2KrYutmK2YrYsSDYp9mE2YTYutipXCIsXG4gIGNsZWFyQnV0dG9uOiBcItmF2LPYrVwiLFxuICBhZGRFbGVtZW50OiBcItin2K7YqtixINiz2KTYp9mE2KfZiyDZhNmE2LnYsdi2IC4uLlwiLFxuICBkZWZhdWx0T3JkZXI6IFwi2KfZhNiq2LHYqtmK2Kgg2KfZhNin2YHYqtix2KfYttmKXCIsXG4gIGFzY09yZGVyOiBcItiq2LXYp9i52K/ZiVwiLFxuICBkZXNjT3JkZXI6IFwi2KrZhtin2LLZhNmJXCIsXG4gIHNob3dNaW5vckNvbHVtbnM6IFwi2KXYuNmH2KfYsSDYp9mE2KPYudmF2K/YqSDYp9mE2KvYp9mG2YjZitipXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcItio2YbZiNivINmI2KrYudmE2YrZgtin2Kog2KPYrtix2YlcIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcIti52LHYtiDYp9mE2YbYs9ioINin2YTZhdim2YjZitipXCIsXG4gIGhpZGVQZXJjZW50YWdlczogXCLYpdiu2YHYp9ihINin2YTZhtiz2KhcIixcbiAgcGRmRG93bmxvYWRDYXB0aW9uOiBcIlBERlwiLFxuICB4bHN4RG93bmxvYWRDYXB0aW9uOiBcIkV4Y2VsXCIsXG4gIGNzdkRvd25sb2FkQ2FwdGlvbjogXCJDU1ZcIixcbiAgc2F2ZURpYWdyYW1Bc1BORzogXCLYqtmG2LLZitmEINio2LXZiti62KkgcG5nXCIsXG4gIGhpZGVFbXB0eUFuc3dlcnM6IFwi2KXYrtmB2KfYoSDYp9mE2KXYrNin2KjYp9iqINin2YTZgdin2LHYutipXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwi2KXYuNmH2KfYsSDYp9mE2KXYrNin2KjYp9iqINin2YTZgdin2LHYutipXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwi2KzZhdmK2Lkg2KfZhNil2KzYp9io2KfYqlwiLFxuICB0b3BOVmFsdWVUZXh0NTogXCLYo9mH2YUgNSDYpdis2KfYqNin2KpcIixcbiAgdG9wTlZhbHVlVGV4dDEwOiBcItij2YHYttmEIDEwINil2KzYp9io2KfYqlwiLFxuICB0b3BOVmFsdWVUZXh0MjA6IFwi2KPZgdi22YQgMjAg2KXYrNin2KjYqVwiLFxuICBoaWRlTWlzc2luZ0Fuc3dlcnM6IFwi2KXYrtmB2KfYoSDYp9mE2KXYrNin2KjYp9iqINin2YTZhdmB2YLZiNiv2KlcIixcbiAgc2hvd01pc3NpbmdBbnN3ZXJzOiBcIti52LHYtiDYp9mE2KXYrNin2KjYp9iqINin2YTZhdmB2YLZiNiv2KlcIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCLYo9is2YjYqNipINmF2YHZgtmI2K/YqVwiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCLZhNmFINmK2KrZhSDYp9mE2LnYsdi2INio2LnYr1wiLFxuICBub1Jlc3VsdHM6IFwi2YTYpyDZitmI2KzYryDZhtiq2KfYptisINmE2YTYudix2LZcIixcbiAgc2hvd1BlclZhbHVlczogXCLZhNmD2YQg2KfZhNmC2YrZhVwiLFxuICBzaG93UGVyQ29sdW1uczogXCLZhNmD2YQg2KfZhNij2LnZhdiv2KlcIixcbiAgYW5zd2VyOiBcItil2KzYqFwiLFxuICBjb3JyZWN0QW5zd2VyOiBcItin2YTYp9is2KfYqNipINin2YTYtdit2YrYrdipOiBcIixcbiAgcGVyY2VudDogXCLYp9mE2YbYs9io2Ycg2KfZhNmF2KbZiNmK2YdcIixcbiAgcmVzcG9uc2VzOiBcItin2YTYp9iz2KrYrNin2KjYp9iqXCJcbn07XG5cbmxvY2FsaXphdGlvbi5sb2NhbGVzW1wiYXJcIl0gPSBhcmFiaWNTdHJpbmdzO1xubG9jYWxpemF0aW9uLmxvY2FsZU5hbWVzW1wiYXJcIl0gPSBcItin2YTYudix2KjZitipXCI7XG5cbi8vIFRoZSBmb2xsb3dpbmcgc3RyaW5ncyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBieSBhIG1hY2hpbmUgdHJhbnNsYXRpb24gc2VydmljZVxuLy8gUmVtb3ZlIHRob3NlIHN0cmluZ3MgdGhhdCB5b3UgaGF2ZSBjb3JyZWN0ZWQgbWFudWFsbHlcbi8vIHVuZGVmaW5lZC50b3BOVmFsdWVUZXh0LTE6IFwiQWxsIGFuc3dlcnNcIiA9PiBcItis2YXZiti5INin2YTYpdis2KfYqNin2KpcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQ1OiBcIlRvcCA1IGFuc3dlcnNcIiA9PiBcItij2YfZhSA1INil2KzYp9io2KfYqlwiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dDEwOiBcIlRvcCAxMCBhbnN3ZXJzXCIgPT4gXCLYo9mB2LbZhCAxMCDYpdis2KfYqNin2KpcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQyMDogXCJUb3AgMjAgYW5zd2Vyc1wiID0+IFwi2KPZgdi22YQgMjAg2KXYrNin2KjYqVwiIiwiLy8gVGhpcyBkaWN0aW9uYXJ5IGNvbnRhaW5zIDEgdW50cmFuc2xhdGVkIG9yIGluaGVyaXRlZCBsb2NhbGl6YXRpb24gc3RyaW5ncy5cbi8vIFRoZXNlIHN0cmluZ3MgYXJlIGNvbW1lbnRlZCBvdXQuIFVuY29tbWVudCBhbmQgZWRpdCB0aGVtIGlmIHlvdSB3YW50IHRvIGFkZCB5b3VyIHRyYW5zbGF0aW9ucy5cbmltcG9ydCB7IGxvY2FsaXphdGlvbiB9IGZyb20gXCIuLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbmV4cG9ydCB2YXIgZHV0Y2hTdHJpbmdzID0ge1xuICBncm91cEJ1dHRvbjogXCJHcm9lcCBkb29yIG1palwiLFxuICB1bmdyb3VwQnV0dG9uOiBcIkRlZ3JvZXBlcmVuIGJpaiBtaWpcIixcbiAgc2VsZWN0QnV0dG9uOiBcIlNlbGVjdGVlciBtaWpcIixcbiAgaGlkZUNvbHVtbjogXCJLb2xvbSB2ZXJiZXJnZW5cIixcbiAgc2hvd0NvbHVtbjogXCJUb29uIGtvbG9tXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcIktvbG9tIHByaXbDqSBtYWtlblwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcIk1hYWsgZGUga29sb20gb3BlbmJhYXJcIixcbiAgbW92ZVRvRGV0YWlsOiBcIkdhIG5hYXIgRGV0YWlsXCIsXG4gIHNob3dBc0NvbHVtbjogXCJXZWVyZ2V2ZW4gYWxzIGtvbG9tXCIsXG4gIGZpbHRlclBsYWNlaG9sZGVyOiBcIlpvZWtlbi4uLlwiLFxuICByZW1vdmVSb3dzOiBcIlZlcndpamRlciByaWplblwiLFxuICBzaG93TGFiZWw6IFwiVG9uZW5cIixcbiAgZW50cmllc0xhYmVsOiBcImluemVuZGluZ2VuXCIsXG4gIHZpc3VhbGl6ZXJfdGV4dDogXCJUZWtzdGVuIGluIHRhYmVsXCIsXG4gIHZpc3VhbGl6ZXJfd29yZGNsb3VkOiBcIldvcmRjbG91ZFwiLFxuICB2aXN1YWxpemVyX2hpc3RvZ3JhbTogXCJIaXN0b2dyYW1cIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwiR2VtaWRkZWxkXCIsXG4gIHZpc3VhbGl6ZXJfY2hvaWNlczogXCJUYWZlbFwiLFxuICB2aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwiWmVla2FhcnRcIixcbiAgLy8gdmlzdWFsaXplcl9tYXRyaXg6IFwiQ2hhcnRcIixcbiAgY2hhcnRUeXBlX2JhcjogXCJCYXJcIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwiVmVydGljYWxlIGJhbGtcIixcbiAgY2hhcnRUeXBlX3N0YWNrZWRiYXI6IFwiR2VzdGFwZWxkZSBCYXJcIixcbiAgY2hhcnRUeXBlX2RvdWdobnV0OiBcIkRvbnV0XCIsXG4gIGNoYXJ0VHlwZV9waWU6IFwiVGFhcnRcIixcbiAgY2hhcnRUeXBlX3NjYXR0ZXI6IFwiVmVyc3Ryb29pZW5cIixcbiAgY2hhcnRUeXBlX2dhdWdlOiBcIk1ldGVyXCIsXG4gIGNoYXJ0VHlwZV9idWxsZXQ6IFwiS29nZWxcIixcbiAgaGlkZUJ1dHRvbjogXCJWZXJiZXJnZW5cIixcbiAgbWFrZVByaXZhdGVCdXR0b246IFwiTWFhayBwcml2ZVwiLFxuICBtYWtlUHVibGljQnV0dG9uOiBcIk9wZW5iYWFyIG1ha2VuXCIsXG4gIHNob3dCdXR0b246IFwiVG9uZW5cIixcbiAgZmlsdGVyOiBcIkZpbHRlclwiLFxuICByZXNldEZpbHRlcjogXCJGaWx0ZXIgcmVzZXR0ZW5cIixcbiAgY2hhbmdlTG9jYWxlOiBcIldpanppZyBkZSBsYW5kaW5zdGVsbGluZ1wiLFxuICBjbGVhckJ1dHRvbjogXCJEb29yemljaHRpZ1wiLFxuICBhZGRFbGVtZW50OiBcIktpZXMgZWVuIHZyYWFnIG9tIHdlZXIgdGUgZ2V2ZW4gLi4uXCIsXG4gIGRlZmF1bHRPcmRlcjogXCJTdGFuZGFhcmR2b2xnb3JkZVwiLFxuICBhc2NPcmRlcjogXCJPcGxvcGVuZFwiLFxuICBkZXNjT3JkZXI6IFwiQWZsb3BlbmRcIixcbiAgc2hvd01pbm9yQ29sdW1uczogXCJUb29uIGtsZWluZSBrb2xvbW1lblwiLFxuICBvdGhlckNvbW1lbnRUaXRsZTogXCJBbmRlcmUgaXRlbXMgZW4gb3BtZXJraW5nZW5cIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcIlBlcmNlbnRhZ2VzIHdlZXJnZXZlblwiLFxuICBoaWRlUGVyY2VudGFnZXM6IFwiVmVyYmVyZyBwZXJjZW50YWdlc1wiLFxuICBwZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNTVlwiLFxuICBzYXZlRGlhZ3JhbUFzUE5HOiBcIkRvd25sb2FkIHBsb3QgYWxzIGVlbiBwbmdcIixcbiAgaGlkZUVtcHR5QW5zd2VyczogXCJWZXJiZXJnIGxlZ2UgYW50d29vcmRlblwiLFxuICBzaG93RW1wdHlBbnN3ZXJzOiBcIlRvb24gbGVnZSBhbnR3b29yZGVuXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwiQWxsZSBhbnR3b29yZGVuXCIsXG4gIHRvcE5WYWx1ZVRleHQ1OiBcIlRvcCA1IGFudHdvb3JkZW5cIixcbiAgdG9wTlZhbHVlVGV4dDEwOiBcIlRvcCAxMCBhbnR3b29yZGVuXCIsXG4gIHRvcE5WYWx1ZVRleHQyMDogXCJUb3AgMjAgYW50d29vcmRlblwiLFxuICBoaWRlTWlzc2luZ0Fuc3dlcnM6IFwiT250YnJla2VuZGUgYW50d29vcmRlbiB2ZXJiZXJnZW5cIixcbiAgc2hvd01pc3NpbmdBbnN3ZXJzOiBcIk9udGJyZWtlbmRlIGFudHdvb3JkZW4gd2VlcmdldmVuXCIsXG4gIG1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwiT250YnJla2VuZGUgYW50d29vcmRlblwiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCJEaXQgdnJhYWd0eXBlIGlzIG5vZyBuaWV0IGdldmlzdWFsaXNlZXJkXCIsXG4gIG5vUmVzdWx0czogXCJFciB6aWpuIG5vZyBnZWVuIHJlc3VsdGF0ZW5cIixcbiAgc2hvd1BlclZhbHVlczogXCJQZXIgd2FhcmRlblwiLFxuICBzaG93UGVyQ29sdW1uczogXCJQZXIgS29sb21tZW5cIixcbiAgYW5zd2VyOiBcIkFudHdvb3JkZW5cIixcbiAgY29ycmVjdEFuc3dlcjogXCJHb2VkIGFudHdvb3JkOiBcIixcbiAgcGVyY2VudDogXCJQcm9jZW50XCIsXG4gIHJlc3BvbnNlczogXCJSZWFjdGllc1wiXG59O1xuXG4vL1VuY29tbWVudCB0aGVzZSB0d28gbGluZXMgb24gY3JlYXRpbmcgYSB0cmFuc2xhdGlvbiBmaWxlLiBZb3Ugc2hvdWxkIHJlcGxhY2UgXCJlblwiIGFuZCBlblN0cmluZ3Mgd2l0aCB5b3VyIGxvY2FsZSAoXCJmclwiLCBcImRlXCIgYW5kIHNvIG9uKSBhbmQgeW91ciB2YXJpYWJsZS5cbmxvY2FsaXphdGlvbi5sb2NhbGVzW1wibmxcIl0gPSBkdXRjaFN0cmluZ3M7XG5sb2NhbGl6YXRpb24ubG9jYWxlTmFtZXNbXCJubFwiXSA9IFwiTmVkZXJsYW5kc1wiO1xuXG4vLyBUaGUgZm9sbG93aW5nIHN0cmluZ3MgaGF2ZSBiZWVuIHRyYW5zbGF0ZWQgYnkgYSBtYWNoaW5lIHRyYW5zbGF0aW9uIHNlcnZpY2Vcbi8vIFJlbW92ZSB0aG9zZSBzdHJpbmdzIHRoYXQgeW91IGhhdmUgY29ycmVjdGVkIG1hbnVhbGx5XG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9oaXN0b2dyYW06IFwiSGlzdG9ncmFtXCIgPT4gXCJIaXN0b2dyYW1cIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfbnVtYmVyOiBcIkF2ZXJhZ2VcIiA9PiBcIkdlbWlkZGVsZFwiXG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9jaG9pY2VzOiBcIlRhYmxlXCIgPT4gXCJUYWZlbFwiXG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcIkNoYXJ0XCIgPT4gXCJaZWVrYWFydFwiXG4vLyB1bmRlZmluZWQuY2hhcnRUeXBlX3ZiYXI6IFwiVmVydGljYWwgQmFyXCIgPT4gXCJWZXJ0aWNhbGUgYmFsa1wiXG4vLyB1bmRlZmluZWQuZmlsdGVyOiBcIkZpbHRlclwiID0+IFwiRmlsdGVyXCJcbi8vIHVuZGVmaW5lZC5oaWRlTWlzc2luZ0Fuc3dlcnM6IFwiSGlkZSBtaXNzaW5nIGFuc3dlcnNcIiA9PiBcIk9udGJyZWtlbmRlIGFudHdvb3JkZW4gdmVyYmVyZ2VuXCJcbi8vIHVuZGVmaW5lZC5zaG93TWlzc2luZ0Fuc3dlcnM6IFwiU2hvdyBtaXNzaW5nIGFuc3dlcnNcIiA9PiBcIk9udGJyZWtlbmRlIGFudHdvb3JkZW4gd2VlcmdldmVuXCJcbi8vIHVuZGVmaW5lZC5taXNzaW5nQW5zd2Vyc0xhYmVsOiBcIk1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiT250YnJla2VuZGUgYW50d29vcmRlblwiXG4vLyB1bmRlZmluZWQubm9WaXN1YWxpemVyRm9yUXVlc3Rpb246IFwiVGhpcyBxdWVzdGlvbiB0eXBlIGlzIG5vdCB2aXN1YWxpemVkIHlldFwiID0+IFwiRGl0IHZyYWFndHlwZSBpcyBub2cgbmlldCBnZXZpc3VhbGlzZWVyZFwiXG4vLyB1bmRlZmluZWQubm9SZXN1bHRzOiBcIlRoZXJlIGFyZSBubyByZXN1bHRzIHlldFwiID0+IFwiRXIgemlqbiBub2cgZ2VlbiByZXN1bHRhdGVuXCJcbi8vIHVuZGVmaW5lZC5zaG93UGVyVmFsdWVzOiBcIlBlciBWYWx1ZXNcIiA9PiBcIlBlciB3YWFyZGVuXCJcbi8vIHVuZGVmaW5lZC5zaG93UGVyQ29sdW1uczogXCJQZXIgQ29sdW1uc1wiID0+IFwiUGVyIEtvbG9tbWVuXCJcbi8vIHVuZGVmaW5lZC5hbnN3ZXI6IFwiQW5zd2VyXCIgPT4gXCJBbnR3b29yZGVuXCJcbi8vIHVuZGVmaW5lZC5jb3JyZWN0QW5zd2VyOiBcIkNvcnJlY3QgYW5zd2VyOiBcIiA9PiBcIkdvZWQgYW50d29vcmQ6IFwiXG4vLyB1bmRlZmluZWQucGVyY2VudDogXCJQZXJjZW50XCIgPT4gXCJQcm9jZW50XCJcbi8vIHVuZGVmaW5lZC5yZXNwb25zZXM6IFwiUmVzcG9uc2VzXCIgPT4gXCJSZWFjdGllc1wiIiwiLy8gVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IGlmIHlvdSBjcmVhdGUgYSBjdXN0b20gZGljdGlvbmFyeVxuLy8gaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcblxuZXhwb3J0IHZhciBlbmdsaXNoU3RyaW5ncyA9IHtcbiAgZ3JvdXBCdXR0b246IFwiR3JvdXAgQnkgTWVcIixcbiAgdW5ncm91cEJ1dHRvbjogXCJVbmdyb3VwIEJ5IE1lXCIsXG4gIHNlbGVjdEJ1dHRvbjogXCJTZWxlY3QgTWVcIixcbiAgaGlkZUNvbHVtbjogXCJIaWRlIGNvbHVtblwiLFxuICBzaG93Q29sdW1uOiBcIlNob3cgY29sdW1uXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcIk1ha2UgY29sdW1uIHByaXZhdGVcIixcbiAgbWFrZVB1YmxpY0NvbHVtbjogXCJNYWtlIGNvbHVtbiBwdWJsaWNcIixcbiAgbW92ZVRvRGV0YWlsOiBcIk1vdmUgdG8gRGV0YWlsXCIsXG4gIHNob3dBc0NvbHVtbjogXCJTaG93IGFzIENvbHVtblwiLFxuICBmaWx0ZXJQbGFjZWhvbGRlcjogXCJTZWFyY2guLi5cIixcbiAgcmVtb3ZlUm93czogXCJSZW1vdmUgcm93c1wiLFxuICBzaG93TGFiZWw6IFwiU2hvd1wiLFxuICBlbnRyaWVzTGFiZWw6IFwiZW50cmllc1wiLFxuICB2aXN1YWxpemVyX3RleHQ6IFwiVGV4dHMgaW4gdGFibGVcIixcbiAgdmlzdWFsaXplcl93b3JkY2xvdWQ6IFwiV29yZGNsb3VkXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbVwiLFxuICB2aXN1YWxpemVyX251bWJlcjogXCJBdmVyYWdlXCIsXG4gIHZpc3VhbGl6ZXJfY2hvaWNlczogXCJUYWJsZVwiLFxuICB2aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwiQ2hhcnRcIixcbiAgdmlzdWFsaXplcl9tYXRyaXg6IFwiQ2hhcnRcIixcbiAgY2hhcnRUeXBlX2JhcjogXCJCYXJcIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwiVmVydGljYWwgQmFyXCIsXG4gIGNoYXJ0VHlwZV9zdGFja2VkYmFyOiBcIlN0YWNrZWQgQmFyXCIsXG4gIGNoYXJ0VHlwZV9kb3VnaG51dDogXCJEb3VnaG51dFwiLFxuICBjaGFydFR5cGVfcGllOiBcIlBpZVwiLFxuICBjaGFydFR5cGVfc2NhdHRlcjogXCJTY2F0dGVyXCIsXG4gIGNoYXJ0VHlwZV9nYXVnZTogXCJHYXVnZVwiLFxuICBjaGFydFR5cGVfYnVsbGV0OiBcIkJ1bGxldFwiLFxuICBoaWRlQnV0dG9uOiBcIkhpZGVcIixcbiAgbWFrZVByaXZhdGVCdXR0b246IFwiTWFrZSBwcml2YXRlXCIsXG4gIG1ha2VQdWJsaWNCdXR0b246IFwiTWFrZSBwdWJsaWNcIixcbiAgc2hvd0J1dHRvbjogXCJTaG93XCIsXG4gIGZpbHRlcjogXCJGaWx0ZXJcIixcbiAgcmVzZXRGaWx0ZXI6IFwiUmVzZXQgRmlsdGVyXCIsXG4gIGNoYW5nZUxvY2FsZTogXCJDaGFuZ2UgTG9jYWxlXCIsXG4gIGNsZWFyQnV0dG9uOiBcIkNsZWFyXCIsXG4gIGFkZEVsZW1lbnQ6IFwiQ2hvb3NlIHF1ZXN0aW9uIHRvIHNob3cuLi5cIixcbiAgZGVmYXVsdE9yZGVyOiBcIkRlZmF1bHQgT3JkZXJcIixcbiAgYXNjT3JkZXI6IFwiQXNjZW5kaW5nXCIsXG4gIGRlc2NPcmRlcjogXCJEZXNjZW5kaW5nXCIsXG4gIHNob3dNaW5vckNvbHVtbnM6IFwiU2hvdyBtaW5vciBjb2x1bW5zXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcIk90aGVyIGl0ZW1zIGFuZCBjb21tZW50c1wiLFxuICBzaG93UGVyY2VudGFnZXM6IFwiU2hvdyBwZXJjZW50YWdlc1wiLFxuICBoaWRlUGVyY2VudGFnZXM6IFwiSGlkZSBwZXJjZW50YWdlc1wiLFxuICBwZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNTVlwiLFxuICBzYXZlRGlhZ3JhbUFzUE5HOiBcIkRvd25sb2FkIHBsb3QgYXMgYSBQTkcgZmlsZVwiLFxuICBoaWRlRW1wdHlBbnN3ZXJzOiBcIkhpZGUgZW1wdHkgYW5zd2Vyc1wiLFxuICBzaG93RW1wdHlBbnN3ZXJzOiBcIlNob3cgZW1wdHkgYW5zd2Vyc1wiLFxuICBcInRvcE5WYWx1ZVRleHQtMVwiOiBcIkFsbCBhbnN3ZXJzXCIsXG4gIFwidG9wTlZhbHVlVGV4dDVcIjogXCJUb3AgNSBhbnN3ZXJzXCIsXG4gIFwidG9wTlZhbHVlVGV4dDEwXCI6IFwiVG9wIDEwIGFuc3dlcnNcIixcbiAgXCJ0b3BOVmFsdWVUZXh0MjBcIjogXCJUb3AgMjAgYW5zd2Vyc1wiLFxuICBoaWRlTWlzc2luZ0Fuc3dlcnM6IFwiSGlkZSBtaXNzaW5nIGFuc3dlcnNcIixcbiAgc2hvd01pc3NpbmdBbnN3ZXJzOiBcIlNob3cgbWlzc2luZyBhbnN3ZXJzXCIsXG4gIG1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwiTWlzc2luZyBhbnN3ZXJzXCIsXG4gIG5vVmlzdWFsaXplckZvclF1ZXN0aW9uOiBcIlRoaXMgcXVlc3Rpb24gdHlwZSBpcyBub3QgdmlzdWFsaXplZCB5ZXRcIixcbiAgbm9SZXN1bHRzOiBcIlRoZXJlIGFyZSBubyByZXN1bHRzIHlldFwiLFxuICBzaG93UGVyVmFsdWVzOiBcIlBlciBWYWx1ZXNcIixcbiAgc2hvd1BlckNvbHVtbnM6IFwiUGVyIENvbHVtbnNcIixcbiAgYW5zd2VyOiBcIkFuc3dlclwiLFxuICBjb3JyZWN0QW5zd2VyOiBcIkNvcnJlY3QgYW5zd2VyOiBcIixcbiAgcGVyY2VudDogXCJQZXJjZW50XCIsXG4gIHJlc3BvbnNlczogXCJSZXNwb25zZXNcIlxufTtcblxuLy8gVW5jb21tZW50IHRoZSBsaW5lcyBiZWxvdyBpZiB5b3UgY3JlYXRlIGEgY3VzdG9tIGRpY3Rpb25hcnkuXG4vLyBSZXBsYWNlIFwiZW5cIiB3aXRoIGEgY3VzdG9tIGxvY2FsZSBjb2RlIChmb3IgZXhhbXBsZSwgXCJmclwiIG9yIFwiZGVcIiksXG4vLyBSZXBsYWNlIGBlbmdsaXNoU3RyaW5nc2Agd2l0aCB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdGhhdCBjb250YWlucyB0aGUgY3VzdG9tIGRpY3Rpb25hcnkuXG4vLyBsb2NhbGl6YXRpb24ubG9jYWxlc1tcImVuXCJdID0gZW5nbGlzaFN0cmluZ3M7XG4vLyBsb2NhbGl6YXRpb24ubG9jYWxlTmFtZXNbXCJlblwiXSA9IFwiRW5nbGlzaFwiO1xuIiwiLy8gVGhpcyBkaWN0aW9uYXJ5IGNvbnRhaW5zIDEgdW50cmFuc2xhdGVkIG9yIGluaGVyaXRlZCBsb2NhbGl6YXRpb24gc3RyaW5ncy5cbi8vIFRoZXNlIHN0cmluZ3MgYXJlIGNvbW1lbnRlZCBvdXQuIFVuY29tbWVudCBhbmQgZWRpdCB0aGVtIGlmIHlvdSB3YW50IHRvIGFkZCB5b3VyIHRyYW5zbGF0aW9ucy5cbmltcG9ydCB7IGxvY2FsaXphdGlvbiB9IGZyb20gXCIuLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbmV4cG9ydCB2YXIgZmFyc2lTdHJpbmdzID0ge1xuICBncm91cEJ1dHRvbjogXCLar9ix2YjZhyDYqNmG2K/bjCDYqNinXCIsXG4gIHVuZ3JvdXBCdXR0b246IFwi2K3YsNmBINqv2LHZiNmHXCIsXG4gIHNlbGVjdEJ1dHRvbjogXCLYp9mG2KrYrtin2KhcIixcbiAgaGlkZUNvbHVtbjogXCLZhdiu2YHbjCDaqdix2K/ZhiDYs9iq2YjZhlwiLFxuICBzaG93Q29sdW1uOiBcItmG2YXYp9uM2LQg2LPYqtmI2YZcIixcbiAgbWFrZVByaXZhdGVDb2x1bW46IFwi2K7YtdmI2LXbjCDaqdix2K/ZhiDYs9iq2YjZhlwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcIti52YXZiNmF24wg2qnYsdiv2YYg2LPYqtmI2YZcIixcbiAgbW92ZVRvRGV0YWlsOiBcItin2YbYqtmC2KfZhCDYqNmHINis2LLYptuM2KfYqlwiLFxuICBzaG93QXNDb2x1bW46IFwi2YbZhdin24zYtCDYqNmHINi52YbZiNin2YYg2LPYqtmI2YZcIixcbiAgZmlsdGVyUGxhY2Vob2xkZXI6IFwi2KzYs9iq2KzZiC4uLlwiLFxuICByZW1vdmVSb3dzOiBcItit2LDZgSDYs9i32LHZh9inXCIsXG4gIHNob3dMYWJlbDogXCLZhtmF2KfbjNi0XCIsXG4gIGVudHJpZXNMYWJlbDogXCLZiNix2YjYr9uMXCIsXG4gIHZpc3VhbGl6ZXJfdGV4dDogXCLZhdiq2YjZhiDYr9ixINis2K/ZiNmEXCIsXG4gIHZpc3VhbGl6ZXJfd29yZGNsb3VkOiBcItin2KjYsSDaqdmE2YXYp9iqXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcItmH24zYs9iq2Yjar9ix2KfZhVwiLFxuICB2aXN1YWxpemVyX251bWJlcjogXCLZhdiq2YjYs9i3XCIsXG4gIHZpc3VhbGl6ZXJfY2hvaWNlczogXCLYrNiv2YjZhFwiLFxuICB2aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwi2YbZhdmI2K/Yp9ixXCIsXG4gIC8vIHZpc3VhbGl6ZXJfbWF0cml4OiBcIkNoYXJ0XCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwi2YXbjNmE2Ycg2KfbjFwiLFxuICBjaGFydFR5cGVfdmJhcjogXCLZhtmI2KfYsSDYudmF2YjYr9uMXCIsXG4gIGNoYXJ0VHlwZV9zdGFja2VkYmFyOiBcItmG2YjYp9ixINm+2LTYqtmHXCIsXG4gIGNoYXJ0VHlwZV9kb3VnaG51dDogXCLYr9mI2YbYp9iqXCIsXG4gIGNoYXJ0VHlwZV9waWU6IFwi2K/Yp9io2LHZhyDYp9uMKHBpZSlcIixcbiAgY2hhcnRUeXBlX3NjYXR0ZXI6IFwi2b7Ysdin2qnZhtiv2q/bjChTY2F0dGVyKVwiLFxuICBjaGFydFR5cGVfZ2F1Z2U6IFwi2LnZgtix2KjZhyDYp9uMXCIsXG4gIGNoYXJ0VHlwZV9idWxsZXQ6IFwiQnVsbGV0XCIsXG4gIGhpZGVCdXR0b246IFwi2YXYrtmB24xcIixcbiAgbWFrZVByaXZhdGVCdXR0b246IFwi2K7YtdmI2LXbjCDaqdix2K/ZhlwiLFxuICBtYWtlUHVibGljQnV0dG9uOiBcIti52YXZiNmF24wg2qnYsdiv2YZcIixcbiAgc2hvd0J1dHRvbjogXCLZhtmF2KfbjNi0XCIsXG4gIGZpbHRlcjogXCLZgduM2YTYqtixXCIsXG4gIHJlc2V0RmlsdGVyOiBcItio2KfYstmG2LTYp9mG24wg2YHbjNmE2KrYsdmH2KdcIixcbiAgY2hhbmdlTG9jYWxlOiBcItiq2LrbjNuM2LEg2YXYrdmE24xcIixcbiAgY2xlYXJCdXR0b246IFwi2b7Yp9qpINqp2LHYr9mGXCIsXG4gIGFkZEVsZW1lbnQ6IFwi2KfZhtiq2K7Yp9ioINiz2YjYp9mEINio2LHYp9uMINmG2YXYp9uM2LQuLi5cIixcbiAgZGVmYXVsdE9yZGVyOiBcItiq2LHYqtuM2Kgg2b7bjNi02YHYsdi2XCIsXG4gIGFzY09yZGVyOiBcIti12LnZiNiv24xcIixcbiAgZGVzY09yZGVyOiBcItmG2LLZiNmE24xcIixcbiAgc2hvd01pbm9yQ29sdW1uczogXCLZhtmF2KfbjNi0INiz2KrZiNmG2YfYp9uMINmB2LHYuduMXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcItiz2KfbjNixINmF2YjYp9ix2K8g2Ygg2YbYuNix2KfYqlwiLFxuICBzaG93UGVyY2VudGFnZXM6IFwi2YbZhdin24zYtCDYr9ix2LXYr1wiLFxuICBoaWRlUGVyY2VudGFnZXM6IFwi2K/Ysdi12K/Zh9in24wg2YXYrtmB24xcIixcbiAgcGRmRG93bmxvYWRDYXB0aW9uOiBcItm+24wg2K/bjCDYp9mBXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwi2Kfaqdiz2YRcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNzdlwiLFxuICBzYXZlRGlhZ3JhbUFzUE5HOiBcItiv2KfZhtmE2YjYryDYt9ix2K0g2KjZhyDYudmG2YjYp9mGINuM2qkg2YHYp9uM2YQgUE5HXCIsXG4gIGhpZGVFbXB0eUFuc3dlcnM6IFwi2YXYrtmB24wg2qnYsdiv2YYg2b7Yp9iz2K7Zh9in24wg2K7Yp9mE24xcIixcbiAgc2hvd0VtcHR5QW5zd2VyczogXCLZhtmF2KfbjNi0INm+2KfYs9iu2YfYp9uMINiu2KfZhNuMXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwi2YfZhdmHINm+2KfYs9iuINmH2KdcIixcbiAgdG9wTlZhbHVlVGV4dDU6IFwiNSDZvtin2LPYriDYqNix2KrYsVwiLFxuICB0b3BOVmFsdWVUZXh0MTA6IFwiMTAg2b7Yp9iz2K4g2KjYsdiq2LFcIixcbiAgdG9wTlZhbHVlVGV4dDIwOiBcIjIwINm+2KfYs9iuINio2LHYqtixXCIsXG4gIGhpZGVNaXNzaW5nQW5zd2VyczogXCLZhdiu2YHbjCDaqdix2K/ZhiDZvtin2LPYrtmH2KfbjCDar9mF2LTYr9mHXCIsXG4gIHNob3dNaXNzaW5nQW5zd2VyczogXCLZhtmF2KfbjNi0INm+2KfYs9iu2YfYp9uMINqv2YXYtNiv2YdcIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCLZvtin2LPYriDZh9in24wg2q/Zhdi02K/Zh1wiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCLYp9uM2YYg2YbZiNi5INiz2YjYp9mEINmH2YbZiNiyINiq2KzYs9mFINmG2LTYr9mHINin2LPYqlwiLFxuICBub1Jlc3VsdHM6IFwi2YfZhtmI2LIg2YbYqtuM2KzZhyDYp9uMINit2KfYtdmEINmG2LTYr9mHINin2LPYqlwiLFxuICBzaG93UGVyVmFsdWVzOiBcItio2Ycg2KfYstin24wg2YfYsSDYp9ix2LLYtFwiLFxuICBzaG93UGVyQ29sdW1uczogXCLYr9ixINmH2LEg2LPYqtmI2YZcIixcbiAgYW5zd2VyOiBcItm+2KfYs9iuXCIsXG4gIGNvcnJlY3RBbnN3ZXI6IFwi2b7Yp9iz2K4g2LXYrduM2K06IFwiLFxuICBwZXJjZW50OiBcItiv2LHYtdivXCIsXG4gIHJlc3BvbnNlczogXCLZvtin2LPYrlwiXG59O1xuXG5sb2NhbGl6YXRpb24ubG9jYWxlc1tcImZhXCJdID0gZmFyc2lTdHJpbmdzO1xubG9jYWxpemF0aW9uLmxvY2FsZU5hbWVzW1wiZmFcIl0gPSBcItmB2KfYsdiz24xcIjtcblxuLy8gVGhlIGZvbGxvd2luZyBzdHJpbmdzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIGJ5IGEgbWFjaGluZSB0cmFuc2xhdGlvbiBzZXJ2aWNlXG4vLyBSZW1vdmUgdGhvc2Ugc3RyaW5ncyB0aGF0IHlvdSBoYXZlIGNvcnJlY3RlZCBtYW51YWxseVxuLy8gdW5kZWZpbmVkLm1ha2VQcml2YXRlQ29sdW1uOiBcIk1ha2UgY29sdW1uIHByaXZhdGVcIiA9PiBcItiu2LXZiNi124wg2qnYsdiv2YYg2LPYqtmI2YZcIlxuLy8gdW5kZWZpbmVkLm1ha2VQdWJsaWNDb2x1bW46IFwiTWFrZSBjb2x1bW4gcHVibGljXCIgPT4gXCLYudmF2YjZhduMINqp2LHYr9mGINiz2KrZiNmGXCJcbi8vIHVuZGVmaW5lZC5maWx0ZXJQbGFjZWhvbGRlcjogXCJTZWFyY2guLi5cIiA9PiBcItis2LPYqtis2YguLi5cIlxuLy8gdW5kZWZpbmVkLnJlbW92ZVJvd3M6IFwiUmVtb3ZlIHJvd3NcIiA9PiBcItit2LDZgSDYs9i32LHZh9inXCJcbi8vIHVuZGVmaW5lZC5zaG93TGFiZWw6IFwiU2hvd1wiID0+IFwi2YbZhdin24zYtFwiXG4vLyB1bmRlZmluZWQuZW50cmllc0xhYmVsOiBcImVudHJpZXNcIiA9PiBcItmI2LHZiNiv24xcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbVwiID0+IFwi2YfbjNiz2KrZiNqv2LHYp9mFXCJcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX251bWJlcjogXCJBdmVyYWdlXCIgPT4gXCLZhdiq2YjYs9i3XCJcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX2Nob2ljZXM6IFwiVGFibGVcIiA9PiBcItis2K/ZiNmEXCJcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwiQ2hhcnRcIiA9PiBcItmG2YXZiNiv2KfYsVwiXG4vLyB1bmRlZmluZWQuY2hhcnRUeXBlX3ZiYXI6IFwiVmVydGljYWwgQmFyXCIgPT4gXCLZhtmI2KfYsSDYudmF2YjYr9uMXCJcbi8vIHVuZGVmaW5lZC5jaGFydFR5cGVfc3RhY2tlZGJhcjogXCJTdGFja2VkIEJhclwiID0+IFwi2YbZiNin2LEg2b7YtNiq2YdcIlxuLy8gdW5kZWZpbmVkLmNoYXJ0VHlwZV9kb3VnaG51dDogXCJEb3VnaG51dFwiID0+IFwi2K/ZiNmG2KfYqlwiXG4vLyB1bmRlZmluZWQubWFrZVByaXZhdGVCdXR0b246IFwiTWFrZSBwcml2YXRlXCIgPT4gXCLYrti12YjYtduMINqp2LHYr9mGXCJcbi8vIHVuZGVmaW5lZC5tYWtlUHVibGljQnV0dG9uOiBcIk1ha2UgcHVibGljXCIgPT4gXCLYudmF2YjZhduMINqp2LHYr9mGXCJcbi8vIHVuZGVmaW5lZC5zaG93QnV0dG9uOiBcIlNob3dcIiA9PiBcItmG2YXYp9uM2LRcIlxuLy8gdW5kZWZpbmVkLmZpbHRlcjogXCJGaWx0ZXJcIiA9PiBcItmB24zZhNiq2LFcIlxuLy8gdW5kZWZpbmVkLmNoYW5nZUxvY2FsZTogXCJDaGFuZ2UgTG9jYWxlXCIgPT4gXCLYqti624zbjNixINmF2K3ZhNuMXCJcbi8vIHVuZGVmaW5lZC5kZWZhdWx0T3JkZXI6IFwiRGVmYXVsdCBPcmRlclwiID0+IFwi2KrYsdiq24zYqCDZvtuM2LTZgdix2LZcIlxuLy8gdW5kZWZpbmVkLmFzY09yZGVyOiBcIkFzY2VuZGluZ1wiID0+IFwi2LXYudmI2K/bjFwiXG4vLyB1bmRlZmluZWQuZGVzY09yZGVyOiBcIkRlc2NlbmRpbmdcIiA9PiBcItmG2LLZiNmE24xcIlxuLy8gdW5kZWZpbmVkLnNob3dNaW5vckNvbHVtbnM6IFwiU2hvdyBtaW5vciBjb2x1bW5zXCIgPT4gXCLZhtmF2KfbjNi0INiz2KrZiNmG2YfYp9uMINmB2LHYuduMXCJcbi8vIHVuZGVmaW5lZC5vdGhlckNvbW1lbnRUaXRsZTogXCJPdGhlciBpdGVtcyBhbmQgY29tbWVudHNcIiA9PiBcItiz2KfbjNixINmF2YjYp9ix2K8g2Ygg2YbYuNix2KfYqlwiXG4vLyB1bmRlZmluZWQuc2hvd1BlcmNlbnRhZ2VzOiBcIlNob3cgcGVyY2VudGFnZXNcIiA9PiBcItmG2YXYp9uM2LQg2K/Ysdi12K9cIlxuLy8gdW5kZWZpbmVkLmhpZGVQZXJjZW50YWdlczogXCJIaWRlIHBlcmNlbnRhZ2VzXCIgPT4gXCLYr9ix2LXYr9mH2KfbjCDZhdiu2YHbjFwiXG4vLyB1bmRlZmluZWQucGRmRG93bmxvYWRDYXB0aW9uOiBcIlBERlwiID0+IFwi2b7bjCDYr9uMINin2YFcIlxuLy8gdW5kZWZpbmVkLnhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxcIiA9PiBcItin2qnYs9mEXCJcbi8vIHVuZGVmaW5lZC5jc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIgPT4gXCJDc3ZcIlxuLy8gdW5kZWZpbmVkLnNhdmVEaWFncmFtQXNQTkc6IFwiRG93bmxvYWQgcGxvdCBhcyBhIFBORyBmaWxlXCIgPT4gXCLYr9in2YbZhNmI2K8g2LfYsditINio2Ycg2LnZhtmI2KfZhiDbjNqpINmB2KfbjNmEIFBOR1wiXG4vLyB1bmRlZmluZWQuaGlkZUVtcHR5QW5zd2VyczogXCJIaWRlIGVtcHR5IGFuc3dlcnNcIiA9PiBcItmF2K7ZgduMINqp2LHYr9mGINm+2KfYs9iu2YfYp9uMINiu2KfZhNuMXCJcbi8vIHVuZGVmaW5lZC5zaG93RW1wdHlBbnN3ZXJzOiBcIlNob3cgZW1wdHkgYW5zd2Vyc1wiID0+IFwi2YbZhdin24zYtCDZvtin2LPYrtmH2KfbjCDYrtin2YTbjFwiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dC0xOiBcIkFsbCBhbnN3ZXJzXCIgPT4gXCLZh9mF2Ycg2b7Yp9iz2K4g2YfYp1wiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dDU6IFwiVG9wIDUgYW5zd2Vyc1wiID0+IFwiNSDZvtin2LPYriDYqNix2KrYsVwiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dDEwOiBcIlRvcCAxMCBhbnN3ZXJzXCIgPT4gXCIxMCDZvtin2LPYriDYqNix2KrYsVwiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dDIwOiBcIlRvcCAyMCBhbnN3ZXJzXCIgPT4gXCIyMCDZvtin2LPYriDYqNix2KrYsVwiXG4vLyB1bmRlZmluZWQuaGlkZU1pc3NpbmdBbnN3ZXJzOiBcIkhpZGUgbWlzc2luZyBhbnN3ZXJzXCIgPT4gXCLZhdiu2YHbjCDaqdix2K/ZhiDZvtin2LPYrtmH2KfbjCDar9mF2LTYr9mHXCJcbi8vIHVuZGVmaW5lZC5zaG93TWlzc2luZ0Fuc3dlcnM6IFwiU2hvdyBtaXNzaW5nIGFuc3dlcnNcIiA9PiBcItmG2YXYp9uM2LQg2b7Yp9iz2K7Zh9in24wg2q/Zhdi02K/Zh1wiXG4vLyB1bmRlZmluZWQubWlzc2luZ0Fuc3dlcnNMYWJlbDogXCJNaXNzaW5nIGFuc3dlcnNcIiA9PiBcItm+2KfYs9iuINmH2KfbjCDar9mF2LTYr9mHXCJcbi8vIHVuZGVmaW5lZC5ub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCJUaGlzIHF1ZXN0aW9uIHR5cGUgaXMgbm90IHZpc3VhbGl6ZWQgeWV0XCIgPT4gXCLYp9uM2YYg2YbZiNi5INiz2YjYp9mEINmH2YbZiNiyINiq2KzYs9mFINmG2LTYr9mHINin2LPYqlwiXG4vLyB1bmRlZmluZWQubm9SZXN1bHRzOiBcIlRoZXJlIGFyZSBubyByZXN1bHRzIHlldFwiID0+IFwi2YfZhtmI2LIg2YbYqtuM2KzZhyDYp9uMINit2KfYtdmEINmG2LTYr9mHINin2LPYqlwiXG4vLyB1bmRlZmluZWQuc2hvd1BlclZhbHVlczogXCJQZXIgVmFsdWVzXCIgPT4gXCLYqNmHINin2LLYp9uMINmH2LEg2KfYsdiy2LRcIlxuLy8gdW5kZWZpbmVkLnNob3dQZXJDb2x1bW5zOiBcIlBlciBDb2x1bW5zXCIgPT4gXCLYr9ixINmH2LEg2LPYqtmI2YZcIlxuLy8gdW5kZWZpbmVkLmFuc3dlcjogXCJBbnN3ZXJcIiA9PiBcItm+2KfYs9iuXCJcbi8vIHVuZGVmaW5lZC5jb3JyZWN0QW5zd2VyOiBcIkNvcnJlY3QgYW5zd2VyOiBcIiA9PiBcItm+2KfYs9iuINi12K3bjNitOiBcIlxuLy8gdW5kZWZpbmVkLnBlcmNlbnQ6IFwiUGVyY2VudFwiID0+IFwi2K/Ysdi12K9cIlxuLy8gdW5kZWZpbmVkLnJlc3BvbnNlczogXCJSZXNwb25zZXNcIiA9PiBcItm+2KfYs9iuXCJcbiIsIi8vIFRoaXMgZGljdGlvbmFyeSBjb250YWlucyAxIHVudHJhbnNsYXRlZCBvciBpbmhlcml0ZWQgbG9jYWxpemF0aW9uIHN0cmluZ3MuXG4vLyBUaGVzZSBzdHJpbmdzIGFyZSBjb21tZW50ZWQgb3V0LiBVbmNvbW1lbnQgYW5kIGVkaXQgdGhlbSBpZiB5b3Ugd2FudCB0byBhZGQgeW91ciB0cmFuc2xhdGlvbnMuXG5pbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIGZyZW5jaFN0cmluZ3MgPSB7XG4gIGdyb3VwQnV0dG9uOiBcIkdyb3VwZXJcIixcbiAgdW5ncm91cEJ1dHRvbjogXCJEaXNzb2NpZXJcIixcbiAgc2VsZWN0QnV0dG9uOiBcIlPDqWxlY3Rpb25uZXJcIixcbiAgaGlkZUNvbHVtbjogXCJNYXNxdWVyIGNvbG9ubmVcIixcbiAgc2hvd0NvbHVtbjogXCJBZmZpY2hlciBjb2xvbm5lXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcIlJlbmRyZSBsYSBjb2xvbm5lIHByaXbDqVwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcIlJlbmRyZSBsYSBjb2xvbm5lIHB1YmxpY1wiLFxuICBtb3ZlVG9EZXRhaWw6IFwiRMOpcGxhY2VyIHZlcnMgZMOpdGFpbHNcIixcbiAgc2hvd0FzQ29sdW1uOiBcIkFmZmljaGVyIGVuIGNvbG9ubmVcIixcbiAgZmlsdGVyUGxhY2Vob2xkZXI6IFwiUmVjaGVyY2hlci4uLlwiLFxuICByZW1vdmVSb3dzOiBcIlN1cHByaW1lciBjb2xvbm5lXCIsXG4gIHNob3dMYWJlbDogXCJBZmZpY2hlclwiLFxuICBlbnRyaWVzTGFiZWw6IFwiZW50csOpZXNcIixcbiAgdmlzdWFsaXplcl90ZXh0OiBcIlRleHRlcyBlbiB0YWJsZVwiLFxuICB2aXN1YWxpemVyX3dvcmRjbG91ZDogXCJOdWFnZXMgZGUgbW90c1wiLFxuICB2aXN1YWxpemVyX2hpc3RvZ3JhbTogXCJIaXN0b2dyYW1tZVwiLFxuICB2aXN1YWxpemVyX251bWJlcjogXCJNb3llbm5lXCIsXG4gIHZpc3VhbGl6ZXJfY2hvaWNlczogXCJUYWJsZVwiLFxuICB2aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwiR3JhcGhpcXVlXCIsXG4gIC8vIHZpc3VhbGl6ZXJfbWF0cml4OiBcIkNoYXJ0XCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwiQmFycmVzXCIsXG4gIGNoYXJ0VHlwZV92YmFyOiBcIkJhcnJlIHZlcnRpY2FsZVwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCJCYXJyZXMgZW1waWzDqWVzXCIsXG4gIGNoYXJ0VHlwZV9kb3VnaG51dDogXCJBbm5lYXVcIixcbiAgY2hhcnRUeXBlX3BpZTogXCJTZWN0ZXVyc1wiLFxuICBjaGFydFR5cGVfc2NhdHRlcjogXCJOdWFnZXMgZGUgcG9pbnRzXCIsXG4gIGNoYXJ0VHlwZV9nYXVnZTogXCJHYXVnZVwiLFxuICBjaGFydFR5cGVfYnVsbGV0OiBcIkJ1bGxlc1wiLFxuICBoaWRlQnV0dG9uOiBcIk1hc3F1ZXJcIixcbiAgbWFrZVByaXZhdGVCdXR0b246IFwiUmVuZHJlIHByaXbDqVwiLFxuICBtYWtlUHVibGljQnV0dG9uOiBcIlJlbmRyZSBwdWJsaXF1ZVwiLFxuICBzaG93QnV0dG9uOiBcIkFmZmljaGVyXCIsXG4gIGZpbHRlcjogXCJGaWx0cmVcIixcbiAgcmVzZXRGaWx0ZXI6IFwiUmFmcmFpY2hpciBGaWx0cmVzXCIsXG4gIGNoYW5nZUxvY2FsZTogXCJDaGFuZ2VyIGxlcyBwYXJhbcOodHJlcyByw6lnaW9uYXV4XCIsXG4gIGNsZWFyQnV0dG9uOiBcIlJhZnJhaWNoaXJcIixcbiAgYWRkRWxlbWVudDogXCJDaG9pc2lyIGxhIHF1ZXN0aW9uIMOgIGFmZmljaGVyLi4uXCIsXG4gIGRlZmF1bHRPcmRlcjogXCJEZWZhdXRcIixcbiAgYXNjT3JkZXI6IFwiQXNjZW5kYW50XCIsXG4gIGRlc2NPcmRlcjogXCJEZXNjZW5kYW50XCIsXG4gIHNob3dNaW5vckNvbHVtbnM6IFwiQWZmaWNoZXIgbGVzIGNvbG9ubmVzIG1pbmV1cmVzXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcIkF1dHJlIMOpbMOpbWVudCBldCBjb21tZW50YWlyZXNcIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcIkFmZmljaGVyIGxlcyBwb3VyY2VudGFnZXNcIixcbiAgaGlkZVBlcmNlbnRhZ2VzOiBcIk1hc3F1ZXIgbGVzIHBvdXJjZW50YWdlc1wiLFxuICBwZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxsZXJcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkZpY2hpZXIgQ1NWXCIsXG4gIHNhdmVEaWFncmFtQXNQTkc6IFwiU2F1dmVyIGVuIHBuZ1wiLFxuICBoaWRlRW1wdHlBbnN3ZXJzOiBcIk1hc3F1ZXIgbGVzIHLDqXBvbnNlcyB2aWRlc1wiLFxuICBzaG93RW1wdHlBbnN3ZXJzOiBcIkFmZmljaGVyIGxlcyByw6lwb25zZXMgdmlkZXNcIixcbiAgXCJ0b3BOVmFsdWVUZXh0LTFcIjogXCJUb3V0ZXMgbGVzIHLDqXBvbnNlc1wiLFxuICB0b3BOVmFsdWVUZXh0NTogXCJUb3AgNSBkZXMgcsOpcG9uc2VzXCIsXG4gIHRvcE5WYWx1ZVRleHQxMDogXCJUb3AgMTAgZGVzIHLDqXBvbnNlc1wiLFxuICB0b3BOVmFsdWVUZXh0MjA6IFwiVG9wIDIwIGRlcyByw6lwb25zZXNcIixcbiAgaGlkZU1pc3NpbmdBbnN3ZXJzOiBcIk1hc3F1ZXIgbGVzIHLDqXBvbnNlcyBtYW5xdWFudGVzXCIsXG4gIHNob3dNaXNzaW5nQW5zd2VyczogXCJBZmZpY2hlciBsZXMgcsOpcG9uc2VzIG1hbnF1YW50ZXNcIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCJSw6lwb25zZXMgbWFucXVhbnRlc1wiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCJDZSB0eXBlIGRlIHF1ZXN0aW9uIG4nZXN0IHBhcyBlbmNvcmUgdmlzdWFsaXPDqVwiLFxuICBub1Jlc3VsdHM6IFwiSWwgbid5IGEgcGFzIGVuY29yZSBkZSByw6lzdWx0YXRzXCIsXG4gIHNob3dQZXJWYWx1ZXM6IFwiUGFyIHZhbGV1clwiLFxuICBzaG93UGVyQ29sdW1uczogXCJQYXIgY29sb25uZVwiLFxuICBhbnN3ZXI6IFwiUsOpcG9uc2VcIixcbiAgY29ycmVjdEFuc3dlcjogXCJSw6lwb25zZSBjb3JyZWN0ZTogXCIsXG4gIHBlcmNlbnQ6IFwiUG91cmNlbnRhZ2VcIixcbiAgcmVzcG9uc2VzOiBcIlLDqXBvbnNlc1wiXG59O1xuXG5sb2NhbGl6YXRpb24ubG9jYWxlc1tcImZyXCJdID0gZnJlbmNoU3RyaW5ncztcbmxvY2FsaXphdGlvbi5sb2NhbGVOYW1lc1tcImZyXCJdID0gXCJGcmFuw6dhaXNcIjtcblxuLy8gVGhlIGZvbGxvd2luZyBzdHJpbmdzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIGJ5IGEgbWFjaGluZSB0cmFuc2xhdGlvbiBzZXJ2aWNlXG4vLyBSZW1vdmUgdGhvc2Ugc3RyaW5ncyB0aGF0IHlvdSBoYXZlIGNvcnJlY3RlZCBtYW51YWxseVxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIkhpc3RvZ3JhbVwiID0+IFwiSGlzdG9ncmFtbWVcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfbnVtYmVyOiBcIkF2ZXJhZ2VcIiA9PiBcIk1veWVubmVcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfY2hvaWNlczogXCJUYWJsZVwiID0+IFwiVGFibGVcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfc2VsZWN0QmFzZTogXCJDaGFydFwiID0+IFwiR3JhcGhpcXVlXCJcbi8vIHVuZGVmaW5lZC5jaGFydFR5cGVfdmJhcjogXCJWZXJ0aWNhbCBCYXJcIiA9PiBcIkJhcnJlIHZlcnRpY2FsZVwiXG4vLyB1bmRlZmluZWQuY2hhbmdlTG9jYWxlOiBcIkNoYW5nZSBMb2NhbGVcIiA9PiBcIkNoYW5nZXIgbGVzIHBhcmFtw6h0cmVzIHLDqWdpb25hdXhcIlxuLy8gdW5kZWZpbmVkLnNob3dQZXJjZW50YWdlczogXCJTaG93IHBlcmNlbnRhZ2VzXCIgPT4gXCJBZmZpY2hlciBsZXMgcG91cmNlbnRhZ2VzXCJcbi8vIHVuZGVmaW5lZC5oaWRlUGVyY2VudGFnZXM6IFwiSGlkZSBwZXJjZW50YWdlc1wiID0+IFwiTWFzcXVlciBsZXMgcG91cmNlbnRhZ2VzXCJcbi8vIHVuZGVmaW5lZC5wZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIgPT4gXCJQREZcIlxuLy8gdW5kZWZpbmVkLnhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxcIiA9PiBcIkV4Y2VsbGVyXCJcbi8vIHVuZGVmaW5lZC5jc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIgPT4gXCJGaWNoaWVyIENTVlwiXG4vLyB1bmRlZmluZWQuaGlkZUVtcHR5QW5zd2VyczogXCJIaWRlIGVtcHR5IGFuc3dlcnNcIiA9PiBcIk1hc3F1ZXIgbGVzIHLDqXBvbnNlcyB2aWRlc1wiXG4vLyB1bmRlZmluZWQuc2hvd0VtcHR5QW5zd2VyczogXCJTaG93IGVtcHR5IGFuc3dlcnNcIiA9PiBcIkFmZmljaGVyIGxlcyByw6lwb25zZXMgdmlkZXNcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQtMTogXCJBbGwgYW5zd2Vyc1wiID0+IFwiVG91dGVzIGxlcyByw6lwb25zZXNcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQ1OiBcIlRvcCA1IGFuc3dlcnNcIiA9PiBcIlRvcCA1IGRlcyByw6lwb25zZXNcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQxMDogXCJUb3AgMTAgYW5zd2Vyc1wiID0+IFwiVG9wIDEwIGRlcyByw6lwb25zZXNcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQyMDogXCJUb3AgMjAgYW5zd2Vyc1wiID0+IFwiVG9wIDIwIGRlcyByw6lwb25zZXNcIlxuLy8gdW5kZWZpbmVkLmhpZGVNaXNzaW5nQW5zd2VyczogXCJIaWRlIG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiTWFzcXVlciBsZXMgcsOpcG9uc2VzIG1hbnF1YW50ZXNcIlxuLy8gdW5kZWZpbmVkLnNob3dNaXNzaW5nQW5zd2VyczogXCJTaG93IG1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiQWZmaWNoZXIgbGVzIHLDqXBvbnNlcyBtYW5xdWFudGVzXCJcbi8vIHVuZGVmaW5lZC5taXNzaW5nQW5zd2Vyc0xhYmVsOiBcIk1pc3NpbmcgYW5zd2Vyc1wiID0+IFwiUsOpcG9uc2VzIG1hbnF1YW50ZXNcIiIsIi8vIFRoaXMgZGljdGlvbmFyeSBjb250YWlucyAxIHVudHJhbnNsYXRlZCBvciBpbmhlcml0ZWQgbG9jYWxpemF0aW9uIHN0cmluZ3MuXG4vLyBUaGVzZSBzdHJpbmdzIGFyZSBjb21tZW50ZWQgb3V0LiBVbmNvbW1lbnQgYW5kIGVkaXQgdGhlbSBpZiB5b3Ugd2FudCB0byBhZGQgeW91ciB0cmFuc2xhdGlvbnMuXG5pbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIGdlcm1hblN0cmluZ3MgPSB7XG4gIGdyb3VwQnV0dG9uOiBcIkdydXBwaWVyZW5cIixcbiAgdW5ncm91cEJ1dHRvbjogXCJHcnVwcGllcnVuZyBhdWZoZWJlblwiLFxuICBzZWxlY3RCdXR0b246IFwiTWljaCBhdXN3w6RobGVuXCIsXG4gIGhpZGVDb2x1bW46IFwiU3BhbHRlIGF1c2JsZW5kZW5cIixcbiAgc2hvd0NvbHVtbjogXCJTcGFsdGUgZWluYmxlbmRlblwiLFxuICBtYWtlUHJpdmF0ZUNvbHVtbjogXCJTcGFsdGUgcHJpdmF0IG1hY2hlblwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcIlNwYWx0ZSB2ZXLDtmZmZW50bGljaGVuXCIsXG4gIG1vdmVUb0RldGFpbDogXCJpbiBEZXRhaWxzIHZlcnNjaGllYmVuXCIsXG4gIHNob3dBc0NvbHVtbjogXCJBbHMgU3BhbHRlIGFuemVpZ2VuXCIsXG4gIGZpbHRlclBsYWNlaG9sZGVyOiBcIlN1Y2hlLi4uXCIsXG4gIHJlbW92ZVJvd3M6IFwiWmVpbGVuIGVudGZlcm5lblwiLFxuICBzaG93TGFiZWw6IFwiYW56ZWlnZW5cIixcbiAgZW50cmllc0xhYmVsOiBcIkVpbnRyw6RnZVwiLFxuICB2aXN1YWxpemVyX3RleHQ6IFwiVGV4dGUgaW4gVGFiZWxsZW5mb3JtXCIsXG4gIHZpc3VhbGl6ZXJfd29yZGNsb3VkOiBcIldvcmRjbG91ZFwiLFxuICB2aXN1YWxpemVyX2hpc3RvZ3JhbTogXCJIaXN0b2dyYW1tXCIsXG4gIHZpc3VhbGl6ZXJfbnVtYmVyOiBcIkR1cmNoc2Nobml0dFwiLFxuICB2aXN1YWxpemVyX2Nob2ljZXM6IFwiTGlzdGVcIixcbiAgdmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcIkRpYWdyYW1tdHlwXCIsXG4gIC8vIHZpc3VhbGl6ZXJfbWF0cml4OiBcIkNoYXJ0XCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwiQmFsa2VuZGlhZ3JhbW1cIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwiQmFsa2VuZGlhZ3JhbW0gdmVydGlrYWxcIixcbiAgY2hhcnRUeXBlX3N0YWNrZWRiYXI6IFwiR2VzdGFwZWx0ZXMgQmFsa2VuZGlhZ3JhbW1cIixcbiAgY2hhcnRUeXBlX2RvdWdobnV0OiBcIkRvbnV0LURpYWdyYW1tXCIsXG4gIGNoYXJ0VHlwZV9waWU6IFwiS3JlaXNkaWFncmFtbVwiLFxuICBjaGFydFR5cGVfc2NhdHRlcjogXCJQdW5rdGVkaWFncmFtbVwiLFxuICBjaGFydFR5cGVfZ2F1Z2U6IFwiUGVnZWxkaWFncmFtbVwiLFxuICBjaGFydFR5cGVfYnVsbGV0OiBcIkF1ZnrDpGhsdW5nc2RpYWdyYW1tXCIsXG4gIGhpZGVCdXR0b246IFwiQXVzYmxlbmRlblwiLFxuICBtYWtlUHJpdmF0ZUJ1dHRvbjogXCJQcml2YXQgbWFjaGVuXCIsXG4gIG1ha2VQdWJsaWNCdXR0b246IFwiw5ZmZmVudGxpY2ggbWFjaGVuXCIsXG4gIHNob3dCdXR0b246IFwiQW56ZWlnZW5cIixcbiAgZmlsdGVyOiBcIkZpbHRlclwiLFxuICByZXNldEZpbHRlcjogXCJGaWx0ZXIgenVyw7xja3NldHplblwiLFxuICBjaGFuZ2VMb2NhbGU6IFwiTG9rYWxpc2llcnVuZyDDpG5kZXJuXCIsXG4gIGNsZWFyQnV0dG9uOiBcIkVpbnN0ZWxsdW5nZW4gbMO2c2NoZW5cIixcbiAgYWRkRWxlbWVudDogXCJXw6RobGVuIFNpZSBlaW5lIEZyYWdlLCB1bSB6dSB6ZWlnZW4uLi5cIixcbiAgZGVmYXVsdE9yZGVyOiBcIlN0YW5kYXJkcmVpaGVuZm9sZ2VcIixcbiAgYXNjT3JkZXI6IFwiQXVmc3RlaWdlbmRcIixcbiAgZGVzY09yZGVyOiBcIkFic3RlaWdlbmRcIixcbiAgc2hvd01pbm9yQ29sdW1uczogXCJLbGVpbmVyZSBTcGFsdGVuIGFuemVpZ2VuXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcIkFuZGVyZSBQdW5rdGUgdW5kIEtvbW1lbnRhcmVcIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcIlByb3plbnRzw6R0emUgYW56ZWlnZW5cIixcbiAgaGlkZVBlcmNlbnRhZ2VzOiBcIlByb3plbnRzw6R0emUgYXVzYmxlbmRlblwiLFxuICBwZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNTVlwiLFxuICBzYXZlRGlhZ3JhbUFzUE5HOiBcIkRpYWdyYW1tIGFscyBwbmcgaGVydW50ZXJsYWRlblwiLFxuICBoaWRlRW1wdHlBbnN3ZXJzOiBcIkxlZXJlIEFudHdvcnRlbiBhdXNibGVuZGVuXCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwiTGVlcmUgQW50d29ydGVuIGFuemVpZ2VuXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwiQWxsZSBBbnR3b3J0ZW5cIixcbiAgdG9wTlZhbHVlVGV4dDU6IFwiVG9wIDUgQW50d29ydGVuXCIsXG4gIHRvcE5WYWx1ZVRleHQxMDogXCJUb3AgMTAgQW50d29ydGVuXCIsXG4gIHRvcE5WYWx1ZVRleHQyMDogXCJUb3AgMjAgQW50d29ydGVuXCIsXG4gIGhpZGVNaXNzaW5nQW5zd2VyczogXCJGZWhsZW5kZSBBbnR3b3J0ZW4gYXVzYmxlbmRlblwiLFxuICBzaG93TWlzc2luZ0Fuc3dlcnM6IFwiRmVobGVuZGUgQW50d29ydGVuIGFuemVpZ2VuXCIsXG4gIG1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwiRmVobGVkZSBBbnR3b3J0ZW5cIixcbiAgbm9WaXN1YWxpemVyRm9yUXVlc3Rpb246IFwiRsO8ciBkaWVzZW4gRnJhZ2V0eXAgZ2lidCBlcyBub2NoIGtlaW5lIFZpc3VhbGlzaWVydW5nLlwiLFxuICBub1Jlc3VsdHM6IFwiRXMgbGllZ2VuIG5vY2gga2VpbmUgRXJnZWJuaXNzZSB2b3JcIixcbiAgc2hvd1BlclZhbHVlczogXCJQcm8gV2VydFwiLFxuICBzaG93UGVyQ29sdW1uczogXCJQcm8gU3BhbHRlXCIsXG4gIGFuc3dlcjogXCJBbnR3b3J0XCIsXG4gIGNvcnJlY3RBbnN3ZXI6IFwiS29ycmVrdGUgQW50d29ydDogXCIsXG4gIHBlcmNlbnQ6IFwiUHJvemVudFwiLFxuICByZXNwb25zZXM6IFwiQW50d29ydGVuXCJcbn07XG5sb2NhbGl6YXRpb24ubG9jYWxlc1tcImRlXCJdID0gZ2VybWFuU3RyaW5ncztcbmxvY2FsaXphdGlvbi5sb2NhbGVOYW1lc1tcImRlXCJdID0gXCJEZXV0c2NoXCI7XG4iLCJpbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIGphcGFuZXNlU3RyaW5ncyA9IHtcbiAgZ3JvdXBCdXR0b246IFwi44Kw44Or44O844OX5YyWXCIsXG4gIHVuZ3JvdXBCdXR0b246IFwi44Kw44Or44O844OX6Kej6ZmkXCIsXG4gIHNlbGVjdEJ1dHRvbjogXCLpgbjmip5cIixcbiAgaGlkZUNvbHVtbjogXCLliJfjgpLpnZ7ooajnpLpcIixcbiAgc2hvd0NvbHVtbjogXCLliJfjgpLooajnpLpcIixcbiAgbWFrZVByaXZhdGVDb2x1bW46IFwi5YiX44KS6Z2e5YWs6ZaL44Gr44GZ44KLXCIsXG4gIG1ha2VQdWJsaWNDb2x1bW46IFwi5YiX44KS5YWs6ZaL44GZ44KLXCIsXG4gIG1vdmVUb0RldGFpbDogXCLoqbPntLDjgavnp7vli5VcIixcbiAgc2hvd0FzQ29sdW1uOiBcIuWIl+OBqOOBl+OBpuihqOekulwiLFxuICBmaWx0ZXJQbGFjZWhvbGRlcjogXCLmpJzntKIuLi5cIixcbiAgcmVtb3ZlUm93czogXCLooYzjgpLliYrpmaRcIixcbiAgc2hvd0xhYmVsOiBcIuihqOekulwiLFxuICBlbnRyaWVzTGFiZWw6IFwi5Lu2XCIsXG4gIHZpc3VhbGl6ZXJfdGV4dDogXCLjg4bjgq3jgrnjg4hcIixcbiAgdmlzdWFsaXplcl93b3JkY2xvdWQ6IFwi44Ov44O844OJ44Kv44Op44Km44OJXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcIuODkuOCueODiOOCsOODqeODoFwiLFxuICB2aXN1YWxpemVyX251bWJlcjogXCLlubPlnYdcIixcbiAgdmlzdWFsaXplcl9jaG9pY2VzOiBcIuODhuODvOODluODq1wiLFxuICB2aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwi44OB44Oj44O844OIXCIsXG4gIGNoYXJ0VHlwZV9iYXI6IFwi5qOS44Kw44Op44OVXCIsXG4gIGNoYXJ0VHlwZV92YmFyOiBcIue4puajkuOCsOODqeODlVwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCLnqY3jgb/kuIrjgZLmo5LjgrDjg6njg5VcIixcbiAgY2hhcnRUeXBlX2RvdWdobnV0OiBcIuODieODvOODiuODhOODgeODo+ODvOODiFwiLFxuICBjaGFydFR5cGVfcGllOiBcIuWGhuOCsOODqeODlVwiLFxuICBjaGFydFR5cGVfc2NhdHRlcjogXCLmlaPluIPlm7NcIixcbiAgY2hhcnRUeXBlX2dhdWdlOiBcIuOCsuODvOOCuFwiLFxuICBjaGFydFR5cGVfYnVsbGV0OiBcIuODkOODrOODg+ODiFwiLFxuICBoaWRlQnV0dG9uOiBcIumdnuihqOekulwiLFxuICBtYWtlUHJpdmF0ZUJ1dHRvbjogXCLpnZ7lhazplovjgavjgZnjgotcIixcbiAgbWFrZVB1YmxpY0J1dHRvbjogXCLlhazplovjgZnjgotcIixcbiAgc2hvd0J1dHRvbjogXCLooajnpLpcIixcbiAgZmlsdGVyOiBcIuODleOCo+ODq+OCv+ODvFwiLFxuICByZXNldEZpbHRlcjogXCLjg5XjgqPjg6vjgr/jg7zjgpLjg6rjgrvjg4Pjg4hcIixcbiAgY2hhbmdlTG9jYWxlOiBcIuiogOiqnuOCkuWkieabtFwiLFxuICBjbGVhckJ1dHRvbjogXCLjgq/jg6rjgqJcIixcbiAgYWRkRWxlbWVudDogXCLooajnpLrjgZnjgovos6rllY/jgpLpgbjmip4uLi5cIixcbiAgZGVmYXVsdE9yZGVyOiBcIuODh+ODleOCqeODq+ODiOmghlwiLFxuICBhc2NPcmRlcjogXCLmmIfpoIZcIixcbiAgZGVzY09yZGVyOiBcIumZjemghlwiLFxuICBzaG93TWlub3JDb2x1bW5zOiBcIuODnuOCpOODiuODvOWIl+OCkuihqOekulwiLFxuICBvdGhlckNvbW1lbnRUaXRsZTogXCLjgZ3jga7ku5bjga7jgqLjgqTjg4bjg6DjgajjgrPjg6Hjg7Pjg4hcIixcbiAgc2hvd1BlcmNlbnRhZ2VzOiBcIuODkeODvOOCu+ODs+ODhuODvOOCuOOCkuihqOekulwiLFxuICBoaWRlUGVyY2VudGFnZXM6IFwi44OR44O844K744Oz44OG44O844K444KS6Z2e6KGo56S6XCIsXG4gIHBkZkRvd25sb2FkQ2FwdGlvbjogXCJQREZcIixcbiAgeGxzeERvd25sb2FkQ2FwdGlvbjogXCJFeGNlbFwiLFxuICBjc3ZEb3dubG9hZENhcHRpb246IFwiQ1NWXCIsXG4gIHNhdmVEaWFncmFtQXNQTkc6IFwi44OX44Ot44OD44OI44KSUE5H44OV44Kh44Kk44Or44Go44GX44Gm5L+d5a2YXCIsXG4gIGhpZGVFbXB0eUFuc3dlcnM6IFwi56m644Gu5Zue562U44KS6Z2e6KGo56S6XCIsXG4gIHNob3dFbXB0eUFuc3dlcnM6IFwi56m644Gu5Zue562U44KS6KGo56S6XCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwi44GZ44G544Gm44Gu5Zue562UXCIsXG4gIFwidG9wTlZhbHVlVGV4dDVcIjogXCLkuIrkvY0144Gk44Gu5Zue562UXCIsXG4gIFwidG9wTlZhbHVlVGV4dDEwXCI6IFwi5LiK5L2NMTDjga7lm57nrZRcIixcbiAgXCJ0b3BOVmFsdWVUZXh0MjBcIjogXCLkuIrkvY0yMOOBruWbnuetlFwiLFxuICBoaWRlTWlzc2luZ0Fuc3dlcnM6IFwi5qyg5pCN5YCk44KS6Z2e6KGo56S6XCIsXG4gIHNob3dNaXNzaW5nQW5zd2VyczogXCLmrKDmkI3lgKTjgpLooajnpLpcIixcbiAgbWlzc2luZ0Fuc3dlcnNMYWJlbDogXCLmrKDmkI3lgKRcIixcbiAgbm9WaXN1YWxpemVyRm9yUXVlc3Rpb246IFwi44GT44Gu6LOq5ZWP44K/44Kk44OX44Gv44G+44Gg6KaW6Kaa5YyW44GV44KM44Gm44GE44G+44Gb44KTXCIsXG4gIG5vUmVzdWx0czogXCLjgb7jgaDntZDmnpzjgYzjgYLjgorjgb7jgZvjgpNcIixcbiAgc2hvd1BlclZhbHVlczogXCLlgKTjgZTjgajjgavooajnpLpcIixcbiAgc2hvd1BlckNvbHVtbnM6IFwi5YiX44GU44Go44Gr6KGo56S6XCIsXG4gIGFuc3dlcjogXCLlm57nrZRcIixcbiAgY29ycmVjdEFuc3dlcjogXCLmraPop6M6IFwiLFxuICBwZXJjZW50OiBcIuODkeODvOOCu+ODs+ODiFwiLFxuICByZXNwb25zZXM6IFwi5Zue562U5pWwXCJcbn07XG5cbmxvY2FsaXphdGlvbi5sb2NhbGVzW1wiamFcIl0gPSBqYXBhbmVzZVN0cmluZ3M7XG5sb2NhbGl6YXRpb24ubG9jYWxlTmFtZXNbXCJqYVwiXSA9IFwiSmFwYW5lc2VcIjtcbiIsIi8vIFRoaXMgZGljdGlvbmFyeSBjb250YWlucyAxIHVudHJhbnNsYXRlZCBvciBpbmhlcml0ZWQgbG9jYWxpemF0aW9uIHN0cmluZ3MuXG4vLyBUaGVzZSBzdHJpbmdzIGFyZSBjb21tZW50ZWQgb3V0LiBVbmNvbW1lbnQgYW5kIGVkaXQgdGhlbSBpZiB5b3Ugd2FudCB0byBhZGQgeW91ciB0cmFuc2xhdGlvbnMuXG5pbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIG5vcndlZ2lhblN0cmluZ3MgPSB7XG4gIGdyb3VwQnV0dG9uOiBcIkdydXBwZXJcIixcbiAgdW5ncm91cEJ1dHRvbjogXCJPcHBoZXYgZ3J1cHBlcmluZ1wiLFxuICBzZWxlY3RCdXR0b246IFwiVmVsZ1wiLFxuICBoaWRlQ29sdW1uOiBcIlNranVsIGtvbG9ubmVcIixcbiAgc2hvd0NvbHVtbjogXCJWaXMga29sb25uZVwiLFxuICBtYWtlUHJpdmF0ZUNvbHVtbjogXCJHasO4ciBrb2xvbm5lIHByaXZhdFwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcIkdqw7hyIGtvbG9ubmUgb2ZmZW50bGlnXCIsXG4gIG1vdmVUb0RldGFpbDogXCJGbHl0dCB0aWwgZGV0YWxqZXJ0IHZpc25pbmdcIixcbiAgc2hvd0FzQ29sdW1uOiBcIlZpcyBzb20ga29sb25uZVwiLFxuICBmaWx0ZXJQbGFjZWhvbGRlcjogXCJTw7hrLi4uXCIsXG4gIHJlbW92ZVJvd3M6IFwiRmplcm4gcmFkZXJcIixcbiAgc2hvd0xhYmVsOiBcIlZpc1wiLFxuICBlbnRyaWVzTGFiZWw6IFwib3BwZsO4cmluZ2VyXCIsXG4gIHZpc3VhbGl6ZXJfdGV4dDogXCJUYWJlbGx2aXNuaW5nXCIsXG4gIHZpc3VhbGl6ZXJfd29yZGNsb3VkOiBcIk9yZHNreVwiLFxuICB2aXN1YWxpemVyX2hpc3RvZ3JhbTogXCJIaXN0b2dyYW1cIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwiR2plbm5vbXNuaXR0XCIsXG4gIHZpc3VhbGl6ZXJfY2hvaWNlczogXCJCb3JkXCIsXG4gIHZpc3VhbGl6ZXJfc2VsZWN0QmFzZTogXCJTasO4a2FydFwiLFxuICAvLyB2aXN1YWxpemVyX21hdHJpeDogXCJDaGFydFwiLFxuICBjaGFydFR5cGVfYmFyOiBcIlN0b2xwZWRpYWdyYW1cIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwiVmVydGlrYWwgc3RvbHBlXCIsXG4gIGNoYXJ0VHlwZV9zdGFja2VkYmFyOiBcIlN0YWJsZXQgc3RvbHBlZGlhZ3JhbVwiLFxuICBjaGFydFR5cGVfZG91Z2hudXQ6IFwiSGp1bGRpYWdyYW1cIixcbiAgY2hhcnRUeXBlX3BpZTogXCJTZWt0b3JkaWFncmFtXCIsXG4gIGNoYXJ0VHlwZV9zY2F0dGVyOiBcIlB1bmt0ZGlhZ3JhbVwiLFxuICBjaGFydFR5cGVfZ2F1Z2U6IFwiTcOlbGVkaWFncmFtXCIsXG4gIGNoYXJ0VHlwZV9idWxsZXQ6IFwiS3VsZWRpYWdyYW1cIixcbiAgaGlkZUJ1dHRvbjogXCJTa2p1bFwiLFxuICBtYWtlUHJpdmF0ZUJ1dHRvbjogXCJHasO4ciBwcml2YXRcIixcbiAgbWFrZVB1YmxpY0J1dHRvbjogXCJHasO4ciBvZmZlbnRsaWdcIixcbiAgc2hvd0J1dHRvbjogXCJWaXNcIixcbiAgZmlsdGVyOiBcIkZpbHRlclwiLFxuICByZXNldEZpbHRlcjogXCJOdWxsc3RpbGwgZmlsdGVyXCIsXG4gIGNoYW5nZUxvY2FsZTogXCJCeXR0IHNwcsOla1wiLFxuICBjbGVhckJ1dHRvbjogXCJUw7htXCIsXG4gIGFkZEVsZW1lbnQ6IFwiVmVsZyBzcMO4cnNtw6VsLi4uXCIsXG4gIGRlZmF1bHRPcmRlcjogXCJTdGFuZGFyZFwiLFxuICBhc2NPcmRlcjogXCJTdGlnZW5kZVwiLFxuICBkZXNjT3JkZXI6IFwiU3lua2VuZGVcIixcbiAgc2hvd01pbm9yQ29sdW1uczogXCJWaXMgbWluZHJlIGtvbG9ubmVyXCIsXG4gIG90aGVyQ29tbWVudFRpdGxlOiBcIkFubmV0IG9nIGtvbW1lbnRhcmVyXCIsXG4gIHNob3dQZXJjZW50YWdlczogXCJWaXMgcHJvc2VudGVyXCIsXG4gIGhpZGVQZXJjZW50YWdlczogXCJTa2p1bCBwcm9zZW50ZXJcIixcbiAgcGRmRG93bmxvYWRDYXB0aW9uOiBcIlBERlwiLFxuICB4bHN4RG93bmxvYWRDYXB0aW9uOiBcIk92ZXJnw6VcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNTVlwiLFxuICBzYXZlRGlhZ3JhbUFzUE5HOiBcIkxhc3QgbmVkIHBsb3R0IHNvbSBlbiBQTkctZmlsXCIsXG4gIGhpZGVFbXB0eUFuc3dlcnM6IFwiU2tqdWwgdG9tbWUgc3ZhclwiLFxuICBzaG93RW1wdHlBbnN3ZXJzOiBcIlZpcyB0b21tZSBzdmFyXCIsXG4gIFwidG9wTlZhbHVlVGV4dC0xXCI6IFwiQWxsZSBzdmFyXCIsXG4gIHRvcE5WYWx1ZVRleHQ1OiBcIlRvcHAgNSBzdmFyXCIsXG4gIHRvcE5WYWx1ZVRleHQxMDogXCJUb3BwIDEwIHN2YXJcIixcbiAgdG9wTlZhbHVlVGV4dDIwOiBcIlRvcHAgMjAgc3ZhclwiLFxuICBoaWRlTWlzc2luZ0Fuc3dlcnM6IFwiU2tqdWwgbWFuZ2xlbmRlIHN2YXJcIixcbiAgc2hvd01pc3NpbmdBbnN3ZXJzOiBcIlZpcyBtYW5nbGVuZGUgc3ZhclwiLFxuICBtaXNzaW5nQW5zd2Vyc0xhYmVsOiBcIk1hbmdsZXIgc3ZhclwiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCJEZW5uZSBzcMO4cnNtw6Vsc3R5cGVuIGVyIGlra2UgdmlzdWFsaXNlcnQgZW5uw6VcIixcbiAgbm9SZXN1bHRzOiBcIkRldCBlciBpbmdlbiByZXN1bHRhdGVyIGVubsOlXCIsXG4gIHNob3dQZXJWYWx1ZXM6IFwiUGVyIHZlcmRpZXJcIixcbiAgc2hvd1BlckNvbHVtbnM6IFwiUGVyIGtvbG9ubmVyXCIsXG4gIGFuc3dlcjogXCJTdmFyZVwiLFxuICBjb3JyZWN0QW5zd2VyOiBcIlJpa3RpZyBzdmFyOiBcIixcbiAgcGVyY2VudDogXCJQcm9zZW50XCIsXG4gIHJlc3BvbnNlczogXCJTdmFyXCJcbn07XG5cbmxvY2FsaXphdGlvbi5sb2NhbGVzW1wibm9cIl0gPSBub3J3ZWdpYW5TdHJpbmdzO1xubG9jYWxpemF0aW9uLmxvY2FsZU5hbWVzW1wibm9cIl0gPSBcIk5vcnNrXCI7XG5cbi8vIFRoZSBmb2xsb3dpbmcgc3RyaW5ncyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBieSBhIG1hY2hpbmUgdHJhbnNsYXRpb24gc2VydmljZVxuLy8gUmVtb3ZlIHRob3NlIHN0cmluZ3MgdGhhdCB5b3UgaGF2ZSBjb3JyZWN0ZWQgbWFudWFsbHlcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX2hpc3RvZ3JhbTogXCJIaXN0b2dyYW1cIiA9PiBcIkhpc3RvZ3JhbVwiXG4vLyB1bmRlZmluZWQudmlzdWFsaXplcl9udW1iZXI6IFwiQXZlcmFnZVwiID0+IFwiR2plbm5vbXNuaXR0XCJcbi8vIHVuZGVmaW5lZC52aXN1YWxpemVyX2Nob2ljZXM6IFwiVGFibGVcIiA9PiBcIkJvcmRcIlxuLy8gdW5kZWZpbmVkLnZpc3VhbGl6ZXJfc2VsZWN0QmFzZTogXCJDaGFydFwiID0+IFwiU2rDuGthcnRcIlxuLy8gdW5kZWZpbmVkLmNoYXJ0VHlwZV92YmFyOiBcIlZlcnRpY2FsIEJhclwiID0+IFwiVmVydGlrYWwgc3RvbHBlXCJcbi8vIHVuZGVmaW5lZC5maWx0ZXI6IFwiRmlsdGVyXCIgPT4gXCJGaWx0ZXJcIlxuLy8gdW5kZWZpbmVkLnBkZkRvd25sb2FkQ2FwdGlvbjogXCJQREZcIiA9PiBcIlBERlwiXG4vLyB1bmRlZmluZWQueGxzeERvd25sb2FkQ2FwdGlvbjogXCJFeGNlbFwiID0+IFwiT3ZlcmfDpVwiXG4vLyB1bmRlZmluZWQuY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNTVlwiID0+IFwiQ1NWXCJcbi8vIHVuZGVmaW5lZC5zYXZlRGlhZ3JhbUFzUE5HOiBcIkRvd25sb2FkIHBsb3QgYXMgYSBQTkcgZmlsZVwiID0+IFwiTGFzdCBuZWQgcGxvdHQgc29tIGVuIFBORy1maWxcIlxuLy8gdW5kZWZpbmVkLmhpZGVFbXB0eUFuc3dlcnM6IFwiSGlkZSBlbXB0eSBhbnN3ZXJzXCIgPT4gXCJTa2p1bCB0b21tZSBzdmFyXCJcbi8vIHVuZGVmaW5lZC5zaG93RW1wdHlBbnN3ZXJzOiBcIlNob3cgZW1wdHkgYW5zd2Vyc1wiID0+IFwiVmlzIHRvbW1lIHN2YXJcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQtMTogXCJBbGwgYW5zd2Vyc1wiID0+IFwiQWxsZSBzdmFyXCJcbi8vIHVuZGVmaW5lZC50b3BOVmFsdWVUZXh0NTogXCJUb3AgNSBhbnN3ZXJzXCIgPT4gXCJUb3BwIDUgc3ZhclwiXG4vLyB1bmRlZmluZWQudG9wTlZhbHVlVGV4dDEwOiBcIlRvcCAxMCBhbnN3ZXJzXCIgPT4gXCJUb3BwIDEwIHN2YXJcIlxuLy8gdW5kZWZpbmVkLnRvcE5WYWx1ZVRleHQyMDogXCJUb3AgMjAgYW5zd2Vyc1wiID0+IFwiVG9wcCAyMCBzdmFyXCJcbi8vIHVuZGVmaW5lZC5oaWRlTWlzc2luZ0Fuc3dlcnM6IFwiSGlkZSBtaXNzaW5nIGFuc3dlcnNcIiA9PiBcIlNranVsIG1hbmdsZW5kZSBzdmFyXCJcbi8vIHVuZGVmaW5lZC5zaG93TWlzc2luZ0Fuc3dlcnM6IFwiU2hvdyBtaXNzaW5nIGFuc3dlcnNcIiA9PiBcIlZpcyBtYW5nbGVuZGUgc3ZhclwiXG4vLyB1bmRlZmluZWQubWlzc2luZ0Fuc3dlcnNMYWJlbDogXCJNaXNzaW5nIGFuc3dlcnNcIiA9PiBcIk1hbmdsZXIgc3ZhclwiXG4vLyB1bmRlZmluZWQubm9WaXN1YWxpemVyRm9yUXVlc3Rpb246IFwiVGhpcyBxdWVzdGlvbiB0eXBlIGlzIG5vdCB2aXN1YWxpemVkIHlldFwiID0+IFwiRGVubmUgc3DDuHJzbcOlbHN0eXBlbiBlciBpa2tlIHZpc3VhbGlzZXJ0IGVubsOlXCJcbi8vIHVuZGVmaW5lZC5ub1Jlc3VsdHM6IFwiVGhlcmUgYXJlIG5vIHJlc3VsdHMgeWV0XCIgPT4gXCJEZXQgZXIgaW5nZW4gcmVzdWx0YXRlciBlbm7DpVwiXG4vLyB1bmRlZmluZWQuc2hvd1BlclZhbHVlczogXCJQZXIgVmFsdWVzXCIgPT4gXCJQZXIgdmVyZGllclwiXG4vLyB1bmRlZmluZWQuc2hvd1BlckNvbHVtbnM6IFwiUGVyIENvbHVtbnNcIiA9PiBcIlBlciBrb2xvbm5lclwiXG4vLyB1bmRlZmluZWQuYW5zd2VyOiBcIkFuc3dlclwiID0+IFwiU3ZhcmVcIlxuLy8gdW5kZWZpbmVkLmNvcnJlY3RBbnN3ZXI6IFwiQ29ycmVjdCBhbnN3ZXI6IFwiID0+IFwiUmlrdGlnIHN2YXI6IFwiXG4vLyB1bmRlZmluZWQucGVyY2VudDogXCJQZXJjZW50XCIgPT4gXCJQcm9zZW50XCJcbi8vIHVuZGVmaW5lZC5yZXNwb25zZXM6IFwiUmVzcG9uc2VzXCIgPT4gXCJTdmFyXCIiLCIvLyBUaGlzIGRpY3Rpb25hcnkgY29udGFpbnMgMSB1bnRyYW5zbGF0ZWQgb3IgaW5oZXJpdGVkIGxvY2FsaXphdGlvbiBzdHJpbmdzLlxuLy8gVGhlc2Ugc3RyaW5ncyBhcmUgY29tbWVudGVkIG91dC4gVW5jb21tZW50IGFuZCBlZGl0IHRoZW0gaWYgeW91IHdhbnQgdG8gYWRkIHlvdXIgdHJhbnNsYXRpb25zLlxuaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcblxuZXhwb3J0IHZhciBwb3J0dWd1ZXNlU3RyaW5ncyA9IHtcbiAgZ3JvdXBCdXR0b246IFwiQWdydXBhciBQb3IgTWltXCIsXG4gIHVuZ3JvdXBCdXR0b246IFwiRGVzYWdydXBhciBQb3IgTWltXCIsXG4gIHNlbGVjdEJ1dHRvbjogXCJTZWxlY2lvbmFyXCIsXG4gIGhpZGVDb2x1bW46IFwiRXNjb25kZXIgY29sdW5hXCIsXG4gIHNob3dDb2x1bW46IFwiTW9zdHJhciBjb2x1bmFcIixcbiAgbWFrZVByaXZhdGVDb2x1bW46IFwiVG9ybmFyIGNvbHVuYSBwcml2YWRhXCIsXG4gIG1ha2VQdWJsaWNDb2x1bW46IFwiVG9ybmFyIGNvbHVuYSBww7pibGljYVwiLFxuICBtb3ZlVG9EZXRhaWw6IFwiTW92ZXIgcGFyYSBEZXRhbGhlc1wiLFxuICBzaG93QXNDb2x1bW46IFwiTW9zdHJhciBjb21vIENvbHVuYVwiLFxuICBmaWx0ZXJQbGFjZWhvbGRlcjogXCJQZXNxdWlzYXIuLi5cIixcbiAgcmVtb3ZlUm93czogXCJSZW1vdmVyIGxpbmhhc1wiLFxuICBzaG93TGFiZWw6IFwiTW9zdHJhclwiLFxuICBlbnRyaWVzTGFiZWw6IFwiZW50cmFkYXNcIixcbiAgdmlzdWFsaXplcl90ZXh0OiBcIlRleHRvcyBlbSB0YWJlbGFcIixcbiAgdmlzdWFsaXplcl93b3JkY2xvdWQ6IFwiTnV2ZW0gZGUgcGFsYXZyYXNcIixcbiAgdmlzdWFsaXplcl9oaXN0b2dyYW06IFwiSGlzdG9ncmFtYVwiLFxuICB2aXN1YWxpemVyX251bWJlcjogXCJNw6lkaWFcIixcbiAgdmlzdWFsaXplcl9jaG9pY2VzOiBcIlRhYmVsYVwiLFxuICB2aXN1YWxpemVyX3NlbGVjdEJhc2U6IFwiR3LDoWZpY29cIixcbiAgLy8gdmlzdWFsaXplcl9tYXRyaXg6IFwiQ2hhcnRcIixcbiAgY2hhcnRUeXBlX2JhcjogXCJCYXJyYVwiLFxuICBjaGFydFR5cGVfdmJhcjogXCJCYXJyYSB2ZXJ0aWNhbFwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCJCYXJyYSBFbXBpbGhhZGFcIixcbiAgY2hhcnRUeXBlX2RvdWdobnV0OiBcIlJvc2NhXCIsXG4gIGNoYXJ0VHlwZV9waWU6IFwiVGFydGVcIixcbiAgY2hhcnRUeXBlX3NjYXR0ZXI6IFwiTGFzdHJvXCIsXG4gIGNoYXJ0VHlwZV9nYXVnZTogXCJFc2NhbGFcIixcbiAgY2hhcnRUeXBlX2J1bGxldDogXCJCYWxhXCIsXG4gIGhpZGVCdXR0b246IFwiRXNjb25kZXJcIixcbiAgbWFrZVByaXZhdGVCdXR0b246IFwiVG9ybmFyIHByaXZhZG9cIixcbiAgbWFrZVB1YmxpY0J1dHRvbjogXCJUb3JuYXIgcMO6YmxpY29cIixcbiAgc2hvd0J1dHRvbjogXCJNb3N0cmFyXCIsXG4gIGZpbHRlcjogXCJGaWx0cmFyXCIsXG4gIHJlc2V0RmlsdGVyOiBcIlJlc3RhdXJhciBGaWx0cm9cIixcbiAgY2hhbmdlTG9jYWxlOiBcIk11ZGFyIExvY2FsaXphw6fDo29cIixcbiAgY2xlYXJCdXR0b246IFwiTGltcGFyXCIsXG4gIGFkZEVsZW1lbnQ6IFwiRXNjb2xoZXIgcXVlc3TDo28gcGFyYSBtb3N0cmFyLi4uXCIsXG4gIGRlZmF1bHRPcmRlcjogXCJPcmRlbmHDp8OjbyBQYWRyw6NvXCIsXG4gIGFzY09yZGVyOiBcIkFzY2VuZGVudGVcIixcbiAgZGVzY09yZGVyOiBcIkRlc2NlbmRlbnRlXCIsXG4gIHNob3dNaW5vckNvbHVtbnM6IFwiTW9zdHJhciBjb2x1bmFzIG1lbm9yZXNcIixcbiAgb3RoZXJDb21tZW50VGl0bGU6IFwiT3V0cm9zIGl0ZW5zIGUgY29tZW50w6FyaW9zXCIsXG4gIHNob3dQZXJjZW50YWdlczogXCJNb3N0cmFyIHBlcmNlbnR1YWlzXCIsXG4gIGhpZGVQZXJjZW50YWdlczogXCJFc2NvbmRlciBwZXJjZW50dWFpc1wiLFxuICBwZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNTVlwiLFxuICBzYXZlRGlhZ3JhbUFzUE5HOiBcIkJhaXhhciBkaWFncmFtYSBjb21vIFBOR1wiLFxuICBoaWRlRW1wdHlBbnN3ZXJzOiBcIkVzY29uZGVyIHBlcmd1bnRhcyB2YXppYXNcIixcbiAgc2hvd0VtcHR5QW5zd2VyczogXCJNb3N0cmFyIHBlcmd1bnRhcyB2YXppYXNcIixcbiAgXCJ0b3BOVmFsdWVUZXh0LTFcIjogXCJUb2RhcyBhcyByZXNwb3N0YXNcIixcbiAgdG9wTlZhbHVlVGV4dDU6IFwiUHJpbWVpcmFzIDUgcmVzcG9zdGFzXCIsXG4gIHRvcE5WYWx1ZVRleHQxMDogXCJQcmltZWlyYXMgMTAgcmVzcG9zdGFzXCIsXG4gIHRvcE5WYWx1ZVRleHQyMDogXCJQcmltZWlyYXMgMjAgcmVzcG9zdGFzXCIsXG4gIGhpZGVNaXNzaW5nQW5zd2VyczogXCJPY3VsdGFyIHBlcmd1bnRhcyBuw6NvIHJlc3BvbmRpZGFzXCIsXG4gIHNob3dNaXNzaW5nQW5zd2VyczogXCJNb3N0cmFyIHBlcmd1bnRhcyBuw6NvIHJlc3BvbmRpZGFzXCIsXG4gIG1pc3NpbmdBbnN3ZXJzTGFiZWw6IFwiUGVyZ3VudGFzIG7Do28gcmVzcG9uZGlkYXNcIixcbiAgbm9WaXN1YWxpemVyRm9yUXVlc3Rpb246IFwiRXN0ZSB0aXBvIGRlIHBlcmd1bnRhIGFpbmRhIG7Do28gZm9pIHZpc3VhbGl6YWRhXCIsXG4gIG5vUmVzdWx0czogXCJBaW5kYSBuw6NvIHBvc3N1aSByZXN1bHRhZG9zXCIsXG4gIHNob3dQZXJWYWx1ZXM6IFwiUG9yIHZhbG9yZXNcIixcbiAgc2hvd1BlckNvbHVtbnM6IFwiUG9yIGNvbHVuYXNcIixcbiAgYW5zd2VyOiBcIlJlc3Bvc3RhXCIsXG4gIGNvcnJlY3RBbnN3ZXI6IFwiUmVzcG9zdGEgY29ycmV0YTogXCIsXG4gIHBlcmNlbnQ6IFwiUGVyY2VudGFnZW1cIixcbiAgcmVzcG9uc2VzOiBcIlJlc3Bvc3Rhc1wiXG59O1xuXG4vL1VuY29tbWVudCB0aGVzZSB0d28gbGluZXMgb24gY3JlYXRpbmcgYSB0cmFuc2xhdGlvbiBmaWxlLiBZb3Ugc2hvdWxkIHJlcGxhY2UgXCJlblwiIGFuZCBlblN0cmluZ3Mgd2l0aCB5b3VyIGxvY2FsZSAoXCJmclwiLCBcImRlXCIgYW5kIHNvIG9uKSBhbmQgeW91ciB2YXJpYWJsZS5cbmxvY2FsaXphdGlvbi5sb2NhbGVzW1wicHRcIl0gPSBwb3J0dWd1ZXNlU3RyaW5ncztcbmxvY2FsaXphdGlvbi5sb2NhbGVOYW1lc1tcInB0XCJdID0gXCJQb3J0dWd1w6pzXCI7XG4iLCJpbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuXG5leHBvcnQgdmFyIHJ1c3NpYW5TdHJpbmdzID0ge1xuICBncm91cEJ1dHRvbjogXCLQodCz0YDRg9C/0L/QuNGA0L7QstCw0YLRjFwiLFxuICB1bmdyb3VwQnV0dG9uOiBcItCg0LDQt9Cz0YDRg9C/0L/QuNGA0L7QstCw0YLRjFwiLFxuICBzZWxlY3RCdXR0b246IFwi0JLRi9Cx0YDQsNGC0YxcIixcbiAgaGlkZUNvbHVtbjogXCLQodC60YDRi9GC0Ywg0YHRgtC+0LvQsdC10YZcIixcbiAgc2hvd0NvbHVtbjogXCLQn9C+0LrQsNC30LDRgtGMINGB0YLQvtC70LHQtdGGXCIsXG4gIG1ha2VQcml2YXRlQ29sdW1uOiBcItCh0LTQtdC70LDRgtGMINGB0YLQvtC70LHQtdGGINC/0YDQuNCy0LDRgtC90YvQvFwiLFxuICBtYWtlUHVibGljQ29sdW1uOiBcItCh0LTQtdC70LDRgtGMINGB0YLQvtC70LHQtdGGINC/0YPQsdC70LjRh9C90YvQvFwiLFxuICBtb3ZlVG9EZXRhaWw6IFwi0KHQv9GA0Y/RgtCw0YLRjCDQsiDRgNCw0YHQutGA0YvQstCw0Y7RidGD0Y7RgdGPINGB0LXQutGG0LjRjlwiLFxuICBzaG93QXNDb2x1bW46IFwi0J/QvtC60LDQt9Cw0YLRjCDQutCw0Log0YHRgtC+0LvQsdC10YZcIixcbiAgZmlsdGVyUGxhY2Vob2xkZXI6IFwi0J/QvtC40YHQui4uLlwiLFxuICByZW1vdmVSb3dzOiBcItCj0LTQsNC70LjRgtGMINGB0YLRgNC+0LrQuFwiLFxuICBzaG93TGFiZWw6IFwi0J/QvtC60LDQt9Cw0YLRjFwiLFxuICBlbnRyaWVzTGFiZWw6IFwi0LfQsNC/0LjRgdC10LlcIixcbiAgdmlzdWFsaXplcl90ZXh0OiBcItCi0LDQsdC70LjRhtCwXCIsXG4gIHZpc3VhbGl6ZXJfd29yZGNsb3VkOiBcItCe0LHQu9Cw0LrQviDRgtGN0LPQvtCyXCIsXG4gIHZpc3VhbGl6ZXJfaGlzdG9ncmFtOiBcItCT0LjRgdGC0L7Qs9GA0LDQvNC80LBcIixcbiAgdmlzdWFsaXplcl9udW1iZXI6IFwi0KHRgNC10LTQvdC10LUg0LfQvdCw0YfQtdC90LjQtVwiLFxuICB2aXN1YWxpemVyX2Nob2ljZXM6IFwi0KLQsNCx0LvQuNGG0LBcIixcbiAgdmlzdWFsaXplcl9zZWxlY3RCYXNlOiBcItCU0LjQsNCz0YDQsNC80LzQsFwiLFxuICB2aXN1YWxpemVyX21hdHJpeDogXCLQlNC40LDQs9GA0LDQvNC80LBcIixcbiAgY2hhcnRUeXBlX2JhcjogXCLQodGC0L7Qu9Cx0YfQsNGC0LDRjyDQtNC40LDQs9GA0LDQvNC80LBcIixcbiAgY2hhcnRUeXBlX3ZiYXI6IFwi0JLQtdGA0YLQuNC60LDQu9GM0L3QsNGPINGB0YLQvtC70LHRh9Cw0YLQsNGPINC00LjQsNCz0YDQsNC80LzQsFwiLFxuICBjaGFydFR5cGVfc3RhY2tlZGJhcjogXCLQodGC0L7Qu9Cx0YfQsNGC0LDRjyDQtNC40LDQs9GA0LDQvNC80LAg0YEg0L3QsNC60L7Qv9C70LXQvdC40LXQvFwiLFxuICBjaGFydFR5cGVfZG91Z2hudXQ6IFwi0JrQvtC70YzRhtC10LLQsNGPINC00LjQsNCz0YDQsNC80LzQsFwiLFxuICBjaGFydFR5cGVfcGllOiBcItCa0YDRg9Cz0L7QstCw0Y8g0LTQuNCw0LPRgNCw0LzQvNCwXCIsXG4gIGNoYXJ0VHlwZV9zY2F0dGVyOiBcItCi0L7Rh9C10YfQvdCw0Y8g0LTQuNCw0LPRgNCw0LzQvNCwXCIsXG4gIGNoYXJ0VHlwZV9nYXVnZTogXCLQmNC30LzQtdGA0LjRgtC10LvRjNC90LDRjyDQtNC40LDQs9GA0LDQvNC80LBcIixcbiAgY2hhcnRUeXBlX2J1bGxldDogXCLQnNCw0YDQutC40YDQvtCy0LDQvdC90LDRjyDQtNC40LDQs9GA0LDQvNC80LBcIixcbiAgaGlkZUJ1dHRvbjogXCLQodC60YDRi9GC0YxcIixcbiAgbWFrZVByaXZhdGVCdXR0b246IFwi0KHQtNC10LvQsNGC0Ywg0L/RgNC40LLQsNGC0L3Ri9C8XCIsXG4gIG1ha2VQdWJsaWNCdXR0b246IFwi0KHQtNC10LvQsNGC0Ywg0L/Rg9Cx0LvQuNGH0L3Ri9C8XCIsXG4gIHNob3dCdXR0b246IFwi0J/QvtC60LDQt9Cw0YLRjFwiLFxuICBmaWx0ZXI6IFwi0KTQuNC70YzRgtGAXCIsXG4gIHJlc2V0RmlsdGVyOiBcItCe0YfQuNGB0YLQuNGC0Ywg0YTQuNC70YzRgtGAXCIsXG4gIGNoYW5nZUxvY2FsZTogXCLQodC80LXQvdC40YLRjCDRj9C30YvQulwiLFxuICBjbGVhckJ1dHRvbjogXCLQntGH0LjRgdGC0LjRgtGMXCIsXG4gIGFkZEVsZW1lbnQ6IFwi0JLRi9Cx0LXRgNC40YLQtSDQstC+0L/RgNC+0YEuLi5cIixcbiAgZGVmYXVsdE9yZGVyOiBcItCf0L7RgNGP0LTQvtC6INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOXCIsXG4gIGFzY09yZGVyOiBcItCh0L7RgNGC0LjRgNC+0LLQsNGC0Ywg0L/QviDQstC+0LfRgNCw0YHRgtCw0L3QuNGOXCIsXG4gIGRlc2NPcmRlcjogXCLQodC+0YDRgtC40YDQvtCy0LDRgtGMINC/0L4g0YPQsdGL0LLQsNC90LjRjlwiLFxuICBzaG93TWlub3JDb2x1bW5zOiBcItCf0L7QutCw0LfQsNGC0Ywg0LLRgtC+0YDQvtGB0YLQtdC/0LXQvdC90YvQtSDRgdGC0L7Qu9Cx0YbRi1wiLFxuICBvdGhlckNvbW1lbnRUaXRsZTogXCLQlNGA0YPQs9C+0LUg0Lgg0LrQvtC80LzQtdC90YLQsNGA0LjQuFwiLFxuICBzaG93UGVyY2VudGFnZXM6IFwi0J/QvtC60LDQt9Cw0YLRjCDQv9GA0L7RhtC10L3RgtGLXCIsXG4gIGhpZGVQZXJjZW50YWdlczogXCLQodC60YDRi9GC0Ywg0L/RgNC+0YbQtdC90YLRi1wiLFxuICBwZGZEb3dubG9hZENhcHRpb246IFwiUERGXCIsXG4gIHhsc3hEb3dubG9hZENhcHRpb246IFwiRXhjZWxcIixcbiAgY3N2RG93bmxvYWRDYXB0aW9uOiBcIkNTVlwiLFxuICBzYXZlRGlhZ3JhbUFzUE5HOiBcItCh0LrQsNGH0LDRgtGMINC00LjQsNCz0YDQsNC80LzRgyDQsiDRhNC+0YDQvNCw0YLQtSBQTkdcIixcbiAgaGlkZUVtcHR5QW5zd2VyczogXCLQodC60YDRi9GC0Ywg0L/Rg9GB0YLRi9C1INC+0YLQstC10YLRi1wiLFxuICBzaG93RW1wdHlBbnN3ZXJzOiBcItCf0L7QutCw0LfQsNGC0Ywg0L/Rg9GB0YLRi9C1INC+0YLQstC10YLRi1wiLFxuICBcInRvcE5WYWx1ZVRleHQtMVwiOiBcItCS0YHQtSDQvtGC0LLQtdGC0YtcIixcbiAgdG9wTlZhbHVlVGV4dDU6IFwi0J/QtdGA0LLRi9C1IDUg0L7RgtCy0LXRgtC+0LJcIixcbiAgdG9wTlZhbHVlVGV4dDEwOiBcItCf0LXRgNCy0YvQtSAxMCDQvtGC0LLQtdGC0L7QslwiLFxuICB0b3BOVmFsdWVUZXh0MjA6IFwi0J/QtdGA0LLRi9C1IDIwINC+0YLQstC10YLQvtCyXCIsXG4gIGhpZGVNaXNzaW5nQW5zd2VyczogXCLQodC60YDRi9GC0Ywg0L7RgtGB0YPRgtGB0YLQstGD0Y7RidC40LUg0L7RgtCy0LXRgtGLXCIsXG4gIHNob3dNaXNzaW5nQW5zd2VyczogXCLQn9C+0LrQsNC30LDRgtGMINC+0YLRgdGD0YLRgdGC0LLRg9GO0YnQuNC1INC+0YLQstC10YLRi1wiLFxuICBtaXNzaW5nQW5zd2Vyc0xhYmVsOiBcItCe0YLRgdGD0YLRgdGC0LLRg9GO0YnQuNC1INC+0YLQstC10YLRi1wiLFxuICBub1Zpc3VhbGl6ZXJGb3JRdWVzdGlvbjogXCLQrdGC0L7RgiDRgtC40L8g0LLQvtC/0YDQvtGB0LAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YLRgdGPXCIsXG4gIG5vUmVzdWx0czogXCLQoNC10LfRg9C70YzRgtCw0YLRiyDQvtGC0YHRg9GC0YHRgtCy0YPRjtGCXCIsXG4gIHNob3dQZXJWYWx1ZXM6IFwi0J/QviDQt9C90LDRh9C10L3QuNGP0LxcIixcbiAgc2hvd1BlckNvbHVtbnM6IFwi0J/QviDRgdGC0L7Qu9Cx0YbQsNC8XCIsXG4gIGFuc3dlcjogXCLQntGC0LLQtdGCXCIsXG4gIGNvcnJlY3RBbnN3ZXI6IFwi0J/RgNCw0LLQuNC70YzQvdGL0Lkg0L7RgtCy0LXRgjogXCIsXG4gIHBlcmNlbnQ6IFwi0L/RgNC+0YbQtdC90YLQvtCyXCIsXG4gIHJlc3BvbnNlczogXCLQvtGC0LLQtdGC0L7QslwiXG59O1xuXG5sb2NhbGl6YXRpb24ubG9jYWxlc1tcInJ1XCJdID0gcnVzc2lhblN0cmluZ3M7XG5sb2NhbGl6YXRpb24ubG9jYWxlTmFtZXNbXCJydVwiXSA9IFwi0KDRg9GB0YHQutC40LlcIjtcbiIsImV4cG9ydCAqIGZyb20gXCIuLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbi8vbG9jYWxpemF0aW9uXG5pbXBvcnQgXCIuLi9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2ZhcnNpXCI7XG5pbXBvcnQgXCIuLi9hbmFseXRpY3MtbG9jYWxpemF0aW9uL2ZyZW5jaFwiO1xuaW1wb3J0IFwiLi4vYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9nZXJtYW5cIjtcbmltcG9ydCBcIi4uL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vbm9yd2VnaWFuXCI7XG5pbXBvcnQgXCIuLi9hbmFseXRpY3MtbG9jYWxpemF0aW9uL3BvcnR1Z3Vlc2VcIjtcbmltcG9ydCBcIi4uL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vcnVzc2lhblwiO1xuaW1wb3J0IFwiLi4vYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9kdXRjaFwiO1xuaW1wb3J0IFwiLi4vYW5hbHl0aWNzLWxvY2FsaXphdGlvbi9hcmFiaWNcIjtcbmltcG9ydCBcIi4uL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vamFwYW5lc2VcIjtcblxuLy9leHRlbnNpb25zXG5pbXBvcnQgXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy9yb3dleHRlbnNpb25zXCI7XG5pbXBvcnQgXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy9oZWFkZXJleHRlbnNpb25zXCI7XG5pbXBvcnQgXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy9jb2x1bW5leHRlbnNpb25zXCI7XG5pbXBvcnQgXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy9kZXRhaWxzZXh0ZW5zaW9uc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi4vdGFibGVzL3RhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi4vdGFibGVzL2RhdGF0YWJsZXNcIjtcbmV4cG9ydCB7IFRhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuLi90YWJsZXMvZXh0ZW5zaW9ucy90YWJsZWV4dGVuc2lvbnNcIjtcbmV4cG9ydCB7IERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uL3V0aWxzL2luZGV4XCI7XG4iLCJpbXBvcnQgeyBlbmdsaXNoU3RyaW5ncyB9IGZyb20gXCIuL2FuYWx5dGljcy1sb2NhbGl6YXRpb24vZW5nbGlzaFwiO1xuXG5leHBvcnQgdmFyIGxvY2FsaXphdGlvbiA9IHtcbiAgY3VycmVudExvY2FsZVZhbHVlOiBcIlwiLFxuICBkZWZhdWx0TG9jYWxlVmFsdWU6IFwiZW5cIixcbiAgbG9jYWxlczogPHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfT57fSxcbiAgbG9jYWxlTmFtZXM6IDx7IFtpbmRleDogc3RyaW5nXTogYW55IH0+e30sXG4gIHN1cHBvcnRlZExvY2FsZXM6IDxBcnJheTxhbnk+PltdLFxuICBnZXQgY3VycmVudExvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50TG9jYWxlVmFsdWUgPT09IHRoaXMuZGVmYXVsdExvY2FsZVZhbHVlXG4gICAgICA/IFwiXCJcbiAgICAgIDogdGhpcy5jdXJyZW50TG9jYWxlVmFsdWU7XG4gIH0sXG4gIHNldCBjdXJyZW50TG9jYWxlKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50TG9jYWxlVmFsdWUgPSB2YWw7XG4gIH0sXG4gIGdldCBkZWZhdWx0TG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRMb2NhbGVWYWx1ZTtcbiAgfSxcbiAgc2V0IGRlZmF1bHRMb2NhbGUodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlZmF1bHRMb2NhbGVWYWx1ZSA9IHZhbDtcbiAgfSxcbiAgZ2V0U3RyaW5nOiBmdW5jdGlvbiAoc3RyTmFtZTogc3RyaW5nKSB7XG4gICAgdmFyIGxvYyA9IHRoaXMuY3VycmVudExvY2FsZVxuICAgICAgPyB0aGlzLmxvY2FsZXNbdGhpcy5jdXJyZW50TG9jYWxlXVxuICAgICAgOiB0aGlzLmxvY2FsZXNbdGhpcy5kZWZhdWx0TG9jYWxlXTtcbiAgICBpZiAoIWxvYyB8fCAhbG9jW3N0ck5hbWVdKSBsb2MgPSB0aGlzLmxvY2FsZXNbdGhpcy5kZWZhdWx0TG9jYWxlXTtcbiAgICB2YXIgcmVzdWx0ID0gbG9jW3N0ck5hbWVdO1xuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5sb2NhbGVzW1wiZW5cIl1bc3RyTmFtZV0gfHwgc3RyTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSxcbiAgZ2V0TG9jYWxlczogZnVuY3Rpb24gKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICByZXMucHVzaChcIlwiKTtcbiAgICBpZiAodGhpcy5zdXBwb3J0ZWRMb2NhbGVzICYmIHRoaXMuc3VwcG9ydGVkTG9jYWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3VwcG9ydGVkTG9jYWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXMucHVzaCh0aGlzLnN1cHBvcnRlZExvY2FsZXNbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5sb2NhbGVzKSB7XG4gICAgICAgIHJlcy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlcy5zb3J0KCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxufTtcblxuZXhwb3J0IHZhciBzdXJ2ZXlTdHJpbmdzID0gZW5nbGlzaFN0cmluZ3M7XG4oPGFueT5sb2NhbGl6YXRpb24pLmxvY2FsZXNbXCJlblwiXSA9IGVuZ2xpc2hTdHJpbmdzO1xuKDxhbnk+bG9jYWxpemF0aW9uKS5sb2NhbGVOYW1lc1tcImVuXCJdID0gXCJFbmdsaXNoXCI7XG4iLCJpbXBvcnQgeyBRdWVzdGlvbiwgUXVlc3Rpb25Db21wb3NpdGVNb2RlbCwgUXVlc3Rpb25DdXN0b21Nb2RlbCwgUXVlc3Rpb25GaWxlTW9kZWwsIFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbCwgUXVlc3Rpb25NYXRyaXhNb2RlbCwgUXVlc3Rpb25TZWxlY3RCYXNlIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBCYXNlQ29sdW1uLCBDb21tZW50Q29sdW1uLCBDb21wb3NpdGVRdWVzdGlvbkNvbHVtbiwgQ3VzdG9tUXVlc3Rpb25Db2x1bW4sIEZpbGVDb2x1bW4sIEltYWdlQ29sdW1uLCBNYXRyaXhDb2x1bW4sIE1hdHJpeERyb3Bkb3duQ29sdW1uIH0gZnJvbSBcIi4vY29sdW1uc1wiO1xuaW1wb3J0IHsgSUNvbHVtbiB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiLi90YWJsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5zQnVpbGRlciB7XG4gIGJ1aWxkQ29sdW1ucyhxdWVzdGlvbjogUXVlc3Rpb24sIHRhYmxlOiBUYWJsZSk6IEFycmF5PElDb2x1bW4+O1xufVxuZXhwb3J0IGNsYXNzIERlZmF1bHRDb2x1bW5zQnVpbGRlcjxUIGV4dGVuZHMgUXVlc3Rpb24gPSBRdWVzdGlvbj4gaW1wbGVtZW50cyBJQ29sdW1uc0J1aWxkZXIge1xuICBwcm90ZWN0ZWQgY3JlYXRlQ29sdW1uKHF1ZXN0aW9uOiBULCB0YWJsZTogVGFibGUpIHtcbiAgICByZXR1cm4gbmV3IEJhc2VDb2x1bW4ocXVlc3Rpb24sIHRhYmxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZENvbHVtbnNDb3JlKHF1ZXN0aW9uOiBULCB0YWJsZTogVGFibGUpOiBBcnJheTxJQ29sdW1uPiB7XG4gICAgY29uc3QgY29sdW1uczogQXJyYXk8SUNvbHVtbj4gPSBbXTtcbiAgICBjb2x1bW5zLnB1c2godGhpcy5jcmVhdGVDb2x1bW4ocXVlc3Rpb24sIHRhYmxlKSk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDb2x1bW5zKHF1ZXN0aW9uOiBULCB0YWJsZTogVGFibGUpOiBBcnJheTxJQ29sdW1uPiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zQ29yZShxdWVzdGlvbiwgdGFibGUpO1xuICAgIGlmIChcbiAgICAgIHF1ZXN0aW9uLmhhc0NvbW1lbnQgfHxcbiAgICAgIChxdWVzdGlvbi5oYXNPdGhlciAmJiAoPGFueT5xdWVzdGlvbiBhcyBRdWVzdGlvblNlbGVjdEJhc2UpW1wiZ2V0U3RvcmVPdGhlcnNBc0NvbW1lbnRcIl0oKSlcbiAgICApIHtcbiAgICAgIGNvbHVtbnMucHVzaChuZXcgQ29tbWVudENvbHVtbihxdWVzdGlvbiwgdGFibGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtbnNCdWlsZGVyRmFjdG9yeSB7XG4gIHB1YmxpYyBzdGF0aWMgSW5zdGFuY2U6IENvbHVtbnNCdWlsZGVyRmFjdG9yeSA9IG5ldyBDb2x1bW5zQnVpbGRlckZhY3RvcnkoKTtcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5zQnVpbGRlcnM6IHtbaW5kZXg6IHN0cmluZ106IElDb2x1bW5zQnVpbGRlciB9ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdENvbHVtbnNCdWlsZGVyOiBJQ29sdW1uc0J1aWxkZXIgPSBuZXcgRGVmYXVsdENvbHVtbnNCdWlsZGVyKCk7XG5cbiAgcmVnaXN0ZXJCdWlsZGVyQ29sdW1uKHR5cGU6IHN0cmluZywgY29sdW1uc0J1aWxkZXI6IElDb2x1bW5zQnVpbGRlcikge1xuICAgIHRoaXMuY29sdW1uc0J1aWxkZXJzW3R5cGVdID0gY29sdW1uc0J1aWxkZXI7XG4gIH1cbiAgZ2V0Q29sdW1uc0J1aWxkZXIodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uc0J1aWxkZXJzW3R5cGVdIHx8IHRoaXMuZGVmYXVsdENvbHVtbnNCdWlsZGVyO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNYXRyaXhDb2x1bW5zQnVpbGRlciBleHRlbmRzIERlZmF1bHRDb2x1bW5zQnVpbGRlcjxRdWVzdGlvbk1hdHJpeE1vZGVsPiB7XG4gIHByb3RlY3RlZCBidWlsZENvbHVtbnNDb3JlKHF1ZXN0aW9uQmFzZTogUXVlc3Rpb24sIHRhYmxlOiBUYWJsZSk6IElDb2x1bW5bXSB7XG4gICAgY29uc3QgcXVlc3Rpb24gPSA8UXVlc3Rpb25NYXRyaXhNb2RlbD5xdWVzdGlvbkJhc2U7XG4gICAgY29uc3QgY29sdW1ucyA9IFtdO1xuICAgIHF1ZXN0aW9uLnJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgY29sdW1ucy5wdXNoKG5ldyBNYXRyaXhDb2x1bW4ocXVlc3Rpb24sIHJvdywgdGFibGUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29sdW1ucztcbiAgfVxufVxuQ29sdW1uc0J1aWxkZXJGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQnVpbGRlckNvbHVtbihcIm1hdHJpeFwiLCBuZXcgTWF0cml4Q29sdW1uc0J1aWxkZXIoKSk7XG5cbmV4cG9ydCBjbGFzcyBJbWFnZUNvbHVtbnNCdWlsZGVyIGV4dGVuZHMgRGVmYXVsdENvbHVtbnNCdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbHVtbihxdWVzdGlvbjogUXVlc3Rpb24sIHRhYmxlOiBUYWJsZSk6IEltYWdlQ29sdW1uIHtcbiAgICByZXR1cm4gbmV3IEltYWdlQ29sdW1uKHF1ZXN0aW9uLCB0YWJsZSk7XG4gIH1cbn1cbkNvbHVtbnNCdWlsZGVyRmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckJ1aWxkZXJDb2x1bW4oXCJzaWduYXR1cmVwYWRcIiwgbmV3IEltYWdlQ29sdW1uc0J1aWxkZXIoKSk7XG5cbmV4cG9ydCBjbGFzcyBGaWxlQ29sdW1uc0J1aWxkZXIgZXh0ZW5kcyBEZWZhdWx0Q29sdW1uc0J1aWxkZXI8UXVlc3Rpb25GaWxlTW9kZWw+IHtcbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbHVtbihxdWVzdGlvbjogUXVlc3Rpb25GaWxlTW9kZWwsIHRhYmxlOiBUYWJsZSk6IEZpbGVDb2x1bW4ge1xuICAgIHJldHVybiBuZXcgRmlsZUNvbHVtbihxdWVzdGlvbiwgdGFibGUpO1xuICB9XG59XG5Db2x1bW5zQnVpbGRlckZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJCdWlsZGVyQ29sdW1uKFwiZmlsZVwiLCBuZXcgRmlsZUNvbHVtbnNCdWlsZGVyKCkpO1xuXG5leHBvcnQgY2xhc3MgTWF0cml4RHJvcGRvd25Db2x1bW5CdWlsZGVyIGV4dGVuZHMgRGVmYXVsdENvbHVtbnNCdWlsZGVyIHtcbiAgcHVibGljIGJ1aWxkQ29sdW1ucyhxdWVzdGlvbkJhc2U6IFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbCwgdGFibGU6IFRhYmxlKTogQXJyYXk8SUNvbHVtbj4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uID0gPFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbD5xdWVzdGlvbkJhc2U7XG4gICAgY29uc3QgY29sdW1ucyA9IFtdO1xuICAgIHF1ZXN0aW9uLnJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgcXVlc3Rpb24uY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgIGNvbHVtbnMucHVzaChuZXcgTWF0cml4RHJvcGRvd25Db2x1bW4ocXVlc3Rpb24sIHJvdywgY29sLCB0YWJsZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH1cbn1cbkNvbHVtbnNCdWlsZGVyRmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckJ1aWxkZXJDb2x1bW4oXCJtYXRyaXhkcm9wZG93blwiLCBuZXcgTWF0cml4RHJvcGRvd25Db2x1bW5CdWlsZGVyKCkpO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29sdW1uc0J1aWxkZXIgZXh0ZW5kcyBEZWZhdWx0Q29sdW1uc0J1aWxkZXI8UXVlc3Rpb25DdXN0b21Nb2RlbD4ge1xuICBwcm90ZWN0ZWQgY3JlYXRlQ29sdW1uKHF1ZXN0aW9uOiBRdWVzdGlvbkN1c3RvbU1vZGVsLCB0YWJsZTogVGFibGUpOiBDdXN0b21RdWVzdGlvbkNvbHVtbiB7XG4gICAgcmV0dXJuIG5ldyBDdXN0b21RdWVzdGlvbkNvbHVtbihxdWVzdGlvbiwgdGFibGUpO1xuICB9XG59XG5Db2x1bW5zQnVpbGRlckZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJCdWlsZGVyQ29sdW1uKFwiY3VzdG9tXCIsIG5ldyBDdXN0b21Db2x1bW5zQnVpbGRlcigpKTtcblxuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZUNvbHVtbnNCdWlsZGVyIGV4dGVuZHMgRGVmYXVsdENvbHVtbnNCdWlsZGVyPFF1ZXN0aW9uQ29tcG9zaXRlTW9kZWw+IHtcbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbHVtbihxdWVzdGlvbjogUXVlc3Rpb25Db21wb3NpdGVNb2RlbCwgdGFibGU6IFRhYmxlKTogQ29tcG9zaXRlUXVlc3Rpb25Db2x1bW4ge1xuICAgIHJldHVybiBuZXcgQ29tcG9zaXRlUXVlc3Rpb25Db2x1bW4ocXVlc3Rpb24sIHRhYmxlKTtcbiAgfVxufVxuQ29sdW1uc0J1aWxkZXJGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQnVpbGRlckNvbHVtbihcImNvbXBvc2l0ZVwiLCBuZXcgQ29tcG9zaXRlQ29sdW1uc0J1aWxkZXIoKSk7XG4iLCJpbXBvcnQgeyBCYXNlLCBJdGVtVmFsdWUsIE1hdHJpeFJvd01vZGVsLCBRdWVzdGlvbiwgUXVlc3Rpb25Db21wb3NpdGVNb2RlbCwgUXVlc3Rpb25DdXN0b21Nb2RlbCwgUXVlc3Rpb25GaWxlTW9kZWwsIFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbCwgUXVlc3Rpb25NYXRyaXhNb2RlbCwgc2V0dGluZ3MgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUltYWdlc0NvbnRhaW5lciwgY3JlYXRlTGlua3NDb250YWluZXIgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IElDZWxsRGF0YSwgSUNvbHVtbiwgQ29sdW1uRGF0YVR5cGUsIFF1ZXN0aW9uTG9jYXRpb24sIElDb2x1bW5EYXRhIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBJVGFibGVPcHRpb25zLCBUYWJsZSB9IGZyb20gXCIuL3RhYmxlXCI7XG5leHBvcnQgY2xhc3MgQmFzZUNvbHVtbjxUIGV4dGVuZHMgUXVlc3Rpb24gPSBRdWVzdGlvbj4gaW1wbGVtZW50cyBJQ29sdW1uIHtcbiAgZGF0YVR5cGU6IENvbHVtbkRhdGFUeXBlO1xuICBpc1Zpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc1B1YmxpYzogYm9vbGVhbiA9IHRydWU7XG4gIGxvY2F0aW9uOiBRdWVzdGlvbkxvY2F0aW9uID0gUXVlc3Rpb25Mb2NhdGlvbi5Db2x1bW47XG4gIHdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuICB2aXNpYmxlSW5kZXg/OiBudW1iZXI7XG4gIGlzQ29tbWVudD86IGJvb2xlYW47XG4gIHByaXZhdGUgbmFtZVZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgZGlzcGxheU5hbWVWYWx1ZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcXVlc3Rpb246IFQsIHByb3RlY3RlZCB0YWJsZTogVGFibGUpIHtcbiAgICB0aGlzLmRhdGFUeXBlID0gdGhpcy5nZXREYXRhVHlwZSgpO1xuICB9XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgaWYoIXRoaXMubmFtZVZhbHVlKSB7XG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLmdldE5hbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmFtZVZhbHVlO1xuICB9XG4gIHNldCBuYW1lKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lVmFsdWUgPSB2YWw7XG4gIH1cbiAgZ2V0IGRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYoIXRoaXMuZGlzcGxheU5hbWVWYWx1ZSkge1xuICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RGlzcGxheU5hbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU5hbWVWYWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc3BsYXlOYW1lKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwbGF5TmFtZVZhbHVlID0gdmFsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUudXNlTmFtZXNBc1RpdGxlc1xuICAgICAgPyB0aGlzLnF1ZXN0aW9uLm5hbWVcbiAgICAgIDogKHRoaXMucXVlc3Rpb24udGl0bGUgfHwgXCJcIikudHJpbSgpIHx8IHRoaXMucXVlc3Rpb24ubmFtZTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uLm5hbWU7XG4gIH1cbiAgcHJvdGVjdGVkIGdldERhdGFUeXBlKCk6IENvbHVtbkRhdGFUeXBlIHtcbiAgICByZXR1cm4gQ29sdW1uRGF0YVR5cGUuVGV4dDtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVZhbHVlQ29yZShkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gZGF0YVt0aGlzLm5hbWVdO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwUmVhZHlDaGFuZ2VkQ2FsbGJhY2sodGFibGU6IFRhYmxlLCBxdWVzdGlvbjogUXVlc3Rpb24pIHtcbiAgICBpZighIXF1ZXN0aW9uKSB7XG4gICAgICBjb25zdCBvblJlYWR5Q2hhbmdlZENhbGxiYWNrID0gKHNlbmRlciwgb3B0aW9ucykgPT4ge1xuICAgICAgICBpZihvcHRpb25zLmlzUmVhZHkpIHtcbiAgICAgICAgICB0YWJsZS5yZWZyZXNoKCF0YWJsZS5pc0luaXRUYWJsZURhdGFQcm9jZXNzaW5nKTtcbiAgICAgICAgICBzZW5kZXIub25SZWFkeUNoYW5nZWQucmVtb3ZlKG9uUmVhZHlDaGFuZ2VkQ2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgaWYoIXF1ZXN0aW9uLmlzUmVhZHkpIHtcbiAgICAgICAgcXVlc3Rpb24ub25SZWFkeUNoYW5nZWQuYWRkKG9uUmVhZHlDaGFuZ2VkQ2FsbGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREaXNwbGF5VmFsdWUoZGF0YTogYW55LCB0YWJsZTogVGFibGUsIG9wdGlvbnM6IElUYWJsZU9wdGlvbnMpOiBhbnkge1xuICAgIGxldCBkaXNwbGF5VmFsdWUgPSB0aGlzLmdldERpc3BsYXlWYWx1ZUNvcmUoZGF0YSk7XG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uO1xuXG4gICAgaWYgKCEhcXVlc3Rpb24pIHtcbiAgICAgIGlmIChvcHRpb25zLnVzZVZhbHVlc0FzTGFiZWxzKSB7XG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IHF1ZXN0aW9uLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzcGxheVZhbHVlID0gcXVlc3Rpb24uZGlzcGxheVZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzcGxheVZhbHVlO1xuICB9XG4gIHByaXZhdGUgZm9ybWF0RGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBkaXNwbGF5VmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgID8gZGlzcGxheVZhbHVlXG4gICAgICA6IEpTT04uc3RyaW5naWZ5KGRpc3BsYXlWYWx1ZSkgfHwgXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsRGF0YSh0YWJsZTogVGFibGUsIGRhdGE6IGFueSk6IElDZWxsRGF0YSB7XG4gICAgY29uc3QgZGlzcGxheVZhbHVlID0gdGhpcy5nZXREaXNwbGF5VmFsdWUoZGF0YSwgdGFibGUsIHRhYmxlLm9wdGlvbnMpO1xuICAgIHRoaXMuc2V0dXBSZWFkeUNoYW5nZWRDYWxsYmFjayh0YWJsZSwgdGhpcy5xdWVzdGlvbik7XG4gICAgcmV0dXJuIHsgcXVlc3Rpb246IHRoaXMucXVlc3Rpb24sIGRpc3BsYXlWYWx1ZTogdGhpcy5mb3JtYXREaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlKSB9O1xuICB9XG4gIHB1YmxpYyB0b0pTT04oKTogSUNvbHVtbkRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogdGhpcy5kaXNwbGF5TmFtZSxcbiAgICAgIGRhdGFUeXBlOiB0aGlzLmRhdGFUeXBlLFxuICAgICAgaXNWaXNpYmxlOiB0aGlzLmlzVmlzaWJsZSxcbiAgICAgIGlzUHVibGljOiB0aGlzLmlzUHVibGljLFxuICAgICAgbG9jYXRpb246IHRoaXMubG9jYXRpb25cbiAgICB9O1xuICB9XG4gIHB1YmxpYyBmcm9tSlNPTihkYXRhOiBJQ29sdW1uRGF0YSkge1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHRoaXNba2V5XSA9IGRhdGFba2V5XTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdENvbHVtbiBleHRlbmRzIEJhc2VDb2x1bW4ge1xuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVZhbHVlKGRhdGE6IGFueSwgdGFibGU6IFRhYmxlLCBvcHRpb25zOiBJVGFibGVPcHRpb25zKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVDb3JlKGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tZW50Q29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbiB7XG4gIHByb3RlY3RlZCBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucXVlc3Rpb24ubmFtZX0ke3NldHRpbmdzLmNvbW1lbnRQcmVmaXh9YDtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWVzdGlvbi5oYXNPdGhlclxuICAgICAgPyAoPGFueT50aGlzLnF1ZXN0aW9uKS5vdGhlclRleHRcbiAgICAgIDogdGhpcy5xdWVzdGlvbi5jb21tZW50VGV4dDtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVZhbHVlKGRhdGE6IGFueSwgdGFibGU6IFRhYmxlLCBvcHRpb25zOiBJVGFibGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlc3Rpb24uY29tbWVudDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWF0cml4Q29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbjxRdWVzdGlvbk1hdHJpeE1vZGVsPiB7XG4gIHByaXZhdGUgdmFsdWVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgdmFsdWVQYXRoOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHF1ZXN0aW9uOiBRdWVzdGlvbk1hdHJpeE1vZGVsLCBwcml2YXRlIHJvdzogTWF0cml4Um93TW9kZWwsIHRhYmxlOiBUYWJsZSkge1xuICAgIHN1cGVyKHF1ZXN0aW9uLCB0YWJsZSk7XG4gICAgdGhpcy52YWx1ZU5hbWUgPSB0aGlzLnF1ZXN0aW9uLm5hbWU7XG4gICAgdGhpcy52YWx1ZVBhdGggPSB0aGlzLnJvdz8udmFsdWU7XG4gIH1cbiAgcHJvdGVjdGVkIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWVzdGlvbi5uYW1lICsgXCIuXCIgKyB0aGlzLnJvdz8udmFsdWU7XG4gIH1cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlO1xuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5xdWVzdGlvbjtcbiAgICBjb25zdCByb3cgPSB0aGlzLnJvdztcbiAgICByZXR1cm4gKHRhYmxlLnVzZU5hbWVzQXNUaXRsZXNcbiAgICAgID8gcXVlc3Rpb24ubmFtZVxuICAgICAgOiAocXVlc3Rpb24udGl0bGUgfHwgXCJcIikudHJpbSgpIHx8IHF1ZXN0aW9uLm5hbWUpICsgXCIgLSBcIiArICh0YWJsZS51c2VOYW1lc0FzVGl0bGVzID8gcm93Py52YWx1ZSA6IHJvdz8ubG9jVGV4dC50ZXh0T3JIdG1sKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREaXNwbGF5VmFsdWUoZGF0YTogYW55LCB0YWJsZTogVGFibGUsIG9wdGlvbnM6IElUYWJsZU9wdGlvbnMpIHtcbiAgICBsZXQgZGlzcGxheVZhbHVlID0gZGF0YVt0aGlzLnZhbHVlTmFtZV07XG4gICAgaWYodGhpcy52YWx1ZVBhdGggJiYgdHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgZGlzcGxheVZhbHVlID0gZGlzcGxheVZhbHVlW3RoaXMudmFsdWVQYXRoXTtcbiAgICAgIGlmKGRpc3BsYXlWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNob2ljZVZhbHVlID0gSXRlbVZhbHVlLmdldEl0ZW1CeVZhbHVlKHRoaXMucXVlc3Rpb24uY29sdW1ucywgZGlzcGxheVZhbHVlKTtcbiAgICAgICAgaWYoISFjaG9pY2VWYWx1ZSkge1xuICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9IG9wdGlvbnMudXNlVmFsdWVzQXNMYWJlbHMgPyBjaG9pY2VWYWx1ZS52YWx1ZSA6IGNob2ljZVZhbHVlLmxvY1RleHQudGV4dE9ySHRtbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzcGxheVZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbWFnZUNvbHVtbiBleHRlbmRzIEJhc2VDb2x1bW4ge1xuICBwcm90ZWN0ZWQgZ2V0RGF0YVR5cGUoKTogQ29sdW1uRGF0YVR5cGUge1xuICAgIHJldHVybiBDb2x1bW5EYXRhVHlwZS5JbWFnZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsZUNvbHVtbiBleHRlbmRzIEJhc2VDb2x1bW48UXVlc3Rpb25GaWxlTW9kZWw+IHtcbiAgcHJvdGVjdGVkIGdldERhdGFUeXBlKCk6IENvbHVtbkRhdGFUeXBlIHtcbiAgICByZXR1cm4gQ29sdW1uRGF0YVR5cGUuRmlsZUxpbms7XG4gIH1cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlWYWx1ZShkYXRhOiBhbnksIHRhYmxlOiBUYWJsZSwgb3B0aW9uczogSVRhYmxlT3B0aW9ucykge1xuICAgIGxldCBkaXNwbGF5VmFsdWUgPSB0aGlzLmdldERpc3BsYXlWYWx1ZUNvcmUoZGF0YSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheVZhbHVlKSkge1xuICAgICAgZGlzcGxheVZhbHVlID0gVGFibGUuc2hvd0ZpbGVzQXNJbWFnZXMgPyBjcmVhdGVJbWFnZXNDb250YWluZXIoXG4gICAgICAgIGRpc3BsYXlWYWx1ZVxuICAgICAgKS5vdXRlckhUTUwgOiBjcmVhdGVMaW5rc0NvbnRhaW5lcihcbiAgICAgICAgZGlzcGxheVZhbHVlXG4gICAgICApLm91dGVySFRNTDtcbiAgICB9XG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZTtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIE1hdHJpeERyb3Bkb3duQ29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbjxRdWVzdGlvbk1hdHJpeERyb3Bkb3duTW9kZWw+IHtcbiAgcHJpdmF0ZSByb3dWYWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIGNvbE5hbWU6IHN0cmluZztcbiAgY29uc3RydWN0b3IocXVlc3Rpb246IFF1ZXN0aW9uTWF0cml4RHJvcGRvd25Nb2RlbCwgcHJvdGVjdGVkIHJvdywgcHJvdGVjdGVkIGNvbCwgdGFibGU6IFRhYmxlKSB7XG4gICAgc3VwZXIocXVlc3Rpb24sIHRhYmxlKTtcbiAgICB0aGlzLnJvd1ZhbHVlID0gdGhpcy5yb3cudmFsdWU7XG4gICAgdGhpcy5jb2xOYW1lID0gdGhpcy5jb2wubmFtZTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uLm5hbWUgKyBcIi5cIiArIHRoaXMucm93LnZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbC5uYW1lO1xuICB9XG4gIHByb3RlY3RlZCBnZXREaXNwbGF5TmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZTtcbiAgICBjb25zdCBxdWVzdGlvbiA9IHRoaXMucXVlc3Rpb247XG4gICAgcmV0dXJuICh0aGlzLnRhYmxlLnVzZU5hbWVzQXNUaXRsZXNcbiAgICAgID8gcXVlc3Rpb24ubmFtZVxuICAgICAgOiAocXVlc3Rpb24udGl0bGUgfHwgXCJcIikudHJpbSgpIHx8IHF1ZXN0aW9uLm5hbWUpICsgXCIgLSBcIiArICh0YWJsZS51c2VOYW1lc0FzVGl0bGVzID8gdGhpcy5yb3cudmFsdWUgOiB0aGlzLnJvdy5sb2NUZXh0LnRleHRPckh0bWwpICsgXCIgLSBcIiArICh0YWJsZS51c2VOYW1lc0FzVGl0bGVzID8gdGhpcy5jb2wubmFtZSA6IHRoaXMuY29sLmxvY1RpdGxlLnRleHRPckh0bWwpO1xuXG4gIH1cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlWYWx1ZShkYXRhOiBhbnksIHRhYmxlOiBUYWJsZSwgb3B0aW9uczogSVRhYmxlT3B0aW9ucykge1xuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBkYXRhW3RoaXMucXVlc3Rpb24ubmFtZV07XG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uO1xuICAgIGlmKHRoaXMucm93VmFsdWUgJiYgdGhpcy5jb2xOYW1lICYmIHR5cGVvZiBkaXNwbGF5VmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBbcm93SWQsIGNvbElkXSA9IFt0aGlzLnJvd1ZhbHVlLCB0aGlzLmNvbE5hbWVdO1xuICAgICAgZGlzcGxheVZhbHVlID0gcXVlc3Rpb24udmFsdWU7XG4gICAgICBpZighb3B0aW9ucy51c2VWYWx1ZXNBc0xhYmVscykge1xuICAgICAgICBkaXNwbGF5VmFsdWUgPSBxdWVzdGlvbi5kaXNwbGF5VmFsdWU7XG4gICAgICAgIHJvd0lkID0gcXVlc3Rpb24ucm93cy5maWx0ZXIocm93ID0+IHJvdy52YWx1ZSA9PT0gdGhpcy5yb3dWYWx1ZSlbMF0udGV4dDtcbiAgICAgICAgY29sSWQgPSBxdWVzdGlvbi5nZXRDb2x1bW5CeU5hbWUodGhpcy5jb2xOYW1lKS50aXRsZTtcbiAgICAgIH1cbiAgICAgIGRpc3BsYXlWYWx1ZSA9IChkaXNwbGF5VmFsdWVbcm93SWRdICYmIGRpc3BsYXlWYWx1ZVtyb3dJZF1bY29sSWRdKSB8fCBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gZGlzcGxheVZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21RdWVzdGlvbkNvbHVtbiBleHRlbmRzIEJhc2VDb2x1bW48UXVlc3Rpb25DdXN0b21Nb2RlbD4ge1xuICBwdWJsaWMgZ2V0Q2VsbERhdGEodGFibGU6IFRhYmxlLCBkYXRhOiBhbnkpOiBJQ2VsbERhdGEge1xuICAgIHRoaXMuc2V0dXBSZWFkeUNoYW5nZWRDYWxsYmFjayh0YWJsZSwgdGhpcy5xdWVzdGlvbi5jb250ZW50UXVlc3Rpb24pO1xuICAgIHJldHVybiBzdXBlci5nZXRDZWxsRGF0YSh0YWJsZSwgZGF0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZVF1ZXN0aW9uQ29sdW1uIGV4dGVuZHMgQmFzZUNvbHVtbjxRdWVzdGlvbkNvbXBvc2l0ZU1vZGVsPiB7XG4gIHB1YmxpYyBnZXRDZWxsRGF0YSh0YWJsZTogVGFibGUsIGRhdGE6IGFueSk6IElDZWxsRGF0YSB7XG4gICAgY29uc3QgcXVlc3Rpb25MaXN0OiBRdWVzdGlvbltdID0gW107XG4gICAgdGhpcy5xdWVzdGlvbi5jb250ZW50UGFuZWwuYWRkUXVlc3Rpb25zVG9MaXN0KHF1ZXN0aW9uTGlzdCk7XG4gICAgcXVlc3Rpb25MaXN0LmZvckVhY2goKHF1ZXN0aW9uOiBRdWVzdGlvbikgPT4ge1xuICAgICAgdGhpcy5zZXR1cFJlYWR5Q2hhbmdlZENhbGxiYWNrKHRhYmxlLCBxdWVzdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN1cGVyLmdldENlbGxEYXRhKHRhYmxlLCBkYXRhKTtcbiAgfVxufSIsImltcG9ydCB7IFF1ZXN0aW9uLCBTdXJ2ZXlNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgSVRhYmxlT3B0aW9ucywgVGFibGUgfSBmcm9tIFwiLi90YWJsZVwiO1xuXG5leHBvcnQgZW51bSBRdWVzdGlvbkxvY2F0aW9uIHtcbiAgQ29sdW1uLFxuICBSb3csXG59XG5leHBvcnQgZW51bSBDb2x1bW5EYXRhVHlwZSB7XG4gIFRleHQsXG4gIEZpbGVMaW5rLFxuICBJbWFnZSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2VsbERhdGEge1xuICBxdWVzdGlvbjogUXVlc3Rpb247XG4gIGRpc3BsYXlWYWx1ZTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5EYXRhIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBkYXRhVHlwZTogQ29sdW1uRGF0YVR5cGU7XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbiAgaXNQdWJsaWM6IGJvb2xlYW47XG4gIGxvY2F0aW9uOiBRdWVzdGlvbkxvY2F0aW9uO1xuICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgaXNDb21tZW50PzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbiBleHRlbmRzIElDb2x1bW5EYXRhIHtcbiAgdmlzaWJsZUluZGV4PzogbnVtYmVyO1xuICBmcm9tSlNPTihqc29uOiBhbnkpOiB2b2lkO1xuICBnZXRDZWxsRGF0YSh0YWJsZTogVGFibGUsIGRhdGE6IGFueSk6IElDZWxsRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVTdGF0ZSB7XG4gIGxvY2FsZT86IHN0cmluZztcbiAgZWxlbWVudHM/OiBJQ29sdW1uRGF0YVtdO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGVybWlzc2lvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgaXNQdWJsaWM6IGJvb2xlYW47XG59XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iLCJpbXBvcnQgeyBJVGFibGVPcHRpb25zLCBUYWJsZSwgVGFibGVSb3cgfSBmcm9tIFwiLi90YWJsZVwiO1xuaW1wb3J0IHsgU3VydmV5TW9kZWwsIEV2ZW50IH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBDb2x1bW5EYXRhVHlwZSwgSUNvbHVtbiwgSUNvbHVtbkRhdGEsIFF1ZXN0aW9uTG9jYXRpb24gfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbnZhciBzdHlsZXMgPSByZXF1aXJlKFwiLi9kYXRhdGFibGVzLnNjc3NcIik7XG5cbmlmICghIWRvY3VtZW50KSB7XG4gIHZhciBzdmdUZW1wbGF0ZSA9IHJlcXVpcmUoXCJodG1sLWxvYWRlcj9pbnRlcnBvbGF0ZSF2YWwtbG9hZGVyIS4uL3N2Z2J1bmRsZS5odG1sXCIpO1xuICB2YXIgdGVtcGxhdGVIb2xkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICB0ZW1wbGF0ZUhvbGRlci5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIHRlbXBsYXRlSG9sZGVyLmlubmVySFRNTCA9IHN2Z1RlbXBsYXRlO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRlbXBsYXRlSG9sZGVyKTtcbn1cblxudmFyIGpRdWVyeSA9ICg8YW55PndpbmRvdylbXCJqUXVlcnlcIl07XG5cbmludGVyZmFjZSBEYXRhVGFibGVzT3B0aW9ucyBleHRlbmRzIElUYWJsZU9wdGlvbnMge1xuICBidXR0b25zOiBib29sZWFuIHwgc3RyaW5nW10gfCBhbnlbXSB8IGFueTtcblxuICBkb206IHN0cmluZztcblxuICBvcmRlckZpeGVkOiBBcnJheTxudW1iZXIgfCBzdHJpbmc+IHwgQXJyYXk8QXJyYXk8bnVtYmVyIHwgc3RyaW5nPj4gfCBvYmplY3Q7XG5cbiAgcm93R3JvdXA6IGJvb2xlYW4gfCBhbnk7XG5cbiAgaGVhZGVyQ2FsbGJhY2s6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZXMgZXh0ZW5kcyBUYWJsZSB7XG4gIHB1YmxpYyBkYXRhdGFibGVBcGk6IGFueTtcblxuICBwdWJsaWMgY3VycmVudFBhZ2VOdW1iZXI6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIFRoZSBldmVudCBpcyBmaXJlZCBjb2x1bW5zIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY2hhbmdlZC5cbiAgICogPGJyLz4gc2VuZGVyIHRoZSBkYXRhdGFibGVzIGFkYXB0ZXJcbiAgICogPGJyLz4gb3B0aW9ucy5zdXJ2ZXkgY3VycmVudCBzdXJ2ZXlcbiAgICogQHNlZSBnZXRDb2x1bW5zXG4gICAqL1xuICBwdWJsaWMgb25Db2x1bW5zUmVvcmRlcjogRXZlbnQ8XG4gICAgKHNlbmRlcjogRGF0YVRhYmxlcywgb3B0aW9uczogYW55KSA9PiBhbnksXG4gICAgRGF0YVRhYmxlcyxcbiAgICBhbnlcbiAgPiA9IG5ldyBFdmVudDwoc2VuZGVyOiBEYXRhVGFibGVzLCBvcHRpb25zOiBhbnkpID0+IGFueSwgRGF0YVRhYmxlcywgYW55PigpO1xuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdEpRdWVyeSgkOiBhbnkpIHtcbiAgICBqUXVlcnkgPSAkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXQgaGF2ZUNvbW1lcmNpYWxMaWNlbnNlKHZhbDogYm9vbGVhbikge1xuICAgIFRhYmxlLmhhdmVDb21tZXJjaWFsTGljZW5zZSA9IHZhbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN1cnZleTogU3VydmV5TW9kZWwsXG4gICAgZGF0YTogQXJyYXk8T2JqZWN0PixcbiAgICBvcHRpb25zPzogRGF0YVRhYmxlc09wdGlvbnMsXG4gICAgX2NvbHVtbnNEYXRhOiBBcnJheTxJQ29sdW1uRGF0YT4gPSBbXVxuICApIHtcbiAgICBzdXBlcihzdXJ2ZXksIGRhdGEsIG9wdGlvbnMsIF9jb2x1bW5zRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICBpZiAoIXRoaXMucmVuZGVyUmVzdWx0KSByZXR1cm47XG4gICAgY29uc3QgdGFibGVOb2RlID0gdGhpcy5yZW5kZXJSZXN1bHQuY2hpbGRyZW5bMF07XG4gICAgaWYgKGpRdWVyeS5mbi5EYXRhVGFibGUuaXNEYXRhVGFibGUodGFibGVOb2RlKSkge1xuICAgICAgalF1ZXJ5KHRhYmxlTm9kZSkuRGF0YVRhYmxlKCkuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLmRhdGF0YWJsZUFwaSA9IHVuZGVmaW5lZDtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29sdW1uVmlzaWJpbGl0eShjb2x1bW5OYW1lOiBzdHJpbmcsIGlzVmlzaWJsZTogYm9vbGVhbikge1xuICAgIHN1cGVyLnNldENvbHVtblZpc2liaWxpdHkoY29sdW1uTmFtZSwgaXNWaXNpYmxlKTtcbiAgICB0aGlzLmRhdGF0YWJsZUFwaS5jb2x1bW4oY29sdW1uTmFtZSArIFwiOm5hbWVcIikudmlzaWJsZShpc1Zpc2libGUpO1xuICB9XG5cbiAgcHVibGljIHNldENvbHVtbkxvY2F0aW9uKGNvbHVtbk5hbWU6IHN0cmluZywgbG9jYXRpb246IFF1ZXN0aW9uTG9jYXRpb24pIHtcbiAgICBzdXBlci5zZXRDb2x1bW5Mb2NhdGlvbihjb2x1bW5OYW1lLCBsb2NhdGlvbik7XG4gICAgdmFyIGNvbHVtbiA9IHRoaXMuZGF0YXRhYmxlQXBpLmNvbHVtbihjb2x1bW5OYW1lICsgXCI6bmFtZVwiKTtcbiAgICB2YXIgaXNDb2x1bW5Mb2NhdGlvbiA9IGxvY2F0aW9uID09IFF1ZXN0aW9uTG9jYXRpb24uQ29sdW1uO1xuICAgIGNvbHVtbi52aXNpYmxlKGlzQ29sdW1uTG9jYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRhdGF0YWJsZUFwaS5zZWFyY2godmFsdWUpLmRyYXcoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGFwcGx5Q29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHZhciBjb2x1bW4gPSB0aGlzLmRhdGF0YWJsZUFwaS5jb2x1bW4oY29sdW1uTmFtZSArIFwiOm5hbWVcIik7XG4gICAgaWYgKGNvbHVtbi5zZWFyY2goKSAhPT0gdmFsdWUpIHtcbiAgICAgIGNvbHVtbi5zZWFyY2godmFsdWUpLmRyYXcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzb3J0QnlDb2x1bW4oY29sdW1uTmFtZTogc3RyaW5nLCBkaXJlY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHZhciBjb2x1bW4gPSB0aGlzLmRhdGF0YWJsZUFwaS5jb2x1bW4oY29sdW1uTmFtZSArIFwiOm5hbWVcIik7XG4gICAgY29sdW1uLm9yZGVyKGRpcmVjdGlvbikuZHJhdyhmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UGFnZVNpemUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHN1cGVyLnNldFBhZ2VTaXplKHZhbHVlKTtcbiAgICBpZiAodGhpcy5pc1JlbmRlcmVkKSB7XG4gICAgICB0aGlzLmRhdGF0YWJsZUFwaS5wYWdlLmxlbih2YWx1ZSkuZHJhdyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFBhZ2VOdW1iZXIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHN1cGVyLnNldFBhZ2VOdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLmlzUmVuZGVyZWQpIHtcbiAgICAgIHRoaXMuZGF0YXRhYmxlQXBpLnBhZ2UodmFsdWUpLmRyYXcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRQYWdlTnVtYmVyKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmlzUmVuZGVyZWQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kYXRhdGFibGVBcGkucGFnZSgpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcih0YXJnZXROb2RlOiBIVE1MRWxlbWVudCB8IHN0cmluZyk6IHZvaWQge1xuICAgIHN1cGVyLnJlbmRlcih0YXJnZXROb2RlKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHR5cGVvZiB0YXJnZXROb2RlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB0YXJnZXROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0Tm9kZSk7XG4gICAgfVxuICAgIHRhcmdldE5vZGUuY2xhc3NOYW1lICs9IFwiIHNhLXRhYmxlIHNhLWRhdGF0YWJsZXNcIjtcblxuICAgIGNvbnN0IHRhYmxlTm9kZSA9IDxIVE1MVGFibGVFbGVtZW50PihcbiAgICAgIERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0YWJsZVwiLCBcIlwiKVxuICAgICk7XG4gICAgdmFyIGNvbHVtbnMgPSB0aGlzLmdldENvbHVtbnMoKTtcbiAgICB2YXIgY29sdW1uc0RhdGE6IGFueSA9IGNvbHVtbnMubWFwKChjOiBhbnkpID0+IGMuZGF0YSk7XG4gICAgY29uc3QgZHRCdXR0b25DbGFzcyA9XG4gICAgICBcInNhLXRhYmxlX19idG4gc2EtdGFibGVfX2J0bi0tc21hbGwgc2EtdGFibGVfX2J0bi0tZ3JheVwiO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBqUXVlcnkuZXh0ZW5kKFxuICAgICAgdHJ1ZSxcbiAgICAgIHtcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHsgZXh0ZW5kOiBcImNvcHlcIiwgY2xhc3NOYW1lOiBkdEJ1dHRvbkNsYXNzIH0sXG4gICAgICAgICAgeyBleHRlbmQ6IFwiY3N2XCIsIGNsYXNzTmFtZTogZHRCdXR0b25DbGFzcyB9LFxuICAgICAgICAgIHsgZXh0ZW5kOiBcInByaW50XCIsIGNsYXNzTmFtZTogZHRCdXR0b25DbGFzcyB9LFxuICAgICAgICBdLFxuICAgICAgICBkb206ICdCPFwic2EtdGFibGVfX2hlYWRlci1leHRlbnNpb25zXCI+cHJ0aXAnLFxuICAgICAgICAvLyBvcmRlcmluZzogZmFsc2UsXG4gICAgICAgIGRhdGE6IHRoaXMudGFibGVEYXRhLFxuICAgICAgICBwYWdlTGVuZ3RoOiB0aGlzLmN1cnJlbnRQYWdlU2l6ZSxcbiAgICAgICAgcmVzcG9uc2l2ZTogZmFsc2UsXG4gICAgICAgIHNjcm9sbFg6IHRydWUsXG4gICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgIGNvbFJlb3JkZXI6IHtcbiAgICAgICAgICBmaXhlZENvbHVtbnNMZWZ0OiAxLFxuICAgICAgICAgIHJlYWx0aW1lOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy9vcmRlckZpeGVkOiBbWzEsIFwiYXNjXCJdXSxcbiAgICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgICBzU2VhcmNoOiBcIiBcIixcbiAgICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcjogXCJTZWFyY2guLi5cIixcbiAgICAgICAgICBzTGVuZ3RoTWVudTogXCJTaG93IF9NRU5VXyBlbnRyaWVzXCIsXG4gICAgICAgICAgcGFnaW5hdGU6IHtcbiAgICAgICAgICAgIHByZXZpb3VzOiBcIiBcIixcbiAgICAgICAgICAgIG5leHQ6IFwiIFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdDogXCJhcGlcIixcbiAgICAgICAgaGVhZGVyQ2FsbGJhY2s6IChcbiAgICAgICAgICB0aGVhZDogYW55LFxuICAgICAgICAgIGRhdGE6IGFueSxcbiAgICAgICAgICBzdGFydDogYW55LFxuICAgICAgICAgIGVuZDogYW55LFxuICAgICAgICAgIGRpc3BsYXk6IGFueVxuICAgICAgICApID0+IHtcbiAgICAgICAgICB2YXIgZGF0YXRhYmxlQXBpID0galF1ZXJ5KHRhYmxlTm9kZSkuZGF0YVRhYmxlKCkuYXBpKCk7XG4gICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAgIGRhdGF0YWJsZUFwaVxuICAgICAgICAgICAgLmNvbHVtbnMoKVxuICAgICAgICAgICAgLmVxKDApXG4gICAgICAgICAgICAuZWFjaCgoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICB2YXIgJHRoTm9kZSA9IGpRdWVyeShkYXRhdGFibGVBcGkuY29sdW1ucyhpbmRleCkuaGVhZGVyKCkpO1xuICAgICAgICAgICAgICAkdGhOb2RlLnVuYmluZChcImNsaWNrLkRUXCIpO1xuICAgICAgICAgICAgICBpZiAoISFjb2x1bW5zRGF0YVtpbmRleF0gJiYgJHRoTm9kZS5oYXMoXCJidXR0b25cIikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgXCJzYS10YWJsZV9fYWN0aW9uLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBzZWxmLmV4dGVuc2lvbnMucmVuZGVyKGNvbnRhaW5lciwgXCJjb2x1bW5cIiwge1xuICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZTogY29sdW1uc0RhdGFbaW5kZXhdLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5vbm1vdXNlZG93biA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoIXNlbGYuaXNDb2x1bW5SZW9yZGVyRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ29sdW1uUmVvcmRlcigpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJHRoTm9kZS5wcmVwZW5kKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aGlzLl9vcHRpb25zXG4gICAgKTtcblxuICAgIHRhcmdldE5vZGUuYXBwZW5kQ2hpbGQodGFibGVOb2RlKTtcbiAgICB0YWJsZU5vZGUuY2xhc3NOYW1lID0gXCJzYS1kYXRhdGFibGVzX190YWJsZSBkaXNwbGF5IHJlc3BvbnNpdmUgZGF0YVRhYmxlXCI7XG5cbiAgICBjb25zdCBkYXRhdGFibGVBcGlSZWYgPSAodGhpcy5kYXRhdGFibGVBcGkgPSBqUXVlcnkodGFibGVOb2RlKS5EYXRhVGFibGUoXG4gICAgICBvcHRpb25zXG4gICAgKSk7XG4gICAgdmFyIGV4dGVuc2lvbnNDb250YWluZXIgPSBqUXVlcnkoXCJkaXYuc2EtdGFibGVfX2hlYWRlci1leHRlbnNpb25zXCIpWzBdO1xuXG4gICAgLy8gdGhpcy5vblRhYmxlVG9vbHNDcmVhdGVkLmZpcmUodGhpcywgeyBleHRlbnNpb25zOiBleHRlbnNpb25zIH0pO1xuICAgIHRoaXMuZXh0ZW5zaW9ucy5yZW5kZXIoZXh0ZW5zaW9uc0NvbnRhaW5lciwgXCJoZWFkZXJcIik7XG5cbiAgICBkYXRhdGFibGVBcGlSZWYucGFnZShzZWxmLmN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICB0aGlzLmRhdGF0YWJsZUFwaS5yb3dHcm91cCgpLmVuYWJsZShmYWxzZSkuZHJhdyhmYWxzZSk7XG5cbiAgICBkYXRhdGFibGVBcGlSZWYub24oXG4gICAgICBcImNvbHVtbi1yZW9yZGVyXCIsXG4gICAgICAoZTogYW55LCBzZXR0aW5nczogYW55LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5tb3ZlQ29sdW1uKGRldGFpbHMuZnJvbSAtIDEsIGRldGFpbHMudG8gLSAxKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlQ29sdW1uUmVvcmRlcigpO1xuICAgICAgICB0aGlzLm9uQ29sdW1uc1Jlb3JkZXIuZmlyZSh0aGlzLCB7IGNvbHVtbnM6IHRoaXMuY29sdW1ucyB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZGF0YXRhYmxlQXBpUmVmXG4gICAgICAucm93cygpXG4gICAgICAuZXEoMClcbiAgICAgIC5lYWNoKChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHZhciByb3cgPSBkYXRhdGFibGVBcGlSZWYucm93KGluZGV4KTtcbiAgICAgICAgdmFyIGRldGFpbHNUciA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0clwiKTtcbiAgICAgICAgdmFyIGRldGFpbHNUZCA9IDxIVE1MVGFibGVEYXRhQ2VsbEVsZW1lbnQ+KFxuICAgICAgICAgIERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0ZFwiLCBcInNhLWRhdGF0YWJsZXNfX2RldGFpbHMtY29udGFpbmVyXCIpXG4gICAgICAgICk7XG4gICAgICAgIGRldGFpbHNUci5hcHBlbmRDaGlsZChkZXRhaWxzVGQpO1xuICAgICAgICB2YXIgcm93RWxlbWVudCA9IHJvdy5ub2RlKCk7XG4gICAgICAgIHZhciBmaXJzdENlbGwgPSByb3cuY2VsbChyb3cuaW5kZXgoKSwgMCkubm9kZSgpO1xuICAgICAgICB2YXIgdGFibGVSb3cgPSBuZXcgRGF0YXRhYmxlc1Jvdyh0aGlzLCBmaXJzdENlbGwsIGRldGFpbHNUZCwgcm93KTtcbiAgICAgICAgdGFibGVSb3cub25Ub2dnbGVEZXRhaWxzLmFkZCgoc2VuZGVyOiBUYWJsZVJvdywgb3B0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgZGV0YWlsc1RkLmNvbFNwYW4gPSByb3dFbGVtZW50LmNoaWxkRWxlbWVudENvdW50O1xuICAgICAgICAgICAgcm93RWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgZGV0YWlsc1RyLFxuICAgICAgICAgICAgICByb3dFbGVtZW50Lm5leHRTaWJsaW5nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoISFkZXRhaWxzVHIucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICBkZXRhaWxzVHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkZXRhaWxzVHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Jvd3MucHVzaCh0YWJsZVJvdyk7XG4gICAgICAgIHRhYmxlUm93LnJlbmRlcigpO1xuICAgICAgfSk7XG4gICAgZGF0YXRhYmxlQXBpUmVmLmRyYXcoZmFsc2UpO1xuICAgIHRoaXMucmVuZGVyUmVzdWx0ID0gdGFyZ2V0Tm9kZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5zKCk6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IGNvbHVtbnM6IGFueSA9IHRoaXMuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgdmFyIHF1ZXN0aW9uID0gdGhpcy5zdXJ2ZXkuZ2V0UXVlc3Rpb25CeU5hbWUoY29sdW1uLm5hbWUpO1xuICAgICAgY29uc3QgY29sdW1uVGl0bGUgPSAocXVlc3Rpb24gJiYgKHRoaXMub3B0aW9ucy51c2VOYW1lc0FzVGl0bGVzID8gcXVlc3Rpb24ubmFtZSA6IHF1ZXN0aW9uLnRpdGxlKSkgfHwgY29sdW1uLmRpc3BsYXlOYW1lO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgIGRhdGE6IGNvbHVtbi5uYW1lLFxuICAgICAgICBzVGl0bGU6IGpRdWVyeT8uZm4uZGF0YVRhYmxlLnJlbmRlci50ZXh0KCkuZGlzcGxheShjb2x1bW5UaXRsZSkgfHwgY29sdW1uVGl0bGUsXG4gICAgICAgIHZpc2libGU6IHRoaXMuaXNDb2x1bW5WaXNpYmxlKGNvbHVtbiksXG4gICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRDb250ZW50OiBcIlwiLFxuICAgICAgICB3aWR0aDpcbiAgICAgICAgICB0eXBlb2YgY29sdW1uLndpZHRoID09IFwibnVtYmVyXCIgPyBjb2x1bW4ud2lkdGggKyBcInB4XCIgOiBjb2x1bW4ud2lkdGgsXG4gICAgICAgIHJlbmRlcjogKF9kYXRhOiBvYmplY3QsIF90eXBlOiBzdHJpbmcsIHJvdzogYW55KSA9PiB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gcm93W2NvbHVtbi5uYW1lXTtcbiAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09PSBDb2x1bW5EYXRhVHlwZS5GaWxlTGluaykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09PSBDb2x1bW5EYXRhVHlwZS5JbWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiPGltYWdlIHNyYz0nXCIgKyB2YWx1ZSArIFwiJy8+XCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8galF1ZXJ5KFwiPGRpdj5cIikudGV4dCh2YWx1ZSkuaHRtbCgpXG4gICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBvcmRlcmFibGU6IGZhbHNlLFxuICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICBkZWZhdWx0Q29udGVudDogXCJcIixcbiAgICAgIH0sXG4gICAgXS5jb25jYXQoY29sdW1ucyk7XG4gIH1cblxuICBwdWJsaWMgbGF5b3V0KCkge1xuICAgICEhdGhpcy5kYXRhdGFibGVBcGkgJiYgdGhpcy5kYXRhdGFibGVBcGkuY29sdW1ucy5hZGp1c3QoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YXRhYmxlc1JvdyBleHRlbmRzIFRhYmxlUm93IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRhYmxlOiBUYWJsZSxcbiAgICBwcm90ZWN0ZWQgZXh0ZW5zaW9uc0NvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gICAgcHJvdGVjdGVkIGRldGFpbHNDb250YWluZXI6IEhUTUxFbGVtZW50LFxuICAgIHByaXZhdGUgX2lubmVyUm93OiBhbnlcbiAgKSB7XG4gICAgc3VwZXIodGFibGUsIGV4dGVuc2lvbnNDb250YWluZXIsIGRldGFpbHNDb250YWluZXIpO1xuICAgIHRoaXMucm93RWxlbWVudCA9IF9pbm5lclJvdy5ub2RlKCk7XG4gICAgdGhpcy5yb3dEYXRhID0gX2lubmVyUm93LmRhdGEoKTtcbiAgICB0aGlzLl9pbm5lclJvdyA9IHRoaXMuX2lubmVyUm93LnJvdyh0aGlzLnJvd0VsZW1lbnQpO1xuICAgICg8RGF0YVRhYmxlcz50YWJsZSkub25Db2x1bW5zUmVvcmRlci5hZGQoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIHJvd0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIHJvd0RhdGE6IGFueTtcblxuICBwdWJsaWMgZ2V0IGlubmVyUm93KCkge1xuICAgIHJldHVybiB0aGlzLl9pbm5lclJvdy5yb3codGhpcy5yb3dFbGVtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5yb3dFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0RhdGEoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLnJvd0RhdGE7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSb3cuaW5kZXgoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoKTogdm9pZCB7XG4gICAgdGhpcy5pbm5lclJvdy5yZW1vdmUoKS5kcmF3KCk7XG4gICAgc3VwZXIucmVtb3ZlKCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIi4uL3RhYmxlXCI7XG5pbXBvcnQgeyBEb2N1bWVudEhlbHBlciB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uLy4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB7IFRhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL3RhYmxlZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgUXVlc3Rpb25Mb2NhdGlvbiwgSUNvbHVtbiB9IGZyb20gXCIuLi9jb25maWdcIjtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiY29sdW1uXCIsXG4gIG5hbWU6IFwiZHJhZ1wiLFxuICB2aXNpYmxlSW5kZXg6IDAsXG4gIHJlbmRlcjogZnVuY3Rpb24gKHRhYmxlOiBUYWJsZSwgb3B0aW9uczogYW55KSB7XG4gICAgY29uc3QgYnRuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICBcInNhLXRhYmxlX19zdmctYnV0dG9uIHNhLXRhYmxlX19kcmFnLWJ1dHRvblwiXG4gICAgKTtcbiAgICBidG4uYXBwZW5kQ2hpbGQoRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnRWxlbWVudChcImRyYWdcIikpO1xuICAgIGJ0bi5vbm1vdXNlZG93biA9IChlKSA9PiB7XG4gICAgICB0YWJsZS5lbmFibGVDb2x1bW5SZW9yZGVyKCk7XG4gICAgfTtcbiAgICByZXR1cm4gYnRuO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcImNvbHVtblwiLFxuICBuYW1lOiBcInNvcnRcIixcbiAgdmlzaWJsZUluZGV4OiAxLFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZTogVGFibGUsIG9wdGlvbnM6IGFueSkge1xuICAgIGNvbnN0IGRlc2NUaXRsZSA9IGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJkZXNjT3JkZXJcIik7XG4gICAgY29uc3QgYXNjVGl0bGUgPSBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwiYXNjT3JkZXJcIik7XG4gICAgdmFyIGJ0biA9IERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0J1dHRvbihcInNvcnRpbmdcIik7XG4gICAgYnRuLnRpdGxlID0gXCJcIjtcbiAgICB2YXIgZGlyZWN0aW9uID0gXCJhc2NcIjtcbiAgICBidG4ub25jbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJhc2NcIikge1xuICAgICAgICBidG4udGl0bGUgPSBkZXNjVGl0bGU7XG4gICAgICAgIGRpcmVjdGlvbiA9IFwiZGVzY1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnRuLnRpdGxlID0gYXNjVGl0bGU7XG4gICAgICAgIGRpcmVjdGlvbiA9IFwiYXNjXCI7XG4gICAgICB9XG4gICAgICB0YWJsZS5zb3J0QnlDb2x1bW4ob3B0aW9ucy5jb2x1bW5OYW1lLCBkaXJlY3Rpb24pO1xuICAgIH07XG4gICAgYnRuLm9uZHJhZyA9IChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH07XG4gICAgcmV0dXJuIGJ0bjtcbiAgfSxcbn0pO1xuXG5UYWJsZUV4dGVuc2lvbnMucmVnaXN0ZXJFeHRlbnNpb24oe1xuICBsb2NhdGlvbjogXCJjb2x1bW5cIixcbiAgbmFtZTogXCJoaWRlXCIsXG4gIHZpc2libGVJbmRleDogMixcbiAgcmVuZGVyOiBmdW5jdGlvbiAodGFibGU6IFRhYmxlLCBvcHRpb25zOiBhbnkpIHtcbiAgICB2YXIgYnRuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnQnV0dG9uKFwiaGlkZVwiKTtcbiAgICBidG4udGl0bGUgPSBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwiaGlkZUNvbHVtblwiKTtcbiAgICBidG4ub25jbGljayA9ICgpID0+IHtcbiAgICAgIHRhYmxlLnNldENvbHVtblZpc2liaWxpdHkob3B0aW9ucy5jb2x1bW5OYW1lLCBmYWxzZSk7XG4gICAgfTtcbiAgICByZXR1cm4gYnRuO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcImNvbHVtblwiLFxuICBuYW1lOiBcIm1vdmV0b2RldGFpbHNcIixcbiAgdmlzaWJsZUluZGV4OiAzLFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZTogVGFibGUsIG9wdGlvbnM6IGFueSkge1xuICAgIGNvbnN0IGJ1dHRvbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0J1dHRvbihcIm1vdmV0b2RldGFpbHNcIik7XG4gICAgYnV0dG9uLnRpdGxlID0gbG9jYWxpemF0aW9uLmdldFN0cmluZyhcIm1vdmVUb0RldGFpbFwiKTtcbiAgICBidXR0b24ub25jbGljayA9IChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGFibGUuc2V0Q29sdW1uTG9jYXRpb24ob3B0aW9ucy5jb2x1bW5OYW1lLCBRdWVzdGlvbkxvY2F0aW9uLlJvdyk7XG4gICAgfTtcbiAgICByZXR1cm4gYnV0dG9uO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcImNvbHVtblwiLFxuICBuYW1lOiBcImZpbHRlclwiLFxuICB2aXNpYmxlSW5kZXg6IDQsXG4gIHJlbmRlcjogZnVuY3Rpb24gKHRhYmxlOiBUYWJsZSwgb3B0aW9uczogYW55KSB7XG4gICAgdmFyIGVsID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlSW5wdXQoXG4gICAgICBcInNhLXRhYmxlX19maWx0ZXJcIixcbiAgICAgIGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJmaWx0ZXJQbGFjZWhvbGRlclwiKVxuICAgICk7XG4gICAgZWwub25jbGljayA9IChlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGVsLm9uY2hhbmdlID0gKGUpID0+IHtcbiAgICAgIHRhYmxlLmFwcGx5Q29sdW1uRmlsdGVyKG9wdGlvbnMuY29sdW1uTmFtZSwgZWwudmFsdWUpO1xuICAgIH07XG4gICAgcmV0dXJuIGVsO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcImNvbHVtblwiLFxuICBuYW1lOiBcIm1ha2VwdWJsaWNcIixcbiAgdmlzaWJsZUluZGV4OiAtMSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAodGFibGU6IFRhYmxlLCBvcHRpb25zOiBhbnkpIHtcbiAgICBjb25zdCBidXR0b24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpO1xuICAgIGNvbnN0IG1ha2VQcml2YXRlU3ZnID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnRWxlbWVudChcIm1ha2Vwcml2YXRlXCIpO1xuICAgIGNvbnN0IG1ha2VQdWJsaWNTdmcgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVTdmdFbGVtZW50KFwibWFrZXB1YmxpY1wiKTtcbiAgICBjb25zdCBjb2x1bW4gPSB0YWJsZS5nZXRDb2x1bW5CeU5hbWUob3B0aW9ucy5jb2x1bW5OYW1lKTtcblxuICAgIHVwZGF0ZVN0YXRlKGNvbHVtbik7XG4gICAgYnV0dG9uLmFwcGVuZENoaWxkKG1ha2VQcml2YXRlU3ZnKTtcbiAgICBidXR0b24uYXBwZW5kQ2hpbGQobWFrZVB1YmxpY1N2Zyk7XG4gICAgYnV0dG9uLm9uY2xpY2sgPSAoZSkgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbHVtbi5pc1B1YmxpYyA9ICFjb2x1bW4uaXNQdWJsaWM7XG4gICAgICB1cGRhdGVTdGF0ZShjb2x1bW4pO1xuICAgICAgdGFibGUub25QZXJtaXNzaW9uc0NoYW5nZWRDYWxsYmFjayAmJlxuICAgICAgICB0YWJsZS5vblBlcm1pc3Npb25zQ2hhbmdlZENhbGxiYWNrKHRhYmxlKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlU3RhdGUoY29sdW1uOiBJQ29sdW1uKSB7XG4gICAgICBpZiAoY29sdW1uLmlzUHVibGljKSB7XG4gICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSBcInNhLXRhYmxlX19zdmctYnV0dG9uXCI7XG4gICAgICAgIGJ1dHRvbi50aXRsZSA9IGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJtYWtlUHJpdmF0ZUNvbHVtblwiKTtcbiAgICAgICAgbWFrZVByaXZhdGVTdmcuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICBtYWtlUHVibGljU3ZnLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidXR0b24uY2xhc3NOYW1lID0gXCJzYS10YWJsZV9fc3ZnLWJ1dHRvbiBzYS10YWJsZV9fc3ZnLWJ1dHRvbi0tYWN0aXZlXCI7XG4gICAgICAgIGJ1dHRvbi50aXRsZSA9IGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJtYWtlUHVibGljQ29sdW1uXCIpO1xuICAgICAgICBtYWtlUHJpdmF0ZVN2Zy5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgICAgICBtYWtlUHVibGljU3ZnLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ1dHRvbjtcbiAgfSxcbn0pO1xuIiwiaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiLi4vdGFibGVcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIi4uL3RhYmxlXCI7XG5pbXBvcnQgeyBEb2N1bWVudEhlbHBlciB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgQ29sdW1uRGF0YVR5cGUsIFF1ZXN0aW9uTG9jYXRpb24gfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgeyBUYWJsZUV4dGVuc2lvbnMgfSBmcm9tIFwiLi90YWJsZWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IGxvY2FsaXphdGlvbiB9IGZyb20gXCIuLi8uLi9sb2NhbGl6YXRpb25NYW5hZ2VyXCI7XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRhYmxlOiBUYWJsZSxcbiAgICBwcml2YXRlIHJvdzogVGFibGVSb3csXG4gICAgcHJvdGVjdGVkIHRhcmdldE5vZGU6IEhUTUxFbGVtZW50XG4gICkge1xuICAgIHRoaXMuZGV0YWlsc1RhYmxlID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwidGFibGVcIixcbiAgICAgIFwic2EtdGFibGVfX2RldGFpbC10YWJsZVwiXG4gICAgKTtcbiAgICB0aGlzLnRhYmxlLm9uQ29sdW1uc0xvY2F0aW9uQ2hhbmdlZC5hZGQoKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgZGV0YWlsc1RhYmxlOiBIVE1MRWxlbWVudDtcbiAgcHJvdGVjdGVkIGxvY2F0aW9uID0gXCJkZXRhaWxzXCI7XG5cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhaWxzVGFibGUuaW5uZXJIVE1MID0gXCJcIjtcbiAgICB2YXIgcm93czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICAgIHRoaXMudGFibGUuY29sdW1uc1xuICAgICAgLmZpbHRlcigoY29sdW1uKSA9PiBjb2x1bW4ubG9jYXRpb24gPT09IFF1ZXN0aW9uTG9jYXRpb24uUm93ICYmIGNvbHVtbilcbiAgICAgIC5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgdmFyIHJvdyA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0clwiLCBcInNhLXRhYmxlX19kZXRhaWxcIik7XG4gICAgICAgIHZhciB0ZDEgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwidGRcIik7XG4gICAgICAgIHRkMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb2x1bW4uZGlzcGxheU5hbWUpKTtcbiAgICAgICAgdmFyIHRkMiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJ0ZFwiKTtcbiAgICAgICAgdGQyLnRleHRDb250ZW50ID0gdGhpcy5yb3cuZ2V0Um93RGF0YSgpW2NvbHVtbi5uYW1lXTtcbiAgICAgICAgaWYoY29sdW1uLmRhdGFUeXBlID09PSBDb2x1bW5EYXRhVHlwZS5JbWFnZSkge1xuICAgICAgICAgIHRkMi5pbm5lckhUTUwgPSBcIjxpbWFnZSBzcmM9J1wiICsgdGQyLnRleHRDb250ZW50ICsgXCInLz5cIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGQzID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInRkXCIpO1xuICAgICAgICB0ZDMuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTaG93QXNDb2x1bW5CdXR0b24oY29sdW1uLm5hbWUpKTtcbiAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkMSk7XG4gICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZDIpO1xuICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQzKTtcbiAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICB9KTtcbiAgICB2YXIgcm93ID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInRyXCIsIFwic2EtdGFibGVfX2RldGFpbFwiKTtcbiAgICB2YXIgdGQgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwidGRcIiwgXCJcIiwgeyBjb2xTcGFuOiAzIH0pO1xuICAgIHZhciBleHRlbnNpb25zID0gbmV3IFRhYmxlRXh0ZW5zaW9ucyh0aGlzLnRhYmxlKTtcbiAgICBleHRlbnNpb25zLnJlbmRlcih0ZCwgXCJkZXRhaWxzXCIsIHsgcm93OiB0aGlzLnJvdyB9KTtcbiAgICBpZiAodGQuY2hpbGRyZW4ubGVuZ3RoICE9IDApIHtcbiAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZCk7XG4gICAgICByb3dzLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgdGhpcy5kZXRhaWxzVGFibGUuYXBwZW5kQ2hpbGQocm93KTtcbiAgICB9KTtcbiAgICB0aGlzLnRhcmdldE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5kZXRhaWxzVGFibGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVNob3dBc0NvbHVtbkJ1dHRvbiA9IChjb2x1bW5OYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCA9PiB7XG4gICAgY29uc3QgYnV0dG9uID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICBcInNhLXRhYmxlX19idG4gc2EtdGFibGVfX2J0bi0tZ3JheVwiXG4gICAgKTtcbiAgICBidXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobG9jYWxpemF0aW9uLmdldFN0cmluZyhcInNob3dBc0NvbHVtblwiKSkpO1xuICAgIGJ1dHRvbi5vbmNsaWNrID0gKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnRhYmxlLnNldENvbHVtbkxvY2F0aW9uKGNvbHVtbk5hbWUsIFF1ZXN0aW9uTG9jYXRpb24uQ29sdW1uKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJ1dHRvbjtcbiAgfTtcblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgaWYgKCEhdGhpcy5kZXRhaWxzVGFibGUucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy5kZXRhaWxzVGFibGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRldGFpbHNUYWJsZSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBsb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vLi4vbG9jYWxpemF0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiLi4vdGFibGVcIjtcbmltcG9ydCB7IERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBUYWJsZUV4dGVuc2lvbnMgfSBmcm9tIFwiLi90YWJsZWV4dGVuc2lvbnNcIjtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwiZmlsdGVyXCIsXG4gIHZpc2libGVJbmRleDogMCxcbiAgcmVuZGVyOiBmdW5jdGlvbiAodGFibGU6IFRhYmxlKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGlucHV0ID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlSW5wdXQoXG4gICAgICBcInNhLXRhYmxlX19nbG9iYWwtZmlsdGVyIHNhLXRhYmxlX19oZWFkZXItZXh0ZW5zaW9uXCIsXG4gICAgICBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwiZmlsdGVyUGxhY2Vob2xkZXJcIilcbiAgICApO1xuICAgIGlucHV0Lm9uY2hhbmdlID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIHRhYmxlLmFwcGx5RmlsdGVyKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfTtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0sXG59KTtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwic2hvd2NvbHVtblwiLFxuICB2aXNpYmxlSW5kZXg6IDIsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZTogVGFibGUpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgZHJvcGRvd24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJzZWxlY3RcIixcbiAgICAgIFwic2EtdGFibGVfX3Nob3ctY29sdW1uIHNhLXRhYmxlX19oZWFkZXItZXh0ZW5zaW9uXCJcbiAgICApO1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgICAgdmFyIGhpZGRlbkNvbHVtbnMgPSB0YWJsZS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgKGNvbHVtbjogYW55KSA9PiAhY29sdW1uLmlzVmlzaWJsZVxuICAgICAgKTtcbiAgICAgIGlmIChoaWRkZW5Db2x1bW5zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGRyb3Bkb3duLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZHJvcGRvd24uc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG4gICAgICBkcm9wZG93bi5pbm5lckhUTUwgPSBcIlwiO1xuICAgICAgdmFyIG9wdGlvbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIiwgXCJcIiwge1xuICAgICAgICB0ZXh0OiBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwic2hvd0NvbHVtblwiKSxcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBkcm9wZG93bi5hcHBlbmRDaGlsZChvcHRpb24pO1xuXG4gICAgICBoaWRkZW5Db2x1bW5zLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XG4gICAgICAgIHZhciB0ZXh0ID0gY29sdW1uLmRpc3BsYXlOYW1lIHx8IGNvbHVtbi5uYW1lO1xuICAgICAgICBpZiAoISF0ZXh0ICYmIHRleHQubGVuZ3RoID4gMjApIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMCwgMjApICsgXCIuLi5cIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3B0aW9uID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCBcIlwiLCB7XG4gICAgICAgICAgdGV4dDogdGV4dCxcbiAgICAgICAgICB0aXRsZTogY29sdW1uLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIHZhbHVlOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRyb3Bkb3duLmFwcGVuZENoaWxkKG9wdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkcm9wZG93bi5vbmNoYW5nZSA9IChlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmICghdmFsKSByZXR1cm47XG4gICAgICB0YWJsZS5zZXRDb2x1bW5WaXNpYmlsaXR5KHZhbCwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHVwZGF0ZSgpO1xuXG4gICAgdmFyIG9uVmlzaWJpbGl0eUNoYW5nZWRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH07XG5cbiAgICB0YWJsZS5vbkNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlZC5hZGQob25WaXNpYmlsaXR5Q2hhbmdlZENhbGxiYWNrKTtcblxuICAgIHRoaXMub25EZXN0cm95ID0gKCkgPT4ge1xuICAgICAgdGFibGUub25Db2x1bW5zVmlzaWJpbGl0eUNoYW5nZWQucmVtb3ZlKG9uVmlzaWJpbGl0eUNoYW5nZWRDYWxsYmFjayk7XG4gICAgfTtcbiAgICByZXR1cm4gZHJvcGRvd247XG4gIH0sXG59KTtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwic2hvd2VudHJpZXNcIixcbiAgdmlzaWJsZUluZGV4OiAzLFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZTogVGFibGUpOiBIVE1MRWxlbWVudCB7XG4gICAgZnVuY3Rpb24gZ2V0RW50cmllc0Ryb3Bkb3duKHRhYmxlOiBUYWJsZSk6IEhUTUxFbGVtZW50IHtcbiAgICAgIGNvbnN0IGVsID0gPEhUTUxTZWxlY3RFbGVtZW50PkRvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIik7XG4gICAgICB2YXIgb3B0aW9uc1ZhbHVlcyA9IHRhYmxlLnBhZ2luYXRpb25TaXplU2VsZWN0b3IgfHwgW1wiMVwiLCBcIjVcIiwgXCIxMFwiLCBcIjI1XCIsIFwiNTBcIiwgXCI3NVwiLCBcIjEwMFwiXTtcbiAgICAgIG9wdGlvbnNWYWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgIHZhciBvcHRpb24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIFwiXCIsIHtcbiAgICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgICAgIHRleHQ6IHZhbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGVsLmFwcGVuZENoaWxkKG9wdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGVsLnZhbHVlID0gU3RyaW5nKHRhYmxlLmdldFBhZ2VTaXplKCkpO1xuXG4gICAgICBlbC5vbmNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgdGFibGUuc2V0UGFnZVNpemUoTnVtYmVyKGVsLnZhbHVlKSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWw7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdG9yQ29udGFpbmVyID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiZGl2XCIsXG4gICAgICBcInNhLXRhYmxlX19lbnRyaWVzXCJcbiAgICApO1xuICAgIGNvbnN0IHNwYWNlU3BhbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIFwic2EtdGFibGVfX2hlYWRlci1zcGFjZVwiKTtcbiAgICBjb25zdCBzaG93U3BhbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNwYW5cIixcbiAgICAgIFwic2EtdGFibGVfX2VudHJpZXMtbGFiZWwgc2EtdGFibGVfX2VudHJpZXMtbGFiZWwtLXJpZ2h0XCIsXG4gICAgICB7XG4gICAgICAgIGlubmVyVGV4dDogbG9jYWxpemF0aW9uLmdldFN0cmluZyhcInNob3dMYWJlbFwiKSxcbiAgICAgIH1cbiAgICApO1xuICAgIGNvbnN0IGVudHJpZXNTcGFuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcbiAgICAgIFwic3BhblwiLFxuICAgICAgXCJzYS10YWJsZV9fZW50cmllcy1sYWJlbCBzYS10YWJsZV9fZW50cmllcy1sYWJlbC0tbGVmdFwiLFxuICAgICAge1xuICAgICAgICBpbm5lclRleHQ6IGxvY2FsaXphdGlvbi5nZXRTdHJpbmcoXCJlbnRyaWVzTGFiZWxcIiksXG4gICAgICB9XG4gICAgKTtcblxuICAgIHNlbGVjdG9yQ29udGFpbmVyLmFwcGVuZENoaWxkKHNwYWNlU3Bhbik7XG4gICAgc2VsZWN0b3JDb250YWluZXIuYXBwZW5kQ2hpbGQoc2hvd1NwYW4pO1xuICAgIHNlbGVjdG9yQ29udGFpbmVyLmFwcGVuZENoaWxkKGdldEVudHJpZXNEcm9wZG93bih0YWJsZSkpO1xuICAgIHNlbGVjdG9yQ29udGFpbmVyLmFwcGVuZENoaWxkKGVudHJpZXNTcGFuKTtcbiAgICByZXR1cm4gc2VsZWN0b3JDb250YWluZXI7XG4gIH0sXG59KTtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwicmVtb3Zlcm93c1wiLFxuICB2aXNpYmxlSW5kZXg6IC0xLFxuICByZW5kZXI6IGZ1bmN0aW9uICh0YWJsZSkge1xuICAgIHZhciBidG4gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJidXR0b25cIixcbiAgICAgIFwic2EtdGFibGVfX2J0biBzYS10YWJsZV9fYnRuLS1ncmVlbiBzYS10YWJsZV9faGVhZGVyLWV4dGVuc2lvbiBcIixcbiAgICAgIHsgaW5uZXJUZXh0OiBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwicmVtb3ZlUm93c1wiKSB9XG4gICAgKTtcbiAgICBidG4ub25jbGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRhYmxlLmdldENyZWF0ZWRSb3dzKCkuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIGlmIChyb3cuZ2V0SXNTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgcm93LnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBidG47XG4gIH0sXG59KTtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwiaGVhZGVyXCIsXG4gIG5hbWU6IFwiY2hhbmdlbG9jYWxlXCIsXG4gIHZpc2libGVJbmRleDogMSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAodGFibGUpIHtcbiAgICB2YXIgbG9jYWxlcyA9IHRhYmxlLmdldExvY2FsZXMoKTtcbiAgICBpZiAodGFibGUub3B0aW9ucy5kaXNhYmxlTG9jYWxlU3dpdGNoIHx8IGxvY2FsZXMubGVuZ3RoIDwgMikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZWwgPSA8SFRNTFNlbGVjdEVsZW1lbnQ+KFxuICAgICAgRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiLCBcInNhLXRhYmxlX19oZWFkZXItZXh0ZW5zaW9uXCIsIHt9KVxuICAgICk7XG4gICAgdmFyIG9wdGlvbnNWYWx1ZXMgPSBbbG9jYWxpemF0aW9uLmdldFN0cmluZyhcImNoYW5nZUxvY2FsZVwiKV0uY29uY2F0KFxuICAgICAgbG9jYWxlc1xuICAgICk7XG4gICAgb3B0aW9uc1ZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHZhciBvcHRpb24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIFwiXCIsIHtcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgdGV4dDogbG9jYWxpemF0aW9uLmxvY2FsZU5hbWVzW3ZhbF0gfHwgbG9jYWxpemF0aW9uLmdldFN0cmluZyh2YWwpIHx8IHZhbCxcbiAgICAgIH0pO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQob3B0aW9uKTtcbiAgICB9KTtcbiAgICBlbC5vbmNoYW5nZSA9ICgpID0+IHtcbiAgICAgIHRhYmxlLmxvY2FsZSA9IGVsLnZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIGVsO1xuICB9LFxufSk7XG5cbmV4cG9ydCB2YXIgSGVhZGVyRXh0ZW5zaW9uczsiLCJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCIuLi90YWJsZVwiO1xuaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uLy4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB7IERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBUYWJsZUV4dGVuc2lvbnMgfSBmcm9tIFwiLi90YWJsZWV4dGVuc2lvbnNcIjtcblxuVGFibGVFeHRlbnNpb25zLnJlZ2lzdGVyRXh0ZW5zaW9uKHtcbiAgbG9jYXRpb246IFwicm93XCIsXG4gIG5hbWU6IFwiZGV0YWlsc1wiLFxuICB2aXNpYmxlSW5kZXg6IDAsXG4gIHJlbmRlcjogKF90YWJsZTogVGFibGUsIG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIGNvbnN0IGJ0biA9IERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0J1dHRvbihcImRldGFpbFwiKTtcbiAgICBidG4udGl0bGUgPSBsb2NhbGl6YXRpb24uZ2V0U3RyaW5nKFwic2hvd01pbm9yQ29sdW1uc1wiKTtcbiAgICBidG4uY2xhc3NOYW1lICs9IFwiIHNhLXRhYmxlX19yb3ctZXh0ZW5zaW9uXCI7XG4gICAgYnRuLm9uY2xpY2sgPSAoKSA9PiB7XG4gICAgICBvcHRpb25zLnJvdy50b2dnbGVEZXRhaWxzKCk7XG4gICAgfTtcbiAgICByZXR1cm4gYnRuO1xuICB9LFxufSk7XG5cblRhYmxlRXh0ZW5zaW9ucy5yZWdpc3RlckV4dGVuc2lvbih7XG4gIGxvY2F0aW9uOiBcInJvd1wiLFxuICBuYW1lOiBcInNlbGVjdFwiLFxuICB2aXNpYmxlSW5kZXg6IC0xLFxuICByZW5kZXI6IGZ1bmN0aW9uIChfdGFibGUsIG9wdCkge1xuICAgIHZhciByb3cgPSBvcHQucm93O1xuICAgIHZhciBjaGVja2JveCA9IDxIVE1MSW5wdXRFbGVtZW50PkRvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcImlucHV0XCIsXG4gICAgICBcInNhLXRhYmxlX19yb3ctZXh0ZW5zaW9uXCIsXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgIH1cbiAgICApO1xuICAgIGNoZWNrYm94LmNoZWNrZWQgPSByb3cuZ2V0SXNTZWxlY3RlZCgpO1xuICAgIGNoZWNrYm94Lm9uY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcm93LnRvZ2dsZVNlbGVjdCgpO1xuICAgIH07XG4gICAgcmV0dXJuIGNoZWNrYm94O1xuICB9LFxufSk7XG4iLCJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCIuLi90YWJsZVwiO1xuXG5pbnRlcmZhY2UgSVRhYmxlRXh0ZW5zaW9uIHtcbiAgbG9jYXRpb246IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2aXNpYmxlSW5kZXg6IG51bWJlcjtcbiAgcmVuZGVyOiAodGFibGU6IFRhYmxlLCBvcHQ6IGFueSkgPT4gSFRNTEVsZW1lbnQ7XG4gIGRlc3Ryb3k/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGVFeHRlbnNpb25zIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZTogVGFibGUpIHt9XG4gIHByaXZhdGUgc3RhdGljIGV4dGVuc2lvbnM6IHsgW2xvY2F0aW9uOiBzdHJpbmddOiBBcnJheTxJVGFibGVFeHRlbnNpb24+IH0gPSB7fTtcbiAgcHJpdmF0ZSByZW5kZXJlZEV4dGVuc2lvbnM6IEFycmF5PElUYWJsZUV4dGVuc2lvbj4gPSBbXTtcblxuICBwdWJsaWMgcmVuZGVyKHRhcmdldE5vZGU6IEhUTUxFbGVtZW50LCBsb2NhdGlvbjogc3RyaW5nLCBvcHRpb25zPzogYW55KSB7XG4gICAgdmFyIGV4dGVuc2lvbnMgPSBUYWJsZUV4dGVuc2lvbnMuZXh0ZW5zaW9uc1tsb2NhdGlvbl07XG4gICAgaWYgKCEhZXh0ZW5zaW9ucykge1xuICAgICAgZXh0ZW5zaW9ucyA9IHRoaXMuc29ydEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7XG4gICAgICBleHRlbnNpb25zLmZvckVhY2goKGV4dGVuc2lvbikgPT4ge1xuICAgICAgICBpZiAoISFleHRlbnNpb24ucmVuZGVyKSB7XG4gICAgICAgICAgdmFyIGFjdGlvbiA9IGV4dGVuc2lvbi5yZW5kZXIodGhpcy50YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgaWYgKCEhYWN0aW9uKSB7XG4gICAgICAgICAgICB0YXJnZXROb2RlLmFwcGVuZENoaWxkKGFjdGlvbik7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkRXh0ZW5zaW9ucy5wdXNoKGV4dGVuc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbmRlcmVkRXh0ZW5zaW9ucy5mb3JFYWNoKChleHRlbnNpb24pID0+IHtcbiAgICAgIGlmICghIWV4dGVuc2lvbi5kZXN0cm95KSBleHRlbnNpb24uZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIHRoaXMucmVuZGVyZWRFeHRlbnNpb25zID0gW107XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbjogSVRhYmxlRXh0ZW5zaW9uKSB7XG4gICAgaWYgKCF0aGlzLmV4dGVuc2lvbnNbZXh0ZW5zaW9uLmxvY2F0aW9uXSlcbiAgICAgIHRoaXMuZXh0ZW5zaW9uc1tleHRlbnNpb24ubG9jYXRpb25dID0gW107XG4gICAgdGhpcy5leHRlbnNpb25zW2V4dGVuc2lvbi5sb2NhdGlvbl0ucHVzaChleHRlbnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVtb3ZlRXh0ZW5zaW9uKGV4dGVuc2lvbjogSVRhYmxlRXh0ZW5zaW9uKSB7XG4gICAgaWYoIWV4dGVuc2lvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBleHRlbnNpb25zID0gVGFibGVFeHRlbnNpb25zLmV4dGVuc2lvbnNbZXh0ZW5zaW9uLmxvY2F0aW9uXTtcbiAgICBjb25zdCBpbmRleCA9IGV4dGVuc2lvbnMuaW5kZXhPZihleHRlbnNpb24pO1xuICAgIGlmKGluZGV4ID49IDApIHtcbiAgICAgIGV4dGVuc2lvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHVucmVnaXN0ZXJFeHRlbnNpb24oXG4gICAgbG9jYXRpb246IHN0cmluZyxcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmdcbiAgKSB7XG4gICAgaWYoIWFjdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYoISFsb2NhdGlvbikge1xuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gVGFibGVFeHRlbnNpb25zLmZpbmRFeHRlbnNpb24obG9jYXRpb24sIGFjdGlvbk5hbWUpO1xuICAgICAgVGFibGVFeHRlbnNpb25zLnJlbW92ZUV4dGVuc2lvbihleHRlbnNpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goKGxvY2F0aW9uOnN0cmluZykgPT4gVGFibGVFeHRlbnNpb25zLnVucmVnaXN0ZXJFeHRlbnNpb24obG9jYXRpb24sIGFjdGlvbk5hbWUpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZpbmRFeHRlbnNpb24oXG4gICAgbG9jYXRpb246IHN0cmluZyxcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmdcbiAgKTogSVRhYmxlRXh0ZW5zaW9uIHtcbiAgICBpZiAoIXRoaXMuZXh0ZW5zaW9uc1tsb2NhdGlvbl0pIHJldHVybiBudWxsO1xuICAgIHZhciBleHRlbnNpb24gPSB0aGlzLmV4dGVuc2lvbnNbbG9jYXRpb25dLmZpbHRlcihmdW5jdGlvbiAoXG4gICAgICBleHRlbnNpb246IElUYWJsZUV4dGVuc2lvblxuICAgICkge1xuICAgICAgcmV0dXJuIGV4dGVuc2lvbi5uYW1lID09IGFjdGlvbk5hbWU7XG4gICAgfSlbMF07XG4gICAgcmV0dXJuIGV4dGVuc2lvbiB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RXh0ZW5zaW9ucyhleHRlbnNpb25zOiBBcnJheTxJVGFibGVFeHRlbnNpb24+KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV4dGVuc2lvbnMpKSByZXR1cm47XG4gICAgcmV0dXJuIFtdXG4gICAgICAuY29uY2F0KGV4dGVuc2lvbnMuZmlsdGVyKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi52aXNpYmxlSW5kZXggPj0gMCkpXG4gICAgICAuc29ydCgoZmlyc3RFeHRlbnNpb24sIHNlY29uZEV4dGVuc2lvbikgPT4ge1xuICAgICAgICByZXR1cm4gZmlyc3RFeHRlbnNpb24udmlzaWJsZUluZGV4IC0gc2Vjb25kRXh0ZW5zaW9uLnZpc2libGVJbmRleDtcbiAgICAgIH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBTdXJ2ZXlNb2RlbCwgUXVlc3Rpb24sIEV2ZW50LCBzZXR0aW5ncywgUXVlc3Rpb25TZWxlY3RCYXNlLCBRdWVzdGlvbk1hdHJpeE1vZGVsLCBJdGVtVmFsdWUsIEpzb25FcnJvciwgRXZlbnRCYXNlIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgKiBhcyBTdXJ2ZXlDb3JlIGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHtcbiAgSVBlcm1pc3Npb24sXG4gIFF1ZXN0aW9uTG9jYXRpb24sXG4gIElUYWJsZVN0YXRlLFxuICBJQ29sdW1uLFxuICBJQ29sdW1uRGF0YSxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBEZXRhaWxzIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy9kZXRhaWxzZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgbG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL2xvY2FsaXphdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB7IFRhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbnMvdGFibGVleHRlbnNpb25zXCI7XG5pbXBvcnQgeyBjcmVhdGVDb21tZXJjaWFsTGljZW5zZUxpbmssIGNyZWF0ZUltYWdlc0NvbnRhaW5lciwgY3JlYXRlTGlua3NDb250YWluZXIsIERvY3VtZW50SGVscGVyIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBDb2x1bW5zQnVpbGRlckZhY3RvcnkgfSBmcm9tIFwiLi9jb2x1bW5idWlsZGVyXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q29sdW1uIH0gZnJvbSBcIi4vY29sdW1uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZU9wdGlvbnMge1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgcHJvcGVydHkgdG8gdHJ1ZSB0byByZW5kZXIgY29sdW1uIGhlYWRpbmdzIHVzaW5nIHF1ZXN0aW9uIG5hbWVzXG4gICAqL1xuICB1c2VOYW1lc0FzVGl0bGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZSB0aGlzIGV2ZW50IHRvIGNoYW5nZSB0aGUgZGlzcGxheSB2YWx1ZSBvZiBxdWVzdGlvbiBpbiB0YWJsZS5cbiAgICogPGJyLz4gYHNlbmRlcmAgLSB0aGUgdGFibGUgb2JqZWN0IHRoYXQgZmlyZXMgdGhlIGV2ZW50LlxuICAgKiA8YnIvPiBgb3B0aW9ucy5xdWVzdGlvbmAgLSB0aGUgcXVlc3Rpb24gb2JlY3QgZm9yIHdoaWNoIGV2ZW50IGlzIGZpcmVkLlxuICAgKiA8YnIvPiBgb3B0aW9ucy5kaXNwbGF5VmFsdWVgIC0gdGhlIHF1ZXN0aW9uIGRpc3BsYXkgdmFsdWUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgb3B0aW9uIGJlZm9yZSBpdCBpcyBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlLlxuICAgKi9cbiAgb25HZXRRdWVzdGlvblZhbHVlPzogKG9wdGlvbnM6IHtcbiAgICBxdWVzdGlvbjogUXVlc3Rpb24sXG4gICAgZGlzcGxheVZhbHVlOiBhbnksXG4gIH0pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUV2ZW50IGV4dGVuZHMgRXZlbnRCYXNlPFRhYmxlPiB7fVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGUge1xuICBwdWJsaWMgc3RhdGljIHNob3dGaWxlc0FzSW1hZ2VzID0gZmFsc2U7XG4gIHB1YmxpYyBzdGF0aWMgaGF2ZUNvbW1lcmNpYWxMaWNlbnNlOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCB0YWJsZURhdGE6IGFueTtcbiAgcHJvdGVjdGVkIGV4dGVuc2lvbnM6IFRhYmxlRXh0ZW5zaW9ucztcbiAgcHJpdmF0ZSBoYXZlQ29tbWVyY2lhbExpY2Vuc2UgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9jb2x1bW5zOiBBcnJheTxJQ29sdW1uPjtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9zdXJ2ZXk6IFN1cnZleU1vZGVsLFxuICAgIHByb3RlY3RlZCBkYXRhOiBBcnJheTxPYmplY3Q+LFxuICAgIHByb3RlY3RlZCBfb3B0aW9uczogSVRhYmxlT3B0aW9ucyA9IHt9LFxuICAgIHByb3RlY3RlZCBfY29sdW1uc0RhdGE6IEFycmF5PElDb2x1bW5EYXRhPiA9IFtdXG4gICkge1xuICAgIGlmKCF0aGlzLl9vcHRpb25zKSB7XG4gICAgICB0aGlzLl9vcHRpb25zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5fY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zKF9zdXJ2ZXkpO1xuICAgIHRoaXMuaW5pdFRhYmxlRGF0YShkYXRhKTtcbiAgICBsb2NhbGl6YXRpb24uY3VycmVudExvY2FsZSA9IHRoaXMuX3N1cnZleS5sb2NhbGU7XG4gICAgdGhpcy5fY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zKF9zdXJ2ZXkpO1xuXG4gICAgaWYoX2NvbHVtbnNEYXRhLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5zRnJvbURhdGEodGhpcy5fY29sdW1uc0RhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBUYWJsZUV4dGVuc2lvbnModGhpcyk7XG4gICAgY29uc3QgZiA9ICg8YW55PlN1cnZleUNvcmUpLmhhc0xpY2Vuc2U7XG4gICAgdGhpcy5oYXZlQ29tbWVyY2lhbExpY2Vuc2UgPSAoISFmICYmIGYoNCkpIHx8XG4gICAgICBUYWJsZS5oYXZlQ29tbWVyY2lhbExpY2Vuc2UgfHxcbiAgICAgICghIV9vcHRpb25zICYmXG4gICAgICAgICh0eXBlb2YgX29wdGlvbnMuaGF2ZUNvbW1lcmNpYWxMaWNlbnNlICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgPyBfb3B0aW9ucy5oYXZlQ29tbWVyY2lhbExpY2Vuc2VcbiAgICAgICAgICA6IGZhbHNlKSk7XG4gIH1cbiAgcHJvdGVjdGVkIHJlbmRlclJlc3VsdDogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBjdXJyZW50UGFnZVNpemU6IG51bWJlciA9IDU7XG4gIHByb3RlY3RlZCBjdXJyZW50UGFnZU51bWJlcjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3Jvd3M6IFRhYmxlUm93W10gPSBbXTtcbiAgcHJvdGVjdGVkIGlzQ29sdW1uUmVvcmRlckVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldHMgcGFnaW5hdGlvbiBzZWxlY3RvciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIHBhZ2luYXRpb25TaXplU2VsZWN0b3I6IG51bWJlcltdID0gWzEsIDUsIDEwLCAyNSwgNTAsIDEwMF07XG5cbiAgcHVibGljIG9uQ29sdW1uc1Zpc2liaWxpdHlDaGFuZ2VkID0gbmV3IFRhYmxlRXZlbnQoKTtcblxuICBwdWJsaWMgb25Db2x1bW5zTG9jYXRpb25DaGFuZ2VkID0gbmV3IFRhYmxlRXZlbnQoKTtcblxuICBwdWJsaWMgb25Sb3dSZW1vdmVkID1uZXcgVGFibGVFdmVudCgpO1xuXG4gIHB1YmxpYyByZW5kZXJEZXRhaWxBY3Rpb25zOiAoXG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICByb3c6IFRhYmxlUm93XG4gICkgPT4gSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIGdldERhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuICBwdWJsaWMgZ2V0IHN1cnZleSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3VydmV5O1xuICB9XG4gIHB1YmxpYyBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBhcHBseUZpbHRlcih2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgcHVibGljIGFic3RyYWN0IGFwcGx5Q29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBzb3J0QnlDb2x1bW4oY29sdW1uTmFtZTogc3RyaW5nLCBkaXJlY3Rpb246IHN0cmluZyk6IHZvaWQ7XG5cbiAgcHVibGljIHJlbmRlcih0YXJnZXROb2RlOiBIVE1MRWxlbWVudCB8IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0Tm9kZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdGFyZ2V0Tm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldE5vZGUpO1xuICAgIH1cbiAgICB0YXJnZXROb2RlLmlubmVySFRNTCA9IFwiXCI7XG4gICAgaWYgKCF0aGlzLmhhdmVDb21tZXJjaWFsTGljZW5zZSkge1xuICAgICAgdGFyZ2V0Tm9kZS5hcHBlbmRDaGlsZChjcmVhdGVDb21tZXJjaWFsTGljZW5zZUxpbmsoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVuYWJsZUNvbHVtblJlb3JkZXIoKSB7XG4gICAgdGhpcy5pc0NvbHVtblJlb3JkZXJFbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlQ29sdW1uUmVvcmRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ29sdW1uUmVvcmRlckVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYWdlTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2VOdW1iZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0UGFnZU51bWJlcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCBwYWdlIHNpemUuXG4gICAqL1xuICBwdWJsaWMgZ2V0UGFnZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZVNpemU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjdXJyZW50IHBhZ2Ugc2l6ZS5cbiAgICovXG4gIHB1YmxpYyBzZXRQYWdlU2l6ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZVNpemUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uU3RhdGVDaGFuZ2VkLmZpcmUodGhpcywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3JlYXRlZFJvd3MoKTogVGFibGVSb3dbXSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCh0aGlzLl9yb3dzKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckNyZWF0ZWRSb3dzKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICByb3cuZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIHRoaXMuX3Jvd3MgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdXNlTmFtZXNBc1RpdGxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucyAmJiB0aGlzLl9vcHRpb25zLnVzZU5hbWVzQXNUaXRsZXMgPT09IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRDb2x1bW5zID0gKHN1cnZleTogU3VydmV5TW9kZWwpID0+IHtcbiAgICBsZXQgY29sdW1uczogQXJyYXk8SUNvbHVtbj4gPSBbXTtcbiAgICB0aGlzLl9zdXJ2ZXkuZ2V0QWxsUXVlc3Rpb25zKCkuZm9yRWFjaCgocXVlc3Rpb246IFF1ZXN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gQ29sdW1uc0J1aWxkZXJGYWN0b3J5Lkluc3RhbmNlLmdldENvbHVtbnNCdWlsZGVyKHF1ZXN0aW9uLmdldFRlbXBsYXRlKCkpO1xuICAgICAgY29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGJ1aWxkZXIuYnVpbGRDb2x1bW5zKHF1ZXN0aW9uLCB0aGlzKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH07XG5cbiAgcHVibGljIGlzQ29sdW1uVmlzaWJsZShjb2x1bW46IElDb2x1bW4pIHtcbiAgICBpZiAoY29sdW1uLmxvY2F0aW9uICE9PSBRdWVzdGlvbkxvY2F0aW9uLkNvbHVtbikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBjb2x1bW4uaXNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zKCkge1xuICAgIHJldHVybiBbXS5jb25jYXQodGhpcy5fY29sdW1ucyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IGNvbHVtbnMoY29sdW1uczogQXJyYXk8SUNvbHVtbj4pIHtcbiAgICB0aGlzLl9jb2x1bW5zID0gY29sdW1ucztcbiAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XG4gICAgdGhpcy5vblN0YXRlQ2hhbmdlZC5maXJlKHRoaXMsIHRoaXMuc3RhdGUpO1xuICB9XG4gIHB1YmxpYyBnZXQgaXNJbml0VGFibGVEYXRhUHJvY2Vzc2luZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuaXNJbml0VGFibGVEYXRhUHJvY2Vzc2luZ1ZhbHVlOyB9XG4gIHByaXZhdGUgaXNJbml0VGFibGVEYXRhUHJvY2Vzc2luZ1ZhbHVlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgaW5pdFRhYmxlRGF0YShkYXRhOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5pc0luaXRUYWJsZURhdGFQcm9jZXNzaW5nVmFsdWUgPSB0cnVlO1xuICAgIHRoaXMudGFibGVEYXRhID0gKGRhdGEgfHwgW10pLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgdmFyIGRhdGFJdGVtOiBhbnkgPSB7fTtcbiAgICAgIHRoaXMuX3N1cnZleS5kYXRhID0gaXRlbTtcbiAgICAgIHRoaXMuX2NvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdCA9IGNvbHVtbi5nZXRDZWxsRGF0YSh0aGlzLCBpdGVtKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9vcHRpb25zLm9uR2V0UXVlc3Rpb25WYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdGhpcy5fb3B0aW9ucy5vbkdldFF1ZXN0aW9uVmFsdWUob3B0KTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhSXRlbVtjb2x1bW4ubmFtZV0gPSBvcHQuZGlzcGxheVZhbHVlO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkYXRhSXRlbTtcbiAgICB9KTtcbiAgICB0aGlzLmlzSW5pdFRhYmxlRGF0YVByb2Nlc3NpbmdWYWx1ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG1vdmVDb2x1bW4oZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgdmFyIGRlbGV0ZWRDb2x1bW5zID0gdGhpcy5fY29sdW1ucy5zcGxpY2UoZnJvbSwgMSk7XG4gICAgdGhpcy5fY29sdW1ucy5zcGxpY2UodG8sIDAsIGRlbGV0ZWRDb2x1bW5zWzBdKTtcbiAgICB0aGlzLm9uU3RhdGVDaGFuZ2VkLmZpcmUodGhpcywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29sdW1uTG9jYXRpb24oY29sdW1uTmFtZTogc3RyaW5nLCBsb2NhdGlvbjogUXVlc3Rpb25Mb2NhdGlvbikge1xuICAgIHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGNvbHVtbk5hbWUpLmxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgdGhpcy5vbkNvbHVtbnNMb2NhdGlvbkNoYW5nZWQuZmlyZSh0aGlzLCB7XG4gICAgICBjb2x1bW5OYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgIH0pO1xuICAgIHRoaXMub25TdGF0ZUNoYW5nZWQuZmlyZSh0aGlzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5CeU5hbWUoY29sdW1uTmFtZTogc3RyaW5nKTogSUNvbHVtbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5uYW1lID09PSBjb2x1bW5OYW1lKVswXTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbk5hbWU6IHN0cmluZywgaXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgdmFyIGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGNvbHVtbk5hbWUpO1xuICAgIGNvbHVtbi5pc1Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgdGhpcy5vbkNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlZC5maXJlKHRoaXMsIHtcbiAgICAgIGNvbHVtbk5hbWU6IGNvbHVtbk5hbWUsXG4gICAgICBjb2x1bW5WaXNpYmlsaXR5OiBpc1Zpc2libGUsXG4gICAgfSk7XG4gICAgdGhpcy5vblN0YXRlQ2hhbmdlZC5maXJlKHRoaXMsIHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgcHVibGljIHNldENvbHVtbldpZHRoKGNvbHVtbk5hbWU6IHN0cmluZywgd2lkdGg6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHZhciBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShjb2x1bW5OYW1lKTtcbiAgICBjb2x1bW4ud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLm9uU3RhdGVDaGFuZ2VkLmZpcmUodGhpcywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlUm93KHJvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICB2YXIgaW5kZXggPSB0aGlzLl9yb3dzLmluZGV4T2Yocm93KTtcbiAgICB0aGlzLl9yb3dzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5vblJvd1JlbW92ZWQuZmlyZSh0aGlzLCB7IHJvdzogcm93IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCBsb2NhbGUgb2YgdGhlIHRhYmxlLlxuICAgKiBJZiBsb2NhbGVzIG1vcmUgdGhhbiBvbmUsIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24gZHJvcGRvd24gd2lsbCBiZSBhZGRlZCBpbiB0aGUgdG9vbGJhclxuICAgKi9cbiAgcHVibGljIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIGxvY2FsaXphdGlvbi5jdXJyZW50TG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgbG9jYWxlIGZvciB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyBzZXQgbG9jYWxlKG5ld0xvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3VydmV5LmxvY2FsZSA9IG5ld0xvY2FsZTtcbiAgICBsb2NhbGl6YXRpb24uY3VycmVudExvY2FsZSA9IG5ld0xvY2FsZTtcbiAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XG4gICAgdGhpcy5vblN0YXRlQ2hhbmdlZC5maXJlKHRoaXMsIHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldExvY2FsZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCh0aGlzLl9zdXJ2ZXkuZ2V0VXNlZExvY2FsZXMoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChoYXJkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAoaGFyZCkge1xuICAgICAgdGhpcy5pbml0VGFibGVEYXRhKHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUmVuZGVyZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLmdldFBhZ2VOdW1iZXIoKTtcbiAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0aGlzLnJlbmRlclJlc3VsdDtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgdGhpcy5yZW5kZXIodGFyZ2V0Tm9kZSk7XG4gICAgICB0aGlzLnNldFBhZ2VTaXplKHRoaXMuY3VycmVudFBhZ2VTaXplKTtcbiAgICAgIHRoaXMuc2V0UGFnZU51bWJlcih0aGlzLmN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLmNsZWFyQ3JlYXRlZFJvd3MoKTtcbiAgICB0aGlzLmV4dGVuc2lvbnMuZGVzdHJveSgpO1xuICAgIHRoaXMucmVuZGVyUmVzdWx0LmlubmVySFRNTCA9IFwiXCI7XG4gICAgdGhpcy5yZW5kZXJSZXN1bHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUmVuZGVyZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5yZW5kZXJSZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVml6dWFsaXphdGlvbiBwYW5lbCBzdGF0ZSBnZXR0ZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IElUYWJsZVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlOiBsb2NhbGl6YXRpb24uY3VycmVudExvY2FsZSxcbiAgICAgIGVsZW1lbnRzOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2NvbHVtbnMpKSxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLmN1cnJlbnRQYWdlU2l6ZSxcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBWaXp1YWxpemF0aW9uIHBhbmVsIHN0YXRlIHNldHRlci5cbiAgICovXG4gIHB1YmxpYyBzZXQgc3RhdGUobmV3U3RhdGU6IElUYWJsZVN0YXRlKSB7XG4gICAgaWYgKCFuZXdTdGF0ZSkgcmV0dXJuO1xuXG4gICAgaWYgKHR5cGVvZiBuZXdTdGF0ZS5sb2NhbGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGxvY2FsaXphdGlvbi5jdXJyZW50TG9jYWxlID0gbmV3U3RhdGUubG9jYWxlO1xuICAgICAgdGhpcy5fc3VydmV5LmxvY2FsZSA9IG5ld1N0YXRlLmxvY2FsZTtcbiAgICAgIHRoaXMuaW5pdFRhYmxlRGF0YSh0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbmV3U3RhdGUuZWxlbWVudHMgIT09IFwidW5kZWZpbmVkXCIpXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNGcm9tRGF0YShuZXdTdGF0ZS5lbGVtZW50cyk7XG4gICAgaWYgKHR5cGVvZiBuZXdTdGF0ZS5wYWdlU2l6ZSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VTaXplID0gbmV3U3RhdGUucGFnZVNpemU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnNGcm9tRGF0YShjb2x1bW5zRGF0YTogQXJyYXk8SUNvbHVtbkRhdGE+KSB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2NvbHVtbnM7XG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICBjb25zdCBlbCA9IGNvbHVtbnNEYXRhLmZpbHRlcihlbCA9PiBjb2x1bW4ubmFtZSA9PT0gZWwubmFtZSlbMF07XG4gICAgICBpZighIWVsKSB7XG4gICAgICAgIGNvbHVtbi5mcm9tSlNPTihlbCk7XG4gICAgICAgIGNvbHVtbi52aXNpYmxlSW5kZXggPSBjb2x1bW5zRGF0YS5pbmRleE9mKGVsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb2x1bW5zRGF0YS5mb3JFYWNoKGVsID0+IHtcbiAgICAgIGxldCBjb2x1bW4gPSBjb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLm5hbWUgPT09IGVsLm5hbWUpWzBdO1xuICAgICAgaWYoIWNvbHVtbikge1xuICAgICAgICBjb2x1bW4gPSBuZXcgRGVmYXVsdENvbHVtbih1bmRlZmluZWQsIHRoaXMpO1xuICAgICAgICBjb2x1bW4uZnJvbUpTT04oZWwpO1xuICAgICAgICBjb2x1bW4udmlzaWJsZUluZGV4ID0gY29sdW1uc0RhdGEuaW5kZXhPZihlbCk7XG4gICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLl9jb2x1bW5zLnNvcnQoKGNvbDEsIGNvbDIpID0+IGNvbDEudmlzaWJsZUluZGV4IC0gY29sMi52aXNpYmxlSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGFibGUgc3RhdGUgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBvblN0YXRlQ2hhbmdlZCA9IG5ldyBUYWJsZUV2ZW50KCk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGFibGUgcGVybWlzc2lvbnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBlcm1pc3Npb25zKCk6IElQZXJtaXNzaW9uW10ge1xuICAgIHJldHVybiA8YW55PnRoaXMuX2NvbHVtbnMubWFwKChjb2x1bW46IElDb2x1bW4pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICBpc1B1YmxpYzogY29sdW1uLmlzUHVibGljLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU2V0cyB0YWJsZSBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHB1YmxpYyBzZXQgcGVybWlzc2lvbnMocGVybWlzc2lvbnM6IElQZXJtaXNzaW9uW10pIHtcbiAgICBjb25zdCB1cGRhdGVkRWxlbWVudHMgPSB0aGlzLl9jb2x1bW5zLm1hcCgoY29sdW1uOiBJQ29sdW1uKSA9PiB7XG4gICAgICBwZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uKSA9PiB7XG4gICAgICAgIGlmIChwZXJtaXNzaW9uLm5hbWUgPT09IGNvbHVtbi5uYW1lKVxuICAgICAgICAgIGNvbHVtbi5pc1B1YmxpYyA9IHBlcm1pc3Npb24uaXNQdWJsaWM7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9KTtcbiAgICB0aGlzLl9jb2x1bW5zID0gW10uY29uY2F0KHVwZGF0ZWRFbGVtZW50cyk7XG4gICAgdGhpcy5vblBlcm1pc3Npb25zQ2hhbmdlZENhbGxiYWNrICYmXG4gICAgICB0aGlzLm9uUGVybWlzc2lvbnNDaGFuZ2VkQ2FsbGJhY2sodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBwZXJtaXNzaW9ucyBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgb25QZXJtaXNzaW9uc0NoYW5nZWRDYWxsYmFjazogYW55O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVSb3cge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGFibGU6IFRhYmxlLFxuICAgIHByb3RlY3RlZCBleHRlbnNpb25zQ29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICBwcm90ZWN0ZWQgZGV0YWlsc0NvbnRhaW5lcjogSFRNTEVsZW1lbnRcbiAgKSB7XG4gICAgdGhpcy5kZXRhaWxzID0gbmV3IERldGFpbHModGFibGUsIHRoaXMsIGRldGFpbHNDb250YWluZXIpO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBUYWJsZUV4dGVuc2lvbnModGFibGUpO1xuICAgIHRhYmxlLm9uQ29sdW1uc0xvY2F0aW9uQ2hhbmdlZC5hZGQodGhpcy5vbkNvbHVtbkxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrKTtcbiAgfVxuICBwdWJsaWMgZGV0YWlsczogRGV0YWlscztcbiAgcHVibGljIGV4dGVuc2lvbnM6IFRhYmxlRXh0ZW5zaW9ucztcbiAgcHJpdmF0ZSBkZXRhaWxlZFJvd0NsYXNzID0gXCJzYS10YWJsZV9fZGV0YWlsLXJvd1wiO1xuICBwcml2YXRlIGlzRGV0YWlsc0V4cGFuZGVkID0gZmFsc2U7XG4gIHB1YmxpYyBvblRvZ2dsZURldGFpbHM6IEV2ZW50PFxuICAgIChzZW5kZXI6IFRhYmxlUm93LCBvcHRpb25zOiBhbnkpID0+IGFueSxcbiAgICBUYWJsZVJvdyxcbiAgICBhbnlcbiAgPiA9IG5ldyBFdmVudDwoc2VuZGVyOiBUYWJsZVJvdywgb3B0aW9uczogYW55KSA9PiBhbnksIFRhYmxlUm93LCBhbnk+KCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgcm93J3MgaHRtbCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RWxlbWVudCgpOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogUmV0dXJucyBkYXRhLCB3aGljaCBpcyBkaXNwbGF5ZWQgaW4gdGhlIHJvdy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRSb3dEYXRhKCk6IGFueTtcblxuICAvKipcbiAgICogUmV0dXJucyBwb3NpdGlvbiBvZiByb3cgaW4gdGhlIHRhYmxlJ3MgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRhUG9zaXRpb24oKTogbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBpc1NlbGVjdGVkOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgdGhpcy5leHRlbnNpb25zLnJlbmRlcih0aGlzLmV4dGVuc2lvbnNDb250YWluZXIsIFwicm93XCIsIHsgcm93OiB0aGlzIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5EZXRhaWxzKCkge1xuICAgIHRoaXMuZGV0YWlscy5vcGVuKCk7XG4gICAgdGhpcy5nZXRFbGVtZW50KCkuY2xhc3NOYW1lICs9IFwiIFwiICsgdGhpcy5kZXRhaWxlZFJvd0NsYXNzO1xuICAgIHRoaXMub25Ub2dnbGVEZXRhaWxzLmZpcmUodGhpcywgeyBpc0V4cGFuZGVkOiB0cnVlIH0pO1xuICAgIHRoaXMuaXNEZXRhaWxzRXhwYW5kZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlscygpIHtcbiAgICB0aGlzLmRldGFpbHMuY2xvc2UoKTtcbiAgICB0aGlzLmdldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZGV0YWlsZWRSb3dDbGFzcyk7XG4gICAgdGhpcy5vblRvZ2dsZURldGFpbHMuZmlyZSh0aGlzLCB7IGlzRXhwYW5kZWQ6IGZhbHNlIH0pO1xuICAgIHRoaXMuaXNEZXRhaWxzRXhwYW5kZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLmlzRGV0YWlsc0V4cGFuZGVkKSB7XG4gICAgICB0aGlzLmNsb3NlRGV0YWlscygpO1xuICAgIH0gZWxzZSB0aGlzLm9wZW5EZXRhaWxzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1NlbGVjdGVkO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VsZWN0ZWQgPSAhdGhpcy5pc1NlbGVjdGVkO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLnJlbW92ZVJvdyh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Db2x1bW5Mb2NhdGlvbkNoYW5nZWRDYWxsYmFjayA9ICgpID0+IHtcbiAgICB0aGlzLmNsb3NlRGV0YWlscygpO1xuICB9O1xuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUub25Db2x1bW5zTG9jYXRpb25DaGFuZ2VkLnJlbW92ZShcbiAgICAgIHRoaXMub25Db2x1bW5Mb2NhdGlvbkNoYW5nZWRDYWxsYmFja1xuICAgICk7XG4gICAgdGhpcy5leHRlbnNpb25zLmRlc3Ryb3koKTtcbiAgfVxufSIsImV4cG9ydCB2YXIgX19hc3NpZ24gPVxuICAoPGFueT5PYmplY3QpW1wiYXNzaWduXCJdIHx8XG4gIGZ1bmN0aW9uKHRhcmdldDogYW55KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yICh2YXIgcCBpbiBzKVxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0YXJnZXRbcF0gPSBzW3BdO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKHRoaXNDbGFzczogYW55LCBiYXNlQ2xhc3M6IGFueSkge1xuICBmb3IgKHZhciBwIGluIGJhc2VDbGFzcylcbiAgICBpZiAoYmFzZUNsYXNzLmhhc093blByb3BlcnR5KHApKSB0aGlzQ2xhc3NbcF0gPSBiYXNlQ2xhc3NbcF07XG4gIGZ1bmN0aW9uIF9fKCkge1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSB0aGlzQ2xhc3M7XG4gIH1cbiAgdGhpc0NsYXNzLnByb3RvdHlwZSA9XG4gICAgYmFzZUNsYXNzID09PSBudWxsXG4gICAgICA/IE9iamVjdC5jcmVhdGUoYmFzZUNsYXNzKVxuICAgICAgOiAoKF9fLnByb3RvdHlwZSA9IGJhc2VDbGFzcy5wcm90b3R5cGUpLCBuZXcgKDxhbnk+X18pKCkpO1xufVxuXG5leHBvcnQgdmFyIF9fcmVzdCA9IGZ1bmN0aW9uKHNvdXJjZTogYW55LCBlOiBhbnkpIHtcbiAgdmFyIHJlc3VsdDogYW55ID0ge307XG4gIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBzb3VyY2UpXG4gICAgaWYgKFxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwgcHJvcGVydHlOYW1lKSAmJlxuICAgICAgZS5pbmRleE9mKHByb3BlcnR5TmFtZSkgPCAwXG4gICAgKVxuICAgICAgcmVzdWx0W3Byb3BlcnR5TmFtZV0gPSBzb3VyY2VbcHJvcGVydHlOYW1lXTtcbiAgaWYgKFxuICAgIHNvdXJjZSAhPSBudWxsICYmXG4gICAgdHlwZW9mICg8YW55Pk9iamVjdClbXCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcIl0gPT09IFwiZnVuY3Rpb25cIlxuICApXG4gICAgZm9yIChcbiAgICAgIHZhciBpID0gMCxcbiAgICAgICAgcHJvcGVydHlTeW1ib2xzID0gKDxhbnk+T2JqZWN0KVtcImdldE93blByb3BlcnR5U3ltYm9sc1wiXShzb3VyY2UpO1xuICAgICAgaSA8IHByb3BlcnR5U3ltYm9scy5sZW5ndGg7XG4gICAgICBpKytcbiAgICApXG4gICAgICBpZiAoZS5pbmRleE9mKHByb3BlcnR5U3ltYm9sc1tpXSkgPCAwKVxuICAgICAgICByZXN1bHRbcHJvcGVydHlTeW1ib2xzW2ldXSA9IHNvdXJjZVtwcm9wZXJ0eVN5bWJvbHNbaV1dO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZGVjbGFyZSB2YXIgUmVmbGVjdDogYW55O1xuXG5leHBvcnQgdmFyIF9fZGVjb3JhdGUgPSBmdW5jdGlvbihcbiAgZGVjb3JhdG9yczogYW55LFxuICB0YXJnZXQ6IGFueSxcbiAga2V5OiBhbnksXG4gIGRlc2M6IGFueVxuKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICByID1cbiAgICAgIGMgPCAzXG4gICAgICAgID8gdGFyZ2V0XG4gICAgICAgIDogZGVzYyA9PT0gbnVsbFxuICAgICAgICAgID8gKGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSlcbiAgICAgICAgICA6IGRlc2MsXG4gICAgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpXG4gICAgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pXG4gICAgICBpZiAoKGQgPSBkZWNvcmF0b3JzW2ldKSlcbiAgICAgICAgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59O1xuIiwiZXhwb3J0IGNsYXNzIERvY3VtZW50SGVscGVyIHtcclxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVNlbGVjdG9yKFxyXG4gICAgb3B0aW9uczogQXJyYXk8eyB2YWx1ZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcgfT4sXHJcbiAgICBpc1NlbGVjdGVkOiAob3B0aW9uOiB7IHZhbHVlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB9KSA9PiBib29sZWFuLFxyXG4gICAgaGFuZGxlcjogKGU6IGFueSkgPT4gdm9pZFxyXG4gICkge1xyXG4gICAgY29uc3Qgc2VsZWN0V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICBzZWxlY3RXcmFwcGVyLmNsYXNzTmFtZSA9IFwic2EtcXVlc3Rpb25fX3NlbGVjdC13cmFwcGVyXCI7XHJcbiAgICBjb25zdCBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2VsZWN0XCIpO1xyXG4gICAgc2VsZWN0LmNsYXNzTmFtZSA9IFwic2EtcXVlc3Rpb25fX3NlbGVjdFwiO1xyXG4gICAgb3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgbGV0IG9wdGlvbkVsZW1lbnQgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIFwiXCIsIHtcclxuICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxyXG4gICAgICAgIHRleHQ6IG9wdGlvbi50ZXh0LFxyXG4gICAgICAgIHNlbGVjdGVkOiBpc1NlbGVjdGVkKG9wdGlvbiksXHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uRWxlbWVudCk7XHJcbiAgICB9KTtcclxuICAgIHNlbGVjdC5vbmNoYW5nZSA9IGhhbmRsZXI7XHJcbiAgICBzZWxlY3RXcmFwcGVyLmFwcGVuZENoaWxkKHNlbGVjdCk7XHJcbiAgICByZXR1cm4gc2VsZWN0V3JhcHBlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlQnV0dG9uKFxyXG4gICAgaGFuZGxlcjogKGU6IGFueSkgPT4gdm9pZCxcclxuICAgIHRleHQgPSBcIlwiLFxyXG4gICAgY2xhc3NOYW1lID0gXCJzYS10b29sYmFyX19idXR0b25cIlxyXG4gICkge1xyXG4gICAgY29uc3QgYnV0dG9uID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgY2xhc3NOYW1lLCB7XHJcbiAgICAgIGlubmVyVGV4dDogdGV4dCxcclxuICAgICAgb25jbGljazogaGFuZGxlcixcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGJ1dHRvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlRWxlbWVudChcclxuICAgIHRhZ05hbWU6IHN0cmluZyxcclxuICAgIGNsYXNzTmFtZTogc3RyaW5nID0gXCJcIixcclxuICAgIGF0dHJzPzogYW55XHJcbiAgKTogSFRNTEVsZW1lbnQge1xyXG4gICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcclxuICAgIGVsLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcclxuICAgIGlmICghIWF0dHJzKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAoPGFueT5lbClba2V5XSA9IGF0dHJzW2tleV07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTdmdFbGVtZW50KHBhdGg6IHN0cmluZyk6IFNWR1NWR0VsZW1lbnQge1xyXG4gICAgY29uc3Qgc3ZnRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcclxuICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxyXG4gICAgICBcInN2Z1wiXHJcbiAgICApO1xyXG4gICAgY29uc3QgdXNlRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcclxuICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxyXG4gICAgICBcInVzZVwiXHJcbiAgICApO1xyXG4gICAgdXNlRWxlbS5zZXRBdHRyaWJ1dGVOUyhcclxuICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXHJcbiAgICAgIFwiaHJlZlwiLFxyXG4gICAgICBcIiNzYS1zdmctXCIgKyBwYXRoXHJcbiAgICApO1xyXG4gICAgc3ZnRWxlbS5hcHBlbmRDaGlsZCh1c2VFbGVtKTtcclxuICAgIHJldHVybiBzdmdFbGVtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTdmdCdXR0b24ocGF0aDogc3RyaW5nKTogSFRNTEJ1dHRvbkVsZW1lbnQge1xyXG4gICAgY29uc3QgYnRuID0gPEhUTUxCdXR0b25FbGVtZW50PihcclxuICAgICAgRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBcInNhLXRhYmxlX19zdmctYnV0dG9uXCIpXHJcbiAgICApO1xyXG4gICAgYnRuLmFwcGVuZENoaWxkKERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0VsZW1lbnQocGF0aCkpO1xyXG4gICAgcmV0dXJuIGJ0bjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlU3ZnVG9nZ2xlQnV0dG9uKFxyXG4gICAgc3ZnUGF0aDE6IHN0cmluZyxcclxuICAgIHN2UHBhdGgyOiBzdHJpbmcsXHJcbiAgICB0ZXh0MTogc3RyaW5nLFxyXG4gICAgdGV4dDI6IHN0cmluZyxcclxuICAgIGhhbmRsZXIxOiAoZTogYW55KSA9PiBhbnksXHJcbiAgICBoYW5kbGVyMjogKGU6IGFueSkgPT4gYW55LFxyXG4gICAgc3RhdGUgPSBcImZpcnN0XCIsXHJcbiAgICBjbGFzc05hbWUgPSBcInNhLXRvb2xiYXJfX2J1dHRvbiBzYS10b29sYmFyX19zdmctYnV0dG9uXCJcclxuICApOiBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdCBzdmcxID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnRWxlbWVudChzdmdQYXRoMSk7XHJcbiAgICBjb25zdCBzdmcyID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlU3ZnRWxlbWVudChzdlBwYXRoMik7XHJcbiAgICBjb25zdCBidXR0b24gPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIGNsYXNzTmFtZSk7XHJcblxyXG4gICAgY29uc3QgdG9nZ2xlID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoc3RhdGUgPT09IFwiZmlyc3RcIikge1xyXG4gICAgICAgIHN0YXRlID0gXCJzZWNvbmRcIjtcclxuICAgICAgICBidXR0b24udGl0bGUgPSB0ZXh0MjtcclxuICAgICAgICBidXR0b24ucmVtb3ZlQ2hpbGQoc3ZnMSk7XHJcbiAgICAgICAgYnV0dG9uLmFwcGVuZENoaWxkKHN2ZzIpO1xyXG4gICAgICAgIGhhbmRsZXIyKGUpO1xyXG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBcInNlY29uZFwiKSB7XHJcbiAgICAgICAgc3RhdGUgPSBcImZpcnN0XCI7XHJcbiAgICAgICAgYnV0dG9uLnRpdGxlID0gdGV4dDE7XHJcbiAgICAgICAgYnV0dG9uLnJlbW92ZUNoaWxkKHN2ZzIpO1xyXG4gICAgICAgIGJ1dHRvbi5hcHBlbmRDaGlsZChzdmcxKTtcclxuICAgICAgICBoYW5kbGVyMShlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoc3RhdGUgPT09IFwiZmlyc3RcIikge1xyXG4gICAgICBidXR0b24udGl0bGUgPSB0ZXh0MTtcclxuICAgICAgYnV0dG9uLmFwcGVuZENoaWxkKHN2ZzEpO1xyXG4gICAgfSBlbHNlIGlmICgoc3RhdGUgPSBcInNlY29uZFwiKSkge1xyXG4gICAgICBidXR0b24udGl0bGUgPSB0ZXh0MjtcclxuICAgICAgYnV0dG9uLmFwcGVuZENoaWxkKHN2ZzIpO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbi5vbmNsaWNrID0gdG9nZ2xlO1xyXG5cclxuICAgIHJldHVybiBidXR0b247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUlucHV0KFxyXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXHJcbiAgICBwbGFjZWhvbGRlciA9IFwiXCIsXHJcbiAgICBkZWZhdWx0VmFsdWUgPSBcIlwiXHJcbiAgKTogSFRNTElucHV0RWxlbWVudCB7XHJcbiAgICB2YXIgZWwgPSA8SFRNTElucHV0RWxlbWVudD5Eb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFxyXG4gICAgICBcImlucHV0XCIsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAge1xyXG4gICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlcixcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiBlbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgb3B0aW9ucyA9IHtcclxuICBydW5uaW5nSW5Ccm93c2VyOiB0eXBlb2Ygd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwgPT09IFwiZnVuY3Rpb25cIixcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbGxvd0RvbVJlbmRlcmluZygpIHtcclxuICByZXR1cm4gb3B0aW9ucy5ydW5uaW5nSW5Ccm93c2VyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tbWVyY2lhbExpY2Vuc2VMaW5rKCkge1xyXG4gIGNvbnN0IGNvbnRhaW5lciA9IERvY3VtZW50SGVscGVyLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgXCJzYS1jb21tZXJjaWFsXCIpO1xyXG4gIGNvbnN0IGxpbmsgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiYVwiLCBcInNhLWNvbW1lcmNpYWxfX3RleHRcIiwge1xyXG4gICAgaHJlZjogXCJodHRwczovL3d3dy5zdXJ2ZXlqcy5pby9CdXlcIixcclxuICAgIHRhcmdldDogXCJfYmxhbmtcIixcclxuICB9KTtcclxuICBjb25zdCBjb250YWluZXJTcGFuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgXCJcIik7XHJcbiAgY29uc3QgaWNvbiA9IERvY3VtZW50SGVscGVyLmNyZWF0ZVN2Z0VsZW1lbnQoXCJub25jb21tZXJjaWFsXCIpO1xyXG4gIGNvbnN0IHRleHRTcGFuID0gRG9jdW1lbnRIZWxwZXIuY3JlYXRlRWxlbWVudChcclxuICAgIFwic3BhblwiLFxyXG4gICAgXCJzYS1jb21tZXJjaWFsX19wcm9kdWN0XCIsXHJcbiAgICB7XHJcbiAgICAgIGlubmVyVGV4dDogXCJQbGVhc2UgcHVyY2hhc2UgYSBTdXJ2ZXlKUyBBbmFseXRpY3MgZGV2ZWxvcGVyIGxpY2Vuc2UgdG8gdXNlIGl0IGluIHlvdXIgYXBwLlwiLFxyXG4gICAgfVxyXG4gICk7XHJcbiAgY29udGFpbmVyLmFwcGVuZENoaWxkKGxpbmspLmFwcGVuZENoaWxkKGNvbnRhaW5lclNwYW4pO1xyXG4gIGNvbnRhaW5lclNwYW4uYXBwZW5kQ2hpbGQoaWNvbik7XHJcbiAgY29udGFpbmVyU3Bhbi5hcHBlbmRDaGlsZCh0ZXh0U3Bhbik7XHJcbiAgcmV0dXJuIGNvbnRhaW5lcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFIZWxwZXIge1xyXG4gIHB1YmxpYyBzdGF0aWMgemlwQXJyYXlzKC4uLmFycmF5czogYW55W10pOiBhbnlbXVtdIHtcclxuICAgIGxldCB6aXBBcnJheTogYW55W10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXlzWzBdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHppcEFycmF5W2ldID0gW107XHJcbiAgICAgIGFycmF5cy5mb3JFYWNoKChhcnIpID0+IHtcclxuICAgICAgICB6aXBBcnJheVtpXS5wdXNoKGFycltpXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHppcEFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB1bnppcEFycmF5cyh6aXBBcnJheTogYW55W11bXSk6IGFueVtdW10ge1xyXG4gICAgbGV0IGFycmF5czogYW55W11bXSA9IFtdO1xyXG4gICAgemlwQXJyYXkuZm9yRWFjaCgodmFsdWUsIGkpID0+IHtcclxuICAgICAgdmFsdWUuZm9yRWFjaCgodmFsLCBqKSA9PiB7XHJcbiAgICAgICAgaWYgKCFhcnJheXNbal0pIGFycmF5c1tqXSA9IFtdO1xyXG4gICAgICAgIGFycmF5c1tqXVtpXSA9IHZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhcnJheXM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgc29ydERpY3Rpb25hcnkoXHJcbiAgICBrZXlzOiBhbnlbXSxcclxuICAgIHZhbHVlczogYW55W10sXHJcbiAgICBkZXNjOiBib29sZWFuXHJcbiAgKTogeyBrZXlzOiBhbnlbXSwgdmFsdWVzOiBhbnlbXSB9IHtcclxuICAgIGxldCBkaWN0aW9uYXJ5ID0gdGhpcy56aXBBcnJheXMoa2V5cywgdmFsdWVzKTtcclxuICAgIGxldCBjb21wYXJhdG9yID0gKGE6IGFueVtdLCBiOiBhbnlbXSwgYXNjOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gYVsxXSA8IGJbMV0gPyAxIDogYVsxXSA9PSBiWzFdID8gMCA6IC0xO1xyXG4gICAgICByZXR1cm4gYXNjID8gcmVzdWx0IDogcmVzdWx0ICogLTE7XHJcbiAgICB9O1xyXG4gICAgZGljdGlvbmFyeS5zb3J0KChhOiBhbnlbXSwgYjogYW55W10pID0+IHtcclxuICAgICAgcmV0dXJuIGRlc2MgPyBjb21wYXJhdG9yKGEsIGIsIGZhbHNlKSA6IGNvbXBhcmF0b3IoYSwgYik7XHJcbiAgICB9KTtcclxuICAgIGxldCBrZXlzQW5kVmFsdWVzID0gdGhpcy51bnppcEFycmF5cyhkaWN0aW9uYXJ5KTtcclxuICAgIHJldHVybiB7IGtleXM6IGtleXNBbmRWYWx1ZXNbMF0sIHZhbHVlczoga2V5c0FuZFZhbHVlc1sxXSB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB0b1BlcmNlbnRhZ2UodmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuICh2YWx1ZSAvIG1heFZhbHVlKSAqIDEwMDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaW5rc0NvbnRhaW5lcihcclxuICBsaW5rczogQXJyYXk8eyBuYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IGFueSB9PlxyXG4pOiBIVE1MRWxlbWVudCB7XHJcbiAgY29uc3QgbGlua3NDb250YWluZXIgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcclxuICAgIGxpbmtzQ29udGFpbmVyLmFwcGVuZENoaWxkKFxyXG4gICAgICBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiYVwiLCBcIlwiLCB7XHJcbiAgICAgICAgaW5uZXJUZXh0OiBsaW5rLm5hbWUsXHJcbiAgICAgICAgZG93bmxvYWQ6IGxpbmsubmFtZSxcclxuICAgICAgICBocmVmOiBsaW5rLmNvbnRlbnQsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH0pO1xyXG4gIHJldHVybiBsaW5rc0NvbnRhaW5lcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUltYWdlc0NvbnRhaW5lcihcclxuICBsaW5rczogQXJyYXk8eyBuYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IGFueSB9PlxyXG4pOiBIVE1MRWxlbWVudCB7XHJcbiAgY29uc3QgbGlua3NDb250YWluZXIgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcclxuICAgIGxpbmtzQ29udGFpbmVyLmFwcGVuZENoaWxkKFxyXG4gICAgICBEb2N1bWVudEhlbHBlci5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIFwiXCIsIHtcclxuICAgICAgICBhbHQ6IGxpbmsubmFtZSxcclxuICAgICAgICBzcmM6IGxpbmsuY29udGVudCxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGxpbmtzQ29udGFpbmVyO1xyXG59XHJcbiIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9zdXJ2ZXlfY29yZV9fOyJdLCJzb3VyY2VSb290IjoiIn0=
|