mmhglobal-dynamicform 2.22.0 → 2.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 (30) hide show
  1. package/README.md +8 -0
  2. package/esm2020/lib/components/datalistingfieldbase.component.mjs +5 -2
  3. package/esm2020/lib/embed-components/context-menu/context-menu.component.mjs +113 -0
  4. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +13 -6
  5. package/esm2020/lib/virtual-scroll/virtual-scroll.component.mjs +8 -7
  6. package/esm2020/lib/zbuttons/zbuttons.component.mjs +9 -3
  7. package/esm2020/lib/zdiv/zdiv.component.mjs +7 -6
  8. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +6 -4
  9. package/esm2020/lib/zgrid/zgrid.component.mjs +14 -8
  10. package/esm2020/lib/zinput-container/zinput-container.component.mjs +10 -9
  11. package/esm2020/lib/zlabel/zlabel.component.mjs +10 -7
  12. package/esm2020/lib/zreport/zreport.component.mjs +31 -11
  13. package/esm2020/lib/ztext/ztext.component.mjs +20 -5
  14. package/esm2020/lib/ztextarea/ztextarea.component.mjs +3 -4
  15. package/esm2020/lib/ztree/ztree.component.mjs +21 -8
  16. package/esm2020/lib/ztreelist/ztreelist.component.mjs +12 -7
  17. package/esm2020/public-api.mjs +2 -1
  18. package/fesm2015/mmhglobal-dynamicform.mjs +266 -92
  19. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
  20. package/fesm2020/mmhglobal-dynamicform.mjs +264 -92
  21. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
  22. package/lib/components/datalistingfieldbase.component.d.ts +2 -0
  23. package/lib/embed-components/context-menu/context-menu.component.d.ts +28 -0
  24. package/lib/mmhglobal-dynamicform.module.d.ts +39 -37
  25. package/lib/zbuttons/zbuttons.component.d.ts +1 -0
  26. package/lib/zlabel/zlabel.component.d.ts +2 -0
  27. package/lib/ztext/ztext.component.d.ts +2 -0
  28. package/lib/ztree/ztree.component.d.ts +5 -2
  29. package/package.json +1 -1
  30. package/public-api.d.ts +1 -0
@@ -97,6 +97,7 @@ export class ZreportComponent extends FieldBase {
97
97
  }
