monkey-style-guide-v2 0.0.22 → 0.0.23

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.
@@ -216,7 +216,7 @@ export class MonkeyFormFieldComponent {
216
216
  }
217
217
  }
218
218
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
219
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonkeyFormFieldComponent, selector: "monkey-form-field", inputs: { id: "id", hideAction: ["hideAction", "hideAction", booleanAttribute], enableClear: ["enableClear", "enableClear", booleanAttribute], size: "size" }, host: { properties: { "class.mecx-disabled": "control.disabled", "class.mecx-form-field-focused": "control.focused", "class.mecx-form-field-invalid": "showInvalid", "class.mecx-form-field-borderless": "hideBorder", "attr.id": "id", "id": "id", "class": "size" }, classAttribute: "mecx-form-field" }, queries: [{ propertyName: "_formFieldControl", first: true, predicate: MonkeyFormFieldControl, descendants: true }, { propertyName: "_labelChildren", predicate: MonkeyLabelDirective, descendants: true }, { propertyName: "_helperChildren", predicate: MonkeyHelperDirective, descendants: true }, { propertyName: "_prefixChildren", predicate: MonkeyPrefixDirective, descendants: true }, { propertyName: "_suffixChildren", predicate: MonkeySuffixDirective, descendants: true }, { propertyName: "_infoChildren", predicate: MonkeyInfoDirective, descendants: true }, { propertyName: "_errorChildren", predicate: MonkeyErrorDirective, descendants: true }], exportAs: ["monkeyFormField"], ngImport: i0, template: "@if (showHeader) {\n <div class=\"mecx-form-field-header\" (click)=\"control.onContainerClick($event)\">\n <label [id]=\"labelId\" [attr.for]=\"control.id\">\n <ng-content select=\"monkey-label\"></ng-content>\n </label>\n <ng-content select=\"monkey-helper\"></ng-content>\n </div>\n}\n\n<div class=\"mecx-form-field-body\" (click)=\"control.onContainerClick($event)\">\n @if (hasPrefix) {\n <ng-content select=\"monkey-prefix\"></ng-content>\n }\n @if (getSymbols(); as symbols) {\n <div class=\"mecx-form-field-prefix-symbol\">\n {{ symbols }}\n </div>\n }\n\n <ng-content></ng-content>\n\n @if (showClear) {\n <util-icon class=\"mecx-clear\" name=\"clear\" (click)=\"onClear($event)\" />\n }\n @if (showCalendar) {\n <util-icon class=\"mecx-calendar\" name=\"calendar\" (click)=\"onOpenCalendar($event)\" />\n }\n @if (showLoading) {\n <util-icon class=\"mecx-form-field-loading\" name=\"loading\" />\n }\n\n @if (hasSuffix) {\n <ng-content select=\"monkey-suffix\"></ng-content>\n }\n</div>\n\n@if (showFooter) {\n <div class=\"mecx-form-field-footer\" (click)=\"control.onContainerClick($event)\">\n @switch (getFooterMessages()) {\n @case ('error') {\n <ng-content select=\"monkey-error\"></ng-content>\n }\n @case ('info') {\n <div class=\"mecx-form-field-info\">\n <ng-content select=\"monkey-info\"></ng-content>\n </div>\n }\n }\n </div>\n}\n", styles: [".mecx-form-field{width:100%;display:inline-flex;flex-direction:column;min-width:0;text-align:left;gap:6px}.mecx-disabled .mecx-form-field{cursor:not-allowed;pointer-events:none}.mecx-form-field-header{display:flex;justify-content:space-between;align-items:center}.mecx-disabled .mecx-form-field-header label{pointer-events:none}.mecx-form-field-body{border-radius:4px;border:2px solid var(--mecx-color-gray-400);padding:8px;gap:4px;background:var(--mecx-color-white);color:var(--mecx-color-gray-500);box-sizing:border-box;height:40px;display:flex;align-items:center;position:relative}.mecx-form-field-invalid .mecx-form-field-body{border:2px solid var(--mecx-color-error-700)}.mecx-form-field-invalid .mecx-form-field-body .mecx-option:not(.mecx-option-disabled).radio:before{border:2px solid var(--mecx-color-error-700)}.mecx-form-field-focused .mecx-form-field-body{outline:2px solid var(--mecx-color-theme-main);outline-offset:1px}.mecx-disabled .mecx-form-field-body{border-color:var(--mecx-color-gray-50);background:var(--mecx-color-gray-50);border-radius:8px}.mecx-form-field-body .mecx-clear,.mecx-form-field-body .mecx-calendar{display:flex;align-items:center;justify-content:center;cursor:pointer}.mecx-form-field-body .mecx-calendar svg path{fill:var(--mecx-color-theme-main)}.sm .mecx-form-field-body{height:32px}.md .mecx-form-field-body{height:40px}.lg .mecx-form-field-body{height:48px}.mecx-form-field-footer{display:flex;flex-direction:column}.mecx-form-field-prefix-symbol{color:var(--mecx-color-gray-700);font-size:16px;font-weight:400;font-style:normal;width:22px;text-align:center}.mecx-form-field-prefix-symbol .mk-i{display:flex}.mecx-disabled .mecx-form-field-prefix-symbol{color:var(--mecx-color-gray-400)!important;pointer-events:none}.mecx-form-field-loading{display:flex}.mecx-form-field-loading svg path{fill:var(--mecx-color-theme-main)}.mecx-form-field-borderless .mecx-form-field-body{background-color:transparent;border:0;border-radius:0;padding:0;height:unset;align-items:flex-start}.mecx-form-field-borderless.mecx-form-field-focused .mecx-form-field-body{outline:none;outline-offset:unset}\n"], dependencies: [{ kind: "component", type: i1.UtilIconComponent, selector: "util-icon", inputs: ["name"] }], encapsulation: i0.ViewEncapsulation.None }); }
219
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonkeyFormFieldComponent, selector: "monkey-form-field", inputs: { id: "id", hideAction: ["hideAction", "hideAction", booleanAttribute], enableClear: ["enableClear", "enableClear", booleanAttribute], size: "size" }, host: { properties: { "class.mecx-disabled": "control.disabled", "class.mecx-form-field-focused": "control.focused", "class.mecx-form-field-invalid": "showInvalid", "class.mecx-form-field-borderless": "hideBorder", "attr.id": "id", "id": "id", "class": "size" }, classAttribute: "mecx-form-field" }, queries: [{ propertyName: "_formFieldControl", first: true, predicate: MonkeyFormFieldControl, descendants: true }, { propertyName: "_labelChildren", predicate: MonkeyLabelDirective, descendants: true }, { propertyName: "_helperChildren", predicate: MonkeyHelperDirective, descendants: true }, { propertyName: "_prefixChildren", predicate: MonkeyPrefixDirective, descendants: true }, { propertyName: "_suffixChildren", predicate: MonkeySuffixDirective, descendants: true }, { propertyName: "_infoChildren", predicate: MonkeyInfoDirective, descendants: true }, { propertyName: "_errorChildren", predicate: MonkeyErrorDirective, descendants: true }], exportAs: ["monkeyFormField"], ngImport: i0, template: "@if (showHeader) {\n <div class=\"mecx-form-field-header\" (click)=\"control.onContainerClick($event)\">\n <label [id]=\"labelId\" [attr.for]=\"control.id\">\n <ng-content select=\"monkey-label\"></ng-content>\n </label>\n <ng-content select=\"monkey-helper\"></ng-content>\n </div>\n}\n\n<div class=\"mecx-form-field-body\" (click)=\"control.onContainerClick($event)\">\n @if (hasPrefix) {\n <ng-content select=\"monkey-prefix\"></ng-content>\n }\n @if (getSymbols(); as symbols) {\n <div class=\"mecx-form-field-prefix-symbol\">\n {{ symbols }}\n </div>\n }\n\n <ng-content></ng-content>\n\n @if (showClear) {\n <util-icon class=\"mecx-clear\" name=\"clear\" (click)=\"onClear($event)\" />\n }\n @if (showCalendar) {\n <util-icon class=\"mecx-calendar\" name=\"calendar\" (click)=\"onOpenCalendar($event)\" />\n }\n @if (showLoading) {\n <util-icon class=\"mecx-form-field-loading\" name=\"loading\" />\n }\n\n @if (hasSuffix) {\n <ng-content select=\"monkey-suffix\"></ng-content>\n }\n</div>\n\n@if (showFooter) {\n <div class=\"mecx-form-field-footer\" (click)=\"control.onContainerClick($event)\">\n @switch (getFooterMessages()) {\n @case ('error') {\n <ng-content select=\"monkey-error\"></ng-content>\n }\n @case ('info') {\n <div class=\"mecx-form-field-info\">\n <ng-content select=\"monkey-info\"></ng-content>\n </div>\n }\n }\n </div>\n}\n", styles: [".mecx-form-field{width:100%;display:inline-flex;flex-direction:column;min-width:0;text-align:left;gap:6px}.mecx-disabled .mecx-form-field{cursor:not-allowed;pointer-events:none}.mecx-form-field-header{display:flex;justify-content:space-between;align-items:center}.mecx-disabled .mecx-form-field-header label{pointer-events:none}.mecx-form-field-body{border-radius:4px;border:2px solid var(--mecx-color-gray-400);padding:8px;gap:4px;background:var(--mecx-color-white);color:var(--mecx-color-gray-500);box-sizing:border-box;height:40px;display:flex;align-items:center;position:relative}.mecx-form-field-invalid .mecx-form-field-body{border:2px solid var(--mecx-color-error-700)}.mecx-form-field-invalid .mecx-form-field-body .mecx-option:not(.mecx-option-disabled).radio:before{border:2px solid var(--mecx-color-error-700)}.mecx-form-field-focused .mecx-form-field-body{outline:2px solid var(--mecx-color-theme-main);outline-offset:1px}.mecx-disabled .mecx-form-field-body{border-color:var(--mecx-color-gray-50);background:var(--mecx-color-gray-50);border-radius:8px}.mecx-form-field-body .mecx-clear,.mecx-form-field-body .mecx-calendar{display:flex;align-items:center;justify-content:center;cursor:pointer}.mecx-form-field-body .mecx-calendar svg path{fill:var(--mecx-color-theme-main)}.sm .mecx-form-field-body{height:32px}.md .mecx-form-field-body{height:40px}.lg .mecx-form-field-body{height:48px}.mecx-form-field-footer{display:flex;flex-direction:column}.mecx-form-field-prefix-symbol{color:var(--mecx-color-gray-700);font-size:16px;font-weight:400;font-style:normal;width:22px;text-align:center}.mecx-form-field-prefix-symbol .mk-i{display:flex}.mecx-disabled .mecx-form-field-prefix-symbol{color:var(--mecx-color-gray-400)!important;pointer-events:none}.mecx-form-field-loading{display:flex}.mecx-form-field-loading svg path{fill:var(--mecx-color-theme-main)}.mecx-form-field-borderless .mecx-form-field-body{background-color:transparent;border:0;border-radius:0;padding:0;height:unset;align-items:flex-start;outline:none;outline-offset:unset}.mecx-form-field-borderless.mecx-form-field-focused .mecx-form-field-body{outline:none;outline-offset:unset}\n"], dependencies: [{ kind: "component", type: i1.UtilIconComponent, selector: "util-icon", inputs: ["name"] }], encapsulation: i0.ViewEncapsulation.None }); }
220
220
  }
