@po-ui/ng-components 18.21.0 → 18.23.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.
Files changed (76) hide show
  1. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.mjs +1 -1
  2. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.mjs +19 -19
  3. package/esm2022/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.mjs +18 -2
  4. package/esm2022/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.mjs +4 -4
  5. package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +22 -2
  6. package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +4 -4
  7. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +22 -2
  8. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +4 -4
  9. package/esm2022/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.mjs +18 -2
  10. package/esm2022/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.mjs +4 -4
  11. package/esm2022/lib/components/po-field/po-decimal/po-decimal.component.mjs +4 -4
  12. package/esm2022/lib/components/po-field/po-email/po-email.component.mjs +4 -4
  13. package/esm2022/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.mjs +27 -10
  14. package/esm2022/lib/components/po-field/po-field-container/po-field-container.module.mjs +5 -4
  15. package/esm2022/lib/components/po-field/po-field-validate.model.mjs +22 -2
  16. package/esm2022/lib/components/po-field/po-input/po-input-base.component.mjs +22 -2
  17. package/esm2022/lib/components/po-field/po-input/po-input.component.mjs +4 -4
  18. package/esm2022/lib/components/po-field/po-login/po-login.component.mjs +4 -4
  19. package/esm2022/lib/components/po-field/po-lookup/po-lookup-base.component.mjs +22 -2
  20. package/esm2022/lib/components/po-field/po-lookup/po-lookup.component.mjs +4 -4
  21. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +22 -2
  22. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +4 -4
  23. package/esm2022/lib/components/po-field/po-number/po-number.component.mjs +4 -4
  24. package/esm2022/lib/components/po-field/po-password/po-password.component.mjs +4 -4
  25. package/esm2022/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +18 -2
  26. package/esm2022/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +4 -4
  27. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-base.component.mjs +18 -2
  28. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text.component.mjs +4 -4
  29. package/esm2022/lib/components/po-field/po-select/po-select.component.mjs +4 -4
  30. package/esm2022/lib/components/po-field/po-textarea/po-textarea-base.component.mjs +18 -2
  31. package/esm2022/lib/components/po-field/po-textarea/po-textarea.component.mjs +4 -4
  32. package/esm2022/lib/components/po-field/po-upload/po-upload-base.component.mjs +86 -2
  33. package/esm2022/lib/components/po-field/po-upload/po-upload.component.mjs +17 -7
  34. package/esm2022/lib/components/po-field/po-url/po-url.component.mjs +4 -4
  35. package/esm2022/lib/components/po-progress/index.mjs +2 -1
  36. package/esm2022/lib/components/po-progress/interfaces/index.mjs +2 -0
  37. package/esm2022/lib/components/po-progress/interfaces/po-progress-actions.interface.mjs +2 -0
  38. package/esm2022/lib/components/po-progress/po-progress-base.component.mjs +87 -2
  39. package/esm2022/lib/components/po-progress/po-progress.component.mjs +44 -15
  40. package/fesm2022/po-ui-ng-components.mjs +553 -132
  41. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  42. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +57 -1
  43. package/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.d.ts +14 -1
  44. package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +16 -1
  45. package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +16 -1
  46. package/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.d.ts +14 -1
  47. package/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.d.ts +7 -1
  48. package/lib/components/po-field/po-field-container/po-field-container.module.d.ts +2 -1
  49. package/lib/components/po-field/po-field-validate.model.d.ts +16 -1
  50. package/lib/components/po-field/po-input/po-input-base.component.d.ts +16 -1
  51. package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +16 -1
  52. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +16 -1
  53. package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +14 -1
  54. package/lib/components/po-field/po-rich-text/po-rich-text-base.component.d.ts +14 -1
  55. package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +14 -1
  56. package/lib/components/po-field/po-upload/po-upload-base.component.d.ts +80 -1
  57. package/lib/components/po-field/po-upload/po-upload.component.d.ts +6 -0
  58. package/lib/components/po-progress/index.d.ts +1 -0
  59. package/lib/components/po-progress/interfaces/index.d.ts +1 -0
  60. package/lib/components/po-progress/interfaces/po-progress-actions.interface.d.ts +83 -0
  61. package/lib/components/po-progress/po-progress-base.component.d.ts +81 -1
  62. package/lib/components/po-progress/po-progress.component.d.ts +4 -0
  63. package/package.json +4 -4
  64. package/po-ui-ng-components-18.23.0.tgz +0 -0
  65. package/schematics/ng-add/index.js +1 -1
  66. package/schematics/ng-update/v14/index.js +1 -1
  67. package/schematics/ng-update/v15/index.js +1 -1
  68. package/schematics/ng-update/v16/index.js +1 -1
  69. package/schematics/ng-update/v17/index.js +1 -1
  70. package/schematics/ng-update/v18/index.js +2 -2
  71. package/schematics/ng-update/v2/index.js +1 -1
  72. package/schematics/ng-update/v3/index.js +1 -1
  73. package/schematics/ng-update/v4/index.js +1 -1
  74. package/schematics/ng-update/v5/index.js +1 -1
  75. package/schematics/ng-update/v6/index.js +1 -1
  76. package/po-ui-ng-components-18.21.0.tgz +0 -0
@@ -677,7 +677,7 @@ export class PoDecimalComponent extends PoInputBaseComponent {
677
677
  useExisting: forwardRef(() => PoDecimalComponent),
678
678
  multi: true
679
679
  }
680
- ]), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 24, consts: [["inp", ""], [3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["inputmode", "decimal", "type", "text", 1, "po-input", 3, "blur", "focus", "input", "keypress", "autocomplete", "disabled", "id", "placeholder", "readonly", "required"], [1, "po-field-icon-container-right"], ["class", "po-icon-input", 3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-help", "p-disabled", "p-error-pattern"], [1, "po-field-icon-container-left"], [1, "po-field-icon", "po-icon-input", 3, "p-icon"], [1, "po-icon-input", 3, "p-change-event", "p-element-ref"]], template: function PoDecimalComponent_Template(rf, ctx) { if (rf & 1) {
680
+ ]), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 26, consts: [["inp", ""], [3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["inputmode", "decimal", "type", "text", 1, "po-input", 3, "blur", "focus", "input", "keypress", "autocomplete", "disabled", "id", "placeholder", "readonly", "required"], [1, "po-field-icon-container-right"], ["class", "po-icon-input", 3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-help", "p-disabled", "p-error-limit", "p-error-pattern", "p-append-in-body"], [1, "po-field-icon-container-left"], [1, "po-field-icon", "po-icon-input", 3, "p-icon"], [1, "po-icon-input", 3, "p-change-event", "p-element-ref"]], template: function PoDecimalComponent_Template(rf, ctx) { if (rf & 1) {
681
681
  const _r1 = i0.ɵɵgetCurrentView();
682
682
  i0.ɵɵelementStart(0, "po-field-container", 1)(1, "div", 2);
683
683
  i0.ɵɵtemplate(2, PoDecimalComponent_div_2_Template, 2, 3, "div", 3);
@@ -700,7 +700,7 @@ export class PoDecimalComponent extends PoInputBaseComponent {
700
700
  i0.ɵɵadvance(3);
701
701
  i0.ɵɵproperty("ngIf", ctx.clean && !ctx.disabled && !ctx.readonly);
702
702
  i0.ɵɵadvance();
703
- i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled)("p-error-pattern", ctx.getErrorPatternMessage());
703
+ i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled)("p-error-limit", ctx.errorLimit)("p-error-pattern", ctx.getErrorPatternMessage())("p-append-in-body", ctx.errorAppendBox);
704
704
  } }, dependencies: [i2.NgIf, i3.PoCleanComponent, i4.PoFieldContainerBottomComponent, i5.PoFieldContainerComponent, i6.PoIconComponent], encapsulation: 2, changeDetection: 0 });
705
705
  }
706
706
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoDecimalComponent, [{
@@ -716,7 +716,7 @@ export class PoDecimalComponent extends PoInputBaseComponent {
716
716
  useExisting: forwardRef(() => PoDecimalComponent),
717
717
  multi: true
718
718
  }
719
- ], template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon po-icon-input\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n inputmode=\"decimal\"\n type=\"text\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (input)=\"onInput($event)\"\n (keypress)=\"onKeyPress($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"po-icon-input\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom [p-help]=\"help\" [p-disabled]=\"disabled\" [p-error-pattern]=\"getErrorPatternMessage()\">\n </po-field-container-bottom>\n</po-field-container>\n" }]
719
+ ], template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon po-icon-input\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n inputmode=\"decimal\"\n type=\"text\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (input)=\"onInput($event)\"\n (keypress)=\"onKeyPress($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"po-icon-input\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom\n [p-help]=\"help\"\n [p-disabled]=\"disabled\"\n [p-error-limit]=\"errorLimit\"\n [p-error-pattern]=\"getErrorPatternMessage()\"\n [p-append-in-body]=\"errorAppendBox\"\n >\n </po-field-container-bottom>\n</po-field-container>\n" }]
720
720
  }], () => [{ type: i0.ElementRef }, { type: i1.PoLanguageService }, { type: i0.ChangeDetectorRef }], { inputEl: [{
721
721
  type: ViewChild,
722
722
  args: ['inp', { read: ElementRef, static: true }]
@@ -737,4 +737,4 @@ export class PoDecimalComponent extends PoInputBaseComponent {
737
737
  args: ['p-max']
738
738
  }] }); })();
