@libs-ui/utils 0.2.192 → 0.2.194

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/file.d.ts CHANGED
@@ -13,3 +13,4 @@ export declare const AudioExtList: string[];
13
13
  export declare const isIncludeAudioExtList: (ext: string, listExt?: Array<string>) => boolean;
14
14
  export declare const getFileExtension: (file: IFile | File) => string | undefined;
15
15
  export declare const getLabelBySizeFile: (size: number, toFixed?: number) => string;
16
+ export declare const convertBlobToFile: (blob: Blob, fileName?: string) => File;
package/index.d.ts CHANGED
@@ -22,10 +22,8 @@ export * from './pattern';
22
22
  export * from './xss-filter';
23
23
  export * from './two-way-signal-object';
24
24
  export * from './format-date';
25
- export * from './encode-url.define';
26
- export * from './download-file-by-url';
27
- export * from './convert-blob-to-file';
28
- export * from './convert-base64-to-blob';
29
- export * from './convert-file-to-base64-or-object-url';
25
+ export * from './download';
26
+ export * from './base64';
30
27
  export * from './inject-token';
31
28
  export * from './file';
29
+ export * from './uri';
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@libs-ui/utils",
3
- "version": "0.2.192",
3
+ "version": "0.2.194",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0",
7
7
  "crypto-es": "^2.1.0",
8
8
  "dayjs": "1.11.5",
9
- "@libs-ui/interfaces-types": "^0.2.192",
9
+ "@libs-ui/interfaces-types": "^0.2.194",
10
10
  "rxjs": "~7.8.0"
11
11
  },
12
12
  "sideEffects": false,