98
98
  printBegin(e, args) {
99
99
  console.log("Print begin.");
100
+ const alertTitle = 'Print PDF Error';
100
101
  const pdfBlob = this.generateEmptyPdf();
101
102
  const pdfUrl = URL.createObjectURL(pdfBlob);
102
103
  const userAgent = navigator.userAgent;
@@ -111,22 +112,41 @@ export class ZreportComponent extends FieldBase {
111
112
  }
112
113
  iframe.src = pdfUrl;
113
114
  iframe.onload = () => {
114
- if (!iframe.contentDocument) {
115
- if (isChrome) {
116
- this.alertService.showOkay("Print PDF Error", "Step 1: Please access 'chrome://settings/content/pdfDocuments' in the brower.<br/>Step 2: Select 'Open PDFs in Chrome' in the setting before printing the report.", ["col-6"]);
117
- }
118
- else if (isEdge) {
119
- this.alertService.showOkay("Print PDF Error", "Step 1: Please navigate to 'edge://settings/content/pdfDocuments' in the brower.<br/>Step 2: Enable 'PDF view settings' and Disable 'Always Download PDF files' in the setting before printing the report.", ["col-6"]);
115
+ try {
116
+ const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;
117
+ const pdfElement = iframeDocument.querySelector('embed[type="application/pdf"], object[type="application/pdf"], iframe');
118
+ console.log('Checking browser is report able to print.', pdfElement);
119
+ // If no PDF element found, alert user about potential issue
120
+ if (!pdfElement) {
121
+ this.allowPrintPDF = false;
122
+ if (isChrome) {
123
+ this.alertService.showOkay(alertTitle, "Step 1: Please navigate to 'chrome://settings/content/pdfDocuments' in the brower.<br/>Step 2: Select 'Open PDFs in Chrome' in the setting before printing the report.", ["col-6"]);
124
+ }
125
+ else if (isEdge) {
126
+ this.alertService.showOkay(alertTitle, "Step 1: Please navigate to 'edge://settings/content/pdfDocuments' in the brower.<br/>Step 2: Enable 'PDF view settings' and Disable 'Always Download PDF files' in the setting before printing the report.", ["col-6"]);
127
+ }
128
+ else {
129
+ this.alertService.showOkay(alertTitle, "The browser settings cannot be detected, please reach out to support for assistance.", ["col-4"]);
130
+ }
120
131
  }
121
132
  else {
122
- this.alertService.showOkay("Print PDF Error", "The browser settings cannot be detected, please reach out to support for assistance.", ["col-4"]);
133
+ this.allowPrintPDF = true;
123
134
  }
124
- this.allowPrintPDF = false;
125
135
  }
126
- else {
127
- this.allowPrintPDF = true;
136
+ catch (error) {
137
+ // If accessing iframe content throws an error, alert user about potential issue
138
+ this.allowPrintPDF = false;
139
+ // PDF failed to load or display properly
140
+ console.log('PDF failed to load or display properly in the iframe.');
141
+ this.alertService.showOkay(alertTitle, "The browser settings cannot be detected, please reach out to support for assistance.", ["col-4"]);
128
142
  }
129
143
  };
144
+ iframe.onerror = () => {
145
+ this.allowPrintPDF = false;
146
+ // PDF failed to load or display properly
147
+ console.log('PDF failed to load or display properly in the iframe.');
148
+ this.alertService.showOkay(alertTitle, "The browser settings cannot be detected, please reach out to support for assistance.", ["col-4"]);
149
+ };
130
150
  iframe.style.display = 'none';
131
151
  document.body.appendChild(iframe);
132
152
  }
@@ -164,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
164
184
  type: HostListener,
165
185
  args: ['window:resize', ['$event']]
166
186
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienJlcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cmVwb3J0L3pyZXBvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenJlcG9ydC96cmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBTzFGLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFxRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVd0SCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztJQTBCN0MsWUFDUyxnQkFBbUMsRUFDbkMsa0JBQXNDLEVBQ3JDLGtCQUFzQyxFQUN0QyxXQUF3QixFQUN4QixZQUEwQjtRQUVsQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQU5qQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXJCNUIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFFL0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQix5QkFBb0IsR0FBRztZQUM1QixRQUFRLEVBQUUsVUFBVTtZQUNwQixLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFB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OytOQU13QixNQUFNO3NCQUFwRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNkQ3QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIsIEFmdGVyVmlld0luaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBUZWxlcmlrUmVwb3J0Vmlld2VyQ29tcG9uZW50IH0gZnJvbSBcIkBwcm9ncmVzcy90ZWxlcmlrLWFuZ3VsYXItcmVwb3J0LXZpZXdlclwiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBGb250QXdlU29tZVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuIFxyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpyZXBvcnRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pyZXBvcnQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venJlcG9ydC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFpyZXBvcnRDb21wb25lbnQgZXh0ZW5kcyBGaWVsZEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ3JlcG9ydFZpZXdlcjEnLCB7IHN0YXRpYzogZmFsc2UgfSkgdmlld2VyOiBUZWxlcmlrUmVwb3J0Vmlld2VyQ29tcG9uZW50O1xyXG5cclxuICBwdWJsaWMgb25FeHBvcnRCZWdpbjogRnVuY3Rpb247XHJcbiAgcHVibGljIG9uRXhwb3J0RW5kOiBGdW5jdGlvbjtcclxuICBwdWJsaWMgb25SZW5kZXJpbmdCZWdpbjogRnVuY3Rpb247XHJcbiAgcHVibGljIG9uUmVuZGVyaW5nRW5kOiBGdW5jdGlvbjtcclxuICBwdWJsaWMgb25QcmludEJlZ2luOiBGdW5jdGlvbjtcclxuICBwdWJsaWMgb25QcmludEVuZDogRnVuY3Rpb247XHJcblxyXG4gIHByaXZhdGUgYWxsb3dQcmludFBERjogYm9vbGVhbiA9IHRydWU7XHJcbiAgIFxyXG4gIHB1YmxpYyBzZXJ2aWNlVXJsID0gbnVsbDtcclxuICBwdWJsaWMgcmVwb3J0U291cmNlID0gbnVsbDsgXHJcbiAgcHVibGljIHZpZXdlckNvbnRhaW5lclN0eWxlID0ge1xyXG4gICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcclxuICAgIHdpZHRoOiBcIjEwMCVcIixcclxuICAgIGhlaWdodDogXCI4MDBweFwiLFxyXG4gICAgZm9udEZhbWlseTogJ0FyaWFsLCBzYW5zLXNlcmlmJyxcclxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmOWY5ZjknLFxyXG4gICAgYm94U2hhZG93OiAnMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKScsXHJcbiAgICBmb250U2l6ZTogJzE2cHgnLFxyXG4gICAgbGluZUhlaWdodDogJzEuNScsXHJcbiAgICBjb2xvcjogJyMzMzMnLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvbnRBd2VTb21lU2VydmljZTogRm9udEF3ZVNvbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub25FeHBvcnRCZWdpbiA9IHRoaXMuZXhwb3J0QmVnaW4uYmluZCh0aGlzKTtcclxuICAgIHRoaXMub25FeHBvcnRFbmQgPSB0aGlzLmV4cG9ydEVuZC5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy5vblJlbmRlcmluZ0JlZ2luID0gdGhpcy5yZW5kZXJpbmdCZWdpbi5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy5vblJlbmRlcmluZ0VuZCA9IHRoaXMucmVuZGVyaW5nRW5kLmJpbmQodGhpcyk7XHJcbiAgICB0aGlzLm9uUHJpbnRCZWdpbiA9IHRoaXMucHJpbnRCZWdpbi5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy5vblByaW50RW5kID0gdGhpcy5wcmludEVuZC5iaW5kKHRoaXMpO1xyXG5cclxuXHJcbiAgICBzdXBlci5pbml0Q29tcG9uZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJsID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKHRoaXMuZGF0YS5SZXNvdXJjZVVSTCk7XHJcbiAgICAgIGlmICghdGhpcy5zZXJ2aWNlVXJsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJyZXNvdXJjZVVSTCBpcyBlbXB0eS5cIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghIXRoaXMuZGF0YS5Jc0F1dG9HZW5lcmF0ZVJlcG9ydCkge1xyXG4gICAgICAgIHRoaXMucmVwb3J0U291cmNlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5SZXBvcnRTb3VyY2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uUmVzaXplKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJSZXBvcnQgcmVzaXplZC5cIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25SZWFkeSgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUmVwb3J0IHJlYWR5LlwiKTtcclxuICAgICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfaGlzdG9yeUJhY2snXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgICAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX2hpc3RvcnlGb3J3YXJkJ11cIikucGFyZW50KCkuaGlkZSgpO1xyXG4gICAgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9zdG9wUmVuZGVyaW5nJ11cIikucGFyZW50KCkuaGlkZSgpO1xyXG4gICAgLy8kKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3JlZnJlc2gnXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfZ29Ub0ZpcnN0UGFnZSddXCIpLnBhcmVudCgpLmhpZGUoKTsgXHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfZ29Ub1ByZXZQYWdlJ11cIikucGFyZW50KCkuaGlkZSgpOyBcclxuICAgIC8vJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9nb1RvTmV4dFBhZ2UnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IFxyXG4gICAgLy8kKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX2dvVG9MYXN0UGFnZSddXCIpLnBhcmVudCgpLmhpZGUoKTsgXHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfdG9nZ2xlUHJpbnRQcmV2aWV3J11cIikucGFyZW50KCkuaGlkZSgpOyBcclxuICAgIC8vJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9leHBvcnQnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IFxyXG4gICAgLy8kKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3ByaW50J11cIikucGFyZW50KCkuaGlkZSgpOyBcclxuICAgICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfdG9nZ2xlRG9jdW1lbnRNYXAnXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgICAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3RvZ2dsZVBhcmFtZXRlcnNBcmVhJ11cIikucGFyZW50KCkuaGlkZSgpO1xyXG4gICAgLy8kKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3pvb21JbiddXCIpLnBhcmVudCgpLmhpZGUoKTsgXHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfem9vbU91dCddXCIpLnBhcmVudCgpLmhpZGUoKTsgXHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfdG9nZ2xlWm9vbU1vZGUnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IFxyXG4gICAgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl90b2dnbGVTZWFyY2hEaWFsb2cnXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwb3J0QmVnaW4oZTogYW55LCBhcmdzOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiRXhwb3J0IGJlZ2luLlwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBvcnRFbmQoZTogYW55LCBhcmdzOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiRXhwb3J0IGVuZC5cIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVuZGVyaW5nQmVnaW4oZTogYW55LCBhcmdzOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUmVuZGVyaW5nIHN0YXJ0ZWQuXCIpO1xyXG4gICAgaWYgKHRoaXMucmVwb3J0U291cmNlLnBhcmFtZXRlcnMgJiYgdGhpcy5yZXBvcnRTb3VyY2UucGFyYW1ldGVycy5BdXRob3JpemF0aW9uICE9PSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25CZWFyZXIuQXV0aG9yaXphdGlvbikge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJVcGRhdGVkIGludmFsaWQgYXV0aG9yaXphdGlvbiB0b2tlbi5cIik7XHJcblxyXG4gICAgICB0aGlzLnJlcG9ydFNvdXJjZS5wYXJhbWV0ZXJzLkF1dGhvcml6YXRpb24gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25CZWFyZXIuQXV0aG9yaXphdGlvbjtcclxuICAgICAgdGhpcy52aWV3ZXIuc2V0UmVwb3J0U291cmNlKHRoaXMucmVwb3J0U291cmNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW5kZXJpbmdFbmQoZTogYW55LCBhcmdzOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUmVuZGVyaW5nIGVuZGVkLlwiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVFbXB0eVBkZigpOiBCbG9iIHtcclxuICAgIC8vIENyZWF0ZSBhbiBlbXB0eSBQREYgZmlsZSB3aXRoIGp1c3QgYSBoZWFkZXJcclxuICAgIGNvbnN0IHBkZkNvbnRlbnQgPSAnJVBERi0xLjNcXG4xIDAgb2JqXFxuPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSID4+XFxuZW5kb2JqXFxuMiAwIG9ialxcbjw8IC9UeXBlIC9QYWdlcyAvS2lkcyBbXSAvQ291bnQgMCA+PlxcbmVuZG9ialxcbnhyZWZcXG4wIDNcXG4wMDAwMDAwMDAwIDY1NTM1IGYgXFxuMDAwMDAwMDAxMCAwMDAwMCBuIFxcbnRyYWlsZXJcXG48PCAvUm9vdCAxIDAgUiAvU2l6ZSAzID4+XFxuc3RhcnR4cmVmXFxuMjA1XFxuJSVFT0YnO1xyXG4gICAgcmV0dXJuIG5ldyBCbG9iKFtwZGZDb250ZW50XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmludEJlZ2luKGU6IGFueSwgYXJnczogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlByaW50IGJlZ2luLlwiKTtcclxuXHJcbiAgICBjb25zdCBwZGZCbG9iID0gdGhpcy5nZW5lcmF0ZUVtcHR5UGRmKCk7XHJcbiAgICBjb25zdCBwZGZVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHBkZkJsb2IpOyBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xyXG4gICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XHJcbiAgICBsZXQgaXNDaHJvbWUgPSBmYWxzZTtcclxuICAgIGxldCBpc0VkZ2UgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoL0VkZy8udGVzdCh1c2VyQWdlbnQpKSB7XHJcbiAgICAgIGlzRWRnZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgvQ2hyb21lLy50ZXN0KHVzZXJBZ2VudCkpIHtcclxuICAgICAgaXNDaHJvbWUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmcmFtZS5zcmMgPSBwZGZVcmw7XHJcbiAgICBpZnJhbWUub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBpZiAoIWlmcmFtZS5jb250ZW50RG9jdW1lbnQpIHtcclxuICAgICAgICBpZiAoaXNDaHJvbWUpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dPa2F5KFwiUHJpbnQgUERGIEVycm9yXCIsIFwiU3RlcCAxOiBQbGVhc2UgYWNjZXNzICdjaHJvbWU6Ly9zZXR0aW5ncy9jb250ZW50L3BkZkRvY3VtZW50cycgaW4gdGhlIGJyb3dlci48YnIvPlN0ZXAgMjogU2VsZWN0ICdPcGVuIFBERnMgaW4gQ2hyb21lJyBpbiB0aGUgc2V0dGluZyBiZWZvcmUgcHJpbnRpbmcgdGhlIHJlcG9ydC5cIiwgW1wiY29sLTZcIl0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0VkZ2UpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dPa2F5KFwiUHJpbnQgUERGIEVycm9yXCIsIFwiU3RlcCAxOiBQbGVhc2UgbmF2aWdhdGUgdG8gJ2VkZ2U6Ly9zZXR0aW5ncy9jb250ZW50L3BkZkRvY3VtZW50cycgaW4gdGhlIGJyb3dlci48YnIvPlN0ZXAgMjogRW5hYmxlICdQREYgdmlldyBzZXR0aW5ncycgYW5kIERpc2FibGUgJ0Fsd2F5cyBEb3dubG9hZCBQREYgZmlsZXMnIGluIHRoZSBzZXR0aW5nIGJlZm9yZSBwcmludGluZyB0aGUgcmVwb3J0LlwiLCBbXCJjb2wtNlwiXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd09rYXkoXCJQcmludCBQREYgRXJyb3JcIiwgXCJUaGUgYnJvd3NlciBzZXR0aW5ncyBjYW5ub3QgYmUgZGV0ZWN0ZWQsIHBsZWFzZSByZWFjaCBvdXQgdG8gc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgW1wiY29sLTRcIl0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hbGxvd1ByaW50UERGID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hbGxvd1ByaW50UERGID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmludEVuZChlOiBhbnksIGFyZ3M6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJQcmludCBlbmQuXCIpO1xyXG5cclxuICAgIGlmICghdGhpcy5hbGxvd1ByaW50UERGKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignQnJvd3NlciBpbmNvcnJlY3QgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIHByaW50IHRoZSBQREYuJylcclxuICAgICAgYXJncy5oYW5kbGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZVJlcG9ydCgpIHtcclxuICAgIHRoaXMucmVwb3J0U291cmNlID0gdGhpcy5ncm91cFtcIlJlcG9ydFNvdXJjZVwiXTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXBvcnRTb3VyY2UucGFyYW1ldGVycyAmJiAhdGhpcy5yZXBvcnRTb3VyY2UucGFyYW1ldGVycy5BdXRob3JpemF0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVwb3J0U291cmNlLnBhcmFtZXRlcnMuQXV0aG9yaXphdGlvbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkJlYXJlci5BdXRob3JpemF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlcG9ydFNvdXJjZVsndXJsJ10pIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJsID0gdGhpcy5yZXBvcnRTb3VyY2VbJ3VybCddO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld2VyLnNldFJlcG9ydFNvdXJjZSh0aGlzLnJlcG9ydFNvdXJjZSk7XHJcbiAgICAvL3RoaXMudmlld2VyLnJlZnJlc2hSZXBvcnQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGb250QXdlc29tZShpY29uTmFtZTogc3RyaW5nLCBmb250QXdlU29tZVNlcnZpY2U/OiBGb250QXdlU29tZVNlcnZpY2UpIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldEZvbnRBd2Vzb21lKGljb25OYW1lLCBmb250QXdlU29tZVNlcnZpY2UpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjgwMHB4XCI+IFxyXG4gIDx0ci12aWV3ZXIgI3JlcG9ydFZpZXdlcjFcclxuICAgICAgICAgICAgIFtjb250YWluZXJTdHlsZV09XCJ2aWV3ZXJDb250YWluZXJTdHlsZVwiXHJcbiAgICAgICAgICAgICBbc2VydmljZVVybF09XCJzZXJ2aWNlVXJsXCJcclxuICAgICAgICAgICAgIFtyZXBvcnRTb3VyY2VdPVwicmVwb3J0U291cmNlXCJcclxuICAgICAgICAgICAgIFt2aWV3TW9kZV09XCInSU5URVJBQ1RJVkUnXCJcclxuICAgICAgICAgICAgIFtzY2FsZU1vZGVdPVwiJ1NQRUNJRklDJ1wiXHJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiMS4wXCJcclxuICAgICAgICAgICAgIFtlbmFibGVBY2Nlc3NpYmlsaXR5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgIFtyZWFkeV09XCJvblJlYWR5XCIgXHJcbiAgICAgICAgICAgICBbZXhwb3J0QmVnaW5dPVwib25FeHBvcnRCZWdpblwiXHJcbiAgICAgICAgICAgICBbZXhwb3J0RW5kXT1cIm9uRXhwb3J0RW5kXCJcclxuICAgICAgICAgICAgIFtyZW5kZXJpbmdCZWdpbl09XCJvblJlbmRlcmluZ0JlZ2luXCJcclxuICAgICAgICAgICAgIFtyZW5kZXJpbmdFbmRdPVwib25SZW5kZXJpbmdFbmRcIlxyXG4gICAgICAgICAgICAgW3ByaW50QmVnaW5dPVwib25QcmludEJlZ2luXCJcclxuICAgICAgICAgICAgIFtwcmludEVuZF09XCJvblByaW50RW5kXCI+XHJcbiAgPC90ci12aWV3ZXI+XHJcbjwvZGl2PlxyXG4iXX0=
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienJlcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cmVwb3J0L3pyZXBvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenJlcG9ydC96cmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBTzFGLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFxRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVd0SCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztJQTBCN0MsWUFDUyxnQkFBbUMsRUFDbkMsa0JBQXNDLEVBQ3JDLGtCQUFzQyxFQUN0QyxXQUF3QixFQUN4QixZQUEwQjtRQUVsQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQU5qQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXJCNUIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFFL0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQix5QkFBb0IsR0FBRztZQUM1QixRQUFRLEVBQUUsVUFBVTtZQUNwQixLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFB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SUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUM7U0FDakc7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLDhCQUE4QjtJQUNoQyxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQWdCLEVBQUUsa0JBQXVDO1FBQzdFLE9BQU8sZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7OzZHQTFNVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixpUEN0QjdCLHV1QkFrQkE7MkZESWEsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLGFBQWE7K05BTXdCLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE2RDdDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFRlbGVyaWtSZXBvcnRWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL3RlbGVyaWstYW5ndWxhci1yZXBvcnQtdmlld2VyXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2ZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgQXV0aFNlcnZpY2UsIEZvbnRBd2VTb21lU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBaQ29tcG9uZW50SGVscGVyIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG4gXHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenJlcG9ydFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4venJlcG9ydC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96cmVwb3J0LmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWnJlcG9ydENvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgncmVwb3J0Vmlld2VyMScsIHsgc3RhdGljOiBmYWxzZSB9KSB2aWV3ZXI6IFRlbGVyaWtSZXBvcnRWaWV3ZXJDb21wb25lbnQ7XHJcblxyXG4gIHB1YmxpYyBvbkV4cG9ydEJlZ2luOiBGdW5jdGlvbjtcclxuICBwdWJsaWMgb25FeHBvcnRFbmQ6IEZ1bmN0aW9uO1xyXG4gIHB1YmxpYyBvblJlbmRlcmluZ0JlZ2luOiBGdW5jdGlvbjtcclxuICBwdWJsaWMgb25SZW5kZXJpbmdFbmQ6IEZ1bmN0aW9uO1xyXG4gIHB1YmxpYyBvblByaW50QmVnaW46IEZ1bmN0aW9uO1xyXG4gIHB1YmxpYyBvblByaW50RW5kOiBGdW5jdGlvbjtcclxuXHJcbiAgcHJpdmF0ZSBhbGxvd1ByaW50UERGOiBib29sZWFuID0gdHJ1ZTtcclxuICAgXHJcbiAgcHVibGljIHNlcnZpY2VVcmwgPSBudWxsO1xyXG4gIHB1YmxpYyByZXBvcnRTb3VyY2UgPSBudWxsOyBcclxuICBwdWJsaWMgdmlld2VyQ29udGFpbmVyU3R5bGUgPSB7XHJcbiAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxyXG4gICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgaGVpZ2h0OiBcIjgwMHB4XCIsXHJcbiAgICBmb250RmFtaWx5OiAnQXJpYWwsIHNhbnMtc2VyaWYnLFxyXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2Y5ZjlmOScsXHJcbiAgICBib3hTaGFkb3c6ICcwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpJyxcclxuICAgIGZvbnRTaXplOiAnMTZweCcsXHJcbiAgICBsaW5lSGVpZ2h0OiAnMS41JyxcclxuICAgIGNvbG9yOiAnIzMzMycsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZm9udEF3ZVNvbWVTZXJ2aWNlOiBGb250QXdlU29tZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vbkV4cG9ydEJlZ2luID0gdGhpcy5leHBvcnRCZWdpbi5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy5vbkV4cG9ydEVuZCA9IHRoaXMuZXhwb3J0RW5kLmJpbmQodGhpcyk7XHJcbiAgICB0aGlzLm9uUmVuZGVyaW5nQmVnaW4gPSB0aGlzLnJlbmRlcmluZ0JlZ2luLmJpbmQodGhpcyk7XHJcbiAgICB0aGlzLm9uUmVuZGVyaW5nRW5kID0gdGhpcy5yZW5kZXJpbmdFbmQuYmluZCh0aGlzKTtcclxuICAgIHRoaXMub25QcmludEJlZ2luID0gdGhpcy5wcmludEJlZ2luLmJpbmQodGhpcyk7XHJcbiAgICB0aGlzLm9uUHJpbnRFbmQgPSB0aGlzLnByaW50RW5kLmJpbmQodGhpcyk7XHJcblxyXG5cclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNlcnZpY2VVcmwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwodGhpcy5kYXRhLlJlc291cmNlVVJMKTtcclxuICAgICAgaWYgKCF0aGlzLnNlcnZpY2VVcmwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcInJlc291cmNlVVJMIGlzIGVtcHR5LlwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhdGhpcy5kYXRhLklzQXV0b0dlbmVyYXRlUmVwb3J0KSB7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRTb3VyY2UgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLlJlcG9ydFNvdXJjZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlJlcG9ydCByZXNpemVkLlwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblJlYWR5KCkge1xyXG4gICAgY29uc29sZS5sb2coXCJSZXBvcnQgcmVhZHkuXCIpO1xyXG4gICAgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9oaXN0b3J5QmFjayddXCIpLnBhcmVudCgpLmhpZGUoKTtcclxuICAgICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfaGlzdG9yeUZvcndhcmQnXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgICAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3N0b3BSZW5kZXJpbmcnXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfcmVmcmVzaCddXCIpLnBhcmVudCgpLmhpZGUoKTtcclxuICAgIC8vJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9nb1RvRmlyc3RQYWdlJ11cIikucGFyZW50KCkuaGlkZSgpOyBcclxuICAgIC8vJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9nb1RvUHJldlBhZ2UnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IFxyXG4gICAgLy8kKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX2dvVG9OZXh0UGFnZSddXCIpLnBhcmVudCgpLmhpZGUoKTsgXHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfZ29Ub0xhc3RQYWdlJ11cIikucGFyZW50KCkuaGlkZSgpOyBcclxuICAgIC8vJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl90b2dnbGVQcmludFByZXZpZXcnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IFxyXG4gICAgLy8kKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX2V4cG9ydCddXCIpLnBhcmVudCgpLmhpZGUoKTsgXHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfcHJpbnQnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IFxyXG4gICAgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl90b2dnbGVEb2N1bWVudE1hcCddXCIpLnBhcmVudCgpLmhpZGUoKTtcclxuICAgICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfdG9nZ2xlUGFyYW1ldGVyc0FyZWEnXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgICAvLyQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfem9vbUluJ11cIikucGFyZW50KCkuaGlkZSgpOyBcclxuICAgIC8vJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl96b29tT3V0J11cIikucGFyZW50KCkuaGlkZSgpOyBcclxuICAgIC8vJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl90b2dnbGVab29tTW9kZSddXCIpLnBhcmVudCgpLmhpZGUoKTsgXHJcbiAgICAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3RvZ2dsZVNlYXJjaERpYWxvZyddXCIpLnBhcmVudCgpLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBvcnRCZWdpbihlOiBhbnksIGFyZ3M6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJFeHBvcnQgYmVnaW4uXCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cG9ydEVuZChlOiBhbnksIGFyZ3M6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJFeHBvcnQgZW5kLlwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW5kZXJpbmdCZWdpbihlOiBhbnksIGFyZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJSZW5kZXJpbmcgc3RhcnRlZC5cIik7XHJcbiAgICBpZiAodGhpcy5yZXBvcnRTb3VyY2UucGFyYW1ldGVycyAmJiB0aGlzLnJlcG9ydFNvdXJjZS5wYXJhbWV0ZXJzLkF1dGhvcml6YXRpb24gIT09IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkJlYXJlci5BdXRob3JpemF0aW9uKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIlVwZGF0ZWQgaW52YWxpZCBhdXRob3JpemF0aW9uIHRva2VuLlwiKTtcclxuXHJcbiAgICAgIHRoaXMucmVwb3J0U291cmNlLnBhcmFtZXRlcnMuQXV0aG9yaXphdGlvbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkJlYXJlci5BdXRob3JpemF0aW9uO1xyXG4gICAgICB0aGlzLnZpZXdlci5zZXRSZXBvcnRTb3VyY2UodGhpcy5yZXBvcnRTb3VyY2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbmRlcmluZ0VuZChlOiBhbnksIGFyZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJSZW5kZXJpbmcgZW5kZWQuXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUVtcHR5UGRmKCk6IEJsb2Ige1xyXG4gICAgLy8gQ3JlYXRlIGFuIGVtcHR5IFBERiBmaWxlIHdpdGgganVzdCBhIGhlYWRlclxyXG4gICAgY29uc3QgcGRmQ29udGVudCA9ICclUERGLTEuM1xcbjEgMCBvYmpcXG48PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj5cXG5lbmRvYmpcXG4yIDAgb2JqXFxuPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFtdIC9Db3VudCAwID4+XFxuZW5kb2JqXFxueHJlZlxcbjAgM1xcbjAwMDAwMDAwMDAgNjU1MzUgZiBcXG4wMDAwMDAwMDEwIDAwMDAwIG4gXFxudHJhaWxlclxcbjw8IC9Sb290IDEgMCBSIC9TaXplIDMgPj5cXG5zdGFydHhyZWZcXG4yMDVcXG4lJUVPRic7XHJcbiAgICByZXR1cm4gbmV3IEJsb2IoW3BkZkNvbnRlbnRdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHByaW50QmVnaW4oZTogYW55LCBhcmdzOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUHJpbnQgYmVnaW4uXCIpO1xyXG5cclxuICAgIGNvbnN0IGFsZXJ0VGl0bGUgPSAnUHJpbnQgUERGIEVycm9yJztcclxuICAgIGNvbnN0IHBkZkJsb2IgPSB0aGlzLmdlbmVyYXRlRW1wdHlQZGYoKTtcclxuICAgIGNvbnN0IHBkZlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwocGRmQmxvYik7IGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcclxuICAgIGxldCBpc0Nocm9tZSA9IGZhbHNlO1xyXG4gICAgbGV0IGlzRWRnZSA9IGZhbHNlO1xyXG5cclxuICAgIGlmICgvRWRnLy50ZXN0KHVzZXJBZ2VudCkpIHtcclxuICAgICAgaXNFZGdlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKC9DaHJvbWUvLnRlc3QodXNlckFnZW50KSkge1xyXG4gICAgICBpc0Nocm9tZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWZyYW1lLnNyYyA9IHBkZlVybDtcclxuICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudERvY3VtZW50IHx8IGlmcmFtZS5jb250ZW50V2luZG93Py5kb2N1bWVudDtcclxuICAgICAgICBjb25zdCBwZGZFbGVtZW50ID0gaWZyYW1lRG9jdW1lbnQucXVlcnlTZWxlY3RvcignZW1iZWRbdHlwZT1cImFwcGxpY2F0aW9uL3BkZlwiXSwgb2JqZWN0W3R5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIl0sIGlmcmFtZScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDaGVja2luZyBicm93c2VyIGlzIHJlcG9ydCBhYmxlIHRvIHByaW50LicsIHBkZkVsZW1lbnQpO1xyXG5cclxuICAgICAgICAvLyBJZiBubyBQREYgZWxlbWVudCBmb3VuZCwgYWxlcnQgdXNlciBhYm91dCBwb3RlbnRpYWwgaXNzdWVcclxuICAgICAgICBpZiAoIXBkZkVsZW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMuYWxsb3dQcmludFBERiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmIChpc0Nocm9tZSkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93T2theShhbGVydFRpdGxlLCBcIlN0ZXAgMTogUGxlYXNlIG5hdmlnYXRlIHRvICdjaHJvbWU6Ly9zZXR0aW5ncy9jb250ZW50L3BkZkRvY3VtZW50cycgaW4gdGhlIGJyb3dlci48YnIvPlN0ZXAgMjogU2VsZWN0ICdPcGVuIFBERnMgaW4gQ2hyb21lJyBpbiB0aGUgc2V0dGluZyBiZWZvcmUgcHJpbnRpbmcgdGhlIHJlcG9ydC5cIiwgW1wiY29sLTZcIl0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoaXNFZGdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dPa2F5KGFsZXJ0VGl0bGUsIFwiU3RlcCAxOiBQbGVhc2UgbmF2aWdhdGUgdG8gJ2VkZ2U6Ly9zZXR0aW5ncy9jb250ZW50L3BkZkRvY3VtZW50cycgaW4gdGhlIGJyb3dlci48YnIvPlN0ZXAgMjogRW5hYmxlICdQREYgdmlldyBzZXR0aW5ncycgYW5kIERpc2FibGUgJ0Fsd2F5cyBEb3dubG9hZCBQREYgZmlsZXMnIGluIHRoZSBzZXR0aW5nIGJlZm9yZSBwcmludGluZyB0aGUgcmVwb3J0LlwiLCBbXCJjb2wtNlwiXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd09rYXkoYWxlcnRUaXRsZSwgXCJUaGUgYnJvd3NlciBzZXR0aW5ncyBjYW5ub3QgYmUgZGV0ZWN0ZWQsIHBsZWFzZSByZWFjaCBvdXQgdG8gc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgW1wiY29sLTRcIl0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWxsb3dQcmludFBERiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIC8vIElmIGFjY2Vzc2luZyBpZnJhbWUgY29udGVudCB0aHJvd3MgYW4gZXJyb3IsIGFsZXJ0IHVzZXIgYWJvdXQgcG90ZW50aWFsIGlzc3VlXHJcbiAgICAgICAgdGhpcy5hbGxvd1ByaW50UERGID0gZmFsc2U7XHJcbiAgICAgICAgLy8gUERGIGZhaWxlZCB0byBsb2FkIG9yIGRpc3BsYXkgcHJvcGVybHlcclxuICAgICAgICBjb25zb2xlLmxvZygnUERGIGZhaWxlZCB0byBsb2FkIG9yIGRpc3BsYXkgcHJvcGVybHkgaW4gdGhlIGlmcmFtZS4nKTtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93T2theShhbGVydFRpdGxlLCBcIlRoZSBicm93c2VyIHNldHRpbmdzIGNhbm5vdCBiZSBkZXRlY3RlZCwgcGxlYXNlIHJlYWNoIG91dCB0byBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCBbXCJjb2wtNFwiXSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWZyYW1lLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWxsb3dQcmludFBERiA9IGZhbHNlO1xyXG4gICAgICAvLyBQREYgZmFpbGVkIHRvIGxvYWQgb3IgZGlzcGxheSBwcm9wZXJseVxyXG4gICAgICBjb25zb2xlLmxvZygnUERGIGZhaWxlZCB0byBsb2FkIG9yIGRpc3BsYXkgcHJvcGVybHkgaW4gdGhlIGlmcmFtZS4nKTtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd09rYXkoYWxlcnRUaXRsZSwgXCJUaGUgYnJvd3NlciBzZXR0aW5ncyBjYW5ub3QgYmUgZGV0ZWN0ZWQsIHBsZWFzZSByZWFjaCBvdXQgdG8gc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgW1wiY29sLTRcIl0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmludEVuZChlOiBhbnksIGFyZ3M6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJQcmludCBlbmQuXCIpO1xyXG5cclxuICAgIGlmICghdGhpcy5hbGxvd1ByaW50UERGKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignQnJvd3NlciBpbmNvcnJlY3QgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIHByaW50IHRoZSBQREYuJylcclxuICAgICAgYXJncy5oYW5kbGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZVJlcG9ydCgpIHtcclxuICAgIHRoaXMucmVwb3J0U291cmNlID0gdGhpcy5ncm91cFtcIlJlcG9ydFNvdXJjZVwiXTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXBvcnRTb3VyY2UucGFyYW1ldGVycyAmJiAhdGhpcy5yZXBvcnRTb3VyY2UucGFyYW1ldGVycy5BdXRob3JpemF0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVwb3J0U291cmNlLnBhcmFtZXRlcnMuQXV0aG9yaXphdGlvbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkJlYXJlci5BdXRob3JpemF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlcG9ydFNvdXJjZVsndXJsJ10pIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJsID0gdGhpcy5yZXBvcnRTb3VyY2VbJ3VybCddO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld2VyLnNldFJlcG9ydFNvdXJjZSh0aGlzLnJlcG9ydFNvdXJjZSk7XHJcbiAgICAvL3RoaXMudmlld2VyLnJlZnJlc2hSZXBvcnQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGb250QXdlc29tZShpY29uTmFtZTogc3RyaW5nLCBmb250QXdlU29tZVNlcnZpY2U/OiBGb250QXdlU29tZVNlcnZpY2UpIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldEZvbnRBd2Vzb21lKGljb25OYW1lLCBmb250QXdlU29tZVNlcnZpY2UpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjgwMHB4XCI+IFxyXG4gIDx0ci12aWV3ZXIgI3JlcG9ydFZpZXdlcjFcclxuICAgICAgICAgICAgIFtjb250YWluZXJTdHlsZV09XCJ2aWV3ZXJDb250YWluZXJTdHlsZVwiXHJcbiAgICAgICAgICAgICBbc2VydmljZVVybF09XCJzZXJ2aWNlVXJsXCJcclxuICAgICAgICAgICAgIFtyZXBvcnRTb3VyY2VdPVwicmVwb3J0U291cmNlXCJcclxuICAgICAgICAgICAgIFt2aWV3TW9kZV09XCInSU5URVJBQ1RJVkUnXCJcclxuICAgICAgICAgICAgIFtzY2FsZU1vZGVdPVwiJ1NQRUNJRklDJ1wiXHJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiMS4wXCJcclxuICAgICAgICAgICAgIFtlbmFibGVBY2Nlc3NpYmlsaXR5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgIFtyZWFkeV09XCJvblJlYWR5XCIgXHJcbiAgICAgICAgICAgICBbZXhwb3J0QmVnaW5dPVwib25FeHBvcnRCZWdpblwiXHJcbiAgICAgICAgICAgICBbZXhwb3J0RW5kXT1cIm9uRXhwb3J0RW5kXCJcclxuICAgICAgICAgICAgIFtyZW5kZXJpbmdCZWdpbl09XCJvblJlbmRlcmluZ0JlZ2luXCJcclxuICAgICAgICAgICAgIFtyZW5kZXJpbmdFbmRdPVwib25SZW5kZXJpbmdFbmRcIlxyXG4gICAgICAgICAgICAgW3ByaW50QmVnaW5dPVwib25QcmludEJlZ2luXCJcclxuICAgICAgICAgICAgIFtwcmludEVuZF09XCJvblByaW50RW5kXCI+XHJcbiAgPC90ci12aWV3ZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -14,10 +14,12 @@ export class ZtextComponent extends InputFieldBase {
14
14
  constructor(componentService) {
15
15
  super(componentService);
16
16
  this.componentService = componentService;
17
+ this.isPasswordField = false;
17
18
  }
18
19
  ngOnInit() {
19
20
  super.setupInnerField();
20
21
  this.adornmentList = this.data.AdornmentList;
22
+ this.isPasswordField = this.data.Type === 'zpassword'; //ComponentType.zPassword;
21
23
  if (this.data.OnClick && !this.data.ReadOnly) {
22
24
  this.componentProperties.isReadOnly = true;
23
25
  }
@@ -28,6 +30,10 @@ export class ZtextComponent extends InputFieldBase {
28
30
  super.focusOnDefault(this.focus.bind(this));
29
31
  }
30
32
  ngAfterViewInit() {
33
+ if (this.data.Type === 'zpassword') { //ComponentType.zPassword) {
34
+ this.textbox.input.nativeElement.type = 'password';
35
+ this.textbox.input.nativeElement.autocomplete = 'off';
36
+ }
31
37
  this.componentService.decrementComponentCounterForField(this.data);
32
38
  }
33
39
  setupClickableIconList() {
@@ -63,7 +69,7 @@ export class ZtextComponent extends InputFieldBase {
63
69
  return "number";
64
70
  case "email":
65
71
  return "email";
66
- case "password":
72
+ case "zpassword":
67
73
  return "password";
68
74
  case "search":
69
75
  return "search";
@@ -91,7 +97,7 @@ export class ZtextComponent extends InputFieldBase {
91
97
  return "decimal";
92
98
  case "email":
93
99
  return "email";
94
- case "password":
100
+ case "zpassword":
95
101
  return "text";
96
102
  case "search":
97
103
  return "search";
@@ -129,6 +135,15 @@ export class ZtextComponent extends InputFieldBase {
129
135
  });
130
136
  }
131
137
  }
138
+ togglePasswordVisibility() {
139
+ const inputEl = this.textbox.input.nativeElement;
140
+ if (inputEl.type === "password") {
141
+ inputEl.type = "text";
142
+ }
143
+ else {
144
+ inputEl.type = "password";
145
+ }
146
+ }
132
147
  readOnlyOnClear() {
133
148
  ZComponentHelper.setModelValue(this.data.Value, null, this.group);
134
149
  }
@@ -141,12 +156,12 @@ export class ZtextComponent extends InputFieldBase {
141
156
  }
142
157
  }
143
158
  ZtextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZtextComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
144
- ZtextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZtextComponent, selector: "app-ztext", viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textbox"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"ztext-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <!-- Ion Input for Mobile Screen -->\r\n <ion-input *ngIf=\"isMobileScreen()\"\r\n class=\"e1tag-style1\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [inputmode]=\"mapInputMode(data.Type)\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n clearOnEdit\r\n (click)=\"onClick($event)\"\r\n (ionChange)=\"onChange($event, $event.target.value)\">\r\n </ion-input>\r\n\r\n <!-- Kendo TextBox for Non-Mobile Screen -->\r\n <kendo-textbox *ngIf=\"!isMobileScreen()\"\r\n #textbox\r\n class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n (click)=\"onClick($event, $event.target.value)\"\r\n (input)=\"onChange($event, $event.target.value)\">\r\n\r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"adornmentList\">\r\n <button kendoButton\r\n *ngIf=\"data.OnClick\"\r\n class=\"textbox-clearbutton e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\"\r\n [look]=\"'clear'\"\r\n [icon]=\"'close-circle'\"\r\n (click)=\"readOnlyOnClear()\"></button>\r\n\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\" class=\"textbox-separator e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-textbox-separator>\r\n <button kendoButton\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n </kendo-textbox>\r\n</div>\r\n", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divtextbox{justify-content:space-between;width:99%}.k-textbox{color:var(--z-text-color)}.textbox-separator{margin-top:0}.textbox-clearbutton{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;outline:0;cursor:pointer;opacity:.5}.textbox-clearbutton:hover{opacity:100!important}.icon-button{text-align:center;padding-top:10px}.adornments-icon-mobile{margin-bottom:0;margin-left:5px;width:28px;height:28px}\n"], components: [{ type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i3.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "errorIcon", "clearButtonIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i3.InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator" }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i3.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]" }, { type: i6.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
159
+ ZtextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZtextComponent, selector: "app-ztext", viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textbox"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"ztext-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <!-- Ion Input for Mobile Screen -->\r\n <ion-input *ngIf=\"isMobileScreen()\"\r\n class=\"e1tag-style1\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [inputmode]=\"mapInputMode(data.Type)\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n clearOnEdit\r\n (click)=\"onClick($event)\"\r\n (ionChange)=\"onChange($event, $event.target.value)\">\r\n </ion-input>\r\n\r\n <!-- Kendo TextBox for Non-Mobile Screen -->\r\n <kendo-textbox *ngIf=\"!isMobileScreen()\"\r\n #textbox\r\n class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n (click)=\"onClick($event, $event.target.value)\"\r\n (input)=\"onChange($event, $event.target.value)\"> \r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"adornmentList\">\r\n <button kendoButton\r\n *ngIf=\"data.OnClick\"\r\n class=\"textbox-clearbutton e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\"\r\n [look]=\"'clear'\"\r\n [icon]=\"'close-circle'\"\r\n (click)=\"readOnlyOnClear()\"></button>\r\n\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\" class=\"textbox-separator e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-textbox-separator>\r\n <button kendoButton\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"isPasswordField\">\r\n <button kendoButton\r\n [look]=\"'clear'\"\r\n [icon]=\"'eye'\"\r\n (click)=\"togglePasswordVisibility()\"></button> \r\n </ng-template>\r\n </kendo-textbox>\r\n</div>\r\n", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divtextbox{justify-content:space-between;width:99%}.k-textbox{color:var(--z-text-color)}.textbox-separator{margin-top:0}.textbox-clearbutton{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;outline:0;cursor:pointer;opacity:.5}.textbox-clearbutton:hover{opacity:100!important}.icon-button{text-align:center;padding-top:10px}.adornments-icon-mobile{margin-bottom:0;margin-left:5px;width:28px;height:28px}\n"], components: [{ type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i3.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "errorIcon", "clearButtonIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i3.InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator" }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i3.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]" }, { type: i6.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
145
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZtextComponent, decorators: [{
146
161
  type: Component,
147
- args: [{ selector: "app-ztext", template: "<div [formGroup]=\"form\" class=\"ztext-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <!-- Ion Input for Mobile Screen -->\r\n <ion-input *ngIf=\"isMobileScreen()\"\r\n class=\"e1tag-style1\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [inputmode]=\"mapInputMode(data.Type)\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n clearOnEdit\r\n (click)=\"onClick($event)\"\r\n (ionChange)=\"onChange($event, $event.target.value)\">\r\n </ion-input>\r\n\r\n <!-- Kendo TextBox for Non-Mobile Screen -->\r\n <kendo-textbox *ngIf=\"!isMobileScreen()\"\r\n #textbox\r\n class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n (click)=\"onClick($event, $event.target.value)\"\r\n (input)=\"onChange($event, $event.target.value)\">\r\n\r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"adornmentList\">\r\n <button kendoButton\r\n *ngIf=\"data.OnClick\"\r\n class=\"textbox-clearbutton e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\"\r\n [look]=\"'clear'\"\r\n [icon]=\"'close-circle'\"\r\n (click)=\"readOnlyOnClear()\"></button>\r\n\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\" class=\"textbox-separator e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-textbox-separator>\r\n <button kendoButton\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n </kendo-textbox>\r\n</div>\r\n", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divtextbox{justify-content:space-between;width:99%}.k-textbox{color:var(--z-text-color)}.textbox-separator{margin-top:0}.textbox-clearbutton{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;outline:0;cursor:pointer;opacity:.5}.textbox-clearbutton:hover{opacity:100!important}.icon-button{text-align:center;padding-top:10px}.adornments-icon-mobile{margin-bottom:0;margin-left:5px;width:28px;height:28px}\n"] }]
162
+ args: [{ selector: "app-ztext", template: "<div [formGroup]=\"form\" class=\"ztext-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <!-- Ion Input for Mobile Screen -->\r\n <ion-input *ngIf=\"isMobileScreen()\"\r\n class=\"e1tag-style1\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [inputmode]=\"mapInputMode(data.Type)\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n clearOnEdit\r\n (click)=\"onClick($event)\"\r\n (ionChange)=\"onChange($event, $event.target.value)\">\r\n </ion-input>\r\n\r\n <!-- Kendo TextBox for Non-Mobile Screen -->\r\n <kendo-textbox *ngIf=\"!isMobileScreen()\"\r\n #textbox\r\n class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n (click)=\"onClick($event, $event.target.value)\"\r\n (input)=\"onChange($event, $event.target.value)\"> \r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"adornmentList\">\r\n <button kendoButton\r\n *ngIf=\"data.OnClick\"\r\n class=\"textbox-clearbutton e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\"\r\n [look]=\"'clear'\"\r\n [icon]=\"'close-circle'\"\r\n (click)=\"readOnlyOnClear()\"></button>\r\n\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\" class=\"textbox-separator e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-textbox-separator>\r\n <button kendoButton\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"isPasswordField\">\r\n <button kendoButton\r\n [look]=\"'clear'\"\r\n [icon]=\"'eye'\"\r\n (click)=\"togglePasswordVisibility()\"></button> \r\n </ng-template>\r\n </kendo-textbox>\r\n</div>\r\n", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divtextbox{justify-content:space-between;width:99%}.k-textbox{color:var(--z-text-color)}.textbox-separator{margin-top:0}.textbox-clearbutton{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;outline:0;cursor:pointer;opacity:.5}.textbox-clearbutton:hover{opacity:100!important}.icon-button{text-align:center;padding-top:10px}.adornments-icon-mobile{margin-bottom:0;margin-left:5px;width:28px;height:28px}\n"] }]
148
163
  }], ctorParameters: function () { return [{ type: i1.ZComponentService }]; }, propDecorators: { textbox: [{
149
164
  type: ViewChild,
150
165
  args: ["textbox"]
151
166
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHQvenRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHQvenRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzdELDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUFjLGdCQUFnQixFQUE4RCxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQVMzSCxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFPaEQsWUFDUyxnQkFBbUM7UUFFMUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtJQUc1QyxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRTdDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDOUM7UUFFRCxJQUFJLENB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aUM7SUFDMUIsMkJBQTJCLENBQUMsU0FBOEI7UUFDL0QsSUFBSSxTQUFTLENBQUMsZUFBZSxFQUFFO1lBQzdCLE9BQU8sU0FBUyxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUM7U0FDakQ7UUFFRCxPQUFPLHdCQUF3QixDQUFDO0lBQ2xDLENBQUM7SUFFTSxhQUFhLENBQUMsU0FBOEI7UUFDakQsSUFBSSxTQUFTLENBQUMsYUFBYSxFQUFFO1lBQzNCLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUNoQztRQUVELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxTQUE4QjtRQUNwRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN0QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixNQUFNLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQ3pCLElBQUksRUFBRSxTQUFTO2FBQ1MsQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVNLGVBQWU7UUFDcEIsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzsyR0F0SlUsY0FBYzsrRkFBZCxjQUFjLDRLQ3BCM0IsMm1HQXlEQTsyRkRyQ2EsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXO3dHQU1DLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFRleHRCb3hDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItaW5wdXRzXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IElucHV0RmllbGRCYXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvaW5wdXRmaWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIENsaWNrYWJsZUljb25zLCBBZG9ybm1lbnRQcm9wZXJ0aWVzIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenRleHRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3p0ZXh0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3p0ZXh0LmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWnRleHRDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcInRleHRib3hcIikgdGV4dGJveDogVGV4dEJveENvbXBvbmVudDtcclxuXHJcbiAgcHVibGljIGljb25MaXN0OiBDbGlja2FibGVJY29uc1tdO1xyXG4gIHB1YmxpYyBhZG9ybm1lbnRMaXN0OiBhbnlbXTtcclxuICBwdWJsaWMgc2hvd0NsZWFyQnV0dG9uOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuc2V0dXBJbm5lckZpZWxkKCk7XHJcbiAgICB0aGlzLmFkb3JubWVudExpc3QgPSB0aGlzLmRhdGEuQWRvcm5tZW50TGlzdDtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLk9uQ2xpY2sgJiYgIXRoaXMuZGF0YS5SZWFkT25seSkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSkge1xyXG4gICAgICB0aGlzLnNob3dDbGVhckJ1dHRvbiA9IHRoaXMuZGF0YS5DbGVhckJ1dHRvbjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldHVwQ2xpY2thYmxlSWNvbkxpc3QoKTtcclxuICAgIHN1cGVyLmZvY3VzT25EZWZhdWx0KHRoaXMuZm9jdXMuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ2xpY2thYmxlSWNvbkxpc3QoKSB7XHJcbiAgICB0aGlzLmljb25MaXN0ID0gdGhpcy5kYXRhLkNsaWNrYWJsZUljb25zO1xyXG4gICAgaWYgKHRoaXMuaWNvbkxpc3QpIHtcclxuICAgICAgaWYgKHRoaXMuaWNvbkxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuaWNvbkxpc3QuZm9yRWFjaCgoaTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaS5Ub29sdGlwID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaS5Ub29sdGlwID0gXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChpLlRvb2x0aXAuaW5kZXhPZihcImdyb3VwLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICBpLlRvb2x0aXAgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgaS5Ub29sdGlwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gRGVmYXVsdCBwb3NpdGlvbiB0b3AuIHJpZ2h0IHwgYm90dG9tIHwgdG9wIHwgbGVmdFxyXG4gICAgICAgICAgaWYgKGkuUG9zaXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpLlBvc2l0aW9uID0gXCJ0b3BcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFwSW5wdXRUeXBlKGZpZWxkVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkYXRlXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZGF0ZVwiO1xyXG4gICAgICBjYXNlIFwienRleHRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICByZXR1cm4gXCJudW1iZXJcIjtcclxuICAgICAgY2FzZSBcImN1cnJlbmN5XCI6XHJcbiAgICAgICAgcmV0dXJuIFwibnVtYmVyXCI7XHJcbiAgICAgIGNhc2UgXCJlbWFpbFwiOlxyXG4gICAgICAgIHJldHVybiBcImVtYWlsXCI7XHJcbiAgICAgIGNhc2UgXCJwYXNzd29yZFwiOlxyXG4gICAgICAgIHJldHVybiBcInBhc3N3b3JkXCI7XHJcbiAgICAgIGNhc2UgXCJzZWFyY2hcIjpcclxuICAgICAgICByZXR1cm4gXCJzZWFyY2hcIjtcclxuICAgICAgY2FzZSBcInRlbFwiOlxyXG4gICAgICAgIHJldHVybiBcInRlbFwiO1xyXG4gICAgICBjYXNlIFwidGV4dFwiOlxyXG4gICAgICAgIHJldHVybiBcInRleHRcIjtcclxuICAgICAgY2FzZSBcInRpbWVcIjpcclxuICAgICAgICByZXR1cm4gXCJ0aW1lXCI7XHJcbiAgICAgIGNhc2UgXCJ1cmxcIjpcclxuICAgICAgICByZXR1cm4gXCJ1cmxcIjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYXBJbnB1dE1vZGUoZmllbGRUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChmaWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBcImRhdGVcIjpcclxuICAgICAgICByZXR1cm4gXCJub25lXCI7XHJcbiAgICAgIGNhc2UgXCJ6dGV4dFwiOlxyXG4gICAgICAgIHJldHVybiBcInRleHRcIjtcclxuICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgIHJldHVybiBcImRlY2ltYWxcIjtcclxuICAgICAgY2FzZSBcImN1cnJlbmN5XCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZGVjaW1hbFwiO1xyXG4gICAgICBjYXNlIFwiZW1haWxcIjpcclxuICAgICAgICByZXR1cm4gXCJlbWFpbFwiO1xyXG4gICAgICBjYXNlIFwicGFzc3dvcmRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJzZWFyY2hcIjpcclxuICAgICAgICByZXR1cm4gXCJzZWFyY2hcIjtcclxuICAgICAgY2FzZSBcInRlbFwiOlxyXG4gICAgICAgIHJldHVybiBcInRlbFwiO1xyXG4gICAgICBjYXNlIFwidGV4dFwiOlxyXG4gICAgICAgIHJldHVybiBcInRleHRcIjtcclxuICAgICAgY2FzZSBcInRpbWVcIjpcclxuICAgICAgICByZXR1cm4gXCJub25lXCI7XHJcbiAgICAgIGNhc2UgXCJ1cmxcIjpcclxuICAgICAgICByZXR1cm4gXCJ1cmxcIjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqKioqKioqKiogQWRvcm5tZW50ICoqKioqKioqKiovXHJcbiAgcHVibGljIGdldEFkb3JubWVudEJhY2tncm91bmRDb2xvcihhZG9ybm1lbnQ6IEFkb3JubWVudFByb3BlcnRpZXMpIHtcclxuICAgIGlmIChhZG9ybm1lbnQuQmFja2dyb3VuZENvbG9yKSB7XHJcbiAgICAgIHJldHVybiBhZG9ybm1lbnQuQmFja2dyb3VuZENvbG9yICsgXCIhaW1wb3J0YW50XCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwidHJhbnNwYXJlbnQgIWltcG9ydGFudFwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkb3JubWVudExvb2soYWRvcm5tZW50OiBBZG9ybm1lbnRQcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAoYWRvcm5tZW50LkFkb3JubWVudExvb2spIHtcclxuICAgICAgcmV0dXJuIGFkb3JubWVudC5BZG9ybm1lbnRMb29rO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnY2xlYXInXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25BZG9ybm1lbnRDbGljayhhZG9ybm1lbnQ6IEFkb3JubWVudFByb3BlcnRpZXMpIHtcclxuICAgIGlmIChhZG9ybm1lbnQuT25DbGljaykge1xyXG4gICAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgdHlwZTogJ3p0ZXh0LWFkb3JubWVudCcsXHJcbiAgICAgICAgdGFyZ2V0OiBhZG9ybm1lbnQuT25DbGljayxcclxuICAgICAgICBkYXRhOiBhZG9ybm1lbnRcclxuICAgICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlYWRPbmx5T25DbGVhcigpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0TW9kZWxWYWx1ZSh0aGlzLmRhdGEuVmFsdWUsIG51bGwsIHRoaXMuZ3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMudGV4dGJveCkge1xyXG4gICAgICB0aGlzLnRleHRib3guZm9jdXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ6dGV4dC1jb250YWluZXIgZTF0YWctc3R5bGVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiPlxyXG4gIDwhLS0gSW9uIElucHV0IGZvciBNb2JpbGUgU2NyZWVuIC0tPlxyXG4gIDxpb24taW5wdXQgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwiZTF0YWctc3R5bGUxXCJcclxuICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgW2lkXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgW2lucHV0bW9kZV09XCJtYXBJbnB1dE1vZGUoZGF0YS5UeXBlKVwiXHJcbiAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cImRhdGEuTWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgIFttaW5sZW5ndGhdPVwiZGF0YS5NaW5MZW5ndGhcIlxyXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCJcclxuICAgICAgICAgICAgIFt0eXBlXT1cIm1hcElucHV0VHlwZShkYXRhLlR5cGUpXCJcclxuICAgICAgICAgICAgIGNsZWFyT25FZGl0XHJcbiAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxyXG4gIDwvaW9uLWlucHV0PlxyXG5cclxuICA8IS0tIEtlbmRvIFRleHRCb3ggZm9yIE5vbi1Nb2JpbGUgU2NyZWVuIC0tPlxyXG4gIDxrZW5kby10ZXh0Ym94ICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKClcIlxyXG4gICAgICAgICAgICAgICAgICN0ZXh0Ym94XHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgW2lkXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiZGF0YS5NYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgIFttaW5sZW5ndGhdPVwiZGF0YS5NaW5MZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgIFt0eXBlXT1cIm1hcElucHV0VHlwZShkYXRhLlR5cGUpXCJcclxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQsICRldmVudC50YXJnZXQudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2UoJGV2ZW50LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1RleHRCb3hTdWZmaXhUZW1wbGF0ZSAqbmdJZj1cImFkb3JubWVudExpc3RcIj5cclxuICAgICAgPGJ1dHRvbiBrZW5kb0J1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5PbkNsaWNrXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInRleHRib3gtY2xlYXJidXR0b24gZTF0YWctc3R5bGUyXCJcclxuICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIlxyXG4gICAgICAgICAgICAgIFtsb29rXT1cIidjbGVhcidcIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cIidjbG9zZS1jaXJjbGUnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVhZE9ubHlPbkNsZWFyKClcIj48L2J1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gRm9yIEFkb3JubWVudHMgZmVhdHVyZSAtLT5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYWRvcm5tZW50IG9mIGFkb3JubWVudExpc3RcIiBjbGFzcz1cImUxdGFnLXN0eWxlM1wiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiPlxyXG4gICAgICAgIDxrZW5kby10ZXh0Ym94LXNlcGFyYXRvciAqbmdJZj1cIiFhZG9ybm1lbnQuSGlkZVNlcGVyYXRvclwiIGNsYXNzPVwidGV4dGJveC1zZXBhcmF0b3IgZTF0YWctc3R5bGU0XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCI+PC9rZW5kby10ZXh0Ym94LXNlcGFyYXRvcj5cclxuICAgICAgICA8YnV0dG9uIGtlbmRvQnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbbG9va109XCJhZG9ybm1lbnRMb29rKGFkb3JubWVudClcIlxyXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiYWRvcm5tZW50Lkljb25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRvcm5tZW50Q2xpY2soYWRvcm5tZW50KVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlNVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QWRvcm5tZW50QmFja2dyb3VuZENvbG9yKGFkb3JubWVudClcIj48L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tdGV4dGJveD5cclxuPC9kaXY+XHJcbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHQvenRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHQvenRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzdELDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUFjLGdCQUFnQixFQUE2RSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQVMxSSxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFRaEQsWUFDUyxnQkFBbUM7UUFFMUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUhyQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztJQU14QyxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUEsMEJBQTBCO1FBRWhGLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxJ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QyxJQUFJLEdBQUcsTUFBTSxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFTSxlQUFlO1FBQ3BCLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7MkdBdktVLGNBQWM7K0ZBQWQsY0FBYyw0S0NwQjNCLDgyR0E4REE7MkZEMUNhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVzt3R0FNQyxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWlucHV0c1wiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LCBDbGlja2FibGVJY29ucywgQWRvcm5tZW50UHJvcGVydGllcywgQ29tcG9uZW50VHlwZSB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXp0ZXh0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96dGV4dC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96dGV4dC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFp0ZXh0Q29tcG9uZW50IGV4dGVuZHMgSW5wdXRGaWVsZEJhc2UgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoXCJ0ZXh0Ym94XCIpIHRleHRib3g6IFRleHRCb3hDb21wb25lbnQ7XHJcblxyXG4gIHB1YmxpYyBpY29uTGlzdDogQ2xpY2thYmxlSWNvbnNbXTtcclxuICBwdWJsaWMgYWRvcm5tZW50TGlzdDogYW55W107XHJcbiAgcHVibGljIHNob3dDbGVhckJ1dHRvbjogYW55O1xyXG4gIHB1YmxpYyBpc1Bhc3N3b3JkRmllbGQ6IGJvb2xlYW4gPSBmYWxzZTsgXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuc2V0dXBJbm5lckZpZWxkKCk7XHJcbiAgICB0aGlzLmFkb3JubWVudExpc3QgPSB0aGlzLmRhdGEuQWRvcm5tZW50TGlzdDtcclxuICAgIHRoaXMuaXNQYXNzd29yZEZpZWxkID0gdGhpcy5kYXRhLlR5cGUgPT09ICd6cGFzc3dvcmQnOy8vQ29tcG9uZW50VHlwZS56UGFzc3dvcmQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5PbkNsaWNrICYmICF0aGlzLmRhdGEuUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5zaG93Q2xlYXJCdXR0b24gPSB0aGlzLmRhdGEuQ2xlYXJCdXR0b247XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXR1cENsaWNrYWJsZUljb25MaXN0KCk7XHJcbiAgICBzdXBlci5mb2N1c09uRGVmYXVsdCh0aGlzLmZvY3VzLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5UeXBlID09PSAnenBhc3N3b3JkJykgeyAvL0NvbXBvbmVudFR5cGUuelBhc3N3b3JkKSB7XHJcbiAgICAgIHRoaXMudGV4dGJveC5pbnB1dC5uYXRpdmVFbGVtZW50LnR5cGUgPSAncGFzc3dvcmQnO1xyXG4gICAgICB0aGlzLnRleHRib3guaW5wdXQubmF0aXZlRWxlbWVudC5hdXRvY29tcGxldGUgPSAnb2ZmJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ2xpY2thYmxlSWNvbkxpc3QoKSB7XHJcbiAgICB0aGlzLmljb25MaXN0ID0gdGhpcy5kYXRhLkNsaWNrYWJsZUljb25zO1xyXG4gICAgaWYgKHRoaXMuaWNvbkxpc3QpIHtcclxuICAgICAgaWYgKHRoaXMuaWNvbkxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuaWNvbkxpc3QuZm9yRWFjaCgoaTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaS5Ub29sdGlwID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaS5Ub29sdGlwID0gXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChpLlRvb2x0aXAuaW5kZXhPZihcImdyb3VwLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICBpLlRvb2x0aXAgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgaS5Ub29sdGlwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gRGVmYXVsdCBwb3NpdGlvbiB0b3AuIHJpZ2h0IHwgYm90dG9tIHwgdG9wIHwgbGVmdFxyXG4gICAgICAgICAgaWYgKGkuUG9zaXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpLlBvc2l0aW9uID0gXCJ0b3BcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFwSW5wdXRUeXBlKGZpZWxkVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkYXRlXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZGF0ZVwiO1xyXG4gICAgICBjYXNlIFwienRleHRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICByZXR1cm4gXCJudW1iZXJcIjtcclxuICAgICAgY2FzZSBcImN1cnJlbmN5XCI6XHJcbiAgICAgICAgcmV0dXJuIFwibnVtYmVyXCI7XHJcbiAgICAgIGNhc2UgXCJlbWFpbFwiOlxyXG4gICAgICAgIHJldHVybiBcImVtYWlsXCI7XHJcbiAgICAgIGNhc2UgXCJ6cGFzc3dvcmRcIjpcclxuICAgICAgICByZXR1cm4gXCJwYXNzd29yZFwiO1xyXG4gICAgICBjYXNlIFwic2VhcmNoXCI6XHJcbiAgICAgICAgcmV0dXJuIFwic2VhcmNoXCI7XHJcbiAgICAgIGNhc2UgXCJ0ZWxcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZWxcIjtcclxuICAgICAgY2FzZSBcInRleHRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJ0aW1lXCI6XHJcbiAgICAgICAgcmV0dXJuIFwidGltZVwiO1xyXG4gICAgICBjYXNlIFwidXJsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwidXJsXCI7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIFwidGV4dFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFwSW5wdXRNb2RlKGZpZWxkVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkYXRlXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibm9uZVwiO1xyXG4gICAgICBjYXNlIFwienRleHRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICByZXR1cm4gXCJkZWNpbWFsXCI7XHJcbiAgICAgIGNhc2UgXCJjdXJyZW5jeVwiOlxyXG4gICAgICAgIHJldHVybiBcImRlY2ltYWxcIjtcclxuICAgICAgY2FzZSBcImVtYWlsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZW1haWxcIjtcclxuICAgICAgY2FzZSBcInpwYXNzd29yZFwiOlxyXG4gICAgICAgIHJldHVybiBcInRleHRcIjtcclxuICAgICAgY2FzZSBcInNlYXJjaFwiOlxyXG4gICAgICAgIHJldHVybiBcInNlYXJjaFwiO1xyXG4gICAgICBjYXNlIFwidGVsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwidGVsXCI7XHJcbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XHJcbiAgICAgICAgcmV0dXJuIFwidGV4dFwiO1xyXG4gICAgICBjYXNlIFwidGltZVwiOlxyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjtcclxuICAgICAgY2FzZSBcInVybFwiOlxyXG4gICAgICAgIHJldHVybiBcInVybFwiO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBcInRleHRcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKioqKioqKioqKiBBZG9ybm1lbnQgKioqKioqKioqKi9cclxuICBwdWJsaWMgZ2V0QWRvcm5tZW50QmFja2dyb3VuZENvbG9yKGFkb3JubWVudDogQWRvcm5tZW50UHJvcGVydGllcykge1xyXG4gICAgaWYgKGFkb3JubWVudC5CYWNrZ3JvdW5kQ29sb3IpIHtcclxuICAgICAgcmV0dXJuIGFkb3JubWVudC5CYWNrZ3JvdW5kQ29sb3IgKyBcIiFpbXBvcnRhbnRcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJ0cmFuc3BhcmVudCAhaW1wb3J0YW50XCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRvcm5tZW50TG9vayhhZG9ybm1lbnQ6IEFkb3JubWVudFByb3BlcnRpZXMpIHtcclxuICAgIGlmIChhZG9ybm1lbnQuQWRvcm5tZW50TG9vaykge1xyXG4gICAgICByZXR1cm4gYWRvcm5tZW50LkFkb3JubWVudExvb2s7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICdjbGVhcidcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkFkb3JubWVudENsaWNrKGFkb3JubWVudDogQWRvcm5tZW50UHJvcGVydGllcykge1xyXG4gICAgaWYgKGFkb3JubWVudC5PbkNsaWNrKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgICAgICB0eXBlOiAnenRleHQtYWRvcm5tZW50JyxcclxuICAgICAgICB0YXJnZXQ6IGFkb3JubWVudC5PbkNsaWNrLFxyXG4gICAgICAgIGRhdGE6IGFkb3JubWVudFxyXG4gICAgICB9IGFzIFpDb21wb25lbnRPdXRwdXRFdmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlUGFzc3dvcmRWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMudGV4dGJveC5pbnB1dC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGlmIChpbnB1dEVsLnR5cGUgPT09IFwicGFzc3dvcmRcIikge1xyXG4gICAgICBpbnB1dEVsLnR5cGUgPSBcInRleHRcIjsgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpbnB1dEVsLnR5cGUgPSBcInBhc3N3b3JkXCI7IFxyXG4gICAgfSBcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWFkT25seU9uQ2xlYXIoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCBudWxsLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLnRleHRib3gpIHtcclxuICAgICAgdGhpcy50ZXh0Ym94LmZvY3VzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwienRleHQtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8IS0tIElvbiBJbnB1dCBmb3IgTW9iaWxlIFNjcmVlbiAtLT5cclxuICA8aW9uLWlucHV0ICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKVwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgIFtpZF09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgIFtpbnB1dG1vZGVdPVwibWFwSW5wdXRNb2RlKGRhdGEuVHlwZSlcIlxyXG4gICAgICAgICAgICAgW21heGxlbmd0aF09XCJkYXRhLk1heExlbmd0aFwiXHJcbiAgICAgICAgICAgICBbbWlubGVuZ3RoXT1cImRhdGEuTWluTGVuZ3RoXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiXHJcbiAgICAgICAgICAgICBbdHlwZV09XCJtYXBJbnB1dFR5cGUoZGF0YS5UeXBlKVwiXHJcbiAgICAgICAgICAgICBjbGVhck9uRWRpdFxyXG4gICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cclxuICA8L2lvbi1pbnB1dD5cclxuXHJcbiAgPCEtLSBLZW5kbyBUZXh0Qm94IGZvciBOb24tTW9iaWxlIFNjcmVlbiAtLT5cclxuICA8a2VuZG8tdGV4dGJveCAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpXCJcclxuICAgICAgICAgICAgICAgICAjdGV4dGJveFxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgIFtpZF09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cImRhdGEuTWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICBbbWlubGVuZ3RoXT1cImRhdGEuTWluTGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICBbdHlwZV09XCJtYXBJbnB1dFR5cGUoZGF0YS5UeXBlKVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlKCRldmVudCwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj4gXHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9UZXh0Qm94U3VmZml4VGVtcGxhdGUgKm5nSWY9XCJhZG9ybm1lbnRMaXN0XCI+XHJcbiAgICAgIDxidXR0b24ga2VuZG9CdXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuT25DbGlja1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0Ym94LWNsZWFyYnV0dG9uIGUxdGFnLXN0eWxlMlwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCJcclxuICAgICAgICAgICAgICBbbG9va109XCInY2xlYXInXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCInY2xvc2UtY2lyY2xlJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlYWRPbmx5T25DbGVhcigpXCI+PC9idXR0b24+XHJcblxyXG4gICAgICA8IS0tIEZvciBBZG9ybm1lbnRzIGZlYXR1cmUgLS0+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFkb3JubWVudCBvZiBhZG9ybm1lbnRMaXN0XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTNcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTNcIj5cclxuICAgICAgICA8a2VuZG8tdGV4dGJveC1zZXBhcmF0b3IgKm5nSWY9XCIhYWRvcm5tZW50LkhpZGVTZXBlcmF0b3JcIiBjbGFzcz1cInRleHRib3gtc2VwYXJhdG9yIGUxdGFnLXN0eWxlNFwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPjwva2VuZG8tdGV4dGJveC1zZXBhcmF0b3I+XHJcbiAgICAgICAgPGJ1dHRvbiBrZW5kb0J1dHRvblxyXG4gICAgICAgICAgICAgICAgW2xvb2tdPVwiYWRvcm5tZW50TG9vayhhZG9ybm1lbnQpXCJcclxuICAgICAgICAgICAgICAgIFtpY29uXT1cImFkb3JubWVudC5JY29uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFkb3JubWVudENsaWNrKGFkb3JubWVudClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlMXRhZy1zdHlsZTVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEFkb3JubWVudEJhY2tncm91bmRDb2xvcihhZG9ybm1lbnQpXCI+PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1RleHRCb3hTdWZmaXhUZW1wbGF0ZSAqbmdJZj1cImlzUGFzc3dvcmRGaWVsZFwiPlxyXG4gICAgICA8YnV0dG9uIGtlbmRvQnV0dG9uXHJcbiAgICAgICAgICAgICAgW2xvb2tdPVwiJ2NsZWFyJ1wiXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwiJ2V5ZSdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoKVwiPjwvYnV0dG9uPiBcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby10ZXh0Ym94PlxyXG48L2Rpdj5cclxuIl19
@@ -9,7 +9,6 @@ import * as i2 from "@ionic/angular";
9
9
  import * as i3 from "@progress/kendo-angular-inputs";
10
10
  import * as i4 from "@angular/forms";
11
11
  import * as i5 from "@angular/common";
12
- import * as i6 from "@angular/flex-layout/extended";
13
12
  export class ZtextareaComponent extends InputFieldBase {
14
13
  constructor(componentService) {
15
14
  super(componentService);
@@ -39,12 +38,12 @@ export class ZtextareaComponent extends InputFieldBase {
39
38
  }
40
39
  }
41
40
  ZtextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZtextareaComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
42
- ZtextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZtextareaComponent, selector: "app-ztextarea", viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"ztextarea-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <ion-textarea *ngIf=\"isMobileScreen()\" [id]=\"data.Value\" [formControlName]=\"data.Value\"\r\n [placeholder]=\"data.PlaceHolder\" [minlength]=\"data.MinLength\" [maxlength]=\"data.MaxLength\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [rows]=\"data.textAreaRows\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\"></ion-textarea>\r\n <kendo-textarea *ngIf=\"!isMobileScreen()\" [id]=\"data.Value\" class=\"input-field e1tag-style1\" [formControlName]=\"data.Value\"\r\n [style.height]=\"data.Height ? data.Height : 'auto'\"\r\n [placeholder]=\"data.PlaceHolder\" [minlength]=\"data.MinLength\" [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [rows]=\"data.textAreaRows\" [autoSize]=\"!data.textAreaRows\" [resizable]=\"data.Resizable || 'none'\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n (valueChange)=\"onChange($event, $event)\" (click)=\"onItemClick($event)\" [style]=\"componentProperties.style.style1\" #textarea>\r\n\r\n <kendo-textarea-suffix *ngIf=\"data.IsShowCharacterCount\" class=\"character-counter-container e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <span class=\"character-counter e1tag-style3\" [style]=\"componentProperties.style.style3\">{{charCounterDisplayStr}}</span>\r\n </kendo-textarea-suffix>\r\n </kendo-textarea>\r\n</div>\r\n", styles: [".gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.character-counter-container{display:flex;justify-content:flex-end;padding:2px 5px;border-top-width:1px;border-top-style:solid;border-color:inherit;font-size:calc(var(--content-font-size) - 1px);color:var(--z-placeholder-color);background:#f0f0f0}\n"], components: [{ type: i2.IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "spellcheck", "value", "wrap"] }, { type: i3.TextAreaComponent, selector: "kendo-textarea", inputs: ["focusableId", "flow", "rows", "cols", "maxlength", "tabindex", "tabIndex", "resizable", "size", "rounded", "fillMode"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoTextArea"] }, { type: i3.TextAreaSuffixComponent, selector: "kendo-textarea-suffix", exportAs: ["kendoTextAreaSuffix"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] });
41
+ ZtextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZtextareaComponent, selector: "app-ztextarea", viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"ztextarea-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <!-- Ion Textarea for Mobile Screen -->\r\n <ion-textarea *ngIf=\"isMobileScreen()\"\r\n class=\"e1tag-style1\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [rows]=\"data.textAreaRows\"\r\n [style]=\"componentProperties.style.style1\">\r\n </ion-textarea>\r\n\r\n <!-- Kendo Textarea for Non-Mobile Screen -->\r\n <kendo-textarea *ngIf=\"!isMobileScreen()\"\r\n #textarea\r\n class=\"input-field e1tag-style1\"\r\n [autoSize]=\"!data.textAreaRows\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [resizable]=\"data.Resizable || 'none'\"\r\n [rows]=\"data.textAreaRows\"\r\n [style.height]=\"data.Height ? data.Height : 'auto'\"\r\n [style]=\"componentProperties.style.style1\"\r\n (click)=\"onItemClick($event)\"\r\n (valueChange)=\"onChange($event, $event)\">\r\n\r\n <kendo-textarea-suffix *ngIf=\"data.IsShowCharacterCount\"\r\n class=\"character-counter-container e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <span class=\"character-counter e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">{{charCounterDisplayStr}}</span>\r\n </kendo-textarea-suffix>\r\n </kendo-textarea>\r\n</div>\r\n", styles: [".gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.character-counter-container{display:flex;justify-content:flex-end;padding:2px 5px;border-top-width:1px;border-top-style:solid;border-color:inherit;font-size:calc(var(--content-font-size) - 1px);color:var(--z-placeholder-color);background:#f0f0f0}\n"], components: [{ type: i2.IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "spellcheck", "value", "wrap"] }, { type: i3.TextAreaComponent, selector: "kendo-textarea", inputs: ["focusableId", "flow", "rows", "cols", "maxlength", "tabindex", "tabIndex", "resizable", "size", "rounded", "fillMode"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoTextArea"] }, { type: i3.TextAreaSuffixComponent, selector: "kendo-textarea-suffix", exportAs: ["kendoTextAreaSuffix"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }] });
43
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZtextareaComponent, decorators: [{
44
43
  type: Component,
45
- args: [{ selector: 'app-ztextarea', template: "<div [formGroup]=\"form\" class=\"ztextarea-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <ion-textarea *ngIf=\"isMobileScreen()\" [id]=\"data.Value\" [formControlName]=\"data.Value\"\r\n [placeholder]=\"data.PlaceHolder\" [minlength]=\"data.MinLength\" [maxlength]=\"data.MaxLength\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [rows]=\"data.textAreaRows\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\"></ion-textarea>\r\n <kendo-textarea *ngIf=\"!isMobileScreen()\" [id]=\"data.Value\" class=\"input-field e1tag-style1\" [formControlName]=\"data.Value\"\r\n [style.height]=\"data.Height ? data.Height : 'auto'\"\r\n [placeholder]=\"data.PlaceHolder\" [minlength]=\"data.MinLength\" [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [rows]=\"data.textAreaRows\" [autoSize]=\"!data.textAreaRows\" [resizable]=\"data.Resizable || 'none'\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n (valueChange)=\"onChange($event, $event)\" (click)=\"onItemClick($event)\" [style]=\"componentProperties.style.style1\" #textarea>\r\n\r\n <kendo-textarea-suffix *ngIf=\"data.IsShowCharacterCount\" class=\"character-counter-container e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <span class=\"character-counter e1tag-style3\" [style]=\"componentProperties.style.style3\">{{charCounterDisplayStr}}</span>\r\n </kendo-textarea-suffix>\r\n </kendo-textarea>\r\n</div>\r\n", styles: [".gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.character-counter-container{display:flex;justify-content:flex-end;padding:2px 5px;border-top-width:1px;border-top-style:solid;border-color:inherit;font-size:calc(var(--content-font-size) - 1px);color:var(--z-placeholder-color);background:#f0f0f0}\n"] }]
44
+ args: [{ selector: 'app-ztextarea', template: "<div [formGroup]=\"form\" class=\"ztextarea-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <!-- Ion Textarea for Mobile Screen -->\r\n <ion-textarea *ngIf=\"isMobileScreen()\"\r\n class=\"e1tag-style1\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [rows]=\"data.textAreaRows\"\r\n [style]=\"componentProperties.style.style1\">\r\n </ion-textarea>\r\n\r\n <!-- Kendo Textarea for Non-Mobile Screen -->\r\n <kendo-textarea *ngIf=\"!isMobileScreen()\"\r\n #textarea\r\n class=\"input-field e1tag-style1\"\r\n [autoSize]=\"!data.textAreaRows\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [resizable]=\"data.Resizable || 'none'\"\r\n [rows]=\"data.textAreaRows\"\r\n [style.height]=\"data.Height ? data.Height : 'auto'\"\r\n [style]=\"componentProperties.style.style1\"\r\n (click)=\"onItemClick($event)\"\r\n (valueChange)=\"onChange($event, $event)\">\r\n\r\n <kendo-textarea-suffix *ngIf=\"data.IsShowCharacterCount\"\r\n class=\"character-counter-container e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <span class=\"character-counter e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">{{charCounterDisplayStr}}</span>\r\n </kendo-textarea-suffix>\r\n </kendo-textarea>\r\n</div>\r\n", styles: [".gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.character-counter-container{display:flex;justify-content:flex-end;padding:2px 5px;border-top-width:1px;border-top-style:solid;border-color:inherit;font-size:calc(var(--content-font-size) - 1px);color:var(--z-placeholder-color);background:#f0f0f0}\n"] }]
46
45
  }], ctorParameters: function () { return [{ type: i1.ZComponentService }]; }, propDecorators: { textarea: [{
47
46
  type: ViewChild,
48
47
  args: ["textarea"]
49
48
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3p0ZXh0YXJlYS96dGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHRhcmVhL3p0ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPN0QsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFTL0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFHcEQsWUFDRSxnQkFBbUM7UUFFbkMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDekIsQ0FBQztJQUlELFFBQVE7UUFDTixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbkgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsY0FBYyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMvRyxDQUFDO0lBRWUsUUFBUSxDQUFDLEtBQVUsRUFBRSxVQUFnQjtRQUNuRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OytHQXJDVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixrTENwQi9CLDYzREFrQkE7MkZERWEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGVBQWU7d0dBTUYsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItaW5wdXRzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5wdXRGaWVsZEJhc2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenRleHRhcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venRleHRhcmVhLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96dGV4dGFyZWEuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBadGV4dGFyZWFDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcInRleHRhcmVhXCIpIHRleHRhcmVhOiBUZXh0QXJlYUNvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFyQ291bnRlckRpc3BsYXlTdHI6IHN0cmluZztcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5zZXR1cElubmVyRmllbGQoKTtcclxuICAgIHRoaXMuc2V0Q2hhckNvdW50ZXJEaXNwbGF5U3RyKCk7XHJcbiAgICBzdXBlci5mb2N1c09uRGVmYXVsdCh0aGlzLmZvY3VzLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDaGFyQ291bnRlckRpc3BsYXlTdHIoKSB7XHJcbiAgICBjb25zdCBjaGFyYWN0ZXJDb3VudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0VmFsdWVXaXRob3V0Q29udGludW91c1NwYWNlcyh0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdKS5sZW5ndGg7XHJcbiAgICB0aGlzLmNoYXJDb3VudGVyRGlzcGxheVN0ciA9IGAke2NoYXJhY3RlckNvdW50fSAke3RoaXMuZGF0YS5NYXhMZW5ndGggPyAoJyAvICcgKyB0aGlzLmRhdGEuTWF4TGVuZ3RoKSA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgb25DaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgc3VwZXIub25DaGFuZ2UoZXZlbnQsIGZpZWxkVmFsdWUpO1xyXG4gICAgdGhpcy5zZXRDaGFyQ291bnRlckRpc3BsYXlTdHIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMudGV4dGFyZWEuZm9jdXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ6dGV4dGFyZWEtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8aW9uLXRleHRhcmVhICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKVwiIFtpZF09XCJkYXRhLlZhbHVlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgW21pbmxlbmd0aF09XCJkYXRhLk1pbkxlbmd0aFwiIFttYXhsZW5ndGhdPVwiZGF0YS5NYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgIFtyb3dzXT1cImRhdGEudGV4dEFyZWFSb3dzXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIj48L2lvbi10ZXh0YXJlYT5cclxuICA8a2VuZG8tdGV4dGFyZWEgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKVwiIFtpZF09XCJkYXRhLlZhbHVlXCIgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImRhdGEuSGVpZ2h0ID8gZGF0YS5IZWlnaHQgOiAnYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFttaW5sZW5ndGhdPVwiZGF0YS5NaW5MZW5ndGhcIiBbbWF4bGVuZ3RoXT1cImRhdGEuTWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyb3dzXT1cImRhdGEudGV4dEFyZWFSb3dzXCIgW2F1dG9TaXplXT1cIiFkYXRhLnRleHRBcmVhUm93c1wiIFtyZXNpemFibGVdPVwiZGF0YS5SZXNpemFibGUgfHwgJ25vbmUnXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCcgOiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSl9XCJcclxuICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgJGV2ZW50KVwiIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgI3RleHRhcmVhPlxyXG5cclxuICAgIDxrZW5kby10ZXh0YXJlYS1zdWZmaXggKm5nSWY9XCJkYXRhLklzU2hvd0NoYXJhY3RlckNvdW50XCIgY2xhc3M9XCJjaGFyYWN0ZXItY291bnRlci1jb250YWluZXIgZTF0YWctc3R5bGUyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY2hhcmFjdGVyLWNvdW50ZXIgZTF0YWctc3R5bGUzXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCI+e3tjaGFyQ291bnRlckRpc3BsYXlTdHJ9fTwvc3Bhbj5cclxuICAgIDwva2VuZG8tdGV4dGFyZWEtc3VmZml4PlxyXG4gIDwva2VuZG8tdGV4dGFyZWE+XHJcbjwvZGl2PlxyXG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3p0ZXh0YXJlYS96dGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHRhcmVhL3p0ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPN0QsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQVMvRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsY0FBYztJQUdwRCxZQUNFLGdCQUFtQztRQUVuQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBSUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNuSCxJQUFJLENBQUMscUJBQXFCLEdBQUcsR0FBRyxjQUFjLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQy9HLENBQUM7SUFFZSxRQUFRLENBQUMsS0FBVSxFQUFFLFVBQWdCO1FBQ25ELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7K0dBckNVLGtCQUFrQjttR0FBbEIsa0JBQWtCLGtMQ3BCL0IsOHNFQXdDQTsyRkRwQmEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGVBQWU7d0dBTUYsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItaW5wdXRzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5wdXRGaWVsZEJhc2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenRleHRhcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venRleHRhcmVhLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96dGV4dGFyZWEuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBadGV4dGFyZWFDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcInRleHRhcmVhXCIpIHRleHRhcmVhOiBUZXh0QXJlYUNvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFyQ291bnRlckRpc3BsYXlTdHI6IHN0cmluZztcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5zZXR1cElubmVyRmllbGQoKTtcclxuICAgIHRoaXMuc2V0Q2hhckNvdW50ZXJEaXNwbGF5U3RyKCk7XHJcbiAgICBzdXBlci5mb2N1c09uRGVmYXVsdCh0aGlzLmZvY3VzLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDaGFyQ291bnRlckRpc3BsYXlTdHIoKSB7XHJcbiAgICBjb25zdCBjaGFyYWN0ZXJDb3VudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0VmFsdWVXaXRob3V0Q29udGludW91c1NwYWNlcyh0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdKS5sZW5ndGg7XHJcbiAgICB0aGlzLmNoYXJDb3VudGVyRGlzcGxheVN0ciA9IGAke2NoYXJhY3RlckNvdW50fSAke3RoaXMuZGF0YS5NYXhMZW5ndGggPyAoJyAvICcgKyB0aGlzLmRhdGEuTWF4TGVuZ3RoKSA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgb25DaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgc3VwZXIub25DaGFuZ2UoZXZlbnQsIGZpZWxkVmFsdWUpO1xyXG4gICAgdGhpcy5zZXRDaGFyQ291bnRlckRpc3BsYXlTdHIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMudGV4dGFyZWEuZm9jdXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ6dGV4dGFyZWEtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8IS0tIElvbiBUZXh0YXJlYSBmb3IgTW9iaWxlIFNjcmVlbiAtLT5cclxuICA8aW9uLXRleHRhcmVhICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtpZF09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiZGF0YS5NYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW21pbmxlbmd0aF09XCJkYXRhLk1pbkxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICBbcm93c109XCJkYXRhLnRleHRBcmVhUm93c1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICA8L2lvbi10ZXh0YXJlYT5cclxuXHJcbiAgPCEtLSBLZW5kbyBUZXh0YXJlYSBmb3IgTm9uLU1vYmlsZSBTY3JlZW4gLS0+XHJcbiAgPGtlbmRvLXRleHRhcmVhICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKClcIlxyXG4gICAgICAgICAgICAgICAgICAjdGV4dGFyZWFcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICBbYXV0b1NpemVdPVwiIWRhdGEudGV4dEFyZWFSb3dzXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW2lkXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cImRhdGEuTWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgW21pbmxlbmd0aF09XCJkYXRhLk1pbkxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyZXNpemFibGVdPVwiZGF0YS5SZXNpemFibGUgfHwgJ25vbmUnXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiZGF0YS50ZXh0QXJlYVJvd3NcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImRhdGEuSGVpZ2h0ID8gZGF0YS5IZWlnaHQgOiAnYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsICRldmVudClcIj5cclxuXHJcbiAgICA8a2VuZG8tdGV4dGFyZWEtc3VmZml4ICpuZ0lmPVwiZGF0YS5Jc1Nob3dDaGFyYWN0ZXJDb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hhcmFjdGVyLWNvdW50ZXItY29udGFpbmVyIGUxdGFnLXN0eWxlMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImNoYXJhY3Rlci1jb3VudGVyIGUxdGFnLXN0eWxlM1wiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiPnt7Y2hhckNvdW50ZXJEaXNwbGF5U3RyfX08L3NwYW4+XHJcbiAgICA8L2tlbmRvLXRleHRhcmVhLXN1ZmZpeD5cclxuICA8L2tlbmRvLXRleHRhcmVhPlxyXG48L2Rpdj5cclxuIl19