739
739
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoDecimalComponent, { className: "PoDecimalComponent", filePath: "lib/components/po-field/po-decimal/po-decimal.component.ts", lineNumber: 83 }); })();
740
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZGVjaW1hbC9wby1kZWNpbWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kZWNpbWFsL3BvLWRlY2ltYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7OztJQ1Z2RSw4QkFBdUQ7SUFDckQsNkJBQWlIO0lBQ25ILGlCQUFNOzs7SUFEeUMsY0FBeUM7SUFBekMseURBQXlDO0lBQUMsb0NBQWU7Ozs7SUEwQnRHLG9DQUtDO0lBREMsNk1BQWtCLG9CQUFhLEtBQUM7SUFFbEMsaUJBQVc7OztJQUhULDhDQUF5Qjs7QURsQmpDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLE1BQU0saUNBQWlDLEdBQUcsRUFBRSxDQUFDO0FBQzdDLE1B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LGlCQUFpQjtrQkFBbkQsS0FBSzttQkFBQyxzQkFBc0I7WUFpQ04sTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVO1lBWUcsR0FBRztrQkFBdEIsS0FBSzttQkFBQyxPQUFPO1lBdUJNLEdBQUc7a0JBQXRCLEtBQUs7bUJBQUMsT0FBTzs7a0ZBaEpILGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBtYXhGYWlsZWQsIG1heGxlbmdwb2FpbGVkLCBtaW5GYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRUb0ludCwgdXVpZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9JbnB1dEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9wby1pbnB1dC9wby1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XG5cbmNvbnN0IHBvRGVjaW1hbERlZmF1bHREZWNpbWFsc0xlbmd0aCA9IDI7XG5jb25zdCBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGggPSAxMztcbmNvbnN0IHBvRGVjaW1hbE1heERlY2ltYWxzTGVuZ3RoID0gMTU7XG5jb25zdCBwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0ID0gMTY7XG5cbi8qKlxuICpcbiAqIEBkb2NzRXh0ZW5kcyBQb0lucHV0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIC0gTyBgcG8tZGVjaW1hbGAgw6kgdW0gKmlucHV0KiBlc3BlY8OtZmljbyBwYXJhIHJlY2ViZXIgYXBlbmFzIG7Dum1lcm9zIGRlY2ltYWlzLCBwb3IgaXNzbyByZWNlYmUgYXMgc2VndWludGVzIGNhcmFjdGVyw61zdGljYXM6XG4gKiAgKyBBY2VpdGEgYXBlbmFzIG7Dum1lcm9zO1xuICogICsgVXRpbGl6YSAnLCcgY29tbyBzZXBhcmFkb3IgZGUgZGVjaW1hbDtcbiAqICArIFV0aWxpemEgJy4nIHBhcmEgc2VwYXJhw6fDo28gZGUgbWlsaGFyO1xuICogICsgw4kgcG9zc8OtdmVsIGNvbmZpZ3VyYXIgYSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzIGUgYSBxdWFudGlkYWRlIGRlIGRpZ2l0b3MgZG8gY2FtcG8uXG4gKlxuICogPiAqKkltcG9ydGFudGU6KipcbiAqIEF0dWFsbWVudGUgbyBKYXZhU2NyaXB0IGxpbWl0YS1zZSBhIHVtIGNvbmp1bnRvIGRlIGRhZG9zIGRlIGAzMiBiaXRzYCwgZSBwYXJhIHF1ZSBvcyB2YWxvcmVzIGNvbXBvcnRlbS1zZSBkZXZpZGFtZW50ZSxcbiAqIG8gYHBvLWRlY2ltYWxgIGNvbnTDqW0gdW0gdHJhdGFtZW50byBxdWUgbGltaXRhIGVtIDE2IG8gbsO6bWVybyB0b3RhbCBkZSBjYXNhcyBhbnRlcyBlIGFww7NzIGEgdsOtcmd1bGEuXG4gKiBWZWphIGFiYWl4byBhcyBkZW1haXMgcmVncmFzIG5hcyBkb2N1bWVudGHDp8O1ZXMgZGUgYHAtZGVjaW1hbHMtbGVuZ3RoYCBlIGBwLXRob3VzYW5kLW1heGxlbmd0aGAuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGVjaW1hbC1iYXNpY1wiIHRpdGxlPVwiUE8gRGVjaW1hbCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1iYXNpYy9zYW1wbGUtcG8tZGVjaW1hbC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWJhc2ljL3NhbXBsZS1wby1kZWNpbWFsLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRlY2ltYWwtbGFic1wiIHRpdGxlPVwiUE8gRGVjaW1hbCBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWxhYnMvc2FtcGxlLXBvLWRlY2ltYWwtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWxhYnMvc2FtcGxlLXBvLWRlY2ltYWwtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kZWNpbWFsLWhvdXJseS13YWdlXCIgdGl0bGU9XCJQTyBEZWNpbWFsIC0gSG91cmx5IFdhZ2VcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2Uvc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1ob3VybHktd2FnZS9zYW1wbGUtcG8tZGVjaW1hbC1ob3VybHktd2FnZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm1cIiB0aXRsZT1cIlBPIERlY2ltYWwgLSBIb3VybHkgV2FnZSBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1kZWNpbWFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWRlY2ltYWwuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0RlY2ltYWxDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0RlY2ltYWxDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9EZWNpbWFsQ29tcG9uZW50IGV4dGVuZHMgUG9JbnB1dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2lucCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGlucHV0RWw6IEVsZW1lbnRSZWY7XG5cbiAgaWQgPSBgcG8tZGVjaW1hbFske3V1aWQoKX1dYDtcblxuICBwcml2YXRlIF9kZWNpbWFsc0xlbmd0aD86IG51bWJlciA9IHBvRGVjaW1hbERlZmF1bHREZWNpbWFsc0xlbmd0aDtcbiAgcHJpdmF0ZSBfdGhvdXNhbmRNYXhsZW5ndGg/OiBudW1iZXIgPSBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGg7XG4gIHByaXZhdGUgX2xvY2FsZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfbWluPzogbnVtYmVyO1xuICBwcml2YXRlIF9tYXg/OiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBkZWNpbWFsU2VwYXJhdG9yOiBzdHJpbmc7XG4gIHByaXZhdGUgZmlyZUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGlzS2V5Ym9hcmRBbmRyb2lkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgbWludXNTaWduOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgb2xkRG90c0xlbmd0aCA9IG51bGw7XG4gIHByaXZhdGUgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZztcbiAgcHJpdmF0ZSB2YWx1ZUJlZm9yZUNoYW5nZTogYW55O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvblZhbGlkYXRvcjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgcmVnZXggPSB7XG4gICAgdGhvdXNhbmQ6IG5ldyBSZWdFeHAoJ1xcXFwnICsgJywnLCAnZycpLFxuICAgIGRlY2ltYWw6IG5ldyBSZWdFeHAoJ1xcXFwnICsgJy4nLCAnZycpXG4gIH07XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub0F1dG9jb21wbGV0ZSA/ICdvZmYnIDogJ29uJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFF1YW50aWRhZGUgbcOheGltYSBkZSBjYXNhcyBkZWNpbWFpcy5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGU6KipcbiAgICogLSBPIHZhbG9yIG3DoXhpbW8gcGVybWl0aWRvIMOpIDE1O1xuICAgKiAtIEEgc29tYSB0b3RhbCBkZSBgcC1kZWNpbWFscy1sZW5ndGhgIGNvbSBgcC10aG91c2FuZC1tYXhsZW5ndGhgIGxpbWl0YS1zZSDDoCAxNjtcbiAgICogLSBFc3RhIHByb3ByaWVkYWRlIHNvYnJlcMO1ZSBhcGVuYXMgbyB2YWxvciAqKnBhZHLDo28qKiBkZSBgcC10aG91c2FuZC1tYXhsZW5ndGhgO1xuICAgKiAtIENhc28gYHAtdGhvdXNhbmQtbWF4bGVuZ3RoYCB0ZW5oYSB1bSB2YWxvciBkZWZpbmlkbywgZXN0YSBwcm9wcmllZGFkZSBwb2RlcsOhIHJlY2ViZXIgYXBlbmFzIG8gdmFsb3IgcmVzdGFudGUgZG8gbGltaXRlIHRvdGFsICgxNikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyYFxuICAgKi9cbiAgQElucHV0KCdwLWRlY2ltYWxzLWxlbmd0aCcpIHNldCBkZWNpbWFsc0xlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgbGV0IGRlY2ltYWxzTGVuZ3RoID0gY29udmVydFRvSW50KHZhbHVlKTtcblxuICAgIGRlY2ltYWxzTGVuZ3RoID0gdGhpcy5pc1ZhbHVlQmV0d2VlbkFsbG93ZWQoZGVjaW1hbHNMZW5ndGgsIHBvRGVjaW1hbE1heERlY2ltYWxzTGVuZ3RoKVxuICAgICAgPyBkZWNpbWFsc0xlbmd0aFxuICAgICAgOiBwb0RlY2ltYWxEZWZhdWx0RGVjaW1hbHNMZW5ndGg7XG5cbiAgICBpZiAodGhpcy5pc0dyZWF0ZXJUaGFuVG90YWxMZW5ndGhMaW1pdChkZWNpbWFsc0xlbmd0aCwgdGhpcy50aG91c2FuZE1heGxlbmd0aCkpIHtcbiAgICAgIHRoaXMudGhvdXNhbmRNYXhsZW5ndGggPSBwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0IC0gZGVjaW1hbHNMZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVjaW1hbHNMZW5ndGggPSBkZWNpbWFsc0xlbmd0aDtcbiAgfVxuXG4gIGdldCBkZWNpbWFsc0xlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVjaW1hbHNMZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBRdWFudGlkYWRlIG3DoXhpbWEgZGUgZMOtZ2l0b3MgYW50ZXMgZG8gc2VwYXJhZG9yIGRlY2ltYWwuXG4gICAqXG4gICAqID4gKipJbXBvcnRhbnRlOioqXG4gICAqIC0gTyB2YWxvciBtw6F4aW1vIHBlcm1pdGlkbyDDqSAxMztcbiAgICogLSBBIHNvbWEgdG90YWwgZGUgYHAtZGVjaW1hbHMtbGVuZ3RoYCBjb20gYHAtdGhvdXNhbmQtbWF4bGVuZ3RoYCBsaW1pdGEtc2Ugw6AgMTY7XG4gICAqIC0gRXN0YSBwcm9wcmllZGFkZSBzb2JyZXDDtWUgbyB2YWxvciBkZWZpbmlkbyBlbSBgcC1kZWNpbWFscy1sZW5ndGhgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTNgXG4gICAqL1xuICBASW5wdXQoJ3AtdGhvdXNhbmQtbWF4bGVuZ3RoJykgc2V0IHRob3VzYW5kTWF4bGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICBsZXQgdGhvdXNhbmRNYXhsZW5ndGggPSBjb252ZXJ0VG9JbnQodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuZGVjaW1hbHNMZW5ndGggPiBwb0RlY2ltYWxEZWZhdWx0RGVjaW1hbHNMZW5ndGggJiYgIXRob3VzYW5kTWF4bGVuZ3RoKSB7XG4gICAgICB0aG91c2FuZE1heGxlbmd0aCA9IHBvRGVjaW1hbFRvdGFsTGVuZ3RoTGltaXQgLSB0aGlzLmRlY2ltYWxzTGVuZ3RoO1xuICAgIH1cblxuICAgIHRob3VzYW5kTWF4bGVuZ3RoID0gdGhpcy5pc1ZhbHVlQmV0d2VlbkFsbG93ZWQodGhvdXNhbmRNYXhsZW5ndGgsIHBvRGVjaW1hbERlZmF1bHRUaG91c2FuZE1heGxlbmd0aClcbiAgICAgID8gdGhvdXNhbmRNYXhsZW5ndGhcbiAgICAgIDogcG9EZWNpbWFsRGVmYXVsdFRob3VzYW5kTWF4bGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMuaXNHcmVhdGVyVGhhblRvdGFsTGVuZ3RoTGltaXQodGhpcy5kZWNpbWFsc0xlbmd0aCwgdGhvdXNhbmRNYXhsZW5ndGgpKSB7XG4gICAgICB0aGlzLmRlY2ltYWxzTGVuZ3RoID0gcG9EZWNpbWFsVG90YWxMZW5ndGhMaW1pdCAtIHRob3VzYW5kTWF4bGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuX3Rob3VzYW5kTWF4bGVuZ3RoID0gdGhvdXNhbmRNYXhsZW5ndGg7XG4gIH1cblxuICBnZXQgdGhvdXNhbmRNYXhsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rob3VzYW5kTWF4bGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5mb3JtYSBvIGxvY2FsZShwYcOtcykgcGFyYSBhIGZvcm1hdGHDp8OjbyBkbyB2YWxvci5cbiAgICogUG9yIHBhZHLDo28gbyB2YWxvciBzZXLDoSBjb25maWd1cmFkbyBzZWd1bmRvIGEgbyBtw7NkdWxvIFtgSTE4bmBdKGRvY3VtZW50YXRpb24vcG8taTE4bilcbiAgICpcbiAgICogPiBQYXJhIHZlciBxdWFpcyBsaW5ndWFnZW5zIHN1cG9ydGFkYXMgYWNlc3NlIFtgSTE4bmBdKGRvY3VtZW50YXRpb24vcG8taTE4bilcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1sb2NhbGUnKSBzZXQgbG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlO1xuICAgIHRoaXMuc2V0TnVtYmVyc1NlcGFyYXRvcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIG3DrW5pbW8uXG4gICAqL1xuICBASW5wdXQoJ3AtbWluJykgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX21pbiA9IHZhbHVlO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fbWluID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIG3DoXhpbW8uXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4Jykgc2V0IG1heCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX21heCA9IHZhbHVlO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fbWF4ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKGNkKTtcbiAgICB0aGlzLmlzS2V5Ym9hcmRBbmRyb2lkID0gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BbmRyb2lkL2kpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXROdW1iZXJzU2VwYXJhdG9ycygpO1xuICB9XG5cbiAgc2V0TnVtYmVyc1NlcGFyYXRvcnMoKSB7XG4gICAgY29uc3QgeyBkZWNpbWFsU2VwYXJhdG9yLCB0aG91c2FuZFNlcGFyYXRvciB9ID0gdGhpcy5wb0xhbmd1YWdlU2VydmljZS5nZXROdW1iZXJTZXBhcmF0b3JzKHRoaXMuX2xvY2FsZSk7XG4gICAgdGhpcy5kZWNpbWFsU2VwYXJhdG9yID0gZGVjaW1hbFNlcGFyYXRvcjtcbiAgICB0aGlzLnRob3VzYW5kU2VwYXJhdG9yID0gdGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgdGhpcy5yZWdleCA9IHtcbiAgICAgIHRob3VzYW5kOiBuZXcgUmVnRXhwKCdcXFxcJyArIHRob3VzYW5kU2VwYXJhdG9yLCAnZycpLFxuICAgICAgZGVjaW1hbDogbmV3IFJlZ0V4cCgnXFxcXCcgKyBkZWNpbWFsU2VwYXJhdG9yLCAnZycpXG4gICAgfTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnZlcmlmeUF1dG9Gb2N1cygpO1xuICAgIHRoaXMuc2V0UGFkZGluZ0lucHV0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblZhbGlkYXRvcj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNsZWFyKHZhbHVlKSB7XG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMuY29udHJvbENoYW5nZUVtaXR0ZXIoKTtcblxuICAgIGlmICh0aGlzLmVycm9yQXN5bmNQcm9wZXJ0aWVzPy50cmlnZ2VyTW9kZSA9PT0gJ2NoYW5nZU1vZGVsJykge1xuICAgICAgdGhpcy52ZXJpZnlFcnJvckFzeW5jKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBleHRyYVZhbGlkYXRpb24oYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCB2YWx1ZSA9IGFic3RyYWN0Q29udHJvbC52YWx1ZTtcbiAgICBjb25zdCB0aG91c2FuZFZhbHVlID0gTWF0aC50cnVuYyh2YWx1ZSk7XG5cbiAgICAvLyBWZXJpZmljYSBzZSBqw6EgcG9zc3VpIGFsZ3VtIGVycm9yIHBhdHRlcm4gcGFkcsOjby5cbiAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnVmFsb3IgSW52w6FsaWRvJyA/IHRoaXMuZXJyb3JQYXR0ZXJuIDogJyc7XG5cbiAgICBpZiAobWluRmFpbGVkKHRoaXMubWluLCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1pbjoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtYXhGYWlsZWQodGhpcy5tYXgsIHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF4OiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKG1heGxlbmdwb2FpbGVkKHRoaXMudGhvdXNhbmRNYXhsZW5ndGgsIHRob3VzYW5kVmFsdWUpICYmXG4gICAgICAgIHRoaXMudGhvdXNhbmRNYXhsZW5ndGggPCBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGgpIHx8XG4gICAgICBtYXhsZW5ncG9haWxlZChwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0LCB2YWx1ZSlcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNjcmVlblZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0RWwgPyB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA6ICcnO1xuICB9XG5cbiAgaGFzSW52YWxpZENsYXNzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykgJiZcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5JykgJiZcbiAgICAgICh0aGlzLmdldFNjcmVlblZhbHVlKCkgIT09ICcnIHx8ICh0aGlzLnNob3dFcnJvck1lc3NhZ2VSZXF1aXJlZCAmJiAodGhpcy5yZXF1aXJlZCB8fCB0aGlzLmhhc1ZhbGlkYXRvclJlcXVpcmVkKSkpXG4gICAgKTtcbiAgfVxuXG4gIGhhc0xldHRlcnModmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hdGNoKC9bYS16QS1aOjsrPV/CtGBeflwiJz8hQCMkJcKoJiooKT48e33Dp8OHXFxbXFxdL1xcXFx8XSsvKTtcbiAgfVxuXG4gIGhhc05vdFNwYWNlKHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiB2YWx1ZS5tYXRjaCgvXlxcUyokLyk7XG4gIH1cblxuICBpc1ZhbGlkTnVtYmVyKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyAtIGV2ZW50LmtleSBuw6NvIGV4aXN0aWEgZW0gYWxndW5zIGJyb3dzZXJzLCBjb21vIFNhbXN1bmcgYnJvd3NlciBlIEZpcmVmb3guXG4gICAgY29uc3Qga2V5VmFsdWUgPSA8YW55PlN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQud2hpY2gpO1xuICAgIGNvbnN0IHZhbGlkS2V5ID0gZXZlbnQud2hpY2ggIT09IDggJiYgZXZlbnQud2hpY2ggIT09IDA7XG5cbiAgICByZXR1cm4gIXRoaXMuaGFzTGV0dGVycyhrZXlWYWx1ZSkgJiYgdGhpcy5oYXNOb3RTcGFjZShrZXlWYWx1ZSkgJiYgdmFsaWRLZXk7XG4gIH1cblxuICAvLyBmdW7Dp8OjbyByZXNwb25zw6F2ZWwgcG9yIGFkaWNpb25hciBvcyB6ZXJvZXMgY29tIGFzIGNhc2EgZGVjaW1haXMgYW8gc2FpciBkbyBjYW1wby5cbiAgb25CbHVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmhhc0xldHRlcnModmFsdWUpIHx8IHRoaXMuY29udGFpbnNNb3JlVGhhbk9uZURlY2ltYWxTZXBhcmF0b3IodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZVdpdGhvdXRUaG91c2FuZFNlcGFyYXRvciA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodmFsdWUpO1xuICAgICAgY29uc3QgZm9ybWF0ZWRWaWV3VmFsdWUgPSB0aGlzLmZvcm1hdFRvVmlld1ZhbHVlKHZhbHVlV2l0aG91dFRob3VzYW5kU2VwYXJhdG9yKTtcbiAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKGZvcm1hdGVkVmlld1ZhbHVlKTtcbiAgICAgIGlmICghZm9ybWF0ZWRWaWV3VmFsdWUpIHtcbiAgICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmx1ci5lbWl0KCk7XG4gICAgdGhpcy5jb250cm9sQ2hhbmdlRW1pdHRlcigpO1xuICB9XG5cbiAgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgIC8vIEF0dWFsaXphIHZhbG9yIGRhIHZhcmnDoXZlbCBxdWUgc2Vyw6EgdXNhZGEgcGFyYSB2ZXJpZmljYXIgc2UgbyBjYW1wbyB0ZXZlIGFsdGVyYcOnw6NvXG4gICAgdGhpcy52YWx1ZUJlZm9yZUNoYW5nZSA9IHRoaXMuZ2V0U2NyZWVuVmFsdWUoKTtcblxuICAgIC8vIERpc3BhcmEgZXZlbnRvIHF1YW5kbyBvIHVzdcOhcmlvIGVudHJhciBubyBjYW1wb1xuICAgIC8vIEVzdGUgZXZlbnRvIHRhbWLDqW0gw6kgZGlzcGFyYWRvIHF1YW5kbyBvIGNhbXBvIGluaWNpYSBjb20gZm9jby5cbiAgICB0aGlzLmVudGVyLmVtaXQoKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IHNlbGVjdGlvbkVuZCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQ7XG5cbiAgICBsZXQgbW9kZWxWYWx1ZTtcblxuICAgIC8vIC0gQnJvd3NlcnMgbmF0aXZvcyBkbyBBbmRyb2lkIGV4OiBTYW1zdW5nIEJyb3dzZXIuXG4gICAgaWYgKHRoaXMuaXNLZXlib2FyZEFuZHJvaWQpIHtcbiAgICAgIHRoaXMub25JbnB1dEtleWJvYXJkQW5kcm9pZChldmVudCk7XG4gICAgfVxuXG4gICAgbW9kZWxWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBtb2RlbFZhbHVlID0gdGhpcy5hZGRaZXJvQmVmb3JlKG1vZGVsVmFsdWUpO1xuICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TWFzayhtb2RlbFZhbHVlKTtcblxuICAgIC8vIHZhbGlkYcOnw6NvIHBhcmEgbsOjbyBxdWVicmFyIElFIGNvbSBwbGFjZWhvbGRlciBkZWZpbmlkbyBlIElucHV0IHZhemlvXG4gICAgaWYgKHZpZXdWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodmlld1ZhbHVlKTtcbiAgICAgIHRoaXMuc2V0Q3Vyc29ySW5wdXQoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgIH1cblxuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuZm9ybWF0VG9Nb2RlbFZhbHVlKG1vZGVsVmFsdWUpKTtcblxuICAgIGlmICh0aGlzLmVycm9yQXN5bmNQcm9wZXJ0aWVzPy50cmlnZ2VyTW9kZSA9PT0gJ2NoYW5nZU1vZGVsJykge1xuICAgICAgdGhpcy52ZXJpZnlFcnJvckFzeW5jKHRoaXMuZm9ybWF0VG9Nb2RlbFZhbHVlKG1vZGVsVmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBvbklucHV0S2V5Ym9hcmRBbmRyb2lkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IGhhc0xldHRlcnMgPSB0aGlzLmhhc0xldHRlcnMoaW5wdXRWYWx1ZSk7XG5cbiAgICBpZiAoaGFzTGV0dGVycykge1xuICAgICAgdGhpcy5zZXRWaWV3VmFsdWUoaW5wdXRWYWx1ZS5yZXBsYWNlKGhhc0xldHRlcnNbMF0sICcnKSk7XG5cbiAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IHNlbGVjdGlvblN0YXJ0IC0gMTtcbiAgICAgIGNvbnN0IGtleSA9IGlucHV0VmFsdWUuY2hhckF0KHBvc2l0aW9uKTtcblxuICAgICAgdGhpcy5zZXRQb3NpdGlvblZhbHVlKGV2ZW50KTtcblxuICAgICAgaWYgKHRoaXMuaXNWYWxpZEtleShldmVudCwga2V5KSkge1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5pc1ZhbGlkS2V5KGV2ZW50KTtcbiAgfVxuXG4gIHNldFBhZGRpbmdJbnB1dCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdG9ySWNvbnMgPSAnLnBvLWZpZWxkLWljb24tY29udGFpbmVyOm5vdCgucG8tZmllbGQtaWNvbi1jb250YWluZXItbGVmdCkgPiAucG8taWNvbic7XG4gICAgICBsZXQgaWNvbnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvckljb25zKS5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5jbGVhbikge1xuICAgICAgICBpY29ucysrO1xuICAgICAgfVxuICAgICAgaWYgKGljb25zKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke2ljb25zICogMzZ9cHhgO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZU1vZGVsKHZhbHVlKSB7XG4gICAgbGV0IGZvcm1hdGVkVmlld1ZhbHVlO1xuICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICBmb3JtYXRlZFZpZXdWYWx1ZSA9IHRoaXMuZm9ybWF0VG9WaWV3VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZShmb3JtYXRlZFZpZXdWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSgnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdGVkVmlld1ZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgIHRoaXMudmVyaWZ5RXJyb3JBc3luYyh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXJyb3JQYXR0ZXJuTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvclBhdHRlcm4gIT09ICcnICYmIHRoaXMuaGFzSW52YWxpZENsYXNzKCkgPyB0aGlzLmVycm9yUGF0dGVybiA6ICcnO1xuICB9XG5cbiAgLy8gcmVzcG9uc8OhdmVsIHBvciBhZGljaW9uYXIgMCBhbnRlcyBkYSB2aXJndWxhIChkZWNpbWFsU2VwYXJhdG9yKS5cbiAgcHJpdmF0ZSBhZGRaZXJvQmVmb3JlKHZhbHVlKSB7XG4gICAgY29uc3QgaXNEZWNpbWFsU2VwYXJhdG9yID0gdmFsdWUgPT09IHRoaXMuZGVjaW1hbFNlcGFyYXRvcjtcblxuICAgIHJldHVybiBpc0RlY2ltYWxTZXBhcmF0b3IgPyBgMCR7dmFsdWV9YCA6IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluc0NvbW1hKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG4gIH1cblxuICBwcml2YXRlIGNvbnRhaW5zTW9yZVRoYW5PbmVEZWNpbWFsU2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIGNvbnN0IGZvdW5kQ29tbWEgPSB2YWx1ZS5tYXRjaCh0aGlzLnJlZ2V4LmRlY2ltYWwpO1xuXG4gICAgcmV0dXJuICEhKGZvdW5kQ29tbWEgJiYgZm91bmRDb21tYS5sZW5ndGggPiAxKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udHJvbENoYW5nZUVtaXR0ZXIoKSB7XG4gICAgY29uc3QgZWxlbWVudFZhbHVlID0gdGhpcy5nZXRTY3JlZW5WYWx1ZSgpO1xuXG4gICAgLy8gRW1pdGUgbyBldmVudG8gY2hhbmdlIG1hbnVhbG1lbnRlIHF1YW5kbyBvIGNhbXBvIMOpIGFsdGVyYWRvXG4gICAgLy8gRXN0ZSBldmVudG8gw6kgY29udHJvbGFkbyBtYW51YWxtZW50ZSBkZXZpZG8gYW8gcHJldmVudERlZmF1bHQgZXhpc3RlbnRlIG5hIG3DoXNjYXJhXG4gICAgLy8gZSBkZXZpZG8gYW8gY29udHJvbGUgZG8gcC1jbGVhbiwgcXVlIHRhbWLDqW0gcHJlY2lzYSBlbWl0aXIgY2hhbmdlXG4gICAgaWYgKGVsZW1lbnRWYWx1ZSAhPT0gdGhpcy52YWx1ZUJlZm9yZUNoYW5nZSkge1xuICAgICAgdGhpcy5maXJlQ2hhbmdlID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KGVsZW1lbnRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGVycm9yQXN5bmMgPSB0aGlzLmVycm9yQXN5bmNQcm9wZXJ0aWVzO1xuICAgICAgICBpZiAoZXJyb3JBc3luYz8udHJpZ2dlck1vZGUgPT09ICdjaGFuZ2UnIHx8ICFlcnJvckFzeW5jPy50cmlnZ2VyTW9kZSkge1xuICAgICAgICAgIHRoaXMudmVyaWZ5RXJyb3JBc3luYyhlbGVtZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TWFzayh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gbmVjZXNzw6FyaW8gcGFyYSBuw6NvIGFkaWNpb25hciAuIG5hcyBjYXNhIGRlY2ltYWlzLlxuICAgIC8vIHBvciBleGVtcGxvOiAxMi4zNDUsMTIzLjQ1IChlcnJhZG8pXG4gICAgLy8gMTIuMzQ1LDEyMzQ1IChjb3JyZXRvKVxuXG4gICAgaWYgKHZhbHVlLm1hdGNoKHRoaXMucmVnZXguZGVjaW1hbCkpIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgKFxcXFxkKSg/PShcXFxcZHszfSkrKD8hXFxcXGQpJHt0aGlzLmRlY2ltYWxTZXBhcmF0b3J9KWAsICdnJyk7XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKHJlZ2V4LCBgJDEke3RoaXMudGhvdXNhbmRTZXBhcmF0b3J9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBgJDEke3RoaXMudGhvdXNhbmRTZXBhcmF0b3J9YCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFRvTW9kZWxWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLnJlcGxhY2VDb21tYVRvRG90KHZhbHVlKTtcbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlID8gcGFyc2VGbG9hdChOdW1iZXIoZm9ybWF0dGVkVmFsdWUpLnRvRml4ZWQodGhpcy5kZWNpbWFsc0xlbmd0aCkpIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHBhcnNlZFZhbHVlID09PSAwIHx8IHBhcnNlZFZhbHVlID8gcGFyc2VkVmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFRvVmlld1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyAtIE5lY2Vzc8OhcmlvIHBhcmEgdHJhdGFyIHZhbG9yZXMgcXVlIGNvbnRlbmhhbSBkZWNpbWFsU2VwYXJhdG9yXG4gICAgdmFsdWUgPSB0aGlzLnJlcGxhY2VDb21tYVRvRG90KHZhbHVlKTtcblxuICAgIGNvbnN0IG51bWJlclZhbHVlID0gTnVtYmVyKHZhbHVlKS50b0ZpeGVkKHRoaXMuZGVjaW1hbHNMZW5ndGgpO1xuXG4gICAgY29uc3QgdmFsdWVCZWZvcmVEb3QgPSB0aGlzLmdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKG51bWJlclZhbHVlLCAnLicpO1xuICAgIGNvbnN0IHZhbHVlQWZ0ZXJEb3QgPSB0aGlzLmdldFZhbHVlQWZ0ZXJTZXBhcmF0b3IobnVtYmVyVmFsdWUsICcuJyk7XG5cbiAgICBjb25zdCBmb3JtYXRlZE51bWJlciA9IHRoaXMuZm9ybWF0TWFzayh2YWx1ZUJlZm9yZURvdCk7XG5cbiAgICBpZiAoZm9ybWF0ZWROdW1iZXIgPT09ICdOYU4nKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVjaW1hbHNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3JtYXRlZE51bWJlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2Zvcm1hdGVkTnVtYmVyfSR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfSR7dmFsdWVBZnRlckRvdH1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSh0aGlzLnJlZ2V4LnRob3VzYW5kLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlQWZ0ZXJTZXBhcmF0b3IodmFsdWUgPSAnJywgc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KHNlcGFyYXRvcilbMV0gfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKHZhbHVlID0gJycsIHNlcGFyYXRvcikge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdChzZXBhcmF0b3IpWzBdIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNMZXNzRG90KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBkb3RzID0gdmFsdWUubWF0Y2godGhpcy5yZWdleC50aG91c2FuZCk7XG4gICAgICBjb25zdCBkb3RzTGVuZ3RoID0gZG90cyAmJiBkb3RzLmxlbmd0aDtcblxuICAgICAgaWYgKGRvdHNMZW5ndGggPCB0aGlzLm9sZERvdHNMZW5ndGgpIHtcbiAgICAgICAgdGhpcy5vbGREb3RzTGVuZ3RoID0gZG90c0xlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5vbGREb3RzTGVuZ3RoID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhc01vcmVEb3QodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IGRvdHMgPSB2YWx1ZS5tYXRjaCh0aGlzLnJlZ2V4LnRob3VzYW5kKTtcbiAgICAgIGNvbnN0IGRvdHNMZW5ndGggPSBkb3RzICYmIGRvdHMubGVuZ3RoO1xuXG4gICAgICBpZiAoZG90c0xlbmd0aCA+IHRoaXMub2xkRG90c0xlbmd0aCkge1xuICAgICAgICB0aGlzLm9sZERvdHNMZW5ndGggPSBkb3RzTGVuZ3RoO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLm9sZERvdHNMZW5ndGggPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzTWludXNTaWduSW52YWxpZFBvc2l0aW9uKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXlJc01pbnVzU2lnbiA9IGV2ZW50LmtleSA9PT0gdGhpcy5taW51c1NpZ247XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG5cbiAgICByZXR1cm4ga2V5SXNNaW51c1NpZ24gJiYgc2VsZWN0aW9uU3RhcnQgIT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzSW52YWxpZEtleShldmVudDogYW55LCBjaGFyQ29kZTogYW55KSB7XG4gICAgY29uc3QgaXNJbnZhbGlkTnVtYmVyID0gIXRoaXMuaXNWYWxpZE51bWJlcihldmVudCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy52ZXJpZnlJbnNlcnRDb21tYShldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5VGhvdXNhbmRMZW5ndGgoZXZlbnQpIHx8XG4gICAgICB0aGlzLnZlcmlmeVZhbHVlQWZ0ZXJDb21tYShldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5SW5zZXJ0TWludXNTaWduKGV2ZW50KSB8fFxuICAgICAgdGhpcy5oYXNNaW51c1NpZ25JbnZhbGlkUG9zaXRpb24oZXZlbnQpIHx8XG4gICAgICBpc0ludmFsaWROdW1iZXIgfHxcbiAgICAgIHRoaXMudmFsaWRhdGVDdXJzb3JQb3NpdGlvbkJlZm9yZVNlcGFyYXRvcihldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5RGVjaW1hbExlbmd0aElzWmVyb0FuZEtleVByZXNzZWRJc0NvbW1hKGNoYXJDb2RlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzR3JlYXRlclRoYW5Ub3RhbExlbmd0aExpbWl0KGRlY2ltYWxzTWF4TGVuZ3RoOiBudW1iZXIsIHRob3VzYW5kTWF4bGVuZ3RoOiBudW1iZXIpIHtcbiAgICByZXR1cm4gZGVjaW1hbHNNYXhMZW5ndGggKyB0aG91c2FuZE1heGxlbmd0aCA+IHBvRGVjaW1hbFRvdGFsTGVuZ3RoTGltaXQ7XG4gIH1cblxuICBwcml2YXRlIGlzS2V5RGVjaW1hbFNlcGFyYXRvcihldmVudCkge1xuICAgIHJldHVybiBldmVudC5rZXkgPT09IHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCBldmVudC5jaGFyID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gIH1cblxuICBwcml2YXRlIGlzUG9zaXRpb25BZnRlckRlY2ltYWxTZXBhcmF0b3IocG9zaXRpb25DdXJzb3IsIHZhbHVlKSB7XG4gICAgY29uc3QgaW5kZXhDb21tYSA9IHZhbHVlICYmIHZhbHVlLmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgIGlmIChpbmRleENvbW1hICYmIHRoaXMuZGVjaW1hbHNMZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcG9zaXRpb25DdXJzb3IgPiBpbmRleENvbW1hO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTZWxlY3Rpb25TdGFydERpZmZlcmVudFNlbGVjdGlvbkVuZCh0YXJnZXQ6IGFueSkge1xuICAgIHJldHVybiB0YXJnZXQuc2VsZWN0aW9uU3RhcnQgIT09IHRhcmdldC5zZWxlY3Rpb25FbmQ7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRLZXkoZXZlbnQ6IGFueSwga2V5Pzogc3RyaW5nKSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IHZhbGlkS2V5ID0gZXZlbnQud2hpY2ggPT09IDggfHwgZXZlbnQud2hpY2ggPT09IDA7XG5cbiAgICBpZiAodmFsaWRLZXkgJiYgIXRoaXMuaXNLZXlib2FyZEFuZHJvaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBldmVudC5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNJbnZhbGlkS2V5KGV2ZW50LCBjaGFyQ29kZSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbHVlQmV0d2VlbkFsbG93ZWQodmFsdWU6IG51bWJlciwgbWF4QWxsb3dlZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gbWF4QWxsb3dlZDtcbiAgfVxuXG4gIC8vIFF1YW5kbyBkZWNpbWFsc0xlbmd0aCBmb3IgMCBuw6NvIGRldmUgcGVybWl0aXIgaW5mb3JtYXIgdsOtcmd1bGEgKGRlY2ltYWxTZXBhcmF0b3IpXG4gIHByaXZhdGUgdmVyaWZ5RGVjaW1hbExlbmd0aElzWmVyb0FuZEtleVByZXNzZWRJc0NvbW1hKGNoYXJDb2RlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gY2hhckNvZGUgPT09IDQ0ICYmIHRoaXMuZGVjaW1hbHNMZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUF1dG9Gb2N1cygpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxTZWxlY3Rpb25SYW5nZSh0YXJnZXQ6IGFueSwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkge1xuICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gMSAmJiBzZWxlY3Rpb25FbmQgPT09IDEpIHtcbiAgICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgKyAxLCBzZWxlY3Rpb25FbmQgKyAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCAtIDEsIHNlbGVjdGlvbkVuZCAtIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXQodmFsdWUsIGluZGV4LCByZXBsYWNlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlICsgdmFsdWUuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VDb21tYVRvRG90KHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIGlmICh0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcsJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UodGhpcy5yZWdleC5kZWNpbWFsLCAnLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3Vyc29ySW5wdXQoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgdmlld1ZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuXG4gICAgLy8gQ2FzbyBob3V2ZXIgbWFpcyAuIGRvIHF1ZSBhbnRlcmlvcm1lbnRlIHNvbWEgbyB2YWxvciBjb20gMS5cbiAgICBpZiAodGhpcy5oYXNNb3JlRG90KHZpZXdWYWx1ZSkgfHwgdmlld1ZhbHVlID09PSAnMCcgKyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgKyAxLCBzZWxlY3Rpb25FbmQgKyAxKTtcbiAgICB9XG5cbiAgICAvLyBDYXNvIGhvdXZlciBtZW5vcyAuIGRvIHF1ZSBhbnRlcmlvcm1lbnRlIHN1YnRyYWkgbyB2YWxvciBwb3IgMS5cbiAgICBpZiAodGhpcy5oYXNMZXNzRG90KHZpZXdWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFNlbGVjdGlvblJhbmdlKHRhcmdldCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uVmFsdWUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0IC0gMTtcblxuICAgIGlmIChwb3NpdGlvbiA+IDAgJiYgZXZlbnQua2V5ID09PSB0aGlzLm1pbnVzU2lnbikge1xuICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKSArIHZhbHVlLnN1YnN0cihwb3NpdGlvbiArIDEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUN1cnNvclBvc2l0aW9uQmVmb3JlU2VwYXJhdG9yKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodGFyZ2V0LnZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZUJlZm9yZVNlcGFyYXRvciA9IHRoaXMuZ2V0VmFsdWVCZWZvcmVTZXBhcmF0b3IodGFyZ2V0LnZhbHVlLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgIGNvbnN0IHZhbHVlQmVmb3JlU2VwYXJhdG9yT3JpZ2luYWwgPSB0aGlzLmdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKG9yaWdpbmFsVmFsdWUsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGlvblN0YXJ0RGlmZmVyZW50U2VsZWN0aW9uRW5kKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRhcmdldC5zZWxlY3Rpb25TdGFydCA8PSB2YWx1ZUJlZm9yZVNlcGFyYXRvci5sZW5ndGggJiZcbiAgICAgIHZhbHVlQmVmb3JlU2VwYXJhdG9yT3JpZ2luYWwubGVuZ3RoID09PSB0aGlzLnRob3VzYW5kTWF4bGVuZ3RoICYmXG4gICAgICAhdGhpcy5pc0tleURlY2ltYWxTZXBhcmF0b3IoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5RXJyb3JBc3luYyh2YWx1ZSkge1xuICAgIGlmICh0aGlzLmVycm9yUGF0dGVybiAhPT0gJycgJiYgdGhpcy5lcnJvckFzeW5jUHJvcGVydGllcz8uZXJyb3JBc3luYykge1xuICAgICAgY29uc3QgZXJyb3JBc3luYyA9IHRoaXMuZXJyb3JBc3luY1Byb3BlcnRpZXMuZXJyb3JBc3luYyh2YWx1ZSk7XG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKGVycm9yQXN5bmMpKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uVmFsaWRhdG9yPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblZhbGlkYXRvciA9IGVycm9yQXN5bmNcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbmctaW52YWxpZCcpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbmctZGlydHknKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpICYmXG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5JykgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ludmFsaWRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCduZy1pbnZhbGlkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeVRob3VzYW5kTGVuZ3RoKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodGFyZ2V0LnZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZUJlZm9yZVNlcGFyYXRvck9yaWdpbmFsID0gdGhpcy5nZXRWYWx1ZUJlZm9yZVNlcGFyYXRvcihvcmlnaW5hbFZhbHVlLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25TdGFydERpZmZlcmVudFNlbGVjdGlvbkVuZCh0YXJnZXQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB2YWx1ZUJlZm9yZVNlcGFyYXRvck9yaWdpbmFsLmxlbmd0aCA+PSB0aGlzLnRob3VzYW5kTWF4bGVuZ3RoICYmXG4gICAgICAhdGhpcy5pc0tleURlY2ltYWxTZXBhcmF0b3IoZXZlbnQpICYmXG4gICAgICB0aGlzLmlzUG9zaXRpb25BZnRlckRlY2ltYWxTZXBhcmF0b3IodGFyZ2V0LnNlbGVjdGlvblN0YXJ0IC0gdGhpcy5kZWNpbWFsc0xlbmd0aCwgdGFyZ2V0LnZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUluc2VydENvbW1hKGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc0NvbW1hID0gdGhpcy5jb250YWluc0NvbW1hKGUudGFyZ2V0LnZhbHVlKTtcblxuICAgIHJldHVybiBoYXNDb21tYSAmJiBlLmtleSA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJbnNlcnRNaW51c1NpZ24oZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IGluZGV4TWludXNTaWduID0gdmFsdWUubGFzdEluZGV4T2YodGhpcy5taW51c1NpZ24pICE9PSAtMTtcbiAgICBjb25zdCBwb3NpdGlvbk1pbnVzU2lnbiA9IHZhbHVlLmxhc3RJbmRleE9mKCctJyk7XG4gICAgY29uc3Qgb2NjdXJhbmNlc01pbnVzU2lnbiA9IHZhbHVlLm1hdGNoKG5ldyBSZWdFeHAoJy0nLCAnZycpKTtcblxuICAgIGlmICh0aGlzLmlzS2V5Ym9hcmRBbmRyb2lkICYmIGluZGV4TWludXNTaWduICYmIG9jY3VyYW5jZXNNaW51c1NpZ24ubGVuZ3RoID4gMSkge1xuICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdGhpcy5yZXBsYWNlQXQodmFsdWUsIHBvc2l0aW9uTWludXNTaWduLCAnJyk7XG4gICAgfVxuICAgIHJldHVybiBpbmRleE1pbnVzU2lnbiAmJiBldmVudC5rZXkgPT09IHRoaXMubWludXNTaWduO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlWYWx1ZUFmdGVyQ29tbWEoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IHZhbHVlQWZ0ZXJTZXBhcmF0b3IgPSB0aGlzLmdldFZhbHVlQWZ0ZXJTZXBhcmF0b3IodmFsdWUsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc1Bvc2l0aW9uQWZ0ZXJEZWNpbWFsU2VwYXJhdG9yKHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSkgJiYgdmFsdWVBZnRlclNlcGFyYXRvci5sZW5ndGggPj0gdGhpcy5kZWNpbWFsc0xlbmd0aFxuICAgICk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXJcbiAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcC1pZF09XCJpZFwiXG4gIFtwLWxhYmVsXT1cImxhYmVsXCJcbiAgW3Atb3B0aW9uYWxdPVwib3B0aW9uYWxcIlxuICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtwLXNob3ctcmVxdWlyZWRdPVwic2hvd1JlcXVpcmVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImljb25cIiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLWxlZnRcIj5cbiAgICAgIDxwby1pY29uIGNsYXNzPVwicG8tZmllbGQtaWNvbiBwby1pY29uLWlucHV0XCIgW2NsYXNzLnBvLWZpZWxkLWljb24tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcC1pY29uXT1cImljb25cIj48L3BvLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1sZWZ0XT1cImljb25cIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tcmlnaHRdPVwiY2xlYW5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtpZF09XCJpZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1yaWdodFwiPlxuICAgICAgPHBvLWNsZWFuXG4gICAgICAgIGNsYXNzPVwicG8taWNvbi1pbnB1dFwiXG4gICAgICAgICpuZ0lmPVwiY2xlYW4gJiYgIWRpc2FibGVkICYmICFyZWFkb25seVwiXG4gICAgICAgIFtwLWVsZW1lbnQtcmVmXT1cImlucHV0RWxcIlxuICAgICAgICAocC1jaGFuZ2UtZXZlbnQpPVwiY2xlYXIoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L3BvLWNsZWFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1oZWxwXT1cImhlbHBcIiBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtwLWVycm9yLXBhdHRlcm5dPVwiZ2V0RXJyb3JQYXR0ZXJuTWVzc2FnZSgpXCI+XG4gIDwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
740
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZGVjaW1hbC9wby1kZWNpbWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kZWNpbWFsL3BvLWRlY2ltYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7OztJQ1Z2RSw4QkFBdUQ7SUFDckQsNkJBQWlIO0lBQ25ILGlCQUFNOzs7SUFEeUMsY0FBeUM7SUFBekMseURBQXlDO0lBQUMsb0NBQWU7Ozs7SUEwQnRHLG9DQUtDO0lBREMsNk1BQWtCLG9CQUFhLEtBQUM7SUFFbEMsaUJBQVc7OztJQUhULDhDQUF5Qjs7QURsQmpDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLE1BQU0saUNBQWlDLEdBQUcsRUFBRSxDQUFDO0FBQzdDLE1B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bUJBQUMsbUJBQW1CO1lBZ0NTLGlCQUFpQjtrQkFBbkQsS0FBSzttQkFBQyxzQkFBc0I7WUFpQ04sTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVO1lBWUcsR0FBRztrQkFBdEIsS0FBSzttQkFBQyxPQUFPO1lBdUJNLEdBQUc7a0JBQXRCLEtBQUs7bUJBQUMsT0FBTzs7a0ZBaEpILGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBtYXhGYWlsZWQsIG1heGxlbmdwb2FpbGVkLCBtaW5GYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRUb0ludCwgdXVpZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9JbnB1dEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9wby1pbnB1dC9wby1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XG5cbmNvbnN0IHBvRGVjaW1hbERlZmF1bHREZWNpbWFsc0xlbmd0aCA9IDI7XG5jb25zdCBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGggPSAxMztcbmNvbnN0IHBvRGVjaW1hbE1heERlY2ltYWxzTGVuZ3RoID0gMTU7XG5jb25zdCBwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0ID0gMTY7XG5cbi8qKlxuICpcbiAqIEBkb2NzRXh0ZW5kcyBQb0lucHV0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIC0gTyBgcG8tZGVjaW1hbGAgw6kgdW0gKmlucHV0KiBlc3BlY8OtZmljbyBwYXJhIHJlY2ViZXIgYXBlbmFzIG7Dum1lcm9zIGRlY2ltYWlzLCBwb3IgaXNzbyByZWNlYmUgYXMgc2VndWludGVzIGNhcmFjdGVyw61zdGljYXM6XG4gKiAgKyBBY2VpdGEgYXBlbmFzIG7Dum1lcm9zO1xuICogICsgVXRpbGl6YSAnLCcgY29tbyBzZXBhcmFkb3IgZGUgZGVjaW1hbDtcbiAqICArIFV0aWxpemEgJy4nIHBhcmEgc2VwYXJhw6fDo28gZGUgbWlsaGFyO1xuICogICsgw4kgcG9zc8OtdmVsIGNvbmZpZ3VyYXIgYSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzIGUgYSBxdWFudGlkYWRlIGRlIGRpZ2l0b3MgZG8gY2FtcG8uXG4gKlxuICogPiAqKkltcG9ydGFudGU6KipcbiAqIEF0dWFsbWVudGUgbyBKYXZhU2NyaXB0IGxpbWl0YS1zZSBhIHVtIGNvbmp1bnRvIGRlIGRhZG9zIGRlIGAzMiBiaXRzYCwgZSBwYXJhIHF1ZSBvcyB2YWxvcmVzIGNvbXBvcnRlbS1zZSBkZXZpZGFtZW50ZSxcbiAqIG8gYHBvLWRlY2ltYWxgIGNvbnTDqW0gdW0gdHJhdGFtZW50byBxdWUgbGltaXRhIGVtIDE2IG8gbsO6bWVybyB0b3RhbCBkZSBjYXNhcyBhbnRlcyBlIGFww7NzIGEgdsOtcmd1bGEuXG4gKiBWZWphIGFiYWl4byBhcyBkZW1haXMgcmVncmFzIG5hcyBkb2N1bWVudGHDp8O1ZXMgZGUgYHAtZGVjaW1hbHMtbGVuZ3RoYCBlIGBwLXRob3VzYW5kLW1heGxlbmd0aGAuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGVjaW1hbC1iYXNpY1wiIHRpdGxlPVwiUE8gRGVjaW1hbCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1iYXNpYy9zYW1wbGUtcG8tZGVjaW1hbC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWJhc2ljL3NhbXBsZS1wby1kZWNpbWFsLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRlY2ltYWwtbGFic1wiIHRpdGxlPVwiUE8gRGVjaW1hbCBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWxhYnMvc2FtcGxlLXBvLWRlY2ltYWwtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWxhYnMvc2FtcGxlLXBvLWRlY2ltYWwtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kZWNpbWFsLWhvdXJseS13YWdlXCIgdGl0bGU9XCJQTyBEZWNpbWFsIC0gSG91cmx5IFdhZ2VcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2Uvc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1ob3VybHktd2FnZS9zYW1wbGUtcG8tZGVjaW1hbC1ob3VybHktd2FnZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm1cIiB0aXRsZT1cIlBPIERlY2ltYWwgLSBIb3VybHkgV2FnZSBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1kZWNpbWFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWRlY2ltYWwuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0RlY2ltYWxDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0RlY2ltYWxDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9EZWNpbWFsQ29tcG9uZW50IGV4dGVuZHMgUG9JbnB1dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2lucCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGlucHV0RWw6IEVsZW1lbnRSZWY7XG5cbiAgaWQgPSBgcG8tZGVjaW1hbFske3V1aWQoKX1dYDtcblxuICBwcml2YXRlIF9kZWNpbWFsc0xlbmd0aD86IG51bWJlciA9IHBvRGVjaW1hbERlZmF1bHREZWNpbWFsc0xlbmd0aDtcbiAgcHJpdmF0ZSBfdGhvdXNhbmRNYXhsZW5ndGg/OiBudW1iZXIgPSBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGg7XG4gIHByaXZhdGUgX2xvY2FsZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfbWluPzogbnVtYmVyO1xuICBwcml2YXRlIF9tYXg/OiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBkZWNpbWFsU2VwYXJhdG9yOiBzdHJpbmc7XG4gIHByaXZhdGUgZmlyZUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGlzS2V5Ym9hcmRBbmRyb2lkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgbWludXNTaWduOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgb2xkRG90c0xlbmd0aCA9IG51bGw7XG4gIHByaXZhdGUgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZztcbiAgcHJpdmF0ZSB2YWx1ZUJlZm9yZUNoYW5nZTogYW55O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvblZhbGlkYXRvcjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgcmVnZXggPSB7XG4gICAgdGhvdXNhbmQ6IG5ldyBSZWdFeHAoJ1xcXFwnICsgJywnLCAnZycpLFxuICAgIGRlY2ltYWw6IG5ldyBSZWdFeHAoJ1xcXFwnICsgJy4nLCAnZycpXG4gIH07XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub0F1dG9jb21wbGV0ZSA/ICdvZmYnIDogJ29uJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFF1YW50aWRhZGUgbcOheGltYSBkZSBjYXNhcyBkZWNpbWFpcy5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGU6KipcbiAgICogLSBPIHZhbG9yIG3DoXhpbW8gcGVybWl0aWRvIMOpIDE1O1xuICAgKiAtIEEgc29tYSB0b3RhbCBkZSBgcC1kZWNpbWFscy1sZW5ndGhgIGNvbSBgcC10aG91c2FuZC1tYXhsZW5ndGhgIGxpbWl0YS1zZSDDoCAxNjtcbiAgICogLSBFc3RhIHByb3ByaWVkYWRlIHNvYnJlcMO1ZSBhcGVuYXMgbyB2YWxvciAqKnBhZHLDo28qKiBkZSBgcC10aG91c2FuZC1tYXhsZW5ndGhgO1xuICAgKiAtIENhc28gYHAtdGhvdXNhbmQtbWF4bGVuZ3RoYCB0ZW5oYSB1bSB2YWxvciBkZWZpbmlkbywgZXN0YSBwcm9wcmllZGFkZSBwb2RlcsOhIHJlY2ViZXIgYXBlbmFzIG8gdmFsb3IgcmVzdGFudGUgZG8gbGltaXRlIHRvdGFsICgxNikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyYFxuICAgKi9cbiAgQElucHV0KCdwLWRlY2ltYWxzLWxlbmd0aCcpIHNldCBkZWNpbWFsc0xlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgbGV0IGRlY2ltYWxzTGVuZ3RoID0gY29udmVydFRvSW50KHZhbHVlKTtcblxuICAgIGRlY2ltYWxzTGVuZ3RoID0gdGhpcy5pc1ZhbHVlQmV0d2VlbkFsbG93ZWQoZGVjaW1hbHNMZW5ndGgsIHBvRGVjaW1hbE1heERlY2ltYWxzTGVuZ3RoKVxuICAgICAgPyBkZWNpbWFsc0xlbmd0aFxuICAgICAgOiBwb0RlY2ltYWxEZWZhdWx0RGVjaW1hbHNMZW5ndGg7XG5cbiAgICBpZiAodGhpcy5pc0dyZWF0ZXJUaGFuVG90YWxMZW5ndGhMaW1pdChkZWNpbWFsc0xlbmd0aCwgdGhpcy50aG91c2FuZE1heGxlbmd0aCkpIHtcbiAgICAgIHRoaXMudGhvdXNhbmRNYXhsZW5ndGggPSBwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0IC0gZGVjaW1hbHNMZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVjaW1hbHNMZW5ndGggPSBkZWNpbWFsc0xlbmd0aDtcbiAgfVxuXG4gIGdldCBkZWNpbWFsc0xlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVjaW1hbHNMZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBRdWFudGlkYWRlIG3DoXhpbWEgZGUgZMOtZ2l0b3MgYW50ZXMgZG8gc2VwYXJhZG9yIGRlY2ltYWwuXG4gICAqXG4gICAqID4gKipJbXBvcnRhbnRlOioqXG4gICAqIC0gTyB2YWxvciBtw6F4aW1vIHBlcm1pdGlkbyDDqSAxMztcbiAgICogLSBBIHNvbWEgdG90YWwgZGUgYHAtZGVjaW1hbHMtbGVuZ3RoYCBjb20gYHAtdGhvdXNhbmQtbWF4bGVuZ3RoYCBsaW1pdGEtc2Ugw6AgMTY7XG4gICAqIC0gRXN0YSBwcm9wcmllZGFkZSBzb2JyZXDDtWUgbyB2YWxvciBkZWZpbmlkbyBlbSBgcC1kZWNpbWFscy1sZW5ndGhgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTNgXG4gICAqL1xuICBASW5wdXQoJ3AtdGhvdXNhbmQtbWF4bGVuZ3RoJykgc2V0IHRob3VzYW5kTWF4bGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICBsZXQgdGhvdXNhbmRNYXhsZW5ndGggPSBjb252ZXJ0VG9JbnQodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuZGVjaW1hbHNMZW5ndGggPiBwb0RlY2ltYWxEZWZhdWx0RGVjaW1hbHNMZW5ndGggJiYgIXRob3VzYW5kTWF4bGVuZ3RoKSB7XG4gICAgICB0aG91c2FuZE1heGxlbmd0aCA9IHBvRGVjaW1hbFRvdGFsTGVuZ3RoTGltaXQgLSB0aGlzLmRlY2ltYWxzTGVuZ3RoO1xuICAgIH1cblxuICAgIHRob3VzYW5kTWF4bGVuZ3RoID0gdGhpcy5pc1ZhbHVlQmV0d2VlbkFsbG93ZWQodGhvdXNhbmRNYXhsZW5ndGgsIHBvRGVjaW1hbERlZmF1bHRUaG91c2FuZE1heGxlbmd0aClcbiAgICAgID8gdGhvdXNhbmRNYXhsZW5ndGhcbiAgICAgIDogcG9EZWNpbWFsRGVmYXVsdFRob3VzYW5kTWF4bGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMuaXNHcmVhdGVyVGhhblRvdGFsTGVuZ3RoTGltaXQodGhpcy5kZWNpbWFsc0xlbmd0aCwgdGhvdXNhbmRNYXhsZW5ndGgpKSB7XG4gICAgICB0aGlzLmRlY2ltYWxzTGVuZ3RoID0gcG9EZWNpbWFsVG90YWxMZW5ndGhMaW1pdCAtIHRob3VzYW5kTWF4bGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuX3Rob3VzYW5kTWF4bGVuZ3RoID0gdGhvdXNhbmRNYXhsZW5ndGg7XG4gIH1cblxuICBnZXQgdGhvdXNhbmRNYXhsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rob3VzYW5kTWF4bGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5mb3JtYSBvIGxvY2FsZShwYcOtcykgcGFyYSBhIGZvcm1hdGHDp8OjbyBkbyB2YWxvci5cbiAgICogUG9yIHBhZHLDo28gbyB2YWxvciBzZXLDoSBjb25maWd1cmFkbyBzZWd1bmRvIGEgbyBtw7NkdWxvIFtgSTE4bmBdKGRvY3VtZW50YXRpb24vcG8taTE4bilcbiAgICpcbiAgICogPiBQYXJhIHZlciBxdWFpcyBsaW5ndWFnZW5zIHN1cG9ydGFkYXMgYWNlc3NlIFtgSTE4bmBdKGRvY3VtZW50YXRpb24vcG8taTE4bilcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1sb2NhbGUnKSBzZXQgbG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlO1xuICAgIHRoaXMuc2V0TnVtYmVyc1NlcGFyYXRvcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIG3DrW5pbW8uXG4gICAqL1xuICBASW5wdXQoJ3AtbWluJykgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX21pbiA9IHZhbHVlO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fbWluID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIG3DoXhpbW8uXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4Jykgc2V0IG1heCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX21heCA9IHZhbHVlO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fbWF4ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKGNkKTtcbiAgICB0aGlzLmlzS2V5Ym9hcmRBbmRyb2lkID0gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BbmRyb2lkL2kpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXROdW1iZXJzU2VwYXJhdG9ycygpO1xuICB9XG5cbiAgc2V0TnVtYmVyc1NlcGFyYXRvcnMoKSB7XG4gICAgY29uc3QgeyBkZWNpbWFsU2VwYXJhdG9yLCB0aG91c2FuZFNlcGFyYXRvciB9ID0gdGhpcy5wb0xhbmd1YWdlU2VydmljZS5nZXROdW1iZXJTZXBhcmF0b3JzKHRoaXMuX2xvY2FsZSk7XG4gICAgdGhpcy5kZWNpbWFsU2VwYXJhdG9yID0gZGVjaW1hbFNlcGFyYXRvcjtcbiAgICB0aGlzLnRob3VzYW5kU2VwYXJhdG9yID0gdGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgdGhpcy5yZWdleCA9IHtcbiAgICAgIHRob3VzYW5kOiBuZXcgUmVnRXhwKCdcXFxcJyArIHRob3VzYW5kU2VwYXJhdG9yLCAnZycpLFxuICAgICAgZGVjaW1hbDogbmV3IFJlZ0V4cCgnXFxcXCcgKyBkZWNpbWFsU2VwYXJhdG9yLCAnZycpXG4gICAgfTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnZlcmlmeUF1dG9Gb2N1cygpO1xuICAgIHRoaXMuc2V0UGFkZGluZ0lucHV0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblZhbGlkYXRvcj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNsZWFyKHZhbHVlKSB7XG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMuY29udHJvbENoYW5nZUVtaXR0ZXIoKTtcblxuICAgIGlmICh0aGlzLmVycm9yQXN5bmNQcm9wZXJ0aWVzPy50cmlnZ2VyTW9kZSA9PT0gJ2NoYW5nZU1vZGVsJykge1xuICAgICAgdGhpcy52ZXJpZnlFcnJvckFzeW5jKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBleHRyYVZhbGlkYXRpb24oYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCB2YWx1ZSA9IGFic3RyYWN0Q29udHJvbC52YWx1ZTtcbiAgICBjb25zdCB0aG91c2FuZFZhbHVlID0gTWF0aC50cnVuYyh2YWx1ZSk7XG5cbiAgICAvLyBWZXJpZmljYSBzZSBqw6EgcG9zc3VpIGFsZ3VtIGVycm9yIHBhdHRlcm4gcGFkcsOjby5cbiAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnVmFsb3IgSW52w6FsaWRvJyA/IHRoaXMuZXJyb3JQYXR0ZXJuIDogJyc7XG5cbiAgICBpZiAobWluRmFpbGVkKHRoaXMubWluLCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1pbjoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtYXhGYWlsZWQodGhpcy5tYXgsIHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF4OiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKG1heGxlbmdwb2FpbGVkKHRoaXMudGhvdXNhbmRNYXhsZW5ndGgsIHRob3VzYW5kVmFsdWUpICYmXG4gICAgICAgIHRoaXMudGhvdXNhbmRNYXhsZW5ndGggPCBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGgpIHx8XG4gICAgICBtYXhsZW5ncG9haWxlZChwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0LCB2YWx1ZSlcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNjcmVlblZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0RWwgPyB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA6ICcnO1xuICB9XG5cbiAgaGFzSW52YWxpZENsYXNzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykgJiZcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5JykgJiZcbiAgICAgICh0aGlzLmdldFNjcmVlblZhbHVlKCkgIT09ICcnIHx8ICh0aGlzLnNob3dFcnJvck1lc3NhZ2VSZXF1aXJlZCAmJiAodGhpcy5yZXF1aXJlZCB8fCB0aGlzLmhhc1ZhbGlkYXRvclJlcXVpcmVkKSkpXG4gICAgKTtcbiAgfVxuXG4gIGhhc0xldHRlcnModmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hdGNoKC9bYS16QS1aOjsrPV/CtGBeflwiJz8hQCMkJcKoJiooKT48e33Dp8OHXFxbXFxdL1xcXFx8XSsvKTtcbiAgfVxuXG4gIGhhc05vdFNwYWNlKHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiB2YWx1ZS5tYXRjaCgvXlxcUyokLyk7XG4gIH1cblxuICBpc1ZhbGlkTnVtYmVyKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyAtIGV2ZW50LmtleSBuw6NvIGV4aXN0aWEgZW0gYWxndW5zIGJyb3dzZXJzLCBjb21vIFNhbXN1bmcgYnJvd3NlciBlIEZpcmVmb3guXG4gICAgY29uc3Qga2V5VmFsdWUgPSA8YW55PlN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQud2hpY2gpO1xuICAgIGNvbnN0IHZhbGlkS2V5ID0gZXZlbnQud2hpY2ggIT09IDggJiYgZXZlbnQud2hpY2ggIT09IDA7XG5cbiAgICByZXR1cm4gIXRoaXMuaGFzTGV0dGVycyhrZXlWYWx1ZSkgJiYgdGhpcy5oYXNOb3RTcGFjZShrZXlWYWx1ZSkgJiYgdmFsaWRLZXk7XG4gIH1cblxuICAvLyBmdW7Dp8OjbyByZXNwb25zw6F2ZWwgcG9yIGFkaWNpb25hciBvcyB6ZXJvZXMgY29tIGFzIGNhc2EgZGVjaW1haXMgYW8gc2FpciBkbyBjYW1wby5cbiAgb25CbHVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmhhc0xldHRlcnModmFsdWUpIHx8IHRoaXMuY29udGFpbnNNb3JlVGhhbk9uZURlY2ltYWxTZXBhcmF0b3IodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZVdpdGhvdXRUaG91c2FuZFNlcGFyYXRvciA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodmFsdWUpO1xuICAgICAgY29uc3QgZm9ybWF0ZWRWaWV3VmFsdWUgPSB0aGlzLmZvcm1hdFRvVmlld1ZhbHVlKHZhbHVlV2l0aG91dFRob3VzYW5kU2VwYXJhdG9yKTtcbiAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKGZvcm1hdGVkVmlld1ZhbHVlKTtcbiAgICAgIGlmICghZm9ybWF0ZWRWaWV3VmFsdWUpIHtcbiAgICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmx1ci5lbWl0KCk7XG4gICAgdGhpcy5jb250cm9sQ2hhbmdlRW1pdHRlcigpO1xuICB9XG5cbiAgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgIC8vIEF0dWFsaXphIHZhbG9yIGRhIHZhcmnDoXZlbCBxdWUgc2Vyw6EgdXNhZGEgcGFyYSB2ZXJpZmljYXIgc2UgbyBjYW1wbyB0ZXZlIGFsdGVyYcOnw6NvXG4gICAgdGhpcy52YWx1ZUJlZm9yZUNoYW5nZSA9IHRoaXMuZ2V0U2NyZWVuVmFsdWUoKTtcblxuICAgIC8vIERpc3BhcmEgZXZlbnRvIHF1YW5kbyBvIHVzdcOhcmlvIGVudHJhciBubyBjYW1wb1xuICAgIC8vIEVzdGUgZXZlbnRvIHRhbWLDqW0gw6kgZGlzcGFyYWRvIHF1YW5kbyBvIGNhbXBvIGluaWNpYSBjb20gZm9jby5cbiAgICB0aGlzLmVudGVyLmVtaXQoKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IHNlbGVjdGlvbkVuZCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQ7XG5cbiAgICBsZXQgbW9kZWxWYWx1ZTtcblxuICAgIC8vIC0gQnJvd3NlcnMgbmF0aXZvcyBkbyBBbmRyb2lkIGV4OiBTYW1zdW5nIEJyb3dzZXIuXG4gICAgaWYgKHRoaXMuaXNLZXlib2FyZEFuZHJvaWQpIHtcbiAgICAgIHRoaXMub25JbnB1dEtleWJvYXJkQW5kcm9pZChldmVudCk7XG4gICAgfVxuXG4gICAgbW9kZWxWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBtb2RlbFZhbHVlID0gdGhpcy5hZGRaZXJvQmVmb3JlKG1vZGVsVmFsdWUpO1xuICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TWFzayhtb2RlbFZhbHVlKTtcblxuICAgIC8vIHZhbGlkYcOnw6NvIHBhcmEgbsOjbyBxdWVicmFyIElFIGNvbSBwbGFjZWhvbGRlciBkZWZpbmlkbyBlIElucHV0IHZhemlvXG4gICAgaWYgKHZpZXdWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodmlld1ZhbHVlKTtcbiAgICAgIHRoaXMuc2V0Q3Vyc29ySW5wdXQoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgIH1cblxuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuZm9ybWF0VG9Nb2RlbFZhbHVlKG1vZGVsVmFsdWUpKTtcblxuICAgIGlmICh0aGlzLmVycm9yQXN5bmNQcm9wZXJ0aWVzPy50cmlnZ2VyTW9kZSA9PT0gJ2NoYW5nZU1vZGVsJykge1xuICAgICAgdGhpcy52ZXJpZnlFcnJvckFzeW5jKHRoaXMuZm9ybWF0VG9Nb2RlbFZhbHVlKG1vZGVsVmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBvbklucHV0S2V5Ym9hcmRBbmRyb2lkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IGhhc0xldHRlcnMgPSB0aGlzLmhhc0xldHRlcnMoaW5wdXRWYWx1ZSk7XG5cbiAgICBpZiAoaGFzTGV0dGVycykge1xuICAgICAgdGhpcy5zZXRWaWV3VmFsdWUoaW5wdXRWYWx1ZS5yZXBsYWNlKGhhc0xldHRlcnNbMF0sICcnKSk7XG5cbiAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IHNlbGVjdGlvblN0YXJ0IC0gMTtcbiAgICAgIGNvbnN0IGtleSA9IGlucHV0VmFsdWUuY2hhckF0KHBvc2l0aW9uKTtcblxuICAgICAgdGhpcy5zZXRQb3NpdGlvblZhbHVlKGV2ZW50KTtcblxuICAgICAgaWYgKHRoaXMuaXNWYWxpZEtleShldmVudCwga2V5KSkge1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5pc1ZhbGlkS2V5KGV2ZW50KTtcbiAgfVxuXG4gIHNldFBhZGRpbmdJbnB1dCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdG9ySWNvbnMgPSAnLnBvLWZpZWxkLWljb24tY29udGFpbmVyOm5vdCgucG8tZmllbGQtaWNvbi1jb250YWluZXItbGVmdCkgPiAucG8taWNvbic7XG4gICAgICBsZXQgaWNvbnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvckljb25zKS5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5jbGVhbikge1xuICAgICAgICBpY29ucysrO1xuICAgICAgfVxuICAgICAgaWYgKGljb25zKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke2ljb25zICogMzZ9cHhgO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZU1vZGVsKHZhbHVlKSB7XG4gICAgbGV0IGZvcm1hdGVkVmlld1ZhbHVlO1xuICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICBmb3JtYXRlZFZpZXdWYWx1ZSA9IHRoaXMuZm9ybWF0VG9WaWV3VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZShmb3JtYXRlZFZpZXdWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSgnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdGVkVmlld1ZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgIHRoaXMudmVyaWZ5RXJyb3JBc3luYyh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXJyb3JQYXR0ZXJuTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvclBhdHRlcm4gIT09ICcnICYmIHRoaXMuaGFzSW52YWxpZENsYXNzKCkgPyB0aGlzLmVycm9yUGF0dGVybiA6ICcnO1xuICB9XG5cbiAgLy8gcmVzcG9uc8OhdmVsIHBvciBhZGljaW9uYXIgMCBhbnRlcyBkYSB2aXJndWxhIChkZWNpbWFsU2VwYXJhdG9yKS5cbiAgcHJpdmF0ZSBhZGRaZXJvQmVmb3JlKHZhbHVlKSB7XG4gICAgY29uc3QgaXNEZWNpbWFsU2VwYXJhdG9yID0gdmFsdWUgPT09IHRoaXMuZGVjaW1hbFNlcGFyYXRvcjtcblxuICAgIHJldHVybiBpc0RlY2ltYWxTZXBhcmF0b3IgPyBgMCR7dmFsdWV9YCA6IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluc0NvbW1hKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG4gIH1cblxuICBwcml2YXRlIGNvbnRhaW5zTW9yZVRoYW5PbmVEZWNpbWFsU2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIGNvbnN0IGZvdW5kQ29tbWEgPSB2YWx1ZS5tYXRjaCh0aGlzLnJlZ2V4LmRlY2ltYWwpO1xuXG4gICAgcmV0dXJuICEhKGZvdW5kQ29tbWEgJiYgZm91bmRDb21tYS5sZW5ndGggPiAxKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udHJvbENoYW5nZUVtaXR0ZXIoKSB7XG4gICAgY29uc3QgZWxlbWVudFZhbHVlID0gdGhpcy5nZXRTY3JlZW5WYWx1ZSgpO1xuXG4gICAgLy8gRW1pdGUgbyBldmVudG8gY2hhbmdlIG1hbnVhbG1lbnRlIHF1YW5kbyBvIGNhbXBvIMOpIGFsdGVyYWRvXG4gICAgLy8gRXN0ZSBldmVudG8gw6kgY29udHJvbGFkbyBtYW51YWxtZW50ZSBkZXZpZG8gYW8gcHJldmVudERlZmF1bHQgZXhpc3RlbnRlIG5hIG3DoXNjYXJhXG4gICAgLy8gZSBkZXZpZG8gYW8gY29udHJvbGUgZG8gcC1jbGVhbiwgcXVlIHRhbWLDqW0gcHJlY2lzYSBlbWl0aXIgY2hhbmdlXG4gICAgaWYgKGVsZW1lbnRWYWx1ZSAhPT0gdGhpcy52YWx1ZUJlZm9yZUNoYW5nZSkge1xuICAgICAgdGhpcy5maXJlQ2hhbmdlID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KGVsZW1lbnRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGVycm9yQXN5bmMgPSB0aGlzLmVycm9yQXN5bmNQcm9wZXJ0aWVzO1xuICAgICAgICBpZiAoZXJyb3JBc3luYz8udHJpZ2dlck1vZGUgPT09ICdjaGFuZ2UnIHx8ICFlcnJvckFzeW5jPy50cmlnZ2VyTW9kZSkge1xuICAgICAgICAgIHRoaXMudmVyaWZ5RXJyb3JBc3luYyhlbGVtZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TWFzayh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gbmVjZXNzw6FyaW8gcGFyYSBuw6NvIGFkaWNpb25hciAuIG5hcyBjYXNhIGRlY2ltYWlzLlxuICAgIC8vIHBvciBleGVtcGxvOiAxMi4zNDUsMTIzLjQ1IChlcnJhZG8pXG4gICAgLy8gMTIuMzQ1LDEyMzQ1IChjb3JyZXRvKVxuXG4gICAgaWYgKHZhbHVlLm1hdGNoKHRoaXMucmVnZXguZGVjaW1hbCkpIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgKFxcXFxkKSg/PShcXFxcZHszfSkrKD8hXFxcXGQpJHt0aGlzLmRlY2ltYWxTZXBhcmF0b3J9KWAsICdnJyk7XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKHJlZ2V4LCBgJDEke3RoaXMudGhvdXNhbmRTZXBhcmF0b3J9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBgJDEke3RoaXMudGhvdXNhbmRTZXBhcmF0b3J9YCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFRvTW9kZWxWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLnJlcGxhY2VDb21tYVRvRG90KHZhbHVlKTtcbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlID8gcGFyc2VGbG9hdChOdW1iZXIoZm9ybWF0dGVkVmFsdWUpLnRvRml4ZWQodGhpcy5kZWNpbWFsc0xlbmd0aCkpIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHBhcnNlZFZhbHVlID09PSAwIHx8IHBhcnNlZFZhbHVlID8gcGFyc2VkVmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFRvVmlld1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyAtIE5lY2Vzc8OhcmlvIHBhcmEgdHJhdGFyIHZhbG9yZXMgcXVlIGNvbnRlbmhhbSBkZWNpbWFsU2VwYXJhdG9yXG4gICAgdmFsdWUgPSB0aGlzLnJlcGxhY2VDb21tYVRvRG90KHZhbHVlKTtcblxuICAgIGNvbnN0IG51bWJlclZhbHVlID0gTnVtYmVyKHZhbHVlKS50b0ZpeGVkKHRoaXMuZGVjaW1hbHNMZW5ndGgpO1xuXG4gICAgY29uc3QgdmFsdWVCZWZvcmVEb3QgPSB0aGlzLmdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKG51bWJlclZhbHVlLCAnLicpO1xuICAgIGNvbnN0IHZhbHVlQWZ0ZXJEb3QgPSB0aGlzLmdldFZhbHVlQWZ0ZXJTZXBhcmF0b3IobnVtYmVyVmFsdWUsICcuJyk7XG5cbiAgICBjb25zdCBmb3JtYXRlZE51bWJlciA9IHRoaXMuZm9ybWF0TWFzayh2YWx1ZUJlZm9yZURvdCk7XG5cbiAgICBpZiAoZm9ybWF0ZWROdW1iZXIgPT09ICdOYU4nKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVjaW1hbHNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3JtYXRlZE51bWJlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2Zvcm1hdGVkTnVtYmVyfSR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfSR7dmFsdWVBZnRlckRvdH1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSh0aGlzLnJlZ2V4LnRob3VzYW5kLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlQWZ0ZXJTZXBhcmF0b3IodmFsdWUgPSAnJywgc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KHNlcGFyYXRvcilbMV0gfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKHZhbHVlID0gJycsIHNlcGFyYXRvcikge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdChzZXBhcmF0b3IpWzBdIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNMZXNzRG90KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBkb3RzID0gdmFsdWUubWF0Y2godGhpcy5yZWdleC50aG91c2FuZCk7XG4gICAgICBjb25zdCBkb3RzTGVuZ3RoID0gZG90cyAmJiBkb3RzLmxlbmd0aDtcblxuICAgICAgaWYgKGRvdHNMZW5ndGggPCB0aGlzLm9sZERvdHNMZW5ndGgpIHtcbiAgICAgICAgdGhpcy5vbGREb3RzTGVuZ3RoID0gZG90c0xlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5vbGREb3RzTGVuZ3RoID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhc01vcmVEb3QodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IGRvdHMgPSB2YWx1ZS5tYXRjaCh0aGlzLnJlZ2V4LnRob3VzYW5kKTtcbiAgICAgIGNvbnN0IGRvdHNMZW5ndGggPSBkb3RzICYmIGRvdHMubGVuZ3RoO1xuXG4gICAgICBpZiAoZG90c0xlbmd0aCA+IHRoaXMub2xkRG90c0xlbmd0aCkge1xuICAgICAgICB0aGlzLm9sZERvdHNMZW5ndGggPSBkb3RzTGVuZ3RoO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLm9sZERvdHNMZW5ndGggPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzTWludXNTaWduSW52YWxpZFBvc2l0aW9uKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXlJc01pbnVzU2lnbiA9IGV2ZW50LmtleSA9PT0gdGhpcy5taW51c1NpZ247XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG5cbiAgICByZXR1cm4ga2V5SXNNaW51c1NpZ24gJiYgc2VsZWN0aW9uU3RhcnQgIT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzSW52YWxpZEtleShldmVudDogYW55LCBjaGFyQ29kZTogYW55KSB7XG4gICAgY29uc3QgaXNJbnZhbGlkTnVtYmVyID0gIXRoaXMuaXNWYWxpZE51bWJlcihldmVudCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy52ZXJpZnlJbnNlcnRDb21tYShldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5VGhvdXNhbmRMZW5ndGgoZXZlbnQpIHx8XG4gICAgICB0aGlzLnZlcmlmeVZhbHVlQWZ0ZXJDb21tYShldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5SW5zZXJ0TWludXNTaWduKGV2ZW50KSB8fFxuICAgICAgdGhpcy5oYXNNaW51c1NpZ25JbnZhbGlkUG9zaXRpb24oZXZlbnQpIHx8XG4gICAgICBpc0ludmFsaWROdW1iZXIgfHxcbiAgICAgIHRoaXMudmFsaWRhdGVDdXJzb3JQb3NpdGlvbkJlZm9yZVNlcGFyYXRvcihldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5RGVjaW1hbExlbmd0aElzWmVyb0FuZEtleVByZXNzZWRJc0NvbW1hKGNoYXJDb2RlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzR3JlYXRlclRoYW5Ub3RhbExlbmd0aExpbWl0KGRlY2ltYWxzTWF4TGVuZ3RoOiBudW1iZXIsIHRob3VzYW5kTWF4bGVuZ3RoOiBudW1iZXIpIHtcbiAgICByZXR1cm4gZGVjaW1hbHNNYXhMZW5ndGggKyB0aG91c2FuZE1heGxlbmd0aCA+IHBvRGVjaW1hbFRvdGFsTGVuZ3RoTGltaXQ7XG4gIH1cblxuICBwcml2YXRlIGlzS2V5RGVjaW1hbFNlcGFyYXRvcihldmVudCkge1xuICAgIHJldHVybiBldmVudC5rZXkgPT09IHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCBldmVudC5jaGFyID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gIH1cblxuICBwcml2YXRlIGlzUG9zaXRpb25BZnRlckRlY2ltYWxTZXBhcmF0b3IocG9zaXRpb25DdXJzb3IsIHZhbHVlKSB7XG4gICAgY29uc3QgaW5kZXhDb21tYSA9IHZhbHVlICYmIHZhbHVlLmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgIGlmIChpbmRleENvbW1hICYmIHRoaXMuZGVjaW1hbHNMZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcG9zaXRpb25DdXJzb3IgPiBpbmRleENvbW1hO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTZWxlY3Rpb25TdGFydERpZmZlcmVudFNlbGVjdGlvbkVuZCh0YXJnZXQ6IGFueSkge1xuICAgIHJldHVybiB0YXJnZXQuc2VsZWN0aW9uU3RhcnQgIT09IHRhcmdldC5zZWxlY3Rpb25FbmQ7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRLZXkoZXZlbnQ6IGFueSwga2V5Pzogc3RyaW5nKSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IHZhbGlkS2V5ID0gZXZlbnQud2hpY2ggPT09IDggfHwgZXZlbnQud2hpY2ggPT09IDA7XG5cbiAgICBpZiAodmFsaWRLZXkgJiYgIXRoaXMuaXNLZXlib2FyZEFuZHJvaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBldmVudC5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNJbnZhbGlkS2V5KGV2ZW50LCBjaGFyQ29kZSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbHVlQmV0d2VlbkFsbG93ZWQodmFsdWU6IG51bWJlciwgbWF4QWxsb3dlZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gbWF4QWxsb3dlZDtcbiAgfVxuXG4gIC8vIFF1YW5kbyBkZWNpbWFsc0xlbmd0aCBmb3IgMCBuw6NvIGRldmUgcGVybWl0aXIgaW5mb3JtYXIgdsOtcmd1bGEgKGRlY2ltYWxTZXBhcmF0b3IpXG4gIHByaXZhdGUgdmVyaWZ5RGVjaW1hbExlbmd0aElzWmVyb0FuZEtleVByZXNzZWRJc0NvbW1hKGNoYXJDb2RlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gY2hhckNvZGUgPT09IDQ0ICYmIHRoaXMuZGVjaW1hbHNMZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUF1dG9Gb2N1cygpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxTZWxlY3Rpb25SYW5nZSh0YXJnZXQ6IGFueSwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkge1xuICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gMSAmJiBzZWxlY3Rpb25FbmQgPT09IDEpIHtcbiAgICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgKyAxLCBzZWxlY3Rpb25FbmQgKyAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCAtIDEsIHNlbGVjdGlvbkVuZCAtIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXQodmFsdWUsIGluZGV4LCByZXBsYWNlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlICsgdmFsdWUuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VDb21tYVRvRG90KHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIGlmICh0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcsJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UodGhpcy5yZWdleC5kZWNpbWFsLCAnLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3Vyc29ySW5wdXQoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgdmlld1ZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuXG4gICAgLy8gQ2FzbyBob3V2ZXIgbWFpcyAuIGRvIHF1ZSBhbnRlcmlvcm1lbnRlIHNvbWEgbyB2YWxvciBjb20gMS5cbiAgICBpZiAodGhpcy5oYXNNb3JlRG90KHZpZXdWYWx1ZSkgfHwgdmlld1ZhbHVlID09PSAnMCcgKyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgKyAxLCBzZWxlY3Rpb25FbmQgKyAxKTtcbiAgICB9XG5cbiAgICAvLyBDYXNvIGhvdXZlciBtZW5vcyAuIGRvIHF1ZSBhbnRlcmlvcm1lbnRlIHN1YnRyYWkgbyB2YWxvciBwb3IgMS5cbiAgICBpZiAodGhpcy5oYXNMZXNzRG90KHZpZXdWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFNlbGVjdGlvblJhbmdlKHRhcmdldCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uVmFsdWUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0IC0gMTtcblxuICAgIGlmIChwb3NpdGlvbiA+IDAgJiYgZXZlbnQua2V5ID09PSB0aGlzLm1pbnVzU2lnbikge1xuICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKSArIHZhbHVlLnN1YnN0cihwb3NpdGlvbiArIDEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUN1cnNvclBvc2l0aW9uQmVmb3JlU2VwYXJhdG9yKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodGFyZ2V0LnZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZUJlZm9yZVNlcGFyYXRvciA9IHRoaXMuZ2V0VmFsdWVCZWZvcmVTZXBhcmF0b3IodGFyZ2V0LnZhbHVlLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgIGNvbnN0IHZhbHVlQmVmb3JlU2VwYXJhdG9yT3JpZ2luYWwgPSB0aGlzLmdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKG9yaWdpbmFsVmFsdWUsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGlvblN0YXJ0RGlmZmVyZW50U2VsZWN0aW9uRW5kKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRhcmdldC5zZWxlY3Rpb25TdGFydCA8PSB2YWx1ZUJlZm9yZVNlcGFyYXRvci5sZW5ndGggJiZcbiAgICAgIHZhbHVlQmVmb3JlU2VwYXJhdG9yT3JpZ2luYWwubGVuZ3RoID09PSB0aGlzLnRob3VzYW5kTWF4bGVuZ3RoICYmXG4gICAgICAhdGhpcy5pc0tleURlY2ltYWxTZXBhcmF0b3IoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5RXJyb3JBc3luYyh2YWx1ZSkge1xuICAgIGlmICh0aGlzLmVycm9yUGF0dGVybiAhPT0gJycgJiYgdGhpcy5lcnJvckFzeW5jUHJvcGVydGllcz8uZXJyb3JBc3luYykge1xuICAgICAgY29uc3QgZXJyb3JBc3luYyA9IHRoaXMuZXJyb3JBc3luY1Byb3BlcnRpZXMuZXJyb3JBc3luYyh2YWx1ZSk7XG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKGVycm9yQXN5bmMpKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uVmFsaWRhdG9yPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblZhbGlkYXRvciA9IGVycm9yQXN5bmNcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbmctaW52YWxpZCcpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbmctZGlydHknKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpICYmXG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5JykgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ludmFsaWRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCduZy1pbnZhbGlkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeVRob3VzYW5kTGVuZ3RoKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodGFyZ2V0LnZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZUJlZm9yZVNlcGFyYXRvck9yaWdpbmFsID0gdGhpcy5nZXRWYWx1ZUJlZm9yZVNlcGFyYXRvcihvcmlnaW5hbFZhbHVlLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25TdGFydERpZmZlcmVudFNlbGVjdGlvbkVuZCh0YXJnZXQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB2YWx1ZUJlZm9yZVNlcGFyYXRvck9yaWdpbmFsLmxlbmd0aCA+PSB0aGlzLnRob3VzYW5kTWF4bGVuZ3RoICYmXG4gICAgICAhdGhpcy5pc0tleURlY2ltYWxTZXBhcmF0b3IoZXZlbnQpICYmXG4gICAgICB0aGlzLmlzUG9zaXRpb25BZnRlckRlY2ltYWxTZXBhcmF0b3IodGFyZ2V0LnNlbGVjdGlvblN0YXJ0IC0gdGhpcy5kZWNpbWFsc0xlbmd0aCwgdGFyZ2V0LnZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUluc2VydENvbW1hKGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc0NvbW1hID0gdGhpcy5jb250YWluc0NvbW1hKGUudGFyZ2V0LnZhbHVlKTtcblxuICAgIHJldHVybiBoYXNDb21tYSAmJiBlLmtleSA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJbnNlcnRNaW51c1NpZ24oZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IGluZGV4TWludXNTaWduID0gdmFsdWUubGFzdEluZGV4T2YodGhpcy5taW51c1NpZ24pICE9PSAtMTtcbiAgICBjb25zdCBwb3NpdGlvbk1pbnVzU2lnbiA9IHZhbHVlLmxhc3RJbmRleE9mKCctJyk7XG4gICAgY29uc3Qgb2NjdXJhbmNlc01pbnVzU2lnbiA9IHZhbHVlLm1hdGNoKG5ldyBSZWdFeHAoJy0nLCAnZycpKTtcblxuICAgIGlmICh0aGlzLmlzS2V5Ym9hcmRBbmRyb2lkICYmIGluZGV4TWludXNTaWduICYmIG9jY3VyYW5jZXNNaW51c1NpZ24ubGVuZ3RoID4gMSkge1xuICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdGhpcy5yZXBsYWNlQXQodmFsdWUsIHBvc2l0aW9uTWludXNTaWduLCAnJyk7XG4gICAgfVxuICAgIHJldHVybiBpbmRleE1pbnVzU2lnbiAmJiBldmVudC5rZXkgPT09IHRoaXMubWludXNTaWduO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlWYWx1ZUFmdGVyQ29tbWEoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IHZhbHVlQWZ0ZXJTZXBhcmF0b3IgPSB0aGlzLmdldFZhbHVlQWZ0ZXJTZXBhcmF0b3IodmFsdWUsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc1Bvc2l0aW9uQWZ0ZXJEZWNpbWFsU2VwYXJhdG9yKHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSkgJiYgdmFsdWVBZnRlclNlcGFyYXRvci5sZW5ndGggPj0gdGhpcy5kZWNpbWFsc0xlbmd0aFxuICAgICk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXJcbiAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcC1pZF09XCJpZFwiXG4gIFtwLWxhYmVsXT1cImxhYmVsXCJcbiAgW3Atb3B0aW9uYWxdPVwib3B0aW9uYWxcIlxuICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtwLXNob3ctcmVxdWlyZWRdPVwic2hvd1JlcXVpcmVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImljb25cIiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLWxlZnRcIj5cbiAgICAgIDxwby1pY29uIGNsYXNzPVwicG8tZmllbGQtaWNvbiBwby1pY29uLWlucHV0XCIgW2NsYXNzLnBvLWZpZWxkLWljb24tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcC1pY29uXT1cImljb25cIj48L3BvLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1sZWZ0XT1cImljb25cIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tcmlnaHRdPVwiY2xlYW5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtpZF09XCJpZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1yaWdodFwiPlxuICAgICAgPHBvLWNsZWFuXG4gICAgICAgIGNsYXNzPVwicG8taWNvbi1pbnB1dFwiXG4gICAgICAgICpuZ0lmPVwiY2xlYW4gJiYgIWRpc2FibGVkICYmICFyZWFkb25seVwiXG4gICAgICAgIFtwLWVsZW1lbnQtcmVmXT1cImlucHV0RWxcIlxuICAgICAgICAocC1jaGFuZ2UtZXZlbnQpPVwiY2xlYXIoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L3BvLWNsZWFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbVxuICAgIFtwLWhlbHBdPVwiaGVscFwiXG4gICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwLWVycm9yLWxpbWl0XT1cImVycm9yTGltaXRcIlxuICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZ2V0RXJyb3JQYXR0ZXJuTWVzc2FnZSgpXCJcbiAgICBbcC1hcHBlbmQtaW4tYm9keV09XCJlcnJvckFwcGVuZEJveFwiXG4gID5cbiAgPC9wby1maWVsZC1jb250YWluZXItYm90dG9tPlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=
@@ -120,7 +120,7 @@ export class PoEmailComponent extends PoInputGeneric {
120
120
  return null;
121
121
  }
