@dev-tcloud/tcloud-ui 2.4.12 → 2.4.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.mjs +33 -3
- package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.mjs +1 -1
- package/esm2022/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.mjs +1 -2
- package/fesm2022/dev-tcloud-tcloud-ui.mjs +32 -3
- package/fesm2022/dev-tcloud-tcloud-ui.mjs.map +1 -1
- package/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.d.ts +1 -1
- package/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.d.ts +1 -0
- package/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -319,8 +319,38 @@ export class TCloudUiFiltersComponent {
|
|
|
319
319
|
}
|
|
320
320
|
}
|
|
321
321
|
else {
|
|
322
|
-
if (
|
|
323
|
-
|
|
322
|
+
if (filter_item.type === TCFiltersType.select) {
|
|
323
|
+
// Exclusivo para select
|
|
324
|
+
if (filter_item.data && (filter_item.data).length > 0) {
|
|
325
|
+
// uso do select com o notValues: string[]
|
|
326
|
+
let current_option = [];
|
|
327
|
+
for (let k = 0; k < (filter_item.data).length; k++) {
|
|
328
|
+
const k_item = filter_item.data[k];
|
|
329
|
+
if (`${k_item?.value}` === `${filter_item.searchText}`) {
|
|
330
|
+
current_option = k_item?.notValues;
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (current_option && (current_option).length > 0) {
|
|
335
|
+
for (let v = 0; v < (current_option).length; v++) {
|
|
336
|
+
const v_item = current_option[v];
|
|
337
|
+
if ((item_value === v_item)) {
|
|
338
|
+
this.setDataIndex(i, false);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
// uso normal do select
|
|
344
|
+
if (!(item_value === filter_item.searchText)) {
|
|
345
|
+
this.setDataIndex(i, false);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
if (!(item_value.includes(filter_item.searchText) || item_value === filter_item.searchText)) {
|
|
352
|
+
this.setDataIndex(i, false);
|
|
353
|
+
}
|
|
324
354
|
}
|
|
325
355
|
}
|
|
326
356
|
}
|
|
@@ -501,4 +531,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
501
531
|
}], onSubmit: [{
|
|
502
532
|
type: Output
|
|
503
533
|
}] } });
|
|
504
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBQUUsV0FBVyxFQUFpQixhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQU9oRixNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLElBQWEsSUFBSSxDQUFDLElBQVM7UUFDekIsaURBQWlEO0lBQ25ELENBQUM7SUFDRCxJQUFJLElBQUksS0FBUyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBR3JDLElBQWEsT0FBTyxDQUFDLE9BQVk7UUFDL0IsMEJBQTBCO0lBQzVCLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBUyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRzNDLElBQWEsVUFBVSxDQUFDLENBQVM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBQ0QsSUFBSSxVQUFVLEtBQVcsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQXVCbkQsWUFDVSxRQUFrQjtRQUFsQixh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O2dCQU1PLFVBQVU7c0JBQXRCLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUQ0NvbmRpdGlvbiwgVENEYXRhRmlsdGVycywgVENGaWx0ZXJzVHlwZSB9IGZyb20gJy4vdGNsb3VkLXVpLWZpbHRlcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Y2xvdWQtdWktZmlsdGVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90Y2xvdWQtdWktZmlsdGVycy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaUZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIGRhdGVwaWNrZXJzID0gW10gYXMgYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCdfZm9ybXVsYXJpbycpICBfZm9ybXVsYXJpbzogTmdGb3JtIHwgdW5kZWZpbmVkO1xyXG5cclxuICBpbnB1dHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHNob3dfZmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWFyY2hfZGF0YTogYW55IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF9kYXRhOiBhbnkgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2V0IGRhdGEoZGF0YTogYW55KXtcclxuICAgIC8vIHRoaXMuX2RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICB9XHJcbiAgZ2V0IGRhdGEoKTogYW55eyByZXR1cm4gdGhpcy5fZGF0YTsgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXJzOiBUQ0RhdGFGaWx0ZXJzIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNldCBmaWx0ZXJzKGZpbHRlcnM6IGFueSl7XHJcbiAgICAvL3RoaXMuX2ZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gIH1cclxuICBnZXQgZmlsdGVycygpOiBhbnl7IHJldHVybiB0aGlzLl9maWx0ZXJzOyB9XHJcblxyXG4gIHByaXZhdGUgX3N1Ym1pdFRleHQ6IHN0cmluZyA9ICdGaWx0cmFyJztcclxuICBASW5wdXQoKSBzZXQgc3VibWl0VGV4dCh2OiBzdHJpbmcpeyBcclxuICAgIGlmKCB2ICYmIHYgIT09IHRoaXMuX3N1Ym1pdFRleHQgKXtcclxuICAgICAgdGhpcy5fc3VibWl0VGV4dCA9IHY7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzdWJtaXRUZXh0KCk6c3RyaW5neyByZXR1cm4gdGhpcy5fc3VibWl0VGV4dDsgfVxyXG5cclxuICBASW5wdXQoKSBidG5TdWJtaXRDbGFzczogc3RyaW5nID0gJ3RjLWJ0bi1wcmltYXJ5JztcclxuICBASW5wdXQoKSB1c2VPbkNoYW5nZVN1Ym1pdDogYm9vbGVhbiA9IHRydWU7IC8vIHVzZU9uQ2hhbmdlU3VibWl0IC0gU3VibWl0IGF1dG9tYXRpY28gcXVhbmRvIGZvciBhbHRlcmFkbyBxdWFucXVlciBpbnB1dFxyXG4gIEBJbnB1dCgpIHVzZUJ1dHRvblN1Ym1pdDogYm9vbGVhbiA9IGZhbHNlOyAvLyB1c2VCdXR0b25TdWJtaXQgLSBFeGliZSB1bSBib3TDo28gZGUgc3VibWl0IGUgbsOjbyBleGVjdXRhIGEgYnVzY2EgYXV0b21hdGljYW1lbnRlXHJcbiAgQElucHV0KCkgdXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZTogYm9vbGVhbiA9IHRydWU7IC8vIHVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmUgLSBOw6NvIHZhbGlkYSBjYWl4YSBhbHRhIG91IGJhaXhhIGUgY2FyYWN0ZXJlcyBlc3BlY2lhaXNcclxuICBASW5wdXQoKSB1c2VSYW5nZURhdGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHVzZUZpbHRlckFjY2VwdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgcmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGRlc2NyaXB0aW9uU3RhcnQ6IHN0cmluZyA9ICcnO1xyXG4gIGRlc2NyaXB0aW9uU3RvcDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByaXZhdGUgZmlyc3RfYWN0aXZlX2ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzdGFydF9zdG9wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhcnRfc3RvcF93aWR0aDogbnVtYmVyID0gMDtcclxuICBzdGFydF9zdG9wX3VuZDogc3RyaW5nID0gJyc7IC8vIHB4IG91ICVcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGVwaXBlOiBEYXRlUGlwZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldLnZhbHVlICl7XHJcbiAgICAgICAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0udHlwZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyApe1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCA9IG5ldyBEYXRlKCBgJHt0aGlzLmZpbHRlcnNbaV0udmFsdWV9YCApO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCA9IHRoaXMuZmlsdGVyc1tpXS52YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmZpcnN0X2FjdGl2ZV9maWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gICAgICBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0X3N0b3AgPSAodGhpcy51c2VSYW5nZURhdGUpID8gdGhpcy5pc19zdGFydF9zdG9wX2RhdGV0aW1lKCkgOiBmYWxzZTtcclxuICAgICAgdGhpcy50b1N1Ym1pdCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc19zdGFydF9zdG9wX2RhdGV0aW1lKCl7XHJcbiAgICBsZXQgc3RhcnQgPSBmYWxzZTtcclxuICAgIGxldCBzdG9wID0gZmFsc2U7XHJcbiAgICBpZiggdGhpcy5maWx0ZXJzICYmICh0aGlzLmZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcclxuICAgICAgdGhpcy5zdGFydF9zdG9wX3dpZHRoID0gMDtcclxuICAgICAgZm9yKGxldCBpID0gMDsgaSA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldLmlkID09PSAnc3RhcnQnICl7XHJcbiAgICAgICAgICBzdGFydCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0X3N0b3Bfd2lkdGggKz0gdGhpcy5nZXRWYWx1ZVdpZHRoKHRoaXMuZmlsdGVyc1tpXS53aWR0aCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0X3N0b3BfdW5kID0gdGhpcy5nZXRVbmlkYWRlKHRoaXMuZmlsdGVyc1tpXS53aWR0aCk7XHJcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uU3RhcnQgPSB0aGlzLmZpbHRlcnNbaV0uZGVzY3JpcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0uaWQgPT09ICdzdG9wJyApe1xyXG4gICAgICAgICAgc3RvcCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0X3N0b3Bfd2lkdGggKz0gdGhpcy5nZXRWYWx1ZVdpZHRoKHRoaXMuZmlsdGVyc1tpXS53aWR0aCk7XHJcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uU3RvcCA9IHRoaXMuZmlsdGVyc1tpXS5kZXNjcmlwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAoIHN0YXJ0ICYmIHN0b3AgKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlV2lkdGgodjogc3RyaW5nKTpudW1iZXIge1xyXG4gICAgbGV0IHVuZCA9IHRoaXMuZ2V0VW5pZGFkZSh2KTtcclxuICAgIHYgPSAodikucmVwbGFjZSh1bmQsICcnKTtcclxuICAgIHJldHVybiArKHYpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VW5pZGFkZSh2OiBzdHJpbmcpOnN0cmluZyB7XHJcbiAgICBsZXQgdW5kID0gJyUnO1xyXG4gICAgaWYoIHYgJiYgKHYpLmluY2x1ZGVzKCdweCcpICl7XHJcbiAgICAgIHVuZCA9ICdweCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kO1xyXG4gIH1cclxuIFxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7ICBcclxuICAgIFxyXG4gICAgaWYoIGNoYW5nZXMgJiYgY2hhbmdlc1snZGF0YSddICl7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiggdGhpcy5fZGF0YSAhPT0gZGF0YSApe1xyXG4gICAgICAgIHRoaXMuX2RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICB0aGlzLnNlYXJjaF9kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiggY2hhbmdlcyAmJiBjaGFuZ2VzWydmaWx0ZXJzJ10gKXtcclxuICAgICAgY29uc3QgZmlsdGVycyA9IGNoYW5nZXNbJ2ZpbHRlcnMnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmKCB0aGlzLl9maWx0ZXJzICE9PSBmaWx0ZXJzICl7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpO1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXQoKXtcclxuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5maWx0ZXJzICl7XHJcbiAgICAgIHRoaXMuc2hvd19maWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgaWYoIHRoaXMuZmlsdGVycyAmJiAodGhpcy5maWx0ZXJzKS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgKHRoaXMuZmlsdGVycykuZm9yRWFjaCgoZmlsdGVyOiBUQ0RhdGFGaWx0ZXJzKSA9PiB7ICAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEluKGZpbHRlciwgJ3N5bmMnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBcclxuICAgICAgaWYoICF0aGlzLnVzZU9uQ2hhbmdlU3VibWl0ICl7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRfYWNjZXB0KHRoaXMuZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKCB0aGlzLnVzZU9uQ2hhbmdlU3VibWl0IHx8IHRoaXMudXNlQnV0dG9uU3VibWl0ICl7XHJcbiAgICAgICAgdGhpcy5zdGFydF9maWx0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBub3JtYWxpemUodGV4dDogYW55KTogc3RyaW5ne1xyXG4gICAgaWYoIHRoaXMudXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZSApe1xyXG4gICAgICBjb25zdCB2ID0gKCAoIChgJHt0ZXh0fWApLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIikgKS50cmltKCkgKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICByZXR1cm4gdjtcclxuICAgIH1cclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcbiAgdG9TdWJtaXQoKXtcclxuICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdFN1Ym1pdEZpbHRlcnMoKXtcclxuICAgIGxldCBmaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlcnMpKTtcclxuICAgIGlmKCBmaWx0ZXJzICYmIChmaWx0ZXJzKS5sZW5ndGggPiAwICl7XHJcbiAgICAgIChmaWx0ZXJzKS5mb3JFYWNoKChmaWx0ZXI6IFRDRGF0YUZpbHRlcnMsIGk6IG51bWJlcikgPT4ge1xyXG5cclxuICAgICAgICBpZiggZmlsdGVyLndpZHRoICl7IGRlbGV0ZShmaWx0ZXJzW2ldLndpZHRoKTsgfVxyXG4gICAgICAgIGlmKCBmaWx0ZXIucGxhY2Vob2xkZXIgKXsgZGVsZXRlKGZpbHRlcnNbaV0ucGxhY2Vob2xkZXIpOyB9XHJcbiAgICAgICAgaWYoIGZpbHRlci5kZXNjcmlwdGlvbiApeyBkZWxldGUoZmlsdGVyc1tpXS5kZXNjcmlwdGlvbik7IH1cclxuXHJcbiAgICAgICAgaWYoICghZmlsdGVyLnNlYXJjaFRleHQgfHwgZmlsdGVyLnNlYXJjaFRleHQgJiYgZmlsdGVyLnNlYXJjaFRleHQgPT09ICcnKSAmJiBmaWx0ZXIudHlwZSAhPT0gXCJib29sZWFuXCIgKXtcclxuICAgICAgICAgIGRlbGV0ZShmaWx0ZXJzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoIGZpbHRlci50eXBlID09PSBcImJvb2xlYW5cIiApe1xyXG4gICAgICAgICAgaWYoICFmaWx0ZXIuc2VhcmNoVGV4dCApe1xyXG4gICAgICAgICAgICBmaWx0ZXIuc2VhcmNoVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9ICAgXHJcbiAgICBcclxuICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZpbHRlcnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgY29sbGVjdGlvbkZpbmQob2JqOiBhbnksIHBhdGg6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBwYXRoLnNwbGl0KFwiLlwiKTtcclxuICAgIGxldCBjdXJyZW50ID0gb2JqO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qga2V5ID0gcGF0aEFycmF5W2ldO1xyXG5cclxuICAgICAgaWYgKGtleS5pbmNsdWRlcygnWycpICYmIGtleS5pbmNsdWRlcygnXScpKSB7XHJcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBwYXRoQXJyYXkuc2xpY2UoaSArIDEpO1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0ga2V5LnN1YnN0cmluZyhrZXkuaW5kZXhPZignWycpICsgMSwga2V5LmluZGV4T2YoJ10nKSk7XHJcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5pbmRleE9mKCdbJykpO1xyXG4gICAgICAgIGlmKCBjdXJyZW50ICYmIGN1cnJlbnRbYXJyYXlLZXldICYmIGN1cnJlbnRbYXJyYXlLZXldW2luZGV4XSApe1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbkZpbmQoY3VycmVudFthcnJheUtleV1baW5kZXhdLCBuZXh0S2V5cy5qb2luKFwiLlwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgaWYgKGtleS5pbmNsdWRlcyhcIltdXCIpKSB7XHJcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkucmVwbGFjZShcIltdXCIsIFwiXCIpO1xyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2FycmF5S2V5XSB8fCBbXTtcclxuICAgICAgICBjb25zdCBuZXh0S2V5cyA9IHBhdGhBcnJheS5zbGljZShpICsgMSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY3VycmVudC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY29sbGVjdGlvbkZpbmQoY3VycmVudFtqXSwgbmV4dEtleXMuam9pbihcIi5cIikpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOyBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiggIWN1cnJlbnQgfHwgKGN1cnJlbnQgJiYgIWN1cnJlbnRba2V5XSkgKXtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XHJcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjdXJyZW50O1xyXG4gIH1cclxuICAgIFxyXG4gIGZpcnN0OiBib29sZWFuID0gdHJ1ZTtcclxuICBzdGFydF9maWx0ZXJfZmM6IGFueSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgc3RhcnRfdmFsdWU6IGFueSB8IHVuZGVmaW5lZDtcclxuICBzdG9wX3ZhbHVlOiBhbnkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHNlYXJjaEluUmFuZ2UoIHJhbmdlX2RhdGU6IGFueSl7XHJcbiAgICBcclxuICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xyXG5cclxuICAgICAgbGV0IGV2ZW50ID0ge30gYXMgYW55OyBcclxuICAgICAgZXZlbnQuZGF0ZXBpY2tlcnRpbWUgPSB0cnVlO1xyXG5cclxuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGkrKyApe1xyXG5cclxuICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldICYmIHRoaXMuZmlsdGVyc1tpXS5pZCAmJiB0aGlzLmZpbHRlcnNbaV0uaWQgPT09ICdzdGFydCcgKXtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyc1tpXS52YWx1ZSA9IHJhbmdlX2RhdGU/LnJlc3VsdD8uc3RhcnQhO1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgPSByYW5nZV9kYXRlPy5yZXN1bHQ/LnN0YXJ0ITtcclxuICAgICAgICAgIGV2ZW50LmlubmVyVmFsdWUgPSB0aGlzLnN0YXJ0X3ZhbHVlID0gcmFuZ2VfZGF0ZT8ucmVzdWx0Py5zdGFydCE7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEluKHRoaXMuZmlsdGVyc1tpXSwgZXZlbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXSAmJiB0aGlzLmZpbHRlcnNbaV0uaWQgJiYgdGhpcy5maWx0ZXJzW2ldLmlkID09PSAnc3RvcCcgKXtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyc1tpXS52YWx1ZSA9IHJhbmdlX2RhdGU/LnJlc3VsdD8uc3RvcCE7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCA9IHJhbmdlX2RhdGU/LnJlc3VsdD8uc3RvcCE7XHJcbiAgICAgICAgICBldmVudC5pbm5lclZhbHVlID0gdGhpcy5zdG9wX3ZhbHVlID0gcmFuZ2VfZGF0ZT8ucmVzdWx0Py5zdG9wITtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoSW4odGhpcy5maWx0ZXJzW2ldLCBldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKCB0aGlzLmZpcnN0IHx8IHRoaXMudXNlT25DaGFuZ2VTdWJtaXQgKXtcclxuICAgICAgICB0aGlzLnRvU3VibWl0KCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICB0aGlzLmZpcnN0ID0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgY29udmVydERhdGFUb051bWJlcihkYXRhU3RyaW5nOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgW2RpYSwgbWVzLCBhbm9dID0gZGF0YVN0cmluZy5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gKyhgJHthbm99JHttZXN9JHtkaWF9YCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoSW4oaXRlbTogVENEYXRhRmlsdGVycywgZXZlbnQ/OiBhbnkpe1xyXG5cclxuICAgIFxyXG5cclxuICAgIHRoaXMuc3RhcnRfZmlsdGVyX2ZjID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuXHJcbiAgICBpZiggZXZlbnQgPT09ICdzeW5jJyAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCB0eXBlb2YgZXZlbnQgPT09ICdib29sZWFuJyAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggKGV2ZW50ID09PSB1bmRlZmluZWQgfHwgZXZlbnQgPT09IG51bGwgfHwgZXZlbnQgPT09ICcnKSAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggZXZlbnQ/LmRhdGVwaWNrZXJ0aW1lICAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ/LmlubmVyVmFsdWU7ICAgICAgXHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihldmVudD8udGFyZ2V0Py52YWx1ZSAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gdGhpcy5ub3JtYWxpemUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKGV2ZW50Py50YXJnZXQ/LnZhbHVlID09PSAnJyAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggaXRlbS50eXBlID09PSAnZGF0ZS1sb2NhbCcgJiYgaXRlbS52YWx1ZSApe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGAke3RoaXMuY29udmVydERhdGFUb051bWJlciggaXRlbS52YWx1ZSApfWA7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggZXZlbnQgJiYgZXZlbnQucmVzdWx0ICYmICggZXZlbnQucmVzdWx0LnN0YXJ0IHx8IGV2ZW50LnJlc3VsdC5zdG9wICkgKXtcclxuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICBcclxuICAgIGlmKCB0aGlzLnVzZU9uQ2hhbmdlU3VibWl0IHx8IHRoaXMuZmlyc3RfYWN0aXZlX2ZpbHRlciApeyAgICAgIFxyXG4gICAgICB0aGlzLnN0YXJ0X2ZpbHRlcl9mYyA9IHRoaXMuc3RhcnRfZmlsdGVyKCk7XHJcbiAgICAgIHRoaXMuZmlyc3RfYWN0aXZlX2ZpbHRlciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCAhdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcclxuICAgICAgdGhpcy5lbWl0U3VibWl0RmlsdGVycygpO1xyXG4gICAgfSBcclxuICB9XHJcblxyXG4gIGdldERhdGVVVEMoZHQ6IGFueSl7XHJcbiAgICBjb25zdCBhbm8gPSBkdC5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbWVzID0gZHQuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGRpYSA9IGR0LmdldERhdGUoKTtcclxuICAgIGNvbnN0IGhvcmFzID0gZHQuZ2V0SG91cnMoKTtcclxuICAgIGNvbnN0IG1pbnV0b3MgPSBkdC5nZXRNaW51dGVzKCk7XHJcbiAgICBjb25zdCBzZWd1bmRvcyA9IGR0LmdldFNlY29uZHMoKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhhbm8sIG1lcywgZGlhLCBob3JhcywgbWludXRvcywgc2VndW5kb3MpKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIHN0YXJ0X2ZpbHRlcigpe1xyXG4gICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5kYXRhKS5sZW5ndGg7IGkrKyApe1xyXG5cclxuICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgdHJ1ZSk7XHJcblxyXG4gICAgICBmb3IoIGxldCBqID0gMDsgaiA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaisrICl7ICAgICAgICBcclxuICAgICAgICBjb25zdCBmaWx0ZXJfaXRlbSA9IHRoaXMuZmlsdGVyc1tqXTsgICBcclxuXHJcbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgdHlwZW9mIChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gJ3N0cmluZycgJiYgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAhPT0gJycgJiYgZmlsdGVyX2l0ZW0udHlwZSAhPT0gVENGaWx0ZXJzVHlwZS5udW1iZXIgJiYgZmlsdGVyX2l0ZW0udHlwZSAhPT0gVENGaWx0ZXJzVHlwZS5kYXRlICl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgPSB0aGlzLm5vcm1hbGl6ZShmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KTsgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWUgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKHRoaXMuZGF0YVtpXSwgZmlsdGVyX2l0ZW0uc2VhcmNoSW4pO1xyXG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgKXtcclxuICAgICAgICAgICAgaXRlbV92YWx1ZSA9IHRoaXMubm9ybWFsaXplKGl0ZW1fdmFsdWUpOyAgIFxyXG5cclxuICAgICAgICAgICAgaWYoIHR5cGVvZiBmaWx0ZXJfaXRlbS5ub3RJbiA9PT0gJ2Jvb2xlYW4nICYmIGZpbHRlcl9pdGVtLm5vdEluICl7XHJcbiAgICAgICAgICAgICAgaWYoICggaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBpZiggISggaXRlbV92YWx1ZS5pbmNsdWRlcyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSB8fCBpdGVtX3ZhbHVlID09PSBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICkgKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIGZhbHNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dC52YWx1ZU9mKCkpICYmIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUuZGF0ZXRpbWUgKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWU6IGFueSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XHJcblxyXG4gICAgICAgICAgdHJ5IHsgaXRlbV92YWx1ZSA9IG5ldyBEYXRlKGl0ZW1fdmFsdWUpOyB9IGNhdGNoIChlcnJvcikge31cclxuICAgICAgICAgIGlmKCBpdGVtX3ZhbHVlICYmICBpdGVtX3ZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oIGl0ZW1fdmFsdWUudmFsdWVPZigpKSApe1xyXG4gICAgICAgICAgICBsZXQgaXNfYWNjZXB0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkdF90YXJnZXQgICA9ICggKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpLmdldFRpbWUoKSApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwKTsgLyogKyAoMyAqIDYwICogNjAgKiAxMDAwKTsgKi9cclxuICAgICAgICAgICAgY29uc3QgZHRfY3VycmVudCAgPSAoIChpdGVtX3ZhbHVlKS5nZXRUaW1lKCkgKS50b1N0cmluZygpLnN1YnN0cmluZygwLCAxMCk7XHJcbiAgICAgICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5jb25kaXRpb24gKXtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA+ICBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA8ICBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndGU6ICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA8PSBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdGU6ICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA+PSBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA9PT0gTnVtYmVyKGR0X2N1cnJlbnQpICk7ICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubm90RXF1YWw6IGlzX2FjY2VwdCA9ICggTnVtYmVyKGR0X3RhcmdldCkgIT0gTnVtYmVyKGR0X2N1cnJlbnQpICk7ICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGlzX2FjY2VwdCA9ICggTnVtYmVyKGR0X3RhcmdldCkgPT0gTnVtYmVyKGR0X2N1cnJlbnQpICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gTnVtYmVyKGl0ZW1fdmFsdWUpICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoICFpc19hY2NlcHQgKXtcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICBpZiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAmJiB0eXBlb2YgTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSAnbnVtYmVyJyAmJiAoIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUubnVtYmVyIHx8IGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUuZGF0ZSApICl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgPSBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCk7XHJcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XHJcblxyXG4gICAgICAgICAgaWYoIHR5cGVvZiBOdW1iZXIoaXRlbV92YWx1ZSkgPT09ICdudW1iZXInICl7ICAgXHJcbiAgICAgICAgICAgIGl0ZW1fdmFsdWUgPSBOdW1iZXIoaXRlbV92YWx1ZSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBpc19hY2NlcHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLmNvbmRpdGlvbiApe1xyXG5cclxuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPiAgTnVtYmVyKGl0ZW1fdmFsdWUpICk7ICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubHQ6ICAgIGlzX2FjY2VwdCA9ICggTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIDwgIE51bWJlcihpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmd0ZTogICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA8PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0ZTogICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA+PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gKCBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09IE51bWJlcihpdGVtX3ZhbHVlKSApOyBicmVhazsgXHJcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLm5vdEVxdWFsOiBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSAhPSBOdW1iZXIoaXRlbV92YWx1ZSkgKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIGlzX2FjY2VwdCA9ICggTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiggIWlzX2FjY2VwdCApe1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiggdHlwZW9mIChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gJ2Jvb2xlYW4nICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgPT09IHRydWUgKXtcclxuXHJcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZTogYW55ID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgJiYgKGl0ZW1fdmFsdWUpLmxlbmd0aCA+IDAgKXsgIFxyXG4gICAgICAgICAgICBsZXQgcXRkX2lzX3RydWUgPSAwOyAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAoKGl0ZW1fdmFsdWUpLmxlbmd0aCk7IGkrKyApe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtX3ZhbHVlW2ldO1xyXG4gICAgICAgICAgICAgIGlmKCBpdGVtID09PSBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICl7XHJcbiAgICAgICAgICAgICAgICBxdGRfaXNfdHJ1ZSsrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiggcXRkX2lzX3RydWUgPT09IDAgKXtcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZiggISggaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIH1cclxuXHJcbiAgICB9IC8vIGVuZCBmb3JcclxuICAgIFxyXG4gICAgdGhpcy50b1Jlc3VsdCgpO1xyXG4gICAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9SZXN1bHQoKXtcclxuXHJcblxyXG4gICAgY29uc3Qgc2VhcmNoX2RhdGEgPSBbXTtcclxuXHJcbiAgICBsZXQgaXNfZmlsdGVyID0gZmFsc2U7XHJcbiAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaSsrICl7XHJcbiAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAmJiB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAhPT0gJycgKXtcclxuICAgICAgICBpc19maWx0ZXIgPSB0cnVlOyBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKCBpc19maWx0ZXIgKXtcclxuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5kYXRhKS5sZW5ndGg7IGkrKyApe1xyXG4gICAgICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2ldICYmIHRoaXMuZGF0YVtpXVsndGNfZmlsdGVyX2FjY2VwdCddICl7XHJcbiAgICAgICAgICAoc2VhcmNoX2RhdGEpLnB1c2godGhpcy5kYXRhW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucmVzdWx0X2FjY2VwdChzZWFyY2hfZGF0YSk7XHJcbiAgICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7Li4udGhpcy5maWx0ZXJzfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3VsdF9hY2NlcHQodGhpcy5kYXRhKTtcclxuICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7Li4udGhpcy5maWx0ZXJzfSk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhSW5kZXgoaW5kZXg6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4gKXtcclxuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2luZGV4XSApe1xyXG4gICAgICB0aGlzLmRhdGFbaW5kZXhdWyd0Y19maWx0ZXJfYWNjZXB0J10gPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc3VsdF9hY2NlcHQoZGF0YTogYW55KXtcclxuICAgIGlmKCAhdGhpcy51c2VGaWx0ZXJBY2NlcHQgJiYgZGF0YSAmJiAoZGF0YSkubGVuZ3RoID4gMCApe1xyXG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8IChkYXRhKS5sZW5ndGg7IGkrKyApe1xyXG4gICAgICAgIGRlbGV0ZSBkYXRhW2ldWyd0Y19maWx0ZXJfYWNjZXB0J107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucmVzdWx0LmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwic2hvd19maWx0ZXJzXCIgY2xhc3M9XCJ0Y2xvdWQtdWktZmlsdGVycyBhcmVhLWZpbHRlclwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS50eXBlIHx8IChpdGVtLnR5cGUgJiYgaXRlbS50eXBlICE9PSAnYm9vbGVhbicpXCI+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZGF0ZS1sb2NhbCdcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dCB0eXBlLXt7aXRlbS50eXBlfX0gYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb24gdGMtdGl0bGUtZWxsaXBzaXMgYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIHRpdGxlPVwie3sgaXRlbS5kZXNjcmlwdGlvbiB9fVwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiKGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsICYmIGl0ZW0udmFsdWUgIT09ICcnKVwiIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT4mbmJzcDt7eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC10eXBlLXt7aXRlbS50eXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRjbG91ZC11aS1kYXRlcGlja2VyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVJbnB1dF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hJbihpdGVtLCBfaW5wdXQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGNsb3VkLXVpLWRhdGVwaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCIhKGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsICYmIGl0ZW0udmFsdWUgIT09ICcnKVwiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgaXRlbS5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkOyBpdGVtLnZhbHVlID0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgIT09ICdkYXRlLWxvY2FsJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGl0ZW0uaWQgPT09ICdzdGFydCcgfHwgaXRlbS5pZCA9PT0gJ3N0b3AnKSAmJiB1c2VSYW5nZURhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQRVJJT0QgUkFOR0UgREFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaWQgPT09ICdzdGFydCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtZmlsdGVyLWlucHV0IHR5cGUte3tpdGVtLnR5cGV9fSBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytzdGFydF9zdG9wX3dpZHRoKycnK3N0YXJ0X3N0b3BfdW5kIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpcyBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgdGl0bGU9XCJ7eyBpdGVtLmRlc2NyaXB0aW9uIH19XCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCIoX3JhbmdlX2RhdGUgJiYgX3JhbmdlX2RhdGUucmVzdWx0ICYmIF9yYW5nZV9kYXRlLnJlc3VsdC5zdGFydCAmJiBfcmFuZ2VfZGF0ZS5yZXN1bHQuc3RvcCApXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyYW5nZS1kYXRlICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19yYW5nZV9kYXRlIG5nTW9kZWwgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcF09XCJpdGVtLmRlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvblN0YXJ0XT1cImRlc2NyaXB0aW9uU3RhcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25TdG9wXT1cImRlc2NyaXB0aW9uU3RvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwic2VhcmNoSW5SYW5nZShfcmFuZ2VfZGF0ZSk7IHNlYXJjaEluKGl0ZW0sIF9yYW5nZV9kYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmFuZ2UtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ3N0YXJ0J1wiICNfaW5wdXQgbmFtZT1cImlucHV0X3t7aSsxfX1cIiB0eXBlPVwiaGlkZGVuXCIgWyhuZ01vZGVsKV09XCJzdGFydF92YWx1ZVwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIml0ZW0uaWQgPT09ICdzdG9wJ1wiICNfaW5wdXQgbmFtZT1cImlucHV0X3t7aSsxfX1cIiB0eXBlPVwiaGlkZGVuXCIgWyhuZ01vZGVsKV09XCJzdG9wX3ZhbHVlXCI+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5pZCB8fCAhdXNlUmFuZ2VEYXRlXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dCB0eXBlLXt7aXRlbS50eXBlfX0gYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpcyBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgdGl0bGU9XCJ7eyBpdGVtLmRlc2NyaXB0aW9uIH19XCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCIoaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0udmFsdWUgIT09IG51bGwgJiYgaXRlbS52YWx1ZSAhPT0gJycpXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtdHlwZS17e2l0ZW0udHlwZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlT3B0aW9uc0RhdGVUaW1lXT1cIihpdGVtICYmIGl0ZW0udXNlT3B0aW9uc0RhdGVUaW1lKSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudENoYW5nZSk9XCJzZWFyY2hJbihpdGVtLCBfaW5wdXQpXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNsZWFyLWZpbHRlci10ZXh0XCIgW2NsYXNzLnRvLWhpZGVdPVwiIShpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXRlbS52YWx1ZSAhPT0gbnVsbCAmJiBpdGVtLnZhbHVlICE9PSAnJylcIiAoY2xpY2spPVwic2VhcmNoSW4oaXRlbSwgbnVsbCk7IGl0ZW0uc2VhcmNoVGV4dCA9IHVuZGVmaW5lZDsgaXRlbS52YWx1ZSA9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlICE9PSAnc2VsZWN0JyAmJiBpdGVtLnR5cGUgIT09ICdkYXRldGltZS1sb2NhbCcgJiYgaXRlbS50eXBlICE9PSAnZGF0ZS1sb2NhbCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtZmlsdGVyLWlucHV0IHR5cGUte3tpdGVtLnR5cGV9fSBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytpdGVtLndpZHRoIDogJydcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb24gdGMtdGl0bGUtZWxsaXBzaXMgYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIHRpdGxlPVwie3sgaXRlbS5kZXNjcmlwdGlvbiB9fVwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiX2lucHV0LnZhbHVlICE9PSAnJ1wiIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT4mbmJzcDt7eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC10eXBlLXt7aXRlbS50eXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgKGl0ZW0ucGxhY2Vob2xkZXIgIT09ICcnKSA/IGl0ZW0ucGxhY2Vob2xkZXIgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IChpdGVtLnR5cGUgPT09ICdudW1iZXInKSA/ICd0ZXh0JyA6IGl0ZW0udHlwZSB9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0Yy1mb3JtLWNvbnRyb2xcIiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaEluKGl0ZW0sICRldmVudClcIj4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNsZWFyLWZpbHRlci10ZXh0XCIgW2NsYXNzLnRvLWhpZGVdPVwiX2lucHV0LnZhbHVlID09PSAnJ1wiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgX2lucHV0LnZhbHVlID0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdzZWxlY3QnICYmIGl0ZW0uZGF0YSAmJiAoaXRlbS5kYXRhKS5sZW5ndGggPiAwXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXQgdHlwZS17e2l0ZW0udHlwZX19IGJveC10eXBlLXt7aXRlbS50eXBlfX1cIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK2l0ZW0ud2lkdGggOiAnJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpcyBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgdGl0bGU9XCJ7eyBpdGVtLmRlc2NyaXB0aW9uIH19XCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCJfaW5wdXQudmFsdWUgIT09ICcnXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF97e2krMX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2IG9mIGl0ZW0uZGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInYudmFsdWVcIj57eyB2LmRlc2NyaXB0aW9uIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSAmJiBpdGVtLnR5cGUgPT09ICdib29sZWFuJ1wiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXRcIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK2l0ZW0ud2lkdGggOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb24gdGMtdGl0bGUtZWxsaXBzaXNcIiB0aXRsZT1cInt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cIiB0aXRsZT1cInt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC5jaGVja2VkID09PSB0cnVlXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWlucHV0LWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgKGl0ZW0ucGxhY2Vob2xkZXIgIT09ICcnKSA/IGl0ZW0ucGxhY2Vob2xkZXIgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sIF9pbnB1dC5jaGVja2VkKVwiPiAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtYi0xIG1yLTFcIiAqbmdJZj1cInVzZUJ1dHRvblN1Ym1pdFwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGMtYnRuIHt7IGJ0blN1Ym1pdENsYXNzIH19XCIgKGNsaWNrKT1cInRvU3VibWl0KClcIiA+e3sgc3VibWl0VGV4dCB9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbjwhLS0gPHByZT57eyBpbnB1dHMgfCBqc29uIH19PC9wcmU+IC0tPlxyXG48IS0tIDxwcmU+IHt7IGRhdGEgfCBqc29uIH19IDwvcHJlPiAtLT5cclxuXHJcbjwhLS0gPHA+RklMVEVSUzwvcD48cHJlPiB7eyBmaWx0ZXJzIHwganNvbiB9fTwvcHJlPiAtLT5cclxuXHJcbjwhLS1cclxuICAgIDxwcmU+c3RhcnRfc3RvcDoge3sgc3RhcnRfc3RvcCB9fTwvcHJlPlxyXG4gICAgPHByZT5zdGFydF9zdG9wX3dpZHRoOiB7eyBzdGFydF9zdG9wX3dpZHRoIH19PC9wcmU+XHJcbiAgICA8cHJlPnN0YXJ0X3N0b3BfdW5kOiB7eyBzdGFydF9zdG9wX3VuZCB9fTwvcHJlPlxyXG4tLT4iXX0=
|
|
534
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBQUUsV0FBVyxFQUFpQixhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQU9oRixNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLElBQWEsSUFBSSxDQUFDLElBQVM7UUFDekIsaURBQWlEO0lBQ25ELENBQUM7SUFDRCxJQUFJLElBQUksS0FBUyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBR3JDLElBQWEsT0FBTyxDQUFDLE9BQVk7UUFDL0IsMEJBQTBCO0lBQzVCLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBUyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRzNDLElBQWEsVUFBVSxDQUFDLENBQVM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBQ0QsSUFBSSxVQUFVLEtBQVcsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQXVCbkQsWUFDVSxRQUFrQjtRQUFsQixh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QyxTQUFTO3VCQUFDLGFBQWE7Z0JBU1gsSUFBSTtzQkFBaEIsS0FBSztnQkFNTyxPQUFPO3NCQUFuQixLQUFLO2dCQU1PLFVBQVU7c0JBQXRCLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUQ0NvbmRpdGlvbiwgVENEYXRhRmlsdGVycywgVENGaWx0ZXJzVHlwZSB9IGZyb20gJy4vdGNsb3VkLXVpLWZpbHRlcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Y2xvdWQtdWktZmlsdGVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90Y2xvdWQtdWktZmlsdGVycy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaUZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIGRhdGVwaWNrZXJzID0gW10gYXMgYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCdfZm9ybXVsYXJpbycpICBfZm9ybXVsYXJpbzogTmdGb3JtIHwgdW5kZWZpbmVkO1xyXG5cclxuICBpbnB1dHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHNob3dfZmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWFyY2hfZGF0YTogYW55IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF9kYXRhOiBhbnkgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2V0IGRhdGEoZGF0YTogYW55KXtcclxuICAgIC8vIHRoaXMuX2RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICB9XHJcbiAgZ2V0IGRhdGEoKTogYW55eyByZXR1cm4gdGhpcy5fZGF0YTsgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXJzOiBUQ0RhdGFGaWx0ZXJzIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNldCBmaWx0ZXJzKGZpbHRlcnM6IGFueSl7XHJcbiAgICAvL3RoaXMuX2ZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gIH1cclxuICBnZXQgZmlsdGVycygpOiBhbnl7IHJldHVybiB0aGlzLl9maWx0ZXJzOyB9XHJcblxyXG4gIHByaXZhdGUgX3N1Ym1pdFRleHQ6IHN0cmluZyA9ICdGaWx0cmFyJztcclxuICBASW5wdXQoKSBzZXQgc3VibWl0VGV4dCh2OiBzdHJpbmcpeyBcclxuICAgIGlmKCB2ICYmIHYgIT09IHRoaXMuX3N1Ym1pdFRleHQgKXtcclxuICAgICAgdGhpcy5fc3VibWl0VGV4dCA9IHY7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzdWJtaXRUZXh0KCk6c3RyaW5neyByZXR1cm4gdGhpcy5fc3VibWl0VGV4dDsgfVxyXG5cclxuICBASW5wdXQoKSBidG5TdWJtaXRDbGFzczogc3RyaW5nID0gJ3RjLWJ0bi1wcmltYXJ5JztcclxuICBASW5wdXQoKSB1c2VPbkNoYW5nZVN1Ym1pdDogYm9vbGVhbiA9IHRydWU7IC8vIHVzZU9uQ2hhbmdlU3VibWl0IC0gU3VibWl0IGF1dG9tYXRpY28gcXVhbmRvIGZvciBhbHRlcmFkbyBxdWFucXVlciBpbnB1dFxyXG4gIEBJbnB1dCgpIHVzZUJ1dHRvblN1Ym1pdDogYm9vbGVhbiA9IGZhbHNlOyAvLyB1c2VCdXR0b25TdWJtaXQgLSBFeGliZSB1bSBib3TDo28gZGUgc3VibWl0IGUgbsOjbyBleGVjdXRhIGEgYnVzY2EgYXV0b21hdGljYW1lbnRlXHJcbiAgQElucHV0KCkgdXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZTogYm9vbGVhbiA9IHRydWU7IC8vIHVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmUgLSBOw6NvIHZhbGlkYSBjYWl4YSBhbHRhIG91IGJhaXhhIGUgY2FyYWN0ZXJlcyBlc3BlY2lhaXNcclxuICBASW5wdXQoKSB1c2VSYW5nZURhdGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHVzZUZpbHRlckFjY2VwdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgcmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGRlc2NyaXB0aW9uU3RhcnQ6IHN0cmluZyA9ICcnO1xyXG4gIGRlc2NyaXB0aW9uU3RvcDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByaXZhdGUgZmlyc3RfYWN0aXZlX2ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzdGFydF9zdG9wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhcnRfc3RvcF93aWR0aDogbnVtYmVyID0gMDtcclxuICBzdGFydF9zdG9wX3VuZDogc3RyaW5nID0gJyc7IC8vIHB4IG91ICVcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGVwaXBlOiBEYXRlUGlwZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldLnZhbHVlICl7XHJcbiAgICAgICAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0udHlwZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyApe1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCA9IG5ldyBEYXRlKCBgJHt0aGlzLmZpbHRlcnNbaV0udmFsdWV9YCApO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCA9IHRoaXMuZmlsdGVyc1tpXS52YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmZpcnN0X2FjdGl2ZV9maWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gICAgICBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0X3N0b3AgPSAodGhpcy51c2VSYW5nZURhdGUpID8gdGhpcy5pc19zdGFydF9zdG9wX2RhdGV0aW1lKCkgOiBmYWxzZTtcclxuICAgICAgdGhpcy50b1N1Ym1pdCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc19zdGFydF9zdG9wX2RhdGV0aW1lKCl7XHJcbiAgICBsZXQgc3RhcnQgPSBmYWxzZTtcclxuICAgIGxldCBzdG9wID0gZmFsc2U7XHJcbiAgICBpZiggdGhpcy5maWx0ZXJzICYmICh0aGlzLmZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcclxuICAgICAgdGhpcy5zdGFydF9zdG9wX3dpZHRoID0gMDtcclxuICAgICAgZm9yKGxldCBpID0gMDsgaSA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldLmlkID09PSAnc3RhcnQnICl7XHJcbiAgICAgICAgICBzdGFydCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0X3N0b3Bfd2lkdGggKz0gdGhpcy5nZXRWYWx1ZVdpZHRoKHRoaXMuZmlsdGVyc1tpXS53aWR0aCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0X3N0b3BfdW5kID0gdGhpcy5nZXRVbmlkYWRlKHRoaXMuZmlsdGVyc1tpXS53aWR0aCk7XHJcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uU3RhcnQgPSB0aGlzLmZpbHRlcnNbaV0uZGVzY3JpcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0uaWQgPT09ICdzdG9wJyApe1xyXG4gICAgICAgICAgc3RvcCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0X3N0b3Bfd2lkdGggKz0gdGhpcy5nZXRWYWx1ZVdpZHRoKHRoaXMuZmlsdGVyc1tpXS53aWR0aCk7XHJcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uU3RvcCA9IHRoaXMuZmlsdGVyc1tpXS5kZXNjcmlwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAoIHN0YXJ0ICYmIHN0b3AgKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlV2lkdGgodjogc3RyaW5nKTpudW1iZXIge1xyXG4gICAgbGV0IHVuZCA9IHRoaXMuZ2V0VW5pZGFkZSh2KTtcclxuICAgIHYgPSAodikucmVwbGFjZSh1bmQsICcnKTtcclxuICAgIHJldHVybiArKHYpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VW5pZGFkZSh2OiBzdHJpbmcpOnN0cmluZyB7XHJcbiAgICBsZXQgdW5kID0gJyUnO1xyXG4gICAgaWYoIHYgJiYgKHYpLmluY2x1ZGVzKCdweCcpICl7XHJcbiAgICAgIHVuZCA9ICdweCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kO1xyXG4gIH1cclxuIFxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7ICBcclxuICAgIFxyXG4gICAgaWYoIGNoYW5nZXMgJiYgY2hhbmdlc1snZGF0YSddICl7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiggdGhpcy5fZGF0YSAhPT0gZGF0YSApe1xyXG4gICAgICAgIHRoaXMuX2RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICB0aGlzLnNlYXJjaF9kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiggY2hhbmdlcyAmJiBjaGFuZ2VzWydmaWx0ZXJzJ10gKXtcclxuICAgICAgY29uc3QgZmlsdGVycyA9IGNoYW5nZXNbJ2ZpbHRlcnMnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmKCB0aGlzLl9maWx0ZXJzICE9PSBmaWx0ZXJzICl7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpO1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXQoKXtcclxuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5maWx0ZXJzICl7XHJcbiAgICAgIHRoaXMuc2hvd19maWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgaWYoIHRoaXMuZmlsdGVycyAmJiAodGhpcy5maWx0ZXJzKS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgKHRoaXMuZmlsdGVycykuZm9yRWFjaCgoZmlsdGVyOiBUQ0RhdGFGaWx0ZXJzKSA9PiB7ICAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEluKGZpbHRlciwgJ3N5bmMnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBcclxuICAgICAgaWYoICF0aGlzLnVzZU9uQ2hhbmdlU3VibWl0ICl7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRfYWNjZXB0KHRoaXMuZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKCB0aGlzLnVzZU9uQ2hhbmdlU3VibWl0IHx8IHRoaXMudXNlQnV0dG9uU3VibWl0ICl7XHJcbiAgICAgICAgdGhpcy5zdGFydF9maWx0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBub3JtYWxpemUodGV4dDogYW55KTogc3RyaW5ne1xyXG4gICAgaWYoIHRoaXMudXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZSApe1xyXG4gICAgICBjb25zdCB2ID0gKCAoIChgJHt0ZXh0fWApLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIikgKS50cmltKCkgKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICByZXR1cm4gdjtcclxuICAgIH1cclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcbiAgdG9TdWJtaXQoKXtcclxuICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdFN1Ym1pdEZpbHRlcnMoKXtcclxuICAgIGxldCBmaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlcnMpKTtcclxuICAgIGlmKCBmaWx0ZXJzICYmIChmaWx0ZXJzKS5sZW5ndGggPiAwICl7XHJcbiAgICAgIChmaWx0ZXJzKS5mb3JFYWNoKChmaWx0ZXI6IFRDRGF0YUZpbHRlcnMsIGk6IG51bWJlcikgPT4ge1xyXG5cclxuICAgICAgICBpZiggZmlsdGVyLndpZHRoICl7IGRlbGV0ZShmaWx0ZXJzW2ldLndpZHRoKTsgfVxyXG4gICAgICAgIGlmKCBmaWx0ZXIucGxhY2Vob2xkZXIgKXsgZGVsZXRlKGZpbHRlcnNbaV0ucGxhY2Vob2xkZXIpOyB9XHJcbiAgICAgICAgaWYoIGZpbHRlci5kZXNjcmlwdGlvbiApeyBkZWxldGUoZmlsdGVyc1tpXS5kZXNjcmlwdGlvbik7IH1cclxuXHJcbiAgICAgICAgaWYoICghZmlsdGVyLnNlYXJjaFRleHQgfHwgZmlsdGVyLnNlYXJjaFRleHQgJiYgZmlsdGVyLnNlYXJjaFRleHQgPT09ICcnKSAmJiBmaWx0ZXIudHlwZSAhPT0gXCJib29sZWFuXCIgKXtcclxuICAgICAgICAgIGRlbGV0ZShmaWx0ZXJzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoIGZpbHRlci50eXBlID09PSBcImJvb2xlYW5cIiApe1xyXG4gICAgICAgICAgaWYoICFmaWx0ZXIuc2VhcmNoVGV4dCApe1xyXG4gICAgICAgICAgICBmaWx0ZXIuc2VhcmNoVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9ICAgXHJcbiAgICBcclxuICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZpbHRlcnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgY29sbGVjdGlvbkZpbmQob2JqOiBhbnksIHBhdGg6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBwYXRoLnNwbGl0KFwiLlwiKTtcclxuICAgIGxldCBjdXJyZW50ID0gb2JqO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qga2V5ID0gcGF0aEFycmF5W2ldO1xyXG5cclxuICAgICAgaWYgKGtleS5pbmNsdWRlcygnWycpICYmIGtleS5pbmNsdWRlcygnXScpKSB7XHJcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBwYXRoQXJyYXkuc2xpY2UoaSArIDEpO1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0ga2V5LnN1YnN0cmluZyhrZXkuaW5kZXhPZignWycpICsgMSwga2V5LmluZGV4T2YoJ10nKSk7XHJcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5pbmRleE9mKCdbJykpO1xyXG4gICAgICAgIGlmKCBjdXJyZW50ICYmIGN1cnJlbnRbYXJyYXlLZXldICYmIGN1cnJlbnRbYXJyYXlLZXldW2luZGV4XSApe1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbkZpbmQoY3VycmVudFthcnJheUtleV1baW5kZXhdLCBuZXh0S2V5cy5qb2luKFwiLlwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgaWYgKGtleS5pbmNsdWRlcyhcIltdXCIpKSB7XHJcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkucmVwbGFjZShcIltdXCIsIFwiXCIpO1xyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2FycmF5S2V5XSB8fCBbXTtcclxuICAgICAgICBjb25zdCBuZXh0S2V5cyA9IHBhdGhBcnJheS5zbGljZShpICsgMSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY3VycmVudC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY29sbGVjdGlvbkZpbmQoY3VycmVudFtqXSwgbmV4dEtleXMuam9pbihcIi5cIikpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOyBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiggIWN1cnJlbnQgfHwgKGN1cnJlbnQgJiYgIWN1cnJlbnRba2V5XSkgKXtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XHJcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjdXJyZW50O1xyXG4gIH1cclxuICAgIFxyXG4gIGZpcnN0OiBib29sZWFuID0gdHJ1ZTtcclxuICBzdGFydF9maWx0ZXJfZmM6IGFueSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgc3RhcnRfdmFsdWU6IGFueSB8IHVuZGVmaW5lZDtcclxuICBzdG9wX3ZhbHVlOiBhbnkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHNlYXJjaEluUmFuZ2UoIHJhbmdlX2RhdGU6IGFueSl7XHJcbiAgICBcclxuICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xyXG5cclxuICAgICAgbGV0IGV2ZW50ID0ge30gYXMgYW55OyBcclxuICAgICAgZXZlbnQuZGF0ZXBpY2tlcnRpbWUgPSB0cnVlO1xyXG5cclxuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGkrKyApe1xyXG5cclxuICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldICYmIHRoaXMuZmlsdGVyc1tpXS5pZCAmJiB0aGlzLmZpbHRlcnNbaV0uaWQgPT09ICdzdGFydCcgKXtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyc1tpXS52YWx1ZSA9IHJhbmdlX2RhdGU/LnJlc3VsdD8uc3RhcnQhO1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgPSByYW5nZV9kYXRlPy5yZXN1bHQ/LnN0YXJ0ITtcclxuICAgICAgICAgIGV2ZW50LmlubmVyVmFsdWUgPSB0aGlzLnN0YXJ0X3ZhbHVlID0gcmFuZ2VfZGF0ZT8ucmVzdWx0Py5zdGFydCE7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEluKHRoaXMuZmlsdGVyc1tpXSwgZXZlbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXSAmJiB0aGlzLmZpbHRlcnNbaV0uaWQgJiYgdGhpcy5maWx0ZXJzW2ldLmlkID09PSAnc3RvcCcgKXtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyc1tpXS52YWx1ZSA9IHJhbmdlX2RhdGU/LnJlc3VsdD8uc3RvcCE7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCA9IHJhbmdlX2RhdGU/LnJlc3VsdD8uc3RvcCE7XHJcbiAgICAgICAgICBldmVudC5pbm5lclZhbHVlID0gdGhpcy5zdG9wX3ZhbHVlID0gcmFuZ2VfZGF0ZT8ucmVzdWx0Py5zdG9wITtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoSW4odGhpcy5maWx0ZXJzW2ldLCBldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKCB0aGlzLmZpcnN0IHx8IHRoaXMudXNlT25DaGFuZ2VTdWJtaXQgKXtcclxuICAgICAgICB0aGlzLnRvU3VibWl0KCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICB0aGlzLmZpcnN0ID0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgY29udmVydERhdGFUb051bWJlcihkYXRhU3RyaW5nOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgW2RpYSwgbWVzLCBhbm9dID0gZGF0YVN0cmluZy5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gKyhgJHthbm99JHttZXN9JHtkaWF9YCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoSW4oaXRlbTogVENEYXRhRmlsdGVycywgZXZlbnQ/OiBhbnkpe1xyXG5cclxuICAgIFxyXG5cclxuICAgIHRoaXMuc3RhcnRfZmlsdGVyX2ZjID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuXHJcbiAgICBpZiggZXZlbnQgPT09ICdzeW5jJyAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCB0eXBlb2YgZXZlbnQgPT09ICdib29sZWFuJyAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggKGV2ZW50ID09PSB1bmRlZmluZWQgfHwgZXZlbnQgPT09IG51bGwgfHwgZXZlbnQgPT09ICcnKSAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggZXZlbnQ/LmRhdGVwaWNrZXJ0aW1lICAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ/LmlubmVyVmFsdWU7ICAgICAgXHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihldmVudD8udGFyZ2V0Py52YWx1ZSAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gdGhpcy5ub3JtYWxpemUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKGV2ZW50Py50YXJnZXQ/LnZhbHVlID09PSAnJyAmJiBpc1ZhbGlkICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggaXRlbS50eXBlID09PSAnZGF0ZS1sb2NhbCcgJiYgaXRlbS52YWx1ZSApe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGAke3RoaXMuY29udmVydERhdGFUb051bWJlciggaXRlbS52YWx1ZSApfWA7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggZXZlbnQgJiYgZXZlbnQucmVzdWx0ICYmICggZXZlbnQucmVzdWx0LnN0YXJ0IHx8IGV2ZW50LnJlc3VsdC5zdG9wICkgKXtcclxuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICBcclxuICAgIGlmKCB0aGlzLnVzZU9uQ2hhbmdlU3VibWl0IHx8IHRoaXMuZmlyc3RfYWN0aXZlX2ZpbHRlciApeyAgICAgIFxyXG4gICAgICB0aGlzLnN0YXJ0X2ZpbHRlcl9mYyA9IHRoaXMuc3RhcnRfZmlsdGVyKCk7XHJcbiAgICAgIHRoaXMuZmlyc3RfYWN0aXZlX2ZpbHRlciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCAhdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcclxuICAgICAgdGhpcy5lbWl0U3VibWl0RmlsdGVycygpO1xyXG4gICAgfSBcclxuICB9XHJcblxyXG4gIGdldERhdGVVVEMoZHQ6IGFueSl7XHJcbiAgICBjb25zdCBhbm8gPSBkdC5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbWVzID0gZHQuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGRpYSA9IGR0LmdldERhdGUoKTtcclxuICAgIGNvbnN0IGhvcmFzID0gZHQuZ2V0SG91cnMoKTtcclxuICAgIGNvbnN0IG1pbnV0b3MgPSBkdC5nZXRNaW51dGVzKCk7XHJcbiAgICBjb25zdCBzZWd1bmRvcyA9IGR0LmdldFNlY29uZHMoKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhhbm8sIG1lcywgZGlhLCBob3JhcywgbWludXRvcywgc2VndW5kb3MpKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIHN0YXJ0X2ZpbHRlcigpe1xyXG4gICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5kYXRhKS5sZW5ndGg7IGkrKyApe1xyXG5cclxuICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgdHJ1ZSk7XHJcblxyXG4gICAgICBmb3IoIGxldCBqID0gMDsgaiA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaisrICl7ICAgICAgICBcclxuICAgICAgICBjb25zdCBmaWx0ZXJfaXRlbSA9IHRoaXMuZmlsdGVyc1tqXTsgICBcclxuXHJcbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgdHlwZW9mIChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gJ3N0cmluZycgJiYgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAhPT0gJycgJiYgZmlsdGVyX2l0ZW0udHlwZSAhPT0gVENGaWx0ZXJzVHlwZS5udW1iZXIgJiYgZmlsdGVyX2l0ZW0udHlwZSAhPT0gVENGaWx0ZXJzVHlwZS5kYXRlICl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgPSB0aGlzLm5vcm1hbGl6ZShmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KTsgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWUgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKHRoaXMuZGF0YVtpXSwgZmlsdGVyX2l0ZW0uc2VhcmNoSW4pO1xyXG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgKXtcclxuICAgICAgICAgICAgaXRlbV92YWx1ZSA9IHRoaXMubm9ybWFsaXplKGl0ZW1fdmFsdWUpOyAgIFxyXG5cclxuICAgICAgICAgICAgaWYoIHR5cGVvZiBmaWx0ZXJfaXRlbS5ub3RJbiA9PT0gJ2Jvb2xlYW4nICYmIGZpbHRlcl9pdGVtLm5vdEluICl7XHJcbiAgICAgICAgICAgICAgaWYoICggaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuXHJcbiAgICAgICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUuc2VsZWN0ICl7XHJcbiAgICAgICAgICAgICAgICAvLyBFeGNsdXNpdm8gcGFyYSBzZWxlY3RcclxuICAgICAgICAgICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5kYXRhICYmIChmaWx0ZXJfaXRlbS5kYXRhKS5sZW5ndGggPiAwICl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyB1c28gZG8gc2VsZWN0IGNvbSBvIG5vdFZhbHVlczogc3RyaW5nW11cclxuICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfb3B0aW9uID0gW107XHJcbiAgICAgICAgICAgICAgICAgIGZvciggbGV0IGsgPSAwOyBrIDwgKGZpbHRlcl9pdGVtLmRhdGEpLmxlbmd0aDsgaysrICl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga19pdGVtID0gZmlsdGVyX2l0ZW0uZGF0YVtrXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiggYCR7a19pdGVtPy52YWx1ZX1gID09PSBgJHtmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0fWAgICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X29wdGlvbiA9IGtfaXRlbT8ubm90VmFsdWVzITtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgaWYoIGN1cnJlbnRfb3B0aW9uICYmIChjdXJyZW50X29wdGlvbikubGVuZ3RoID4gMCApe1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciggbGV0IHYgPSAwOyB2IDwgKGN1cnJlbnRfb3B0aW9uKS5sZW5ndGg7IHYrKyApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdl9pdGVtID0gY3VycmVudF9vcHRpb25bdl07ICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYoICggaXRlbV92YWx1ZSA9PT0gdl9pdGVtICkgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHVzbyBub3JtYWwgZG8gc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoICEoIGl0ZW1fdmFsdWUgPT09IGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgaWYoICEoIGl0ZW1fdmFsdWUuaW5jbHVkZXMoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgfHwgaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dC52YWx1ZU9mKCkpICYmIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUuZGF0ZXRpbWUgKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWU6IGFueSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XHJcblxyXG4gICAgICAgICAgdHJ5IHsgaXRlbV92YWx1ZSA9IG5ldyBEYXRlKGl0ZW1fdmFsdWUpOyB9IGNhdGNoIChlcnJvcikge31cclxuICAgICAgICAgIGlmKCBpdGVtX3ZhbHVlICYmICBpdGVtX3ZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oIGl0ZW1fdmFsdWUudmFsdWVPZigpKSApe1xyXG4gICAgICAgICAgICBsZXQgaXNfYWNjZXB0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkdF90YXJnZXQgICA9ICggKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpLmdldFRpbWUoKSApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwKTsgLyogKyAoMyAqIDYwICogNjAgKiAxMDAwKTsgKi9cclxuICAgICAgICAgICAgY29uc3QgZHRfY3VycmVudCAgPSAoIChpdGVtX3ZhbHVlKS5nZXRUaW1lKCkgKS50b1N0cmluZygpLnN1YnN0cmluZygwLCAxMCk7XHJcbiAgICAgICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5jb25kaXRpb24gKXtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA+ICBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA8ICBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndGU6ICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA8PSBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdGU6ICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA+PSBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA9PT0gTnVtYmVyKGR0X2N1cnJlbnQpICk7ICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubm90RXF1YWw6IGlzX2FjY2VwdCA9ICggTnVtYmVyKGR0X3RhcmdldCkgIT0gTnVtYmVyKGR0X2N1cnJlbnQpICk7ICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGlzX2FjY2VwdCA9ICggTnVtYmVyKGR0X3RhcmdldCkgPT0gTnVtYmVyKGR0X2N1cnJlbnQpICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gTnVtYmVyKGl0ZW1fdmFsdWUpICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoICFpc19hY2NlcHQgKXtcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICBpZiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAmJiB0eXBlb2YgTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSAnbnVtYmVyJyAmJiAoIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUubnVtYmVyIHx8IGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUuZGF0ZSApICl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgPSBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCk7XHJcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XHJcblxyXG4gICAgICAgICAgaWYoIHR5cGVvZiBOdW1iZXIoaXRlbV92YWx1ZSkgPT09ICdudW1iZXInICl7ICAgXHJcbiAgICAgICAgICAgIGl0ZW1fdmFsdWUgPSBOdW1iZXIoaXRlbV92YWx1ZSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBpc19hY2NlcHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLmNvbmRpdGlvbiApe1xyXG5cclxuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPiAgTnVtYmVyKGl0ZW1fdmFsdWUpICk7ICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubHQ6ICAgIGlzX2FjY2VwdCA9ICggTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIDwgIE51bWJlcihpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmd0ZTogICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA8PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0ZTogICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA+PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gKCBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09IE51bWJlcihpdGVtX3ZhbHVlKSApOyBicmVhazsgXHJcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLm5vdEVxdWFsOiBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSAhPSBOdW1iZXIoaXRlbV92YWx1ZSkgKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIGlzX2FjY2VwdCA9ICggTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiggIWlzX2FjY2VwdCApe1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiggdHlwZW9mIChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gJ2Jvb2xlYW4nICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgPT09IHRydWUgKXtcclxuXHJcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZTogYW55ID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgJiYgKGl0ZW1fdmFsdWUpLmxlbmd0aCA+IDAgKXsgIFxyXG4gICAgICAgICAgICBsZXQgcXRkX2lzX3RydWUgPSAwOyAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAoKGl0ZW1fdmFsdWUpLmxlbmd0aCk7IGkrKyApe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtX3ZhbHVlW2ldO1xyXG4gICAgICAgICAgICAgIGlmKCBpdGVtID09PSBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICl7XHJcbiAgICAgICAgICAgICAgICBxdGRfaXNfdHJ1ZSsrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiggcXRkX2lzX3RydWUgPT09IDAgKXtcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZiggISggaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIH1cclxuXHJcbiAgICB9IC8vIGVuZCBmb3JcclxuICAgIFxyXG4gICAgdGhpcy50b1Jlc3VsdCgpO1xyXG4gICAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9SZXN1bHQoKXtcclxuXHJcblxyXG4gICAgY29uc3Qgc2VhcmNoX2RhdGEgPSBbXTtcclxuXHJcbiAgICBsZXQgaXNfZmlsdGVyID0gZmFsc2U7XHJcbiAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaSsrICl7XHJcbiAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAmJiB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAhPT0gJycgKXtcclxuICAgICAgICBpc19maWx0ZXIgPSB0cnVlOyBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKCBpc19maWx0ZXIgKXtcclxuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5kYXRhKS5sZW5ndGg7IGkrKyApe1xyXG4gICAgICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2ldICYmIHRoaXMuZGF0YVtpXVsndGNfZmlsdGVyX2FjY2VwdCddICl7XHJcbiAgICAgICAgICAoc2VhcmNoX2RhdGEpLnB1c2godGhpcy5kYXRhW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucmVzdWx0X2FjY2VwdChzZWFyY2hfZGF0YSk7XHJcbiAgICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7Li4udGhpcy5maWx0ZXJzfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3VsdF9hY2NlcHQodGhpcy5kYXRhKTtcclxuICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7Li4udGhpcy5maWx0ZXJzfSk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhSW5kZXgoaW5kZXg6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4gKXtcclxuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2luZGV4XSApe1xyXG4gICAgICB0aGlzLmRhdGFbaW5kZXhdWyd0Y19maWx0ZXJfYWNjZXB0J10gPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc3VsdF9hY2NlcHQoZGF0YTogYW55KXtcclxuICAgIGlmKCAhdGhpcy51c2VGaWx0ZXJBY2NlcHQgJiYgZGF0YSAmJiAoZGF0YSkubGVuZ3RoID4gMCApe1xyXG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8IChkYXRhKS5sZW5ndGg7IGkrKyApe1xyXG4gICAgICAgIGRlbGV0ZSBkYXRhW2ldWyd0Y19maWx0ZXJfYWNjZXB0J107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucmVzdWx0LmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwic2hvd19maWx0ZXJzXCIgY2xhc3M9XCJ0Y2xvdWQtdWktZmlsdGVycyBhcmVhLWZpbHRlclwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS50eXBlIHx8IChpdGVtLnR5cGUgJiYgaXRlbS50eXBlICE9PSAnYm9vbGVhbicpXCI+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZGF0ZS1sb2NhbCdcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dCB0eXBlLXt7aXRlbS50eXBlfX0gYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb24gdGMtdGl0bGUtZWxsaXBzaXMgYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIHRpdGxlPVwie3sgaXRlbS5kZXNjcmlwdGlvbiB9fVwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiKGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsICYmIGl0ZW0udmFsdWUgIT09ICcnKVwiIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT4mbmJzcDt7eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC10eXBlLXt7aXRlbS50eXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRjbG91ZC11aS1kYXRlcGlja2VyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVJbnB1dF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hJbihpdGVtLCBfaW5wdXQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGNsb3VkLXVpLWRhdGVwaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCIhKGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsICYmIGl0ZW0udmFsdWUgIT09ICcnKVwiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgaXRlbS5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkOyBpdGVtLnZhbHVlID0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgIT09ICdkYXRlLWxvY2FsJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGl0ZW0uaWQgPT09ICdzdGFydCcgfHwgaXRlbS5pZCA9PT0gJ3N0b3AnKSAmJiB1c2VSYW5nZURhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQRVJJT0QgUkFOR0UgREFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaWQgPT09ICdzdGFydCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtZmlsdGVyLWlucHV0IHR5cGUte3tpdGVtLnR5cGV9fSBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytzdGFydF9zdG9wX3dpZHRoKycnK3N0YXJ0X3N0b3BfdW5kIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpcyBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgdGl0bGU9XCJ7eyBpdGVtLmRlc2NyaXB0aW9uIH19XCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCIoX3JhbmdlX2RhdGUgJiYgX3JhbmdlX2RhdGUucmVzdWx0ICYmIF9yYW5nZV9kYXRlLnJlc3VsdC5zdGFydCAmJiBfcmFuZ2VfZGF0ZS5yZXN1bHQuc3RvcCApXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyYW5nZS1kYXRlICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19yYW5nZV9kYXRlIG5nTW9kZWwgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcF09XCJpdGVtLmRlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvblN0YXJ0XT1cImRlc2NyaXB0aW9uU3RhcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25TdG9wXT1cImRlc2NyaXB0aW9uU3RvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwic2VhcmNoSW5SYW5nZShfcmFuZ2VfZGF0ZSk7IHNlYXJjaEluKGl0ZW0sIF9yYW5nZV9kYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmFuZ2UtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ3N0YXJ0J1wiICNfaW5wdXQgbmFtZT1cImlucHV0X3t7aSsxfX1cIiB0eXBlPVwiaGlkZGVuXCIgWyhuZ01vZGVsKV09XCJzdGFydF92YWx1ZVwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIml0ZW0uaWQgPT09ICdzdG9wJ1wiICNfaW5wdXQgbmFtZT1cImlucHV0X3t7aSsxfX1cIiB0eXBlPVwiaGlkZGVuXCIgWyhuZ01vZGVsKV09XCJzdG9wX3ZhbHVlXCI+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5pZCB8fCAhdXNlUmFuZ2VEYXRlXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dCB0eXBlLXt7aXRlbS50eXBlfX0gYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpcyBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgdGl0bGU9XCJ7eyBpdGVtLmRlc2NyaXB0aW9uIH19XCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCIoaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0udmFsdWUgIT09IG51bGwgJiYgaXRlbS52YWx1ZSAhPT0gJycpXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtdHlwZS17e2l0ZW0udHlwZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlT3B0aW9uc0RhdGVUaW1lXT1cIihpdGVtICYmIGl0ZW0udXNlT3B0aW9uc0RhdGVUaW1lKSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudENoYW5nZSk9XCJzZWFyY2hJbihpdGVtLCBfaW5wdXQpXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNsZWFyLWZpbHRlci10ZXh0XCIgW2NsYXNzLnRvLWhpZGVdPVwiIShpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXRlbS52YWx1ZSAhPT0gbnVsbCAmJiBpdGVtLnZhbHVlICE9PSAnJylcIiAoY2xpY2spPVwic2VhcmNoSW4oaXRlbSwgbnVsbCk7IGl0ZW0uc2VhcmNoVGV4dCA9IHVuZGVmaW5lZDsgaXRlbS52YWx1ZSA9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlICE9PSAnc2VsZWN0JyAmJiBpdGVtLnR5cGUgIT09ICdkYXRldGltZS1sb2NhbCcgJiYgaXRlbS50eXBlICE9PSAnZGF0ZS1sb2NhbCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtZmlsdGVyLWlucHV0IHR5cGUte3tpdGVtLnR5cGV9fSBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytpdGVtLndpZHRoIDogJydcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb24gdGMtdGl0bGUtZWxsaXBzaXMgYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIHRpdGxlPVwie3sgaXRlbS5kZXNjcmlwdGlvbiB9fVwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiX2lucHV0LnZhbHVlICE9PSAnJ1wiIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT4mbmJzcDt7eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC10eXBlLXt7aXRlbS50eXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgKGl0ZW0ucGxhY2Vob2xkZXIgIT09ICcnKSA/IGl0ZW0ucGxhY2Vob2xkZXIgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IChpdGVtLnR5cGUgPT09ICdudW1iZXInKSA/ICd0ZXh0JyA6IGl0ZW0udHlwZSB9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0Yy1mb3JtLWNvbnRyb2xcIiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaEluKGl0ZW0sICRldmVudClcIj4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNsZWFyLWZpbHRlci10ZXh0XCIgW2NsYXNzLnRvLWhpZGVdPVwiX2lucHV0LnZhbHVlID09PSAnJ1wiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgX2lucHV0LnZhbHVlID0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdzZWxlY3QnICYmIGl0ZW0uZGF0YSAmJiAoaXRlbS5kYXRhKS5sZW5ndGggPiAwXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXQgdHlwZS17e2l0ZW0udHlwZX19IGJveC10eXBlLXt7aXRlbS50eXBlfX1cIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK2l0ZW0ud2lkdGggOiAnJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpcyBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgdGl0bGU9XCJ7eyBpdGVtLmRlc2NyaXB0aW9uIH19XCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCJfaW5wdXQudmFsdWUgIT09ICcnXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF97e2krMX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2IG9mIGl0ZW0uZGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInYudmFsdWVcIj57eyB2LmRlc2NyaXB0aW9uIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSAmJiBpdGVtLnR5cGUgPT09ICdib29sZWFuJ1wiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXRcIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK2l0ZW0ud2lkdGggOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb24gdGMtdGl0bGUtZWxsaXBzaXNcIiB0aXRsZT1cInt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cIiB0aXRsZT1cInt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC5jaGVja2VkID09PSB0cnVlXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWlucHV0LWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgKGl0ZW0ucGxhY2Vob2xkZXIgIT09ICcnKSA/IGl0ZW0ucGxhY2Vob2xkZXIgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sIF9pbnB1dC5jaGVja2VkKVwiPiAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtYi0xIG1yLTFcIiAqbmdJZj1cInVzZUJ1dHRvblN1Ym1pdFwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGMtYnRuIHt7IGJ0blN1Ym1pdENsYXNzIH19XCIgKGNsaWNrKT1cInRvU3VibWl0KClcIiA+e3sgc3VibWl0VGV4dCB9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbjwhLS0gPHByZT57eyBpbnB1dHMgfCBqc29uIH19PC9wcmU+IC0tPlxyXG48IS0tIDxwcmU+IHt7IGRhdGEgfCBqc29uIH19IDwvcHJlPiAtLT5cclxuXHJcbjwhLS0gPHA+RklMVEVSUzwvcD48cHJlPiB7eyBmaWx0ZXJzIHwganNvbiB9fTwvcHJlPiAtLT5cclxuXHJcbjwhLS1cclxuICAgIDxwcmU+c3RhcnRfc3RvcDoge3sgc3RhcnRfc3RvcCB9fTwvcHJlPlxyXG4gICAgPHByZT5zdGFydF9zdG9wX3dpZHRoOiB7eyBzdGFydF9zdG9wX3dpZHRoIH19PC9wcmU+XHJcbiAgICA8cHJlPnN0YXJ0X3N0b3BfdW5kOiB7eyBzdGFydF9zdG9wX3VuZCB9fTwvcHJlPlxyXG4tLT4iXX0=
|
|
@@ -17,4 +17,4 @@ export var TCCondition;
|
|
|
17
17
|
TCCondition["gt"] = "gt";
|
|
18
18
|
TCCondition["notEqual"] = "notEqual";
|
|
19
19
|
})(TCCondition || (TCCondition = {}));
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZmlsdGVycy90Y2xvdWQtdWktZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0QkEsTUFBTSxDQUFOLElBQVksYUFRWDtBQVJELFdBQVksYUFBYTtJQUNyQiw4QkFBYSxDQUFBO0lBQ2Isa0NBQWlCLENBQUE7SUFDakIsa0NBQWlCLENBQUE7SUFDakIsb0NBQW1CLENBQUE7SUFDbkIsNENBQTJCLENBQUE7SUFDM0Isa0NBQWlCLENBQUE7SUFDakIsb0NBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQVJXLGFBQWEsS0FBYixhQUFhLFFBUXhCO0FBRUQsTUFBTSxDQUFOLElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNuQiw4QkFBZSxDQUFBO0lBQ2YsMEJBQVcsQ0FBQTtJQUNYLDBCQUFXLENBQUE7SUFDWCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULG9DQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFQVyxXQUFXLEtBQVgsV0FBVyxRQU90QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVENEYXRhRmlsdGVyc3tcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7ICAgIFxyXG4gICAgc2VhcmNoSW46IHN0cmluZztcclxuICAgIG5vdEluPzogYm9vbGVhbjtcclxuICAgIHR5cGU/OiBUQ0ZpbHRlcnNUeXBlO1xyXG4gICAgbmFtZT86IHN0cmluZztcclxuICAgIGlkPzogc3RyaW5nO1xyXG5cclxuICAgIHNlYXJjaFRleHQ/OiBhbnk7XHJcbiAgICBhY2NlcHQ/OiBib29sZWFuO1xyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgICB3aWR0aD86IHN0cmluZztcclxuICAgIGRhdGE/OiBUQ0RhdGFPdGlvbnNbXTtcclxuICAgIGNvbmRpdGlvbj86IFRDQ29uZGl0aW9uO1xyXG4gICAgdmFsdWU/OiBhbnk7XHJcblxyXG4gICAgLy8gRm9yIGRhdGVwaWNrZXJcclxuICAgIGRlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcD86IGFueTtcclxuICAgIFVUQz86IGJvb2xlYW47XHJcbiAgICB1c2VPcHRpb25zRGF0ZVRpbWU/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRDRGF0YU90aW9ucyB7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgdmFsdWU6IGFueTtcclxuICAgIG5vdFZhbHVlcz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUQ0ZpbHRlcnNUeXBle1xyXG4gICAgdGV4dCA9IFwidGV4dFwiLFxyXG4gICAgbnVtYmVyID0gXCJudW1iZXJcIixcclxuICAgIHNlbGVjdCA9IFwic2VsZWN0XCIsXHJcbiAgICBib29sZWFuID0gXCJib29sZWFuXCIsXHJcbiAgICBkYXRldGltZSA9IFwiZGF0ZXRpbWUtbG9jYWxcIixcclxuICAgIGhpZGRlbiA9IFwiaGlkZGVuXCIsXHJcbiAgICBkYXRlID0gXCJkYXRlLWxvY2FsXCIsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFRDQ29uZGl0aW9ue1xyXG4gICAgZXF1YWwgPSBcImVxdWFsXCIsXHJcbiAgICBndGUgPSBcImd0ZVwiLFxyXG4gICAgbHRlID0gXCJsdGVcIixcclxuICAgIGx0ID0gXCJsdFwiLFxyXG4gICAgZ3QgPSBcImd0XCIsXHJcbiAgICBub3RFcXVhbCA9IFwibm90RXF1YWxcIlxyXG59Il19
|
package/esm2022/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.mjs
CHANGED
|
@@ -234,7 +234,6 @@ export class TCloudUiMultiplesValuesComponent {
|
|
|
234
234
|
if (!input_items) {
|
|
235
235
|
return;
|
|
236
236
|
}
|
|
237
|
-
console.log('input_items', input_items);
|
|
238
237
|
let valid = true;
|
|
239
238
|
if (this.pattern) {
|
|
240
239
|
valid = (this.pattern).test(this.input_items);
|
|
@@ -346,4 +345,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
346
345
|
}], tcChange: [{
|
|
347
346
|
type: Output
|
|
348
347
|
}] } });
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMvdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMvdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFVBQVUsRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUEwQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFFMUYsTUFBTyx1QkFBdUIsR0FBUTtJQUNwQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO0lBQy9ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQTtBQUVELE1BQU0sbUNBQW1DLEdBQVE7SUFDL0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO0lBQy9ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtBQUNsQixDQUFDLENBQUM7QUFRRixNQUFNLE9BQU8sZ0NBQWdDO0lBbUIzQyxJQUFhLFNBQVMsQ0FBQyxDQUFrQjtRQUN2QyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lB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LElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxXQUFXO0lBRVgsQ0FBQzsrR0ExWFUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0Msd2FBRmhDLENBQUMsbUNBQW1DLEVBQUUsdUJBQXVCLENBQUMsMEJDdEIzRSxnbVFBMElNOzs0RkRsSE8sZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLDRCQUE0QixhQUczQixDQUFDLG1DQUFtQyxFQUFFLHVCQUF1QixDQUFDOzBFQXFCNUQsU0FBUztzQkFBckIsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgZm9yd2FyZFJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgTkdfVkFMSURBVE9SUywgRm9ybUNvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmNvbnN0ICBDVVNUT01fSU5QVVRfVkFMSURBVE9SUzogYW55ID0geyBcclxuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLCBcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUQ2xvdWRVaU11bHRpcGxlc1ZhbHVlc0NvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufVxyXG5cclxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUQ2xvdWRVaU11bHRpcGxlc1ZhbHVlc0NvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbmNvbnN0IG5vb3AgPSAoKSA9PiB7XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1tdWx0aXBsZXMtdmFsdWVzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RjbG91ZC11aS1tdWx0aXBsZXMtdmFsdWVzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IsIENVU1RPTV9JTlBVVF9WQUxJREFUT1JTXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlNdWx0aXBsZXNWYWx1ZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgVmFsaWRhdG9yICB7XHJcblxyXG4gIHZpZXdwb3J0X3dpZHRoOiBudW1iZXIgPSAwO1xyXG4gIHZpZXdwb3J0X2hlaWdodDogbnVtYmVyID0gMDtcclxuICBib3hfaGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGJveF9zdHlsZTogc3RyaW5nID0gJyc7XHJcbiAgbWVudV9vbl90b3A6IHN0cmluZyA9ICcnO1xyXG4gIHNlYXJjaF90ZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgaWQ6IHN0cmluZyA9ICcnO1xyXG4gIHNob3dfaXRlbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93X2NvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG5cclxuICBpbnB1dF9pdGVtczogc3RyaW5nID0gJyc7XHJcblxyXG4gIGl0ZW1zID0gW10gYXMgc3RyaW5nW107XHJcblxyXG4gIHByaXZhdGUgX2xpc3RJdGVtczogYW55IHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNldCBsaXN0SXRlbXModjogYW55IHwgdW5kZWZpbmVkKXtcclxuICAgIGlmKCB2ICE9PSB0aGlzLl9saXN0SXRlbXMgKXtcclxuICAgICAgdGhpcy5fbGlzdEl0ZW1zID0gdjtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxpc3RJdGVtcygpOmFueSB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9saXN0SXRlbXM7IH1cclxuIFxyXG4gIEBJbnB1dCgpIG9wZW5WYWx1ZXNJbkNoYW5nZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdXNlQnRuQWRkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgcGF0dGVybjogUmVnRXhwIHwgYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBkZWxpbWl0ZXI6IHN0cmluZyA9ICcsJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHVwcGVyY2FzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGxvd2VyY2FzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBtYXhXaWR0aExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBPdXRwdXQoKSB0Y0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICB1c2VfdmFsaWRhdGlvbl9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwbGFjZWhvbGRlcl9saXN0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5nZW5lcmF0ZUlEKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgICAgICBcclxuICAgICAgdGhpcy5zaG93X2NvbXBvbmVudCA9IHRydWU7XHJcbiAgICAgIHRoaXMudG9SZXNpemUoKTtcclxuICAgICAgdGhpcy50b0NsaWNrKCk7XHJcbiAgICAgIHRoaXMuc2V0X3BsYWNlaG9sZGVyX2xpc3QoKTsgICAgICAgXHJcbiAgICB9KTsgICAgXHJcbiAgfVxyXG5cclxuICBjaGVja19pc192YWxpZCgpOiBib29sZWFue1xyXG4gICAgaWYoIHRoaXMuaXRlbXMgKXtcclxuICAgICAgcmV0dXJuICgodGhpcy5pdGVtcykubGVuZ3RoID4gMCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUlEKCk6IHN0cmluZ3tcclxuICAgIHJldHVybiBgbXVsdGlwbGUtdmFsdWVzLSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogRGF0ZS5ub3coKSkpfWA7XHJcbiAgfVxyXG5cclxuICByZW1vdmVfZHVwbGljYXRlcyhpdGVtczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoaXRlbXMpXTtcclxuICB9XHJcblxyXG4gXHJcbiAgYWRkX2l0ZW1zX2J5X2RhdGFfbGlzdChlOiBhbnkpe1xyXG4gICAgdGhpcy5pbnB1dF9pdGVtcyA9IGU7XHJcbiAgICB0aGlzLmFkZF9pdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgYWRkX2l0ZW1zKCl7XHJcblxyXG4gICAgaWYoIHRoaXMuZGlzYWJsZWQgKXsgcmV0dXJuOyB9XHJcblxyXG4gICAgY29uc3QgaW5wdXRfaXRlbXMgPSB0aGlzLmlucHV0X2l0ZW1zO1xyXG5cclxuICAgIHRoaXMuaW5wdXRfaXRlbXMgPSAnJztcclxuICAgIFxyXG4gICAgbGV0IGl0ZW1zID0gW107XHJcbiAgICBpZiggaW5wdXRfaXRlbXMgJiYgaW5wdXRfaXRlbXMgIT09ICcnICl7XHJcblxyXG4gICAgICBpdGVtcyA9IDxhbnk+IChpbnB1dF9pdGVtcykuc3BsaXQodGhpcy5kZWxpbWl0ZXIpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiggKGl0ZW1zKS5sZW5ndGggPT09IDAgKXtcclxuICAgICAgaWYoIGlucHV0X2l0ZW1zICYmIGlucHV0X2l0ZW1zICE9PSAnJyApe1xyXG4gICAgICAgIGxldCB0eHQgPSBgJHsoaW5wdXRfaXRlbXMpLnRyaW0oKX1gO1xyXG4gICAgICAgIGl0ZW1zID0gW3R4dF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL2l0ZW1zID0gWy4uLm5ldyBTZXQoaXRlbXMpXTtcclxuXHJcbiAgICBmb3IoIGxldCBpID0gMDsgaSA8IChpdGVtcykubGVuZ3RoOyBpKyspe1xyXG4gICAgICBsZXQgdHh0ID0gYCR7KGl0ZW1zW2ldKS50cmltKCl9YDtcclxuXHJcbiAgICAgIGlmKCB0aGlzLnVwcGVyY2FzZSApe1xyXG4gICAgICAgIGlmKCB0eHQgJiYgdHh0ICE9PSAnJyApe1xyXG4gICAgICAgICAgdHh0ID0gKHR4dCkudG9Mb2NhbGVVcHBlckNhc2UoKTtcclxuICAgICAgICB9ICAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIHRoaXMubG93ZXJjYXNlICl7XHJcbiAgICAgICAgaWYoIHR4dCAmJiB0eHQgIT09ICcnICl7XHJcbiAgICAgICAgICB0eHQgPSAodHh0KS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIHR4dCAmJiB0eHQgIT09ICcnICl7XHJcbiAgICAgICAgKHRoaXMuaXRlbXMpLnB1c2godHh0KTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5yZW1vdmVfZHVwbGljYXRlcyh0aGlzLml0ZW1zKTtcclxuICAgIHRoaXMuc2V0X3BsYWNlaG9sZGVyX2xpc3QoKTtcclxuICB9XHJcblxyXG4gIHNldF9wbGFjZWhvbGRlcl9saXN0KCl7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXJfbGlzdCA9ICcnO1xyXG4gICAgbGV0IGRlbGltaXRlciA9ICcnO1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xyXG4gICAgaWYoIGl0ZW1zICYmIChpdGVtcykubGVuZ3RoID4gMCApe1xyXG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8IChpdGVtcykubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIHBsYWNlaG9sZGVyX2xpc3QgKz0gIGRlbGltaXRlciArIGAkeyhpdGVtc1tpXSkudHJpbSgpfWA7XHJcbiAgICAgICAgZGVsaW1pdGVyID0gYCR7dGhpcy5kZWxpbWl0ZXJ9IGA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucGxhY2Vob2xkZXJfbGlzdCA9IChwbGFjZWhvbGRlcl9saXN0ICE9PSAnJykgPyBwbGFjZWhvbGRlcl9saXN0IDogdGhpcy5wbGFjZWhvbGRlcjtcclxuICAgIHRoaXMub25DaGFuZ2VUb3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5pdGVtcyk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVtb3ZlSXRlbShpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpOiB2b2lke1xyXG4gICAgaWYoIHRoaXMuZGlzYWJsZWQgKXsgcmV0dXJuOyB9XHJcbiAgICBpZiggdGhpcy5pdGVtcyApe1xyXG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLml0ZW1zKS5sZW5ndGg7IGkrKyApe1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuaXRlbXNbaV07XHJcbiAgICAgICAgaWYoIGl0ZW0gPT09IHJvdyAmJiBpID09PSBpbmRleCApe1xyXG4gICAgICAgICAgKHRoaXMuaXRlbXMpLnNwbGljZShpbmRleCwxKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKCAodGhpcy5pdGVtcykubGVuZ3RoID09PSAwICl7XHJcbiAgICAgIHRoaXMuc2hvd19pdGVucyA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRfcGxhY2Vob2xkZXJfbGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlX2FsbCgpe1xyXG4gICAgaWYoIHRoaXMuZGlzYWJsZWQgKXsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICB0aGlzLnNldF9wbGFjZWhvbGRlcl9saXN0KCk7XHJcbiAgfVxyXG5cclxuICB0b0NsaWNrKCl7XHJcbiAgICBjb25zdCBib3ggPSBgYXJlYS0ke3RoaXMuaWR9YDtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKGU6IGFueSkgPT4geyAgXHJcblxyXG4gICAgICBpZiggdGhpcy5zaG93X2l0ZW5zICl7ICAgICAgICBcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYoICEoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYm94KT8uY29udGFpbnMoZS50YXJnZXQpKSApeyAgXHJcbiAgICAgICAgICAgIGlmKCAnYm94LWFjdGlvbicgIT09IGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2xhc3NOYW1lICl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93X2l0ZW5zID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGJveHN1YiA9IGAke3RoaXMuaWR9LW9wdGlvbnNgO1xyXG4gIH1cclxuXHJcbiAgdG9SZXNpemUoKXtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudmlld3BvcnRfd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgdGhpcy52aWV3cG9ydF9oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICAgIHRoaXMucmVzb2x2ZV9wb3NpdGlvbl9kcm9wZG93bih0aGlzLnNob3dfaXRlbnMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b09wZW4oKXtcclxuICAgIGlmKCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCApe1xyXG4gICAgICB0aGlzLnNob3dfaXRlbnMgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd19pdGVucyA9ICF0aGlzLnNob3dfaXRlbnM7ICAgIFxyXG4gICAgdGhpcy5yZXNvbHZlX3Bvc2l0aW9uX2Ryb3Bkb3duKHRoaXMuc2hvd19pdGVucyk7XHJcbiAgfVxyXG5cclxuICB0b0Nsb3NlKCl7XHJcbiAgICB0aGlzLnNob3dfaXRlbnMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlc29sdmVfcG9zaXRpb25fZHJvcGRvd24ob3BlbjogYm9vbGVhbil7XHJcbiAgICBpZiggb3BlbiApe1xyXG4gICAgICB0aGlzLmJveF9zdHlsZSA9ICcnO1xyXG4gICAgICB0aGlzLm1lbnVfb25fdG9wID0gJyc7ICAgXHJcbiAgICAgIGNvbnN0IGlkID0gYCR7dGhpcy5pZH1gOyBcclxuICAgICAgY29uc3QgYm94ID0gYGJveC0ke3RoaXMuaWR9YDtcclxuICAgICAgaWYoIHRoaXMudmlld3BvcnRfaGVpZ2h0ID09PSAwICl7XHJcbiAgICAgICAgdGhpcy52aWV3cG9ydF9oZWlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZWN0ICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGNvbnN0IGJveF9wb3NpdGlvbiA9IHJlY3Q/LmJvdHRvbSB8fCAwOyAgICAgIFxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmJveF9oZWlnaHQgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYm94KT8uY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICAgICAgaWYoICggdGhpcy52aWV3cG9ydF9oZWlnaHQgLSBib3hfcG9zaXRpb24pIDwgdGhpcy5ib3hfaGVpZ2h0ICl7XHJcbiAgICAgICAgICB0aGlzLm1lbnVfb25fdG9wID0gJ21lbnUtb24tdG9wJztcclxuICAgICAgICAgIHRoaXMuYm94X3N0eWxlID0gYHRvcDogLSR7ICh0aGlzLmJveF9oZWlnaHQpIH1weDsgaGVpZ2h0OiAke3RoaXMuYm94X2hlaWdodH1weDtgO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7ICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBjbGVhclRleHRTZWFyY2goKXtcclxuICAgIHRoaXMuc2VhcmNoX3RleHQgPSAnJztcclxuICAgIHRoaXMudG9TZWFyY2goJycpO1xyXG4gIH1cclxuXHJcbiAgdG9TZWFyY2goZTogYW55KSB7XHJcbiAgICBsZXQgaW5wdXQgPSAoZSAmJiBlLnRhcmdldCAmJiBlLnRhcmdldC52YWx1ZSkgPyBlLnRhcmdldC52YWx1ZSA6ICcnO1xyXG4gICAgXHJcbiAgICBsZXQgZmlsdGVyID0gKCAoIChpbnB1dCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKSApLnRyaW0oKSApLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBsZXQgdWwgPSA8YW55PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLmlkfS1vcHRpb25zYCk7XHJcbiAgICBsZXQgbGkgPSB1bC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImxhYmVsXCIpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGEgPSBsaVtpXTtcclxuICAgICAgICBjb25zdCB0eHRWYWx1ZSA9ICggKCAoIGEudGV4dENvbnRlbnQgfHwgYS5pbm5lclRleHQgKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpICkudHJpbSgpICkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodHh0VmFsdWUuaW5kZXhPZihmaWx0ZXIpID4gLTEpIHtcclxuICAgICAgICAgICAgbGlbaV0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGlbaV0uc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICB0b0VudGVyS2V5KGlucHV0X2l0ZW1zOiBzdHJpbmcgfCBzdHJpbmdbXSApe1xyXG5cclxuICAgIGlmKCAhaW5wdXRfaXRlbXMgKXsgcmV0dXJuOyB9XHJcbiAgICBjb25zb2xlLmxvZygnaW5wdXRfaXRlbXMnLCBpbnB1dF9pdGVtcyk7XHJcblxyXG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcclxuICAgIGlmKCB0aGlzLnBhdHRlcm4gKXtcclxuICAgICAgdmFsaWQgPSAodGhpcy5wYXR0ZXJuKS50ZXN0KHRoaXMuaW5wdXRfaXRlbXMpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiggdmFsaWQgKXtcclxuICAgICAgdGhpcy5hZGRfaXRlbXMoKTtcclxuICAgICAgaWYoIHRoaXMub3BlblZhbHVlc0luQ2hhbmdlICl7XHJcbiAgICAgICAgdGhpcy50b09wZW4oKTtcclxuICAgICAgfSAgICBcclxuICAgIH1cclxuICAgIFxyXG5cclxuICB9XHJcblxyXG4gIGNoZWNrSXNEaXNhYmxlZChpdGVtOiBhbnkpe1xyXG4gICAgaWYoIGl0ZW0/LmRpc2FibGVkICl7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWUgPSBgJHtpdGVtLnZhbHVlfWA7XHJcbiAgICBpZiggKHRoaXMuaXRlbXMpLmxlbmd0aCA+IDAgKXtcclxuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5pdGVtcykubGVuZ3RoOyBpKysgKXtcclxuICAgICAgICBpZiggYCR7dGhpcy5pdGVtc1tpXX1gID09PSB2YWx1ZSApe1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25DaGFuZ2UoKXtcclxuICAgIHRoaXMudGNDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBvbkNoYW5nZVRvdWNoZWQoKXsgIFxyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpOyAgICAgXHJcbiAgfVxyXG5cclxuXHJcbiAgdG9TZXREZWZhdWx0KHY6YW55KXtcclxuICAgIHRoaXMuaXRlbXMgPSB2O1xyXG4gICAgdGhpcy5hZGRfaXRlbXMoKTtcclxuICB9XHJcblxyXG4gIGlubmVyVmFsdWU6IGFueSB8IHVuZGVmaW5lZDtcclxuICAvL1BsYWNlaG9sZGVycyBmb3IgdGhlIGNhbGxiYWNrcyB3aGljaCBhcmUgbGF0ZXIgcHJvdmlkZXNkXHJcbiAgLy9ieSB0aGUgQ29udHJvbCBWYWx1ZSBBY2Nlc3NvclxyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcblxyXG4gIC8vZ2V0IGFjY2Vzc29yXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgLy9zZXQgYWNjZXNzb3IgaW5jbHVkaW5nIGNhbGwgdGhlIG9uY2hhbmdlIGNhbGxiYWNrXHJcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xyXG4gICAgaWYgKHYgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2OyBcclxuICAgICAgdGhpcy50b1NldERlZmF1bHQodik7ICAgICBcclxuICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9TZXQgdG91Y2hlZCBvbiBibHVyXHJcbiAgb25CbHVyKCkge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgLy9Gcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcclxuICAgICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMudG9TZXREZWZhdWx0KHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLy9Gcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHVibGljIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKTogYW55IHtcclxuICAgIGlmKCBjICYmICggdHlwZW9mIHRoaXMucmVxdWlyZWQgIT09ICd1bmRlZmluZWQnICkgKXtcclxuICAgICAgdGhpcy51c2VfdmFsaWRhdGlvbl9yZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHJldHVybiAodGhpcy5jaGVja19pc192YWxpZCgpKSA/IG51bGwgOiAncmVxdWlyZWQnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJzaG93X2NvbXBvbmVudFwiIGNsYXNzPVwidGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMgdGMtZHJvcGRvd25cIiBpZD1cImFyZWEte3sgaWQgfX1cIiBbY2xhc3MudGMtcGFyZW50LXZhbGlkYXRpb25dPVwidXNlX3ZhbGlkYXRpb25fcmVxdWlyZWRcIj5cclxuXHJcblxyXG4gICAgPGZvcm0gI19mb3JtdWxhcmlvPVwibmdGb3JtXCI+XHJcblxyXG4gICAgICAgIDwhLS0ge3sgaW5wdXRfaXRlbXMgfX0gLS0+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi10b2dnbGVcIiBpZD1cInt7aWR9fVwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiJ3RydWUnXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCInZmFsc2UnXCI+XHJcblxyXG4gICAgICAgICAgICA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImdyb3VwLWlucHV0LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJveC1pbnB1dHt7IChsaXN0SXRlbXMgJiYgKGxpc3RJdGVtcykubGVuZ3RoID4gMCkgPyAnLWRhdGEtbGlzdCcgOiAnJyB9fSBiYy1sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0SXRlbXMgJiYgKGxpc3RJdGVtcykubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCIgKGNsaWNrKT1cInNob3dfaXRlbnMgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Y2xvdWQtdWktZGF0YS1saXN0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcl9saXN0XCIgW3NlYXJjaF09XCJzZWFyY2hcIiBbYm9yZGVyXT1cImZhbHNlXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIG5hbWU9XCJpdGVtc1wiIFsobmdNb2RlbCldPVwiaW5wdXRfaXRlbXNcIiAob25DaGFuZ2UpPVwidG9FbnRlcktleShpbnB1dF9pdGVtcylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaXN0SXRlbXNcIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGNsb3VkLXVpLWRhdGEtbGlzdC1vcHRpb24gW3ZhbHVlXT1cIicnICsgaXRlbS52YWx1ZVwiIFtkaXNhYmxlZF09XCJjaGVja0lzRGlzYWJsZWQoaXRlbSlcIj57eyBpdGVtPy5kZXNjcmlwdGlvbiB9fTwvdGNsb3VkLXVpLWRhdGEtbGlzdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGNsb3VkLXVpLWRhdGEtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGlzdEl0ZW1zIHx8ICEobGlzdEl0ZW1zICYmIChsaXN0SXRlbXMpLmxlbmd0aCA+IDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cInBhdHRlcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0b0VudGVyS2V5KGlucHV0X2l0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWxvd2VyY2FzZV09XCJsb3dlcmNhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC11cHBlcmNhc2VdPVwidXBwZXJjYXNlXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBuYW1lPVwiaXRlbXNcIiBjbGFzcz1cInRjLWZvcm0tY29udHJvbCBhcmVhLXRleHRcIiBbKG5nTW9kZWwpXT1cImlucHV0X2l0ZW1zXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyX2xpc3RcIiByZXF1aXJlZCBbdGl0bGVdPVwicGxhY2Vob2xkZXJfbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb3VudC1saXN0XCIgKm5nSWY9XCIoaXRlbXMgJiYgaXRlbXMubGVuZ3RoID4gMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cInt7IGl0ZW1zLmxlbmd0aCB9fSB7eyAoaXRlbXMubGVuZ3RoID4gMSkgPyAncmVnaXN0cm9zJyA6ICdyZWdpc3RybycgfX1cIiBkaXNhYmxlZCByZWFkb25seT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY291bnQtbGlzdFwiICpuZ0lmPVwiIWl0ZW1zIHx8IChpdGVtcyAmJiBpdGVtcy5sZW5ndGggPT09IDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5mby1uby12YWx1ZVwiIHZhbHVlPVwiVmF6aW9cIiBkaXNhYmxlZCByZWFkb25seT48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9uLWlucHV0LWFycm93ICBiYy1yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvT3BlbigpXCIgdGl0bGU9XCJMaXN0YSBkZSB2YWxvcmVzXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiICpuZ0lmPVwic2hvd19pdGVuc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIiAqbmdJZj1cIiFzaG93X2l0ZW5zXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gXHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ3aWR0aDogNDVweDtcIiAqbmdJZj1cInVzZUJ0bkFkZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9uLWlucHV0XCIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsaXN0SXRlbXMgfHwgIShsaXN0SXRlbXMgJiYgKGxpc3RJdGVtcykubGVuZ3RoID4gMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFfZm9ybXVsYXJpby52YWxpZFwiIGNsYXNzPVwidGMtYnRuIHRjLWJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwiYWRkX2l0ZW1zKClcIiB0aXRsZT1cIkFkaWNpb25hciBpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RJdGVtcyAmJiAobGlzdEl0ZW1zKS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhX2Zvcm11bGFyaW8udmFsaWRcIiBjbGFzcz1cInRjLWJ0biB0Yy1idG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZF9pdGVtc19ieV9kYXRhX2xpc3QoaW5wdXRfaXRlbXMpXCIgdGl0bGU9XCJBZGljaW9uYXIgaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDwhLS0gPHByZT5cclxuICAgICAgICAgICAge3sgaXRlbXMgfCBqc29uIH19XHJcbiAgICAgICAgPC9wcmU+IC0tPlxyXG5cclxuICAgIDwvZm9ybT4gXHJcblxyXG4gICAgPCEtLSBib3gtaXRlbnMtc2VsZWN0ZWQgIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInRjLWRyb3Bkb3duLW1lbnUgYm94LWl0ZW5zLXNlbGVjdGVkICB7eyBtZW51X29uX3RvcCB9fVwiIGlkPVwiYm94LXt7IGlkIH19XCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkXCIgW2NsYXNzLnRvLWhpZGVdPVwiIXNob3dfaXRlbnNcIiBbc3R5bGVdPVwiYm94X3N0eWxlXCI+XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJib3gtc2VhcmNoXCIgKm5nSWY9XCJpdGVtcyAmJiAoaXRlbXMpLmxlbmd0aCA+IDVcIj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXJlYS1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic2VhcmNoX3RleHRcIiAoaW5wdXQpPVwidG9TZWFyY2goJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiQnVzY2FyLi4uXCIgPiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhcmVhLWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJzZWFyY2hfdGV4dCA9PT0gJydcIiBjbGFzcz1cImZhcyBmYS1zZWFyY2ggaWNvbi1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJib3gtYWN0aW9uXCIgdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2VhcmNoX3RleHQgIT09ICcnXCIgKGNsaWNrKT1cImNsZWFyVGV4dFNlYXJjaCgpXCI+PGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtb3B0aW9uc1wiIGlkPVwie3sgaWQgfX0tb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYm94LWxhYmVsXCIgW25nU3R5bGVdPVwiKG1heFdpZHRoTGFiZWwpID8geydtYXgtd2lkdGgnOiBtYXhXaWR0aExhYmVsfSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LXZhbHVlXCIgW3RpdGxlXT1cIml0ZW1cIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX0gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1hY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3gtYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtcyA9PT0gdW5kZWZpbmVkIHx8IChpdGVtcyAmJiBpdGVtcy5sZW5ndGggPT09IDApIHx8IGRpc2FibGVkIHx8IGxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaXRlbSwgaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cIml0ZW1zICYmIChpdGVtcykubGVuZ3RoID4gNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXJlbW92ZS1hbGxcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJib3gtYWN0aW9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZW1vdmVfYWxsKClcIj5cclxuICAgICAgICAgICAgICAgICAgICBMaW1wYXIgdG9kYSBhIGxpc3RhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
348
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMvdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMvdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFVBQVUsRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUEwQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFFMUYsTUFBTyx1QkFBdUIsR0FBUTtJQUNwQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO0lBQy9ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQTtBQUVELE1BQU0sbUNBQW1DLEdBQVE7SUFDL0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO0lBQy9ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtBQUNsQixDQUFDLENBQUM7QUFRRixNQUFNLE9BQU8sZ0NBQWdDO0lBbUIzQyxJQUFhLFNBQVMsQ0FBQyxDQUFrQjtRQUN2QyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lB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QWdDO21HQUFoQyxnQ0FBZ0Msd2FBRmhDLENBQUMsbUNBQW1DLEVBQUUsdUJBQXVCLENBQUMsMEJDdEIzRSxnbVFBMElNOzs0RkRsSE8sZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLDRCQUE0QixhQUczQixDQUFDLG1DQUFtQyxFQUFFLHVCQUF1QixDQUFDOzBFQXFCNUQsU0FBUztzQkFBckIsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgZm9yd2FyZFJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgTkdfVkFMSURBVE9SUywgRm9ybUNvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmNvbnN0ICBDVVNUT01fSU5QVVRfVkFMSURBVE9SUzogYW55ID0geyBcclxuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLCBcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUQ2xvdWRVaU11bHRpcGxlc1ZhbHVlc0NvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufVxyXG5cclxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUQ2xvdWRVaU11bHRpcGxlc1ZhbHVlc0NvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbmNvbnN0IG5vb3AgPSAoKSA9PiB7XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1tdWx0aXBsZXMtdmFsdWVzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RjbG91ZC11aS1tdWx0aXBsZXMtdmFsdWVzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IsIENVU1RPTV9JTlBVVF9WQUxJREFUT1JTXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlNdWx0aXBsZXNWYWx1ZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgVmFsaWRhdG9yICB7XHJcblxyXG4gIHZpZXdwb3J0X3dpZHRoOiBudW1iZXIgPSAwO1xyXG4gIHZpZXdwb3J0X2hlaWdodDogbnVtYmVyID0gMDtcclxuICBib3hfaGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGJveF9zdHlsZTogc3RyaW5nID0gJyc7XHJcbiAgbWVudV9vbl90b3A6IHN0cmluZyA9ICcnO1xyXG4gIHNlYXJjaF90ZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgaWQ6IHN0cmluZyA9ICcnO1xyXG4gIHNob3dfaXRlbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93X2NvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG5cclxuICBpbnB1dF9pdGVtczogc3RyaW5nID0gJyc7XHJcblxyXG4gIGl0ZW1zID0gW10gYXMgc3RyaW5nW107XHJcblxyXG4gIHByaXZhdGUgX2xpc3RJdGVtczogYW55IHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNldCBsaXN0SXRlbXModjogYW55IHwgdW5kZWZpbmVkKXtcclxuICAgIGlmKCB2ICE9PSB0aGlzLl9saXN0SXRlbXMgKXtcclxuICAgICAgdGhpcy5fbGlzdEl0ZW1zID0gdjtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxpc3RJdGVtcygpOmFueSB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9saXN0SXRlbXM7IH1cclxuIFxyXG4gIEBJbnB1dCgpIG9wZW5WYWx1ZXNJbkNoYW5nZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdXNlQnRuQWRkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgcGF0dGVybjogUmVnRXhwIHwgYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBkZWxpbWl0ZXI6IHN0cmluZyA9ICcsJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHVwcGVyY2FzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGxvd2VyY2FzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBtYXhXaWR0aExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBPdXRwdXQoKSB0Y0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICB1c2VfdmFsaWRhdGlvbl9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwbGFjZWhvbGRlcl9saXN0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5nZW5lcmF0ZUlEKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgICAgICBcclxuICAgICAgdGhpcy5zaG93X2NvbXBvbmVudCA9IHRydWU7XHJcbiAgICAgIHRoaXMudG9SZXNpemUoKTtcclxuICAgICAgdGhpcy50b0NsaWNrKCk7XHJcbiAgICAgIHRoaXMuc2V0X3BsYWNlaG9sZGVyX2xpc3QoKTsgICAgICAgXHJcbiAgICB9KTsgICAgXHJcbiAgfVxyXG5cclxuICBjaGVja19pc192YWxpZCgpOiBib29sZWFue1xyXG4gICAgaWYoIHRoaXMuaXRlbXMgKXtcclxuICAgICAgcmV0dXJuICgodGhpcy5pdGVtcykubGVuZ3RoID4gMCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUlEKCk6IHN0cmluZ3tcclxuICAgIHJldHVybiBgbXVsdGlwbGUtdmFsdWVzLSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogRGF0ZS5ub3coKSkpfWA7XHJcbiAgfVxyXG5cclxuICByZW1vdmVfZHVwbGljYXRlcyhpdGVtczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoaXRlbXMpXTtcclxuICB9XHJcblxyXG4gXHJcbiAgYWRkX2l0ZW1zX2J5X2RhdGFfbGlzdChlOiBhbnkpe1xyXG4gICAgdGhpcy5pbnB1dF9pdGVtcyA9IGU7XHJcbiAgICB0aGlzLmFkZF9pdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgYWRkX2l0ZW1zKCl7XHJcblxyXG4gICAgaWYoIHRoaXMuZGlzYWJsZWQgKXsgcmV0dXJuOyB9XHJcblxyXG4gICAgY29uc3QgaW5wdXRfaXRlbXMgPSB0aGlzLmlucHV0X2l0ZW1zO1xyXG5cclxuICAgIHRoaXMuaW5wdXRfaXRlbXMgPSAnJztcclxuICAgIFxyXG4gICAgbGV0IGl0ZW1zID0gW107XHJcbiAgICBpZiggaW5wdXRfaXRlbXMgJiYgaW5wdXRfaXRlbXMgIT09ICcnICl7XHJcblxyXG4gICAgICBpdGVtcyA9IDxhbnk+IChpbnB1dF9pdGVtcykuc3BsaXQodGhpcy5kZWxpbWl0ZXIpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiggKGl0ZW1zKS5sZW5ndGggPT09IDAgKXtcclxuICAgICAgaWYoIGlucHV0X2l0ZW1zICYmIGlucHV0X2l0ZW1zICE9PSAnJyApe1xyXG4gICAgICAgIGxldCB0eHQgPSBgJHsoaW5wdXRfaXRlbXMpLnRyaW0oKX1gO1xyXG4gICAgICAgIGl0ZW1zID0gW3R4dF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL2l0ZW1zID0gWy4uLm5ldyBTZXQoaXRlbXMpXTtcclxuXHJcbiAgICBmb3IoIGxldCBpID0gMDsgaSA8IChpdGVtcykubGVuZ3RoOyBpKyspe1xyXG4gICAgICBsZXQgdHh0ID0gYCR7KGl0ZW1zW2ldKS50cmltKCl9YDtcclxuXHJcbiAgICAgIGlmKCB0aGlzLnVwcGVyY2FzZSApe1xyXG4gICAgICAgIGlmKCB0eHQgJiYgdHh0ICE9PSAnJyApe1xyXG4gICAgICAgICAgdHh0ID0gKHR4dCkudG9Mb2NhbGVVcHBlckNhc2UoKTtcclxuICAgICAgICB9ICAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIHRoaXMubG93ZXJjYXNlICl7XHJcbiAgICAgICAgaWYoIHR4dCAmJiB0eHQgIT09ICcnICl7XHJcbiAgICAgICAgICB0eHQgPSAodHh0KS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIHR4dCAmJiB0eHQgIT09ICcnICl7XHJcbiAgICAgICAgKHRoaXMuaXRlbXMpLnB1c2godHh0KTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5yZW1vdmVfZHVwbGljYXRlcyh0aGlzLml0ZW1zKTtcclxuICAgIHRoaXMuc2V0X3BsYWNlaG9sZGVyX2xpc3QoKTtcclxuICB9XHJcblxyXG4gIHNldF9wbGFjZWhvbGRlcl9saXN0KCl7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXJfbGlzdCA9ICcnO1xyXG4gICAgbGV0IGRlbGltaXRlciA9ICcnO1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xyXG4gICAgaWYoIGl0ZW1zICYmIChpdGVtcykubGVuZ3RoID4gMCApe1xyXG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8IChpdGVtcykubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIHBsYWNlaG9sZGVyX2xpc3QgKz0gIGRlbGltaXRlciArIGAkeyhpdGVtc1tpXSkudHJpbSgpfWA7XHJcbiAgICAgICAgZGVsaW1pdGVyID0gYCR7dGhpcy5kZWxpbWl0ZXJ9IGA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucGxhY2Vob2xkZXJfbGlzdCA9IChwbGFjZWhvbGRlcl9saXN0ICE9PSAnJykgPyBwbGFjZWhvbGRlcl9saXN0IDogdGhpcy5wbGFjZWhvbGRlcjtcclxuICAgIHRoaXMub25DaGFuZ2VUb3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5pdGVtcyk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVtb3ZlSXRlbShpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpOiB2b2lke1xyXG4gICAgaWYoIHRoaXMuZGlzYWJsZWQgKXsgcmV0dXJuOyB9XHJcbiAgICBpZiggdGhpcy5pdGVtcyApe1xyXG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLml0ZW1zKS5sZW5ndGg7IGkrKyApe1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuaXRlbXNbaV07XHJcbiAgICAgICAgaWYoIGl0ZW0gPT09IHJvdyAmJiBpID09PSBpbmRleCApe1xyXG4gICAgICAgICAgKHRoaXMuaXRlbXMpLnNwbGljZShpbmRleCwxKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKCAodGhpcy5pdGVtcykubGVuZ3RoID09PSAwICl7XHJcbiAgICAgIHRoaXMuc2hvd19pdGVucyA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRfcGxhY2Vob2xkZXJfbGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlX2FsbCgpe1xyXG4gICAgaWYoIHRoaXMuZGlzYWJsZWQgKXsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICB0aGlzLnNldF9wbGFjZWhvbGRlcl9saXN0KCk7XHJcbiAgfVxyXG5cclxuICB0b0NsaWNrKCl7XHJcbiAgICBjb25zdCBib3ggPSBgYXJlYS0ke3RoaXMuaWR9YDtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKGU6IGFueSkgPT4geyAgXHJcblxyXG4gICAgICBpZiggdGhpcy5zaG93X2l0ZW5zICl7ICAgICAgICBcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYoICEoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYm94KT8uY29udGFpbnMoZS50YXJnZXQpKSApeyAgXHJcbiAgICAgICAgICAgIGlmKCAnYm94LWFjdGlvbicgIT09IGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2xhc3NOYW1lICl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93X2l0ZW5zID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGJveHN1YiA9IGAke3RoaXMuaWR9LW9wdGlvbnNgO1xyXG4gIH1cclxuXHJcbiAgdG9SZXNpemUoKXtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudmlld3BvcnRfd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgdGhpcy52aWV3cG9ydF9oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICAgIHRoaXMucmVzb2x2ZV9wb3NpdGlvbl9kcm9wZG93bih0aGlzLnNob3dfaXRlbnMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b09wZW4oKXtcclxuICAgIGlmKCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCApe1xyXG4gICAgICB0aGlzLnNob3dfaXRlbnMgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd19pdGVucyA9ICF0aGlzLnNob3dfaXRlbnM7ICAgIFxyXG4gICAgdGhpcy5yZXNvbHZlX3Bvc2l0aW9uX2Ryb3Bkb3duKHRoaXMuc2hvd19pdGVucyk7XHJcbiAgfVxyXG5cclxuICB0b0Nsb3NlKCl7XHJcbiAgICB0aGlzLnNob3dfaXRlbnMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlc29sdmVfcG9zaXRpb25fZHJvcGRvd24ob3BlbjogYm9vbGVhbil7XHJcbiAgICBpZiggb3BlbiApe1xyXG4gICAgICB0aGlzLmJveF9zdHlsZSA9ICcnO1xyXG4gICAgICB0aGlzLm1lbnVfb25fdG9wID0gJyc7ICAgXHJcbiAgICAgIGNvbnN0IGlkID0gYCR7dGhpcy5pZH1gOyBcclxuICAgICAgY29uc3QgYm94ID0gYGJveC0ke3RoaXMuaWR9YDtcclxuICAgICAgaWYoIHRoaXMudmlld3BvcnRfaGVpZ2h0ID09PSAwICl7XHJcbiAgICAgICAgdGhpcy52aWV3cG9ydF9oZWlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZWN0ICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGNvbnN0IGJveF9wb3NpdGlvbiA9IHJlY3Q/LmJvdHRvbSB8fCAwOyAgICAgIFxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmJveF9oZWlnaHQgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYm94KT8uY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICAgICAgaWYoICggdGhpcy52aWV3cG9ydF9oZWlnaHQgLSBib3hfcG9zaXRpb24pIDwgdGhpcy5ib3hfaGVpZ2h0ICl7XHJcbiAgICAgICAgICB0aGlzLm1lbnVfb25fdG9wID0gJ21lbnUtb24tdG9wJztcclxuICAgICAgICAgIHRoaXMuYm94X3N0eWxlID0gYHRvcDogLSR7ICh0aGlzLmJveF9oZWlnaHQpIH1weDsgaGVpZ2h0OiAke3RoaXMuYm94X2hlaWdodH1weDtgO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7ICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBjbGVhclRleHRTZWFyY2goKXtcclxuICAgIHRoaXMuc2VhcmNoX3RleHQgPSAnJztcclxuICAgIHRoaXMudG9TZWFyY2goJycpO1xyXG4gIH1cclxuXHJcbiAgdG9TZWFyY2goZTogYW55KSB7XHJcbiAgICBsZXQgaW5wdXQgPSAoZSAmJiBlLnRhcmdldCAmJiBlLnRhcmdldC52YWx1ZSkgPyBlLnRhcmdldC52YWx1ZSA6ICcnO1xyXG4gICAgXHJcbiAgICBsZXQgZmlsdGVyID0gKCAoIChpbnB1dCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKSApLnRyaW0oKSApLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBsZXQgdWwgPSA8YW55PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLmlkfS1vcHRpb25zYCk7XHJcbiAgICBsZXQgbGkgPSB1bC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImxhYmVsXCIpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGEgPSBsaVtpXTtcclxuICAgICAgICBjb25zdCB0eHRWYWx1ZSA9ICggKCAoIGEudGV4dENvbnRlbnQgfHwgYS5pbm5lclRleHQgKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpICkudHJpbSgpICkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodHh0VmFsdWUuaW5kZXhPZihmaWx0ZXIpID4gLTEpIHtcclxuICAgICAgICAgICAgbGlbaV0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGlbaV0uc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICB0b0VudGVyS2V5KGlucHV0X2l0ZW1zOiBzdHJpbmcgfCBzdHJpbmdbXSApe1xyXG5cclxuICAgIGlmKCAhaW5wdXRfaXRlbXMgKXsgcmV0dXJuOyB9XHJcblxyXG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcclxuICAgIGlmKCB0aGlzLnBhdHRlcm4gKXtcclxuICAgICAgdmFsaWQgPSAodGhpcy5wYXR0ZXJuKS50ZXN0KHRoaXMuaW5wdXRfaXRlbXMpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiggdmFsaWQgKXtcclxuICAgICAgdGhpcy5hZGRfaXRlbXMoKTtcclxuICAgICAgaWYoIHRoaXMub3BlblZhbHVlc0luQ2hhbmdlICl7XHJcbiAgICAgICAgdGhpcy50b09wZW4oKTtcclxuICAgICAgfSAgICBcclxuICAgIH1cclxuICAgIFxyXG5cclxuICB9XHJcblxyXG4gIGNoZWNrSXNEaXNhYmxlZChpdGVtOiBhbnkpe1xyXG4gICAgaWYoIGl0ZW0/LmRpc2FibGVkICl7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWUgPSBgJHtpdGVtLnZhbHVlfWA7XHJcbiAgICBpZiggKHRoaXMuaXRlbXMpLmxlbmd0aCA+IDAgKXtcclxuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5pdGVtcykubGVuZ3RoOyBpKysgKXtcclxuICAgICAgICBpZiggYCR7dGhpcy5pdGVtc1tpXX1gID09PSB2YWx1ZSApe1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25DaGFuZ2UoKXtcclxuICAgIHRoaXMudGNDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBvbkNoYW5nZVRvdWNoZWQoKXsgIFxyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpOyAgICAgXHJcbiAgfVxyXG5cclxuXHJcbiAgdG9TZXREZWZhdWx0KHY6YW55KXtcclxuICAgIHRoaXMuaXRlbXMgPSB2O1xyXG4gICAgdGhpcy5hZGRfaXRlbXMoKTtcclxuICB9XHJcblxyXG4gIGlubmVyVmFsdWU6IGFueSB8IHVuZGVmaW5lZDtcclxuICAvL1BsYWNlaG9sZGVycyBmb3IgdGhlIGNhbGxiYWNrcyB3aGljaCBhcmUgbGF0ZXIgcHJvdmlkZXNkXHJcbiAgLy9ieSB0aGUgQ29udHJvbCBWYWx1ZSBBY2Nlc3NvclxyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcblxyXG4gIC8vZ2V0IGFjY2Vzc29yXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgLy9zZXQgYWNjZXNzb3IgaW5jbHVkaW5nIGNhbGwgdGhlIG9uY2hhbmdlIGNhbGxiYWNrXHJcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xyXG4gICAgaWYgKHYgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2OyBcclxuICAgICAgdGhpcy50b1NldERlZmF1bHQodik7ICAgICBcclxuICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9TZXQgdG91Y2hlZCBvbiBibHVyXHJcbiAgb25CbHVyKCkge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgLy9Gcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcclxuICAgICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMudG9TZXREZWZhdWx0KHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLy9Gcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHVibGljIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKTogYW55IHtcclxuICAgIGlmKCBjICYmICggdHlwZW9mIHRoaXMucmVxdWlyZWQgIT09ICd1bmRlZmluZWQnICkgKXtcclxuICAgICAgdGhpcy51c2VfdmFsaWRhdGlvbl9yZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHJldHVybiAodGhpcy5jaGVja19pc192YWxpZCgpKSA/IG51bGwgOiAncmVxdWlyZWQnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJzaG93X2NvbXBvbmVudFwiIGNsYXNzPVwidGNsb3VkLXVpLW11bHRpcGxlcy12YWx1ZXMgdGMtZHJvcGRvd25cIiBpZD1cImFyZWEte3sgaWQgfX1cIiBbY2xhc3MudGMtcGFyZW50LXZhbGlkYXRpb25dPVwidXNlX3ZhbGlkYXRpb25fcmVxdWlyZWRcIj5cclxuXHJcblxyXG4gICAgPGZvcm0gI19mb3JtdWxhcmlvPVwibmdGb3JtXCI+XHJcblxyXG4gICAgICAgIDwhLS0ge3sgaW5wdXRfaXRlbXMgfX0gLS0+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi10b2dnbGVcIiBpZD1cInt7aWR9fVwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiJ3RydWUnXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCInZmFsc2UnXCI+XHJcblxyXG4gICAgICAgICAgICA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImdyb3VwLWlucHV0LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJveC1pbnB1dHt7IChsaXN0SXRlbXMgJiYgKGxpc3RJdGVtcykubGVuZ3RoID4gMCkgPyAnLWRhdGEtbGlzdCcgOiAnJyB9fSBiYy1sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0SXRlbXMgJiYgKGxpc3RJdGVtcykubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCIgKGNsaWNrKT1cInNob3dfaXRlbnMgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Y2xvdWQtdWktZGF0YS1saXN0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcl9saXN0XCIgW3NlYXJjaF09XCJzZWFyY2hcIiBbYm9yZGVyXT1cImZhbHNlXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIG5hbWU9XCJpdGVtc1wiIFsobmdNb2RlbCldPVwiaW5wdXRfaXRlbXNcIiAob25DaGFuZ2UpPVwidG9FbnRlcktleShpbnB1dF9pdGVtcylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaXN0SXRlbXNcIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGNsb3VkLXVpLWRhdGEtbGlzdC1vcHRpb24gW3ZhbHVlXT1cIicnICsgaXRlbS52YWx1ZVwiIFtkaXNhYmxlZF09XCJjaGVja0lzRGlzYWJsZWQoaXRlbSlcIj57eyBpdGVtPy5kZXNjcmlwdGlvbiB9fTwvdGNsb3VkLXVpLWRhdGEtbGlzdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGNsb3VkLXVpLWRhdGEtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGlzdEl0ZW1zIHx8ICEobGlzdEl0ZW1zICYmIChsaXN0SXRlbXMpLmxlbmd0aCA+IDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cInBhdHRlcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0b0VudGVyS2V5KGlucHV0X2l0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWxvd2VyY2FzZV09XCJsb3dlcmNhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC11cHBlcmNhc2VdPVwidXBwZXJjYXNlXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBuYW1lPVwiaXRlbXNcIiBjbGFzcz1cInRjLWZvcm0tY29udHJvbCBhcmVhLXRleHRcIiBbKG5nTW9kZWwpXT1cImlucHV0X2l0ZW1zXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyX2xpc3RcIiByZXF1aXJlZCBbdGl0bGVdPVwicGxhY2Vob2xkZXJfbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb3VudC1saXN0XCIgKm5nSWY9XCIoaXRlbXMgJiYgaXRlbXMubGVuZ3RoID4gMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cInt7IGl0ZW1zLmxlbmd0aCB9fSB7eyAoaXRlbXMubGVuZ3RoID4gMSkgPyAncmVnaXN0cm9zJyA6ICdyZWdpc3RybycgfX1cIiBkaXNhYmxlZCByZWFkb25seT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY291bnQtbGlzdFwiICpuZ0lmPVwiIWl0ZW1zIHx8IChpdGVtcyAmJiBpdGVtcy5sZW5ndGggPT09IDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5mby1uby12YWx1ZVwiIHZhbHVlPVwiVmF6aW9cIiBkaXNhYmxlZCByZWFkb25seT48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9uLWlucHV0LWFycm93ICBiYy1yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvT3BlbigpXCIgdGl0bGU9XCJMaXN0YSBkZSB2YWxvcmVzXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiICpuZ0lmPVwic2hvd19pdGVuc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIiAqbmdJZj1cIiFzaG93X2l0ZW5zXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gXHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ3aWR0aDogNDVweDtcIiAqbmdJZj1cInVzZUJ0bkFkZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9uLWlucHV0XCIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsaXN0SXRlbXMgfHwgIShsaXN0SXRlbXMgJiYgKGxpc3RJdGVtcykubGVuZ3RoID4gMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFfZm9ybXVsYXJpby52YWxpZFwiIGNsYXNzPVwidGMtYnRuIHRjLWJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwiYWRkX2l0ZW1zKClcIiB0aXRsZT1cIkFkaWNpb25hciBpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RJdGVtcyAmJiAobGlzdEl0ZW1zKS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhX2Zvcm11bGFyaW8udmFsaWRcIiBjbGFzcz1cInRjLWJ0biB0Yy1idG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZF9pdGVtc19ieV9kYXRhX2xpc3QoaW5wdXRfaXRlbXMpXCIgdGl0bGU9XCJBZGljaW9uYXIgaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDwhLS0gPHByZT5cclxuICAgICAgICAgICAge3sgaXRlbXMgfCBqc29uIH19XHJcbiAgICAgICAgPC9wcmU+IC0tPlxyXG5cclxuICAgIDwvZm9ybT4gXHJcblxyXG4gICAgPCEtLSBib3gtaXRlbnMtc2VsZWN0ZWQgIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInRjLWRyb3Bkb3duLW1lbnUgYm94LWl0ZW5zLXNlbGVjdGVkICB7eyBtZW51X29uX3RvcCB9fVwiIGlkPVwiYm94LXt7IGlkIH19XCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkXCIgW2NsYXNzLnRvLWhpZGVdPVwiIXNob3dfaXRlbnNcIiBbc3R5bGVdPVwiYm94X3N0eWxlXCI+XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJib3gtc2VhcmNoXCIgKm5nSWY9XCJpdGVtcyAmJiAoaXRlbXMpLmxlbmd0aCA+IDVcIj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXJlYS1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic2VhcmNoX3RleHRcIiAoaW5wdXQpPVwidG9TZWFyY2goJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiQnVzY2FyLi4uXCIgPiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhcmVhLWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJzZWFyY2hfdGV4dCA9PT0gJydcIiBjbGFzcz1cImZhcyBmYS1zZWFyY2ggaWNvbi1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJib3gtYWN0aW9uXCIgdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2VhcmNoX3RleHQgIT09ICcnXCIgKGNsaWNrKT1cImNsZWFyVGV4dFNlYXJjaCgpXCI+PGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtb3B0aW9uc1wiIGlkPVwie3sgaWQgfX0tb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYm94LWxhYmVsXCIgW25nU3R5bGVdPVwiKG1heFdpZHRoTGFiZWwpID8geydtYXgtd2lkdGgnOiBtYXhXaWR0aExhYmVsfSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LXZhbHVlXCIgW3RpdGxlXT1cIml0ZW1cIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX0gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1hY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3gtYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtcyA9PT0gdW5kZWZpbmVkIHx8IChpdGVtcyAmJiBpdGVtcy5sZW5ndGggPT09IDApIHx8IGRpc2FibGVkIHx8IGxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaXRlbSwgaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cIml0ZW1zICYmIChpdGVtcykubGVuZ3RoID4gNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXJlbW92ZS1hbGxcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJib3gtYWN0aW9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZW1vdmVfYWxsKClcIj5cclxuICAgICAgICAgICAgICAgICAgICBMaW1wYXIgdG9kYSBhIGxpc3RhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -4056,8 +4056,38 @@ class TCloudUiFiltersComponent {
|
|
|
4056
4056
|
}
|
|
4057
4057
|
}
|
|
4058
4058
|
else {
|
|
4059
|
-
if (
|
|
4060
|
-
|
|
4059
|
+
if (filter_item.type === TCFiltersType.select) {
|
|
4060
|
+
// Exclusivo para select
|
|
4061
|
+
if (filter_item.data && (filter_item.data).length > 0) {
|
|
4062
|
+
// uso do select com o notValues: string[]
|
|
4063
|
+
let current_option = [];
|
|
4064
|
+
for (let k = 0; k < (filter_item.data).length; k++) {
|
|
4065
|
+
const k_item = filter_item.data[k];
|
|
4066
|
+
if (`${k_item?.value}` === `${filter_item.searchText}`) {
|
|
4067
|
+
current_option = k_item?.notValues;
|
|
4068
|
+
break;
|
|
4069
|
+
}
|
|
4070
|
+
}
|
|
4071
|
+
if (current_option && (current_option).length > 0) {
|
|
4072
|
+
for (let v = 0; v < (current_option).length; v++) {
|
|
4073
|
+
const v_item = current_option[v];
|
|
4074
|
+
if ((item_value === v_item)) {
|
|
4075
|
+
this.setDataIndex(i, false);
|
|
4076
|
+
}
|
|
4077
|
+
}
|
|
4078
|
+
}
|
|
4079
|
+
else {
|
|
4080
|
+
// uso normal do select
|
|
4081
|
+
if (!(item_value === filter_item.searchText)) {
|
|
4082
|
+
this.setDataIndex(i, false);
|
|
4083
|
+
}
|
|
4084
|
+
}
|
|
4085
|
+
}
|
|
4086
|
+
}
|
|
4087
|
+
else {
|
|
4088
|
+
if (!(item_value.includes(filter_item.searchText) || item_value === filter_item.searchText)) {
|
|
4089
|
+
this.setDataIndex(i, false);
|
|
4090
|
+
}
|
|
4061
4091
|
}
|
|
4062
4092
|
}
|
|
4063
4093
|
}
|
|
@@ -5403,7 +5433,6 @@ class TCloudUiMultiplesValuesComponent {
|
|
|
5403
5433
|
if (!input_items) {
|
|
5404
5434
|
return;
|
|
5405
5435
|
}
|
|
5406
|
-
console.log('input_items', input_items);
|
|
5407
5436
|
let valid = true;
|
|
5408
5437
|
if (this.pattern) {
|
|
5409
5438
|
valid = (this.pattern).test(this.input_items);
|