tango-app-ui-analyse-trax 3.6.2-bulktask-9 → 3.6.2-bulktask-12

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.
@@ -81,7 +81,7 @@ export class BulkcreationmodelComponent {
81
81
  });
82
82
  }
83
83
  closeactivepopup() {
84
- this.activeModal.close();
84
+ this.activeModal.close('submit');
85
85
  this.modalService.dismissAll();
86
86
  }
87
87
  validateDetails() {
@@ -135,11 +135,11 @@ export class BulkcreationmodelComponent {
135
135
  }
136
136
  getStoreCounts(data) {
137
137
  if (this.payload.coverage === 'store') {
138
- const uniqueStoreNames = new Set(data.map((item) => item.storeName));
138
+ const uniqueStoreNames = new Set(data.map((item) => item["Store Name"]));
139
139
  return uniqueStoreNames.size;
140
140
  }
141
- else if (this.payload.coverage === 'users') {
142
- const uniqueUserNames = new Set(data.map((item) => item.userName));
141
+ else if (this.payload.coverage === 'user') {
142
+ const uniqueUserNames = new Set(data.map((item) => item['User Email']));
143
143
  return uniqueUserNames.size;
144
144
  }
145
145
  }
@@ -213,16 +213,17 @@ export class BulkcreationmodelComponent {
213
213
  }
214
214
  console.log(this.payload.coverage);
215
215
  if (this.payload.coverage === 'store') {
216
- console.log(element.storeName);
217
- if ((element.storeName && element.storeName.trim() == '') || element.storeName == null) {
216
+ console.log(element);
217
+ console.log(element['Store Name']);
218
+ if ((element['Store Name'] && element['Store Name'].trim() == '') || element['Store Name'] == null) {
218
219
  error.push(`Invalid StoreName - C${index + 2}`);
219
220
  }
220
221
  }
221
222
  else if (this.payload.coverage === 'users') {
222
- if ((element.userEmail && element.userEmail.trim() == '') || element.userEmail == null) {
223
+ if ((element['User Email'] && element['User Email'].trim() == '') || element['User Email'] == null) {
223
224
  error.push(`Invalid userEmail - C${index + 2}`);
224
225
  }
225
- if (element?.userEmail && !element.userEmail.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/)) {
226
+ if (element['User Email'] && !element['User Email'].match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/)) {
226
227
  error.push(`Invalid userEmail - C${index + 2}`);
227
228
  }
228
229
  }
@@ -293,4 +294,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
293
294
  type: ViewChild,
294
295
  args: ['afterValidation']
295
296
  }] } });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsa2NyZWF0aW9ubW9kZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9hZGQtbXVsdGl0YXNrL2J1bGtjcmVhdGlvbm1vZGVsL2J1bGtjcmVhdGlvbm1vZGVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWRkLW11bHRpdGFzay9idWxrY3JlYXRpb25tb2RlbC9idWxrY3JlYXRpb25tb2RlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBRW5HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR25FLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBbUIsT0FBTyxFQUFzQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU0vRixNQUFNLE9BQU8sMEJBQTBCO0lBaUJqQjtJQUFnQztJQUFxQztJQUFrQztJQUFvQztJQWhCL0osY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUNmLE9BQU8sQ0FBSztJQUNaLFdBQVcsQ0FBSztJQUNoQixhQUFhLENBQUs7SUFDbEIsSUFBSSxDQUFLO0lBQ1Qsa0JBQWtCLENBQUs7SUFDdkIsVUFBVSxDQUFLO0lBQ3hCLFVBQVUsQ0FBYztJQUN4QixTQUFTLEdBQVEsRUFBRSxDQUFBO0lBQ00sVUFBVSxDQUFNO0lBQ3RCLFNBQVMsQ0FBYztJQUN0QixVQUFVLENBQWM7SUFDZCxlQUFlLENBQU07SUFDbkQsUUFBUSxDQUFNO0lBQ2QsVUFBVSxDQUFNO0lBQ2hCLFFBQVEsR0FBRyxJ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YSxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO3dHQTdRVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixvbUJDYnZDLHM0Y0FxTWM7OzRGRHhMRCwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsdUJBQXVCOytMQU14QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFHbUIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNKLFNBQVM7c0JBQTNCLFNBQVM7dUJBQUMsTUFBTTtnQkFDRyxVQUFVO3NCQUE3QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1ksZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwsIE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBZGRNdWx0aXRhc2tDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtbXVsdGl0YXNrLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYXhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJheC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlciwgfSBmcm9tICcuLi8uLi90YXNrLWNvbmZpZ3VyZS90YXNrLWNvbmZpZ3VyZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJ1bGtjcmVhdGlvbm1vZGVsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnVsa2NyZWF0aW9ubW9kZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9idWxrY3JlYXRpb25tb2RlbC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1bGtjcmVhdGlvbm1vZGVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzZWxlY3RlZE9wdGlvbiA9ICdzYW1lJztcclxuICBASW5wdXQoKSBwYXlsb2FkOiBhbnlcclxuICBASW5wdXQoKSB0YXNrRGV0YWlsczogYW55XHJcbiAgQElucHV0KCkgY2hlY2tsaXN0SW5mbzogYW55XHJcbiAgQElucHV0KCkgdHlwZTogYW55XHJcbiAgQElucHV0KCkgc291cmNlQ2hlY2tMaXN0X2lkOiBhbnlcclxuICBASW5wdXQoKSBmaWx0ZXJ0eXBlOiBhbnlcclxuICBoZWFkZXJEYXRhOiBIZWFkZXJGaWx0ZXJcclxuICBleGNlbERhdGE6IGFueSA9IFtdXHJcbiAgQFZpZXdDaGlsZCgnYnVsa3VwbG9hZCcpIGJ1bGt1cGxvYWQ6IGFueTtcclxuICBAVmlld0NoaWxkKCdmaWxlJykgZmlsZUlucHV0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdmaWxlMScpIGZpbGVJbnB1dDEhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FmdGVyVmFsaWRhdGlvbicpIGFmdGVyVmFsaWRhdGlvbjogYW55O1xyXG4gIG1vZGFsUmVmOiBhbnk7XHJcbiAgZXhjZWxFcnJvcjogYW55O1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLCBwcml2YXRlIHRyYXhTZXJ2aWNlOiBUcmF4U2VydmljZSwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMuaGVhZGVyRGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgYXMgc3RyaW5nKVxyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgT3B0aW9uOicsIHRoaXMucGF5bG9hZCk7XHJcblxyXG4gIH1cclxuICBzZXRPcHRpb24ob3B0aW9uOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XHJcbiAgfVxyXG5cclxuICBwcm9jZWVkKCkge1xyXG5cclxuXHJcblxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uID09PSAnc2FtZScpIHtcclxuICAgICAgdGhpcy50YXNrY3JlYXRpb25Qb3B1cCh0cnVlKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuYnVsa3VwbG9hZCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLCBiYWNrZHJvcDogJ3N0YXRpYydcclxuICAgICAgfSlcclxuXHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2ZW50RW50ZXIoZXZlbnQ6IGFueSkge1xyXG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbn1cclxuXHJcblxyXG4gIHRhc2tjcmVhdGlvblBvcHVwKHNob3djb21tZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuXHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkTXVsdGl0YXNrQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiAnbGcnLFxyXG4gICAgICBiYWNrZHJvcDogJ3N0YXRpYycsXHJcblxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdGhpcy50eXBlXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5maWx0ZXJ0eXBlID0gdGhpcy5maWx0ZXJ0eXBlXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50YXNrRGV0YWlscyA9IHRoaXMudGFza0RldGFpbHNcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNvdXJjZUNoZWNrTGlzdF9pZCA9IHRoaXMuc291cmNlQ2hlY2tMaXN0X2lkXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5wYXlsb2FkID0gdGhpcy5wYXlsb2FkXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zaG93Y29tbWVudCA9IHNob3djb21tZW50XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5leGNlbERhdGEgPSB0aGlzLmV4Y2VsRGF0YVxyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpXHJcbiAgICAgIGlmIChyZXN1bHQgPT09ICdzdWJtaXQnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCIxMTExXCIpXHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGNsb3NlYWN0aXZlcG9wdXAoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgfVxyXG4gIHZhbGlkYXRlRGV0YWlscygpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50KVxyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgYXNzaWduZWREYXRhOiB0aGlzLmV4Y2VsRGF0YSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBjb3ZlcmFnZTogdGhpcy5wYXlsb2FkLmNvdmVyYWdlXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLnRhc2t2YWxpZGF0ZVVzZXJEYXRhKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICAgIHRoaXMudGFza2NyZWF0aW9uUG9wdXAoZmFsc2UpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVycj8uZXJyb3I/LmVycm9yICYmIGVycj8uZXJyb3I/LmNvZGUgPT0gNDAwKSB7XHJcbiAgICAgICAgICBsZXQgZXJyb3JEYXRhID0gZXJyPy5lcnJvcj8uZXJyb3I7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvckRhdGEpXHJcbiAgICAgICAgICBpZiAoZXJyb3JEYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKClcclxuICAgICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgICBjb250ZW50OiBgUGxlYXNlIHByb3ZpZGUgY29ycmVjdCBhbmQgY29tcGxldGUgc3RvcmUgaW5mb3JtYXRpb24uYCxcclxuICAgICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgIGVycm9yOiBlcnJvckRhdGFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZChwb3B1cGNvbnRlbnQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuXHJcblxyXG5cclxuICB9XHJcbiAgUmV1cGxvYWQoKSB7XHJcbiAgICAvLyB0aGlzLmRpYWxvZy5kaXNtaXNzQWxsKCk7XHJcbiAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgbGV0IGVsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrdF9hY2NvdW50X3RlYW1fc2l6ZV9zZWxlY3RfMicpO1xyXG4gICAgZWxlPy5jbGljaygpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGdldFN0b3JlQ291bnRzKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMucGF5bG9hZC5jb3ZlcmFnZSA9PT0gJ3N0b3JlJykge1xyXG4gICAgICBjb25zdCB1bmlxdWVTdG9yZU5hbWVzID0gbmV3IFNldChkYXRhLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnN0b3JlTmFtZSkpO1xyXG4gICAgICByZXR1cm4gdW5pcXVlU3RvcmVOYW1lcy5zaXplO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBheWxvYWQuY292ZXJhZ2UgPT09ICd1c2VycycpIHtcclxuICAgICAgY29uc3QgdW5pcXVlVXNlck5hbWVzID0gbmV3IFNldChkYXRhLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnVzZXJOYW1lKSk7XHJcbiAgICAgIHJldHVybiB1bmlxdWVVc2VyTmFtZXMuc2l6ZTtcclxuICAgIH1cclxuICB9XHJcbiAgZG93bmxvYWRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMucGF5bG9hZClcclxuICAgIGxldCBleGNlbERhdGE6IGFueSA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnBheWxvYWQuc2VsZWN0ZWRTdG9yZXMgJiYgdGhpcy5wYXlsb2FkLnNlbGVjdGVkU3RvcmVzLmxlbmd0aCA+IDAgJiYgdGhpcy5wYXlsb2FkLmNvdmVyYWdlID09PSAnc3RvcmUnKSB7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5zZWxlY3RlZFN0b3Jlcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBleGNlbERhdGEucHVzaCh7XHJcbiAgICAgICAgICBjaGVja2xpc3ROYW1lOiB0aGlzLnBheWxvYWQuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgICAgIHF1ZXN0aW9uTmFtZTogdGhpcy5wYXlsb2FkLmlucHV0RGF0YS5xbmFtZSxcclxuICAgICAgICAgIHN0b3JlTmFtZTogaXRlbS5zdG9yZU5hbWUsXHJcbiAgICAgICAgICBjb21tZW50czogJycsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBheWxvYWQuc2VsZWN0ZWRVc2VycyAmJiB0aGlzLnBheWxvYWQuc2VsZWN0ZWRVc2Vycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5zZWxlY3RlZFVzZXJzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGV4Y2VsRGF0YS5wdXNoKHtcclxuICAgICAgICAgIGNoZWNrbGlzdE5hbWU6IHRoaXMucGF5bG9hZC5jaGVja2xpc3ROYW1lLFxyXG4gICAgICAgICAgcXVlc3Rpb25OYW1lOiB0aGlzLnBheWxvYWQuaW5wdXREYXRhLnFuYW1lLFxyXG4gICAgICAgICAgdXNlckVtYWlsOiBpdGVtLnVzZXJFbWFpbCxcclxuICAgICAgICAgIGNvbW1lbnRzOiAnJyxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBheWxvYWQuZXhjZWxEYXRhID0gZXhjZWxEYXRhXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmRvd25sb2FkdGVtcGxhdGUodGhpcy5wYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMudHJheFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgYEJ1bGsgJHt0aGlzLnR5cGV9YCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnU29tZXRoaW5nIHdlbnQgV3JvbmcuLicpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBFeHBvcnQgdGhlIGZpbGVcclxuXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFmdGVyVXBsbG9hZChkYXRhPzogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgIHRoaXMuZXhjZWxFcnJvciA9IGRhdGE7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuYWZ0ZXJWYWxpZGF0aW9uLCB7IGNlbnRlcmVkOiB0cnVlLCBiYWNrZHJvcDogJ3N0YXRpYycgfSlcclxuICB9XHJcbiAgb25GaWxlVXBsb2FkKGV2ZW50OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSA8RGF0YVRyYW5zZmVyPihldmVudC50YXJnZXQpO1xyXG4gICAgbGV0IGRhdGE6IGFueTtcclxuICAgIGxldCBlcnJvcjogYW55ID0gW107XHJcbiAgICBsZXQgVmFsaWRhdGlvbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgaXNFeGNlbEZpbGUgPSAhIXRhcmdldC5maWxlc1swXS5uYW1lLm1hdGNoKC8oLnhsc3wueGxzeCkvKTtcclxuICAgIGlmIChpc0V4Y2VsRmlsZSkge1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnN0cjogc3RyaW5nID0gZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG4gICAgICAgIGRhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od3MpO1xyXG4gICAgICAgIHRoaXMuZXhjZWxEYXRhID0gZGF0YTtcclxuICAgICAgICBpZiAoIWRhdGEubGVuZ3RoIHx8IChkYXRhLnNvbWUoKGl0ZW06IGFueSkgPT4gJ2NsdXN0ZXJOYW1lJyBpbiBpdGVtIHx8ICd0ZWFtTmFtZScgaW4gaXRlbSkpKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdQbGVhc2UgVXBsb2FkIGEgVmFsaWQgZmlsZS4nKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBkYXRhID0gZGF0YS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIC8vICAgcmV0dXJuICgoaXRlbT8uc3RvcmVOYW1lICYmIGl0ZW0/LnN0b3JlTmFtZS50cmltKCkgIT0gJycgJiYgaXRlbT8uc3RvcmVOYW1lLnRyaW0oKSAhPSBudWxsKSB8fCAoaXRlbT8udXNlck5hbWUgJiYgaXRlbT8udXNlck5hbWUudHJpbSgpICE9ICcnICYmIGl0ZW0/LnVzZXJOYW1lLnRyaW0oKSAhPSBudWxsKSB8fCAoaXRlbT8udXNlckVtYWlsICYmIGl0ZW0/LnVzZXJFbWFpbC50cmltKCkgIT0gJycgJiYgaXRlbT8udXNlckVtYWlsLnRyaW0oKSAhPSBudWxsKSlcclxuICAgICAgICAvLyB9KVxyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudD8udXNlckVtYWlsKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudXNlckVtYWlsID0gZWxlbWVudD8udXNlckVtYWlsLnJlcGxhY2UoL1xccy9nLCAnJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnBheWxvYWQuY292ZXJhZ2UpXHJcbiAgICAgICAgICBpZiAodGhpcy5wYXlsb2FkLmNvdmVyYWdlID09PSAnc3RvcmUnKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVsZW1lbnQuc3RvcmVOYW1lKVxyXG4gICAgICAgICAgICBpZiAoKGVsZW1lbnQuc3RvcmVOYW1lICYmIGVsZW1lbnQuc3RvcmVOYW1lLnRyaW0oKSA9PSAnJykgfHwgZWxlbWVudC5zdG9yZU5hbWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGVycm9yLnB1c2goYEludmFsaWQgU3RvcmVOYW1lIC0gQyR7aW5kZXggKyAyfWApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYXlsb2FkLmNvdmVyYWdlID09PSAndXNlcnMnKSB7XHJcbiAgICAgICAgICAgIGlmICgoZWxlbWVudC51c2VyRW1haWwgJiYgZWxlbWVudC51c2VyRW1haWwudHJpbSgpID09ICcnKSB8fCBlbGVtZW50LnVzZXJFbWFpbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCB1c2VyRW1haWwgLSBDJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudD8udXNlckVtYWlsICYmICFlbGVtZW50LnVzZXJFbWFpbC5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLykpIHtcclxuICAgICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIHVzZXJFbWFpbCAtIEMke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBpZiAoKGVsZW1lbnQuY29tbWVudHMgJiYgZWxlbWVudC5jb21tZW50cy50cmltKCkgPT0gJycpIHx8IGVsZW1lbnQuY29tbWVudHMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gICBlcnJvci5wdXNoKGBJbnZhbGlkIGNvbW1lbnQgLSBEJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmxlbmd0aClcclxuICAgICAgICBpZiAoZXJyb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKClcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAhVmFsaWRhdGlvbkVycm9yID8gdGhpcy5hZnRlclVwbGxvYWQoKSA6ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ1BsZWFzZSBVcGxvYWQgYSBFeGNlbCBmaWxlLicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZCBncm91cC1kZWxldGUgcHktMFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBkLWZsZXggZmxleC1zdGFydCBmbGV4LWNvbHVtbiBwLTkgXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXktNSBtYi01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZSBkLWZsZXggXCI+XHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cInR5cGU9PT0ndGFzaydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMzAgMThIMjJDMjEuNDY5NiAxOCAyMC45NjA5IDE4LjIxMDcgMjAuNTg1OCAxOC41ODU4QzIwLjIxMDcgMTguOTYwOSAyMCAxOS40Njk2IDIwIDIwVjM2QzIwIDM2LjUzMDQgMjAuMjEwNyAzNy4wMzkxIDIwLjU4NTggMzcuNDE0MkMyMC45NjA5IDM3Ljc4OTMgMjEuNDY5NiAzOCAyMiAzOEgzNEMzNC41MzA0IDM4IDM1LjAzOTEgMzcuNzg5MyAzNS40MTQyIDM3LjQxNDJDMzUuNzg5MyAzNy4wMzkxIDM2IDM2LjUzMDQgMzYgMzZWMjRNMzAgMThMMzYgMjRNMzAgMThWMjRIMzZNMjggMzRWMjhNMjUgMzFIMzFcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cInR5cGU9PT0ncmVkbydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMzkgMTkuOTk5NlYyNS45OTk2TTM5IDI1Ljk5OTZIMzNNMzkgMjUuOTk5NkwzNC4zNiAyMS42Mzk2QzMzLjI4NTMgMjAuNTY0MyAzMS45NTU2IDE5Ljc3ODggMzAuNDk1MiAxOS4zNTY0QzI5LjAzNDggMTguOTMzOSAyNy40OTExIDE4Ljg4ODMgMjYuMDA4MyAxOS4yMjM4QzI0LjUyNTUgMTkuNTU5NCAyMy4xNTE4IDIwLjI2NSAyMi4wMTU1IDIxLjI3NUMyMC44NzkxIDIyLjI4NSAyMC4wMTcyIDIzLjU2NjQgMTkuNTEgMjQuOTk5Nk0xNyAzNS45OTk2VjI5Ljk5OTZNMTcgMjkuOTk5NkgyM00xNyAyOS45OTk2TDIxLjY0IDM0LjM1OTZDMjIuNzE0NyAzNS40MzQ5IDI0LjA0NDQgMzYuMjIwNCAyNS41MDQ4IDM2LjY0MjhDMjYuOTY1MiAzNy4wNjUyIDI4LjUwODkgMzcuMTEwOCAyOS45OTE3IDM2Ljc3NTNDMzEuNDc0NSAzNi40Mzk4IDMyLjg0ODIgMzUuNzM0MiAzMy45ODQ1IDM0LjcyNDJDMzUuMTIwOSAzMy43MTQyIDM1Ljk4MjggMzIuNDMyOCAzNi40OSAzMC45OTk2XCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBteC0zIG10LTNcIj4ge3t0eXBlfX08L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMyBwLTMgYm9yZGVyIHJvdW5kZWQgb3B0aW9uLWJveFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZS1vcHRpb24nOiBzZWxlY3RlZE9wdGlvbiA9PT0gJ3NhbWUnIH1cIiAoY2xpY2spPVwic2V0T3B0aW9uKCdzYW1lJylcIj5cclxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBteS01IG14LTNcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwidGFza09wdGlvblwiIGlkPVwic2FtZUNvbW1lbnRcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkT3B0aW9uID09PSAnc2FtZSdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm14LTNcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmdy1zZW1pYm9sZFwiIGZvcj1cInNhbWVDb21tZW50XCI+XHJcbiAgICAgICAgICBDcmVhdGUge3t0eXBlfX0gd2l0aCBzYW1lIGNvbW1lbnRcclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwic2VsZWN0ZWRPcHRpb24gPT09ICdzYW1lJyA/ICdhY3RpdmUtb3B0aW9uJyA6ICd0ZXh0LW5vcm1hbCdcIiBjbGFzcz1cInNtYWxsIG10LTEgbXMtMTBcIj5cclxuICAgICAgICAgIEFwcGx5IGEgc2luZ2xlIGNvbW1lbnQgdG8gYWxsIHNlbGVjdGVkIHN0b3Jlcy4gVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4gdGhlIHt7dHlwZX19IGRldGFpbHMgYXJlIGlkZW50aWNhbFxyXG4gICAgICAgICAgZm9yXHJcbiAgICAgICAgICBldmVyeSBzdG9yZS5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBwLTMgYm9yZGVyIHJvdW5kZWQgb3B0aW9uLWJveFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZS1vcHRpb24nOiBzZWxlY3RlZE9wdGlvbiA9PT0gJ2RpZmZlcmVudCcgfVwiIChjbGljayk9XCJzZXRPcHRpb24oJ2RpZmZlcmVudCcpXCI+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgIG15LTUgbXgtM1wiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJ0YXNrT3B0aW9uXCIgaWQ9XCJkaWZmZXJlbnRDb21tZW50c1wiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRPcHRpb24gPT09ICdkaWZmZXJlbnQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJteC0zXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZnctc2VtaWJvbGRcIiBmb3I9XCJkaWZmZXJlbnRDb21tZW50c1wiPlxyXG4gICAgICAgICAgQ3JlYXRlIHt7dHlwZX19IHdpdGggZGlmZmVyZW50IGNvbW1lbnRzIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPih2aWEgRXhjZWwgdXBsb2FkKTwvc3Bhbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwic2VsZWN0ZWRPcHRpb24gPT09ICdkaWZmZXJlbnQnID8gJ2FjdGl2ZS1vcHRpb24nIDogJ3RleHQtbm9ybWFsJ1wiIGNsYXNzPVwiIHNtYWxsIG10LTEgbXMtMTBcIj5cclxuICAgICAgICAgIFVzZSBhbiBFeGNlbCB0ZW1wbGF0ZSB0byBhc3NpZ24gZGlmZmVyZW50IGNvbW1lbnRzIHRvIGVhY2ggc2VsZWN0ZWQgc3RvcmUuIFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlXHJcbiAgICAgICAgICB7e3R5cGV9fSBmb3IgZWFjaCBsb2NhdGlvbi5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBtdC0zIG1iLTJcIiAqbmdJZj1cInR5cGU9PT0ncmVkbycmJnRoaXMucGF5bG9hZD8uc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoPT09MCYmdGhpcy5wYXlsb2FkPy5zZWxlY3RlZFN0b3Jlcz8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRkVGMEM3XCIgLz5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xOC4wMDA1IDE1LjMzNDFWMTguMDAwOE0xOC4wMDA1IDIwLjY2NzVIMTguMDA3Mk0xNi44NjA1IDExLjkwNzVMMTEuMjEzOCAyMS4zMzQxQzExLjA5NzQgMjEuNTM1NyAxMS4wMzU4IDIxLjc2NDMgMTEuMDM1MiAyMS45OTcxQzExLjAzNDUgMjIuMjI5OSAxMS4wOTQ4IDIyLjQ1ODkgMTEuMjEwMSAyMi42NjExQzExLjMyNTQgMjIuODYzNCAxMS40OTE3IDIzLjAzMiAxMS42OTIzIDIzLjE1QzExLjg5MyAyMy4yNjgxIDEyLjEyMSAyMy4zMzE2IDEyLjM1MzggMjMuMzM0MUgyMy42NDcyQzIzLjg4IDIzLjMzMTYgMjQuMTA4IDIzLjI2ODEgMjQuMzA4NyAyMy4xNUMyNC41MDk0IDIzLjAzMiAyNC42NzU2IDIyLjg2MzQgMjQuNzkwOSAyMi42NjExQzI0LjkwNjIgMjIuNDU4OSAyNC45NjY1IDIyLjIyOTkgMjQuOTY1OCAyMS45OTcxQzI0Ljk2NTIgMjEuNzY0MyAyNC45MDM2IDIxLjUzNTcgMjQuNzg3MiAyMS4zMzQxTDE5LjE0MDUgMTEuOTA3NUMxOS4wMjE3IDExLjcxMTUgMTguODU0MyAxMS41NDk1IDE4LjY1NDYgMTEuNDM3MUMxOC40NTQ5IDExLjMyNDcgMTguMjI5NyAxMS4yNjU2IDE4LjAwMDUgMTEuMjY1NkMxNy43NzEzIDExLjI2NTYgMTcuNTQ2MSAxMS4zMjQ3IDE3LjM0NjQgMTEuNDM3MUMxNy4xNDY3IDExLjU0OTUgMTYuOTc5MyAxMS43MTE1IDE2Ljg2MDUgMTEuOTA3NVpcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgIDwvc3ZnPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcy0yXCI+UmVkbyB3aWxsIGFwcGx5IG9ubHkgdG8gdGhlIGNoZWNrbGlzdCByZXNwb25zZSBzdWJtaXR0ZWQgb24gdG9kYXkuIEFueSByZXNwb25zZXMgc3VibWl0dGVkIG9uXHJcbiAgICAgICAgICBwcmV2aW91cyBkYXRlcyB3aWxsIGJlIHVuc2VsZWN0ZWQgYW5kIGV4Y2x1ZGVkIGZyb20gcmVkby48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBtdC0zIG1iLTJcIiAqbmdJZj1cInR5cGU9PT0ndGFzaycmJnRoaXMucGF5bG9hZD8uc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoPT09MCYmdGhpcy5wYXlsb2FkPy5zZWxlY3RlZFN0b3Jlcz8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRkVGMEM3XCIgLz5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xOC4wMDA1IDE1LjMzNDFWMTguMDAwOE0xOC4wMDA1IDIwLjY2NzVIMTguMDA3Mk0xNi44NjA1IDExLjkwNzVMMTEuMjEzOCAyMS4zMzQxQzExLjA5NzQgMjEuNTM1NyAxMS4wMzU4IDIxLjc2NDMgMTEuMDM1MiAyMS45OTcxQzExLjAzNDUgMjIuMjI5OSAxMS4wOTQ4IDIyLjQ1ODkgMTEuMjEwMSAyMi42NjExQzExLjMyNTQgMjIuODYzNCAxMS40OTE3IDIzLjAzMiAxMS42OTIzIDIzLjE1QzExLjg5MyAyMy4yNjgxIDEyLjEyMSAyMy4zMzE2IDEyLjM1MzggMjMuMzM0MUgyMy42NDcyQzIzLjg4IDIzLjMzMTYgMjQuMTA4IDIzLjI2ODEgMjQuMzA4NyAyMy4xNUMyNC41MDk0IDIzLjAzMiAyNC42NzU2IDIyLjg2MzQgMjQuNzkwOSAyMi42NjExQzI0LjkwNjIgMjIuNDU4OSAyNC45NjY1IDIyLjIyOTkgMjQuOTY1OCAyMS45OTcxQzI0Ljk2NTIgMjEuNzY0MyAyNC45MDM2IDIxLjUzNTcgMjQuNzg3MiAyMS4zMzQxTDE5LjE0MDUgMTEuOTA3NUMxOS4wMjE3IDExLjcxMTUgMTguODU0MyAxMS41NDk1IDE4LjY1NDYgMTEuNDM3MUMxOC40NTQ5IDExLjMyNDcgMTguMjI5NyAxMS4yNjU2IDE4LjAwMDUgMTEuMjY1NkMxNy43NzEzIDExLjI2NTYgMTcuNTQ2MSAxMS4zMjQ3IDE3LjM0NjQgMTEuNDM3MUMxNy4xNDY3IDExLjU0OTUgMTYuOTc5MyAxMS43MTE1IDE2Ljg2MDUgMTEuOTA3NVpcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgIDwvc3ZnPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcy0yXCI+U3RvcmVzIHRoYXQgYXJlIGFscmVhZHkgY3JlYXRlZCB0YXNrIGZvciB0aGVpciBjaGVja2xpc3QgcmVzcG9uc2VzIGFyZSBleGNsdWRlZCBmb3IgdGFzayBjcmVhdGlvbiBub3cuPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBjb2wtbWQtMTIgdGV4dC1lbmQgYm9yZGVyLXRvcC0wXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlYWN0aXZlcG9wdXAoKVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJ0aGlzLnBheWxvYWQ/LnNlbGVjdGVkVXNlcnM/Lmxlbmd0aD09PTAmJnRoaXMucGF5bG9hZD8uc2VsZWN0ZWRTdG9yZXM/Lmxlbmd0aD09MFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInByb2NlZWQoKVwiPlByb2NlZWQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnVsa3VwbG9hZCBsZXQtbW9kZWw+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIiAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIG10LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1saWdodC1wcmltYXJ5IHJvdW5kZWQtNSB3LTQwcHggaC00MHB4IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTMwIDE4SDIyQzIxLjQ2OTYgMTggMjAuOTYwOSAxOC4yMTA3IDIwLjU4NTggMTguNTg1OEMyMC4yMTA3IDE4Ljk2MDkgMjAgMTkuNDY5NiAyMCAyMFYzNkMyMCAzNi41MzA0IDIwLjIxMDcgMzcuMDM5MSAyMC41ODU4IDM3LjQxNDJDMjAuOTYwOSAzNy43ODkzIDIxLjQ2OTYgMzggMjIgMzhIMzRDMzQuNTMwNCAzOCAzNS4wMzkxIDM3Ljc4OTMgMzUuNDE0MiAzNy40MTQyQzM1Ljc4OTMgMzcuMDM5MSAzNiAzNi41MzA0IDM2IDM2VjI0TTMwIDE4TDM2IDI0TTMwIDE4VjI0SDM2TTI4IDM0VjI4TTI1IDMxSDMxXCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj4gPHNwYW4gY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1zZW1pYm9sZCBtcy01IHctYXV0byB0ZXh0LWNhcGl0YWxpemVcIj57e3R5cGV9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmVBc3NpZ24gbXQtM1wiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMFwiPjEuIFVzZSB0aGUgdGVtcGxhdGUgdG8gdXBsb2FkIGFuZCBjcmVhdGUgbXVsdGlwbGVcclxuICAgICAgICAgIHt7dHlwZX19cyBhdCBvbmNlLjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZUFzc2lnbiBtdC0zXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwXCI+Mi4gRG93bmxvYWQgdGhlIHRlbXBsYXRlIGhlcmUgLSA8YVxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+RG93bmxvYWQgUHJlZmlsbGVkXHJcbiAgICAgICAgICAgIFRlbXBsYXRlPC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZUFzc2lnbiBtdC0zXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwXCI+My4gQWRkIHlvdXIgZGF0YSB0byB0aGUgVGVtcGxhdGUgRmlsZTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZUFzc2lnbiBtdC0zXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwXCI+NC4gVXBsb2FkIGl0IGJlbG93IGZvciBwcm9jZXNzaW5nPC9kaXY+XHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMCB0ZXh0LWVuZCBwdC0wXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cIm1vZGFsUmVmLmNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWQgcHktMyBidG4tZGVmYXVsdCBtcy0zIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImZpbGUxLmNsaWNrKClcIj5VcGxvYWQ8L2J1dHRvbj5cclxuICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlMSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlVXBsb2FkKCRldmVudCwndXBsb2FkJylcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FmdGVyVmFsaWRhdGlvbiBsZXQtbW9kZWw+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIiAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIG10LTBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm15LTUgbWItNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZSBkLWZsZXggXCI+XHJcbiAgICAgICAgICA8c3ZnICpuZ0lmPVwidHlwZT09PSd0YXNrJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjhcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMzAgMThIMjJDMjEuNDY5NiAxOCAyMC45NjA5IDE4LjIxMDcgMjAuNTg1OCAxOC41ODU4QzIwLjIxMDcgMTguOTYwOSAyMCAxOS40Njk2IDIwIDIwVjM2QzIwIDM2LjUzMDQgMjAuMjEwNyAzNy4wMzkxIDIwLjU4NTggMzcuNDE0MkMyMC45NjA5IDM3Ljc4OTMgMjEuNDY5NiAzOCAyMiAzOEgzNEMzNC41MzA0IDM4IDM1LjAzOTEgMzcuNzg5MyAzNS40MTQyIDM3LjQxNDJDMzUuNzg5MyAzNy4wMzkxIDM2IDM2LjUzMDQgMzYgMzZWMjRNMzAgMThMMzYgMjRNMzAgMThWMjRIMzZNMjggMzRWMjhNMjUgMzFIMzFcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPHN2ZyAqbmdJZj1cInR5cGU9PT0ncmVkbydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTM5IDE5Ljk5OTZWMjUuOTk5Nk0zOSAyNS45OTk2SDMzTTM5IDI1Ljk5OTZMMzQuMzYgMjEuNjM5NkMzMy4yODUzIDIwLjU2NDMgMzEuOTU1NiAxOS43Nzg4IDMwLjQ5NTIgMTkuMzU2NEMyOS4wMzQ4IDE4LjkzMzkgMjcuNDkxMSAxOC44ODgzIDI2LjAwODMgMTkuMjIzOEMyNC41MjU1IDE5LjU1OTQgMjMuMTUxOCAyMC4yNjUgMjIuMDE1NSAyMS4yNzVDMjAuODc5MSAyMi4yODUgMjAuMDE3MiAyMy41NjY0IDE5LjUxIDI0Ljk5OTZNMTcgMzUuOTk5NlYyOS45OTk2TTE3IDI5Ljk5OTZIMjNNMTcgMjkuOTk5NkwyMS42NCAzNC4zNTk2QzIyLjcxNDcgMzUuNDM0OSAyNC4wNDQ0IDM2LjIyMDQgMjUuNTA0OCAzNi42NDI4QzI2Ljk2NTIgMzcuMDY1MiAyOC41MDg5IDM3LjExMDggMjkuOTkxNyAzNi43NzUzQzMxLjQ3NDUgMzYuNDM5OCAzMi44NDgyIDM1LjczNDIgMzMuOTg0NSAzNC43MjQyQzM1LjEyMDkgMzMuNzE0MiAzNS45ODI4IDMyLjQzMjggMzYuNDkgMzAuOTk5NlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemUgbXgtMyBtdC0zXCI+IHt7dHlwZX19PC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtODBweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2dldFN0b3JlQ291bnRzKGV4Y2VsRGF0YSl9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlRvdGFsIDxzcGFuICpuZ0lmPVwidGhpcy5wYXlsb2FkLmNvdmVyYWdlPT09J3N0b3JlJ1wiPlN0b3Jlczwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRoaXMucGF5bG9hZC5jb3ZlcmFnZT09PSd1c2VycydcIj5Vc2Vyczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC04MHB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7ZXhjZWxEYXRhPy5sZW5ndGh9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlJvd3MgcHJvY2Vzc2VkPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC04MHB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdlcnJvci1oZWFkaW5nJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj5cclxuICAgICAgICAgICAgICB7e2V4Y2VsRXJyb3I/LmVycm9yPy5sZW5ndGggfHwgMH19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdleGNlbC1lcnJvcic6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5FcnJvcjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImV4Y2VsRXJyb3JcIiBjbGFzcz1cImZsZXgtY29sdW1uIG10LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWhlYWRpbmcgZnctYm9sZFwiPkludmFsaWQgRGV0YWlscyAhPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlIG10LTVcIj5QbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBsYXlvdXQgaW5mb3JtYXRpb24uPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB3LTEwMCByb3VuZGVkLTMgYm9yZGVyLWVycm9yIG10LTUgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yIG9mIGV4Y2VsRXJyb3I/LmVycm9yOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIiBbbmdDbGFzc109XCIhbGFzdCA/ICdtYi0yJyA6ICcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVycm9yXCI+e3tpICsgMX19KSB7e2Vycm9yfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTAgdGV4dC1lbmQgcHQtMFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZCBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZWFjdGl2ZXBvcHVwKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gYnRuLW1kIHB5LTQgYnRuLWRlZmF1bHQgbXMtMyBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlRGV0YWlscygpXCI+UHJvY2VlZDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiZXhjZWxFcnJvclwiIGNsYXNzPVwiYnRuIHB5LTMgYnRuLW1kIGJ0bi1kZWZhdWx0IG1zLTMgYnRuLWRhbmdlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlJldXBsb2FkKCk7XCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlMSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlVXBsb2FkKCRldmVudCwncmV1cGxvYWQnKVwiIC8+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsa2NyZWF0aW9ubW9kZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9hZGQtbXVsdGl0YXNrL2J1bGtjcmVhdGlvbm1vZGVsL2J1bGtjcmVhdGlvbm1vZGVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWRkLW11bHRpdGFzay9idWxrY3JlYXRpb25tb2RlbC9idWxrY3JlYXRpb25tb2RlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBRW5HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR25FLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRyxPQUFPLEVBQUksU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFNN0MsTUFBTSxPQUFPLDBCQUEwQjtJQWlCakI7SUFBZ0M7SUFBcUM7SUFBa0M7SUFBb0M7SUFoQi9KLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDZixPQUFPLENBQUs7SUFDWixXQUFXLENBQUs7SUFDaEIsYUFBYSxDQUFLO0lBQ2xCLElBQUksQ0FBSztJQUNULGtCQUFrQixDQUFLO0lBQ3ZCLFVBQVUsQ0FBSztJQUN4QixVQUFVLENBQWM7SUFDeEIsU0FBUyxHQUFRLEVBQUUsQ0FBQTtJQUNNLFVBQVUsQ0FBTTtJQUN0QixTQUFTLENBQWM7SUFDdEIsVUFBVSxDQUFjO0lBQ2QsZUFBZSxDQUFNO0lBQ25ELFFBQVEsQ0FBTTtJQUNkLFVBQVUsQ0FBTTtJQUNoQixRQUFRLEdBQUcsSUFB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QUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUN6QztZQUVELElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO3dHQTlRVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixvbUJDYnZDLHM0Y0FxTWM7OzRGRHhMRCwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsdUJBQXVCOytMQU14QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFHbUIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNKLFNBQVM7c0JBQTNCLFNBQVM7dUJBQUMsTUFBTTtnQkFDRyxVQUFVO3NCQUE3QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1ksZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwsIE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBZGRNdWx0aXRhc2tDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtbXVsdGl0YXNrLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYXhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJheC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlciwgfSBmcm9tICcuLi8uLi90YXNrLWNvbmZpZ3VyZS90YXNrLWNvbmZpZ3VyZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyAgU3ViamVjdCwgICB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1idWxrY3JlYXRpb25tb2RlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1bGtjcmVhdGlvbm1vZGVsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYnVsa2NyZWF0aW9ubW9kZWwuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdWxrY3JlYXRpb25tb2RlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2VsZWN0ZWRPcHRpb24gPSAnc2FtZSc7XHJcbiAgQElucHV0KCkgcGF5bG9hZDogYW55XHJcbiAgQElucHV0KCkgdGFza0RldGFpbHM6IGFueVxyXG4gIEBJbnB1dCgpIGNoZWNrbGlzdEluZm86IGFueVxyXG4gIEBJbnB1dCgpIHR5cGU6IGFueVxyXG4gIEBJbnB1dCgpIHNvdXJjZUNoZWNrTGlzdF9pZDogYW55XHJcbiAgQElucHV0KCkgZmlsdGVydHlwZTogYW55XHJcbiAgaGVhZGVyRGF0YTogSGVhZGVyRmlsdGVyXHJcbiAgZXhjZWxEYXRhOiBhbnkgPSBbXVxyXG4gIEBWaWV3Q2hpbGQoJ2J1bGt1cGxvYWQnKSBidWxrdXBsb2FkOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZScpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZTEnKSBmaWxlSW5wdXQxITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhZnRlclZhbGlkYXRpb24nKSBhZnRlclZhbGlkYXRpb246IGFueTtcclxuICBtb2RhbFJlZjogYW55O1xyXG4gIGV4Y2VsRXJyb3I6IGFueTtcclxuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCwgcHJpdmF0ZSB0cmF4U2VydmljZTogVHJheFNlcnZpY2UsIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLmhlYWRlckRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdoZWFkZXItZmlsdGVycycpIGFzIHN0cmluZylcclxuXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc29sZS5sb2coJ1NlbGVjdGVkIE9wdGlvbjonLCB0aGlzLnBheWxvYWQpO1xyXG5cclxuICB9XHJcbiAgc2V0T3B0aW9uKG9wdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJvY2VlZCgpIHtcclxuXHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbiA9PT0gJ3NhbWUnKSB7XHJcbiAgICAgIHRoaXMudGFza2NyZWF0aW9uUG9wdXAodHJ1ZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmJ1bGt1cGxvYWQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSwgYmFja2Ryb3A6ICdzdGF0aWMnXHJcbiAgICAgIH0pXHJcblxyXG5cclxuICAgIH1cclxuICB9XHJcbiAgcHJldmVudEVudGVyKGV2ZW50OiBhbnkpIHtcclxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG59XHJcblxyXG5cclxuICB0YXNrY3JlYXRpb25Qb3B1cChzaG93Y29tbWVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcblxyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZE11bHRpdGFza0NvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogJ2xnJyxcclxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxyXG5cclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHRoaXMudHlwZVxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZmlsdGVydHlwZSA9IHRoaXMuZmlsdGVydHlwZVxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGFza0RldGFpbHMgPSB0aGlzLnRhc2tEZXRhaWxzXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zb3VyY2VDaGVja0xpc3RfaWQgPSB0aGlzLnNvdXJjZUNoZWNrTGlzdF9pZFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucGF5bG9hZCA9IHRoaXMucGF5bG9hZFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2hvd2NvbW1lbnQgPSBzaG93Y29tbWVudFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZXhjZWxEYXRhID0gdGhpcy5leGNlbERhdGFcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICBpZiAocmVzdWx0ID09PSAnc3VibWl0Jykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiMTExMVwiKVxyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBjbG9zZWFjdGl2ZXBvcHVwKCkge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgfVxyXG4gIHZhbGlkYXRlRGV0YWlscygpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50KVxyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgYXNzaWduZWREYXRhOiB0aGlzLmV4Y2VsRGF0YSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBjb3ZlcmFnZTogdGhpcy5wYXlsb2FkLmNvdmVyYWdlXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLnRhc2t2YWxpZGF0ZVVzZXJEYXRhKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICAgIHRoaXMudGFza2NyZWF0aW9uUG9wdXAoZmFsc2UpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVycj8uZXJyb3I/LmVycm9yICYmIGVycj8uZXJyb3I/LmNvZGUgPT0gNDAwKSB7XHJcbiAgICAgICAgICBsZXQgZXJyb3JEYXRhID0gZXJyPy5lcnJvcj8uZXJyb3I7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvckRhdGEpXHJcbiAgICAgICAgICBpZiAoZXJyb3JEYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKClcclxuICAgICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgICBjb250ZW50OiBgUGxlYXNlIHByb3ZpZGUgY29ycmVjdCBhbmQgY29tcGxldGUgc3RvcmUgaW5mb3JtYXRpb24uYCxcclxuICAgICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgIGVycm9yOiBlcnJvckRhdGFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZChwb3B1cGNvbnRlbnQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuXHJcblxyXG5cclxuICB9XHJcbiAgUmV1cGxvYWQoKSB7XHJcbiAgICAvLyB0aGlzLmRpYWxvZy5kaXNtaXNzQWxsKCk7XHJcbiAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dDEubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgbGV0IGVsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrdF9hY2NvdW50X3RlYW1fc2l6ZV9zZWxlY3RfMicpO1xyXG4gICAgZWxlPy5jbGljaygpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGdldFN0b3JlQ291bnRzKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMucGF5bG9hZC5jb3ZlcmFnZSA9PT0gJ3N0b3JlJykge1xyXG4gICAgICBjb25zdCB1bmlxdWVTdG9yZU5hbWVzID0gbmV3IFNldChkYXRhLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW1wiU3RvcmUgTmFtZVwiXSkpO1xyXG4gICAgICByZXR1cm4gdW5pcXVlU3RvcmVOYW1lcy5zaXplO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBheWxvYWQuY292ZXJhZ2UgPT09ICd1c2VyJykge1xyXG4gICAgICBjb25zdCB1bmlxdWVVc2VyTmFtZXMgPSBuZXcgU2V0KGRhdGEubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bJ1VzZXIgRW1haWwnXSkpO1xyXG4gICAgICByZXR1cm4gdW5pcXVlVXNlck5hbWVzLnNpemU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnBheWxvYWQpXHJcbiAgICBsZXQgZXhjZWxEYXRhOiBhbnkgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5wYXlsb2FkLnNlbGVjdGVkU3RvcmVzICYmIHRoaXMucGF5bG9hZC5zZWxlY3RlZFN0b3Jlcy5sZW5ndGggPiAwICYmIHRoaXMucGF5bG9hZC5jb3ZlcmFnZSA9PT0gJ3N0b3JlJykge1xyXG4gICAgICB0aGlzLnBheWxvYWQuc2VsZWN0ZWRTdG9yZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgZXhjZWxEYXRhLnB1c2goe1xyXG4gICAgICAgICAgY2hlY2tsaXN0TmFtZTogdGhpcy5wYXlsb2FkLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgICAgICBxdWVzdGlvbk5hbWU6IHRoaXMucGF5bG9hZC5pbnB1dERhdGEucW5hbWUsXHJcbiAgICAgICAgICBzdG9yZU5hbWU6IGl0ZW0uc3RvcmVOYW1lLFxyXG4gICAgICAgICAgY29tbWVudHM6ICcnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5wYXlsb2FkLnNlbGVjdGVkVXNlcnMgJiYgdGhpcy5wYXlsb2FkLnNlbGVjdGVkVXNlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnBheWxvYWQuc2VsZWN0ZWRVc2Vycy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBleGNlbERhdGEucHVzaCh7XHJcbiAgICAgICAgICBjaGVja2xpc3ROYW1lOiB0aGlzLnBheWxvYWQuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgICAgIHF1ZXN0aW9uTmFtZTogdGhpcy5wYXlsb2FkLmlucHV0RGF0YS5xbmFtZSxcclxuICAgICAgICAgIHVzZXJFbWFpbDogaXRlbS51c2VyRW1haWwsXHJcbiAgICAgICAgICBjb21tZW50czogJycsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wYXlsb2FkLmV4Y2VsRGF0YSA9IGV4Y2VsRGF0YVxyXG4gICAgdGhpcy50cmF4U2VydmljZS5kb3dubG9hZHRlbXBsYXRlKHRoaXMucGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRyYXhTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIGBCdWxrICR7dGhpcy50eXBlfWApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NvbWV0aGluZyB3ZW50IFdyb25nLi4nKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gRXhwb3J0IHRoZSBmaWxlXHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICBhZnRlclVwbGxvYWQoZGF0YT86IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICB0aGlzLmV4Y2VsRXJyb3IgPSBkYXRhO1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmFmdGVyVmFsaWRhdGlvbiwgeyBjZW50ZXJlZDogdHJ1ZSwgYmFja2Ryb3A6ICdzdGF0aWMnIH0pXHJcbiAgfVxyXG4gIG9uRmlsZVVwbG9hZChldmVudDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gPERhdGFUcmFuc2Zlcj4oZXZlbnQudGFyZ2V0KTtcclxuICAgIGxldCBkYXRhOiBhbnk7XHJcbiAgICBsZXQgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgbGV0IFZhbGlkYXRpb25FcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbGV0IGlzRXhjZWxGaWxlID0gISF0YXJnZXQuZmlsZXNbMF0ubmFtZS5tYXRjaCgvKC54bHN8Lnhsc3gpLyk7XHJcbiAgICBpZiAoaXNFeGNlbEZpbGUpIHtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogWExTWC5Xb3JrQm9vayA9IFhMU1gucmVhZChic3RyLCB7IHR5cGU6ICdiaW5hcnknIH0pO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICBkYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzKTtcclxuICAgICAgICB0aGlzLmV4Y2VsRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCB8fCAoZGF0YS5zb21lKChpdGVtOiBhbnkpID0+ICdjbHVzdGVyTmFtZScgaW4gaXRlbSB8fCAndGVhbU5hbWUnIGluIGl0ZW0pKSkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIFVwbG9hZCBhIFZhbGlkIGZpbGUuJylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZGF0YSA9IGRhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAvLyAgIHJldHVybiAoKGl0ZW0/LnN0b3JlTmFtZSAmJiBpdGVtPy5zdG9yZU5hbWUudHJpbSgpICE9ICcnICYmIGl0ZW0/LnN0b3JlTmFtZS50cmltKCkgIT0gbnVsbCkgfHwgKGl0ZW0/LnVzZXJOYW1lICYmIGl0ZW0/LnVzZXJOYW1lLnRyaW0oKSAhPSAnJyAmJiBpdGVtPy51c2VyTmFtZS50cmltKCkgIT0gbnVsbCkgfHwgKGl0ZW0/LnVzZXJFbWFpbCAmJiBpdGVtPy51c2VyRW1haWwudHJpbSgpICE9ICcnICYmIGl0ZW0/LnVzZXJFbWFpbC50cmltKCkgIT0gbnVsbCkpXHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQ/LnVzZXJFbWFpbCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnVzZXJFbWFpbCA9IGVsZW1lbnQ/LnVzZXJFbWFpbC5yZXBsYWNlKC9cXHMvZywgJycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc29sZS5sb2codGhpcy5wYXlsb2FkLmNvdmVyYWdlKVxyXG4gICAgICAgICAgaWYgKHRoaXMucGF5bG9hZC5jb3ZlcmFnZSA9PT0gJ3N0b3JlJykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50KVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50WydTdG9yZSBOYW1lJ10pXHJcbiAgICAgICAgICAgIGlmICgoZWxlbWVudFsnU3RvcmUgTmFtZSddICYmIGVsZW1lbnRbJ1N0b3JlIE5hbWUnXS50cmltKCkgPT0gJycpIHx8IGVsZW1lbnRbJ1N0b3JlIE5hbWUnXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBTdG9yZU5hbWUgLSBDJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBheWxvYWQuY292ZXJhZ2UgPT09ICd1c2VycycpIHtcclxuICAgICAgICAgICAgaWYgKChlbGVtZW50WydVc2VyIEVtYWlsJ10gJiYgZWxlbWVudFsnVXNlciBFbWFpbCddLnRyaW0oKSA9PSAnJykgfHwgZWxlbWVudFsnVXNlciBFbWFpbCddID09IG51bGwpIHtcclxuICAgICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIHVzZXJFbWFpbCAtIEMke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50WydVc2VyIEVtYWlsJ10gJiYgIWVsZW1lbnRbJ1VzZXIgRW1haWwnXS5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLykpIHtcclxuICAgICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIHVzZXJFbWFpbCAtIEMke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBpZiAoKGVsZW1lbnQuY29tbWVudHMgJiYgZWxlbWVudC5jb21tZW50cy50cmltKCkgPT0gJycpIHx8IGVsZW1lbnQuY29tbWVudHMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gICBlcnJvci5wdXNoKGBJbnZhbGlkIGNvbW1lbnQgLSBEJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmxlbmd0aClcclxuICAgICAgICBpZiAoZXJyb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKClcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAhVmFsaWRhdGlvbkVycm9yID8gdGhpcy5hZnRlclVwbGxvYWQoKSA6ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ1BsZWFzZSBVcGxvYWQgYSBFeGNlbCBmaWxlLicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZCBncm91cC1kZWxldGUgcHktMFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBkLWZsZXggZmxleC1zdGFydCBmbGV4LWNvbHVtbiBwLTkgXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXktNSBtYi01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZSBkLWZsZXggXCI+XHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cInR5cGU9PT0ndGFzaydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMzAgMThIMjJDMjEuNDY5NiAxOCAyMC45NjA5IDE4LjIxMDcgMjAuNTg1OCAxOC41ODU4QzIwLjIxMDcgMTguOTYwOSAyMCAxOS40Njk2IDIwIDIwVjM2QzIwIDM2LjUzMDQgMjAuMjEwNyAzNy4wMzkxIDIwLjU4NTggMzcuNDE0MkMyMC45NjA5IDM3Ljc4OTMgMjEuNDY5NiAzOCAyMiAzOEgzNEMzNC41MzA0IDM4IDM1LjAzOTEgMzcuNzg5MyAzNS40MTQyIDM3LjQxNDJDMzUuNzg5MyAzNy4wMzkxIDM2IDM2LjUzMDQgMzYgMzZWMjRNMzAgMThMMzYgMjRNMzAgMThWMjRIMzZNMjggMzRWMjhNMjUgMzFIMzFcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cInR5cGU9PT0ncmVkbydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMzkgMTkuOTk5NlYyNS45OTk2TTM5IDI1Ljk5OTZIMzNNMzkgMjUuOTk5NkwzNC4zNiAyMS42Mzk2QzMzLjI4NTMgMjAuNTY0MyAzMS45NTU2IDE5Ljc3ODggMzAuNDk1MiAxOS4zNTY0QzI5LjAzNDggMTguOTMzOSAyNy40OTExIDE4Ljg4ODMgMjYuMDA4MyAxOS4yMjM4QzI0LjUyNTUgMTkuNTU5NCAyMy4xNTE4IDIwLjI2NSAyMi4wMTU1IDIxLjI3NUMyMC44NzkxIDIyLjI4NSAyMC4wMTcyIDIzLjU2NjQgMTkuNTEgMjQuOTk5Nk0xNyAzNS45OTk2VjI5Ljk5OTZNMTcgMjkuOTk5NkgyM00xNyAyOS45OTk2TDIxLjY0IDM0LjM1OTZDMjIuNzE0NyAzNS40MzQ5IDI0LjA0NDQgMzYuMjIwNCAyNS41MDQ4IDM2LjY0MjhDMjYuOTY1MiAzNy4wNjUyIDI4LjUwODkgMzcuMTEwOCAyOS45OTE3IDM2Ljc3NTNDMzEuNDc0NSAzNi40Mzk4IDMyLjg0ODIgMzUuNzM0MiAzMy45ODQ1IDM0LjcyNDJDMzUuMTIwOSAzMy43MTQyIDM1Ljk4MjggMzIuNDMyOCAzNi40OSAzMC45OTk2XCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBteC0zIG10LTNcIj4ge3t0eXBlfX08L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMyBwLTMgYm9yZGVyIHJvdW5kZWQgb3B0aW9uLWJveFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZS1vcHRpb24nOiBzZWxlY3RlZE9wdGlvbiA9PT0gJ3NhbWUnIH1cIiAoY2xpY2spPVwic2V0T3B0aW9uKCdzYW1lJylcIj5cclxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBteS01IG14LTNcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwidGFza09wdGlvblwiIGlkPVwic2FtZUNvbW1lbnRcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkT3B0aW9uID09PSAnc2FtZSdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm14LTNcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmdy1zZW1pYm9sZFwiIGZvcj1cInNhbWVDb21tZW50XCI+XHJcbiAgICAgICAgICBDcmVhdGUge3t0eXBlfX0gd2l0aCBzYW1lIGNvbW1lbnRcclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwic2VsZWN0ZWRPcHRpb24gPT09ICdzYW1lJyA/ICdhY3RpdmUtb3B0aW9uJyA6ICd0ZXh0LW5vcm1hbCdcIiBjbGFzcz1cInNtYWxsIG10LTEgbXMtMTBcIj5cclxuICAgICAgICAgIEFwcGx5IGEgc2luZ2xlIGNvbW1lbnQgdG8gYWxsIHNlbGVjdGVkIHN0b3Jlcy4gVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4gdGhlIHt7dHlwZX19IGRldGFpbHMgYXJlIGlkZW50aWNhbFxyXG4gICAgICAgICAgZm9yXHJcbiAgICAgICAgICBldmVyeSBzdG9yZS5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBwLTMgYm9yZGVyIHJvdW5kZWQgb3B0aW9uLWJveFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZS1vcHRpb24nOiBzZWxlY3RlZE9wdGlvbiA9PT0gJ2RpZmZlcmVudCcgfVwiIChjbGljayk9XCJzZXRPcHRpb24oJ2RpZmZlcmVudCcpXCI+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgIG15LTUgbXgtM1wiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJ0YXNrT3B0aW9uXCIgaWQ9XCJkaWZmZXJlbnRDb21tZW50c1wiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRPcHRpb24gPT09ICdkaWZmZXJlbnQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJteC0zXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZnctc2VtaWJvbGRcIiBmb3I9XCJkaWZmZXJlbnRDb21tZW50c1wiPlxyXG4gICAgICAgICAgQ3JlYXRlIHt7dHlwZX19IHdpdGggZGlmZmVyZW50IGNvbW1lbnRzIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPih2aWEgRXhjZWwgdXBsb2FkKTwvc3Bhbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwic2VsZWN0ZWRPcHRpb24gPT09ICdkaWZmZXJlbnQnID8gJ2FjdGl2ZS1vcHRpb24nIDogJ3RleHQtbm9ybWFsJ1wiIGNsYXNzPVwiIHNtYWxsIG10LTEgbXMtMTBcIj5cclxuICAgICAgICAgIFVzZSBhbiBFeGNlbCB0ZW1wbGF0ZSB0byBhc3NpZ24gZGlmZmVyZW50IGNvbW1lbnRzIHRvIGVhY2ggc2VsZWN0ZWQgc3RvcmUuIFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlXHJcbiAgICAgICAgICB7e3R5cGV9fSBmb3IgZWFjaCBsb2NhdGlvbi5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBtdC0zIG1iLTJcIiAqbmdJZj1cInR5cGU9PT0ncmVkbycmJnRoaXMucGF5bG9hZD8uc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoPT09MCYmdGhpcy5wYXlsb2FkPy5zZWxlY3RlZFN0b3Jlcz8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRkVGMEM3XCIgLz5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xOC4wMDA1IDE1LjMzNDFWMTguMDAwOE0xOC4wMDA1IDIwLjY2NzVIMTguMDA3Mk0xNi44NjA1IDExLjkwNzVMMTEuMjEzOCAyMS4zMzQxQzExLjA5NzQgMjEuNTM1NyAxMS4wMzU4IDIxLjc2NDMgMTEuMDM1MiAyMS45OTcxQzExLjAzNDUgMjIuMjI5OSAxMS4wOTQ4IDIyLjQ1ODkgMTEuMjEwMSAyMi42NjExQzExLjMyNTQgMjIuODYzNCAxMS40OTE3IDIzLjAzMiAxMS42OTIzIDIzLjE1QzExLjg5MyAyMy4yNjgxIDEyLjEyMSAyMy4zMzE2IDEyLjM1MzggMjMuMzM0MUgyMy42NDcyQzIzLjg4IDIzLjMzMTYgMjQuMTA4IDIzLjI2ODEgMjQuMzA4NyAyMy4xNUMyNC41MDk0IDIzLjAzMiAyNC42NzU2IDIyLjg2MzQgMjQuNzkwOSAyMi42NjExQzI0LjkwNjIgMjIuNDU4OSAyNC45NjY1IDIyLjIyOTkgMjQuOTY1OCAyMS45OTcxQzI0Ljk2NTIgMjEuNzY0MyAyNC45MDM2IDIxLjUzNTcgMjQuNzg3MiAyMS4zMzQxTDE5LjE0MDUgMTEuOTA3NUMxOS4wMjE3IDExLjcxMTUgMTguODU0MyAxMS41NDk1IDE4LjY1NDYgMTEuNDM3MUMxOC40NTQ5IDExLjMyNDcgMTguMjI5NyAxMS4yNjU2IDE4LjAwMDUgMTEuMjY1NkMxNy43NzEzIDExLjI2NTYgMTcuNTQ2MSAxMS4zMjQ3IDE3LjM0NjQgMTEuNDM3MUMxNy4xNDY3IDExLjU0OTUgMTYuOTc5MyAxMS43MTE1IDE2Ljg2MDUgMTEuOTA3NVpcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgIDwvc3ZnPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcy0yXCI+UmVkbyB3aWxsIGFwcGx5IG9ubHkgdG8gdGhlIGNoZWNrbGlzdCByZXNwb25zZSBzdWJtaXR0ZWQgb24gdG9kYXkuIEFueSByZXNwb25zZXMgc3VibWl0dGVkIG9uXHJcbiAgICAgICAgICBwcmV2aW91cyBkYXRlcyB3aWxsIGJlIHVuc2VsZWN0ZWQgYW5kIGV4Y2x1ZGVkIGZyb20gcmVkby48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBtdC0zIG1iLTJcIiAqbmdJZj1cInR5cGU9PT0ndGFzaycmJnRoaXMucGF5bG9hZD8uc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoPT09MCYmdGhpcy5wYXlsb2FkPy5zZWxlY3RlZFN0b3Jlcz8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRkVGMEM3XCIgLz5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xOC4wMDA1IDE1LjMzNDFWMTguMDAwOE0xOC4wMDA1IDIwLjY2NzVIMTguMDA3Mk0xNi44NjA1IDExLjkwNzVMMTEuMjEzOCAyMS4zMzQxQzExLjA5NzQgMjEuNTM1NyAxMS4wMzU4IDIxLjc2NDMgMTEuMDM1MiAyMS45OTcxQzExLjAzNDUgMjIuMjI5OSAxMS4wOTQ4IDIyLjQ1ODkgMTEuMjEwMSAyMi42NjExQzExLjMyNTQgMjIuODYzNCAxMS40OTE3IDIzLjAzMiAxMS42OTIzIDIzLjE1QzExLjg5MyAyMy4yNjgxIDEyLjEyMSAyMy4zMzE2IDEyLjM1MzggMjMuMzM0MUgyMy42NDcyQzIzLjg4IDIzLjMzMTYgMjQuMTA4IDIzLjI2ODEgMjQuMzA4NyAyMy4xNUMyNC41MDk0IDIzLjAzMiAyNC42NzU2IDIyLjg2MzQgMjQuNzkwOSAyMi42NjExQzI0LjkwNjIgMjIuNDU4OSAyNC45NjY1IDIyLjIyOTkgMjQuOTY1OCAyMS45OTcxQzI0Ljk2NTIgMjEuNzY0MyAyNC45MDM2IDIxLjUzNTcgMjQuNzg3MiAyMS4zMzQxTDE5LjE0MDUgMTEuOTA3NUMxOS4wMjE3IDExLjcxMTUgMTguODU0MyAxMS41NDk1IDE4LjY1NDYgMTEuNDM3MUMxOC40NTQ5IDExLjMyNDcgMTguMjI5NyAxMS4yNjU2IDE4LjAwMDUgMTEuMjY1NkMxNy43NzEzIDExLjI2NTYgMTcuNTQ2MSAxMS4zMjQ3IDE3LjM0NjQgMTEuNDM3MUMxNy4xNDY3IDExLjU0OTUgMTYuOTc5MyAxMS43MTE1IDE2Ljg2MDUgMTEuOTA3NVpcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgIDwvc3ZnPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcy0yXCI+U3RvcmVzIHRoYXQgYXJlIGFscmVhZHkgY3JlYXRlZCB0YXNrIGZvciB0aGVpciBjaGVja2xpc3QgcmVzcG9uc2VzIGFyZSBleGNsdWRlZCBmb3IgdGFzayBjcmVhdGlvbiBub3cuPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBjb2wtbWQtMTIgdGV4dC1lbmQgYm9yZGVyLXRvcC0wXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlYWN0aXZlcG9wdXAoKVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJ0aGlzLnBheWxvYWQ/LnNlbGVjdGVkVXNlcnM/Lmxlbmd0aD09PTAmJnRoaXMucGF5bG9hZD8uc2VsZWN0ZWRTdG9yZXM/Lmxlbmd0aD09MFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInByb2NlZWQoKVwiPlByb2NlZWQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnVsa3VwbG9hZCBsZXQtbW9kZWw+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIiAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIG10LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1saWdodC1wcmltYXJ5IHJvdW5kZWQtNSB3LTQwcHggaC00MHB4IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTMwIDE4SDIyQzIxLjQ2OTYgMTggMjAuOTYwOSAxOC4yMTA3IDIwLjU4NTggMTguNTg1OEMyMC4yMTA3IDE4Ljk2MDkgMjAgMTkuNDY5NiAyMCAyMFYzNkMyMCAzNi41MzA0IDIwLjIxMDcgMzcuMDM5MSAyMC41ODU4IDM3LjQxNDJDMjAuOTYwOSAzNy43ODkzIDIxLjQ2OTYgMzggMjIgMzhIMzRDMzQuNTMwNCAzOCAzNS4wMzkxIDM3Ljc4OTMgMzUuNDE0MiAzNy40MTQyQzM1Ljc4OTMgMzcuMDM5MSAzNiAzNi41MzA0IDM2IDM2VjI0TTMwIDE4TDM2IDI0TTMwIDE4VjI0SDM2TTI4IDM0VjI4TTI1IDMxSDMxXCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj4gPHNwYW4gY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1zZW1pYm9sZCBtcy01IHctYXV0byB0ZXh0LWNhcGl0YWxpemVcIj57e3R5cGV9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmVBc3NpZ24gbXQtM1wiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMFwiPjEuIFVzZSB0aGUgdGVtcGxhdGUgdG8gdXBsb2FkIGFuZCBjcmVhdGUgbXVsdGlwbGVcclxuICAgICAgICAgIHt7dHlwZX19cyBhdCBvbmNlLjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZUFzc2lnbiBtdC0zXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwXCI+Mi4gRG93bmxvYWQgdGhlIHRlbXBsYXRlIGhlcmUgLSA8YVxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+RG93bmxvYWQgUHJlZmlsbGVkXHJcbiAgICAgICAgICAgIFRlbXBsYXRlPC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZUFzc2lnbiBtdC0zXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwXCI+My4gQWRkIHlvdXIgZGF0YSB0byB0aGUgVGVtcGxhdGUgRmlsZTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZUFzc2lnbiBtdC0zXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwXCI+NC4gVXBsb2FkIGl0IGJlbG93IGZvciBwcm9jZXNzaW5nPC9kaXY+XHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMCB0ZXh0LWVuZCBwdC0wXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cIm1vZGFsUmVmLmNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWQgcHktMyBidG4tZGVmYXVsdCBtcy0zIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImZpbGUxLmNsaWNrKClcIj5VcGxvYWQ8L2J1dHRvbj5cclxuICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlMSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlVXBsb2FkKCRldmVudCwndXBsb2FkJylcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FmdGVyVmFsaWRhdGlvbiBsZXQtbW9kZWw+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIiAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIG10LTBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm15LTUgbWItNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZSBkLWZsZXggXCI+XHJcbiAgICAgICAgICA8c3ZnICpuZ0lmPVwidHlwZT09PSd0YXNrJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjhcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMzAgMThIMjJDMjEuNDY5NiAxOCAyMC45NjA5IDE4LjIxMDcgMjAuNTg1OCAxOC41ODU4QzIwLjIxMDcgMTguOTYwOSAyMCAxOS40Njk2IDIwIDIwVjM2QzIwIDM2LjUzMDQgMjAuMjEwNyAzNy4wMzkxIDIwLjU4NTggMzcuNDE0MkMyMC45NjA5IDM3Ljc4OTMgMjEuNDY5NiAzOCAyMiAzOEgzNEMzNC41MzA0IDM4IDM1LjAzOTEgMzcuNzg5MyAzNS40MTQyIDM3LjQxNDJDMzUuNzg5MyAzNy4wMzkxIDM2IDM2LjUzMDQgMzYgMzZWMjRNMzAgMThMMzYgMjRNMzAgMThWMjRIMzZNMjggMzRWMjhNMjUgMzFIMzFcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPHN2ZyAqbmdJZj1cInR5cGU9PT0ncmVkbydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTM5IDE5Ljk5OTZWMjUuOTk5Nk0zOSAyNS45OTk2SDMzTTM5IDI1Ljk5OTZMMzQuMzYgMjEuNjM5NkMzMy4yODUzIDIwLjU2NDMgMzEuOTU1NiAxOS43Nzg4IDMwLjQ5NTIgMTkuMzU2NEMyOS4wMzQ4IDE4LjkzMzkgMjcuNDkxMSAxOC44ODgzIDI2LjAwODMgMTkuMjIzOEMyNC41MjU1IDE5LjU1OTQgMjMuMTUxOCAyMC4yNjUgMjIuMDE1NSAyMS4yNzVDMjAuODc5MSAyMi4yODUgMjAuMDE3MiAyMy41NjY0IDE5LjUxIDI0Ljk5OTZNMTcgMzUuOTk5NlYyOS45OTk2TTE3IDI5Ljk5OTZIMjNNMTcgMjkuOTk5NkwyMS42NCAzNC4zNTk2QzIyLjcxNDcgMzUuNDM0OSAyNC4wNDQ0IDM2LjIyMDQgMjUuNTA0OCAzNi42NDI4QzI2Ljk2NTIgMzcuMDY1MiAyOC41MDg5IDM3LjExMDggMjkuOTkxNyAzNi43NzUzQzMxLjQ3NDUgMzYuNDM5OCAzMi44NDgyIDM1LjczNDIgMzMuOTg0NSAzNC43MjQyQzM1LjEyMDkgMzMuNzE0MiAzNS45ODI4IDMyLjQzMjggMzYuNDkgMzAuOTk5NlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemUgbXgtMyBtdC0zXCI+IHt7dHlwZX19PC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtODBweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2dldFN0b3JlQ291bnRzKGV4Y2VsRGF0YSl9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlRvdGFsIDxzcGFuICpuZ0lmPVwidGhpcy5wYXlsb2FkLmNvdmVyYWdlPT09J3N0b3JlJ1wiPlN0b3Jlczwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRoaXMucGF5bG9hZC5jb3ZlcmFnZT09PSd1c2VycydcIj5Vc2Vyczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC04MHB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7ZXhjZWxEYXRhPy5sZW5ndGh9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlJvd3MgcHJvY2Vzc2VkPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC04MHB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdlcnJvci1oZWFkaW5nJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj5cclxuICAgICAgICAgICAgICB7e2V4Y2VsRXJyb3I/LmVycm9yPy5sZW5ndGggfHwgMH19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdleGNlbC1lcnJvcic6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5FcnJvcjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImV4Y2VsRXJyb3JcIiBjbGFzcz1cImZsZXgtY29sdW1uIG10LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWhlYWRpbmcgZnctYm9sZFwiPkludmFsaWQgRGV0YWlscyAhPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlIG10LTVcIj5QbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBsYXlvdXQgaW5mb3JtYXRpb24uPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB3LTEwMCByb3VuZGVkLTMgYm9yZGVyLWVycm9yIG10LTUgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yIG9mIGV4Y2VsRXJyb3I/LmVycm9yOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIiBbbmdDbGFzc109XCIhbGFzdCA/ICdtYi0yJyA6ICcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVycm9yXCI+e3tpICsgMX19KSB7e2Vycm9yfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTAgdGV4dC1lbmQgcHQtMFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZCBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZWFjdGl2ZXBvcHVwKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gYnRuLW1kIHB5LTQgYnRuLWRlZmF1bHQgbXMtMyBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlRGV0YWlscygpXCI+UHJvY2VlZDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiZXhjZWxFcnJvclwiIGNsYXNzPVwiYnRuIHB5LTMgYnRuLW1kIGJ0bi1kZWZhdWx0IG1zLTMgYnRuLWRhbmdlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlJldXBsb2FkKCk7XCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlMSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlVXBsb2FkKCRldmVudCwncmV1cGxvYWQnKVwiIC8+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=