package/uri.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { TYPE_OBJECT } from "@libs-ui/interfaces-types";
2
+ export declare const decodeURI: (value: string) => string;
3
+ export declare const endCodeUrl: (params: TYPE_OBJECT, isBody: boolean) => string;
@@ -1 +0,0 @@
1
- export declare const convertBase64ToBlob: (dataBase64: string) => Blob;
@@ -1 +0,0 @@
1
- export declare const convertBlobToFile: (blob: Blob, fileName?: string) => File;
@@ -1 +0,0 @@
1
- export declare const convertFileToBase64_ObjectUrl: (file: File) => Promise<string>;
@@ -1 +0,0 @@
1
- export declare const downloadFileByUrl: (fileUrl: string, filename: string, onlyOpen?: boolean) => Promise<void>;
@@ -1 +0,0 @@
1
- export declare const endCodeUrl: (objectData: any, isBody: boolean) => string;
@@ -1,21 +0,0 @@
1
- export const convertBase64ToBlob = (dataBase64) => {
2
- const BASE64_MARKER = ';base64,';
3
- if (dataBase64.indexOf(BASE64_MARKER) === -1) {
4
- const parts = dataBase64.split(',');
5
- const contentType = parts[0].split(':')[1];
6
- const raw = parts[1];
7
- const blob = new Blob([raw], { type: contentType });
8
- return blob;
9
- }
10
- const parts = dataBase64.split(BASE64_MARKER);
11
- const contentType = parts[0].split(':')[1];
12
- const raw = window.atob(parts[1]);
13
- const rawLength = raw.length;
14
- const uInt8Array = new Uint8Array(rawLength);
15
- for (let i = 0; i < rawLength; ++i) {
16
- uInt8Array[i] = raw.charCodeAt(i);
17
- }
18
- const blob = new Blob([uInt8Array], { type: contentType });
19
- return blob;
20
- };
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC1iYXNlNjQtdG8tYmxvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2NvbnZlcnQtYmFzZTY0LXRvLWJsb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxVQUFrQixFQUFFLEVBQUU7SUFDeEQsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDO0lBRWpDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ25DLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY29udmVydEJhc2U2NFRvQmxvYiA9IChkYXRhQmFzZTY0OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgQkFTRTY0X01BUktFUiA9ICc7YmFzZTY0LCc7XG5cbiAgaWYgKGRhdGFCYXNlNjQuaW5kZXhPZihCQVNFNjRfTUFSS0VSKSA9PT0gLTEpIHtcbiAgICBjb25zdCBwYXJ0cyA9IGRhdGFCYXNlNjQuc3BsaXQoJywnKTtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHBhcnRzWzBdLnNwbGl0KCc6JylbMV07XG4gICAgY29uc3QgcmF3ID0gcGFydHNbMV07XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyYXddLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuXG4gICAgcmV0dXJuIGJsb2I7XG4gIH1cbiAgY29uc3QgcGFydHMgPSBkYXRhQmFzZTY0LnNwbGl0KEJBU0U2NF9NQVJLRVIpO1xuICBjb25zdCBjb250ZW50VHlwZSA9IHBhcnRzWzBdLnNwbGl0KCc6JylbMV07XG4gIGNvbnN0IHJhdyA9IHdpbmRvdy5hdG9iKHBhcnRzWzFdKTtcbiAgY29uc3QgcmF3TGVuZ3RoID0gcmF3Lmxlbmd0aDtcbiAgY29uc3QgdUludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHJhd0xlbmd0aCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXdMZW5ndGg7ICsraSkge1xuICAgIHVJbnQ4QXJyYXlbaV0gPSByYXcuY2hhckNvZGVBdChpKTtcbiAgfVxuXG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdUludDhBcnJheV0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG5cbiAgcmV0dXJuIGJsb2I7XG59OyJdfQ==
@@ -1,7 +0,0 @@
1
- import { uuid } from "./uuid";
2
- export const convertBlobToFile = (blob, fileName) => {
3
- const type = blob.type.split('/')[1];
4
- const name = fileName ? `${fileName.split('.')[0]}.${type}` : `${uuid()}.${type}`;
5
- return new File([blob], name, { type: blob.type, lastModified: Date.now() });
6
- };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC1ibG9iLXRvLWZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jb252ZXJ0LWJsb2ItdG8tZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBVSxFQUFFLFFBQWlCLEVBQVEsRUFBRTtJQUN2RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUVsRixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXVpZCB9IGZyb20gXCIuL3V1aWRcIjtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRCbG9iVG9GaWxlID0gKGJsb2I6IEJsb2IsIGZpbGVOYW1lPzogc3RyaW5nKTogRmlsZSA9PiB7XG4gIGNvbnN0IHR5cGUgPSBibG9iLnR5cGUuc3BsaXQoJy8nKVsxXTtcbiAgY29uc3QgbmFtZSA9IGZpbGVOYW1lID8gYCR7ZmlsZU5hbWUuc3BsaXQoJy4nKVswXX0uJHt0eXBlfWAgOiBgJHt1dWlkKCl9LiR7dHlwZX1gO1xuXG4gIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIG5hbWUsIHsgdHlwZTogYmxvYi50eXBlLCBsYXN0TW9kaWZpZWQ6IERhdGUubm93KCkgfSk7XG59OyJdfQ==
@@ -1,13 +0,0 @@
1
- export const convertFileToBase64_ObjectUrl = (file) => {
2
- return new Promise((resolve) => {
3
- if (!file.type.match(/image.*/)) {
4
- return resolve(URL.createObjectURL(file));
5
- }
6
- const reader = new FileReader();
7
- reader.readAsDataURL(file);
8
- reader.onload = (event) => {
9
- resolve(event.target?.result);
10
- };
11
- });
12
- };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC1maWxlLXRvLWJhc2U2NC1vci1vYmplY3QtdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvY29udmVydC1maWxlLXRvLWJhc2U2NC1vci1vYmplY3QtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsSUFBVSxFQUFtQixFQUFFO0lBQzNFLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBZ0IsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGNvbnZlcnRGaWxlVG9CYXNlNjRfT2JqZWN0VXJsID0gKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBpZiAoIWZpbGUudHlwZS5tYXRjaCgvaW1hZ2UuKi8pKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZShVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgcmVhZGVyLm9ubG9hZCA9IChldmVudCkgPT4ge1xuICAgICAgcmVzb2x2ZShldmVudC50YXJnZXQ/LnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgIH07XG4gIH0pO1xufSJdfQ==
@@ -1,16 +0,0 @@
1
- export const downloadFileByUrl = async (fileUrl, filename, onlyOpen) => {
2
- const downloadFileElement = document.createElement('a');
3
- if (!onlyOpen) {
4
- const response = await fetch(fileUrl);
5
- if (response.ok) {
6
- const blob = await response.blob();
7
- fileUrl = URL.createObjectURL(blob);
8
- }
9
- }
10
- downloadFileElement.href = fileUrl;
11
- downloadFileElement.download = filename;
12
- downloadFileElement.target = '_blank';
13
- downloadFileElement.click();
14
- downloadFileElement.remove();
15
- };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtZmlsZS1ieS11cmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9kb3dubG9hZC1maWxlLWJ5LXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsT0FBZSxFQUFFLFFBQWdCLEVBQUUsUUFBa0IsRUFBRSxFQUFFO0lBQy9GLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV4RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVuQyxPQUFPLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUNELG1CQUFtQixDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDbkMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUN4QyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3RDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQy9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkb3dubG9hZEZpbGVCeVVybCA9IGFzeW5jIChmaWxlVXJsOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIG9ubHlPcGVuPzogYm9vbGVhbikgPT4ge1xuICBjb25zdCBkb3dubG9hZEZpbGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gIGlmICghb25seU9wZW4pIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGZpbGVVcmwpO1xuXG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICBjb25zdCBibG9iID0gYXdhaXQgcmVzcG9uc2UuYmxvYigpO1xuXG4gICAgICBmaWxlVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICB9XG4gIH1cbiAgZG93bmxvYWRGaWxlRWxlbWVudC5ocmVmID0gZmlsZVVybDtcbiAgZG93bmxvYWRGaWxlRWxlbWVudC5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICBkb3dubG9hZEZpbGVFbGVtZW50LnRhcmdldCA9ICdfYmxhbmsnO1xuICBkb3dubG9hZEZpbGVFbGVtZW50LmNsaWNrKCk7XG4gIGRvd25sb2FkRmlsZUVsZW1lbnQucmVtb3ZlKCk7XG59OyJdfQ==
@@ -1,11 +0,0 @@
1
- import { isNil, omitBy } from './helpers';
2
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
- export const endCodeUrl = (objectData, isBody) => {
4
- objectData = omitBy(objectData, param => param === '' || isNil(param));
5
- let res = '';
6
- for (const p in objectData) {
7
- res += `&${p}=${encodeURIComponent(objectData[p])}`;
8
- }
9
- return res === '' ? '' : `${isBody ? '' : '?'}${res.substring(1)}`;
10
- };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLXVybC5kZWZpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9lbmNvZGUtdXJsLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsVUFBZSxFQUFFLE1BQWUsRUFBVSxFQUFFO0lBQ3JFLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFFYixLQUFLLE1BQU0sQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzNCLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNyRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCwgb21pdEJ5IH0gZnJvbSAnLi9oZWxwZXJzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY29uc3QgZW5kQ29kZVVybCA9IChvYmplY3REYXRhOiBhbnksIGlzQm9keTogYm9vbGVhbik6IHN0cmluZyA9PiB7XG4gIG9iamVjdERhdGEgPSBvbWl0Qnkob2JqZWN0RGF0YSwgcGFyYW0gPT4gcGFyYW0gPT09ICcnIHx8IGlzTmlsKHBhcmFtKSk7XG4gIGxldCByZXMgPSAnJztcblxuICBmb3IgKGNvbnN0IHAgaW4gb2JqZWN0RGF0YSkge1xuICAgIHJlcyArPSBgJiR7cH09JHtlbmNvZGVVUklDb21wb25lbnQob2JqZWN0RGF0YVtwXSl9YDtcbiAgfVxuXG4gIHJldHVybiByZXMgPT09ICcnID8gJycgOiBgJHtpc0JvZHkgPyAnJyA6ICc/J30ke3Jlcy5zdWJzdHJpbmcoMSl9YDtcbn07Il19