221
221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyFormFieldComponent, decorators: [{
222
222
  type: Component,
@@ -229,7 +229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
229
229
  '[attr.id]': 'id',
230
230
  '[id]': 'id',
231
231
  '[class]': 'size'
232
- }, template: "@if (showHeader) {\n <div class=\"mecx-form-field-header\" (click)=\"control.onContainerClick($event)\">\n <label [id]=\"labelId\" [attr.for]=\"control.id\">\n <ng-content select=\"monkey-label\"></ng-content>\n </label>\n <ng-content select=\"monkey-helper\"></ng-content>\n </div>\n}\n\n<div class=\"mecx-form-field-body\" (click)=\"control.onContainerClick($event)\">\n @if (hasPrefix) {\n <ng-content select=\"monkey-prefix\"></ng-content>\n }\n @if (getSymbols(); as symbols) {\n <div class=\"mecx-form-field-prefix-symbol\">\n {{ symbols }}\n </div>\n }\n\n <ng-content></ng-content>\n\n @if (showClear) {\n <util-icon class=\"mecx-clear\" name=\"clear\" (click)=\"onClear($event)\" />\n }\n @if (showCalendar) {\n <util-icon class=\"mecx-calendar\" name=\"calendar\" (click)=\"onOpenCalendar($event)\" />\n }\n @if (showLoading) {\n <util-icon class=\"mecx-form-field-loading\" name=\"loading\" />\n }\n\n @if (hasSuffix) {\n <ng-content select=\"monkey-suffix\"></ng-content>\n }\n</div>\n\n@if (showFooter) {\n <div class=\"mecx-form-field-footer\" (click)=\"control.onContainerClick($event)\">\n @switch (getFooterMessages()) {\n @case ('error') {\n <ng-content select=\"monkey-error\"></ng-content>\n }\n @case ('info') {\n <div class=\"mecx-form-field-info\">\n <ng-content select=\"monkey-info\"></ng-content>\n </div>\n }\n }\n </div>\n}\n", styles: [".mecx-form-field{width:100%;display:inline-flex;flex-direction:column;min-width:0;text-align:left;gap:6px}.mecx-disabled .mecx-form-field{cursor:not-allowed;pointer-events:none}.mecx-form-field-header{display:flex;justify-content:space-between;align-items:center}.mecx-disabled .mecx-form-field-header label{pointer-events:none}.mecx-form-field-body{border-radius:4px;border:2px solid var(--mecx-color-gray-400);padding:8px;gap:4px;background:var(--mecx-color-white);color:var(--mecx-color-gray-500);box-sizing:border-box;height:40px;display:flex;align-items:center;position:relative}.mecx-form-field-invalid .mecx-form-field-body{border:2px solid var(--mecx-color-error-700)}.mecx-form-field-invalid .mecx-form-field-body .mecx-option:not(.mecx-option-disabled).radio:before{border:2px solid var(--mecx-color-error-700)}.mecx-form-field-focused .mecx-form-field-body{outline:2px solid var(--mecx-color-theme-main);outline-offset:1px}.mecx-disabled .mecx-form-field-body{border-color:var(--mecx-color-gray-50);background:var(--mecx-color-gray-50);border-radius:8px}.mecx-form-field-body .mecx-clear,.mecx-form-field-body .mecx-calendar{display:flex;align-items:center;justify-content:center;cursor:pointer}.mecx-form-field-body .mecx-calendar svg path{fill:var(--mecx-color-theme-main)}.sm .mecx-form-field-body{height:32px}.md .mecx-form-field-body{height:40px}.lg .mecx-form-field-body{height:48px}.mecx-form-field-footer{display:flex;flex-direction:column}.mecx-form-field-prefix-symbol{color:var(--mecx-color-gray-700);font-size:16px;font-weight:400;font-style:normal;width:22px;text-align:center}.mecx-form-field-prefix-symbol .mk-i{display:flex}.mecx-disabled .mecx-form-field-prefix-symbol{color:var(--mecx-color-gray-400)!important;pointer-events:none}.mecx-form-field-loading{display:flex}.mecx-form-field-loading svg path{fill:var(--mecx-color-theme-main)}.mecx-form-field-borderless .mecx-form-field-body{background-color:transparent;border:0;border-radius:0;padding:0;height:unset;align-items:flex-start}.mecx-form-field-borderless.mecx-form-field-focused .mecx-form-field-body{outline:none;outline-offset:unset}\n"] }]
232
+ }, template: "@if (showHeader) {\n <div class=\"mecx-form-field-header\" (click)=\"control.onContainerClick($event)\">\n <label [id]=\"labelId\" [attr.for]=\"control.id\">\n <ng-content select=\"monkey-label\"></ng-content>\n </label>\n <ng-content select=\"monkey-helper\"></ng-content>\n </div>\n}\n\n<div class=\"mecx-form-field-body\" (click)=\"control.onContainerClick($event)\">\n @if (hasPrefix) {\n <ng-content select=\"monkey-prefix\"></ng-content>\n }\n @if (getSymbols(); as symbols) {\n <div class=\"mecx-form-field-prefix-symbol\">\n {{ symbols }}\n </div>\n }\n\n <ng-content></ng-content>\n\n @if (showClear) {\n <util-icon class=\"mecx-clear\" name=\"clear\" (click)=\"onClear($event)\" />\n }\n @if (showCalendar) {\n <util-icon class=\"mecx-calendar\" name=\"calendar\" (click)=\"onOpenCalendar($event)\" />\n }\n @if (showLoading) {\n <util-icon class=\"mecx-form-field-loading\" name=\"loading\" />\n }\n\n @if (hasSuffix) {\n <ng-content select=\"monkey-suffix\"></ng-content>\n }\n</div>\n\n@if (showFooter) {\n <div class=\"mecx-form-field-footer\" (click)=\"control.onContainerClick($event)\">\n @switch (getFooterMessages()) {\n @case ('error') {\n <ng-content select=\"monkey-error\"></ng-content>\n }\n @case ('info') {\n <div class=\"mecx-form-field-info\">\n <ng-content select=\"monkey-info\"></ng-content>\n </div>\n }\n }\n </div>\n}\n", styles: [".mecx-form-field{width:100%;display:inline-flex;flex-direction:column;min-width:0;text-align:left;gap:6px}.mecx-disabled .mecx-form-field{cursor:not-allowed;pointer-events:none}.mecx-form-field-header{display:flex;justify-content:space-between;align-items:center}.mecx-disabled .mecx-form-field-header label{pointer-events:none}.mecx-form-field-body{border-radius:4px;border:2px solid var(--mecx-color-gray-400);padding:8px;gap:4px;background:var(--mecx-color-white);color:var(--mecx-color-gray-500);box-sizing:border-box;height:40px;display:flex;align-items:center;position:relative}.mecx-form-field-invalid .mecx-form-field-body{border:2px solid var(--mecx-color-error-700)}.mecx-form-field-invalid .mecx-form-field-body .mecx-option:not(.mecx-option-disabled).radio:before{border:2px solid var(--mecx-color-error-700)}.mecx-form-field-focused .mecx-form-field-body{outline:2px solid var(--mecx-color-theme-main);outline-offset:1px}.mecx-disabled .mecx-form-field-body{border-color:var(--mecx-color-gray-50);background:var(--mecx-color-gray-50);border-radius:8px}.mecx-form-field-body .mecx-clear,.mecx-form-field-body .mecx-calendar{display:flex;align-items:center;justify-content:center;cursor:pointer}.mecx-form-field-body .mecx-calendar svg path{fill:var(--mecx-color-theme-main)}.sm .mecx-form-field-body{height:32px}.md .mecx-form-field-body{height:40px}.lg .mecx-form-field-body{height:48px}.mecx-form-field-footer{display:flex;flex-direction:column}.mecx-form-field-prefix-symbol{color:var(--mecx-color-gray-700);font-size:16px;font-weight:400;font-style:normal;width:22px;text-align:center}.mecx-form-field-prefix-symbol .mk-i{display:flex}.mecx-disabled .mecx-form-field-prefix-symbol{color:var(--mecx-color-gray-400)!important;pointer-events:none}.mecx-form-field-loading{display:flex}.mecx-form-field-loading svg path{fill:var(--mecx-color-theme-main)}.mecx-form-field-borderless .mecx-form-field-body{background-color:transparent;border:0;border-radius:0;padding:0;height:unset;align-items:flex-start;outline:none;outline-offset:unset}.mecx-form-field-borderless.mecx-form-field-focused .mecx-form-field-body{outline:none;outline-offset:unset}\n"] }]
233
233
  }], ctorParameters: () => [], propDecorators: { id: [{
234
234
  type: Input
235
235
  }], hideAction: [{
@@ -13,6 +13,7 @@ export * from './icon';
13
13
  export * from './icon-button';
14
14
  export * from './input';
15
15
  export * from './input-code';
16
+ export * from './input-phone';
16
17
  export * from './input-upload';
17
18
  export * from './modal';
18
19
  export * from './option';
@@ -25,4 +26,4 @@ export * from './toast';
25
26
  export * from './toggle';
26
27
  export * from './toggle-line';
27
28
  export * from './tooltip';
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24tYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vYWxlcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hdmF0YXInO1xuZXhwb3J0ICogZnJvbSAnLi9iYWRnZSc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWInO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUtcmFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtY29kZSc7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXVwbG9hZCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGFsJztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcmFkaW8tYnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2VjdXJpdHktbGV2ZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0dXMnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0JztcbmV4cG9ydCAqIGZyb20gJy4vdG9nZ2xlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9nZ2xlLWxpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi90b29sdGlwJztcbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24tYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vYWxlcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hdmF0YXInO1xuZXhwb3J0ICogZnJvbSAnLi9iYWRnZSc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWInO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUtcmFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtY29kZSc7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXBob25lJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtdXBsb2FkJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9vcHRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpby1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9zZWN1cml0eS1sZXZlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXR1cyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3QnO1xuZXhwb3J0ICogZnJvbSAnLi90b2dnbGUnO1xuZXhwb3J0ICogZnJvbSAnLi90b2dnbGUtbGluZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2x0aXAnO1xuIl19
@@ -0,0 +1,7 @@
1
+ /** ************************
2
+ * Copyright Monkey Exchange. All Rights Reserved
3
+ * This style guide was developed by Monkey Exchange Team
4
+ * MIT Licence
5
+ ************************* */
6
+ export * from './input-phone.component';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LXBob25lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OzZCQUk2QjtBQUM3QixjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqICoqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IE1vbmtleSBFeGNoYW5nZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZFxuICogVGhpcyBzdHlsZSBndWlkZSB3YXMgZGV2ZWxvcGVkIGJ5IE1vbmtleSBFeGNoYW5nZSBUZWFtXG4gKiBNSVQgTGljZW5jZVxuICoqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcGhvbmUuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,324 @@
1
+ /** ************************
2
+ * Copyright Monkey Exchange. All Rights Reserved
3
+ * This style guide was developed by Monkey Exchange Team
4
+ * MIT Licence
5
+ ************************* */
6
+ import { CommonModule } from '@angular/common';
7
+ import { booleanAttribute, Component, inject, Input, LOCALE_ID, ViewChildren } from '@angular/core';
8
+ import { FormsModule, NgControl, ReactiveFormsModule, Validators } from '@angular/forms';
9
+ import parsePhoneNumberFromString, { AsYouType, getCountries, getCountryCallingCode, getExampleNumber, isValidPhoneNumber } from 'libphonenumber-js';
10
+ import examples from 'libphonenumber-js/examples.mobile.json';
11
+ import { Subject } from 'rxjs';
12
+ import { IdGenerator } from '../../../utils';
13
+ import { MONKEY_COUNTRY_CODE } from '../../tokens';
14
+ import { MonkeyFormFieldControl, MonkeyFormFieldModule } from '../form-field';
15
+ import { MonkeyOptionComponent } from '../option';
16
+ import { MonkeySelectComponent } from '../select';
17
+ import * as i0 from "@angular/core";
18
+ import * as i1 from "@angular/forms";
19
+ export class MonkeyInputPhoneComponent {
20
+ get disabled() {
21
+ if (this.ngControl && this.ngControl.disabled !== null) {
22
+ return this.ngControl.disabled;
23
+ }
24
+ return this._disabled;
25
+ }
26
+ set disabled(value) {
27
+ this._disabled = value;
28
+ if (this.focused) {
29
+ this.focused = false;
30
+ this.stateChanges.next();
31
+ }
32
+ }
33
+ get required() {
34
+ return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
35
+ }
36
+ set required(value) {
37
+ this._required = value;
38
+ this.stateChanges.next();
39
+ }
40
+ set value(value) {
41
+ if (this._value !== value && value !== undefined) {
42
+ this._value = value;
43
+ this.formatValue(value);
44
+ this._onChange(value);
45
+ this._onTouched(value);
46
+ }
47
+ }
48
+ get value() {
49
+ return this._value;
50
+ }
51
+ constructor() {
52
+ this.placeholder = '';
53
+ this.tabIndex = 0;
54
+ this._disabled = false;
55
+ this._value = null;
56
+ this.ngControl = inject(NgControl, { self: true, optional: true });
57
+ this.idGenerator = inject(IdGenerator);
58
+ this.countryCode = inject(MONKEY_COUNTRY_CODE);
59
+ this.locale = inject(LOCALE_ID);
60
+ this.id = this.idGenerator.getId('monkey-input-upload-');
61
+ this.inputId = this.idGenerator.getId('monkey-input-upload-input-');
62
+ this.focused = false;
63
+ this.type = 'input-phone';
64
+ this.stateChanges = new Subject();
65
+ this.countries = getCountries()
66
+ .map((code) => {
67
+ return {
68
+ code: `+${getCountryCallingCode(code)}`,
69
+ name: this.getCountryNameFromCode(code),
70
+ flag: `${this.isoToFlagEmoji(code)} `
71
+ };
72
+ })
73
+ .sort((a, b) => {
74
+ return a.name.localeCompare(b.name);
75
+ });
76
+ this.countriesFiltered = this.countries;
77
+ this.selectedCallingCode = this.countryCode.toString();
78
+ this.phoneFormatted = '';
79
+ this.phoneValid = false;
80
+ this._onChange = () => { };
81
+ this._onTouched = () => { };
82
+ if (this.ngControl) {
83
+ this.ngControl.valueAccessor = this;
84
+ }
85
+ }
86
+ getCountryNameFromCode(code) {
87
+ try {
88
+ const locale = this.locale.toString();
89
+ const display = new Intl.DisplayNames([locale], { type: 'region' });
90
+ return display.of(code.toUpperCase()) || code;
91
+ }
92
+ catch {
93
+ return code;
94
+ }
95
+ }
96
+ getCountryByCallingCode(code) {
97
+ const cleanCode = code.replace('+', '');
98
+ return (getCountries().find((country) => {
99
+ return getCountryCallingCode(country) === cleanCode;
100
+ }) || null);
101
+ }
102
+ isoToFlagEmoji(isoCode) {
103
+ return isoCode.toUpperCase().replace(/./g, (char) => {
104
+ return String.fromCodePoint(127397 + char.charCodeAt(0));
105
+ });
106
+ }
107
+ getCountryFromPhoneNumber(input, changedCountry) {
108
+ try {
109
+ if (changedCountry) {
110
+ return this.selectedCallingCode;
111
+ }
112
+ const parsed = parsePhoneNumberFromString(input);
113
+ const country = getCountryCallingCode(parsed?.country);
114
+ return `+${country}`;
115
+ }
116
+ catch (e) {
117
+ // not to do
118
+ }
119
+ return this.selectedCallingCode;
120
+ }
121
+ performValue(value) {
122
+ this._value = `${this.selectedCallingCode}${value}`;
123
+ this._onChange(this._value);
124
+ this._onTouched(this._value);
125
+ }
126
+ validateValue() {
127
+ const { phoneValid } = this;
128
+ if (!phoneValid) {
129
+ const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);
130
+ const example = getExampleNumber(countryCode, examples);
131
+ this.ngControl?.control?.setErrors({
132
+ phone: true,
133
+ phoneAllowed: example?.nationalNumber
134
+ });
135
+ }
136
+ }
137
+ formatValue(value, changedCountry = false) {
138
+ if (!value) {
139
+ this.phoneFormatted = '';
140
+ this.phoneValid = false;
141
+ this.validateValue();
142
+ return;
143
+ }
144
+ const detectedCallingCode = this.getCountryFromPhoneNumber(value, changedCountry);
145
+ const isCountryChanged = changedCountry || detectedCallingCode !== this.selectedCallingCode;
146
+ if (isCountryChanged && detectedCallingCode) {
147
+ this.selectedCallingCode = detectedCallingCode;
148
+ }
149
+ const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);
150
+ if (!countryCode) {
151
+ this.phoneFormatted = value;
152
+ this.phoneValid = false;
153
+ this.validateValue();
154
+ return;
155
+ }
156
+ const nationalPart = value.replace(this.selectedCallingCode, '').replace(/[^\d+]/g, '');
157
+ const formatter = new AsYouType(countryCode);
158
+ this.phoneFormatted = formatter.input(nationalPart);
159
+ this.performValue(nationalPart);
160
+ this.phoneValid = isValidPhoneNumber(nationalPart, countryCode);
161
+ this.validateValue();
162
+ }
163
+ ngAfterContentInit() { }
164
+ ngOnChanges(changes) { }
165
+ ngOnDestroy() { }
166
+ onContainerClick(event) {
167
+ this.inputs.first.nativeElement.focus();
168
+ }
169
+ _onFocus() {
170
+ if (!this.disabled) {
171
+ this.focused = true;
172
+ this._onTouched();
173
+ this.stateChanges.next();
174
+ }
175
+ }
176
+ _onBlur() {
177
+ this.focused = false;
178
+ this.stateChanges.next();
179
+ this.validateValue();
180
+ }
181
+ registerOnChange(fn) {
182
+ this._onChange = fn;
183
+ }
184
+ registerOnTouched(fn) {
185
+ this._onTouched = fn;
186
+ }
187
+ setDisabledState(isDisabled) {
188
+ this.disabled = isDisabled;
189
+ }
190
+ writeValue(value) {
191
+ this.value = value;
192
+ }
193
+ onInputChange(event) {
194
+ const { value } = event.target;
195
+ this.formatValue(value);
196
+ }
197
+ onCountryChange() {
198
+ this.formatValue(this._value, true);
199
+ this.validateValue();
200
+ }
201
+ getMaxLength() {
202
+ try {
203
+ const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);
204
+ if (!countryCode)
205
+ return 20;
206
+ const example = getExampleNumber(countryCode, examples);
207
+ const formatted = new AsYouType(countryCode).input(example.nationalNumber);
208
+ return formatted.length;
209
+ }
210
+ catch {
211
+ return 20;
212
+ }
213
+ }
214
+ onHandleSearchSelect(query) {
215
+ const normalizedQuery = query.trim().toLowerCase();
216
+ this.countriesFiltered = this.countries.filter(({ name }) => {
217
+ return name.toLowerCase().includes(normalizedQuery);
218
+ });
219
+ }
220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyInputPhoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonkeyInputPhoneComponent, isStandalone: true, selector: "monkey-input-phone", inputs: { placeholder: "placeholder", tabIndex: "tabIndex", disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute], value: "value" }, host: { listeners: { "focus": "_onFocus()", "blur": "_onBlur()" }, properties: { "attr.data-testid": "'monkey-input-phone'", "class.mecx-input-phone-disabled": "_disabled", "class.mecx-input-phone-focused": "focused", "attr.id": "id", "attr.tabindex": "disabled ? -1 : tabIndex" }, classAttribute: "mecx-input-phone" }, providers: [
222
+ // eslint-disable-next-line no-use-before-define
223
+ { provide: MonkeyFormFieldControl, useExisting: MonkeyInputPhoneComponent }
224
+ ], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
225
+ <monkey-select
226
+ placeholder=""
227
+ [disabled]="disabled"
228
+ showSearch
229
+ [(ngModel)]="selectedCallingCode"
230
+ class="mecx-phone-select-country"
231
+ (onChange)="onCountryChange()"
232
+ callbackSearch
233
+ (onSearch)="onHandleSearchSelect($event)"
234
+ >
235
+ @for (item of countriesFiltered; track $index) {
236
+ <monkey-option [value]="item.code">
237
+ <span class="option-flag">{{ item.flag }}</span>
238
+ <div class="option-name">{{ item.name }} {{ item.code }}</div>
239
+ </monkey-option>
240
+ }
241
+ </monkey-select>
242
+ <input
243
+ #input
244
+ class="mecx-input"
245
+ [attr.disabled]="disabled"
246
+ placeholder="Enter phone number"
247
+ (input)="onInputChange($event)"
248
+ [ngModel]="phoneFormatted"
249
+ [maxlength]="getMaxLength()"
250
+ (focus)="_onFocus()"
251
+ (blur)="_onBlur()"
252
+ [attr.id]="inputId"
253
+ />
254
+ `, isInline: true, styles: [":host{display:inline-flex;width:100%;min-width:0}:host.mecx-input-phone-disabled monkey-select{border-right:2px solid var(--mecx-color-gray-200)}:host monkey-select{width:164px;border-right:2px solid var(--mecx-color-gray-400)}:host input{width:100%;border:none;margin-left:8px}monkey-option .option-flag{font-size:30px}monkey-option .option-name{letter-spacing:.48px;margin-left:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MonkeySelectComponent, selector: "monkey-select", inputs: ["tabIndex", "placeholder", "loading", "showSearch", "searchPlaceholder", "callbackSearch", "disabled", "required", "value"], outputs: ["onChange", "onSearch"] }, { kind: "component", type: MonkeyOptionComponent, selector: "monkey-option", inputs: ["value", "disabled", "type"] }, { kind: "ngmodule", type: MonkeyFormFieldModule }] }); }
255
+ }
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyInputPhoneComponent, decorators: [{
257
+ type: Component,
258
+ args: [{ selector: 'monkey-input-phone', standalone: true, imports: [
259
+ CommonModule,
260
+ FormsModule,
261
+ ReactiveFormsModule,
262
+ MonkeySelectComponent,
263
+ MonkeyOptionComponent,
264
+ MonkeyFormFieldModule
265
+ ], template: `
266
+ <monkey-select
267
+ placeholder=""
268
+ [disabled]="disabled"
269
+ showSearch
270
+ [(ngModel)]="selectedCallingCode"
271
+ class="mecx-phone-select-country"
272
+ (onChange)="onCountryChange()"
273
+ callbackSearch
274
+ (onSearch)="onHandleSearchSelect($event)"
275
+ >
276
+ @for (item of countriesFiltered; track $index) {
277
+ <monkey-option [value]="item.code">
278
+ <span class="option-flag">{{ item.flag }}</span>
279
+ <div class="option-name">{{ item.name }} {{ item.code }}</div>
280
+ </monkey-option>
281
+ }
282
+ </monkey-select>
283
+ <input
284
+ #input
285
+ class="mecx-input"
286
+ [attr.disabled]="disabled"
287
+ placeholder="Enter phone number"
288
+ (input)="onInputChange($event)"
289
+ [ngModel]="phoneFormatted"
290
+ [maxlength]="getMaxLength()"
291
+ (focus)="_onFocus()"
292
+ (blur)="_onBlur()"
293
+ [attr.id]="inputId"
294
+ />
295
+ `, providers: [
296
+ // eslint-disable-next-line no-use-before-define
297
+ { provide: MonkeyFormFieldControl, useExisting: MonkeyInputPhoneComponent }
298
+ ], host: {
299
+ '[attr.data-testid]': "'monkey-input-phone'",
300
+ class: 'mecx-input-phone',
301
+ '[class.mecx-input-phone-disabled]': '_disabled',
302
+ '[class.mecx-input-phone-focused]': 'focused',
303
+ '[attr.id]': 'id',
304
+ '[attr.tabindex]': 'disabled ? -1 : tabIndex',
305
+ '(focus)': '_onFocus()',
306
+ '(blur)': '_onBlur()'
307
+ }, styles: [":host{display:inline-flex;width:100%;min-width:0}:host.mecx-input-phone-disabled monkey-select{border-right:2px solid var(--mecx-color-gray-200)}:host monkey-select{width:164px;border-right:2px solid var(--mecx-color-gray-400)}:host input{width:100%;border:none;margin-left:8px}monkey-option .option-flag{font-size:30px}monkey-option .option-name{letter-spacing:.48px;margin-left:4px}\n"] }]
308
+ }], ctorParameters: () => [], propDecorators: { placeholder: [{
309
+ type: Input
310
+ }], tabIndex: [{
311
+ type: Input
312
+ }], disabled: [{
313
+ type: Input,
314
+ args: [{ transform: booleanAttribute }]
315
+ }], required: [{
316
+ type: Input,
317
+ args: [{ transform: booleanAttribute }]
318
+ }], value: [{
319
+ type: Input
320
+ }], inputs: [{
321
+ type: ViewChildren,
322
+ args: ['input']
323
+ }] } });
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1waG9uZS9pbnB1dC1waG9uZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NkJBSTZCO0FBRTdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFLVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sMEJBQTBCLEVBQUUsRUFDakMsU0FBUyxFQUVULFlBQVksRUFDWixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNuQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sUUFBUSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBa0VsRCxNQUFNLE9BQU8seUJBQXlCO0lBT3BDLElBQ0ksUUFBUTtRQUNWLElBQUksSUFBSSxDQUFD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USxFQUFFLFdBQVc7cUJBQ3RCO3dEQUtRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBb0JsQyxRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYWxDLEtBQUs7c0JBRFIsS0FBSztnQkE0RGlCLE1BQU07c0JBQTVCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiAqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCBNb25rZXkgRXhjaGFuZ2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxuICogTUlUIExpY2VuY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1zTW9kdWxlLFxuICBOZ0NvbnRyb2wsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHBhcnNlUGhvbmVOdW1iZXJGcm9tU3RyaW5nLCB7XG4gIEFzWW91VHlwZSxcbiAgQ291bnRyeUNvZGUsXG4gIGdldENvdW50cmllcyxcbiAgZ2V0Q291bnRyeUNhbGxpbmdDb2RlLFxuICBnZXRFeGFtcGxlTnVtYmVyLFxuICBpc1ZhbGlkUGhvbmVOdW1iZXJcbn0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuaW1wb3J0IGV4YW1wbGVzIGZyb20gJ2xpYnBob25lbnVtYmVyLWpzL2V4YW1wbGVzLm1vYmlsZS5qc29uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgTU9OS0VZX0NPVU5UUllfQ09ERSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBNb25rZXlGb3JtRmllbGRDb250cm9sLCBNb25rZXlGb3JtRmllbGRNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1vbmtleU9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL29wdGlvbic7XG5pbXBvcnQgeyBNb25rZXlTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QnO1xuXG5pbnRlcmZhY2UgQ291bnRyeSB7XG4gIGNvZGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBmbGFnOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vbmtleS1pbnB1dC1waG9uZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNb25rZXlTZWxlY3RDb21wb25lbnQsXG4gICAgTW9ua2V5T3B0aW9uQ29tcG9uZW50LFxuICAgIE1vbmtleUZvcm1GaWVsZE1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtb25rZXktc2VsZWN0XG4gICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgc2hvd1NlYXJjaFxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENhbGxpbmdDb2RlXCJcbiAgICAgIGNsYXNzPVwibWVjeC1waG9uZS1zZWxlY3QtY291bnRyeVwiXG4gICAgICAob25DaGFuZ2UpPVwib25Db3VudHJ5Q2hhbmdlKClcIlxuICAgICAgY2FsbGJhY2tTZWFyY2hcbiAgICAgIChvblNlYXJjaCk9XCJvbkhhbmRsZVNlYXJjaFNlbGVjdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICBAZm9yIChpdGVtIG9mIGNvdW50cmllc0ZpbHRlcmVkOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPG1vbmtleS1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uY29kZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uLWZsYWdcIj57eyBpdGVtLmZsYWcgfX08L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1uYW1lXCI+e3sgaXRlbS5uYW1lIH19IHt7IGl0ZW0uY29kZSB9fTwvZGl2PlxuICAgICAgICA8L21vbmtleS1vcHRpb24+XG4gICAgICB9XG4gICAgPC9tb25rZXktc2VsZWN0PlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0XG4gICAgICBjbGFzcz1cIm1lY3gtaW5wdXRcIlxuICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwaG9uZSBudW1iZXJcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbmdNb2RlbF09XCJwaG9uZUZvcm1hdHRlZFwiXG4gICAgICBbbWF4bGVuZ3RoXT1cImdldE1heExlbmd0aCgpXCJcbiAgICAgIChmb2N1cyk9XCJfb25Gb2N1cygpXCJcbiAgICAgIChibHVyKT1cIl9vbkJsdXIoKVwiXG4gICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAvPlxuICBgLFxuICBzdHlsZVVybDogJy4vaW5wdXQtcGhvbmUuY29tcG9uZW50LnNjc3MnLFxuICBwcm92aWRlcnM6IFtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICB7IHByb3ZpZGU6IE1vbmtleUZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNb25rZXlJbnB1dFBob25lQ29tcG9uZW50IH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5kYXRhLXRlc3RpZF0nOiBcIidtb25rZXktaW5wdXQtcGhvbmUnXCIsXG4gICAgY2xhc3M6ICdtZWN4LWlucHV0LXBob25lJyxcbiAgICAnW2NsYXNzLm1lY3gtaW5wdXQtcGhvbmUtZGlzYWJsZWRdJzogJ19kaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5tZWN4LWlucHV0LXBob25lLWZvY3VzZWRdJzogJ2ZvY3VzZWQnLFxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbYXR0ci50YWJpbmRleF0nOiAnZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4JyxcbiAgICAnKGZvY3VzKSc6ICdfb25Gb2N1cygpJyxcbiAgICAnKGJsdXIpJzogJ19vbkJsdXIoKSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBNb25rZXlJbnB1dFBob25lQ29tcG9uZW50XG4gIGltcGxlbWVudHMgTW9ua2V5Rm9ybUZpZWxkQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSB0YWJJbmRleCA9IDA7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IHZhbHVlO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB2YWx1ZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICB0aGlzLl9vblRvdWNoZWQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIF92YWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwgPSBpbmplY3QoTmdDb250cm9sLCB7IHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pITtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlkR2VuZXJhdG9yID0gaW5qZWN0KElkR2VuZXJhdG9yKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvdW50cnlDb2RlID0gaW5qZWN0KE1PTktFWV9DT1VOVFJZX0NPREUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlID0gaW5qZWN0KExPQ0FMRV9JRCk7XG5cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZyA9IHRoaXMuaWRHZW5lcmF0b3IuZ2V0SWQoJ21vbmtleS1pbnB1dC11cGxvYWQtJyk7XG5cbiAgcmVhZG9ubHkgaW5wdXRJZDogc3RyaW5nID0gdGhpcy5pZEdlbmVyYXRvci5nZXRJZCgnbW9ua2V5LWlucHV0LXVwbG9hZC1pbnB1dC0nKTtcblxuICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gJ2lucHV0LXBob25lJztcblxuICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvdW50cmllczogQ291bnRyeVtdID0gZ2V0Q291bnRyaWVzKClcbiAgICAubWFwKChjb2RlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlOiBgKyR7Z2V0Q291bnRyeUNhbGxpbmdDb2RlKGNvZGUpfWAsXG4gICAgICAgIG5hbWU6IHRoaXMuZ2V0Q291bnRyeU5hbWVGcm9tQ29kZShjb2RlKSxcbiAgICAgICAgZmxhZzogYCR7dGhpcy5pc29Ub0ZsYWdFbW9qaShjb2RlKX0gYFxuICAgICAgfTtcbiAgICB9KVxuICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgICB9KTtcblxuICBjb3VudHJpZXNGaWx0ZXJlZCA9IHRoaXMuY291bnRyaWVzO1xuXG4gIHNlbGVjdGVkQ2FsbGluZ0NvZGUgPSB0aGlzLmNvdW50cnlDb2RlLnRvU3RyaW5nKCk7XG5cbiAgcGhvbmVGb3JtYXR0ZWQgPSAnJztcblxuICBwaG9uZVZhbGlkID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZHJlbignaW5wdXQnKSBpbnB1dHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj47XG5cbiAgcHJpdmF0ZSBnZXRDb3VudHJ5TmFtZUZyb21Db2RlKGNvZGU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmxvY2FsZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgZGlzcGxheSA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbbG9jYWxlXSwgeyB0eXBlOiAncmVnaW9uJyB9KTtcbiAgICAgIHJldHVybiBkaXNwbGF5Lm9mKGNvZGUudG9VcHBlckNhc2UoKSkgfHwgY29kZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBjb2RlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q291bnRyeUJ5Q2FsbGluZ0NvZGUoY29kZTogc3RyaW5nKTogQ291bnRyeUNvZGUgfCBudWxsIHtcbiAgICBjb25zdCBjbGVhbkNvZGUgPSBjb2RlLnJlcGxhY2UoJysnLCAnJyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgZ2V0Q291bnRyaWVzKCkuZmluZCgoY291bnRyeSkgPT4ge1xuICAgICAgICByZXR1cm4gZ2V0Q291bnRyeUNhbGxpbmdDb2RlKGNvdW50cnkpID09PSBjbGVhbkNvZGU7XG4gICAgICB9KSB8fCBudWxsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNvVG9GbGFnRW1vamkoaXNvQ29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXNvQ29kZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoLy4vZywgKGNoYXIpID0+IHtcbiAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludCgxMjczOTcgKyBjaGFyLmNoYXJDb2RlQXQoMCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3VudHJ5RnJvbVBob25lTnVtYmVyKGlucHV0OiBzdHJpbmcsIGNoYW5nZWRDb3VudHJ5OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGNoYW5nZWRDb3VudHJ5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ2FsbGluZ0NvZGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUGhvbmVOdW1iZXJGcm9tU3RyaW5nKGlucHV0KTtcbiAgICAgIGNvbnN0IGNvdW50cnkgPSBnZXRDb3VudHJ5Q2FsbGluZ0NvZGUocGFyc2VkPy5jb3VudHJ5ISk7XG5cbiAgICAgIHJldHVybiBgKyR7Y291bnRyeX1gO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG5vdCB0byBkb1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ2FsbGluZ0NvZGU7XG4gIH1cblxuICBwcml2YXRlIHBlcmZvcm1WYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsdWUgPSBgJHt0aGlzLnNlbGVjdGVkQ2FsbGluZ0NvZGV9JHt2YWx1ZX1gO1xuICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICB0aGlzLl9vblRvdWNoZWQodGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVZhbHVlKCkge1xuICAgIGNvbnN0IHsgcGhvbmVWYWxpZCB9ID0gdGhpcztcbiAgICBpZiAoIXBob25lVmFsaWQpIHtcbiAgICAgIGNvbnN0IGNvdW50cnlDb2RlID0gdGhpcy5nZXRDb3VudHJ5QnlDYWxsaW5nQ29kZSh0aGlzLnNlbGVjdGVkQ2FsbGluZ0NvZGUpO1xuICAgICAgY29uc3QgZXhhbXBsZSA9IGdldEV4YW1wbGVOdW1iZXIoY291bnRyeUNvZGUhLCBleGFtcGxlcyk7XG5cbiAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5zZXRFcnJvcnMoe1xuICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgcGhvbmVBbGxvd2VkOiBleGFtcGxlPy5uYXRpb25hbE51bWJlclxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCBjaGFuZ2VkQ291bnRyeSA9IGZhbHNlKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5waG9uZUZvcm1hdHRlZCA9ICcnO1xuICAgICAgdGhpcy5waG9uZVZhbGlkID0gZmFsc2U7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZXRlY3RlZENhbGxpbmdDb2RlID0gdGhpcy5nZXRDb3VudHJ5RnJvbVBob25lTnVtYmVyKHZhbHVlLCBjaGFuZ2VkQ291bnRyeSk7XG4gICAgY29uc3QgaXNDb3VudHJ5Q2hhbmdlZCA9IGNoYW5nZWRDb3VudHJ5IHx8IGRldGVjdGVkQ2FsbGluZ0NvZGUgIT09IHRoaXMuc2VsZWN0ZWRDYWxsaW5nQ29kZTtcblxuICAgIGlmIChpc0NvdW50cnlDaGFuZ2VkICYmIGRldGVjdGVkQ2FsbGluZ0NvZGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsaW5nQ29kZSA9IGRldGVjdGVkQ2FsbGluZ0NvZGU7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnRyeUNvZGUgPSB0aGlzLmdldENvdW50cnlCeUNhbGxpbmdDb2RlKHRoaXMuc2VsZWN0ZWRDYWxsaW5nQ29kZSk7XG5cbiAgICBpZiAoIWNvdW50cnlDb2RlKSB7XG4gICAgICB0aGlzLnBob25lRm9ybWF0dGVkID0gdmFsdWU7XG4gICAgICB0aGlzLnBob25lVmFsaWQgPSBmYWxzZTtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5hdGlvbmFsUGFydCA9IHZhbHVlLnJlcGxhY2UodGhpcy5zZWxlY3RlZENhbGxpbmdDb2RlLCAnJykucmVwbGFjZSgvW15cXGQrXS9nLCAnJyk7XG5cbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgQXNZb3VUeXBlKGNvdW50cnlDb2RlKTtcbiAgICB0aGlzLnBob25lRm9ybWF0dGVkID0gZm9ybWF0dGVyLmlucHV0KG5hdGlvbmFsUGFydCk7XG5cbiAgICB0aGlzLnBlcmZvcm1WYWx1ZShuYXRpb25hbFBhcnQpO1xuXG4gICAgdGhpcy5waG9uZVZhbGlkID0gaXNWYWxpZFBob25lTnVtYmVyKG5hdGlvbmFsUGFydCwgY291bnRyeUNvZGUpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICB9XG5cbiAgZGlzYWJsZVRvQmVEaXJ0eT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgX29uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcblxuICBfb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0cy5maXJzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBfb25Gb2N1cygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBfb25CbHVyKCkge1xuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBvbkNvdW50cnlDaGFuZ2UoKSB7XG4gICAgdGhpcy5mb3JtYXRWYWx1ZSh0aGlzLl92YWx1ZSEsIHRydWUpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0TWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvdW50cnlDb2RlID0gdGhpcy5nZXRDb3VudHJ5QnlDYWxsaW5nQ29kZSh0aGlzLnNlbGVjdGVkQ2FsbGluZ0NvZGUpO1xuXG4gICAgICBpZiAoIWNvdW50cnlDb2RlKSByZXR1cm4gMjA7XG5cbiAgICAgIGNvbnN0IGV4YW1wbGUgPSBnZXRFeGFtcGxlTnVtYmVyKGNvdW50cnlDb2RlLCBleGFtcGxlcyk7XG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPSBuZXcgQXNZb3VUeXBlKGNvdW50cnlDb2RlKS5pbnB1dChleGFtcGxlIS5uYXRpb25hbE51bWJlcik7XG5cbiAgICAgIHJldHVybiBmb3JtYXR0ZWQubGVuZ3RoO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIDIwO1xuICAgIH1cbiAgfVxuXG4gIG9uSGFuZGxlU2VhcmNoU2VsZWN0KHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3JtYWxpemVkUXVlcnkgPSBxdWVyeS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIHRoaXMuY291bnRyaWVzRmlsdGVyZWQgPSB0aGlzLmNvdW50cmllcy5maWx0ZXIoKHsgbmFtZSB9KSA9PiB7XG4gICAgICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -71,7 +71,7 @@ export class MonkeyModalComponent {
71
71
  <ng-content select="[monkey-modal-content]"></ng-content>
72
72
  <ng-content select="monkey-modal-actions"></ng-content>
73
73
  <ng-content select="[monkey-modal-actions]"></ng-content>
74
- `, isInline: true, styles: ["monkey-modal{width:100%;height:100%;display:flex;flex-direction:column;background:#fff;border-radius:8px}.mecx-modal{opacity:0;animation:modalFadeIn .2s ease-out forwards;transition:opacity .15s ease-in}.mecx-modal.fade-out{animation:modalFadeOut .15s ease-in forwards}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes modalFadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}.mecx-modal-header{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--mecx-color-gray-200);padding:12px;position:relative}.mecx-modal-header-group{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px}.mecx-modal-header-title{display:flex;gap:8px;align-items:center;justify-content:flex-start}.mecx-modal-header-icon{padding:8px;display:flex;align-items:center;justify-content:center;background:var(--mecx-color-gray-100);border-radius:8px;font-size:24px;color:var(--mecx-color-gray-900)}.mecx-modal-title{font-size:18px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.54px;color:var(--mecx-color-gray-900)}.mecx-modal-subtitle{font-size:14px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.42px;color:var(--mecx-color-gray-700)}.mecx-modal-content{display:block;flex-grow:1;box-sizing:border-box;overflow:auto;max-height:65vh;padding:12px;scrollbar-color:var(--mecx-color-gray-400) transparent}.mecx-modal-actions{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--mecx-color-gray-200);padding:12px}.mecx-modal-actions.align-start{justify-content:flex-start}.mecx-modal-actions.align-center{justify-content:center}.mecx-modal-actions.align-end{justify-content:flex-end}.mecx-modal-overlay{background:#00000052}.monkey-modal-panel{padding:16px}.monkey-modal-panel.monkey-modal-fullscreen{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;padding:0}.monkey-modal-panel.monkey-modal-fullscreen monkey-modal{border-radius:0}.monkey-modal-panel.monkey-modal-fullscreen monkey-modal .mecx-modal-content{max-height:100%}\n"], dependencies: [{ kind: "component", type: i3.MonkeyIconButtonComponent, selector: "monkey-icon-button", inputs: ["type", "size", "disabled", "icon", "id"] }, { kind: "component", type: i4.MonkeyIconComponent, selector: "monkey-icon", inputs: ["icon", "size", "id"] }], encapsulation: i0.ViewEncapsulation.None }); }
74
+ `, isInline: true, styles: ["monkey-modal{width:100%;height:100%;display:flex;flex-direction:column;background:#fff;border-radius:8px}.mecx-modal{opacity:0;animation:modal-fade-in .2s ease-out forwards;transition:opacity .15s ease-in}.mecx-modal.fade-out{animation:modal-fade-out .15s ease-in forwards}@keyframes modal-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes modal-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}.mecx-modal-header{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--mecx-color-gray-200);padding:12px;position:relative}.mecx-modal-header-group{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px}.mecx-modal-header-title{display:flex;gap:8px;align-items:center;justify-content:flex-start}.mecx-modal-header-icon{padding:8px;display:flex;align-items:center;justify-content:center;background:var(--mecx-color-gray-100);border-radius:8px;font-size:24px;color:var(--mecx-color-gray-900)}.mecx-modal-title{font-size:18px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.54px;color:var(--mecx-color-gray-900)}.mecx-modal-subtitle{font-size:14px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.42px;color:var(--mecx-color-gray-700)}.mecx-modal-content{display:block;flex-grow:1;box-sizing:border-box;overflow:auto;max-height:65vh;padding:12px;scrollbar-color:var(--mecx-color-gray-400) transparent}.mecx-modal-actions{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--mecx-color-gray-200);padding:12px}.mecx-modal-actions.align-start{justify-content:flex-start}.mecx-modal-actions.align-center{justify-content:center}.mecx-modal-actions.align-end{justify-content:flex-end}.mecx-modal-overlay{background:#00000052}.monkey-modal-panel{padding:16px}.monkey-modal-panel.monkey-modal-fullscreen{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;padding:0}.monkey-modal-panel.monkey-modal-fullscreen monkey-modal{border-radius:0}.monkey-modal-panel.monkey-modal-fullscreen monkey-modal .mecx-modal-content{max-height:100%}\n"], dependencies: [{ kind: "component", type: i3.MonkeyIconButtonComponent, selector: "monkey-icon-button", inputs: ["type", "size", "disabled", "icon", "id"] }, { kind: "component", type: i4.MonkeyIconComponent, selector: "monkey-icon", inputs: ["icon", "size", "id"] }], encapsulation: i0.ViewEncapsulation.None }); }
75
75
  }
76
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyModalComponent, decorators: [{
77
77
  type: Component,
@@ -110,7 +110,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
110
110
  class: 'mecx-modal',
111
111
  tabindex: '-1',
112
112
  '[attr.id]': 'modalRef?.id || null'
113
- }, styles: ["monkey-modal{width:100%;height:100%;display:flex;flex-direction:column;background:#fff;border-radius:8px}.mecx-modal{opacity:0;animation:modalFadeIn .2s ease-out forwards;transition:opacity .15s ease-in}.mecx-modal.fade-out{animation:modalFadeOut .15s ease-in forwards}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes modalFadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}.mecx-modal-header{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--mecx-color-gray-200);padding:12px;position:relative}.mecx-modal-header-group{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px}.mecx-modal-header-title{display:flex;gap:8px;align-items:center;justify-content:flex-start}.mecx-modal-header-icon{padding:8px;display:flex;align-items:center;justify-content:center;background:var(--mecx-color-gray-100);border-radius:8px;font-size:24px;color:var(--mecx-color-gray-900)}.mecx-modal-title{font-size:18px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.54px;color:var(--mecx-color-gray-900)}.mecx-modal-subtitle{font-size:14px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.42px;color:var(--mecx-color-gray-700)}.mecx-modal-content{display:block;flex-grow:1;box-sizing:border-box;overflow:auto;max-height:65vh;padding:12px;scrollbar-color:var(--mecx-color-gray-400) transparent}.mecx-modal-actions{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--mecx-color-gray-200);padding:12px}.mecx-modal-actions.align-start{justify-content:flex-start}.mecx-modal-actions.align-center{justify-content:center}.mecx-modal-actions.align-end{justify-content:flex-end}.mecx-modal-overlay{background:#00000052}.monkey-modal-panel{padding:16px}.monkey-modal-panel.monkey-modal-fullscreen{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;padding:0}.monkey-modal-panel.monkey-modal-fullscreen monkey-modal{border-radius:0}.monkey-modal-panel.monkey-modal-fullscreen monkey-modal .mecx-modal-content{max-height:100%}\n"] }]
113
+ }, styles: ["monkey-modal{width:100%;height:100%;display:flex;flex-direction:column;background:#fff;border-radius:8px}.mecx-modal{opacity:0;animation:modal-fade-in .2s ease-out forwards;transition:opacity .15s ease-in}.mecx-modal.fade-out{animation:modal-fade-out .15s ease-in forwards}@keyframes modal-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes modal-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}.mecx-modal-header{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--mecx-color-gray-200);padding:12px;position:relative}.mecx-modal-header-group{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px}.mecx-modal-header-title{display:flex;gap:8px;align-items:center;justify-content:flex-start}.mecx-modal-header-icon{padding:8px;display:flex;align-items:center;justify-content:center;background:var(--mecx-color-gray-100);border-radius:8px;font-size:24px;color:var(--mecx-color-gray-900)}.mecx-modal-title{font-size:18px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.54px;color:var(--mecx-color-gray-900)}.mecx-modal-subtitle{font-size:14px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.42px;color:var(--mecx-color-gray-700)}.mecx-modal-content{display:block;flex-grow:1;box-sizing:border-box;overflow:auto;max-height:65vh;padding:12px;scrollbar-color:var(--mecx-color-gray-400) transparent}.mecx-modal-actions{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--mecx-color-gray-200);padding:12px}.mecx-modal-actions.align-start{justify-content:flex-start}.mecx-modal-actions.align-center{justify-content:center}.mecx-modal-actions.align-end{justify-content:flex-end}.mecx-modal-overlay{background:#00000052}.monkey-modal-panel{padding:16px}.monkey-modal-panel.monkey-modal-fullscreen{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;padding:0}.monkey-modal-panel.monkey-modal-fullscreen monkey-modal{border-radius:0}.monkey-modal-panel.monkey-modal-fullscreen monkey-modal .mecx-modal-content{max-height:100%}\n"] }]
114
114
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.OverlayRef, decorators: [{
115
115
  type: Optional
116
116
  }] }, { type: i2.MonkeyModalRef, decorators: [{
@@ -1,4 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const MONKEY_I18N_WRAPPER = new InjectionToken('');
3
3
  export const MONKEY_POPOVER_OPTIONS = new InjectionToken('MONKEY_POPOVER_OPTIONS');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi90b2tlbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBMEIsRUFBRSxDQUFDLENBQUM7QUFDbkYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQUMsd0JBQXdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IE1PTktFWV9JMThOX1dSQVBQRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QmVoYXZpb3JTdWJqZWN0PHN0cmluZz4+KCcnKTtcbmV4cG9ydCBjb25zdCBNT05LRVlfUE9QT1ZFUl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKCdNT05LRVlfUE9QT1ZFUl9PUFRJT05TJyk7XG4iXX0=
4
+ export const MONKEY_COUNTRY_CODE = new InjectionToken('+55');
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi90b2tlbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBMEIsRUFBRSxDQUFDLENBQUM7QUFDbkYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNuRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBUyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IE1PTktFWV9JMThOX1dSQVBQRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QmVoYXZpb3JTdWJqZWN0PHN0cmluZz4+KCcnKTtcbmV4cG9ydCBjb25zdCBNT05LRVlfUE9QT1ZFUl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKCdNT05LRVlfUE9QT1ZFUl9PUFRJT05TJyk7XG5leHBvcnQgY29uc3QgTU9OS0VZX0NPVU5UUllfQ09ERSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCcrNTUnKTtcbiJdfQ==