@ohioepa/oepa-ui-lib 1.2.0 → 1.2.1

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 (57) hide show
  1. package/esm2022/lib/account-search-input/account-search-input.component.mjs +9 -17
  2. package/esm2022/lib/account-search-input/account-search.service.mjs +31 -0
  3. package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +8 -16
  4. package/esm2022/lib/address/oepa-address.service.mjs +11 -5
  5. package/esm2022/lib/common-forms.module.mjs +36 -1
  6. package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +9 -8
  7. package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +11 -5
  8. package/esm2022/lib/entity/entity.service.mjs +11 -5
  9. package/esm2022/lib/file-upload/file-upload.component.mjs +8 -7
  10. package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +7 -6
  11. package/esm2022/lib/lynx-image-upload/lynx.service.mjs +11 -5
  12. package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +8 -7
  13. package/esm2022/lib/oepa-account/account-service.mjs +62 -0
  14. package/esm2022/lib/oepa-file-utils/oepa-file-util.service.mjs +227 -0
  15. package/esm2022/lib/oepa-reference/oepa-reference.service.mjs +47 -0
  16. package/esm2022/lib/oepa-user-account/oepa-user-account.service.mjs +304 -0
  17. package/esm2022/lib/parameter/parameter.service.mjs +11 -5
  18. package/esm2022/lib/params-help-button/params-help-button.component.mjs +8 -8
  19. package/esm2022/lib/params-help-button/params-help.service.mjs +26 -0
  20. package/esm2022/lib/pin-modal/oepa-pin.service.mjs +11 -5
  21. package/esm2022/lib/pin-modal/pin-modal.component.mjs +2 -2
  22. package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +2 -2
  23. package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +11 -5
  24. package/esm2022/lib/table/p-table/p-table.component.mjs +9 -8
  25. package/esm2022/lib/table/table-export.service.mjs +14 -5
  26. package/esm2022/lib/table/table.component.mjs +13 -12
  27. package/fesm2022/ohioepa-oepa-ui-lib.mjs +886 -155
  28. package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
  29. package/lib/account-search-input/account-search-input.component.d.ts +3 -4
  30. package/lib/account-search-input/account-search.service.d.ts +12 -0
  31. package/lib/account-search-modal/account-search-modal.component.d.ts +3 -5
  32. package/lib/address/oepa-address.service.d.ts +2 -1
  33. package/lib/common-forms.module.d.ts +2 -0
  34. package/lib/edoc-attachment/edoc-attachment.component.d.ts +2 -1
  35. package/lib/edoc-attachment/edoc-attachment.service.d.ts +2 -1
  36. package/lib/entity/entity.service.d.ts +2 -1
  37. package/lib/file-upload/file-upload.component.d.ts +2 -1
  38. package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +2 -1
  39. package/lib/lynx-image-upload/lynx.service.d.ts +2 -1
  40. package/lib/multi-file-upload/multi-file-upload.component.d.ts +2 -1
  41. package/lib/oepa-account/account-service.d.ts +23 -0
  42. package/lib/oepa-file-utils/oepa-file-util.service.d.ts +53 -0
  43. package/lib/oepa-reference/oepa-reference.service.d.ts +26 -0
  44. package/lib/oepa-user-account/oepa-user-account.service.d.ts +122 -0
  45. package/lib/parameter/parameter.service.d.ts +2 -1
  46. package/lib/params-help-button/params-help-button.component.d.ts +3 -3
  47. package/lib/params-help-button/params-help.service.d.ts +11 -0
  48. package/lib/pin-modal/oepa-pin.service.d.ts +2 -1
  49. package/lib/pin-modal/pin-modal.component.d.ts +2 -1
  50. package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +1 -1
  51. package/lib/shopping-cart/shopping-cart.service.d.ts +2 -1
  52. package/lib/table/p-table/p-table.component.d.ts +2 -1
  53. package/lib/table/table-export.service.d.ts +2 -1
  54. package/lib/table/table.component.d.ts +1 -1
  55. package/ohioepa-oepa-ui-lib-1.2.1.tgz +0 -0
  56. package/package.json +1 -1
  57. package/ohioepa-oepa-ui-lib-1.2.0.tgz +0 -0
