@po-ui/ng-components 18.6.0 → 18.7.0

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.
@@ -9,6 +9,7 @@ function PoLogoComponent_a_0_Template(rf, ctx) { if (rf & 1) {
9
9
  i0.ɵɵelementEnd();
10
10
  } if (rf & 2) {
11
11
  const ctx_r0 = i0.ɵɵnextContext();
12
+ i0.ɵɵproperty("href", ctx_r0.link === true ? "./" : ctx_r0.link, i0.ɵɵsanitizeUrl);
12
13
  i0.ɵɵadvance();
13
14
  i0.ɵɵclassMap(ctx_r0.className);
14
15
  i0.ɵɵproperty("alt", ctx_r0.logoAlt)("src", ctx_r0.logo, i0.ɵɵsanitizeUrl)("title", ctx_r0.logoAlt);
@@ -40,6 +41,7 @@ export class PoLogoComponent {
40
41
  literals;
41
42
  _logo;
42
43
  _logoAlt;
44
+ _link = './';
43
45
  /**
44
46
  * Define uma classe para o elemento `img` do componente.
45
47
  *
@@ -49,13 +51,20 @@ export class PoLogoComponent {
49
51
  */
50
52
  className = 'po-logo';
51
53
  /**
52
- * Define se o componente terá o elemento âncora para a página inicial.
54
+ * Define se o componente terá o elemento âncora para uma rota específica.
53
55
  *
54
56
  * > Caso seja definido como false, o componente apenas renderizará o elemento `img`.
55
- * O valor inicial é `true`.
57
+ * > Caso seja definido como true, a rota será `./`.
58
+ * > Caso seja definido como string, a rota será a string passada.
56
59
  *
60
+ * @default `true`
57
61
  */
58
- link = true;
62
+ set link(value) {
63
+ this._link = value !== false ? value : false;
64
+ }
65
+ get link() {
66
+ return this._link;
67
+ }
59
68
  /**
60
69
  * Definie o caminho para a imagem, que será exibida como logomarca.
61
70
  *
@@ -90,16 +99,16 @@ export class PoLogoComponent {
90
99
  return value.length > MAX_LENGHT ? value.toString().substring(0, MAX_LENGHT) : value;
91
100
  }
92
101
  static ɵfac = function PoLogoComponent_Factory(t) { return new (t || PoLogoComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService)); };
93
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoLogoComponent, selectors: [["po-logo"]], inputs: { className: [0, "p-class", "className"], link: [0, "p-link", "link"], logo: [0, "p-logo", "logo"], logoAlt: [0, "p-logo-alt", "logoAlt"] }, decls: 3, vars: 2, consts: [["noLink", ""], ["href", "/", 4, "ngIf", "ngIfElse"], ["href", "/"], [3, "alt", "src", "title"]], template: function PoLogoComponent_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵtemplate(0, PoLogoComponent_a_0_Template, 2, 5, "a", 1)(1, PoLogoComponent_ng_template_1_Template, 1, 5, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
102
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoLogoComponent, selectors: [["po-logo"]], inputs: { className: [0, "p-class", "className"], link: [0, "p-link", "link"], logo: [0, "p-logo", "logo"], logoAlt: [0, "p-logo-alt", "logoAlt"] }, decls: 3, vars: 2, consts: [["noLink", ""], [3, "href", 4, "ngIf", "ngIfElse"], [3, "href"], [3, "alt", "src", "title"]], template: function PoLogoComponent_Template(rf, ctx) { if (rf & 1) {
103
+ i0.ɵɵtemplate(0, PoLogoComponent_a_0_Template, 2, 6, "a", 1)(1, PoLogoComponent_ng_template_1_Template, 1, 5, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
95
104
  } if (rf & 2) {
96
105
  const noLink_r2 = i0.ɵɵreference(2);
97
- i0.ɵɵproperty("ngIf", ctx.link)("ngIfElse", noLink_r2);
106
+ i0.ɵɵproperty("ngIf", ctx.link !== false)("ngIfElse", noLink_r2);
98
107
  } }, dependencies: [i2.NgIf], encapsulation: 2 });
99
108
  }
100
109
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoLogoComponent, [{
101
110
  type: Component,
102
- args: [{ selector: 'po-logo', template: "<a *ngIf=\"link; else noLink\" href=\"/\">\n <img [alt]=\"logoAlt\" [class]=\"className\" [src]=\"logo\" [title]=\"logoAlt\" />\n</a>\n\n<ng-template #noLink>\n <img [alt]=\"logoAlt\" [class]=\"className\" [src]=\"logo\" [title]=\"logoAlt\" />\n</ng-template>\n" }]
111
+ args: [{ selector: 'po-logo', template: "<a *ngIf=\"link !== false; else noLink\" [href]=\"link === true ? './' : link\">\n <img [alt]=\"logoAlt\" [class]=\"className\" [src]=\"logo\" [title]=\"logoAlt\" />\n</a>\n\n<ng-template #noLink>\n <img [alt]=\"logoAlt\" [class]=\"className\" [src]=\"logo\" [title]=\"logoAlt\" />\n</ng-template>\n" }]
103
112
  }], () => [{ type: i1.PoLanguageService }], { className: [{
104
113
  type: Input,
105
114
  args: ['p-class']
@@ -114,4 +123,4 @@ export class PoLogoComponent {
114
123
  args: ['p-logo-alt']
115
124
  }] }); })();
116
125
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoLogoComponent, { className: "PoLogoComponent", filePath: "lib/components/po-logo/po-logo.component.ts", lineNumber: 27 }); })();
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9nby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tbG9nby9wby1sb2dvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1sb2dvL3BvLWxvZ28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztJQ0g1Qyw0QkFBc0M7SUFDcEMseUJBQTBFO0lBQzVFLGlCQUFJOzs7SUFEbUIsY0FBbUI7SUFBbkIsK0JBQW1CO0lBQWMsQUFBYixBQUFwQyxvQ0FBZSxzQ0FBaUMseUJBQWtCOzs7SUFJdkUseUJBQTBFOzs7SUFBckQsK0JBQW1CO0lBQWMsQUFBYixBQUFwQyxvQ0FBZSxzQ0FBaUMseUJBQWtCOztBREF6RSxNQUFNLHFCQUFxQixHQUFHO0lBQzVCLEVBQUUsRUFBRTtRQUNGLGFBQWEsRUFBRSxXQUFXO0tBQzNCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsYUFBYSxFQUFFLGtCQUFrQjtLQUNsQztJQUNELEVBQUUsRUFBRTtRQUNGLGFBQWEsRUFBRSxrQkFBa0I7S0FDbEM7SUFDRCxFQUFFLEVBQUU7UUFDRixhQUFhLEVBQUUsZUFBZTtLQUMvQjtDQUNGLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBVyxHQUFHLENBQUM7QUFNL0IsTUFBTSxPQUFPLGVBQWU7SUFrRFA7SUFqRFYsUUFBUSxDQUFNO0lBRWYsS0FBSyxDQUFVO0lBQ2YsUUFBUSxDQUFTO0lBRXpCOzs7Ozs7T0FNRztJQUNlLFNBQVMsR0FBVyxTQUFTLENBQUM7SUFFaEQ7Ozs7OztPQU1HO0lBQ2MsSUFBSSxHQUFZLElBQUksQ0FBQztJQUV0Qzs7O09BR0c7SUFDSCxJQUFxQixJQUFJLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQXlCLE9BQU8sQ0FBQyxLQUFhO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQ2xILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQW1CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3RFLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLENBQUM7U0FDckUsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDOUMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdkYsQ0FBQzt5RUE1RFUsZUFBZTs2REFBZixlQUFlO1lDdEI1QixBQUpBLDREQUFzQyxvR0FJakI7OztZQUpMLEFBQVosK0JBQVksdUJBQVc7OztpRkQwQmQsZUFBZTtjQUozQixTQUFTOzJCQUNFLFNBQVM7a0RBZ0JELFNBQVM7a0JBQTFCLEtBQUs7bUJBQUMsU0FBUztZQVNDLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQU1NLElBQUk7a0JBQXhCLEtBQUs7bUJBQUMsUUFBUTtZQWNVLE9BQU87a0JBQS9CLEtBQUs7bUJBQUMsWUFBWTs7a0ZBMUNSLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBpc1R5cGVvZiB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5jb25zdCBwb0xvZ29MaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiB7XG4gICAgbG9nb21hcmNhSG9tZTogJ0hvbWUgbG9nbydcbiAgfSxcbiAgZXM6IHtcbiAgICBsb2dvbWFyY2FIb21lOiAnTG9nb21hcmNhIGluaWNpbydcbiAgfSxcbiAgcHQ6IHtcbiAgICBsb2dvbWFyY2FIb21lOiAnTG9nb21hcmNhIGluw61jaW8nXG4gIH0sXG4gIHJ1OiB7XG4gICAgbG9nb21hcmNhSG9tZTogJ9CU0L7QvCDQm9C+0LPQvtC80LDRgNC60LAnXG4gIH1cbn07XG5cbmNvbnN0IE1BWF9MRU5HSFQ6IG51bWJlciA9IDEyNTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbG9nbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1sb2dvLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb0xvZ29Db21wb25lbnQge1xuICByZWFkb25seSBsaXRlcmFsczogYW55O1xuXG4gIHByaXZhdGUgX2xvZ28/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2xvZ29BbHQ6IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lIHVtYSBjbGFzc2UgcGFyYSBvIGVsZW1lbnRvIGBpbWdgIGRvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqID4gKipJbXBvcnRhbnRlKipcbiAgICogPiBBIGNsYXNzZSBkZXZlIHNlciBkZWZpbmlkYSBhcGVuYXMgcXVhbmRvIGhvdXZlciBuZWNlc3NpZGFkZSBkZSBhanVzdGFyIG8gY29tcG9uZW50ZSBkZW50cm8gZGUgb3V0cm8gY29tcG9uZW50ZS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1jbGFzcycpIGNsYXNzTmFtZTogc3RyaW5nID0gJ3BvLWxvZ28nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgc2UgbyBjb21wb25lbnRlIHRlcsOhIG8gZWxlbWVudG8gw6JuY29yYSBwYXJhIGEgcMOhZ2luYSBpbmljaWFsLlxuICAgKlxuICAgKiA+IENhc28gc2VqYSBkZWZpbmlkbyBjb21vIGZhbHNlLCBvIGNvbXBvbmVudGUgYXBlbmFzIHJlbmRlcml6YXLDoSBvIGVsZW1lbnRvIGBpbWdgLlxuICAgKiBPIHZhbG9yIGluaWNpYWwgw6kgYHRydWVgLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWxpbmsnKSBsaW5rOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGVmaW5pZSBvIGNhbWluaG8gcGFyYSBhIGltYWdlbSwgcXVlIHNlcsOhIGV4aWJpZGEgY29tbyBsb2dvbWFyY2EuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtbG9nbycpIHNldCBsb2dvKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2dvID0gaXNUeXBlb2YodmFsdWUsICdzdHJpbmcnKSAmJiB2YWx1ZS50cmltKCkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBsb2dvKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2dvO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBvIHRleHRvIGFsdGVybmF0aXZvIHBhcmEgYSBsb2dvbWFyY2EuXG4gICAqXG4gICAqID4gKipJbXBvcnRhbnRlKipcbiAgICogPiBDYXNvIGVzdGEgcHJvcHJpZWRhZGUgbsOjbyBzZWphIGRlZmluaWRhIG8gdGV4dG8gcGFkcsOjbyBzZXLDoSBcIkxvZ29tYXJjYSBpbsOtY2lvXCIuXG4gICAqL1xuICBASW5wdXQoJ3AtbG9nby1hbHQnKSBzZXQgbG9nb0FsdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbG9nb0FsdCA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgJiYgdmFsdWUudHJpbSgpID8gdGhpcy5tYXhMZW5ndGgodmFsdWUpIDogdGhpcy5saXRlcmFscy5sb2dvbWFyY2FIb21lO1xuICB9XG5cbiAgZ2V0IGxvZ29BbHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ29BbHQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlKSB7XG4gICAgdGhpcy5saXRlcmFscyA9IHtcbiAgICAgIC4uLnBvTG9nb0xpdGVyYWxzRGVmYXVsdFt0aGlzLnBvTGFuZ3VhZ2VTZXJ2aWNlPy5nZXRMYW5ndWFnZURlZmF1bHQoKV0sXG4gICAgICAuLi5wb0xvZ29MaXRlcmFsc0RlZmF1bHRbdGhpcy5wb0xhbmd1YWdlU2VydmljZT8uZ2V0U2hvcnRMYW5ndWFnZSgpXVxuICAgIH07XG4gICAgdGhpcy5fbG9nb0FsdCA9IHRoaXMubGl0ZXJhbHMubG9nb21hcmNhSG9tZTtcbiAgfVxuXG4gIHByaXZhdGUgbWF4TGVuZ3RoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gTUFYX0xFTkdIVCA/IHZhbHVlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIE1BWF9MRU5HSFQpIDogdmFsdWU7XG4gIH1cbn1cbiIsIjxhICpuZ0lmPVwibGluazsgZWxzZSBub0xpbmtcIiBocmVmPVwiL1wiPlxuICA8aW1nIFthbHRdPVwibG9nb0FsdFwiIFtjbGFzc109XCJjbGFzc05hbWVcIiBbc3JjXT1cImxvZ29cIiBbdGl0bGVdPVwibG9nb0FsdFwiIC8+XG48L2E+XG5cbjxuZy10ZW1wbGF0ZSAjbm9MaW5rPlxuICA8aW1nIFthbHRdPVwibG9nb0FsdFwiIFtjbGFzc109XCJjbGFzc05hbWVcIiBbc3JjXT1cImxvZ29cIiBbdGl0bGVdPVwibG9nb0FsdFwiIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9nby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tbG9nby9wby1sb2dvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1sb2dvL3BvLWxvZ28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztJQ0g1Qyw0QkFBNEU7SUFDMUUseUJBQTBFO0lBQzVFLGlCQUFJOzs7SUFGbUMsa0ZBQW9DO0lBQ3BELGNBQW1CO0lBQW5CLCtCQUFtQjtJQUFjLEFBQWIsQUFBcEMsb0NBQWUsc0NBQWlDLHlCQUFrQjs7O0lBSXZFLHlCQUEwRTs7O0lBQXJELCtCQUFtQjtJQUFjLEFBQWIsQUFBcEMsb0NBQWUsc0NBQWlDLHlCQUFrQjs7QURBekUsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixFQUFFLEVBQUU7UUFDRixhQUFhLEVBQUUsV0FBVztLQUMzQjtJQUNELEVBQUUsRUFBRTtRQUNGLGFBQWEsRUFBRSxrQkFBa0I7S0FDbEM7SUFDRCxFQUFFLEVBQUU7UUFDRixhQUFhLEVBQUUsa0JBQWtCO0tBQ2xDO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsYUFBYSxFQUFFLGVBQWU7S0FDL0I7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQVcsR0FBRyxDQUFDO0FBTS9CLE1BQU0sT0FBTyxlQUFlO0lBMkRQO0lBMURWLFFBQVEsQ0FBTTtJQUVmLEtBQUssQ0FBVTtJQUNmLFFBQVEsQ0FBUztJQUNqQixLQUFLLEdBQXFCLElBQUksQ0FBQztJQUV2Qzs7Ozs7O09BTUc7SUFDZSxTQUFTLEdBQVcsU0FBUyxDQUFDO0lBRWhEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBcUIsSUFBSSxDQUFDLEtBQXVCO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBcUIsSUFBSSxDQUFDLEtBQWE7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDN0UsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUF5QixPQUFPLENBQUMsS0FBYTtRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUNsSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFtQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztZQUN0RSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3JFLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQzlDLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBYTtRQUM3QixPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLENBQUM7eUVBckVVLGVBQWU7NkRBQWYsZUFBZTtZQ3RCNUIsQUFKQSw0REFBNEUsb0dBSXZEOzs7WUFKSyxBQUF0Qix5Q0FBc0IsdUJBQVc7OztpRkQwQnhCLGVBQWU7Y0FKM0IsU0FBUzsyQkFDRSxTQUFTO2tEQWlCRCxTQUFTO2tCQUExQixLQUFLO21CQUFDLFNBQVM7WUFXSyxJQUFJO2tCQUF4QixLQUFLO21CQUFDLFFBQVE7WUFZTSxJQUFJO2tCQUF4QixLQUFLO21CQUFDLFFBQVE7WUFjVSxPQUFPO2tCQUEvQixLQUFLO21CQUFDLFlBQVk7O2tGQW5EUixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuY29uc3QgcG9Mb2dvTGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjoge1xuICAgIGxvZ29tYXJjYUhvbWU6ICdIb21lIGxvZ28nXG4gIH0sXG4gIGVzOiB7XG4gICAgbG9nb21hcmNhSG9tZTogJ0xvZ29tYXJjYSBpbmljaW8nXG4gIH0sXG4gIHB0OiB7XG4gICAgbG9nb21hcmNhSG9tZTogJ0xvZ29tYXJjYSBpbsOtY2lvJ1xuICB9LFxuICBydToge1xuICAgIGxvZ29tYXJjYUhvbWU6ICfQlNC+0Lwg0JvQvtCz0L7QvNCw0YDQutCwJ1xuICB9XG59O1xuXG5jb25zdCBNQVhfTEVOR0hUOiBudW1iZXIgPSAxMjU7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWxvZ28nLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbG9nby5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUG9Mb2dvQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgbGl0ZXJhbHM6IGFueTtcblxuICBwcml2YXRlIF9sb2dvPzogc3RyaW5nO1xuICBwcml2YXRlIF9sb2dvQWx0OiBzdHJpbmc7XG4gIHByaXZhdGUgX2xpbms6IGJvb2xlYW4gfCBzdHJpbmcgPSAnLi8nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdW1hIGNsYXNzZSBwYXJhIG8gZWxlbWVudG8gYGltZ2AgZG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGUqKlxuICAgKiA+IEEgY2xhc3NlIGRldmUgc2VyIGRlZmluaWRhIGFwZW5hcyBxdWFuZG8gaG91dmVyIG5lY2Vzc2lkYWRlIGRlIGFqdXN0YXIgbyBjb21wb25lbnRlIGRlbnRybyBkZSBvdXRybyBjb21wb25lbnRlLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWNsYXNzJykgY2xhc3NOYW1lOiBzdHJpbmcgPSAncG8tbG9nbyc7XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBvIGNvbXBvbmVudGUgdGVyw6EgbyBlbGVtZW50byDDom5jb3JhIHBhcmEgdW1hIHJvdGEgZXNwZWPDrWZpY2EuXG4gICAqXG4gICAqID4gQ2FzbyBzZWphIGRlZmluaWRvIGNvbW8gZmFsc2UsIG8gY29tcG9uZW50ZSBhcGVuYXMgcmVuZGVyaXphcsOhIG8gZWxlbWVudG8gYGltZ2AuXG4gICAqID4gQ2FzbyBzZWphIGRlZmluaWRvIGNvbW8gdHJ1ZSwgYSByb3RhIHNlcsOhIGAuL2AuXG4gICAqID4gQ2FzbyBzZWphIGRlZmluaWRvIGNvbW8gc3RyaW5nLCBhIHJvdGEgc2Vyw6EgYSBzdHJpbmcgcGFzc2FkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICBASW5wdXQoJ3AtbGluaycpIHNldCBsaW5rKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5fbGluayA9IHZhbHVlICE9PSBmYWxzZSA/IHZhbHVlIDogZmFsc2U7XG4gIH1cblxuICBnZXQgbGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGluaztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmllIG8gY2FtaW5obyBwYXJhIGEgaW1hZ2VtLCBxdWUgc2Vyw6EgZXhpYmlkYSBjb21vIGxvZ29tYXJjYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1sb2dvJykgc2V0IGxvZ28odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xvZ28gPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpICYmIHZhbHVlLnRyaW0oKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGxvZ28oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ287XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIG8gdGV4dG8gYWx0ZXJuYXRpdm8gcGFyYSBhIGxvZ29tYXJjYS5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGUqKlxuICAgKiA+IENhc28gZXN0YSBwcm9wcmllZGFkZSBuw6NvIHNlamEgZGVmaW5pZGEgbyB0ZXh0byBwYWRyw6NvIHNlcsOhIFwiTG9nb21hcmNhIGluw61jaW9cIi5cbiAgICovXG4gIEBJbnB1dCgncC1sb2dvLWFsdCcpIHNldCBsb2dvQWx0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2dvQWx0ID0gaXNUeXBlb2YodmFsdWUsICdzdHJpbmcnKSAmJiB2YWx1ZS50cmltKCkgPyB0aGlzLm1heExlbmd0aCh2YWx1ZSkgOiB0aGlzLmxpdGVyYWxzLmxvZ29tYXJjYUhvbWU7XG4gIH1cblxuICBnZXQgbG9nb0FsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nb0FsdDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLmxpdGVyYWxzID0ge1xuICAgICAgLi4ucG9Mb2dvTGl0ZXJhbHNEZWZhdWx0W3RoaXMucG9MYW5ndWFnZVNlcnZpY2U/LmdldExhbmd1YWdlRGVmYXVsdCgpXSxcbiAgICAgIC4uLnBvTG9nb0xpdGVyYWxzRGVmYXVsdFt0aGlzLnBvTGFuZ3VhZ2VTZXJ2aWNlPy5nZXRTaG9ydExhbmd1YWdlKCldXG4gICAgfTtcbiAgICB0aGlzLl9sb2dvQWx0ID0gdGhpcy5saXRlcmFscy5sb2dvbWFyY2FIb21lO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXhMZW5ndGgodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiBNQVhfTEVOR0hUID8gdmFsdWUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgTUFYX0xFTkdIVCkgOiB2YWx1ZTtcbiAgfVxufVxuIiwiPGEgKm5nSWY9XCJsaW5rICE9PSBmYWxzZTsgZWxzZSBub0xpbmtcIiBbaHJlZl09XCJsaW5rID09PSB0cnVlID8gJy4vJyA6IGxpbmtcIj5cbiAgPGltZyBbYWx0XT1cImxvZ29BbHRcIiBbY2xhc3NdPVwiY2xhc3NOYW1lXCIgW3NyY109XCJsb2dvXCIgW3RpdGxlXT1cImxvZ29BbHRcIiAvPlxuPC9hPlxuXG48bmctdGVtcGxhdGUgI25vTGluaz5cbiAgPGltZyBbYWx0XT1cImxvZ29BbHRcIiBbY2xhc3NdPVwiY2xhc3NOYW1lXCIgW3NyY109XCJsb2dvXCIgW3RpdGxlXT1cImxvZ29BbHRcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -97,6 +97,7 @@ export class PoMenuBaseComponent {
97
97
  _menus = [];
98
98
  _params;
99
99
  _service;
100
+ _logoLink = true;
100
101
  /**
101
102
  * @optional
102
103
  *
@@ -287,6 +288,24 @@ export class PoMenuBaseComponent {
287
288
  * - Caso não informar um valor, esta propriedade passa a assumir o valor informado na propriedade `p-logo`.
288
289
  */
289
290
  shortLogo;
291
+ /**
292
+ * @optional
293
+ *
294
+ * @description
295
+ * Define o link para a rota ao clicar no logo do menu.
296
+ *
297
+ * - Se o valor for uma string, define a rota para o link informado.
298
+ * - Se for `false`, o logo não terá link associado.
299
+ * - Se for `true`, o logo terá a rota padrão `./`.
300
+ *
301
+ * @default `true`
302
+ */
303
+ set logoLink(value) {
304
+ this._logoLink = value === false ? false : value || true;
305
+ }
306
+ get logoLink() {
307
+ return this._logoLink;
308
+ }
290
309
  constructor(menuGlobalService, menuService, languageService) {
291
310
  this.menuGlobalService = menuGlobalService;
292
311
  this.menuService = menuService;
@@ -390,7 +409,7 @@ export class PoMenuBaseComponent {
390
409
  }
391
410
  }
392
411
  static ɵfac = function PoMenuBaseComponent_Factory(t) { return new (t || PoMenuBaseComponent)(i0.ɵɵdirectiveInject(i1.PoMenuGlobalService), i0.ɵɵdirectiveInject(i2.PoMenuService), i0.ɵɵdirectiveInject(i3.PoLanguageService)); };
393
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoMenuBaseComponent, inputs: { automaticToggle: [2, "p-automatic-toggle", "automaticToggle", convertToBoolean], collapsed: [0, "p-collapsed", "collapsed"], menus: [0, "p-menus", "menus"], filter: [0, "p-filter", "filter"], searchTreeItems: [0, "p-search-tree-items", "searchTreeItems"], service: [0, "p-service", "service"], params: [0, "p-params", "params"], logo: [0, "p-logo", "logo"], logoAlt: [0, "p-logo-alt", "logoAlt"], shortLogo: [0, "p-short-logo", "shortLogo"] }, features: [i0.ɵɵInputTransformsFeature] });
412
+ static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoMenuBaseComponent, inputs: { automaticToggle: [2, "p-automatic-toggle", "automaticToggle", convertToBoolean], collapsed: [0, "p-collapsed", "collapsed"], menus: [0, "p-menus", "menus"], filter: [0, "p-filter", "filter"], searchTreeItems: [0, "p-search-tree-items", "searchTreeItems"], service: [0, "p-service", "service"], params: [0, "p-params", "params"], logo: [0, "p-logo", "logo"], logoAlt: [0, "p-logo-alt", "logoAlt"], shortLogo: [0, "p-short-logo", "shortLogo"], logoLink: [0, "p-logo-link", "logoLink"] }, features: [i0.ɵɵInputTransformsFeature] });
394
413
  }