122
122
  static ɵfac = function PoEmailComponent_Factory(t) { return new (t || PoEmailComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
123
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoEmailComponent, selectors: [["po-email"]], features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 23, consts: [["inp", ""], [3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], [1, "po-input", 3, "blur", "click", "focus", "input", "autocomplete", "disabled", "id", "placeholder", "readonly", "required", "type"], [1, "po-field-icon-container-right"], [3, "class", "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-help", "p-disabled", "p-error-pattern"], [1, "po-field-icon-container-left"], [3, "p-icon"], [3, "p-change-event", "p-element-ref"]], template: function PoEmailComponent_Template(rf, ctx) { if (rf & 1) {
123
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoEmailComponent, selectors: [["po-email"]], features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 25, consts: [["inp", ""], [3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], [1, "po-input", 3, "blur", "click", "focus", "input", "autocomplete", "disabled", "id", "placeholder", "readonly", "required", "type"], [1, "po-field-icon-container-right"], [3, "class", "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-help", "p-disabled", "p-error-pattern", "p-error-limit", "p-append-in-body"], [1, "po-field-icon-container-left"], [3, "p-icon"], [3, "p-change-event", "p-element-ref"]], template: function PoEmailComponent_Template(rf, ctx) { if (rf & 1) {
124
124
  const _r1 = i0.ɵɵgetCurrentView();
125
125
  i0.ɵɵelementStart(0, "po-field-container", 1)(1, "div", 2);
126
126
  i0.ɵɵtemplate(2, PoEmailComponent_div_2_Template, 2, 6, "div", 3);
@@ -143,12 +143,12 @@ export class PoEmailComponent extends PoInputGeneric {
143
143
  i0.ɵɵadvance(3);
144
144
  i0.ɵɵproperty("ngIf", ctx.clean && !ctx.disabled && !ctx.readonly);
145
145
  i0.ɵɵadvance();
146
- i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled)("p-error-pattern", ctx.getErrorPattern());
146
+ i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled)("p-error-pattern", ctx.getErrorPattern())("p-error-limit", ctx.errorLimit)("p-append-in-body", ctx.errorAppendBox);
147
147
  } }, dependencies: [i1.NgIf, i2.PoCleanComponent, i3.PoFieldContainerBottomComponent, i4.PoFieldContainerComponent, i5.PoIconComponent], encapsulation: 2, changeDetection: 0 });
148
148
  }
149
149
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoEmailComponent, [{
150
150
  type: Component,
151
- args: [{ selector: 'po-email', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon\n class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n [p-icon]=\"icon\"\n ></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [type]=\"type\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"eventOnFocus($event)\"\n (input)=\"eventOnInput($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"{{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom\n [p-help]=\"help\"\n [p-disabled]=\"disabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n ></po-field-container-bottom>\n</po-field-container>\n" }]
151
+ args: [{ selector: 'po-email', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon\n class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n [p-icon]=\"icon\"\n ></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [type]=\"type\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"eventOnFocus($event)\"\n (input)=\"eventOnInput($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"{{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom\n [p-help]=\"help\"\n [p-disabled]=\"disabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-append-in-body]=\"errorAppendBox\"\n ></po-field-container-bottom>\n</po-field-container>\n" }]
152
152
  }], () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], null); })();
153
153
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoEmailComponent, { className: "PoEmailComponent", filePath: "lib/components/po-field/po-email/po-email.component.ts", lineNumber: 63 }); })();
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWVtYWlsL3BvLWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1pbnB1dC9wby1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7OztJQ0hsRSw4QkFBdUQ7SUFDckQsNkJBSVc7SUFDYixpQkFBTTs7O0lBSkYsY0FBaUY7SUFBakYsNkdBQWlGO0lBQ2pGLHlEQUF5QztJQUN6QyxvQ0FBZTs7OztJQXdCakIsb0NBS0M7SUFEQywyTUFBa0Isb0JBQWEsS0FBQztJQUVsQyxpQkFBVzs7O0lBTFQsMkVBQW1FO0lBRW5FLDhDQUF5Qjs7QUQxQmpDLDBCQUEwQjtBQUMxQixNQUFNLFNBQVMsR0FBRztJQUNoQjtRQUNFLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsS0FBSyxFQUFFLElBQUk7S0FDWjtJQUNEO1FBQ0UsT0FBTyxFQUFFLGFBQWE7UUFDdEIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JB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aW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvSW5wdXRHZW5lcmljIH0gZnJvbSAnLi4vcG8taW5wdXQtZ2VuZXJpYy9wby1pbnB1dC1nZW5lcmljJztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbnN0IHByb3ZpZGVycyA9IFtcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvRW1haWxDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH0sXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvRW1haWxDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH1cbl07XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvSW5wdXRCYXNlQ29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tZW1haWxgIMOpIHVtIGlucHV0IGVzcGVjw61maWNvIHBhcmEgcmVjZWJlciBFLW1haWwsIGNvbSBvIHBhdHRlcm4gasOhIGNvbmZpZ3VyYWRvLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWVtYWlsLWJhc2ljXCIgdGl0bGU9XCJQTyBFbWFpbCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtYmFzaWMvc2FtcGxlLXBvLWVtYWlsLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLWJhc2ljL3NhbXBsZS1wby1lbWFpbC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtYmFzaWMvc2FtcGxlLXBvLWVtYWlsLWJhc2ljLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1lbWFpbC1iYXNpYy9zYW1wbGUtcG8tZW1haWwtYmFzaWMuY29tcG9uZW50LnBvLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZW1haWwtbGFic1wiIHRpdGxlPVwiUE8gRW1haWwgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtbGFicy9zYW1wbGUtcG8tZW1haWwtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1lbWFpbC1sYWJzL3NhbXBsZS1wby1lbWFpbC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWVtYWlsLW5ld3NsZXR0ZXJcIiB0aXRsZT1cIlBPIEVtYWlsIC0gTmV3c2xldHRlclwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtbmV3c2xldHRlci9zYW1wbGUtcG8tZW1haWwtbmV3c2xldHRlci5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1lbWFpbC1uZXdzbGV0dGVyL3NhbXBsZS1wby1lbWFpbC1uZXdzbGV0dGVyLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWVtYWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi9wby1pbnB1dC9wby1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnNcbn0pXG5leHBvcnQgY2xhc3MgUG9FbWFpbENvbXBvbmVudCBleHRlbmRzIFBvSW5wdXRHZW5lcmljIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgaWQgPSBgcG8tZW1haWxbJHt1dWlkKCl9XWA7XG4gIGljb24gPSAnSUNPTl9NQUlMJztcblxuICB0eXBlID0gJ2VtYWlsJztcblxuICAvLyBDb25zaWRlcmFtb3MgbyB1c28gZG8gbm9zc28gcGF0dGVybiBjb20gYSBzZWd1aW50ZSBleHByZXNzw6NvLlxuICAvLyBBbnRlcyBkbyBzw61tYm9sbyBAOlxuICAvLyAtIG7Do28gaMOhIGxpbWl0ZSBkZSBjYXJhY3RlcmVzLlxuICAvLyAtIG7Do28gcG9kZSBoYXZlciBlc3Bhw6dvcyBlbSBicmFuY28sIGNhcmFjdGVyZXMgYWNlbnR1YWRvcywgY2FyYWN0ZXJlcyBlc3BlY2lhaXMgb3Ugc8OtbWJvbG9zLlxuICAvLyAtIHBvZGUgY29tZcOnYXIgY29tIGxldHJhcywgbsO6bWVyb3MsIGjDrWZlbiBvdSB1bmRlc2NvcmUgKHVuZGVybGluZSkuXG4gIC8vXG4gIC8vIERlcG9pcyBkbyBzw61tYm9sbyBAOlxuICAvLyAtIG8gZG9tw61uaW8gdGVtIHVtIGxpbWl0ZSBkZSBhdMOpIDY2IGNhcmFjdGVyZXMgYXDDs3MgdW0gc2VwYXJhZG9yLlxuICAvLyAtIHNlcGFyYWRvciBkZXZlIHNlciB1bSAncG9udG8nICguKS5cbiAgLy8gLSBvIHByaW1laXJvIGJsb2NvIHBvZGUgY29udGVyIGxldHJhcywgbsO6bWVyb3MsIGjDrWZlbiBvdSB1bmRlcnNjb3JlICh1bmRlcmxpbmUpLlxuICAvLyAtIGFww7NzIG8gcHJpbWVpcm8gc2VwYXJhZG9yIMOpIHBlcm1pdGlkbyBhcGVuYXMgbGV0cmFzLlxuICAvLyAtIG7Do28gcG9kZSBoYXZlciBlc3Bhw6dvcyBlbSBicmFuY28sIGNhcmFjdGVyZXMgYWNlbnR1YWRvcywgY2FyYWN0ZXJlcyBlc3BlY2lhaXMgb3Ugc8OtbWJvbG9zLlxuICAvL1xuICAvLyBMaW1pdGUgdG90YWwgZGUgMjU0IGNhcmFjdGVyZXMgcGFyYSBvIGUtbWFpbC5cbiAgLy9cbiAgLy8gQXMgcmVjb21lbmRhw6fDtWVzIGZvcmFtIGNvbnN1bHRhZGFzIG5hcyBSRkMgMTAzNCwgUkZDIDUzMjEgZSBSRkMgNTMyMi5cbiAgLy9cbiAgLy8gUkZDIDEwMzQgLSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzEwMzQjc2VjdGlvbi0zXG4gIC8vIFJGQyA1MzIxIC0gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM1MzIxI3NlY3Rpb24tNC41LjMuMVxuICAvLyBSRkMgNTMyMiAtIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNTMyMiNzZWN0aW9uLTMuNFxuICBwYXR0ZXJuID0gJ14oW1xcXFx3LV0rKD86XFxcXC5bXFxcXHctXSspKilAKCg/OltcXFxcdy1dK1xcXFwuKSpcXFxcd1tcXFxcdy1dezAsNjZ9KVxcXFwuKFtBLVphLXpdezIsNjZ9KD86XFxcXC5bQS1aYS16XXsyfSk/KSQnO1xuXG4gIG1hc2sgPSAnJztcblxuICBwcml2YXRlIGxpc3RlbmVyID0gdGhpcy52YWxpZGF0ZUNsYXNzZXNGb3JQYXR0ZXJuLmJpbmQodGhpcyk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKGVsLCBjZCk7XG4gICAgdGhpcy5tYXhsZW5ndGggPSAyNTQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBTZSBuw6NvIHRlbSBuZ01vZGVsIG91IHJlYWN0aXZlIGZvcm0gYWRpY2lvbmEgdmFsaWRhw6fDo28gY29tIGNsYXNzZXMgY3NzXG4gICAgICBpZiAoIXRoaXMub25DaGFuZ2VQcm9wYWdhdGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICghdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmxpc3RlbmVyKTtcbiAgICB9XG4gIH1cblxuICBleHRyYVZhbGlkYXRpb24oYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXJcbiAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcC1pZF09XCJpZFwiXG4gIFtwLWxhYmVsXT1cImxhYmVsXCJcbiAgW3Atb3B0aW9uYWxdPVwib3B0aW9uYWxcIlxuICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtwLXNob3ctcmVxdWlyZWRdPVwic2hvd1JlcXVpcmVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImljb25cIiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLWxlZnRcIj5cbiAgICAgIDxwby1pY29uXG4gICAgICAgIGNsYXNzPVwicG8tZmllbGQtaWNvbiB7eyBkaXNhYmxlZCA/ICdwby1pY29uLWlucHV0LWRpc2FibGVkJyA6ICdwby1pY29uLWlucHV0JyB9fVwiXG4gICAgICAgIFtjbGFzcy5wby1maWVsZC1pY29uLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3AtaWNvbl09XCJpY29uXCJcbiAgICAgID48L3BvLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgIFtjbGFzcy5wby1pbnB1dC1pY29uLWxlZnRdPVwiaWNvblwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1yaWdodF09XCJjbGVhblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJkaXNhYmxlZCA/ICcnIDogcGxhY2Vob2xkZXJcIlxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgIChibHVyKT1cImV2ZW50T25CbHVyKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cImV2ZW50T25DbGljaygkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJldmVudE9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoaW5wdXQpPVwiZXZlbnRPbklucHV0KCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgIDxwby1jbGVhblxuICAgICAgICBjbGFzcz1cInt7IGRpc2FibGVkID8gJ3BvLWljb24taW5wdXQtZGlzYWJsZWQnIDogJ3BvLWljb24taW5wdXQnIH19XCJcbiAgICAgICAgKm5nSWY9XCJjbGVhbiAmJiAhZGlzYWJsZWQgJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgW3AtZWxlbWVudC1yZWZdPVwiaW5wdXRFbFwiXG4gICAgICAgIChwLWNoYW5nZS1ldmVudCk9XCJjbGVhcigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tY2xlYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxwby1maWVsZC1jb250YWluZXItYm90dG9tXG4gICAgW3AtaGVscF09XCJoZWxwXCJcbiAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3AtZXJyb3ItcGF0dGVybl09XCJnZXRFcnJvclBhdHRlcm4oKVwiXG4gID48L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWVtYWlsL3BvLWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1pbnB1dC9wby1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7OztJQ0hsRSw4QkFBdUQ7SUFDckQsNkJBSVc7SUFDYixpQkFBTTs7O0lBSkYsY0FBaUY7SUFBakYsNkdBQWlGO0lBQ2pGLHlEQUF5QztJQUN6QyxvQ0FBZTs7OztJQXdCakIsb0NBS0M7SUFEQywyTUFBa0Isb0JBQWEsS0FBQztJQUVsQyxpQkFBVzs7O0lBTFQsMkVBQW1FO0lBRW5FLDhDQUF5Qjs7QUQxQmpDLDBCQUEwQjtBQUMxQixNQUFNLFNBQVMsR0FBRztJQUNoQjtRQUNFLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsS0FBSyxFQUFFLElBQUk7S0FDWjtJQUNEO1FBQ0UsT0FBTyxFQUFFLGFBQWE7UUFDdEIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsS0FBSyxFQUFFLElBQUk7S0FDWjtDQUNGLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQU9ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBQ2xELEVBQUUsR0FBRyxZQUFZLElBQUksRUFBRSxHQUFHLENBQUM7SUFDM0IsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUVuQixJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRWYsZ0VBQWdFO0lBQ2hFLHNCQUFzQjtJQUN0QixpQ0FBaUM7SUFDakMsK0ZBQStGO0lBQy9GLHNFQUFzRTtJQUN0RSxFQUFFO0lBQ0YsdUJBQXVCO0lBQ3ZCLG9FQUFvRTtJQUNwRSx1Q0FBdUM7SUFDdkMsbUZBQW1GO0lBQ25GLHlEQUF5RDtJQUN6RCwrRkFBK0Y7SUFDL0YsRUFBRTtJQUNGLGdEQUFnRDtJQUNoRCxFQUFFO0lBQ0Ysd0VBQXdFO0lBQ3hFLEVBQUU7SUFDRixxRUFBcUU7SUFDckUsMkVBQTJFO0lBQzNFLHVFQUF1RTtJQUN2RSxPQUFPLEdBQUcsbUdBQW1HLENBQUM7SUFFOUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVGLFFBQVEsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTdELDBCQUEwQjtJQUMxQixZQUFZLEVBQWMsRUFBRSxFQUFxQjtRQUMvQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QseUVBQXlFO1lBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFrQjtRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7MEVBeERVLGdCQUFnQjs2REFBaEIsZ0JBQWdCLDhEQUYzQixTQUFTOztZQ3BEVCxBQVJGLDZDQU9DLGFBQ3lDO1lBQ3RDLGlFQUF1RDtZQVF2RCxtQ0FpQkU7WUFEQSxBQURBLEFBREEsQUFEQSxzSUFBUSx1QkFBbUIsS0FBQywySEFDbkIsd0JBQW9CLEtBQUMsMkhBQ3JCLHdCQUFvQixLQUFDLDJIQUNyQix3QkFBb0IsS0FBQztZQWhCaEMsaUJBaUJFO1lBRUYsOEJBQTJDO1lBQ3pDLDJFQUtDO1lBR0wsQUFERSxpQkFBTSxFQUNGO1lBRU4sK0NBTTZCO1lBQy9CLGlCQUFxQjs7WUFoRG5CLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSx5Q0FBdUIsZ0JBQ1osc0JBQ00sNEJBQ00sNEJBQ0EscUNBQ1M7WUFHeEIsZUFBVTtZQUFWLCtCQUFVO1lBYWQsY0FBaUM7WUFDakMsQUFEQSw4Q0FBaUMsa0NBQ0U7WUFNbkMsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBSEEsK0NBQTZCLDBCQUdSLGNBQ1osb0RBQ2tDLDBCQUN0QiwwQkFDQSxrQkFDUjs7WUFVVixlQUFxQztZQUFyQyxrRUFBcUM7WUFTMUMsY0FBZTtZQUlmLEFBREEsQUFEQSxBQURBLEFBREEsaUNBQWUsNEJBQ1EsMENBQ2MsaUNBQ1Qsd0NBQ087OztpRkRVMUIsZ0JBQWdCO2NBTjVCLFNBQVM7MkJBQ0UsVUFBVSxtQkFFSCx1QkFBdUIsQ0FBQyxNQUFNLGFBQy9DLFNBQVM7O2tGQUVFLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb0lucHV0R2VuZXJpYyB9IGZyb20gJy4uL3BvLWlucHV0LWdlbmVyaWMvcG8taW5wdXQtZ2VuZXJpYyc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0VtYWlsQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0VtYWlsQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XG5dO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0lucHV0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gYHBvLWVtYWlsYCDDqSB1bSBpbnB1dCBlc3BlY8OtZmljbyBwYXJhIHJlY2ViZXIgRS1tYWlsLCBjb20gbyBwYXR0ZXJuIGrDoSBjb25maWd1cmFkby5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1lbWFpbC1iYXNpY1wiIHRpdGxlPVwiUE8gRW1haWwgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLWJhc2ljL3NhbXBsZS1wby1lbWFpbC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1lbWFpbC1iYXNpYy9zYW1wbGUtcG8tZW1haWwtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLWJhc2ljL3NhbXBsZS1wby1lbWFpbC1iYXNpYy5jb21wb25lbnQuZTJlLXNwZWMudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtYmFzaWMvc2FtcGxlLXBvLWVtYWlsLWJhc2ljLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWVtYWlsLWxhYnNcIiB0aXRsZT1cIlBPIEVtYWlsIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLWxhYnMvc2FtcGxlLXBvLWVtYWlsLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtbGFicy9zYW1wbGUtcG8tZW1haWwtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1lbWFpbC1uZXdzbGV0dGVyXCIgdGl0bGU9XCJQTyBFbWFpbCAtIE5ld3NsZXR0ZXJcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLW5ld3NsZXR0ZXIvc2FtcGxlLXBvLWVtYWlsLW5ld3NsZXR0ZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtbmV3c2xldHRlci9zYW1wbGUtcG8tZW1haWwtbmV3c2xldHRlci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1lbWFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi4vcG8taW5wdXQvcG8taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzXG59KVxuZXhwb3J0IGNsYXNzIFBvRW1haWxDb21wb25lbnQgZXh0ZW5kcyBQb0lucHV0R2VuZXJpYyBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIGlkID0gYHBvLWVtYWlsWyR7dXVpZCgpfV1gO1xuICBpY29uID0gJ0lDT05fTUFJTCc7XG5cbiAgdHlwZSA9ICdlbWFpbCc7XG5cbiAgLy8gQ29uc2lkZXJhbW9zIG8gdXNvIGRvIG5vc3NvIHBhdHRlcm4gY29tIGEgc2VndWludGUgZXhwcmVzc8Ojby5cbiAgLy8gQW50ZXMgZG8gc8OtbWJvbG8gQDpcbiAgLy8gLSBuw6NvIGjDoSBsaW1pdGUgZGUgY2FyYWN0ZXJlcy5cbiAgLy8gLSBuw6NvIHBvZGUgaGF2ZXIgZXNwYcOnb3MgZW0gYnJhbmNvLCBjYXJhY3RlcmVzIGFjZW50dWFkb3MsIGNhcmFjdGVyZXMgZXNwZWNpYWlzIG91IHPDrW1ib2xvcy5cbiAgLy8gLSBwb2RlIGNvbWXDp2FyIGNvbSBsZXRyYXMsIG7Dum1lcm9zLCBow61mZW4gb3UgdW5kZXNjb3JlICh1bmRlcmxpbmUpLlxuICAvL1xuICAvLyBEZXBvaXMgZG8gc8OtbWJvbG8gQDpcbiAgLy8gLSBvIGRvbcOtbmlvIHRlbSB1bSBsaW1pdGUgZGUgYXTDqSA2NiBjYXJhY3RlcmVzIGFww7NzIHVtIHNlcGFyYWRvci5cbiAgLy8gLSBzZXBhcmFkb3IgZGV2ZSBzZXIgdW0gJ3BvbnRvJyAoLikuXG4gIC8vIC0gbyBwcmltZWlybyBibG9jbyBwb2RlIGNvbnRlciBsZXRyYXMsIG7Dum1lcm9zLCBow61mZW4gb3UgdW5kZXJzY29yZSAodW5kZXJsaW5lKS5cbiAgLy8gLSBhcMOzcyBvIHByaW1laXJvIHNlcGFyYWRvciDDqSBwZXJtaXRpZG8gYXBlbmFzIGxldHJhcy5cbiAgLy8gLSBuw6NvIHBvZGUgaGF2ZXIgZXNwYcOnb3MgZW0gYnJhbmNvLCBjYXJhY3RlcmVzIGFjZW50dWFkb3MsIGNhcmFjdGVyZXMgZXNwZWNpYWlzIG91IHPDrW1ib2xvcy5cbiAgLy9cbiAgLy8gTGltaXRlIHRvdGFsIGRlIDI1NCBjYXJhY3RlcmVzIHBhcmEgbyBlLW1haWwuXG4gIC8vXG4gIC8vIEFzIHJlY29tZW5kYcOnw7VlcyBmb3JhbSBjb25zdWx0YWRhcyBuYXMgUkZDIDEwMzQsIFJGQyA1MzIxIGUgUkZDIDUzMjIuXG4gIC8vXG4gIC8vIFJGQyAxMDM0IC0gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMxMDM0I3NlY3Rpb24tM1xuICAvLyBSRkMgNTMyMSAtIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNTMyMSNzZWN0aW9uLTQuNS4zLjFcbiAgLy8gUkZDIDUzMjIgLSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzUzMjIjc2VjdGlvbi0zLjRcbiAgcGF0dGVybiA9ICdeKFtcXFxcdy1dKyg/OlxcXFwuW1xcXFx3LV0rKSopQCgoPzpbXFxcXHctXStcXFxcLikqXFxcXHdbXFxcXHctXXswLDY2fSlcXFxcLihbQS1aYS16XXsyLDY2fSg/OlxcXFwuW0EtWmEtel17Mn0pPykkJztcblxuICBtYXNrID0gJyc7XG5cbiAgcHJpdmF0ZSBsaXN0ZW5lciA9IHRoaXMudmFsaWRhdGVDbGFzc2VzRm9yUGF0dGVybi5iaW5kKHRoaXMpO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihlbCwgY2QpO1xuICAgIHRoaXMubWF4bGVuZ3RoID0gMjU0O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gU2UgbsOjbyB0ZW0gbmdNb2RlbCBvdSByZWFjdGl2ZSBmb3JtIGFkaWNpb25hIHZhbGlkYcOnw6NvIGNvbSBjbGFzc2VzIGNzc1xuICAgICAgaWYgKCF0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5saXN0ZW5lcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAoIXRoaXMub25DaGFuZ2VQcm9wYWdhdGUpIHtcbiAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5saXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgZXh0cmFWYWxpZGF0aW9uKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyXG4gIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3AtaWRdPVwiaWRcIlxuICBbcC1sYWJlbF09XCJsYWJlbFwiXG4gIFtwLW9wdGlvbmFsXT1cIm9wdGlvbmFsXCJcbiAgW3AtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbcC1zaG93LXJlcXVpcmVkXT1cInNob3dSZXF1aXJlZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgICA8cG8taWNvblxuICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWljb24ge3sgZGlzYWJsZWQgPyAncG8taWNvbi1pbnB1dC1kaXNhYmxlZCcgOiAncG8taWNvbi1pbnB1dCcgfX1cIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtwLWljb25dPVwiaWNvblwiXG4gICAgICA+PC9wby1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0XG4gICAgICAjaW5wXG4gICAgICBjbGFzcz1cInBvLWlucHV0XCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1sZWZ0XT1cImljb25cIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tcmlnaHRdPVwiY2xlYW5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtpZF09XCJpZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAoYmx1cik9XCJldmVudE9uQmx1cigkZXZlbnQpXCJcbiAgICAgIChjbGljayk9XCJldmVudE9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwiZXZlbnRPbkZvY3VzKCRldmVudClcIlxuICAgICAgKGlucHV0KT1cImV2ZW50T25JbnB1dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8cG8tY2xlYW5cbiAgICAgICAgY2xhc3M9XCJ7eyBkaXNhYmxlZCA/ICdwby1pY29uLWlucHV0LWRpc2FibGVkJyA6ICdwby1pY29uLWlucHV0JyB9fVwiXG4gICAgICAgICpuZ0lmPVwiY2xlYW4gJiYgIWRpc2FibGVkICYmICFyZWFkb25seVwiXG4gICAgICAgIFtwLWVsZW1lbnQtcmVmXT1cImlucHV0RWxcIlxuICAgICAgICAocC1jaGFuZ2UtZXZlbnQpPVwiY2xlYXIoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L3BvLWNsZWFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbVxuICAgIFtwLWhlbHBdPVwiaGVscFwiXG4gICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZ2V0RXJyb3JQYXR0ZXJuKClcIlxuICAgIFtwLWVycm9yLWxpbWl0XT1cImVycm9yTGltaXRcIlxuICAgIFtwLWFwcGVuZC1pbi1ib2R5XT1cImVycm9yQXBwZW5kQm94XCJcbiAgPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
@@ -1,20 +1,25 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { convertToBoolean } from '../../../../utils/util';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@angular/common";
4
5
  import * as i2 from "../../../po-icon/po-icon.component";
