@ohioepa/oepa-ui-lib 1.2.0 → 1.2.2
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.
- package/esm2022/lib/account-search-input/account-search-input.component.mjs +9 -17
- package/esm2022/lib/account-search-input/account-search.service.mjs +31 -0
- package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +8 -16
- package/esm2022/lib/address/oepa-address.service.mjs +11 -5
- package/esm2022/lib/common-forms.module.mjs +36 -1
- package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +9 -8
- package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +11 -5
- package/esm2022/lib/entity/entity.service.mjs +11 -5
- package/esm2022/lib/file-upload/file-upload.component.mjs +8 -7
- package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +7 -6
- package/esm2022/lib/lynx-image-upload/lynx.service.mjs +11 -5
- package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +8 -7
- package/esm2022/lib/oepa-account/account-service.mjs +62 -0
- package/esm2022/lib/oepa-file-utils/oepa-file-util.service.mjs +227 -0
- package/esm2022/lib/oepa-reference/oepa-reference.service.mjs +47 -0
- package/esm2022/lib/oepa-user-account/oepa-user-account.service.mjs +304 -0
- package/esm2022/lib/parameter/parameter.service.mjs +11 -5
- package/esm2022/lib/params-help-button/params-help-button.component.mjs +8 -8
- package/esm2022/lib/params-help-button/params-help.service.mjs +26 -0
- package/esm2022/lib/pin-modal/oepa-pin.service.mjs +11 -5
- package/esm2022/lib/pin-modal/pin-modal.component.mjs +2 -2
- package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +2 -2
- package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +11 -5
- package/esm2022/lib/table/p-table/p-table.component.mjs +9 -8
- package/esm2022/lib/table/table-export.service.mjs +14 -5
- package/esm2022/lib/table/table.component.mjs +13 -12
- package/esm2022/lib/util/oepa-custom-encoder.mjs +15 -0
- package/esm2022/lib/util/oepa-http-interceptor.mjs +64 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +962 -159
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/lib/account-search-input/account-search-input.component.d.ts +3 -4
- package/lib/account-search-input/account-search.service.d.ts +12 -0
- package/lib/account-search-modal/account-search-modal.component.d.ts +3 -5
- package/lib/address/oepa-address.service.d.ts +2 -1
- package/lib/common-forms.module.d.ts +2 -0
- package/lib/edoc-attachment/edoc-attachment.component.d.ts +2 -1
- package/lib/edoc-attachment/edoc-attachment.service.d.ts +2 -1
- package/lib/entity/entity.service.d.ts +2 -1
- package/lib/file-upload/file-upload.component.d.ts +2 -1
- package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +2 -1
- package/lib/lynx-image-upload/lynx.service.d.ts +2 -1
- package/lib/multi-file-upload/multi-file-upload.component.d.ts +2 -1
- package/lib/oepa-account/account-service.d.ts +23 -0
- package/lib/oepa-file-utils/oepa-file-util.service.d.ts +53 -0
- package/lib/oepa-reference/oepa-reference.service.d.ts +26 -0
- package/lib/oepa-user-account/oepa-user-account.service.d.ts +122 -0
- package/lib/parameter/parameter.service.d.ts +2 -1
- package/lib/params-help-button/params-help-button.component.d.ts +3 -3
- package/lib/params-help-button/params-help.service.d.ts +11 -0
- package/lib/pin-modal/oepa-pin.service.d.ts +2 -1
- package/lib/pin-modal/pin-modal.component.d.ts +2 -1
- package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +1 -1
- package/lib/shopping-cart/shopping-cart.service.d.ts +2 -1
- package/lib/table/p-table/p-table.component.d.ts +2 -1
- package/lib/table/table-export.service.d.ts +2 -1
- package/lib/table/table.component.d.ts +1 -1
- package/lib/util/oepa-custom-encoder.d.ts +7 -0
- package/lib/util/oepa-http-interceptor.d.ts +21 -0
- package/ohioepa-oepa-ui-lib-1.2.2.tgz +0 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- 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=
|