395
414
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMenuBaseComponent, [{
396
415
  type: Directive
@@ -424,5 +443,8 @@ export class PoMenuBaseComponent {
424
443
  }], shortLogo: [{
425
444
  type: Input,
426
445
  args: ['p-short-logo']
446
+ }], logoLink: [{
447
+ type: Input,
448
+ args: ['p-logo-link']
427
449
  }] }); })();
428
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFROUcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLGdCQUFnQjtRQUM5QixlQUFlLEVBQUUsNkNBQTZDO1FBQzlELEtBQUssRUFBRSxZQUFZO1FBQ25CLElBQUksRUFBRSxXQUFXO0tBQ2xCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLHdCQUF3QjtRQUN0QyxlQUFlLEVBQUUsaURBQWlEO1FBQ2xFLEtBQUssRUFBRSxhQUFhO1FBQ3BCLElBQUksRUFBRSxZQUFZO0tBQ25CO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyxlQUFlLEVBQUUsZ0RBQWdEO1FBQ2pFLEtBQUssRUFBRSxhQUFhO1FBQ3BCLElBQUksRUFBRSxZQUFZO0tBQ25CO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLG1CQUFtQjtRQUNqQyxlQUFlLEVBQUUsK0NBQStDO1FBQ2hFLEtBQUssRUFBRSxjQUFjO1FBQ3JCLElBQUksRUFBRSxjQUFjO0tBQ3JCO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnREc7QUFFSCxNQUFNLE9BQWdCLG1CQUFtQjtJQXVPOUI7SUFD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QixLQUFLO21CQUFDLFVBQVU7WUFvQkEsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBY00sT0FBTztrQkFBM0IsS0FBSzttQkFBQyxZQUFZO1lBZ0JJLFNBQVM7a0JBQS9CLEtBQUs7bUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgY29udmVydFRvSW50LCBpc0V4dGVybmFsTGluaywgaXNUeXBlb2YsIHV1aWQsIHZhbGlkVmFsdWUgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTWVudUZpbHRlciB9IGZyb20gJy4vcG8tbWVudS1maWx0ZXIvcG8tbWVudS1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTWVudUl0ZW0gfSBmcm9tICcuL3BvLW1lbnUtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NZW51R2xvYmFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS1nbG9iYWwuc2VydmljZSc7XG5pbXBvcnQgeyBQb01lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1tZW51LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgcG9NZW51TGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjoge1xuICAgIGl0ZW1Ob3RGb3VuZDogJ0l0ZW0gbm90IGZvdW5kJyxcbiAgICBlbXB0eUxhYmVsRXJyb3I6ICdBdHRyaWJ1dGUgUG9NZW51SXRlbS5sYWJlbCBjYW4gbm90IGJlIGVtcHR5JyxcbiAgICBjbG9zZTogJ0Nsb3NlIG1lbnUnLFxuICAgIG9wZW46ICdPcGVuIG1lbnUnXG4gIH0sXG4gIGVzOiB7XG4gICAgaXRlbU5vdEZvdW5kOiAnRWxlbWVudG8gbm8gZW5jb250cmFkbycsXG4gICAgZW1wdHlMYWJlbEVycm9yOiAnRWwgYXRyaWJ1dG8gUG9NZW51SXRlbS5sYWJlbCBubyBwdWVkZSBzZXIgdmFjw61vJyxcbiAgICBjbG9zZTogJ0NlcnJhciBtZW7DuicsXG4gICAgb3BlbjogJ0FicmlyIG1lbsO6J1xuICB9LFxuICBwdDoge1xuICAgIGl0ZW1Ob3RGb3VuZDogJ0l0ZW0gbsOjbyBlbmNvbnRyYWRvJyxcbiAgICBlbXB0eUxhYmVsRXJyb3I6ICdPIGF0cmlidXRvIFBvTWVudUl0ZW0ubGFiZWwgbsOjbyBwb2RlIHNlciB2YXppbycsXG4gICAgY2xvc2U6ICdGZWNoYXIgbWVudScsXG4gICAgb3BlbjogJ0FicmlyIG1lbnUnXG4gIH0sXG4gIHJ1OiB7XG4gICAgaXRlbU5vdEZvdW5kOiAn0J/RgNC10LTQvNC10YIg0L3QtSDQvdCw0LnQtNC10L0nLFxuICAgIGVtcHR5TGFiZWxFcnJvcjogJ9CQ0YLRgNC40LHRg9GCIFBvTWVudUl0ZW0ubGFiZWwg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINC/0YPRgdGC0YvQvCcsXG4gICAgY2xvc2U6ICfQl9Cw0LrRgNGL0YLRjCDQvNC10L3RjicsXG4gICAgb3BlbjogJ9Ce0YLQutGA0YvRgtGMINC80LXQvdGOJ1xuICB9XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEVzdGUgw6kgdW0gY29tcG9uZW50ZSBkZSBtZW51IGxhdGVyYWwgcXVlIMOpIHV0aWxpemFkbyBwYXJhIG5hdmVnYcOnw6NvIG5hcyBww6FnaW5hcyBkZSB1bWEgYXBsaWNhw6fDo28uXG4gKlxuICogTyBjb21wb25lbnRlIHBvLW1lbnUgcmVjZWJlIHVtYSBsaXN0YSBkZSBvYmpldG9zIGRvIHRpcG8gYE1lbnVJdGVtYCBjb20gYXMgaW5mb3JtYcOnw7VlcyBkb3MgaXRlbnMgZGUgbWVudSBjb21vXG4gKiB0ZXh0b3MsIGxpbmtzIHBhcmEgcmVkaXJlY2lvbmFtZW50bywgYcOnw7VlcywgYXTDqSA0IG7DrXZlaXMgZGUgbWVudSBlIMOtY29uZXMgcGFyYSBvIHByaW1laXJvIG7DrXZlbCBkZSBtZW51LlxuICpcbiAqICMjIyMgVG9rZW5zIGN1c3RvbWl6w6F2ZWlzXG4gKlxuICogw4kgcG9zc8OtdmVsIGFsdGVyYXIgbyBlc3RpbG8gZG8gY29tcG9uZW50ZSB1c2FuZG8gb3Mgc2VndWludGVzIHRva2VucyAoQ1NTKTpcbiAqXG4gKiA+IFBhcmEgbWFpb3JlcyBpbmZvcm1hw6fDtWVzLCBhY2Vzc2UgbyBndWlhIFtQZXJzb25hbGl6YW5kbyBvIFRlbWEgUGFkcsOjbyBjb20gVG9rZW5zIENTU10oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvdGhlbWUtY3VzdG9taXphdGlvbikuXG4gKlxuICogfCBQcm9wcmllZGFkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyacOnw6NvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYWxvciBQYWRyw6NvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKkRlZmF1bHQgVmFsdWVzKiogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1ib3JkZXItcmFkaXVzYCAgICAgICAgICAgICAgICAgICAgICB8IENvbnTDqW0gbyB2YWxvciBkbyByYWlvIGRvcyBjYW50b3MgZG8gZWxlbWVudG8mbmJzcDsgICB8IGB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYm9yZGVyLWNvbG9yYCAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGEgYm9yZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvcmAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBWYXIoLS0tLWNvbG9yLW5ldXRyYWwtbGlnaHQtMDUpYCAgICAgICAgICAgICAgIHxcbiAqIHwgKipNZW51IEZvb3RlcioqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGxhIGRvIG1lbnUgZm9vdGVyICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1zaXplYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYW1hbmhvIGRhIGZvbnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXNpemUtZGVmYXVsdClgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tbGluZS1oZWlnaHRgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYW1hbmhvIGRhIGxhYmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1saW5lLWhlaWdodC1tZClgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tb3V0bGluZS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgfCBDb3IgZG8gb3V0bGluZSBkbyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZm9jdXMpYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC13ZWlnaHQtbHZsMGAgICAgICAgICAgICAgICAgICAgfCBQZXNvIGRhIGZvbnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXdlaWdodC1ib2xkKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipwby1tZW51LWl0ZW0qKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1mYW1pbHlgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYW3DrWxpYSB0aXBvZ3LDoWZpY2EgdXNhZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtZmFtaWx5LXRoZW1lKWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LXNpemVgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgZm9udGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtc2l6ZS1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1saW5lLWhlaWdodGAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgbGFiZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWxpbmUtaGVpZ2h0LW1kKWAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1ib3JkZXItcmFkaXVzYCAgICAgICAgICAgICAgICAgICAgICB8IENvbnTDqW0gbyB2YWxvciBkbyByYWlvIGRvcyBjYW50b3MgZG8gZWxlbWVudG8mbmJzcDsgICB8IGB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIGRvIGl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvcmAgICAgICAgICAgICAgICAgICAgfCBDb3IgZG8gYmFja2dyb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB0cmFuc3BhcmVudGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipIb3ZlcioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItaG92ZXJgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1kYXJrZXN0KWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1ob3ZlcmAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gaG92ZXIgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVyKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipGb2N1c2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tb3V0bGluZS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgfCBDb3IgZG8gb3V0bGluZSBkbyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZm9jdXMpYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipQcmVzc2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1wcmVzc2VkYCAmbmJzcDsgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGUgcHJlc3Npb25hZG8mbmJzcDsgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipBY3RpdmVkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1hY3RpdmVkYCAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gYWN0aXZlZCAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1kYXJrZXN0KWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItYWN0aXZlZGAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBhY3RpdmVkICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVyKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipGb250KiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC13ZWlnaHQtbHZsMGAgICAgICAgICAgICAgICAgICAgfCBQZXNvIGRhIGZvbnRlIGJvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXdlaWdodC1ib2xkKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC13ZWlnaHQtbHZsMWAgICAgICAgICAgICAgICAgICAgfCBQZXNvIGRhIGZvbnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiA8YnI+XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTWVudUJhc2VDb21wb25lbnQge1xuICBhbGxvd0ljb25zOiBib29sZWFuO1xuICBhbGxvd0NvbGxhcHNlTWVudTogYm9vbGVhbjtcbiAgYWxsb3dDb2xsYXBzZUhvdmVyOiBib29sZWFuO1xuXG4gIGZpbHRlcmVkSXRlbXM7XG4gIGZpbHRlclNlcnZpY2U6IFBvTWVudUZpbHRlcjtcblxuICByZWFkb25seSBsaXRlcmFsczogYW55O1xuXG4gIHByaXZhdGUgX2NvbGxhcHNlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9maWx0ZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VhcmNoVHJlZUl0ZW1zID0gZmFsc2U7XG4gIHByaXZhdGUgX2xldmVsO1xuICBwcml2YXRlIF9tYXhMZXZlbCA9IDQ7XG4gIHByaXZhdGUgX21lbnVzID0gW107XG4gIHByaXZhdGUgX3BhcmFtczogYW55O1xuICBwcml2YXRlIF9zZXJ2aWNlOiBzdHJpbmcgfCBQb01lbnVGaWx0ZXI7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhwYW5kZSBlIENvbGFwc2EgKHJldHJhaSkgbyBtZW51IGF1dG9tYXRpY2FtZW50ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG9tYXRpYy10b2dnbGUnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b21hdGljVG9nZ2xlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ29sYXBzYSAocmV0cmFpKSBvIG1lbnUgZSBjYXNvIHJlY2ViYSBvIHZhbG9yIGBmYWxzZWAgZXhwYW5kZSBvIG1lbnUuXG4gICAqXG4gICAqID4gVXRpbGl6ZSBlc3RhIHByb3ByaWVkYWRlIHBhcmEgaW5pY2lhciBvIG1lbnUgY29sYXBzYWRvLlxuICAgKlxuICAgKiA+IEFvIHV0aWxpemFyIG9zIG3DqXRvZG9zIFtgY29sYXBzZWBdKGRvY3VtZW50YXRpb24vcG8tbWVudSNjb2xhcHNlTWV0aG9kKSwgW2BleHBhbmRgXShkb2N1bWVudGF0aW9uL3BvLW1lbnUjZXhwYW5kTWV0aG9kKSBlXG4gICAqIFtgdG9nZ2xlYF0oZG9jdW1lbnRhdGlvbi9wby1tZW51I3RvZ2dsZU1ldGhvZCkgbyB2YWxvciBkZXN0YSBwcm9wcmllZGFkZSBuw6NvIMOpIGFsdGVyYWRvLlxuICAgKlxuICAgKiAqKkltcG9ydGFudGU6KipcbiAgICpcbiAgICogPiBPIG1lbnUgc2Vyw6EgY29sYXBzYWRvL2V4cGFuZGlkbyBhcGVuYXMgc2UgdG9kb3Mgb3MgaXRlbnMgZGUgbWVudSB0aXZlcmVtIHZhbG9yIG5hcyBwcm9wcmllZGFkZXMgYGljb25gIGUgYHNob3J0TGFiZWxgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtY29sbGFwc2VkJykgc2V0IGNvbGxhcHNlZChjb2xsYXBzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jb2xsYXBzZWQgPSBjb252ZXJ0VG9Cb29sZWFuKGNvbGxhcHNlZCk7XG5cbiAgICB0aGlzLmFsbG93Q29sbGFwc2VIb3ZlciA9IHRoaXMuX2NvbGxhcHNlZDtcbiAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcygpO1xuICB9XG5cbiAgZ2V0IGNvbGxhcHNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGFwc2VkO1xuICB9XG5cbiAgLyoqIExpc3RhIGRvcyBpdGVucyBkbyBtZW51LiBTZSBvIHZhbG9yIGVzdGl2ZXIgaW5kZWZpbmlkbyBvdSBpbnbDoWxpZG8sIHNlcsOhIGluaWNpYWxpemFkbyBjb21vIHVtIGFycmF5IHZhemlvLiAqL1xuICBASW5wdXQoJ3AtbWVudXMnKSBzZXQgbWVudXMobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+KSB7XG4gICAgdGhpcy5fbWVudXMgPSBBcnJheS5pc0FycmF5KG1lbnVzKSA/IG1lbnVzIDogW107XG5cbiAgICB0aGlzLm1lbnVHbG9iYWxTZXJ2aWNlLnNlbmRNZW51cyhtZW51cyk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVybFJvdXRlciA9IHRoaXMuY2hlY2tpbmdSb3V0ZXJDaGlsZHJlbkZyYWdtZW50cygpO1xuICAgICAgdGhpcy5jaGVja0FjdGl2ZU1lbnVCeVVybCh1cmxSb3V0ZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1lbnVzKCkge1xuICAgIHJldHVybiB0aGlzLl9tZW51cztcbiAgfVxuXG4gIGdldCBtYXhMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4TGV2ZWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSB1bSBjYW1wbyBwYXJhIHBlc3F1aXNhIG5vIG1lbnUuXG4gICAqIEEgcGVzcXVpc2Egw6kgcmVhbGl6YWRhIGVtIHRvZG9zIG9zIG7DrXZlaXMgZG8gbWVudSBlIGJ1c2NhIGFwZW5hcyBwZWxvcyBpdGVucyBxdWUgY29udMOpbSB1bWEgYcOnw6NvIGUvb3UgbGluayBkZWZpbmlkb3MsXG4gICAqIG91IHRhbWLDqW0sIHBvZGUgc2VyIHJlYWxpemFkYSBhdHJhdsOpcyBkZSB1bSBzZXJ2acOnbyBkZWZpbmlkbyBuYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlYC5cbiAgICpcbiAgICogPiBPIGNhbXBvIGRlIHBlc3F1aXNhIMOpIGRlc2FiaWxpdGFkbyBzZSBvIG1lbnUgZXN0aXZlciBjb2xhcHNhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXInKSBzZXQgZmlsdGVyKGZpbHRlcjogYm9vbGVhbikge1xuICAgIHRoaXMuX2ZpbHRlciA9IDxhbnk+ZmlsdGVyID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGZpbHRlcik7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gWy4uLnRoaXMuX21lbnVzXTtcbiAgfVxuXG4gIGdldCBmaWx0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFF1YW5kbyBhdGl2YWRvLCBhIHBlc3F1aXNhIHRhbWLDqW0gcmV0b3JuYXLDoSBpdGVucyBhZ3J1cGFkb3JlcyBhbMOpbSBkb3MgaXRlbnMgcXVlIGNvbnTDqm0gdW1hIGHDp8OjbyBlL291IGxpbmsgZGVmaW5pZG9zLlxuICAgKiBJc3NvIHBvZGUgc2VyIMO6dGlsIHF1YW5kbyBzZSBkZXNlamEgZW5jb250cmFyIHJhcGlkYW1lbnRlIGNhdGVnb3JpYXMgb3Ugc2XDp8O1ZXMgZG8gbWVudS5cbiAgICpcbiAgICogPiDDiSBuZWNlc3PDoXJpbyBxdWUgYSBwcm9wcmllZGFkZSBgcC1maWx0ZXJgIGVzdGVqYSBoYWJpbGl0YWRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atc2VhcmNoLXRyZWUtaXRlbXMnKSBzZXQgc2VhcmNoVHJlZUl0ZW1zKHNlYXJjaFRyZWVJdGVtczogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlYXJjaFRyZWVJdGVtcyA9IDxhbnk+c2VhcmNoVHJlZUl0ZW1zID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHNlYXJjaFRyZWVJdGVtcyk7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gWy4uLnRoaXMuX21lbnVzXTtcbiAgfVxuXG4gIGdldCBzZWFyY2hUcmVlSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRyZWVJdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE5lc3RhIHByb3ByaWVkYWRlIGRldmUgc2VyIGluZm9ybWFkYSBhIFVSTCBkbyBzZXJ2acOnbyBlbSBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgcmVhbGl6YXIgbyBmaWx0cm8gZGUgaXRlbnMgZG9cbiAgICogbWVudSBxdWFuZG8gcmVhbGl6YXIgdW1hIGJ1c2NhLiBDYXNvIGhhamEgYSBuZWNlc3NpZGFkZSBkZSBjdXN0b21pemHDp8OjbywgcG9kZSBzZXIgaW5mb3JtYWRvIHVtXG4gICAqIHNlcnZpw6dvIGltcGxlbWVudGFuZG8gYSBpbnRlcmZhY2UgYFBvTWVudUZpbHRlcmAuXG4gICAqXG4gICAqIENhc28gdXRpbGl6YWRhIHVtYSBVUkwsIG8gc2VydmnDp28gZGV2ZSByZXRvcm5hciBvcyBkYWRvcyBjb25mb3JtZSBvXG4gICAqIFtHdWlhIGRlIGltcGxlbWVudGHDp8OjbyBkZSBBUElzXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpIGRvIFBPIFVJLlxuICAgKlxuICAgKiBRdWFuZG8gdXRpbGl6YWRhIHVtYSBVUkwgZGUgc2VydmnDp28sIHNlcsOhIHJlYWxpemFkbyB1bSAqR0VUKiBuYSBVUkwgaW5mb3JtYWRhLCBwYXNzYW5kbyBvIHZhbG9yIGRpZ2l0YWRvXG4gICAqIG5vIHBhcsOibWV0cm8gYHNlYXJjaGAsIHZlamEgZXhlbXBsbzpcbiAgICpcbiAgICogPiBPIGZpbHRybyBubyBzZXJ2acOnbyBzZXLDoSByZWFsaXphZG8gY2FzbyBjb250ZW5oYSBubyBtw61uaW1vIHRyw6pzIGNhcmFjdGVyZXMgbm8gY2FtcG8gZGUgYnVzY2EsIHBvciBleGVtcGxvIGB0b3RgLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLW1lbnUgcC1zZXJ2aWNlPVwiL2FwaS92MS9mbmQvbWVudVwiPlxuICAgKiA8L3BvLW1lbnU+XG4gICAqXG4gICAqIFJlcXVpc2nDp8OjbzogR0VUIC9hcGkvdjEvZm5kL21lbnU/c2VhcmNoPWNvbnRhc1xuICAgKiBgYGBcbiAgICpcbiAgICogPiDDiSBuZWNlc3PDoXJpbyBxdWUgcHJvcHJpZWRhZGUgYHAtZmlsdGVyYCBlc3RlamEgaGFiaWxpdGFkYS5cbiAgICovXG4gIEBJbnB1dCgncC1zZXJ2aWNlJykgc2V0IHNlcnZpY2UodmFsdWU6IHN0cmluZyB8IFBvTWVudUZpbHRlcikge1xuICAgIHRoaXMuX3NlcnZpY2UgPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UodGhpcy5zZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBzZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIHVtIG9iamV0byBxdWUgZGVzZWphLXNlIHV0aWxpemFyIG5hIHJlcXVpc2nDp8OjbyBkZSBmaWx0cm8gZG9zIGl0ZW5zIGRlIG1lbnUuXG4gICAqXG4gICAqIENhc28gdXRpbGl6YWRvIHVtIHNlcnZpw6dvIGN1c3RvbWl6YWRvLCBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIGBQb01lbnVGaWx0ZXJgLCBvIHZhbG9yIGRlc3RhIHByb3ByaWVkYWRlXG4gICAqIHNlcsOhIHBhc3NhZG8gY29tbyBwYXLDom1ldHJvLCBuYSBmdW7Dp8OjbyBgZ2V0RmlsdGVyZWREYXRhYC5cbiAgICpcbiAgICogUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHNlcnZpw6dvLCBzZXLDoSByZWFsaXphZG8gdW0gKkdFVCogbmEgVVJMIGluZm9ybWFkYSwgcGFzc2FuZG8gb3MgdmFsb3JlcyBpbmZvcm1hZG9zXG4gICAqIG5lc3RhIHByb3ByaWVkYWRlIGVtIGNvbmp1bnRvIGNvbSBvIHBhcsOibWV0cm8gYHNlYXJjaGAsIHZlamEgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1tZW51IHAtc2VydmljZT1cIi9hcGkvdjEvZm5kL21lbnVcIiBbcC1wYXJhbXNdPVwieyBjb21wYW55OiAxLCB1c2VyOiAyOTc3Njc1MTIgfVwiPlxuICAgKiA8L3BvLW1lbnU+XG4gICAqXG4gICAqIFJlcXVpc2nDp8OjbzogR0VUIC9hcGkvdjEvZm5kL21lbnU/c2VhcmNoPWNvbnRhcyZjb21wYW55PTEmdXNlcj0yOTc3Njc1MTJcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtcGFyYW1zJykgc2V0IHBhcmFtcyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fcGFyYW1zID0gdmFsdWUgJiYgaXNUeXBlb2YodmFsdWUsICdvYmplY3QnKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ2FtaW5obyBwYXJhIGEgbG9nb21hcmNhLCBxdWUgc2Vyw6EgZXhpYmlkYSBxdWFuZG8gbyBjb21wb25lbnRlIGVzdGl2ZXIgZXhwYW5kaWRvLCBsb2NhbGl6YWRhIG5hIHBhcnRlIHN1cGVyaW9yLlxuICAgKlxuICAgKiA+ICoqSW1wb3J0YW50ZToqKlxuICAgKiAtIENhc28gZXN0YSBwcm9wcmllZGFkZSBlc3RpdmVyIGluZGVmaW5pZGEgb3UgaW52w6FsaWRhIG8gZXNwYcOnbyBwYXJhIGxvZ29tYXJjYSBzZXLDoSByZW1vdmlkby5cbiAgICogLSBDb21vIGJvYSBwcsOhdGljYSwgaW5kaWNhLXNlIHV0aWxpemFyIGltYWdlbnMgY29tIGF0w6kgYDI0cHhgIGRlIGFsdHVyYSBlIGAyMjRweGAgZGUgbGFyZ3VyYSxcbiAgICogY2FzbyB1bHRyYXBhc3NhciBlc3NlcyB2YWxvcmVzIGEgaW1hZ2VtIHNlcsOhIHJlYWRlcXVhZGEgbm8gZXNwYcOnbyBkaXNwb27DrXZlbC5cbiAgICovXG4gIEBJbnB1dCgncC1sb2dvJykgbG9nbz86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyB0ZXh0byBhbHRlcm5hdGl2byBwYXJhIGEgbG9nb21hcmNhLlxuICAgKlxuICAgKiA+ICoqSW1wb3J0YW50ZSoqXG4gICAqID4gQ2FzbyBlc3RhIHByb3ByaWVkYWRlIG7Do28gc2VqYSBkZWZpbmlkYSBvIHRleHRvIHBhZHLDo28gc2Vyw6EgXCJMb2dvbWFyY2EgaW7DrWNpb1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgTG9nb21hcmNhIGluw61jaW9gXG4gICAqL1xuICBASW5wdXQoJ3AtbG9nby1hbHQnKSBsb2dvQWx0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhbWluaG8gcGFyYSBhIGxvZ29tYXJjYSwgcXVlIHNlcsOhIGV4aWJpZGEgcXVhbmRvIG8gY29tcG9uZW50ZSBlc3RpdmVyIGNvbGFwc2FkbywgbG9jYWxpemFkYSBuYSBwYXJ0ZSBzdXBlcmlvci5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGU6KipcbiAgICogLSBDYXNvIGVzdGEgcHJvcHJpZWRhZGUgZXN0aXZlciBpbmRlZmluaWRhIG91IGludsOhbGlkYSBwYXNzYSBhIGFzc3VtaXIgbyB2YWxvciBpbmZvcm1hZG8gbmEgcHJvcHJpZWRhZGUgYHAtbG9nb2AgZSBuYSBhdXPDqm5jaWEgZGVzdGEgb1xuICAgKiBlc3Bhw6dvIHBhcmEgbG9nb21hcmNhIHNlcsOhIHJlbW92aWRvLlxuICAgKiAtIENvbW8gYm9hIHByw6F0aWNhLCBpbmRpY2Etc2UgdXRpbGl6YXIgaW1hZ2VucyBjb20gYXTDqSBgNDhweGAgZGUgYWx0dXJhIGUgYDQ4cHhgIGRlIGxhcmd1cmEsXG4gICAqIGNhc28gdWx0cmFwYXNzYXIgZXNzZXMgdmFsb3JlcyBhIGltYWdlbSBzZXLDoSByZWFkZXF1YWRhIG5vIGVzcGHDp28gZGlzcG9uw612ZWwuXG4gICAqIC0gQ2FzbyBuw6NvIGluZm9ybWFyIHVtIHZhbG9yLCBlc3RhIHByb3ByaWVkYWRlIHBhc3NhIGEgYXNzdW1pciBvIHZhbG9yIGluZm9ybWFkbyBuYSBwcm9wcmllZGFkZSBgcC1sb2dvYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG9ydC1sb2dvJykgc2hvcnRMb2dvOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1lbnVHbG9iYWxTZXJ2aWNlOiBQb01lbnVHbG9iYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBtZW51U2VydmljZTogUG9NZW51U2VydmljZSxcbiAgICBwdWJsaWMgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxpdGVyYWxzID0ge1xuICAgICAgLi4ucG9NZW51TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VTZXJ2aWNlPy5nZXRMYW5ndWFnZURlZmF1bHQoKV0sXG4gICAgICAuLi5wb01lbnVMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZVNlcnZpY2U/LmdldFNob3J0TGFuZ3VhZ2UoKV1cbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldE1lbnVFeHRyYVByb3BlcnRpZXMoKSB7XG4gICAgdGhpcy5hbGxvd0ljb25zID0gISF0aGlzLm1lbnVzLmxlbmd0aDtcbiAgICB0aGlzLmFsbG93Q29sbGFwc2VNZW51ID0gISF0aGlzLm1lbnVzLmxlbmd0aDtcblxuICAgIHRoaXMubWVudXMuZm9yRWFjaChtZW51SXRlbSA9PiB7XG4gICAgICB0aGlzLl9sZXZlbCA9IDE7XG4gICAgICB0aGlzLmFsbG93SWNvbnMgPSB0aGlzLmFsbG93SWNvbnMgPyB2YWxpZFZhbHVlKG1lbnVJdGVtLmljb24pIDogZmFsc2U7XG4gICAgICB0aGlzLmFsbG93Q29sbGFwc2VNZW51ID0gdGhpcy5hbGxvd0NvbGxhcHNlTWVudSAmJiB0aGlzLmFsbG93SWNvbnMgPyB2YWxpZFZhbHVlKG1lbnVJdGVtLnNob3J0TGFiZWwpIDogZmFsc2U7XG4gICAgICB0aGlzLnJlbW92ZUJhZGdlQWxlcnQobWVudUl0ZW0pO1xuICAgICAgdGhpcy5zZXRNZW51SXRlbVByb3BlcnRpZXMobWVudUl0ZW0pO1xuXG4gICAgICBpZiAobWVudUl0ZW0uc3ViSXRlbXMpIHtcbiAgICAgICAgdGhpcy5fbGV2ZWwrKztcbiAgICAgICAgdGhpcy5wcm9jZXNzU3ViSXRlbXMobWVudUl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldE1lbnVJdGVtUHJvcGVydGllcyhtZW51SXRlbTogUG9NZW51SXRlbSk6IHZvaWQge1xuICAgIG1lbnVJdGVtWydpZCddID0gbWVudUl0ZW1bJ2lkJ10gfHwgdXVpZCgpO1xuICAgIG1lbnVJdGVtWydsZXZlbCddID0gdGhpcy5fbGV2ZWw7XG4gICAgbWVudUl0ZW1bJ3R5cGUnXSA9IHRoaXMuc2V0TWVudVR5cGUobWVudUl0ZW0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTWVudXMobWVudXMpOiB2b2lkIHtcbiAgICBtZW51cy5mb3JFYWNoKG1lbnUgPT4gdGhpcy52YWxpZGF0ZU1lbnUobWVudSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldE1lbnVUeXBlKG1lbnVJdGVtOiBQb01lbnVJdGVtKTogc3RyaW5nIHtcbiAgICBpZiAobWVudUl0ZW0uc3ViSXRlbXMgJiYgbWVudUl0ZW0uc3ViSXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLl9sZXZlbCA8IHRoaXMubWF4TGV2ZWwpIHtcbiAgICAgIHJldHVybiAnc3ViSXRlbXMnO1xuICAgIH1cbiAgICBpZiAoIW1lbnVJdGVtLmxpbmspIHtcbiAgICAgIHJldHVybiAnbm9MaW5rJztcbiAgICB9XG4gICAgaWYgKGlzRXh0ZXJuYWxMaW5rKG1lbnVJdGVtLmxpbmspKSB7XG4gICAgICByZXR1cm4gJ2V4dGVybmFsTGluayc7XG4gICAgfVxuICAgIHJldHVybiAnaW50ZXJuYWxMaW5rJztcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlnU2VydmljZShzZXJ2aWNlOiBzdHJpbmcgfCBQb01lbnVGaWx0ZXIpIHtcbiAgICBpZiAodHlwZW9mIHNlcnZpY2UgPT09ICdzdHJpbmcnICYmIHNlcnZpY2UudHJpbSgpKSB7XG4gICAgICAvLyBzZXJ2aWNlIHVybFxuICAgICAgdGhpcy5tZW51U2VydmljZS5jb25maWdQcm9wZXJ0aWVzKHNlcnZpY2UpO1xuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlID0gdGhpcy5tZW51U2VydmljZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZXJ2aWNlID09PSAnb2JqZWN0JyAmJiBzZXJ2aWNlLmdldEZpbHRlcmVkRGF0YSkge1xuICAgICAgLy8gY3VzdG9tIHNlcnZpY2VcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZSA9IHNlcnZpY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdWJJdGVtcyhtZW51KSB7XG4gICAgbWVudS5zdWJJdGVtcy5mb3JFYWNoKChtZW51SXRlbSwgaW5kZXgsIG1lbnVJdGVtcykgPT4ge1xuICAgICAgY29uc3QgcHJldmlvdXNJdGVtID0gbWVudUl0ZW1zW2luZGV4IC0gMV07XG4gICAgICBpZiAocHJldmlvdXNJdGVtICYmIHByZXZpb3VzSXRlbS5zdWJJdGVtcykge1xuICAgICAgICB0aGlzLl9sZXZlbCA9IHByZXZpb3VzSXRlbVsnbGV2ZWwnXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2xldmVsIDw9IHRoaXMubWF4TGV2ZWwpIHtcbiAgICAgICAgdGhpcy5zZXRNZW51SXRlbVByb3BlcnRpZXMobWVudUl0ZW0pO1xuXG4gICAgICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcykge1xuICAgICAgICAgIHRoaXMuX2xldmVsKys7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3ViSXRlbXMobWVudUl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghbWVudVsnYmFkZ2VBbGVydCddKSB7XG4gICAgICAgIG1lbnUgPSB0aGlzLnNldE1lbnVCYWRnZUFsZXJ0KG1lbnUsIG1lbnVJdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG1lbnUuc3ViSXRlbXMgPSBPYmplY3QuYXNzaWduKFtdLCBtZW51LnN1Ykl0ZW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQmFkZ2VBbGVydChtZW51SXRlbTogUG9NZW51SXRlbSk6IHZvaWQge1xuICAgIGlmIChtZW51SXRlbVsnYmFkZ2VBbGVydCddKSB7XG4gICAgICBkZWxldGUgbWVudUl0ZW1bJ2JhZGdlQWxlcnQnXTtcbiAgICB9XG5cbiAgICBpZiAobWVudUl0ZW0uc3ViSXRlbXMpIHtcbiAgICAgIG1lbnVJdGVtLnN1Ykl0ZW1zLmZvckVhY2goc3ViSXRlbSA9PiB0aGlzLnJlbW92ZUJhZGdlQWxlcnQoc3ViSXRlbSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVudUJhZGdlQWxlcnQocGFyZW50OiBQb01lbnVJdGVtLCBjaGlsZDogUG9NZW51SXRlbSk6IFBvTWVudUl0ZW0ge1xuICAgIGNvbnN0IGNoaWxkSGFzU3ViSXRlbXMgPSBjaGlsZC5zdWJJdGVtcyAmJiBjaGlsZC5zdWJJdGVtcy5sZW5ndGg7XG4gICAgY29uc3QgY2hpbGRIYXNCYWRnZUFsZXJ0ID0gY2hpbGRbJ2JhZGdlQWxlcnQnXTtcbiAgICBjb25zdCBjaGlsZEhhc0JhZGdlID0gY2hpbGQuYmFkZ2UgJiYgY29udmVydFRvSW50KGNoaWxkLmJhZGdlLnZhbHVlKSA+PSAwO1xuXG4gICAgcGFyZW50WydiYWRnZUFsZXJ0J10gPSBjaGlsZEhhc0JhZGdlQWxlcnQgfHwgKGNoaWxkSGFzQmFkZ2UgJiYgIWNoaWxkSGFzU3ViSXRlbXMpO1xuXG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVNZW51KG1lbnVJdGVtOiBQb01lbnVJdGVtKTogdm9pZCB7XG4gICAgaWYgKCFtZW51SXRlbS5sYWJlbCB8fCBtZW51SXRlbS5sYWJlbC50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5saXRlcmFscy5lbXB0eUxhYmVsRXJyb3IpO1xuICAgIH0gZWxzZSBpZiAobWVudUl0ZW0uc3ViSXRlbXMpIHtcbiAgICAgIG1lbnVJdGVtLnN1Ykl0ZW1zLmZvckVhY2goc3ViSXRlbSA9PiB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVNZW51KHN1Ykl0ZW0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoZWNrQWN0aXZlTWVudUJ5VXJsKHVybFJvdXRlcik7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjaGVja2luZ1JvdXRlckNoaWxkcmVuRnJhZ21lbnRzKCk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB2YWxpZGF0ZUNvbGxhcHNlQ2xhc3MoKTtcbn1cbiJdfQ==
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFROUcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLGdCQUFnQjtRQUM5QixlQUFlLEVBQUUsNkNBQTZDO1FBQzlELEtBQUssRUFBRSxZQUFZO1FBQ25CLElBQUksRUFBRSxXQUFXO0tBQ2xCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLHdCQUF3QjtRQUN0QyxlQUFlLEVBQUUsaURBQWlEO1FBQ2xFLEtBQUssRUFBRSxhQUFhO1FBQ3BCLElBQUksRUFBRSxZQUFZO0tBQ25CO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyxlQUFlLEVBQUUsZ0RBQWdEO1FBQ2pFLEtBQUssRUFBRSxhQUFhO1FBQ3BCLElBQUksRUFBRSxZQUFZO0tBQ25CO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLG1CQUFtQjtRQUNqQyxlQUFlLEVBQUUsK0NBQStDO1FBQ2hFLEtBQUssRUFBRSxjQUFjO1FBQ3JCLElBQUksRUFBRSxjQUFjO0tBQ3JCO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnREc7QUFFSCxNQUFNLE9BQWdCLG1CQUFtQjtJQTRQOUI7SUFD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QUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFvQnpDLFNBQVM7a0JBQWxDLEtBQUs7bUJBQUMsYUFBYTtZQVlFLEtBQUs7a0JBQTFCLEtBQUs7bUJBQUMsU0FBUztZQWdDTyxNQUFNO2tCQUE1QixLQUFLO21CQUFDLFVBQVU7WUFxQmlCLGVBQWU7a0JBQWhELEtBQUs7bUJBQUMscUJBQXFCO1lBbUNKLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQThCSyxNQUFNO2tCQUE1QixLQUFLO21CQUFDLFVBQVU7WUFvQkEsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBY00sT0FBTztrQkFBM0IsS0FBSzttQkFBQyxZQUFZO1lBZ0JJLFNBQVM7a0JBQS9CLEtBQUs7bUJBQUMsY0FBYztZQWNLLFFBQVE7a0JBQWpDLEtBQUs7bUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgY29udmVydFRvSW50LCBpc0V4dGVybmFsTGluaywgaXNUeXBlb2YsIHV1aWQsIHZhbGlkVmFsdWUgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTWVudUZpbHRlciB9IGZyb20gJy4vcG8tbWVudS1maWx0ZXIvcG8tbWVudS1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTWVudUl0ZW0gfSBmcm9tICcuL3BvLW1lbnUtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NZW51R2xvYmFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS1nbG9iYWwuc2VydmljZSc7XG5pbXBvcnQgeyBQb01lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1tZW51LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgcG9NZW51TGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjoge1xuICAgIGl0ZW1Ob3RGb3VuZDogJ0l0ZW0gbm90IGZvdW5kJyxcbiAgICBlbXB0eUxhYmVsRXJyb3I6ICdBdHRyaWJ1dGUgUG9NZW51SXRlbS5sYWJlbCBjYW4gbm90IGJlIGVtcHR5JyxcbiAgICBjbG9zZTogJ0Nsb3NlIG1lbnUnLFxuICAgIG9wZW46ICdPcGVuIG1lbnUnXG4gIH0sXG4gIGVzOiB7XG4gICAgaXRlbU5vdEZvdW5kOiAnRWxlbWVudG8gbm8gZW5jb250cmFkbycsXG4gICAgZW1wdHlMYWJlbEVycm9yOiAnRWwgYXRyaWJ1dG8gUG9NZW51SXRlbS5sYWJlbCBubyBwdWVkZSBzZXIgdmFjw61vJyxcbiAgICBjbG9zZTogJ0NlcnJhciBtZW7DuicsXG4gICAgb3BlbjogJ0FicmlyIG1lbsO6J1xuICB9LFxuICBwdDoge1xuICAgIGl0ZW1Ob3RGb3VuZDogJ0l0ZW0gbsOjbyBlbmNvbnRyYWRvJyxcbiAgICBlbXB0eUxhYmVsRXJyb3I6ICdPIGF0cmlidXRvIFBvTWVudUl0ZW0ubGFiZWwgbsOjbyBwb2RlIHNlciB2YXppbycsXG4gICAgY2xvc2U6ICdGZWNoYXIgbWVudScsXG4gICAgb3BlbjogJ0FicmlyIG1lbnUnXG4gIH0sXG4gIHJ1OiB7XG4gICAgaXRlbU5vdEZvdW5kOiAn0J/RgNC10LTQvNC10YIg0L3QtSDQvdCw0LnQtNC10L0nLFxuICAgIGVtcHR5TGFiZWxFcnJvcjogJ9CQ0YLRgNC40LHRg9GCIFBvTWVudUl0ZW0ubGFiZWwg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINC/0YPRgdGC0YvQvCcsXG4gICAgY2xvc2U6ICfQl9Cw0LrRgNGL0YLRjCDQvNC10L3RjicsXG4gICAgb3BlbjogJ9Ce0YLQutGA0YvRgtGMINC80LXQvdGOJ1xuICB9XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEVzdGUgw6kgdW0gY29tcG9uZW50ZSBkZSBtZW51IGxhdGVyYWwgcXVlIMOpIHV0aWxpemFkbyBwYXJhIG5hdmVnYcOnw6NvIG5hcyBww6FnaW5hcyBkZSB1bWEgYXBsaWNhw6fDo28uXG4gKlxuICogTyBjb21wb25lbnRlIHBvLW1lbnUgcmVjZWJlIHVtYSBsaXN0YSBkZSBvYmpldG9zIGRvIHRpcG8gYE1lbnVJdGVtYCBjb20gYXMgaW5mb3JtYcOnw7VlcyBkb3MgaXRlbnMgZGUgbWVudSBjb21vXG4gKiB0ZXh0b3MsIGxpbmtzIHBhcmEgcmVkaXJlY2lvbmFtZW50bywgYcOnw7VlcywgYXTDqSA0IG7DrXZlaXMgZGUgbWVudSBlIMOtY29uZXMgcGFyYSBvIHByaW1laXJvIG7DrXZlbCBkZSBtZW51LlxuICpcbiAqICMjIyMgVG9rZW5zIGN1c3RvbWl6w6F2ZWlzXG4gKlxuICogw4kgcG9zc8OtdmVsIGFsdGVyYXIgbyBlc3RpbG8gZG8gY29tcG9uZW50ZSB1c2FuZG8gb3Mgc2VndWludGVzIHRva2VucyAoQ1NTKTpcbiAqXG4gKiA+IFBhcmEgbWFpb3JlcyBpbmZvcm1hw6fDtWVzLCBhY2Vzc2UgbyBndWlhIFtQZXJzb25hbGl6YW5kbyBvIFRlbWEgUGFkcsOjbyBjb20gVG9rZW5zIENTU10oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvdGhlbWUtY3VzdG9taXphdGlvbikuXG4gKlxuICogfCBQcm9wcmllZGFkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyacOnw6NvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYWxvciBQYWRyw6NvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKkRlZmF1bHQgVmFsdWVzKiogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1ib3JkZXItcmFkaXVzYCAgICAgICAgICAgICAgICAgICAgICB8IENvbnTDqW0gbyB2YWxvciBkbyByYWlvIGRvcyBjYW50b3MgZG8gZWxlbWVudG8mbmJzcDsgICB8IGB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYm9yZGVyLWNvbG9yYCAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGEgYm9yZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvcmAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBWYXIoLS0tLWNvbG9yLW5ldXRyYWwtbGlnaHQtMDUpYCAgICAgICAgICAgICAgIHxcbiAqIHwgKipNZW51IEZvb3RlcioqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGxhIGRvIG1lbnUgZm9vdGVyICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1zaXplYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYW1hbmhvIGRhIGZvbnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXNpemUtZGVmYXVsdClgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tbGluZS1oZWlnaHRgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYW1hbmhvIGRhIGxhYmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1saW5lLWhlaWdodC1tZClgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tb3V0bGluZS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgfCBDb3IgZG8gb3V0bGluZSBkbyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZm9jdXMpYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC13ZWlnaHQtbHZsMGAgICAgICAgICAgICAgICAgICAgfCBQZXNvIGRhIGZvbnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXdlaWdodC1ib2xkKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipwby1tZW51LWl0ZW0qKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1mYW1pbHlgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYW3DrWxpYSB0aXBvZ3LDoWZpY2EgdXNhZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtZmFtaWx5LXRoZW1lKWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LXNpemVgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgZm9udGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtc2l6ZS1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1saW5lLWhlaWdodGAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgbGFiZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWxpbmUtaGVpZ2h0LW1kKWAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1ib3JkZXItcmFkaXVzYCAgICAgICAgICAgICAgICAgICAgICB8IENvbnTDqW0gbyB2YWxvciBkbyByYWlvIGRvcyBjYW50b3MgZG8gZWxlbWVudG8mbmJzcDsgICB8IGB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIGRvIGl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvcmAgICAgICAgICAgICAgICAgICAgfCBDb3IgZG8gYmFja2dyb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB0cmFuc3BhcmVudGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipIb3ZlcioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItaG92ZXJgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1kYXJrZXN0KWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1ob3ZlcmAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gaG92ZXIgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVyKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipGb2N1c2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tb3V0bGluZS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgfCBDb3IgZG8gb3V0bGluZSBkbyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZm9jdXMpYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipQcmVzc2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1wcmVzc2VkYCAmbmJzcDsgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGUgcHJlc3Npb25hZG8mbmJzcDsgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipBY3RpdmVkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1hY3RpdmVkYCAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gYWN0aXZlZCAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1kYXJrZXN0KWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItYWN0aXZlZGAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBhY3RpdmVkICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVyKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipGb250KiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC13ZWlnaHQtbHZsMGAgICAgICAgICAgICAgICAgICAgfCBQZXNvIGRhIGZvbnRlIGJvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXdlaWdodC1ib2xkKWAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC13ZWlnaHQtbHZsMWAgICAgICAgICAgICAgICAgICAgfCBQZXNvIGRhIGZvbnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiA8YnI+XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTWVudUJhc2VDb21wb25lbnQge1xuICBhbGxvd0ljb25zOiBib29sZWFuO1xuICBhbGxvd0NvbGxhcHNlTWVudTogYm9vbGVhbjtcbiAgYWxsb3dDb2xsYXBzZUhvdmVyOiBib29sZWFuO1xuXG4gIGZpbHRlcmVkSXRlbXM7XG4gIGZpbHRlclNlcnZpY2U6IFBvTWVudUZpbHRlcjtcblxuICByZWFkb25seSBsaXRlcmFsczogYW55O1xuXG4gIHByaXZhdGUgX2NvbGxhcHNlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9maWx0ZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VhcmNoVHJlZUl0ZW1zID0gZmFsc2U7XG4gIHByaXZhdGUgX2xldmVsO1xuICBwcml2YXRlIF9tYXhMZXZlbCA9IDQ7XG4gIHByaXZhdGUgX21lbnVzID0gW107XG4gIHByaXZhdGUgX3BhcmFtczogYW55O1xuICBwcml2YXRlIF9zZXJ2aWNlOiBzdHJpbmcgfCBQb01lbnVGaWx0ZXI7XG4gIHByaXZhdGUgX2xvZ29MaW5rOiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeHBhbmRlIGUgQ29sYXBzYSAocmV0cmFpKSBvIG1lbnUgYXV0b21hdGljYW1lbnRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXV0b21hdGljLXRvZ2dsZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvbWF0aWNUb2dnbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDb2xhcHNhIChyZXRyYWkpIG8gbWVudSBlIGNhc28gcmVjZWJhIG8gdmFsb3IgYGZhbHNlYCBleHBhbmRlIG8gbWVudS5cbiAgICpcbiAgICogPiBVdGlsaXplIGVzdGEgcHJvcHJpZWRhZGUgcGFyYSBpbmljaWFyIG8gbWVudSBjb2xhcHNhZG8uXG4gICAqXG4gICAqID4gQW8gdXRpbGl6YXIgb3MgbcOpdG9kb3MgW2Bjb2xhcHNlYF0oZG9jdW1lbnRhdGlvbi9wby1tZW51I2NvbGFwc2VNZXRob2QpLCBbYGV4cGFuZGBdKGRvY3VtZW50YXRpb24vcG8tbWVudSNleHBhbmRNZXRob2QpIGVcbiAgICogW2B0b2dnbGVgXShkb2N1bWVudGF0aW9uL3BvLW1lbnUjdG9nZ2xlTWV0aG9kKSBvIHZhbG9yIGRlc3RhIHByb3ByaWVkYWRlIG7Do28gw6kgYWx0ZXJhZG8uXG4gICAqXG4gICAqICoqSW1wb3J0YW50ZToqKlxuICAgKlxuICAgKiA+IE8gbWVudSBzZXLDoSBjb2xhcHNhZG8vZXhwYW5kaWRvIGFwZW5hcyBzZSB0b2RvcyBvcyBpdGVucyBkZSBtZW51IHRpdmVyZW0gdmFsb3IgbmFzIHByb3ByaWVkYWRlcyBgaWNvbmAgZSBgc2hvcnRMYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1jb2xsYXBzZWQnKSBzZXQgY29sbGFwc2VkKGNvbGxhcHNlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2NvbGxhcHNlZCA9IGNvbnZlcnRUb0Jvb2xlYW4oY29sbGFwc2VkKTtcblxuICAgIHRoaXMuYWxsb3dDb2xsYXBzZUhvdmVyID0gdGhpcy5fY29sbGFwc2VkO1xuICAgIHRoaXMudmFsaWRhdGVDb2xsYXBzZUNsYXNzKCk7XG4gIH1cblxuICBnZXQgY29sbGFwc2VkKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2xsYXBzZWQ7XG4gIH1cblxuICAvKiogTGlzdGEgZG9zIGl0ZW5zIGRvIG1lbnUuIFNlIG8gdmFsb3IgZXN0aXZlciBpbmRlZmluaWRvIG91IGludsOhbGlkbywgc2Vyw6EgaW5pY2lhbGl6YWRvIGNvbW8gdW0gYXJyYXkgdmF6aW8uICovXG4gIEBJbnB1dCgncC1tZW51cycpIHNldCBtZW51cyhtZW51czogQXJyYXk8UG9NZW51SXRlbT4pIHtcbiAgICB0aGlzLl9tZW51cyA9IEFycmF5LmlzQXJyYXkobWVudXMpID8gbWVudXMgOiBbXTtcblxuICAgIHRoaXMubWVudUdsb2JhbFNlcnZpY2Uuc2VuZE1lbnVzKG1lbnVzKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdXJsUm91dGVyID0gdGhpcy5jaGVja2luZ1JvdXRlckNoaWxkcmVuRnJhZ21lbnRzKCk7XG4gICAgICB0aGlzLmNoZWNrQWN0aXZlTWVudUJ5VXJsKHVybFJvdXRlcik7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWVudXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lbnVzO1xuICB9XG5cbiAgZ2V0IG1heExldmVsKCkge1xuICAgIHJldHVybiB0aGlzLl9tYXhMZXZlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEhhYmlsaXRhIHVtIGNhbXBvIHBhcmEgcGVzcXVpc2Egbm8gbWVudS5cbiAgICogQSBwZXNxdWlzYSDDqSByZWFsaXphZGEgZW0gdG9kb3Mgb3MgbsOtdmVpcyBkbyBtZW51IGUgYnVzY2EgYXBlbmFzIHBlbG9zIGl0ZW5zIHF1ZSBjb250w6ltIHVtYSBhw6fDo28gZS9vdSBsaW5rIGRlZmluaWRvcyxcbiAgICogb3UgdGFtYsOpbSwgcG9kZSBzZXIgcmVhbGl6YWRhIGF0cmF2w6lzIGRlIHVtIHNlcnZpw6dvIGRlZmluaWRvIG5hIHByb3ByaWVkYWRlIGBwLXNlcnZpY2VgLlxuICAgKlxuICAgKiA+IE8gY2FtcG8gZGUgcGVzcXVpc2Egw6kgZGVzYWJpbGl0YWRvIHNlIG8gbWVudSBlc3RpdmVyIGNvbGFwc2Fkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlcicpIHNldCBmaWx0ZXIoZmlsdGVyOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZmlsdGVyID0gPGFueT5maWx0ZXIgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oZmlsdGVyKTtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbLi4udGhpcy5fbWVudXNdO1xuICB9XG5cbiAgZ2V0IGZpbHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUXVhbmRvIGF0aXZhZG8sIGEgcGVzcXVpc2EgdGFtYsOpbSByZXRvcm5hcsOhIGl0ZW5zIGFncnVwYWRvcmVzIGFsw6ltIGRvcyBpdGVucyBxdWUgY29udMOqbSB1bWEgYcOnw6NvIGUvb3UgbGluayBkZWZpbmlkb3MuXG4gICAqIElzc28gcG9kZSBzZXIgw7p0aWwgcXVhbmRvIHNlIGRlc2VqYSBlbmNvbnRyYXIgcmFwaWRhbWVudGUgY2F0ZWdvcmlhcyBvdSBzZcOnw7VlcyBkbyBtZW51LlxuICAgKlxuICAgKiA+IMOJIG5lY2Vzc8OhcmlvIHF1ZSBhIHByb3ByaWVkYWRlIGBwLWZpbHRlcmAgZXN0ZWphIGhhYmlsaXRhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1zZWFyY2gtdHJlZS1pdGVtcycpIHNldCBzZWFyY2hUcmVlSXRlbXMoc2VhcmNoVHJlZUl0ZW1zOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2VhcmNoVHJlZUl0ZW1zID0gPGFueT5zZWFyY2hUcmVlSXRlbXMgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oc2VhcmNoVHJlZUl0ZW1zKTtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbLi4udGhpcy5fbWVudXNdO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFRyZWVJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoVHJlZUl0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgaW5mb3JtYWRhIGEgVVJMIGRvIHNlcnZpw6dvIGVtIHF1ZSBzZXLDoSB1dGlsaXphZG8gcGFyYSByZWFsaXphciBvIGZpbHRybyBkZSBpdGVucyBkb1xuICAgKiBtZW51IHF1YW5kbyByZWFsaXphciB1bWEgYnVzY2EuIENhc28gaGFqYSBhIG5lY2Vzc2lkYWRlIGRlIGN1c3RvbWl6YcOnw6NvLCBwb2RlIHNlciBpbmZvcm1hZG8gdW1cbiAgICogc2VydmnDp28gaW1wbGVtZW50YW5kbyBhIGludGVyZmFjZSBgUG9NZW51RmlsdGVyYC5cbiAgICpcbiAgICogQ2FzbyB1dGlsaXphZGEgdW1hIFVSTCwgbyBzZXJ2acOnbyBkZXZlIHJldG9ybmFyIG9zIGRhZG9zIGNvbmZvcm1lIG9cbiAgICogW0d1aWEgZGUgaW1wbGVtZW50YcOnw6NvIGRlIEFQSXNdKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2FwaSkgZG8gUE8gVUkuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSBzZXJ2acOnbywgc2Vyw6EgcmVhbGl6YWRvIHVtICpHRVQqIG5hIFVSTCBpbmZvcm1hZGEsIHBhc3NhbmRvIG8gdmFsb3IgZGlnaXRhZG9cbiAgICogbm8gcGFyw6JtZXRybyBgc2VhcmNoYCwgdmVqYSBleGVtcGxvOlxuICAgKlxuICAgKiA+IE8gZmlsdHJvIG5vIHNlcnZpw6dvIHNlcsOhIHJlYWxpemFkbyBjYXNvIGNvbnRlbmhhIG5vIG3DrW5pbW8gdHLDqnMgY2FyYWN0ZXJlcyBubyBjYW1wbyBkZSBidXNjYSwgcG9yIGV4ZW1wbG8gYHRvdGAuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tbWVudSBwLXNlcnZpY2U9XCIvYXBpL3YxL2ZuZC9tZW51XCI+XG4gICAqIDwvcG8tbWVudT5cbiAgICpcbiAgICogUmVxdWlzacOnw6NvOiBHRVQgL2FwaS92MS9mbmQvbWVudT9zZWFyY2g9Y29udGFzXG4gICAqIGBgYFxuICAgKlxuICAgKiA+IMOJIG5lY2Vzc8OhcmlvIHF1ZSBwcm9wcmllZGFkZSBgcC1maWx0ZXJgIGVzdGVqYSBoYWJpbGl0YWRhLlxuICAgKi9cbiAgQElucHV0KCdwLXNlcnZpY2UnKSBzZXQgc2VydmljZSh2YWx1ZTogc3RyaW5nIHwgUG9NZW51RmlsdGVyKSB7XG4gICAgdGhpcy5fc2VydmljZSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuY29uZmlnU2VydmljZSh0aGlzLnNlcnZpY2UpO1xuICB9XG5cbiAgZ2V0IHNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gdW0gb2JqZXRvIHF1ZSBkZXNlamEtc2UgdXRpbGl6YXIgbmEgcmVxdWlzacOnw6NvIGRlIGZpbHRybyBkb3MgaXRlbnMgZGUgbWVudS5cbiAgICpcbiAgICogQ2FzbyB1dGlsaXphZG8gdW0gc2VydmnDp28gY3VzdG9taXphZG8sIGltcGxlbWVudGFuZG8gYSBpbnRlcmZhY2UgYFBvTWVudUZpbHRlcmAsIG8gdmFsb3IgZGVzdGEgcHJvcHJpZWRhZGVcbiAgICogc2Vyw6EgcGFzc2FkbyBjb21vIHBhcsOibWV0cm8sIG5hIGZ1bsOnw6NvIGBnZXRGaWx0ZXJlZERhdGFgLlxuICAgKlxuICAgKiBRdWFuZG8gdXRpbGl6YWRhIHVtYSBVUkwgZGUgc2VydmnDp28sIHNlcsOhIHJlYWxpemFkbyB1bSAqR0VUKiBuYSBVUkwgaW5mb3JtYWRhLCBwYXNzYW5kbyBvcyB2YWxvcmVzIGluZm9ybWFkb3NcbiAgICogbmVzdGEgcHJvcHJpZWRhZGUgZW0gY29uanVudG8gY29tIG8gcGFyw6JtZXRybyBgc2VhcmNoYCwgdmVqYSBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLW1lbnUgcC1zZXJ2aWNlPVwiL2FwaS92MS9mbmQvbWVudVwiIFtwLXBhcmFtc109XCJ7IGNvbXBhbnk6IDEsIHVzZXI6IDI5Nzc2NzUxMiB9XCI+XG4gICAqIDwvcG8tbWVudT5cbiAgICpcbiAgICogUmVxdWlzacOnw6NvOiBHRVQgL2FwaS92MS9mbmQvbWVudT9zZWFyY2g9Y29udGFzJmNvbXBhbnk9MSZ1c2VyPTI5Nzc2NzUxMlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1wYXJhbXMnKSBzZXQgcGFyYW1zKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9wYXJhbXMgPSB2YWx1ZSAmJiBpc1R5cGVvZih2YWx1ZSwgJ29iamVjdCcpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDYW1pbmhvIHBhcmEgYSBsb2dvbWFyY2EsIHF1ZSBzZXLDoSBleGliaWRhIHF1YW5kbyBvIGNvbXBvbmVudGUgZXN0aXZlciBleHBhbmRpZG8sIGxvY2FsaXphZGEgbmEgcGFydGUgc3VwZXJpb3IuXG4gICAqXG4gICAqID4gKipJbXBvcnRhbnRlOioqXG4gICAqIC0gQ2FzbyBlc3RhIHByb3ByaWVkYWRlIGVzdGl2ZXIgaW5kZWZpbmlkYSBvdSBpbnbDoWxpZGEgbyBlc3Bhw6dvIHBhcmEgbG9nb21hcmNhIHNlcsOhIHJlbW92aWRvLlxuICAgKiAtIENvbW8gYm9hIHByw6F0aWNhLCBpbmRpY2Etc2UgdXRpbGl6YXIgaW1hZ2VucyBjb20gYXTDqSBgMjRweGAgZGUgYWx0dXJhIGUgYDIyNHB4YCBkZSBsYXJndXJhLFxuICAgKiBjYXNvIHVsdHJhcGFzc2FyIGVzc2VzIHZhbG9yZXMgYSBpbWFnZW0gc2Vyw6EgcmVhZGVxdWFkYSBubyBlc3Bhw6dvIGRpc3BvbsOtdmVsLlxuICAgKi9cbiAgQElucHV0KCdwLWxvZ28nKSBsb2dvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIHRleHRvIGFsdGVybmF0aXZvIHBhcmEgYSBsb2dvbWFyY2EuXG4gICAqXG4gICAqID4gKipJbXBvcnRhbnRlKipcbiAgICogPiBDYXNvIGVzdGEgcHJvcHJpZWRhZGUgbsOjbyBzZWphIGRlZmluaWRhIG8gdGV4dG8gcGFkcsOjbyBzZXLDoSBcIkxvZ29tYXJjYSBpbsOtY2lvXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBMb2dvbWFyY2EgaW7DrWNpb2BcbiAgICovXG4gIEBJbnB1dCgncC1sb2dvLWFsdCcpIGxvZ29BbHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ2FtaW5obyBwYXJhIGEgbG9nb21hcmNhLCBxdWUgc2Vyw6EgZXhpYmlkYSBxdWFuZG8gbyBjb21wb25lbnRlIGVzdGl2ZXIgY29sYXBzYWRvLCBsb2NhbGl6YWRhIG5hIHBhcnRlIHN1cGVyaW9yLlxuICAgKlxuICAgKiA+ICoqSW1wb3J0YW50ZToqKlxuICAgKiAtIENhc28gZXN0YSBwcm9wcmllZGFkZSBlc3RpdmVyIGluZGVmaW5pZGEgb3UgaW52w6FsaWRhIHBhc3NhIGEgYXNzdW1pciBvIHZhbG9yIGluZm9ybWFkbyBuYSBwcm9wcmllZGFkZSBgcC1sb2dvYCBlIG5hIGF1c8OqbmNpYSBkZXN0YSBvXG4gICAqIGVzcGHDp28gcGFyYSBsb2dvbWFyY2Egc2Vyw6EgcmVtb3ZpZG8uXG4gICAqIC0gQ29tbyBib2EgcHLDoXRpY2EsIGluZGljYS1zZSB1dGlsaXphciBpbWFnZW5zIGNvbSBhdMOpIGA0OHB4YCBkZSBhbHR1cmEgZSBgNDhweGAgZGUgbGFyZ3VyYSxcbiAgICogY2FzbyB1bHRyYXBhc3NhciBlc3NlcyB2YWxvcmVzIGEgaW1hZ2VtIHNlcsOhIHJlYWRlcXVhZGEgbm8gZXNwYcOnbyBkaXNwb27DrXZlbC5cbiAgICogLSBDYXNvIG7Do28gaW5mb3JtYXIgdW0gdmFsb3IsIGVzdGEgcHJvcHJpZWRhZGUgcGFzc2EgYSBhc3N1bWlyIG8gdmFsb3IgaW5mb3JtYWRvIG5hIHByb3ByaWVkYWRlIGBwLWxvZ29gLlxuICAgKi9cbiAgQElucHV0KCdwLXNob3J0LWxvZ28nKSBzaG9ydExvZ286IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZWZpbmUgbyBsaW5rIHBhcmEgYSByb3RhIGFvIGNsaWNhciBubyBsb2dvIGRvIG1lbnUuXG4gICAqXG4gICAqIC0gU2UgbyB2YWxvciBmb3IgdW1hIHN0cmluZywgZGVmaW5lIGEgcm90YSBwYXJhIG8gbGluayBpbmZvcm1hZG8uXG4gICAqIC0gU2UgZm9yIGBmYWxzZWAsIG8gbG9nbyBuw6NvIHRlcsOhIGxpbmsgYXNzb2NpYWRvLlxuICAgKiAtIFNlIGZvciBgdHJ1ZWAsIG8gbG9nbyB0ZXLDoSBhIHJvdGEgcGFkcsOjbyBgLi9gLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCgncC1sb2dvLWxpbmsnKSBzZXQgbG9nb0xpbmsodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2dvTGluayA9IHZhbHVlID09PSBmYWxzZSA/IGZhbHNlIDogdmFsdWUgfHwgdHJ1ZTtcbiAgfVxuXG4gIGdldCBsb2dvTGluaygpOiBib29sZWFuIHwgc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nb0xpbms7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWVudUdsb2JhbFNlcnZpY2U6IFBvTWVudUdsb2JhbFNlcnZpY2UsXG4gICAgcHVibGljIG1lbnVTZXJ2aWNlOiBQb01lbnVTZXJ2aWNlLFxuICAgIHB1YmxpYyBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubGl0ZXJhbHMgPSB7XG4gICAgICAuLi5wb01lbnVMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZVNlcnZpY2U/LmdldExhbmd1YWdlRGVmYXVsdCgpXSxcbiAgICAgIC4uLnBvTWVudUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlU2VydmljZT8uZ2V0U2hvcnRMYW5ndWFnZSgpXVxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TWVudUV4dHJhUHJvcGVydGllcygpIHtcbiAgICB0aGlzLmFsbG93SWNvbnMgPSAhIXRoaXMubWVudXMubGVuZ3RoO1xuICAgIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgPSAhIXRoaXMubWVudXMubGVuZ3RoO1xuXG4gICAgdGhpcy5tZW51cy5mb3JFYWNoKG1lbnVJdGVtID0+IHtcbiAgICAgIHRoaXMuX2xldmVsID0gMTtcbiAgICAgIHRoaXMuYWxsb3dJY29ucyA9IHRoaXMuYWxsb3dJY29ucyA/IHZhbGlkVmFsdWUobWVudUl0ZW0uaWNvbikgOiBmYWxzZTtcbiAgICAgIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgPSB0aGlzLmFsbG93Q29sbGFwc2VNZW51ICYmIHRoaXMuYWxsb3dJY29ucyA/IHZhbGlkVmFsdWUobWVudUl0ZW0uc2hvcnRMYWJlbCkgOiBmYWxzZTtcbiAgICAgIHRoaXMucmVtb3ZlQmFkZ2VBbGVydChtZW51SXRlbSk7XG4gICAgICB0aGlzLnNldE1lbnVJdGVtUHJvcGVydGllcyhtZW51SXRlbSk7XG5cbiAgICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcykge1xuICAgICAgICB0aGlzLl9sZXZlbCsrO1xuICAgICAgICB0aGlzLnByb2Nlc3NTdWJJdGVtcyhtZW51SXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TWVudUl0ZW1Qcm9wZXJ0aWVzKG1lbnVJdGVtOiBQb01lbnVJdGVtKTogdm9pZCB7XG4gICAgbWVudUl0ZW1bJ2lkJ10gPSBtZW51SXRlbVsnaWQnXSB8fCB1dWlkKCk7XG4gICAgbWVudUl0ZW1bJ2xldmVsJ10gPSB0aGlzLl9sZXZlbDtcbiAgICBtZW51SXRlbVsndHlwZSddID0gdGhpcy5zZXRNZW51VHlwZShtZW51SXRlbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNZW51cyhtZW51cyk6IHZvaWQge1xuICAgIG1lbnVzLmZvckVhY2gobWVudSA9PiB0aGlzLnZhbGlkYXRlTWVudShtZW51KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TWVudVR5cGUobWVudUl0ZW06IFBvTWVudUl0ZW0pOiBzdHJpbmcge1xuICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcyAmJiBtZW51SXRlbS5zdWJJdGVtcy5sZW5ndGggPiAwICYmIHRoaXMuX2xldmVsIDwgdGhpcy5tYXhMZXZlbCkge1xuICAgICAgcmV0dXJuICdzdWJJdGVtcyc7XG4gICAgfVxuICAgIGlmICghbWVudUl0ZW0ubGluaykge1xuICAgICAgcmV0dXJuICdub0xpbmsnO1xuICAgIH1cbiAgICBpZiAoaXNFeHRlcm5hbExpbmsobWVudUl0ZW0ubGluaykpIHtcbiAgICAgIHJldHVybiAnZXh0ZXJuYWxMaW5rJztcbiAgICB9XG4gICAgcmV0dXJuICdpbnRlcm5hbExpbmsnO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlKHNlcnZpY2U6IHN0cmluZyB8IFBvTWVudUZpbHRlcikge1xuICAgIGlmICh0eXBlb2Ygc2VydmljZSA9PT0gJ3N0cmluZycgJiYgc2VydmljZS50cmltKCkpIHtcbiAgICAgIC8vIHNlcnZpY2UgdXJsXG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoc2VydmljZSk7XG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UgPSB0aGlzLm1lbnVTZXJ2aWNlO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlcnZpY2UgPT09ICdvYmplY3QnICYmIHNlcnZpY2UuZ2V0RmlsdGVyZWREYXRhKSB7XG4gICAgICAvLyBjdXN0b20gc2VydmljZVxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlID0gc2VydmljZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N1Ykl0ZW1zKG1lbnUpIHtcbiAgICBtZW51LnN1Ykl0ZW1zLmZvckVhY2goKG1lbnVJdGVtLCBpbmRleCwgbWVudUl0ZW1zKSA9PiB7XG4gICAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSBtZW51SXRlbXNbaW5kZXggLSAxXTtcbiAgICAgIGlmIChwcmV2aW91c0l0ZW0gJiYgcHJldmlvdXNJdGVtLnN1Ykl0ZW1zKSB7XG4gICAgICAgIHRoaXMuX2xldmVsID0gcHJldmlvdXNJdGVtWydsZXZlbCddO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fbGV2ZWwgPD0gdGhpcy5tYXhMZXZlbCkge1xuICAgICAgICB0aGlzLnNldE1lbnVJdGVtUHJvcGVydGllcyhtZW51SXRlbSk7XG5cbiAgICAgICAgaWYgKG1lbnVJdGVtLnN1Ykl0ZW1zKSB7XG4gICAgICAgICAgdGhpcy5fbGV2ZWwrKztcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdWJJdGVtcyhtZW51SXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFtZW51WydiYWRnZUFsZXJ0J10pIHtcbiAgICAgICAgbWVudSA9IHRoaXMuc2V0TWVudUJhZGdlQWxlcnQobWVudSwgbWVudUl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbWVudS5zdWJJdGVtcyA9IE9iamVjdC5hc3NpZ24oW10sIG1lbnUuc3ViSXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCYWRnZUFsZXJ0KG1lbnVJdGVtOiBQb01lbnVJdGVtKTogdm9pZCB7XG4gICAgaWYgKG1lbnVJdGVtWydiYWRnZUFsZXJ0J10pIHtcbiAgICAgIGRlbGV0ZSBtZW51SXRlbVsnYmFkZ2VBbGVydCddO1xuICAgIH1cblxuICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcykge1xuICAgICAgbWVudUl0ZW0uc3ViSXRlbXMuZm9yRWFjaChzdWJJdGVtID0+IHRoaXMucmVtb3ZlQmFkZ2VBbGVydChzdWJJdGVtKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNZW51QmFkZ2VBbGVydChwYXJlbnQ6IFBvTWVudUl0ZW0sIGNoaWxkOiBQb01lbnVJdGVtKTogUG9NZW51SXRlbSB7XG4gICAgY29uc3QgY2hpbGRIYXNTdWJJdGVtcyA9IGNoaWxkLnN1Ykl0ZW1zICYmIGNoaWxkLnN1Ykl0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBjaGlsZEhhc0JhZGdlQWxlcnQgPSBjaGlsZFsnYmFkZ2VBbGVydCddO1xuICAgIGNvbnN0IGNoaWxkSGFzQmFkZ2UgPSBjaGlsZC5iYWRnZSAmJiBjb252ZXJ0VG9JbnQoY2hpbGQuYmFkZ2UudmFsdWUpID49IDA7XG5cbiAgICBwYXJlbnRbJ2JhZGdlQWxlcnQnXSA9IGNoaWxkSGFzQmFkZ2VBbGVydCB8fCAoY2hpbGRIYXNCYWRnZSAmJiAhY2hpbGRIYXNTdWJJdGVtcyk7XG5cbiAgICByZXR1cm4gcGFyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1lbnUobWVudUl0ZW06IFBvTWVudUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoIW1lbnVJdGVtLmxhYmVsIHx8IG1lbnVJdGVtLmxhYmVsLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmxpdGVyYWxzLmVtcHR5TGFiZWxFcnJvcik7XG4gICAgfSBlbHNlIGlmIChtZW51SXRlbS5zdWJJdGVtcykge1xuICAgICAgbWVudUl0ZW0uc3ViSXRlbXMuZm9yRWFjaChzdWJJdGVtID0+IHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZU1lbnUoc3ViSXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2hlY2tBY3RpdmVNZW51QnlVcmwodXJsUm91dGVyKTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoZWNraW5nUm91dGVyQ2hpbGRyZW5GcmFnbWVudHMoKTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHZhbGlkYXRlQ29sbGFwc2VDbGFzcygpO1xufVxuIl19