6
+ import * as i3 from "../../../../directives/po-tooltip/po-tooltip.directive";
5
7
  function PoFieldContainerBottomComponent_div_1_Template(rf, ctx) { if (rf & 1) {
6
8
  i0.ɵɵelementStart(0, "div", 3);
7
9
  i0.ɵɵelement(1, "po-icon", 4);
8
- i0.ɵɵelementStart(2, "span");
10
+ i0.ɵɵelementStart(2, "span", 5);
9
11
  i0.ɵɵtext(3);
10
12
  i0.ɵɵelementEnd()();
11
13
  } if (rf & 2) {
12
14
  const ctx_r0 = i0.ɵɵnextContext();
13
- i0.ɵɵadvance(3);
14
- i0.ɵɵtextInterpolate1(" ", ctx_r0.errorPattern, "");
15
+ i0.ɵɵadvance(2);
16
+ i0.ɵɵclassProp("po-field-error-limit", ctx_r0.errorLimit);
17
+ i0.ɵɵproperty("p-tooltip", ctx_r0.errorLimit ? ctx_r0.errorPattern : null)("p-append-in-body", ctx_r0.appendBox);
18
+ i0.ɵɵadvance();
19
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.errorPattern, " ");
15
20
  } }
16
21
  function PoFieldContainerBottomComponent_span_2_Template(rf, ctx) { if (rf & 1) {
17
- i0.ɵɵelementStart(0, "span", 5);
22
+ i0.ɵɵelementStart(0, "span", 6);
18
23
  i0.ɵɵtext(1);
19
24
  i0.ɵɵelementEnd();
20
25
  } if (rf & 2) {
@@ -36,33 +41,45 @@ export class PoFieldContainerBottomComponent {
36
41
  * Obs: Esta mensagem não é apresentada quando o campo estiver vazio, mesmo que ele seja requerido.
37
42
  */
38
43
  errorPattern = '';
44
+ /**
45
+ * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.
46
+ */
47
+ errorLimit = false;
39
48
  disabled = false;
40
49
  help;
50
+ appendBox = false;
41
51
  static ɵfac = function PoFieldContainerBottomComponent_Factory(t) { return new (t || PoFieldContainerBottomComponent)(); };
42
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoFieldContainerBottomComponent, selectors: [["po-field-container-bottom"]], inputs: { errorPattern: [0, "p-error-pattern", "errorPattern"], disabled: [0, "p-disabled", "disabled"], help: [0, "p-help", "help"] }, decls: 3, vars: 4, consts: [[1, "po-field-container-bottom"], ["class", "po-field-container-bottom-text-error", 4, "ngIf"], ["class", "po-field-container-bottom-help-text", 4, "ngIf"], [1, "po-field-container-bottom-text-error"], ["p-icon", "ph ph-warning-circle"], [1, "po-field-container-bottom-help-text"]], template: function PoFieldContainerBottomComponent_Template(rf, ctx) { if (rf & 1) {
52
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoFieldContainerBottomComponent, selectors: [["po-field-container-bottom"]], inputs: { errorPattern: [0, "p-error-pattern", "errorPattern"], errorLimit: [0, "p-error-limit", "errorLimit"], disabled: [0, "p-disabled", "disabled"], help: [0, "p-help", "help"], appendBox: [2, "p-append-in-body", "appendBox", convertToBoolean] }, features: [i0.ɵɵInputTransformsFeature], decls: 3, vars: 5, consts: [["role", "alert", "aria-live", "assertive", "tabindex", "-1", 1, "po-field-container-bottom"], ["class", "po-field-container-bottom-text-error", 4, "ngIf"], ["class", "po-field-container-bottom-help-text", 4, "ngIf"], [1, "po-field-container-bottom-text-error"], ["p-icon", "ph ph-warning-circle"], ["p-tooltip-position", "top", 1, "po-field-error-message", 3, "p-tooltip", "p-append-in-body"], [1, "po-field-container-bottom-help-text"]], template: function PoFieldContainerBottomComponent_Template(rf, ctx) { if (rf & 1) {
43
53
  i0.ɵɵelementStart(0, "div", 0);
44
- i0.ɵɵtemplate(1, PoFieldContainerBottomComponent_div_1_Template, 4, 1, "div", 1)(2, PoFieldContainerBottomComponent_span_2_Template, 2, 1, "span", 2);
54
+ i0.ɵɵtemplate(1, PoFieldContainerBottomComponent_div_1_Template, 4, 5, "div", 1)(2, PoFieldContainerBottomComponent_span_2_Template, 2, 1, "span", 2);
45
55
  i0.ɵɵelementEnd();
46
56
  } if (rf & 2) {
47
57
  i0.ɵɵclassProp("po-field-container-bottom-disabled", ctx.disabled);
58
+ i0.ɵɵattribute("aria-label", ctx.errorPattern && ctx.errorLimit ? ctx.errorPattern : null);
48
59
  i0.ɵɵadvance();
49
60
  i0.ɵɵproperty("ngIf", ctx.errorPattern);
50
61
  i0.ɵɵadvance();
51
62
  i0.ɵɵproperty("ngIf", ctx.help && !ctx.errorPattern);
52
- } }, dependencies: [i1.NgIf, i2.PoIconComponent], encapsulation: 2, changeDetection: 0 });
63
+ } }, dependencies: [i1.NgIf, i2.PoIconComponent, i3.PoTooltipDirective], encapsulation: 2, changeDetection: 0 });
53
64
  }
54
65
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoFieldContainerBottomComponent, [{
55
66
  type: Component,
56
- args: [{ selector: 'po-field-container-bottom', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"po-field-container-bottom\" [class.po-field-container-bottom-disabled]=\"disabled\">\n <div *ngIf=\"errorPattern\" class=\"po-field-container-bottom-text-error\">\n <po-icon p-icon=\"ph ph-warning-circle\"></po-icon>\n <span> {{ errorPattern }}</span>\n </div>\n <span *ngIf=\"help && !errorPattern\" class=\"po-field-container-bottom-help-text\">\n {{ help }}\n </span>\n</div>\n" }]
67
+ args: [{ selector: 'po-field-container-bottom', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"po-field-container-bottom\"\n [class.po-field-container-bottom-disabled]=\"disabled\"\n [attr.aria-label]=\"errorPattern && errorLimit ? errorPattern : null\"\n role=\"alert\"\n aria-live=\"assertive\"\n tabindex=\"-1\"\n>\n <div *ngIf=\"errorPattern\" class=\"po-field-container-bottom-text-error\">\n <po-icon p-icon=\"ph ph-warning-circle\"></po-icon>\n <span\n class=\"po-field-error-message\"\n [class.po-field-error-limit]=\"errorLimit\"\n [p-tooltip]=\"errorLimit ? errorPattern : null\"\n p-tooltip-position=\"top\"\n [p-append-in-body]=\"appendBox\"\n >\n {{ errorPattern }}\n </span>\n </div>\n\n <span *ngIf=\"help && !errorPattern\" class=\"po-field-container-bottom-help-text\">\n {{ help }}\n </span>\n</div>\n" }]
57
68
  }], null, { errorPattern: [{
58
69
  type: Input,
59
70
  args: ['p-error-pattern']
71
+ }], errorLimit: [{
72
+ type: Input,
73
+ args: ['p-error-limit']
60
74
  }], disabled: [{
61
75
  type: Input,
62
76
  args: ['p-disabled']
63
77
  }], help: [{
64
78
  type: Input,
65
79
  args: ['p-help']
80
+ }], appendBox: [{
81
+ type: Input,
82
+ args: [{ alias: 'p-append-in-body', transform: convertToBoolean }]
66
83
  }] }); })();
67
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoFieldContainerBottomComponent, { className: "PoFieldContainerBottomComponent", filePath: "lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.ts", lineNumber: 16 }); })();
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZmllbGQtY29udGFpbmVyL3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20vcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZmllbGQtY29udGFpbmVyL3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20vcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7SUNDeEUsOEJBQXVFO0lBQ3JFLDZCQUFpRDtJQUNqRCw0QkFBTTtJQUFDLFlBQWtCO0lBQzNCLEFBRDJCLGlCQUFPLEVBQzVCOzs7SUFERyxlQUFrQjtJQUFsQixtREFBa0I7OztJQUUzQiwrQkFBZ0Y7SUFDOUUsWUFDRjtJQUFBLGlCQUFPOzs7SUFETCxjQUNGO0lBREUsNENBQ0Y7O0FETEY7Ozs7Ozs7R0FPRztBQU1ILE1BQU0sT0FBTywrQkFBK0I7SUFDMUM7OztPQUdHO0lBQ3VCLFlBQVksR0FBWSxFQUFFLENBQUM7SUFFaEMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUU5QixJQUFJLENBQVU7eUZBVHBCLCtCQUErQjs2REFBL0IsK0JBQStCO1lDZjVDLDhCQUE2RjtZQUszRixBQUpBLGdGQUF1RSxxRUFJUztZQUdsRixpQkFBTTs7WUFSaUMsa0VBQXFEO1lBQ3BGLGNBQWtCO1lBQWxCLHVDQUFrQjtZQUlqQixjQUEyQjtZQUEzQixvREFBMkI7OztpRkRVdkIsK0JBQStCO2NBTDNDLFNBQVM7MkJBQ0UsMkJBQTJCLG1CQUVwQix1QkFBdUIsQ0FBQyxNQUFNO2dCQU9yQixZQUFZO2tCQUFyQyxLQUFLO21CQUFDLGlCQUFpQjtZQUVILFFBQVE7a0JBQTVCLEtBQUs7bUJBQUMsWUFBWTtZQUVGLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTs7a0ZBVEosK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZG9jc1ByaXZhdGVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBDb21wb25lbnRlIGRlIHVzbyBpbnRlcm5vLCByZXNwb25zw6F2ZWwgcG9yIGdlcmFyIHVtYSBtYXJnZW0gaW5mZXJpb3Igbm9zIGNvbXBvbmVudGVzIHF1ZSB1dGlsaXphbSBvIHBvLWZpZWxkLWNvbnRhaW5lci5cbiAqIEVzc2EgbWFyZ2VtIGluZmVyaW9yIHBvZGUgY29udGVyIHVtYSBtZW5zYWdlbSBkZSBlcnJvLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1maWVsZC1jb250YWluZXItYm90dG9tJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQb0ZpZWxkQ29udGFpbmVyQm90dG9tQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIE1lbnNhZ2VtIHF1ZSBzZXLDoSBhcHJlc2VudGFkYSBxdWFuZG8gbyBwYXR0ZXJuIG91IGEgbcOhc2NhcmEgbsOjbyBmb3Igc2F0aXNmZWl0YS5cbiAgICogT2JzOiBFc3RhIG1lbnNhZ2VtIG7Do28gw6kgYXByZXNlbnRhZGEgcXVhbmRvIG8gY2FtcG8gZXN0aXZlciB2YXppbywgbWVzbW8gcXVlIGVsZSBzZWphIHJlcXVlcmlkby5cbiAgICovXG4gIEBJbnB1dCgncC1lcnJvci1wYXR0ZXJuJykgZXJyb3JQYXR0ZXJuPzogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCdwLWRpc2FibGVkJykgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XG59XG4iLCI8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWJvdHRvbVwiIFtjbGFzcy5wby1maWVsZC1jb250YWluZXItYm90dG9tLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gIDxkaXYgKm5nSWY9XCJlcnJvclBhdHRlcm5cIiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20tdGV4dC1lcnJvclwiPlxuICAgIDxwby1pY29uIHAtaWNvbj1cInBoIHBoLXdhcm5pbmctY2lyY2xlXCI+PC9wby1pY29uPlxuICAgIDxzcGFuPiB7eyBlcnJvclBhdHRlcm4gfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8c3BhbiAqbmdJZj1cImhlbHAgJiYgIWVycm9yUGF0dGVyblwiIGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS1oZWxwLXRleHRcIj5cbiAgICB7eyBoZWxwIH19XG4gIDwvc3Bhbj5cbjwvZGl2PlxuIl19
84
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoFieldContainerBottomComponent, { className: "PoFieldContainerBottomComponent", filePath: "lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.ts", lineNumber: 17 }); })();
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZmllbGQtY29udGFpbmVyL3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20vcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZmllbGQtY29udGFpbmVyL3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20vcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0lDT3hELDhCQUF1RTtJQUNyRSw2QkFBaUQ7SUFDakQsK0JBTUM7SUFDQyxZQUNGO0lBQ0YsQUFERSxpQkFBTyxFQUNIOzs7SUFQRixlQUF5QztJQUF6Qyx5REFBeUM7SUFHekMsQUFGQSwwRUFBOEMsc0NBRWhCO0lBRTlCLGNBQ0Y7SUFERSxvREFDRjs7O0lBR0YsK0JBQWdGO0lBQzlFLFlBQ0Y7SUFBQSxpQkFBTzs7O0lBREwsY0FDRjtJQURFLDRDQUNGOztBRHBCRjs7Ozs7OztHQU9HO0FBTUgsTUFBTSxPQUFPLCtCQUErQjtJQUMxQzs7O09BR0c7SUFDdUIsWUFBWSxHQUFZLEVBQUUsQ0FBQztJQUVyRDs7T0FFRztJQUNxQixVQUFVLEdBQVksS0FBSyxDQUFDO0lBRS9CLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFOUIsSUFBSSxDQUFVO0lBRW9DLFNBQVMsR0FBYSxLQUFLLENBQUM7eUZBaEJwRiwrQkFBK0I7NkRBQS9CLCtCQUErQixvUkFnQkssZ0JBQWdCO1lDaENqRSw4QkFPQztZQWNDLEFBYkEsZ0ZBQXVFLHFFQWFTO1lBR2xGLGlCQUFNOztZQXRCSixrRUFBcUQ7O1lBTS9DLGNBQWtCO1lBQWxCLHVDQUFrQjtZQWFqQixjQUEyQjtZQUEzQixvREFBMkI7OztpRkRMdkIsK0JBQStCO2NBTDNDLFNBQVM7MkJBQ0UsMkJBQTJCLG1CQUVwQix1QkFBdUIsQ0FBQyxNQUFNO2dCQU9yQixZQUFZO2tCQUFyQyxLQUFLO21CQUFDLGlCQUFpQjtZQUtBLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQUVELFFBQVE7a0JBQTVCLEtBQUs7bUJBQUMsWUFBWTtZQUVGLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQUVvRCxTQUFTO2tCQUEzRSxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7a0ZBaEJ0RCwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG4vKipcbiAqIEBkb2NzUHJpdmF0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgZGUgdXNvIGludGVybm8sIHJlc3BvbnPDoXZlbCBwb3IgZ2VyYXIgdW1hIG1hcmdlbSBpbmZlcmlvciBub3MgY29tcG9uZW50ZXMgcXVlIHV0aWxpemFtIG8gcG8tZmllbGQtY29udGFpbmVyLlxuICogRXNzYSBtYXJnZW0gaW5mZXJpb3IgcG9kZSBjb250ZXIgdW1hIG1lbnNhZ2VtIGRlIGVycm8uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20nLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBvRmllbGRDb250YWluZXJCb3R0b21Db21wb25lbnQge1xuICAvKipcbiAgICogTWVuc2FnZW0gcXVlIHNlcsOhIGFwcmVzZW50YWRhIHF1YW5kbyBvIHBhdHRlcm4gb3UgYSBtw6FzY2FyYSBuw6NvIGZvciBzYXRpc2ZlaXRhLlxuICAgKiBPYnM6IEVzdGEgbWVuc2FnZW0gbsOjbyDDqSBhcHJlc2VudGFkYSBxdWFuZG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLCBtZXNtbyBxdWUgZWxlIHNlamEgcmVxdWVyaWRvLlxuICAgKi9cbiAgQElucHV0KCdwLWVycm9yLXBhdHRlcm4nKSBlcnJvclBhdHRlcm4/OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogTGltaXRhIGEgZXhpYmnDp8OjbyBkYSBtZW5zYWdlbSBkZSBlcnJvIGEgZHVhcyBsaW5oYXMgZSBleGliZSB1bSB0b29sdGlwIGNvbSBvIHRleHRvIGNvbXBsZXRvLlxuICAgKi9cbiAgQElucHV0KCdwLWVycm9yLWxpbWl0JykgZXJyb3JMaW1pdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hcHBlbmQtaW4tYm9keScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhcHBlbmRCb3g/OiBib29sZWFuID0gZmFsc2U7XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWJvdHRvbVwiXG4gIFtjbGFzcy5wby1maWVsZC1jb250YWluZXItYm90dG9tLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJlcnJvclBhdHRlcm4gJiYgZXJyb3JMaW1pdCA/IGVycm9yUGF0dGVybiA6IG51bGxcIlxuICByb2xlPVwiYWxlcnRcIlxuICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIlxuICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgPGRpdiAqbmdJZj1cImVycm9yUGF0dGVyblwiIGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS10ZXh0LWVycm9yXCI+XG4gICAgPHBvLWljb24gcC1pY29uPVwicGggcGgtd2FybmluZy1jaXJjbGVcIj48L3BvLWljb24+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwicG8tZmllbGQtZXJyb3ItbWVzc2FnZVwiXG4gICAgICBbY2xhc3MucG8tZmllbGQtZXJyb3ItbGltaXRdPVwiZXJyb3JMaW1pdFwiXG4gICAgICBbcC10b29sdGlwXT1cImVycm9yTGltaXQgPyBlcnJvclBhdHRlcm4gOiBudWxsXCJcbiAgICAgIHAtdG9vbHRpcC1wb3NpdGlvbj1cInRvcFwiXG4gICAgICBbcC1hcHBlbmQtaW4tYm9keV09XCJhcHBlbmRCb3hcIlxuICAgID5cbiAgICAgIHt7IGVycm9yUGF0dGVybiB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPHNwYW4gKm5nSWY9XCJoZWxwICYmICFlcnJvclBhdHRlcm5cIiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20taGVscC10ZXh0XCI+XG4gICAge3sgaGVscCB9fVxuICA8L3NwYW4+XG48L2Rpdj5cbiJdfQ==
@@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { PoIconModule } from '../../po-icon';
4
4
  import { PoLabelModule } from '../../po-label';