@@ -0,0 +1,227 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { HttpHeaders } from '@angular/common/http';
3
+ import { map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ /**
7
+ * NOTE: Needed this because of problems importing mime or mime-types library
8
+ */
9
+ const MIME_TYPES = {
10
+ '.aac': 'audio/aac',
11
+ '.abw': 'application/x-abiword',
12
+ '.arc': 'application/octet-stream',
13
+ '.avi': 'video/x-msvideo',
14
+ '.azw': 'application/vnd.amazon.ebook',
15
+ '.bin': 'application/octet-stream',
16
+ '.bmp': 'image/bmp',
17
+ '.bz': 'application/x-bzip',
18
+ '.bz2': 'application/x-bzip2',
19
+ '.csh': 'application/x-csh',
20
+ '.css': 'text/css',
21
+ '.csv': 'text/csv',
22
+ '.doc': 'application/msword',
23
+ '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
24
+ '.eot': 'application/vnd.ms-fontobject',
25
+ '.epub': 'application/epub+zip',
26
+ '.es': 'application/ecmascript',
27
+ '.gif': 'image/gif',
28
+ '.htm': 'text/html',
29
+ '.html': 'text/html',
30
+ '.ico': 'image/x-icon',
31
+ '.ics': 'text/calendar',
32
+ '.jar': 'application/java-archive',
33
+ '.jpeg': 'image/jpeg',
34
+ '.jpg': 'image/jpeg',
35
+ '.js': 'application/javascript',
36
+ '.json': 'application/json',
37
+ '.mid': 'audio/midi audio/x-midi',
38
+ '.midi': 'audio/midi audio/x-midi',
39
+ '.mpeg': 'video/mpeg',
40
+ '.mpkg': 'application/vnd.apple.installer+xml',
41
+ '.odp': 'application/vnd.oasis.opendocument.presentation',
42
+ '.ods': 'application/vnd.oasis.opendocument.spreadsheet',
43
+ '.odt': 'application/vnd.oasis.opendocument.text',
44
+ '.oga': 'audio/ogg',
45
+ '.ogv': 'video/ogg',
46
+ '.ogx': 'application/ogg',
47
+ '.otf': 'font/otf',
48
+ '.png': 'image/png',
49
+ '.pdf': 'application/pdf',
50
+ '.ppt': 'application/vnd.ms-powerpoint',
51
+ '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
52
+ '.rar': 'application/x-rar-compressed',
53
+ '.rtf': 'application/rtf',
54
+ '.sh': 'application/x-sh',
55
+ '.svg': 'image/svg+xml',
56
+ '.swf': 'application/x-shockwave-flash',
57
+ '.tar': 'application/x-tar',
58
+ '.tif': 'image/tiff',
59
+ '.tiff': 'image/tiff',
60
+ '.ts': 'application/typescript',
61
+ '.ttf': 'font/ttf',
62
+ '.txt': 'text/plain',
63
+ '.vsd': 'application/vnd.visio',
64
+ '.wav': 'audio/wav',
65
+ '.weba': 'audio/webm',
66
+ '.webm': 'video/webm',
67
+ '.webp': 'image/webp',
68
+ '.woff': 'font/woff',
69
+ '.woff2': 'font/woff2',
70
+ '.xhtml': 'application/xhtml+xml',
71
+ '.xls': 'application/vnd.ms-excel',
72
+ '.xlsm': 'application/vnd.ms-excel.sheet.macroEnabled.12',
73
+ '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
74
+ '.xml': 'application/xml',
75
+ '.xul': 'application/vnd.mozilla.xul+xml',
76
+ '.zip': 'application/zip',
77
+ '.3gp': 'video/3gpp',
78
+ '.7z': 'application/x-7z-compressed'
79
+ };
80
+ /**
81
+ * Collection of methods for uploading/downloading and displaying files.
82
+ */
83
+ export class OepaFileUtilService {
84
+ http;
85
+ ebizRootURL;
86
+ uploadUrl = '/file/upload/url';
87
+ fileUtilUrl = '/ebiz/api/v1/fileutil';
88
+ downloadUrl = this.fileUtilUrl + '/downloadAttachment';
89
+ constructor(http, ebizRootURL) {
90
+ this.http = http;
91
+ this.ebizRootURL = ebizRootURL;
92
+ this.uploadUrl = ebizRootURL + this.uploadUrl;
93
+ this.fileUtilUrl = ebizRootURL + this.fileUtilUrl;
94
+ this.downloadUrl = ebizRootURL + this.downloadUrl;
95
+ }
96
+ /**
97
+ * Return a single OepaAttachment object from the contents of file.
98
+ * The file will have been saved on the server if this method succeeds.
99
+ * @param file
100
+ */
101
+ uploadFile(file) {
102
+ const attachment = {};
103
+ attachment.userFilename = file.name;
104
+ // return new Observable<OepaAttachment>((observer) => observer.next(attachment));
105
+ const headers = new HttpHeaders();
106
+ const formData = new FormData();
107
+ formData.append('file', file, file.name);
108
+ /** No need to include Content-Type in Angular 4 */
109
+ headers.append('Content-Type', 'multipart/form-data');
110
+ headers.append('Accept', 'application/json');
111
+ return this.http.post(this.uploadUrl, formData)
112
+ .pipe(map((response) => {
113
+ let uploadedAttachment = {};
114
+ const attachments = response['attachments'];
115
+ if (attachments.length === 1) {
116
+ uploadedAttachment = attachments[0];
117
+ }
118
+ return uploadedAttachment;
119
+ }));
120
+ }
121
+ /**
122
+ * Download an attachment from the server. The location and systemFileName
123
+ * attributes of the attachment must be set and represent a valid file
124
+ * on the file system.
125
+ * @param attachment
126
+ */
127
+ downloadAttachment(attachment) {
128
+ const headers = new HttpHeaders();
129
+ headers.append('Content-type', 'application/json;odata=verbose');
130
+ return this.http.post(this.downloadUrl, attachment, { headers: headers, responseType: 'blob' });
131
+ }
132
+ /**
133
+ * Open the file represented by data in the browser.
134
+ * @param data binary file data.
135
+ * @param mimeType the file's mime type.
136
+ * @param fileName optional name for the downloaded file.
137
+ */
138
+ downloadFile(data, mimeType, fileName) {
139
+ if (data && mimeType) {
140
+ const blob = new Blob([data], { type: mimeType });
141
+ const url = window.URL.createObjectURL(blob);
142
+ if (!fileName || fileName.length === 0) {
143
+ window.open(url);
144
+ }
145
+ else {
146
+ this.downLoadFileWithFileName(url, fileName);
147
+ }
148
+ }
149
+ else {
150
+ console.log('ERROR: downloadFile: missing data or mimeType');
151
+ }
152
+ }
153
+ /**
154
+ * Utility method for downloading a file with a specific name.
155
+ * @param url
156
+ * @param fileName
157
+ */
158
+ downLoadFileWithFileName(url, fileName) {
159
+ const a = document.createElement('a');
160
+ document.body.appendChild(a);
161
+ a.setAttribute('style', 'display: none');
162
+ a.setAttribute('href', url);
163
+ a.setAttribute('download', fileName);
164
+ a.click();
165
+ }
166
+ /**
167
+ * Helper method to see if current browser is internet explorer
168
+ */
169
+ browserIsIE() {
170
+ const ua = window.navigator.userAgent;
171
+ const msie = ua.indexOf('MSIE ');
172
+ if (msie > -1) {
173
+ return true;
174
+ }
175
+ const trident = ua.indexOf('Trident/');
176
+ if (trident > -1) {
177
+ return true;
178
+ }
179
+ const edge = ua.indexOf('Edge/');
180
+ if (edge > -1) {
181
+ return true;
182
+ }
183
+ return false;
184
+ }
185
+ /**
186
+ * Determine the mime time for fileName (based on its extension).
187
+ * @param fileName
188
+ */
189
+ mimeTypeForFile(fileName) {
190
+ let mimeType;
191
+ if (fileName && fileName.lastIndexOf('.') > -1) {
192
+ const ext = fileName.substring(fileName.lastIndexOf('.'));
193
+ mimeType = MIME_TYPES[ext.toLowerCase()];
194
+ }
195
+ if (!mimeType) {
196
+ console.log('ERROR: mimeTypeForFile: No mime type found for file: ' + fileName);
197
+ }
198
+ return mimeType;
199
+ }
200
+ mimeTypeForExtension(extension) {
201
+ let mimeType;
202
+ let ext;
203
+ if (extension) {
204
+ ext = extension.toLowerCase();
205
+ if (!ext.startsWith('.')) {
206
+ ext = '.' + ext;
207
+ }
208
+ mimeType = MIME_TYPES[ext];
209
+ }
210
+ if (!mimeType) {
211
+ console.log('ERROR: mimeTypeForExtension: No mime type found for extension: ' + extension);
212
+ }
213
+ return mimeType;
214
+ }
215
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaFileUtilService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
216
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaFileUtilService, providedIn: 'root' });
217
+ }
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaFileUtilService, decorators: [{
219
+ type: Injectable,
220
+ args: [{
221
+ providedIn: 'root'
222
+ }]
223
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
224
+ type: Inject,
225
+ args: ['ebizRootURL']
226
+ }] }] });
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS1maWxlLXV0aWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS1maWxlLXV0aWxzL29lcGEtZmlsZS11dGlsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3JDOztHQUVHO0FBQ0gsTUFBTyxVQUFVLEdBQU87SUFDeEIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsTUFBTSxFQUFFLHVCQUF1QjtJQUMvQixNQUFNLEVBQUUsMEJBQTBCO0lBQ2xDLE1BQU0sRUFBRSxpQkFBaUI7SUFDekIsTUFBTSxFQUFFLDhCQUE4QjtJQUN0QyxNQUFNLEVBQUUsMEJBQTBCO0lBQ2xDLE1BQU0sRUFBRSxXQUFXO0lBQ25CLEtBQUssRUFBRSxvQkFBb0I7SUFDM0IsTUFBTSxFQUFFLHFCQUFxQjtJQUM3QixNQUFNLEVBQUUsbUJBQW1CO0lBQzNCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsT0FBTyxFQUFFLHlFQUF5RTtJQUNsRixNQUFNLEVBQUUsK0JBQStCO0lBQ3ZDLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsS0FBSyxFQUFFLHdCQUF3QjtJQUMvQixNQUFNLEVBQUUsV0FBVztJQUNuQixNQUFNLEVBQUUsV0FBVztJQUNuQixPQUFPLEVBQUUsV0FBVztJQUNwQixNQUFNLEVBQUUsY0FBYztJQUN0QixNQUFNLEVBQUUsZUFBZTtJQUN2QixNQUFNLEVBQUUsMEJBQTBCO0lBQ2xDLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE1BQU0s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WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGlFQUFpRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO3dHQXZJVSxtQkFBbUIsNENBS2dCLGFBQWE7NEdBTGhELG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNd0MsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9lcGFBdHRhY2htZW50IH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuLyoqXG4gKiBOT1RFOiBOZWVkZWQgdGhpcyBiZWNhdXNlIG9mIHByb2JsZW1zIGltcG9ydGluZyBtaW1lIG9yIG1pbWUtdHlwZXMgbGlicmFyeVxuICovXG5jb25zdCAgTUlNRV9UWVBFUzphbnkgPSB7XG4nLmFhYyc6ICdhdWRpby9hYWMnLFxuJy5hYncnOiAnYXBwbGljYXRpb24veC1hYml3b3JkJyxcbicuYXJjJzogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4nLmF2aSc6ICd2aWRlby94LW1zdmlkZW8nLFxuJy5hencnOiAnYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9vaycsXG4nLmJpbic6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuJy5ibXAnOiAnaW1hZ2UvYm1wJyxcbicuYnonOiAnYXBwbGljYXRpb24veC1iemlwJyxcbicuYnoyJzogJ2FwcGxpY2F0aW9uL3gtYnppcDInLFxuJy5jc2gnOiAnYXBwbGljYXRpb24veC1jc2gnLFxuJy5jc3MnOiAndGV4dC9jc3MnLFxuJy5jc3YnOiAndGV4dC9jc3YnLFxuJy5kb2MnOiAnYXBwbGljYXRpb24vbXN3b3JkJyxcbicuZG9jeCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsXG4nLmVvdCc6ICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCcsXG4nLmVwdWInOiAnYXBwbGljYXRpb24vZXB1Yit6aXAnLFxuJy5lcyc6ICdhcHBsaWNhdGlvbi9lY21hc2NyaXB0JyxcbicuZ2lmJzogJ2ltYWdlL2dpZicsXG4nLmh0bSc6ICd0ZXh0L2h0bWwnLFxuJy5odG1sJzogJ3RleHQvaHRtbCcsXG4nLmljbyc6ICdpbWFnZS94LWljb24nLFxuJy5pY3MnOiAndGV4dC9jYWxlbmRhcicsXG4nLmphcic6ICdhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUnLFxuJy5qcGVnJzogJ2ltYWdlL2pwZWcnLFxuJy5qcGcnOiAnaW1hZ2UvanBlZycsXG4nLmpzJzogJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnLFxuJy5qc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuJy5taWQnOiAnYXVkaW8vbWlkaSBhdWRpby94LW1pZGknLFxuJy5taWRpJzogJ2F1ZGlvL21pZGkgYXVkaW8veC1taWRpJyxcbicubXBlZyc6ICd2aWRlby9tcGVnJyxcbicubXBrZyc6ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbCcsXG4nLm9kcCc6ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbicsXG4nLm9kcyc6ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0Jyxcbicub2R0JzogJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCcsXG4nLm9nYSc6ICdhdWRpby9vZ2cnLFxuJy5vZ3YnOiAndmlkZW8vb2dnJyxcbicub2d4JzogJ2FwcGxpY2F0aW9uL29nZycsXG4nLm90Zic6ICdmb250L290ZicsXG4nLnBuZyc6ICdpbWFnZS9wbmcnLFxuJy5wZGYnOiAnYXBwbGljYXRpb24vcGRmJyxcbicucHB0JzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JyxcbicucHB0eCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJyxcbicucmFyJzogJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLFxuJy5ydGYnOiAnYXBwbGljYXRpb24vcnRmJyxcbicuc2gnOiAnYXBwbGljYXRpb24veC1zaCcsXG4nLnN2Zyc6ICdpbWFnZS9zdmcreG1sJyxcbicuc3dmJzogJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJyxcbicudGFyJzogJ2FwcGxpY2F0aW9uL3gtdGFyJyxcbicudGlmJzogJ2ltYWdlL3RpZmYnLFxuJy50aWZmJzogJ2ltYWdlL3RpZmYnLFxuJy50cyc6ICdhcHBsaWNhdGlvbi90eXBlc2NyaXB0JyxcbicudHRmJzogJ2ZvbnQvdHRmJyxcbicudHh0JzogJ3RleHQvcGxhaW4nLFxuJy52c2QnOiAnYXBwbGljYXRpb24vdm5kLnZpc2lvJyxcbicud2F2JzogJ2F1ZGlvL3dhdicsXG4nLndlYmEnOiAnYXVkaW8vd2VibScsXG4nLndlYm0nOiAndmlkZW8vd2VibScsXG4nLndlYnAnOiAnaW1hZ2Uvd2VicCcsXG4nLndvZmYnOiAnZm9udC93b2ZmJyxcbicud29mZjInOiAnZm9udC93b2ZmMicsXG4nLnhodG1sJzogJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcsXG4nLnhscyc6ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuJy54bHNtJzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQuMTInLFxuJy54bHN4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbicueG1sJzogJ2FwcGxpY2F0aW9uL3htbCcsXG4nLnh1bCc6ICdhcHBsaWNhdGlvbi92bmQubW96aWxsYS54dWwreG1sJyxcbicuemlwJzogJ2FwcGxpY2F0aW9uL3ppcCcsXG4nLjNncCc6ICd2aWRlby8zZ3BwJyxcbicuN3onOiAnYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkJ1xufTtcblxuZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyBmb3IgdXBsb2FkaW5nL2Rvd25sb2FkaW5nIGFuZCBkaXNwbGF5aW5nIGZpbGVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPZXBhRmlsZVV0aWxTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB1cGxvYWRVcmwgPSAnL2ZpbGUvdXBsb2FkL3VybCc7XG4gIHByaXZhdGUgZmlsZVV0aWxVcmwgPSAnL2ViaXovYXBpL3YxL2ZpbGV1dGlsJ1xuICBwcml2YXRlIGRvd25sb2FkVXJsID0gdGhpcy5maWxlVXRpbFVybCArICcvZG93bmxvYWRBdHRhY2htZW50JztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoJ2ViaXpSb290VVJMJykgcHJpdmF0ZSBlYml6Um9vdFVSTDogc3RyaW5nKSB7XG4gICAgdGhpcy51cGxvYWRVcmwgPSBlYml6Um9vdFVSTCArIHRoaXMudXBsb2FkVXJsO1xuICAgIHRoaXMuZmlsZVV0aWxVcmwgPSBlYml6Um9vdFVSTCArIHRoaXMuZmlsZVV0aWxVcmw7XG4gICAgdGhpcy5kb3dubG9hZFVybCA9IGViaXpSb290VVJMICsgdGhpcy5kb3dubG9hZFVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzaW5nbGUgT2VwYUF0dGFjaG1lbnQgb2JqZWN0IGZyb20gdGhlIGNvbnRlbnRzIG9mIGZpbGUuXG4gICAqIFRoZSBmaWxlIHdpbGwgaGF2ZSBiZWVuIHNhdmVkIG9uIHRoZSBzZXJ2ZXIgaWYgdGhpcyBtZXRob2Qgc3VjY2VlZHMuXG4gICAqIEBwYXJhbSBmaWxlXG4gICAqL1xuICBwdWJsaWMgdXBsb2FkRmlsZShmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxPZXBhQXR0YWNobWVudD4ge1xuICAgIGNvbnN0IGF0dGFjaG1lbnQ6IE9lcGFBdHRhY2htZW50ID0ge307XG4gICAgYXR0YWNobWVudC51c2VyRmlsZW5hbWUgPSBmaWxlLm5hbWU7XG4gICAgLy8gcmV0dXJuIG5ldyBPYnNlcnZhYmxlPE9lcGFBdHRhY2htZW50Pigob2JzZXJ2ZXIpID0+IG9ic2VydmVyLm5leHQoYXR0YWNobWVudCkpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgIC8qKiBObyBuZWVkIHRvIGluY2x1ZGUgQ29udGVudC1UeXBlIGluIEFuZ3VsYXIgNCAqL1xuICAgIGhlYWRlcnMuYXBwZW5kKCdDb250ZW50LVR5cGUnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpO1xuICAgIGhlYWRlcnMuYXBwZW5kKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnVwbG9hZFVybCwgZm9ybURhdGEpXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOmFueSkgPT4ge1xuICAgICAgICBsZXQgdXBsb2FkZWRBdHRhY2htZW50OiBPZXBhQXR0YWNobWVudCA9IHt9O1xuICAgICAgICBjb25zdCBhdHRhY2htZW50czogQXJyYXk8T2VwYUF0dGFjaG1lbnQ+ID0gcmVzcG9uc2VbJ2F0dGFjaG1lbnRzJ107XG4gICAgICAgIGlmIChhdHRhY2htZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICB1cGxvYWRlZEF0dGFjaG1lbnQgPSBhdHRhY2htZW50c1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXBsb2FkZWRBdHRhY2htZW50O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERvd25sb2FkIGFuIGF0dGFjaG1lbnQgZnJvbSB0aGUgc2VydmVyLiBUaGUgbG9jYXRpb24gYW5kIHN5c3RlbUZpbGVOYW1lXG4gICAqIGF0dHJpYnV0ZXMgb2YgdGhlIGF0dGFjaG1lbnQgbXVzdCBiZSBzZXQgYW5kIHJlcHJlc2VudCBhIHZhbGlkIGZpbGVcbiAgICogb24gdGhlIGZpbGUgc3lzdGVtLlxuICAgKiBAcGFyYW0gYXR0YWNobWVudFxuICAgKi9cbiAgcHVibGljIGRvd25sb2FkQXR0YWNobWVudChhdHRhY2htZW50OiBPZXBhQXR0YWNobWVudCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGhlYWRlcnMuYXBwZW5kKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24vanNvbjtvZGF0YT12ZXJib3NlJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZG93bmxvYWRVcmwsIGF0dGFjaG1lbnQsIHsgaGVhZGVyczogaGVhZGVycywgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiB0aGUgZmlsZSByZXByZXNlbnRlZCBieSBkYXRhIGluIHRoZSBicm93c2VyLlxuICAgKiBAcGFyYW0gZGF0YSBiaW5hcnkgZmlsZSBkYXRhLlxuICAgKiBAcGFyYW0gbWltZVR5cGUgdGhlIGZpbGUncyBtaW1lIHR5cGUuXG4gICAqIEBwYXJhbSBmaWxlTmFtZSBvcHRpb25hbCBuYW1lIGZvciB0aGUgZG93bmxvYWRlZCBmaWxlLlxuICAgKi9cbiAgcHVibGljIGRvd25sb2FkRmlsZShkYXRhOiBhbnksIG1pbWVUeXBlOiBzdHJpbmcsIGZpbGVOYW1lPzogc3RyaW5nKSB7XG4gICAgaWYgKGRhdGEgJiYgbWltZVR5cGUpIHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YV0sIHsgdHlwZTogbWltZVR5cGUgfSk7XG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIGlmICghZmlsZU5hbWUgfHwgZmlsZU5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKHVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRvd25Mb2FkRmlsZVdpdGhGaWxlTmFtZSh1cmwsIGZpbGVOYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ0VSUk9SOiBkb3dubG9hZEZpbGU6IG1pc3NpbmcgZGF0YSBvciBtaW1lVHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVdGlsaXR5IG1ldGhvZCBmb3IgZG93bmxvYWRpbmcgYSBmaWxlIHdpdGggYSBzcGVjaWZpYyBuYW1lLlxuICAgKiBAcGFyYW0gdXJsXG4gICAqIEBwYXJhbSBmaWxlTmFtZVxuICAgKi9cbiAgcHJpdmF0ZSBkb3duTG9hZEZpbGVXaXRoRmlsZU5hbWUodXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmUnKTtcbiAgICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xuICAgIGEuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIHNlZSBpZiBjdXJyZW50IGJyb3dzZXIgaXMgaW50ZXJuZXQgZXhwbG9yZXJcbiAgICovXG4gIHB1YmxpYyBicm93c2VySXNJRSgpIHtcbiAgICBjb25zdCB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1YS5pbmRleE9mKCdNU0lFICcpO1xuICAgIGlmIChtc2llID4gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0cmlkZW50ID0gdWEuaW5kZXhPZignVHJpZGVudC8nKTtcbiAgICBpZiAodHJpZGVudCA+IC0xKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZWRnZSA9IHVhLmluZGV4T2YoJ0VkZ2UvJyk7XG4gICAgaWYgKGVkZ2UgPiAtMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIG1pbWUgdGltZSBmb3IgZmlsZU5hbWUgKGJhc2VkIG9uIGl0cyBleHRlbnNpb24pLlxuICAgKiBAcGFyYW0gZmlsZU5hbWVcbiAgICovXG4gIHB1YmxpYyBtaW1lVHlwZUZvckZpbGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IG1pbWVUeXBlITogc3RyaW5nO1xuICAgIGlmIChmaWxlTmFtZSAmJiBmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIGNvbnN0IGV4dCA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgIG1pbWVUeXBlID0gTUlNRV9UWVBFU1tleHQudG9Mb3dlckNhc2UoKV07XG4gICAgfVxuICAgIGlmICghbWltZVR5cGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFUlJPUjogbWltZVR5cGVGb3JGaWxlOiBObyBtaW1lIHR5cGUgZm91bmQgZm9yIGZpbGU6ICcgKyBmaWxlTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBtaW1lVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBtaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IG1pbWVUeXBlITogc3RyaW5nO1xuICAgIGxldCBleHQ6IHN0cmluZztcbiAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICBleHQgPSBleHRlbnNpb24udG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICghZXh0LnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgICBleHQgPSAnLicgKyBleHQ7XG4gICAgICB9XG4gICAgICBtaW1lVHlwZSA9IE1JTUVfVFlQRVNbZXh0XTtcbiAgICB9XG4gICAgaWYgKCFtaW1lVHlwZSkge1xuICAgICAgY29uc29sZS5sb2coJ0VSUk9SOiBtaW1lVHlwZUZvckV4dGVuc2lvbjogTm8gbWltZSB0eXBlIGZvdW5kIGZvciBleHRlbnNpb246ICcgKyBleHRlbnNpb24pO1xuICAgIH1cbiAgICByZXR1cm4gbWltZVR5cGU7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,47 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common/http";
4
+ export class OepaReferenceService {
5
+ http;
6
+ ebizRootURL;
7
+ countiesUrl = '/ebiz/api/v1/references/counties/state';
8
+ districtsUrl = '/ebiz/api/v1/references/districts';
9
+ doLaaTypessUrl = '/ebiz/api/v1/asbestos/references/doLaaTypes';
10
+ constructor(http, ebizRootURL) {
11
+ this.http = http;
12
+ this.ebizRootURL = ebizRootURL;
13
+ this.countiesUrl = ebizRootURL + this.countiesUrl;
14
+ this.districtsUrl = ebizRootURL + this.districtsUrl;
15
+ this.doLaaTypessUrl = ebizRootURL + this.doLaaTypessUrl;
16
+ }
17
+ /**
18
+ * Retrieve counties
19
+ */
20
+ getCounties(state) {
21
+ return this.http.get(this.countiesUrl + '/' + state);
22
+ }
23
+ /**
24
+ * Retrieve districts
25
+ */
26
+ getDistricts() {
27
+ return this.http.get(this.districtsUrl);
28
+ }
29
+ /**
30
+ * Retrieve DO/LAAs
31
+ */
32
+ getDoLaaTypes() {
33
+ return this.http.get(this.doLaaTypessUrl);
34
+ }
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaReferenceService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
36
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaReferenceService, providedIn: 'root' });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaReferenceService, decorators: [{
39
+ type: Injectable,
40
+ args: [{
41
+ providedIn: 'root'
42
+ }]
43
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
44
+ type: Inject,
45
+ args: ['ebizRootURL']
46
+ }] }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS1yZWZlcmVuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS1yZWZlcmVuY2Uvb2VwYS1yZWZlcmVuY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUW5ELE1BQU0sT0FBTyxvQkFBb0I7SUFLWDtJQUFpRDtJQUozRCxXQUFXLEdBQUcsd0NBQXdDLENBQUM7SUFDdkQsWUFBWSxHQUFHLG1DQUFtQyxDQUFDO0lBQ25ELGNBQWMsR0FBRyw2Q0FBNkMsQ0FBQztJQUV6RSxZQUFvQixJQUFnQixFQUFpQyxXQUFtQjtRQUFwRSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQWlDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ3RGLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRCxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxLQUFhO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXVCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7TUFFRTtJQUNLLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBdUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7TUFFRTtJQUNLLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBdUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7d0dBOUJTLG9CQUFvQiw0Q0FLZSxhQUFhOzRHQUxoRCxvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTXdDLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT0VQQVJlZmVyZW5jZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT2VwYVJlZmVyZW5jZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgY291bnRpZXNVcmwgPSAnL2ViaXovYXBpL3YxL3JlZmVyZW5jZXMvY291bnRpZXMvc3RhdGUnO1xuICAgIHByaXZhdGUgZGlzdHJpY3RzVXJsID0gJy9lYml6L2FwaS92MS9yZWZlcmVuY2VzL2Rpc3RyaWN0cyc7XG4gICAgcHJpdmF0ZSBkb0xhYVR5cGVzc1VybCA9ICcvZWJpei9hcGkvdjEvYXNiZXN0b3MvcmVmZXJlbmNlcy9kb0xhYVR5cGVzJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoJ2ViaXpSb290VVJMJykgcHJpdmF0ZSBlYml6Um9vdFVSTDogc3RyaW5nKSB7XG4gICAgdGhpcy5jb3VudGllc1VybCA9IGViaXpSb290VVJMICsgdGhpcy5jb3VudGllc1VybDtcbiAgICB0aGlzLmRpc3RyaWN0c1VybCA9IGViaXpSb290VVJMICsgdGhpcy5kaXN0cmljdHNVcmw7XG4gICAgdGhpcy5kb0xhYVR5cGVzc1VybCA9IGViaXpSb290VVJMICsgdGhpcy5kb0xhYVR5cGVzc1VybDtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBSZXRyaWV2ZSBjb3VudGllc1xuICAgICovXG4gICBwdWJsaWMgZ2V0Q291bnRpZXMoc3RhdGU6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8T0VQQVJlZmVyZW5jZT4+IHtcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXJyYXk8T0VQQVJlZmVyZW5jZT4+KHRoaXMuY291bnRpZXNVcmwgKyAnLycgKyBzdGF0ZSk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogUmV0cmlldmUgZGlzdHJpY3RzXG4gICAqL1xuICAgcHVibGljIGdldERpc3RyaWN0cygpOiBPYnNlcnZhYmxlPEFycmF5PE9FUEFSZWZlcmVuY2U+PiB7XG4gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFycmF5PE9FUEFSZWZlcmVuY2U+Pih0aGlzLmRpc3RyaWN0c1VybCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogUmV0cmlldmUgRE8vTEFBc1xuICAgKi9cbiAgIHB1YmxpYyBnZXREb0xhYVR5cGVzKCk6IE9ic2VydmFibGU8QXJyYXk8T0VQQVJlZmVyZW5jZT4+IHtcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXJyYXk8T0VQQVJlZmVyZW5jZT4+KHRoaXMuZG9MYWFUeXBlc3NVcmwpO1xuICAgfVxuXG59XG4iXX0=