5
+ import { PoTooltipModule } from '../../../directives/po-tooltip/index';
5
6
  import { PoFieldContainerBottomComponent } from './po-field-container-bottom/po-field-container-bottom.component';
6
7
  import { PoFieldContainerComponent } from './po-field-container.component';
7
8
  import * as i0 from "@angular/core";
@@ -13,15 +14,15 @@ import * as i0 from "@angular/core";
13
14
  export class PoFieldContainerModule {
14
15
  static ɵfac = function PoFieldContainerModule_Factory(t) { return new (t || PoFieldContainerModule)(); };
15
16
  static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: PoFieldContainerModule });
16
- static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule, PoLabelModule, PoIconModule] });
17
+ static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule, PoLabelModule, PoIconModule, PoTooltipModule] });
17
18
  }
18
19
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoFieldContainerModule, [{
19
20
  type: NgModule,
20
21
  args: [{
21
- imports: [CommonModule, PoLabelModule, PoIconModule],
22
+ imports: [CommonModule, PoLabelModule, PoIconModule, PoTooltipModule],
22
23
  exports: [PoFieldContainerBottomComponent, PoFieldContainerComponent],
23
24
  declarations: [PoFieldContainerBottomComponent, PoFieldContainerComponent]
24
25
  }]
25
26
  }], null, null); })();
26
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(PoFieldContainerModule, { declarations: [PoFieldContainerBottomComponent, PoFieldContainerComponent], imports: [CommonModule, PoLabelModule, PoIconModule], exports: [PoFieldContainerBottomComponent, PoFieldContainerComponent] }); })();
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZmllbGQtY29udGFpbmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1maWVsZC1jb250YWluZXIvcG8tZmllbGQtY29udGFpbmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFM0U7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyxzQkFBc0I7Z0ZBQXRCLHNCQUFzQjs0REFBdEIsc0JBQXNCO2dFQUp2QixZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVk7O2lGQUl4QyxzQkFBc0I7Y0FMbEMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDO2dCQUNwRCxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSx5QkFBeUIsQ0FBQztnQkFDckUsWUFBWSxFQUFFLENBQUMsK0JBQStCLEVBQUUseUJBQXlCLENBQUM7YUFDM0U7O3dGQUNZLHNCQUFzQixtQkFGbEIsK0JBQStCLEVBQUUseUJBQXlCLGFBRi9ELFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxhQUN6QywrQkFBK0IsRUFBRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvSWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uL3BvLWljb24nO1xuaW1wb3J0IHsgUG9MYWJlbE1vZHVsZSB9IGZyb20gJy4uLy4uL3BvLWxhYmVsJztcblxuaW1wb3J0IHsgUG9GaWVsZENvbnRhaW5lckJvdHRvbUNvbXBvbmVudCB9IGZyb20gJy4vcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS9wby1maWVsZC1jb250YWluZXItYm90dG9tLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb0ZpZWxkQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9wby1maWVsZC1jb250YWluZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBNw7NkdWxvIGRvIGNvbXBvbmVudGUgYHBvLWZpZWxkLWNvbnRhaW5lcmAuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFBvTGFiZWxNb2R1bGUsIFBvSWNvbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtQb0ZpZWxkQ29udGFpbmVyQm90dG9tQ29tcG9uZW50LCBQb0ZpZWxkQ29udGFpbmVyQ29tcG9uZW50XSxcbiAgZGVjbGFyYXRpb25zOiBbUG9GaWVsZENvbnRhaW5lckJvdHRvbUNvbXBvbmVudCwgUG9GaWVsZENvbnRhaW5lckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUG9GaWVsZENvbnRhaW5lck1vZHVsZSB7fVxuIl19
27
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(PoFieldContainerModule, { declarations: [PoFieldContainerBottomComponent, PoFieldContainerComponent], imports: [CommonModule, PoLabelModule, PoIconModule, PoTooltipModule], exports: [PoFieldContainerBottomComponent, PoFieldContainerComponent] }); })();
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZmllbGQtY29udGFpbmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1maWVsZC1jb250YWluZXIvcG8tZmllbGQtY29udGFpbmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDbEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBRTNFOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sc0JBQXNCO2dGQUF0QixzQkFBc0I7NERBQXRCLHNCQUFzQjtnRUFKdkIsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZUFBZTs7aUZBSXpELHNCQUFzQjtjQUxsQyxRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZUFBZSxDQUFDO2dCQUNyRSxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSx5QkFBeUIsQ0FBQztnQkFDckUsWUFBWSxFQUFFLENBQUMsK0JBQStCLEVBQUUseUJBQXlCLENBQUM7YUFDM0U7O3dGQUNZLHNCQUFzQixtQkFGbEIsK0JBQStCLEVBQUUseUJBQXlCLGFBRi9ELFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGVBQWUsYUFDMUQsK0JBQStCLEVBQUUseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb0ljb25Nb2R1bGUgfSBmcm9tICcuLi8uLi9wby1pY29uJztcbmltcG9ydCB7IFBvTGFiZWxNb2R1bGUgfSBmcm9tICcuLi8uLi9wby1sYWJlbCc7XG5pbXBvcnQgeyBQb1Rvb2x0aXBNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL3BvLXRvb2x0aXAvaW5kZXgnO1xuXG5pbXBvcnQgeyBQb0ZpZWxkQ29udGFpbmVyQm90dG9tQ29tcG9uZW50IH0gZnJvbSAnLi9wby1maWVsZC1jb250YWluZXItYm90dG9tL3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20uY29tcG9uZW50JztcbmltcG9ydCB7IFBvRmllbGRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL3BvLWZpZWxkLWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE3Ds2R1bG8gZG8gY29tcG9uZW50ZSBgcG8tZmllbGQtY29udGFpbmVyYC5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9MYWJlbE1vZHVsZSwgUG9JY29uTW9kdWxlLCBQb1Rvb2x0aXBNb2R1bGVdLFxuICBleHBvcnRzOiBbUG9GaWVsZENvbnRhaW5lckJvdHRvbUNvbXBvbmVudCwgUG9GaWVsZENvbnRhaW5lckNvbXBvbmVudF0sXG4gIGRlY2xhcmF0aW9uczogW1BvRmllbGRDb250YWluZXJCb3R0b21Db21wb25lbnQsIFBvRmllbGRDb250YWluZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFBvRmllbGRDb250YWluZXJNb2R1bGUge31cbiJdfQ==