@libs-ui/utils 0.2.68 → 0.2.69

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/constants.d.ts CHANGED
@@ -5,3 +5,4 @@ export declare const ERROR_MESSAGE_MAX_VALID = "i18n_message_error_input_max_val
5
5
  export declare const ERROR_MESSAGE_MIN_LENGTH = "i18n_message_error_input_min_length";
6
6
  export declare const ERROR_MESSAGE_MAX_LENGTH = "i18n_message_error_input_max_length";
7
7
  export declare const CHARACTER_DATA_EMPTY = "__";
8
+ export declare const DEFAULT_START_PAGE_0 = "defaultStartPage0";
@@ -0,0 +1 @@
1
+ export declare const endCodeUrl: (objectData: any, isBody: boolean) => string;
package/esm2022/cache.mjs CHANGED
@@ -333,7 +333,6 @@ export class UtilsCache {
333
333
  keyCacheStartWith = isKeyMD5 ? keyCacheStartWith : md5(keyCacheStartWith);
334
334
  request.onsuccess = (e) => {
335
335
  const data = e.target.result;
336
- console.log(data);
337
336
  if (!Array.isArray(data)) {
338
337
  return resolve({});
339
338
  }
@@ -378,4 +377,4 @@ export class UtilsCache {
378
377
  });
379
378
  }
380
379
  }
381
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFDOUMsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QixNQUFNLE9BQU8sVUFBVTtJQUNkLE1BQU0sQ0FBVSx5QkFBeUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25ELE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxNQUFNLENBQVUsU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxtQ0FBbUMsQ0FBQztJQUVyRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUM7SUFDbkQsTUFBTSxDQUFDLHdCQUF3QixHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxVQUFVLENBQVc7SUFDNUIsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQVMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckUsTUFBTSxDQUFDLE9BQU8sQ0FBNkI7SUFD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QUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO2dCQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5RSxNQUFNLENBQUUsS0FBSyxDQUFDLE1BQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cbmltcG9ydCB7IHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXRpbHNDb21tdW5pY2F0ZU1pY3JvIH0gZnJvbSAnLi9jb21tdW5pY2F0ZS1taWNybyc7XG5pbXBvcnQgeyBkZWNyeXB0LCBlbmNyeXB0LCBtZDUgfSBmcm9tICcuL2NyeXB0byc7XG5pbXBvcnQgeyBnZXRQbGF0RnJvbUJyb3dzZXIgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBpc0VtYmVkRnJhbWUgfSBmcm9tICcuL2Z1bmN0aW9uLWNoZWNrLWVtYmVkLWZyYW1lJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMgfSBmcm9tICcuL2xhbmd1YWdlJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICcuL3V1aWQnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHNDYWNoZSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCA9IDUgKiA2MDtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQUNIRV9FWFBJUkVfTk9ORSA9IC0xO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGlkU2VydmljZSA9IHV1aWQoKTtcbiAgcHVibGljIHN0YXRpYyB0eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UgPSAnTElCU19VSV9DTEVBUl9MT0NBTF9TVE9SQUdFX0VWRU5UJztcblxuICBwcml2YXRlIHN0YXRpYyBsYW5ndWFnZUtleUNhY2hlID0gJ1NSM3hRS3hIZ2ZmaUNldlBRUnJhbGcnO1xuICBwcml2YXRlIHN0YXRpYyBsaXN0S2V5S2VlcFdoZW5DbGVhckFMbGwgPSBBcnJheTxzdHJpbmc+KCk7XG4gIHByaXZhdGUgc3RhdGljIGluaXRkRXZlbnQ/OiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBsYW5ndWFnZSA9IHNpZ25hbDxzdHJpbmc+KFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuZGVmYXVsdExhbmcpO1xuICBwcml2YXRlIHN0YXRpYyBzdG9yYWdlOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcbiAgcHJpdmF0ZSBzdGF0aWMgZGJOYW1lID0gJ2xpYnMtdWktY2FjaGUnO1xuICBwcml2YXRlIHN0YXRpYyBpdGVtSW5kZXhCeUtleSA9ICdrZXknO1xuICBwcml2YXRlIHN0YXRpYyBkYlZlcnNpb24gPSAxO1xuICBwcml2YXRlIHN0YXRpYyBkYjogSURCRGF0YWJhc2UgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgc3RhdGljIGluaXQoY29uZmlnOiB7IGluZGV4ZWREQk5hbWU/OiBzdHJpbmcsIGxhbmd1YWdlS2V5Q2FjaGU/OiBzdHJpbmcsIHR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZT86IHN0cmluZywgbGlzdEtleUtlZXBXaGVuQ2xlYXJBbGw/OiBBcnJheTxzdHJpbmc+IH0pIHtcbiAgICBpZiAoVXRpbHNDYWNoZS5pbml0ZEV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFV0aWxzQ2FjaGUuaW5pdGRFdmVudCA9IHRydWU7XG4gICAgaWYgKGNvbmZpZy5pbmRleGVkREJOYW1lKSB7XG4gICAgICBVdGlsc0NhY2hlLmRiTmFtZSA9IGNvbmZpZy5pbmRleGVkREJOYW1lO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSkge1xuICAgICAgVXRpbHNDYWNoZS50eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UgPSBjb25maWcudHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxpc3RLZXlLZWVwV2hlbkNsZWFyQWxsKSB7XG4gICAgICBVdGlsc0NhY2hlLmxpc3RLZXlLZWVwV2hlbkNsZWFyQUxsbCA9IGNvbmZpZy5saXN0S2V5S2VlcFdoZW5DbGVhckFsbDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5sYW5ndWFnZUtleUNhY2hlKSB7XG4gICAgICBVdGlsc0NhY2hlLmxhbmd1YWdlS2V5Q2FjaGUgPSBjb25maWcubGFuZ3VhZ2VLZXlDYWNoZTtcbiAgICB9XG4gICAgdGhpcy5sYW5ndWFnZS5zZXQoVXRpbHNDYWNoZS5HZXQoVXRpbHNDYWNoZS5sYW5ndWFnZUtleUNhY2hlLCBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLmRlZmF1bHRMYW5nKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldExhbmcobGFuZzogc3RyaW5nKSB7XG4gICAgaWYgKGxhbmcgIT09IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVkkgJiYgbGFuZyAhPT0gVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5FTikge1xuICAgICAgdGhyb3cgRXJyb3IoJ0xhbmd1YWdlIHN1cHBvcnQgdmkgfCBlbicpO1xuICAgIH1cbiAgICBVdGlsc0NhY2hlLmxhbmd1YWdlLnNldChsYW5nKTtcbiAgICBVdGlsc0NhY2hlLlNldChVdGlsc0NhY2hlLmxhbmd1YWdlS2V5Q2FjaGUsIGxhbmcpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRMYW5nKCkge1xuICAgIHJldHVybiBVdGlsc0NhY2hlLmxhbmd1YWdlKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvcGVuREIoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKFV0aWxzQ2FjaGUuZGJOYW1lLCBVdGlsc0NhY2hlLmRiVmVyc2lvbik7XG5cbiAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2ZW50OiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZGIgPSAoZXZlbnQudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdDtcblxuICAgICAgICBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoVXRpbHNDYWNoZS5kYk5hbWUpKSB7XG4gICAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShVdGlsc0NhY2hlLmRiTmFtZSwgeyBrZXlQYXRoOiBVdGlsc0NhY2hlLml0ZW1JbmRleEJ5S2V5LCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pO1xuXG4gICAgICAgICAgb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleSwgVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleSwgeyB1bmlxdWU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBVdGlsc0NhY2hlLmRiID0gcmVxdWVzdC5yZXN1bHQ7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBJbmRleGVkREI6JywgZXZlbnQpO1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBnZXRPYmplY3RTdG9yZSgpIHtcbiAgICBpZiAoIVV0aWxzQ2FjaGUuZGIpIHtcbiAgICAgIGF3YWl0IFV0aWxzQ2FjaGUub3BlbkRCKCk7XG4gICAgfVxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gVXRpbHNDYWNoZS5kYj8udHJhbnNhY3Rpb24oW1V0aWxzQ2FjaGUuZGJOYW1lXSwgJ3JlYWR3cml0ZScpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShVdGlsc0NhY2hlLmRiTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgTG9jYWxTdG9yYWdlKCk6IGFueSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93LmxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc3QgT1MgPSBnZXRQbGF0RnJvbUJyb3dzZXIoKTtcblxuICAgICAgICBpZiAoT1MuaW5jbHVkZXMoJ1NhZmFyaScpICYmIHBhcnNlRmxvYXQoT1Muc3BsaXQoJyAnKS5wb3AoKSB8fCAnMCcpID49IDE2KSB7XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMb2NhbFN0b3JhZ2VGYWtlT25TYWZhcmkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmdldExvY2FsU3RvcmFnZUZha2UoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlRmFrZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2VPblNhZmFyaSgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnICYmICFVdGlsc0NhY2hlLnN0b3JhZ2UgJiYgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHsgLi4ubG9jYWxTdG9yYWdlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zdG9yYWdlIHx8IGlzTmlsKHRoaXMuc3RvcmFnZVtrZXldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLnN0b3JhZ2Vba2V5XSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2UoKSB7XG4gICAgaWYgKCFVdGlsc0NhY2hlLnN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmFnZVtrZXldID0gdmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBHZXRBc3luYzxUID0gYW55PihrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZT86IGFueSwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgIGtleSA9IGlzS2V5TUQ1ID8ga2V5IDogbWQ1KGtleSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCBVdGlsc0NhY2hlLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoa2V5KTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWVzdC5yZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkZWNyeXB0KHJlcXVlc3QucmVzdWx0LnZhbHVlKSk7XG5cbiAgICAgICAgaWYgKGRhdGEuZXhwaXJlID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YS5qc29uKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50TWlsbGlzZWNvbmQgPSAobmV3IERhdGUoKS52YWx1ZU9mKCkgLyAxMDAwKTtcblxuICAgICAgICBpZiAoZGF0YS5leHBpcmUgPCBjdXJyZW50TWlsbGlzZWNvbmQpIHtcblxuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRlZmF1bHRfdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YS5qc29uKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0PFQgPSBhbnk+KGtleTogc3RyaW5nLCBkZWZhdWx0X3ZhbHVlPzogYW55KTogVCB7IC8vIHN1cHBvcnQgY2hvIG5o4buvbmcgZmlsZSBraMO0bmcgdGjhu4MgaW5qZWN0IFV0aWxzQ2FjaGVcbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBjYWNoZWREYXRhID0gdGhpcy5Mb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgaWYgKCFjYWNoZWREYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkZWNyeXB0KGNhY2hlZERhdGEpKTtcblxuICAgICAgaWYgKGRhdGEuZXhwaXJlID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FKSB7XG4gICAgICAgIHJldHVybiBkYXRhLnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCk7XG5cbiAgICAgIGlmIChkYXRhLmV4cGlyZSA8IGN1cnJlbnRNaWxsaXNlY29uZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhLnZhbHVlO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcblxuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7XG5cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2V0QXN5bmM8VCA9IGFueT4oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IFV0aWxzQ2FjaGUuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4geyAvLyBzdXBwb3J0IGluamVjdCBVdGlsc0NhY2hlXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgVXRpbHNDYWNoZS5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBrZXkgPSBpc0tleU1ENSA/IGtleSA6IG1kNShrZXkpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gZXhwaXJlVGltZUJ5U2Vjb25kID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FID8gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSA6IChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAvIDEwMDApICsgZXhwaXJlVGltZUJ5U2Vjb25kO1xuICAgICAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICAgICAgdmFsdWU6IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoeyBqc29uOiB2YWx1ZSwgZXhwaXJlOiBjdXJyZW50TWlsbGlzZWNvbmQgfSkpLFxuICAgICAgICB9O1xuICAgICAgICBkYXRhW1V0aWxzQ2FjaGUuaXRlbUluZGV4QnlLZXldID0ga2V5O1xuXG4gICAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ2FuIG5vdCBvcGVuIG9iamVjdCBzdG9yZScpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmU/LnB1dChkYXRhKTtcbiAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCBhcyBhbnkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgIH07XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIHN0YXRpYyBTZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IFV0aWxzQ2FjaGUuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCk6IGJvb2xlYW4geyAvLyBzdXBwb3J0IGNobyBuaOG7r25nIGZpbGUga2jDtG5nIGluamVjdCBVdGlsc0NhY2hlXG4gICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gZXhwaXJlVGltZUJ5U2Vjb25kID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FID8gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSA6IChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAvIDEwMDApICsgZXhwaXJlVGltZUJ5U2Vjb25kO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBleHBpcmU6IGN1cnJlbnRNaWxsaXNlY29uZFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5Mb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBDbGVhckFzeW5jKGtleTogc3RyaW5nLCBpc01ENSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGF3YWl0IFV0aWxzQ2FjaGUuZ2V0T2JqZWN0U3RvcmUoKTtcblxuICAgICAgaWYgKCFvYmplY3RTdG9yZSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpc01ENSA/IGtleSA6IG1kNShrZXkpKTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuXG4gIHN0YXRpYyBDbGVhcihrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuTG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgQ2xlYXJBbGxBc3luYygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCBVdGlsc0NhY2hlLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmNsZWFyKCk7XG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0RhdGFiYXNlIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgZGF0YWJhc2U6JywgKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvcik7XG4gICAgICAgIHJlamVjdCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgQ2xlYXJBbGwoKSB7XG4gICAgY29uc3Qga2V5cyA9IFsuLi5VdGlsc0NhY2hlLmxpc3RLZXlLZWVwV2hlbkNsZWFyQUxsbF07XG4gICAgT2JqZWN0LmtleXModGhpcy5Mb2NhbFN0b3JhZ2UpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RvcmVzID0gVXRpbHNDYWNoZS5HZXREYXRhQnlLZXlzKEFycmF5LmZyb20oa2V5cykpO1xuXG4gICAgdGhpcy5Mb2NhbFN0b3JhZ2UuY2xlYXIoKTtcblxuICAgIFV0aWxzQ2FjaGUuU2V0RGF0YUJ5S2V5KHN0b3Jlcyk7XG4gICAgaWYgKGlzRW1iZWRGcmFtZSgpKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICB0eXBlOiBVdGlsc0NhY2hlLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSxcbiAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICBpZEV2ZW50OiB0aGlzLmlkU2VydmljZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgR2V0RGF0YUJ5S2V5cyhrZXlzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgY29uc3Qgc3RvcmVzID0gbmV3IE1hcCgpO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGtleS5pbmNsdWRlcygna2MtY2FsbGJhY2stJykpIHtcbiAgICAgICAgc3RvcmVzLnNldChrZXksIHRoaXMuTG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RvcmVzLnNldChrZXksIFV0aWxzQ2FjaGUuR2V0KGtleSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0b3JlcztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIFNldERhdGFCeUtleShzdG9yZXM6IE1hcDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdG9yZXMuZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICAgIHRoaXMuTG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gVXRpbHNDYWNoZS5sYW5ndWFnZUtleUNhY2hlKSB7XG4gICAgICAgIHJldHVybiBVdGlsc0NhY2hlLnNldExhbmcodmFsdWUpO1xuICAgICAgfVxuICAgICAgVXRpbHNDYWNoZS5TZXQoa2V5LCB2YWx1ZSwgVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZUtleVN0YXJ0V2l0aEFzeW5jKGtleUNhY2hlU3RhcnRXaXRoOiBzdHJpbmcsIGlzS2V5TUQ1ID0gZmFsc2UpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgVXRpbHNDYWNoZS5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgIH1cblxuICAgICAgLy8gTOG6pXkgdOG6pXQgY+G6oyBjw6FjIGtleXMgdOG7qyBpbmRleFxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldEFsbCgpO1xuXG4gICAgICBrZXlDYWNoZVN0YXJ0V2l0aCA9IGlzS2V5TUQ1ID8ga2V5Q2FjaGVTdGFydFdpdGggOiBtZDUoa2V5Q2FjaGVTdGFydFdpdGgpO1xuXG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gZS50YXJnZXQucmVzdWx0IGFzIEFycmF5PGFueT47XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGEuZm9yRWFjaChvYmogPT4ge1xuICAgICAgICAgIGlmIChvYmpbVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleV0uc3RhcnRzV2l0aChrZXlDYWNoZVN0YXJ0V2l0aCkpIHtcbiAgICAgICAgICAgIFV0aWxzQ2FjaGUuQ2xlYXJBc3luYyhvYmpbVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleV0sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh7fSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEZWxldGVLZXlTdGFydFdpdGgoa2V5Q2FjaGU6IHN0cmluZywgaXNNRDUgPSBmYWxzZSkge1xuICAgIGtleUNhY2hlID0gaXNNRDUgPyBtZDUoa2V5Q2FjaGUpIDoga2V5Q2FjaGU7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKFV0aWxzQ2FjaGUuTG9jYWxTdG9yYWdlKTtcblxuICAgIGlmICgha2V5cyB8fCAha2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChrZXlDYWNoZSkpIHtcbiAgICAgICAgdGhpcy5DbGVhcihrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEZWxldGVEYXRhYmFzZUluZGV4REIoZGJOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYk5hbWUpO1xuXG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0RhdGFiYXNlIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRlbGV0aW5nIGRhdGFiYXNlOicsIChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkuZXJyb3IpO1xuICAgICAgICByZWplY3QoKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvcik7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdEZWxldGUgcmVxdWVzdCBpcyBibG9ja2VkJyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFDOUMsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QixNQUFNLE9BQU8sVUFBVTtJQUNkLE1BQU0sQ0FBVSx5QkFBeUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25ELE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxNQUFNLENBQVUsU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxtQ0FBbUMsQ0FBQztJQUVyRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUM7SUFDbkQsTUFBTSxDQUFDLHdCQUF3QixHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxVQUFVLENBQVc7SUFDNUIsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQVMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckUsTUFBTSxDQUFDLE9BQU8sQ0FBNkI7SUFD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SUFBSSxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO2dCQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5RSxNQUFNLENBQUUsS0FBSyxDQUFDLE1BQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cbmltcG9ydCB7IHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXRpbHNDb21tdW5pY2F0ZU1pY3JvIH0gZnJvbSAnLi9jb21tdW5pY2F0ZS1taWNybyc7XG5pbXBvcnQgeyBkZWNyeXB0LCBlbmNyeXB0LCBtZDUgfSBmcm9tICcuL2NyeXB0byc7XG5pbXBvcnQgeyBnZXRQbGF0RnJvbUJyb3dzZXIgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBpc0VtYmVkRnJhbWUgfSBmcm9tICcuL2Z1bmN0aW9uLWNoZWNrLWVtYmVkLWZyYW1lJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMgfSBmcm9tICcuL2xhbmd1YWdlJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICcuL3V1aWQnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHNDYWNoZSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCA9IDUgKiA2MDtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQUNIRV9FWFBJUkVfTk9ORSA9IC0xO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGlkU2VydmljZSA9IHV1aWQoKTtcbiAgcHVibGljIHN0YXRpYyB0eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UgPSAnTElCU19VSV9DTEVBUl9MT0NBTF9TVE9SQUdFX0VWRU5UJztcblxuICBwcml2YXRlIHN0YXRpYyBsYW5ndWFnZUtleUNhY2hlID0gJ1NSM3hRS3hIZ2ZmaUNldlBRUnJhbGcnO1xuICBwcml2YXRlIHN0YXRpYyBsaXN0S2V5S2VlcFdoZW5DbGVhckFMbGwgPSBBcnJheTxzdHJpbmc+KCk7XG4gIHByaXZhdGUgc3RhdGljIGluaXRkRXZlbnQ/OiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBsYW5ndWFnZSA9IHNpZ25hbDxzdHJpbmc+KFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuZGVmYXVsdExhbmcpO1xuICBwcml2YXRlIHN0YXRpYyBzdG9yYWdlOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcbiAgcHJpdmF0ZSBzdGF0aWMgZGJOYW1lID0gJ2xpYnMtdWktY2FjaGUnO1xuICBwcml2YXRlIHN0YXRpYyBpdGVtSW5kZXhCeUtleSA9ICdrZXknO1xuICBwcml2YXRlIHN0YXRpYyBkYlZlcnNpb24gPSAxO1xuICBwcml2YXRlIHN0YXRpYyBkYjogSURCRGF0YWJhc2UgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgc3RhdGljIGluaXQoY29uZmlnOiB7IGluZGV4ZWREQk5hbWU/OiBzdHJpbmcsIGxhbmd1YWdlS2V5Q2FjaGU/OiBzdHJpbmcsIHR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZT86IHN0cmluZywgbGlzdEtleUtlZXBXaGVuQ2xlYXJBbGw/OiBBcnJheTxzdHJpbmc+IH0pIHtcbiAgICBpZiAoVXRpbHNDYWNoZS5pbml0ZEV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFV0aWxzQ2FjaGUuaW5pdGRFdmVudCA9IHRydWU7XG4gICAgaWYgKGNvbmZpZy5pbmRleGVkREJOYW1lKSB7XG4gICAgICBVdGlsc0NhY2hlLmRiTmFtZSA9IGNvbmZpZy5pbmRleGVkREJOYW1lO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSkge1xuICAgICAgVXRpbHNDYWNoZS50eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UgPSBjb25maWcudHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxpc3RLZXlLZWVwV2hlbkNsZWFyQWxsKSB7XG4gICAgICBVdGlsc0NhY2hlLmxpc3RLZXlLZWVwV2hlbkNsZWFyQUxsbCA9IGNvbmZpZy5saXN0S2V5S2VlcFdoZW5DbGVhckFsbDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5sYW5ndWFnZUtleUNhY2hlKSB7XG4gICAgICBVdGlsc0NhY2hlLmxhbmd1YWdlS2V5Q2FjaGUgPSBjb25maWcubGFuZ3VhZ2VLZXlDYWNoZTtcbiAgICB9XG4gICAgdGhpcy5sYW5ndWFnZS5zZXQoVXRpbHNDYWNoZS5HZXQoVXRpbHNDYWNoZS5sYW5ndWFnZUtleUNhY2hlLCBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLmRlZmF1bHRMYW5nKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldExhbmcobGFuZzogc3RyaW5nKSB7XG4gICAgaWYgKGxhbmcgIT09IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVkkgJiYgbGFuZyAhPT0gVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5FTikge1xuICAgICAgdGhyb3cgRXJyb3IoJ0xhbmd1YWdlIHN1cHBvcnQgdmkgfCBlbicpO1xuICAgIH1cbiAgICBVdGlsc0NhY2hlLmxhbmd1YWdlLnNldChsYW5nKTtcbiAgICBVdGlsc0NhY2hlLlNldChVdGlsc0NhY2hlLmxhbmd1YWdlS2V5Q2FjaGUsIGxhbmcpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRMYW5nKCkge1xuICAgIHJldHVybiBVdGlsc0NhY2hlLmxhbmd1YWdlKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvcGVuREIoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKFV0aWxzQ2FjaGUuZGJOYW1lLCBVdGlsc0NhY2hlLmRiVmVyc2lvbik7XG5cbiAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2ZW50OiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZGIgPSAoZXZlbnQudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdDtcblxuICAgICAgICBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoVXRpbHNDYWNoZS5kYk5hbWUpKSB7XG4gICAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShVdGlsc0NhY2hlLmRiTmFtZSwgeyBrZXlQYXRoOiBVdGlsc0NhY2hlLml0ZW1JbmRleEJ5S2V5LCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pO1xuXG4gICAgICAgICAgb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleSwgVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleSwgeyB1bmlxdWU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBVdGlsc0NhY2hlLmRiID0gcmVxdWVzdC5yZXN1bHQ7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBJbmRleGVkREI6JywgZXZlbnQpO1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBnZXRPYmplY3RTdG9yZSgpIHtcbiAgICBpZiAoIVV0aWxzQ2FjaGUuZGIpIHtcbiAgICAgIGF3YWl0IFV0aWxzQ2FjaGUub3BlbkRCKCk7XG4gICAgfVxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gVXRpbHNDYWNoZS5kYj8udHJhbnNhY3Rpb24oW1V0aWxzQ2FjaGUuZGJOYW1lXSwgJ3JlYWR3cml0ZScpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShVdGlsc0NhY2hlLmRiTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgTG9jYWxTdG9yYWdlKCk6IGFueSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93LmxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc3QgT1MgPSBnZXRQbGF0RnJvbUJyb3dzZXIoKTtcblxuICAgICAgICBpZiAoT1MuaW5jbHVkZXMoJ1NhZmFyaScpICYmIHBhcnNlRmxvYXQoT1Muc3BsaXQoJyAnKS5wb3AoKSB8fCAnMCcpID49IDE2KSB7XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMb2NhbFN0b3JhZ2VGYWtlT25TYWZhcmkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmdldExvY2FsU3RvcmFnZUZha2UoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlRmFrZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2VPblNhZmFyaSgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnICYmICFVdGlsc0NhY2hlLnN0b3JhZ2UgJiYgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHsgLi4ubG9jYWxTdG9yYWdlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zdG9yYWdlIHx8IGlzTmlsKHRoaXMuc3RvcmFnZVtrZXldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLnN0b3JhZ2Vba2V5XSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2UoKSB7XG4gICAgaWYgKCFVdGlsc0NhY2hlLnN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmFnZVtrZXldID0gdmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBHZXRBc3luYzxUID0gYW55PihrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZT86IGFueSwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgIGtleSA9IGlzS2V5TUQ1ID8ga2V5IDogbWQ1KGtleSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCBVdGlsc0NhY2hlLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoa2V5KTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWVzdC5yZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkZWNyeXB0KHJlcXVlc3QucmVzdWx0LnZhbHVlKSk7XG5cbiAgICAgICAgaWYgKGRhdGEuZXhwaXJlID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YS5qc29uKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50TWlsbGlzZWNvbmQgPSAobmV3IERhdGUoKS52YWx1ZU9mKCkgLyAxMDAwKTtcblxuICAgICAgICBpZiAoZGF0YS5leHBpcmUgPCBjdXJyZW50TWlsbGlzZWNvbmQpIHtcblxuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRlZmF1bHRfdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YS5qc29uKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0PFQgPSBhbnk+KGtleTogc3RyaW5nLCBkZWZhdWx0X3ZhbHVlPzogYW55KTogVCB7IC8vIHN1cHBvcnQgY2hvIG5o4buvbmcgZmlsZSBraMO0bmcgdGjhu4MgaW5qZWN0IFV0aWxzQ2FjaGVcbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBjYWNoZWREYXRhID0gdGhpcy5Mb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgaWYgKCFjYWNoZWREYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkZWNyeXB0KGNhY2hlZERhdGEpKTtcblxuICAgICAgaWYgKGRhdGEuZXhwaXJlID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FKSB7XG4gICAgICAgIHJldHVybiBkYXRhLnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCk7XG5cbiAgICAgIGlmIChkYXRhLmV4cGlyZSA8IGN1cnJlbnRNaWxsaXNlY29uZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhLnZhbHVlO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcblxuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7XG5cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2V0QXN5bmM8VCA9IGFueT4oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IFV0aWxzQ2FjaGUuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4geyAvLyBzdXBwb3J0IGluamVjdCBVdGlsc0NhY2hlXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgVXRpbHNDYWNoZS5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBrZXkgPSBpc0tleU1ENSA/IGtleSA6IG1kNShrZXkpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gZXhwaXJlVGltZUJ5U2Vjb25kID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FID8gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSA6IChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAvIDEwMDApICsgZXhwaXJlVGltZUJ5U2Vjb25kO1xuICAgICAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICAgICAgdmFsdWU6IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoeyBqc29uOiB2YWx1ZSwgZXhwaXJlOiBjdXJyZW50TWlsbGlzZWNvbmQgfSkpLFxuICAgICAgICB9O1xuICAgICAgICBkYXRhW1V0aWxzQ2FjaGUuaXRlbUluZGV4QnlLZXldID0ga2V5O1xuXG4gICAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ2FuIG5vdCBvcGVuIG9iamVjdCBzdG9yZScpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmU/LnB1dChkYXRhKTtcbiAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCBhcyBhbnkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgIH07XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIHN0YXRpYyBTZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IFV0aWxzQ2FjaGUuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCk6IGJvb2xlYW4geyAvLyBzdXBwb3J0IGNobyBuaOG7r25nIGZpbGUga2jDtG5nIGluamVjdCBVdGlsc0NhY2hlXG4gICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gZXhwaXJlVGltZUJ5U2Vjb25kID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FID8gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSA6IChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAvIDEwMDApICsgZXhwaXJlVGltZUJ5U2Vjb25kO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBleHBpcmU6IGN1cnJlbnRNaWxsaXNlY29uZFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5Mb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBDbGVhckFzeW5jKGtleTogc3RyaW5nLCBpc01ENSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGF3YWl0IFV0aWxzQ2FjaGUuZ2V0T2JqZWN0U3RvcmUoKTtcblxuICAgICAgaWYgKCFvYmplY3RTdG9yZSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpc01ENSA/IGtleSA6IG1kNShrZXkpKTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuXG4gIHN0YXRpYyBDbGVhcihrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuTG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgQ2xlYXJBbGxBc3luYygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCBVdGlsc0NhY2hlLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmNsZWFyKCk7XG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0RhdGFiYXNlIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgZGF0YWJhc2U6JywgKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvcik7XG4gICAgICAgIHJlamVjdCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgQ2xlYXJBbGwoKSB7XG4gICAgY29uc3Qga2V5cyA9IFsuLi5VdGlsc0NhY2hlLmxpc3RLZXlLZWVwV2hlbkNsZWFyQUxsbF07XG4gICAgT2JqZWN0LmtleXModGhpcy5Mb2NhbFN0b3JhZ2UpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RvcmVzID0gVXRpbHNDYWNoZS5HZXREYXRhQnlLZXlzKEFycmF5LmZyb20oa2V5cykpO1xuXG4gICAgdGhpcy5Mb2NhbFN0b3JhZ2UuY2xlYXIoKTtcblxuICAgIFV0aWxzQ2FjaGUuU2V0RGF0YUJ5S2V5KHN0b3Jlcyk7XG4gICAgaWYgKGlzRW1iZWRGcmFtZSgpKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICB0eXBlOiBVdGlsc0NhY2hlLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSxcbiAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICBpZEV2ZW50OiB0aGlzLmlkU2VydmljZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgR2V0RGF0YUJ5S2V5cyhrZXlzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgY29uc3Qgc3RvcmVzID0gbmV3IE1hcCgpO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGtleS5pbmNsdWRlcygna2MtY2FsbGJhY2stJykpIHtcbiAgICAgICAgc3RvcmVzLnNldChrZXksIHRoaXMuTG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RvcmVzLnNldChrZXksIFV0aWxzQ2FjaGUuR2V0KGtleSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0b3JlcztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIFNldERhdGFCeUtleShzdG9yZXM6IE1hcDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdG9yZXMuZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICAgIHRoaXMuTG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gVXRpbHNDYWNoZS5sYW5ndWFnZUtleUNhY2hlKSB7XG4gICAgICAgIHJldHVybiBVdGlsc0NhY2hlLnNldExhbmcodmFsdWUpO1xuICAgICAgfVxuICAgICAgVXRpbHNDYWNoZS5TZXQoa2V5LCB2YWx1ZSwgVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZUtleVN0YXJ0V2l0aEFzeW5jKGtleUNhY2hlU3RhcnRXaXRoOiBzdHJpbmcsIGlzS2V5TUQ1ID0gZmFsc2UpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgVXRpbHNDYWNoZS5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgIH1cblxuICAgICAgLy8gTOG6pXkgdOG6pXQgY+G6oyBjw6FjIGtleXMgdOG7qyBpbmRleFxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldEFsbCgpO1xuXG4gICAgICBrZXlDYWNoZVN0YXJ0V2l0aCA9IGlzS2V5TUQ1ID8ga2V5Q2FjaGVTdGFydFdpdGggOiBtZDUoa2V5Q2FjaGVTdGFydFdpdGgpO1xuXG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gZS50YXJnZXQucmVzdWx0IGFzIEFycmF5PGFueT47XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS5mb3JFYWNoKG9iaiA9PiB7XG4gICAgICAgICAgaWYgKG9ialtVdGlsc0NhY2hlLml0ZW1JbmRleEJ5S2V5XS5zdGFydHNXaXRoKGtleUNhY2hlU3RhcnRXaXRoKSkge1xuICAgICAgICAgICAgVXRpbHNDYWNoZS5DbGVhckFzeW5jKG9ialtVdGlsc0NhY2hlLml0ZW1JbmRleEJ5S2V5XSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZSh7fSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZUtleVN0YXJ0V2l0aChrZXlDYWNoZTogc3RyaW5nLCBpc01ENSA9IGZhbHNlKSB7XG4gICAga2V5Q2FjaGUgPSBpc01ENSA/IG1kNShrZXlDYWNoZSkgOiBrZXlDYWNoZTtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoVXRpbHNDYWNoZS5Mb2NhbFN0b3JhZ2UpO1xuXG4gICAgaWYgKCFrZXlzIHx8ICFrZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGtleUNhY2hlKSkge1xuICAgICAgICB0aGlzLkNsZWFyKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZURhdGFiYXNlSW5kZXhEQihkYk5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRiTmFtZSk7XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnRGF0YWJhc2UgZGVsZXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgZGF0YWJhc2U6JywgKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvcik7XG4gICAgICAgIHJlamVjdCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gKCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0RlbGV0ZSByZXF1ZXN0IGlzIGJsb2NrZWQnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -5,4 +5,5 @@ export const ERROR_MESSAGE_MAX_VALID = 'i18n_message_error_input_max_value';
5
5
  export const ERROR_MESSAGE_MIN_LENGTH = 'i18n_message_error_input_min_length';
6
6
  export const ERROR_MESSAGE_MAX_LENGTH = 'i18n_message_error_input_max_length';
7
7
  export const CHARACTER_DATA_EMPTY = '__';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLDBCQUEwQixDQUFDO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLDRCQUE0QixDQUFDO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLHFDQUFxQyxDQUFDO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLHFDQUFxQyxDQUFDO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEID0gJ2kxOG5fdmFsaWRfZW1wdHlfbWVzc2FnZSc7XG5leHBvcnQgY29uc3QgRVJST1JfTUVTU0FHRV9QQVRURU5fVkFMSUQgPSAnaTE4bl92YWxpZF9wYXR0ZXJuX21lc3NhZ2UnO1xuZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0VfTUlOX1ZBTElEID0gJ2kxOG5fbWVzc2FnZV9lcnJvcl9pbnB1dF9taW5fdmFsdWUnO1xuZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0VfTUFYX1ZBTElEID0gJ2kxOG5fbWVzc2FnZV9lcnJvcl9pbnB1dF9tYXhfdmFsdWUnO1xuZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0VfTUlOX0xFTkdUSCA9ICdpMThuX21lc3NhZ2VfZXJyb3JfaW5wdXRfbWluX2xlbmd0aCc7XG5leHBvcnQgY29uc3QgRVJST1JfTUVTU0FHRV9NQVhfTEVOR1RIID0gJ2kxOG5fbWVzc2FnZV9lcnJvcl9pbnB1dF9tYXhfbGVuZ3RoJztcbmV4cG9ydCBjb25zdCBDSEFSQUNURVJfREFUQV9FTVBUWSA9ICdfXyc7Il19
8
+ export const DEFAULT_START_PAGE_0 = 'defaultStartPage0';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLDBCQUEwQixDQUFDO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLDRCQUE0QixDQUFDO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLHFDQUFxQyxDQUFDO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLHFDQUFxQyxDQUFDO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEID0gJ2kxOG5fdmFsaWRfZW1wdHlfbWVzc2FnZSc7XG5leHBvcnQgY29uc3QgRVJST1JfTUVTU0FHRV9QQVRURU5fVkFMSUQgPSAnaTE4bl92YWxpZF9wYXR0ZXJuX21lc3NhZ2UnO1xuZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0VfTUlOX1ZBTElEID0gJ2kxOG5fbWVzc2FnZV9lcnJvcl9pbnB1dF9taW5fdmFsdWUnO1xuZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0VfTUFYX1ZBTElEID0gJ2kxOG5fbWVzc2FnZV9lcnJvcl9pbnB1dF9tYXhfdmFsdWUnO1xuZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0VfTUlOX0xFTkdUSCA9ICdpMThuX21lc3NhZ2VfZXJyb3JfaW5wdXRfbWluX2xlbmd0aCc7XG5leHBvcnQgY29uc3QgRVJST1JfTUVTU0FHRV9NQVhfTEVOR1RIID0gJ2kxOG5fbWVzc2FnZV9lcnJvcl9pbnB1dF9tYXhfbGVuZ3RoJztcbmV4cG9ydCBjb25zdCBDSEFSQUNURVJfREFUQV9FTVBUWSA9ICdfXyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9TVEFSVF9QQUdFXzAgPSAnZGVmYXVsdFN0YXJ0UGFnZTAnOyJdfQ==
@@ -0,0 +1,11 @@
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
@@ -7,6 +7,19 @@ export const isNil = (value) => {
7
7
  export const isEmpty = (value) => {
8
8
  return value === null || value === '' || value === undefined || (typeof value === 'object' && (JSON.stringify(value) === '{}' || JSON.stringify(value) === '[]'));
9
9
  };
10
+ export const omitBy = (objData, predicate) => {
11
+ if (!objData || typeof objData !== 'object' || Array.isArray(objData)) {
12
+ return objData;
13
+ }
14
+ const newObj = {};
15
+ Object.keys(objData).forEach(key => {
16
+ const valueOfKey = get(objData, key);
17
+ if (!predicate(valueOfKey)) {
18
+ set(newObj, key, valueOfKey);
19
+ }
20
+ });
21
+ return newObj;
22
+ };
10
23
  export const get = (obj, path, defaultValue = undefined) => {
11
24
  if (obj == null) {
12
25
  return defaultValue;
@@ -228,4 +241,4 @@ export const generateInterface = (obj, interfaceName) => {
228
241
  const interfaceStr = `interface ${interfaceName} ${generateType(obj)}`;
229
242
  return interfaceStr;
230
243
  };
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRSxzQ0FBc0M7QUFDdEMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDL0MsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDeEMsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwSyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBVSxHQUFRLEVBQUUsSUFBdUIsRUFBRSxlQUFvQixTQUFTLEVBQUssRUFBRTtJQUNsRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxD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LENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBRUQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUksSUFBYyxFQUFFLEdBQVksRUFBWSxFQUFFO0lBQ2xFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBa0MsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVsRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFRLEVBQUUsYUFBcUIsRUFBVSxFQUFFO0lBQzNFLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBVSxFQUFVLEVBQUU7UUFDMUMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLE9BQU8sS0FBSyxDQUFDO1FBRTFCLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDO1lBQ0QsT0FBTyxTQUFTLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsWUFBWSxJQUFJLEtBQUssR0FBRyxLQUFLLFNBQVMsS0FBSyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQztZQUNELFlBQVksSUFBSSxHQUFHLENBQUM7WUFDcEIsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsYUFBYSxhQUFhLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDdkUsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgVGVtcGxhdGVSZWYsIGlzU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuLyoqQ8OhYyBow6BtIHTGsMahbmcgdOG7sSB0aMawIHZp4buHbiBsb2Rhc2ggKi9cbmV4cG9ydCBjb25zdCBpc05pbCA9ICh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAoSlNPTi5zdHJpbmdpZnkodmFsdWUpID09PSAne30nIHx8IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA9PT0gJ1tdJykpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldCA9IDxUID0gYW55PihvYmo6IGFueSwgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGRlZmF1bHRWYWx1ZTogYW55ID0gdW5kZWZpbmVkKTogVCA9PiB7XG4gIGlmIChvYmogPT0gbnVsbCkge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbiAgaWYgKGlzU2lnbmFsKG9iaikpIHtcbiAgICBvYmogPSBvYmooKTtcbiAgfVxuICBjb25zdCBwYXRocyA9IEFycmF5LmlzQXJyYXkocGF0aCkgPyBwYXRoIDogcGF0aC5yZXBsYWNlKC9cXFsoXFxkKyldL2csICcuJDEnKS5zcGxpdCgnLicpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsIHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwYXRoc1tpXSkpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbCA9IGlzU2lnbmFsKG9ialtwYXRoc1tpXV0pID8gb2JqW3BhdGhzW2ldXSgpIDogb2JqW3BhdGhzW2ldXTtcblxuICAgIG9iaiA9IHZhbDtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0ID0gPFQgPSBhbnk+KG9iajogYW55LCBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgdmFsdWU6IGFueSk6IFQgPT4ge1xuICBpZiAoIW9iaiB8fCAodHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiAhaXNTaWduYWwob2JqKSkgfHwgKGlzU2lnbmFsKG9iaikgJiYgdHlwZW9mIG9iaigpICE9PSBcIm9iamVjdFwiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdFwiKTtcbiAgfVxuXG4gIGNvbnN0IHBhdGhBcnJheSA9IEFycmF5LmlzQXJyYXkocGF0aCkgPyBwYXRoIDogcGF0aC5yZXBsYWNlKC9cXFsoXFxkKyldL2csICcuWyQxXScpLnNwbGl0KCcuJyk7XG5cbiAgbGV0IGN1cnJlbnQ6IGFueSA9IGlzU2lnbmFsKG9iaikgPyBvYmooKSA6IG9iajtcblxuICBsZXQgbGFzdElzU2lnbmFsID0gZmFsc2U7XG4gIHBhdGhBcnJheS5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4IDwgcGF0aEFycmF5Lmxlbmd0aCAtIDEpIHtcbiAgICAgIGlmICghKGtleSBpbiBjdXJyZW50KSB8fCB0eXBlb2YgY3VycmVudFtrZXldICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IG5leHRLZXkgPSBwYXRoQXJyYXlbaW5kZXggKyAxXTtcblxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvXFxbKFxcZCspXS9nLCAnJDEnKTtcbiAgICAgICAgY3VycmVudFtrZXldID0gL1xcWyhcXGQrKV0vZy50ZXN0KG5leHRLZXkpID8gW10gOiB7fTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBrZXkgPyBjdXJyZW50W2tleV0gOiBjdXJyZW50O1xuICAgICAgbGFzdElzU2lnbmFsID0gaXNTaWduYWwoY3VycmVudCk7XG4gICAgICBjdXJyZW50ID0gbGFzdElzU2lnbmFsID8gY3VycmVudCgpIDogY3VycmVudDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHw6FuIGdpw6EgdHLhu4sg4bufIGN14buRaSDEkcaw4budbmcgZOG6q25cbiAgICBrZXkgPSBrZXkucmVwbGFjZSgvXFxbKFxcZCspXS9nLCAnJDEnKTtcbiAgICBpZiAobGFzdElzU2lnbmFsKSB7XG4gICAgICBjdXJyZW50LnVwZGF0ZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4geyAuLi5kYXRhIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY3VycmVudFtrZXldID0gdmFsdWU7XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59O1xuXG5leHBvcnQgY29uc3QgY2xvbmVEZWVwID0gPFQgPSBhbnk+KGRhdGE6IGFueSk6IFQgPT4ge1xuICBpZiAoZGF0YSA9PT0gbnVsbCB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGlmIChkYXRhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRhLmdldFRpbWUoKSkgYXMgVDtcbiAgfVxuXG4gIGlmIChkYXRhIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoZGF0YS5zb3VyY2UsIGRhdGEuZmxhZ3MpIGFzIFQ7XG4gIH1cblxuICBpZiAoZGF0YSBpbnN0YW5jZW9mIE1hcCkge1xuICAgIGNvbnN0IG1hcENvcHkgPSBuZXcgTWFwKCk7XG4gICAgZGF0YS5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgbWFwQ29weS5zZXQoY2xvbmVEZWVwKGtleSksIGNsb25lRGVlcCh2YWwpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbWFwQ29weSBhcyBUO1xuICB9XG5cbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICBjb25zdCBzZXRDb3B5ID0gbmV3IFNldCgpO1xuICAgIGRhdGEuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgc2V0Q29weS5hZGQoY2xvbmVEZWVwKHZhbCkpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZXRDb3B5IGFzIFQ7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhLm1hcChpdGVtID0+IGNsb25lRGVlcChpdGVtKSkgYXMgVDtcbiAgfVxuXG4gIGlmIChpc1NpZ25hbChkYXRhKSkge1xuICAgIHJldHVybiBjbG9uZURlZXAoZGF0YSgpKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYgfHwgdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50UmVmIHx8IHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gY2xvbmVEZWVwKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59O1xuXG5leHBvcnQgY29uc3Qga2V5QnkgPSAoZGF0YTogQXJyYXk8UmVjb3JkPGFueSwgYW55Pj4sIGtleTogc3RyaW5nKTogUmVjb3JkPGFueSwgYW55PiA9PiB7XG4gIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGggfHwgIWtleSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4gZGF0YS5yZWR1Y2UoKGRpciwgbmV4dEl0ZW0pID0+IHtcbiAgICBjb25zdCB2YWx1ZU9mS2V5ID0gbmV4dEl0ZW1ba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlT2ZLZXkgIT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZU9mS2V5ICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRpcjtcbiAgICB9XG4gICAgZGlyW3ZhbHVlT2ZLZXldID0gbmV4dEl0ZW07XG4gICAgcmV0dXJuIGRpcjtcbiAgfSwge30pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwQnkgPSAoZGF0YTogQXJyYXk8UmVjb3JkPGFueSwgYW55Pj4sIGtleTogc3RyaW5nKTogUmVjb3JkPGFueSwgYW55PiA9PiB7XG4gIGlmICghZGF0YSB8fCAhT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoIHx8ICFrZXkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIGRhdGEucmVkdWNlKChkaXIsIG5leHRJdGVtKSA9PiB7XG4gICAgY29uc3QgdmFsdWVPZktleSA9IG5leHRJdGVtW2tleV07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZU9mS2V5ICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWVPZktleSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkaXI7XG4gICAgfVxuICAgIGlmICghZGlyW3ZhbHVlT2ZLZXldKSB7XG4gICAgICBkaXJbdmFsdWVPZktleV0gPSBbXTtcbiAgICB9XG4gICAgZGlyW3ZhbHVlT2ZLZXldLnB1c2gobmV4dEl0ZW0pO1xuICAgIHJldHVybiBkaXI7XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByYW5nZSA9IChzdGFydDogbnVtYmVyLCBlbmQ/OiBudW1iZXIsIHN0ZXA/OiBudW1iZXIpOiBBcnJheTxudW1iZXI+ID0+IHtcbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA9PT0gbnVsbCkge1xuICAgIGVuZCA9IHN0YXJ0O1xuICAgIHN0YXJ0ID0gMDtcbiAgfVxuXG4gIGlmICghc3RlcCkge1xuICAgIHN0ZXAgPSBlbmQgPCAwID8gLTEgOiAxO1xuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0ICYmIHN0ZXAgPiAwKSB7XG4gICAgc3RlcCAqPSAtMTtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlU3RhcnRCeVN0ZXAgPSBzdGVwICsgc3RhcnQ7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IHN0YXJ0IDwgZW5kID8gJ2FzYycgOiAnZGVzYyc7XG4gIGlmICgoZGlyZWN0aW9uID09PSAnYXNjJyAmJiAodmFsdWVTdGFydEJ5U3RlcCA8IHN0YXJ0IHx8IHZhbHVlU3RhcnRCeVN0ZXAgPiBlbmQpKSB8fCAoZGlyZWN0aW9uID09PSAnZGVzYycgJiYgKHZhbHVlU3RhcnRCeVN0ZXAgPiBzdGFydCB8fCB2YWx1ZVN0YXJ0QnlTdGVwIDwgZW5kKSkpIHtcbiAgICByZXR1cm4gW3N0YXJ0XTtcbiAgfVxuXG4gIGNvbnN0IGFyciA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE1hdGguYWJzKGVuZCAtIHN0YXJ0KTsgaW5kZXgrKykge1xuICAgIGxldCB2YWx1ZSA9IHN0YXJ0ICsgaW5kZXggKiBzdGVwO1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgdmFsdWUgPSBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAoKGRpcmVjdGlvbiA9PT0gJ2FzYycgJiYgKHZhbHVlIDwgc3RhcnQgfHwgdmFsdWUgPiBlbmQpKSB8fCAoZGlyZWN0aW9uID09PSAnZGVzYycgJiYgKHZhbHVlID4gc3RhcnQgfHwgdmFsdWUgPCBlbmQpKSkge1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICBhcnIucHVzaCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gYXJyO1xufVxuXG5leHBvcnQgY29uc3QgaXNFcXVhbCA9ICh2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKHZhbHVlMSA9PT0gdmFsdWUyIHx8ICh2YWx1ZTEgPT09IG51bGwgJiYgdmFsdWUyID09PSBudWxsKSB8fCAodmFsdWUxID09PSB1bmRlZmluZWQgJiYgdmFsdWUyID09PSB1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZTEgIT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZTIgIT09ICdvYmplY3QnIHx8IChBcnJheS5pc0FycmF5KHZhbHVlMSkgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUyKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZTEpKSB7XG4gICAgaWYgKHZhbHVlMS5sZW5ndGggIT09IHZhbHVlMi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiAhdmFsdWUxLnNvbWUoKGl0ZW0sIGluZGV4KSA9PiAhaXNFcXVhbChpdGVtLCB2YWx1ZTJbaW5kZXhdKSk7XG4gIH1cblxuICBpZiAoT2JqZWN0LmtleXModmFsdWUxKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKHZhbHVlMikubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAhT2JqZWN0LmtleXModmFsdWUxKS5zb21lKChrZXkpID0+ICFpc0VxdWFsKHZhbHVlMVtrZXldLCB2YWx1ZTJba2V5XSkpO1xufVxuXG5leHBvcnQgY29uc3QgdW5pcUJ5ID0gPFQ+KGRhdGE6IEFycmF5PFQ+LCBrZXk/OiBzdHJpbmcpOiBBcnJheTxUPiA9PiB7XG4gIGlmICgha2V5IHx8ICFkYXRhIHx8ICFkYXRhLmxlbmd0aCB8fCB0eXBlb2YgZGF0YVswXSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGRhdGEpKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGFVbmlxdWUgPSBrZXlCeShkYXRhIGFzIEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+LCBrZXkpO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhkYXRhVW5pcXVlKS5tYXAoa2V5ID0+IGRhdGFVbmlxdWVba2V5XSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUludGVyZmFjZSA9IChvYmo6IGFueSwgaW50ZXJmYWNlTmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZ2VuZXJhdGVUeXBlID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICdudWxsJztcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuICAgIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuICdib29sZWFuJztcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gJ2FueSc7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuICdEYXRlJztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiAnUmVnRXhwJztcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuICdBcnJheTxhbnk+JztcbiAgICAgIH1cbiAgICAgIHJldHVybiBgQXJyYXk8JHtnZW5lcmF0ZVR5cGUodmFsdWVbMF0pfT5gO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgbGV0IGludGVyZmFjZVN0ciA9ICd7XFxuJztcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSBnZW5lcmF0ZVR5cGUodmFsdWVba2V5XSk7XG4gICAgICAgICAgaW50ZXJmYWNlU3RyICs9IGAgICR7a2V5fTogJHt2YWx1ZVR5cGV9O1xcbmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGludGVyZmFjZVN0ciArPSAnfSc7XG4gICAgICByZXR1cm4gaW50ZXJmYWNlU3RyO1xuICAgIH1cblxuICAgIHJldHVybiAnYW55JztcbiAgfTtcblxuICBjb25zdCBpbnRlcmZhY2VTdHIgPSBgaW50ZXJmYWNlICR7aW50ZXJmYWNlTmFtZX0gJHtnZW5lcmF0ZVR5cGUob2JqKX1gO1xuICByZXR1cm4gaW50ZXJmYWNlU3RyO1xufTsiXX0=
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRSxzQ0FBc0M7QUFDdEMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUE2QixFQUFFO0lBQ2pFLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3hDLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDcEssQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUksT0FBNEIsRUFBRSxTQUFnQyxFQUFLLEVBQUU7SUFDN0YsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE9BQU8sT0FBWSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxFQUFPLENBQUM7SUFFdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDakMsTUFBTSxVQUFV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QUMsRUFBRSxDQUFDO29CQUNyRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLFlBQVksSUFBSSxLQUFLLEdBQUcsS0FBSyxTQUFTLEtBQUssQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUM7WUFDRCxZQUFZLElBQUksR0FBRyxDQUFDO1lBQ3BCLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUFHLGFBQWEsYUFBYSxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmLCBpc1NpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbi8qKkPDoWMgaMOgbSB0xrDGoW5nIHThu7EgdGjGsCB2aeG7h24gbG9kYXNoICovXG5leHBvcnQgY29uc3QgaXNOaWwgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgKEpTT04uc3RyaW5naWZ5KHZhbHVlKSA9PT0gJ3t9JyB8fCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgPT09ICdbXScpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBvbWl0QnkgPSA8VD4ob2JqRGF0YTogUmVjb3JkPHN0cmluZywgYW55PiwgcHJlZGljYXRlOiAodmFsOiBhbnkpID0+IGJvb2xlYW4pOiBUID0+IHtcbiAgaWYgKCFvYmpEYXRhIHx8IHR5cGVvZiBvYmpEYXRhICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KG9iakRhdGEpKSB7XG4gICAgcmV0dXJuIG9iakRhdGEgYXMgVDtcbiAgfVxuICBjb25zdCBuZXdPYmogPSB7fSBhcyBUO1xuXG4gIE9iamVjdC5rZXlzKG9iakRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICBjb25zdCB2YWx1ZU9mS2V5ID0gZ2V0KG9iakRhdGEsIGtleSk7XG4gICAgaWYgKCFwcmVkaWNhdGUodmFsdWVPZktleSkpIHtcbiAgICAgIHNldChuZXdPYmosIGtleSwgdmFsdWVPZktleSlcbiAgICB9XG4gIH0pXG4gIHJldHVybiBuZXdPYmo7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0ID0gPFQgPSBhbnk+KG9iajogYW55LCBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlOiBhbnkgPSB1bmRlZmluZWQpOiBUID0+IHtcbiAgaWYgKG9iaiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuICBpZiAoaXNTaWduYWwob2JqKSkge1xuICAgIG9iaiA9IG9iaigpO1xuICB9XG4gIGNvbnN0IHBhdGhzID0gQXJyYXkuaXNBcnJheShwYXRoKSA/IHBhdGggOiBwYXRoLnJlcGxhY2UoL1xcWyhcXGQrKV0vZywgJy4kMScpLnNwbGl0KCcuJyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aHMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAob2JqID09IG51bGwgfHwgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHBhdGhzW2ldKSkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsID0gaXNTaWduYWwob2JqW3BhdGhzW2ldXSkgPyBvYmpbcGF0aHNbaV1dKCkgOiBvYmpbcGF0aHNbaV1dO1xuXG4gICAgb2JqID0gdmFsO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXQgPSA8VCA9IGFueT4ob2JqOiBhbnksIHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCB2YWx1ZTogYW55KTogVCA9PiB7XG4gIGlmICghb2JqIHx8ICh0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmICFpc1NpZ25hbChvYmopKSB8fCAoaXNTaWduYWwob2JqKSAmJiB0eXBlb2Ygb2JqKCkgIT09IFwib2JqZWN0XCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0XCIpO1xuICB9XG5cbiAgY29uc3QgcGF0aEFycmF5ID0gQXJyYXkuaXNBcnJheShwYXRoKSA/IHBhdGggOiBwYXRoLnJlcGxhY2UoL1xcWyhcXGQrKV0vZywgJy5bJDFdJykuc3BsaXQoJy4nKTtcblxuICBsZXQgY3VycmVudDogYW55ID0gaXNTaWduYWwob2JqKSA/IG9iaigpIDogb2JqO1xuXG4gIGxldCBsYXN0SXNTaWduYWwgPSBmYWxzZTtcbiAgcGF0aEFycmF5LmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPCBwYXRoQXJyYXkubGVuZ3RoIC0gMSkge1xuICAgICAgaWYgKCEoa2V5IGluIGN1cnJlbnQpIHx8IHR5cGVvZiBjdXJyZW50W2tleV0gIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgbmV4dEtleSA9IHBhdGhBcnJheVtpbmRleCArIDFdO1xuXG4gICAgICAgIGtleSA9IGtleS5yZXBsYWNlKC9cXFsoXFxkKyldL2csICckMScpO1xuICAgICAgICBjdXJyZW50W2tleV0gPSAvXFxbKFxcZCspXS9nLnRlc3QobmV4dEtleSkgPyBbXSA6IHt9O1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IGtleSA/IGN1cnJlbnRba2V5XSA6IGN1cnJlbnQ7XG4gICAgICBsYXN0SXNTaWduYWwgPSBpc1NpZ25hbChjdXJyZW50KTtcbiAgICAgIGN1cnJlbnQgPSBsYXN0SXNTaWduYWwgPyBjdXJyZW50KCkgOiBjdXJyZW50O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEfDoW4gZ2nDoSB0cuG7iyDhu58gY3Xhu5FpIMSRxrDhu51uZyBk4bqrblxuICAgIGtleSA9IGtleS5yZXBsYWNlKC9cXFsoXFxkKyldL2csICckMScpO1xuICAgIGlmIChsYXN0SXNTaWduYWwpIHtcbiAgICAgIGN1cnJlbnQudXBkYXRlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgZGF0YVtrZXldID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB7IC4uLmRhdGEgfTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjdXJyZW50W2tleV0gPSB2YWx1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cbmV4cG9ydCBjb25zdCBjbG9uZURlZXAgPSA8VCA9IGFueT4oZGF0YTogYW55KTogVCA9PiB7XG4gIGlmIChkYXRhID09PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGEuZ2V0VGltZSgpKSBhcyBUO1xuICB9XG5cbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChkYXRhLnNvdXJjZSwgZGF0YS5mbGFncykgYXMgVDtcbiAgfVxuXG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgY29uc3QgbWFwQ29weSA9IG5ldyBNYXAoKTtcbiAgICBkYXRhLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICBtYXBDb3B5LnNldChjbG9uZURlZXAoa2V5KSwgY2xvbmVEZWVwKHZhbCkpO1xuICAgIH0pO1xuICAgIHJldHVybiBtYXBDb3B5IGFzIFQ7XG4gIH1cblxuICBpZiAoZGF0YSBpbnN0YW5jZW9mIFNldCkge1xuICAgIGNvbnN0IHNldENvcHkgPSBuZXcgU2V0KCk7XG4gICAgZGF0YS5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICBzZXRDb3B5LmFkZChjbG9uZURlZXAodmFsKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNldENvcHkgYXMgVDtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKGl0ZW0gPT4gY2xvbmVEZWVwKGl0ZW0pKSBhcyBUO1xuICB9XG5cbiAgaWYgKGlzU2lnbmFsKGRhdGEpKSB7XG4gICAgcmV0dXJuIGNsb25lRGVlcChkYXRhKCkpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGRhdGFba2V5XTtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiB8fCB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgfHwgdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBjbG9uZURlZXAodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQgYXMgVDtcbn07XG5cbmV4cG9ydCBjb25zdCBrZXlCeSA9IChkYXRhOiBBcnJheTxSZWNvcmQ8YW55LCBhbnk+Piwga2V5OiBzdHJpbmcpOiBSZWNvcmQ8YW55LCBhbnk+ID0+IHtcbiAgaWYgKCFkYXRhIHx8ICFkYXRhLmxlbmd0aCB8fCAha2V5KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiBkYXRhLnJlZHVjZSgoZGlyLCBuZXh0SXRlbSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlT2ZLZXkgPSBuZXh0SXRlbVtrZXldO1xuICAgIGlmICh0eXBlb2YgdmFsdWVPZktleSAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlT2ZLZXkgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGlyO1xuICAgIH1cbiAgICBkaXJbdmFsdWVPZktleV0gPSBuZXh0SXRlbTtcbiAgICByZXR1cm4gZGlyO1xuICB9LCB7fSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBCeSA9IChkYXRhOiBBcnJheTxSZWNvcmQ8YW55LCBhbnk+Piwga2V5OiBzdHJpbmcpOiBSZWNvcmQ8YW55LCBhbnk+ID0+IHtcbiAgaWYgKCFkYXRhIHx8ICFPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggfHwgIWtleSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4gZGF0YS5yZWR1Y2UoKGRpciwgbmV4dEl0ZW0pID0+IHtcbiAgICBjb25zdCB2YWx1ZU9mS2V5ID0gbmV4dEl0ZW1ba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlT2ZLZXkgIT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZU9mS2V5ICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRpcjtcbiAgICB9XG4gICAgaWYgKCFkaXJbdmFsdWVPZktleV0pIHtcbiAgICAgIGRpclt2YWx1ZU9mS2V5XSA9IFtdO1xuICAgIH1cbiAgICBkaXJbdmFsdWVPZktleV0ucHVzaChuZXh0SXRlbSk7XG4gICAgcmV0dXJuIGRpcjtcbiAgfSwge30pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJhbmdlID0gKHN0YXJ0OiBudW1iZXIsIGVuZD86IG51bWJlciwgc3RlcD86IG51bWJlcik6IEFycmF5PG51bWJlcj4gPT4ge1xuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID09PSBudWxsKSB7XG4gICAgZW5kID0gc3RhcnQ7XG4gICAgc3RhcnQgPSAwO1xuICB9XG5cbiAgaWYgKCFzdGVwKSB7XG4gICAgc3RlcCA9IGVuZCA8IDAgPyAtMSA6IDE7XG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQgJiYgc3RlcCA+IDApIHtcbiAgICBzdGVwICo9IC0xO1xuICB9XG5cbiAgY29uc3QgdmFsdWVTdGFydEJ5U3RlcCA9IHN0ZXAgKyBzdGFydDtcbiAgY29uc3QgZGlyZWN0aW9uID0gc3RhcnQgPCBlbmQgPyAnYXNjJyA6ICdkZXNjJztcbiAgaWYgKChkaXJlY3Rpb24gPT09ICdhc2MnICYmICh2YWx1ZVN0YXJ0QnlTdGVwIDwgc3RhcnQgfHwgdmFsdWVTdGFydEJ5U3RlcCA+IGVuZCkpIHx8IChkaXJlY3Rpb24gPT09ICdkZXNjJyAmJiAodmFsdWVTdGFydEJ5U3RlcCA+IHN0YXJ0IHx8IHZhbHVlU3RhcnRCeVN0ZXAgPCBlbmQpKSkge1xuICAgIHJldHVybiBbc3RhcnRdO1xuICB9XG5cbiAgY29uc3QgYXJyID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5hYnMoZW5kIC0gc3RhcnQpOyBpbmRleCsrKSB7XG4gICAgbGV0IHZhbHVlID0gc3RhcnQgKyBpbmRleCAqIHN0ZXA7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICB2YWx1ZSA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGlmICgoZGlyZWN0aW9uID09PSAnYXNjJyAmJiAodmFsdWUgPCBzdGFydCB8fCB2YWx1ZSA+IGVuZCkpIHx8IChkaXJlY3Rpb24gPT09ICdkZXNjJyAmJiAodmFsdWUgPiBzdGFydCB8fCB2YWx1ZSA8IGVuZCkpKSB7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH1cblxuICAgIGFyci5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBhcnI7XG59XG5cbmV4cG9ydCBjb25zdCBpc0VxdWFsID0gKHZhbHVlMTogYW55LCB2YWx1ZTI6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBpZiAodmFsdWUxID09PSB2YWx1ZTIgfHwgKHZhbHVlMSA9PT0gbnVsbCAmJiB2YWx1ZTIgPT09IG51bGwpIHx8ICh2YWx1ZTEgPT09IHVuZGVmaW5lZCAmJiB2YWx1ZTIgPT09IHVuZGVmaW5lZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlMSAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlMiAhPT0gJ29iamVjdCcgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUxKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZTIpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlMSkpIHtcbiAgICBpZiAodmFsdWUxLmxlbmd0aCAhPT0gdmFsdWUyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuICF2YWx1ZTEuc29tZSgoaXRlbSwgaW5kZXgpID0+ICFpc0VxdWFsKGl0ZW0sIHZhbHVlMltpbmRleF0pKTtcbiAgfVxuXG4gIGlmIChPYmplY3Qua2V5cyh2YWx1ZTEpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXModmFsdWUyKS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuICFPYmplY3Qua2V5cyh2YWx1ZTEpLnNvbWUoKGtleSkgPT4gIWlzRXF1YWwodmFsdWUxW2tleV0sIHZhbHVlMltrZXldKSk7XG59XG5cbmV4cG9ydCBjb25zdCB1bmlxQnkgPSA8VD4oZGF0YTogQXJyYXk8VD4sIGtleT86IHN0cmluZyk6IEFycmF5PFQ+ID0+IHtcbiAgaWYgKCFrZXkgfHwgIWRhdGEgfHwgIWRhdGEubGVuZ3RoIHx8IHR5cGVvZiBkYXRhWzBdICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoZGF0YSkpO1xuICB9XG5cbiAgY29uc3QgZGF0YVVuaXF1ZSA9IGtleUJ5KGRhdGEgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4sIGtleSk7XG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKGRhdGFVbmlxdWUpLm1hcChrZXkgPT4gZGF0YVVuaXF1ZVtrZXldKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlSW50ZXJmYWNlID0gKG9iajogYW55LCBpbnRlcmZhY2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBnZW5lcmF0ZVR5cGUgPSAodmFsdWU6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuXG4gICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gJ2Jvb2xlYW4nO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAnYW55JztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gJ0RhdGUnO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuICdSZWdFeHAnO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gJ0FycmF5PGFueT4nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGBBcnJheTwke2dlbmVyYXRlVHlwZSh2YWx1ZVswXSl9PmA7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBsZXQgaW50ZXJmYWNlU3RyID0gJ3tcXG4nO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IGdlbmVyYXRlVHlwZSh2YWx1ZVtrZXldKTtcbiAgICAgICAgICBpbnRlcmZhY2VTdHIgKz0gYCAgJHtrZXl9OiAke3ZhbHVlVHlwZX07XFxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW50ZXJmYWNlU3RyICs9ICd9JztcbiAgICAgIHJldHVybiBpbnRlcmZhY2VTdHI7XG4gICAgfVxuXG4gICAgcmV0dXJuICdhbnknO1xuICB9O1xuXG4gIGNvbnN0IGludGVyZmFjZVN0ciA9IGBpbnRlcmZhY2UgJHtpbnRlcmZhY2VOYW1lfSAke2dlbmVyYXRlVHlwZShvYmopfWA7XG4gIHJldHVybiBpbnRlcmZhY2VTdHI7XG59OyJdfQ==
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import { HttpParams } from "@angular/common/http";
3
- export const HttpParamsRequestInstance = (options, instance) => {
3
+ export const UtilsHttpParamsRequestInstance = (options, instance) => {
4
4
  return new UtilsHttpParamsRequest(options, instance);
5
5
  };
6
6
  export class UtilsHttpParamsRequest extends HttpParams {
@@ -65,4 +65,4 @@ export class UtilsHttpParamsRequest extends HttpParams {
65
65
  return this.params.toString();
66
66
  }
67
67
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1wYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9odHRwLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFzQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFPLE9BQWlDLEVBQUUsUUFBcUIsRUFBZ0MsRUFBRTtJQUN4SSxPQUFPLElBQUksc0JBQXNCLENBQU8sT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxzQkFBK0MsU0FBUSxVQUFVO0lBQ3BFLE1BQU0sQ0FBYztJQUU1QixZQUFZLE9BQWlDLEVBQUUsUUFBcUI7UUFDbEUsS0FBSyxDQUFDLE9BQWMsQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFdEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFFBQVEsWUFBWSxzQkFBc0IsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXJDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFFdkIsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW9CO1FBQzlCLElBQUksUUFBUSxZQUFZLHNCQUFzQixFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFckMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFFBQVEsWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztZQUV2QixPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFFUSxHQUFHLENBQUMsS0FBYSxFQUFFLEtBQWdDO1FBQzFELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBOEIsQ0FBQztJQUN4QyxDQUFDO0lBRVEsR0FBRyxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVEsR0FBRyxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVEsTUFBTSxDQUFDLEtBQWE7UUFDM0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRVEsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVEsTUFBTSxDQUFDLEtBQWEsRUFBRSxLQUFnQztRQUM3RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVRLFNBQVMsQ0FBQyxNQUFpRztRQUNsSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBa0IsQ0FBQztJQUM1QixDQUFDO0lBRVEsTUFBTSxDQUFDLEtBQWEsRUFBRSxLQUFpQztRQUM5RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQThCLENBQUM7SUFDeEMsQ0FBQztJQUVRLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cFBhcmFtZXRlckNvZGVjLCBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbmV4cG9ydCBjb25zdCBIdHRwUGFyYW1zUmVxdWVzdEluc3RhbmNlID0gPFR5cGU+KG9wdGlvbnM/OiBIdHRwUGFyYW1zT3B0aW9uczxUeXBlPiwgaW5zdGFuY2U/OiBIdHRwUGFyYW1zKTogVXRpbHNIdHRwUGFyYW1zUmVxdWVzdDxUeXBlPiA9PiB7XG4gIHJldHVybiBuZXcgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdDxUeXBlPihvcHRpb25zLCBpbnN0YW5jZSk7XG59O1xuXG5leHBvcnQgY2xhc3MgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdDxUeXBlID0geyBwZW06IHN0cmluZyB9PiBleHRlbmRzIEh0dHBQYXJhbXMge1xuICBwcml2YXRlIHBhcmFtcyE6IEh0dHBQYXJhbXM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IEh0dHBQYXJhbXNPcHRpb25zPFR5cGU+LCBpbnN0YW5jZT86IEh0dHBQYXJhbXMpIHtcbiAgICBzdXBlcihvcHRpb25zIGFzIGFueSk7XG5cbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICB0aGlzLnBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKG9wdGlvbnMpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCkge1xuICAgICAgdGhpcy5wYXJhbXMgPSBpbnN0YW5jZS5nZXRJbnN0YW5jZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgSHR0cFBhcmFtcykge1xuICAgICAgdGhpcy5wYXJhbXMgPSBpbnN0YW5jZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGdldEluc3RhbmNlKCk6IEh0dHBQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLnBhcmFtcztcbiAgfVxuXG4gIHNldEluc3RhbmNlKGluc3RhbmNlOiBIdHRwUGFyYW1zKSB7XG4gICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCkge1xuICAgICAgdGhpcy5wYXJhbXMgPSBpbnN0YW5jZS5nZXRJbnN0YW5jZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgSHR0cFBhcmFtcykge1xuICAgICAgdGhpcy5wYXJhbXMgPSBpbnN0YW5jZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHNldChwYXJhbTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbik6IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3Qge1xuICAgIHRoaXMucGFyYW1zID0gdGhpcy5wYXJhbXMuc2V0KHBhcmFtLCB2YWx1ZSk7XG5cbiAgICByZXR1cm4gdGhpcyBhcyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0O1xuICB9XG5cbiAgb3ZlcnJpZGUgaGFzKHBhcmFtOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuaGFzKHBhcmFtKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldChwYXJhbTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmdldChwYXJhbSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRBbGwocGFyYW06IHN0cmluZyk6IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmdldEFsbChwYXJhbSk7XG4gIH1cblxuICBvdmVycmlkZSBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMua2V5cygpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXBwZW5kKHBhcmFtOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTogSHR0cFBhcmFtcyB7XG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLnBhcmFtcy5hcHBlbmQocGFyYW0sIHZhbHVlKTtcblxuICAgIHJldHVybiB0aGlzIGFzIEh0dHBQYXJhbXM7XG4gIH1cblxuICBvdmVycmlkZSBhcHBlbmRBbGwocGFyYW1zOiB7IFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4gfSk6IEh0dHBQYXJhbXMge1xuICAgIHRoaXMucGFyYW1zID0gdGhpcy5wYXJhbXMuYXBwZW5kQWxsKHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcyBhcyBIdHRwUGFyYW1zO1xuICB9XG5cbiAgb3ZlcnJpZGUgZGVsZXRlKHBhcmFtOiBzdHJpbmcsIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbik6IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3Qge1xuICAgIHRoaXMucGFyYW1zID0gdGhpcy5wYXJhbXMuZGVsZXRlKHBhcmFtLCB2YWx1ZSk7XG5cbiAgICByZXR1cm4gdGhpcyBhcyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0O1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSHR0cFBhcmFtc09wdGlvbnM8VHlwZT4ge1xuICBmcm9tU3RyaW5nPzogc3RyaW5nO1xuICBmcm9tT2JqZWN0PzogVFlQRV9GUk9NX09CSkVDVDxUeXBlPjtcbiAgZW5jb2Rlcj86IEh0dHBQYXJhbWV0ZXJDb2RlYztcbn1cbmV4cG9ydCB0eXBlIEdFVF9QQVRIX1ZBUklBQkxFPFR5cGVQYXRoLCBUeXBlT3RoZXIgPSB1bmtub3duPiA9IHtcbiAgW1Byb3BlcnR5IGluIGtleW9mIFR5cGVQYXRoIGFzIGBwYXRoVmFyaWFibGUtJHtMb3dlcmNhc2U8c3RyaW5nICYgUHJvcGVydHk+fWBdOiBUeXBlUGF0aFtQcm9wZXJ0eV07XG59ICYgVHlwZU90aGVyO1xuXG50eXBlIFRZUEVfRlJPTV9PQkpFQ1Q8VHlwZT4gPSBUeXBlIGV4dGVuZHMgdW5kZWZpbmVkIHwgbnVsbCA/IHsgcGVtOiBzdHJpbmcgfSA6IHsgcGVtPzogc3RyaW5nIH0gJiB7XG4gIFtQcm9wZXJ0eSBpbiBrZXlvZiBUeXBlXT86IFR5cGVbUHJvcGVydHldO1xufTsiXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1wYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9odHRwLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFzQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFPLE9BQWlDLEVBQUUsUUFBcUIsRUFBZ0MsRUFBRTtJQUM3SSxPQUFPLElBQUksc0JBQXNCLENBQU8sT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxzQkFBK0MsU0FBUSxVQUFVO0lBQ3BFLE1BQU0sQ0FBYztJQUU1QixZQUFZLE9BQWlDLEVBQUUsUUFBcUI7UUFDbEUsS0FBSyxDQUFDLE9BQWMsQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFdEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFFBQVEsWUFBWSxzQkFBc0IsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXJDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFFdkIsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW9CO1FBQzlCLElBQUksUUFBUSxZQUFZLHNCQUFzQixFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFckMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFFBQVEsWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztZQUV2QixPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFFUSxHQUFHLENBQUMsS0FBYSxFQUFFLEtBQWdDO1FBQzFELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBOEIsQ0FBQztJQUN4QyxDQUFDO0lBRVEsR0FBRyxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVEsR0FBRyxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVEsTUFBTSxDQUFDLEtBQWE7UUFDM0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRVEsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVEsTUFBTSxDQUFDLEtBQWEsRUFBRSxLQUFnQztRQUM3RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVRLFNBQVMsQ0FBQyxNQUFpRztRQUNsSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBa0IsQ0FBQztJQUM1QixDQUFDO0lBRVEsTUFBTSxDQUFDLEtBQWEsRUFBRSxLQUFpQztRQUM5RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQThCLENBQUM7SUFDeEMsQ0FBQztJQUVRLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cFBhcmFtZXRlckNvZGVjLCBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbmV4cG9ydCBjb25zdCBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0SW5zdGFuY2UgPSA8VHlwZT4ob3B0aW9ucz86IEh0dHBQYXJhbXNPcHRpb25zPFR5cGU+LCBpbnN0YW5jZT86IEh0dHBQYXJhbXMpOiBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0PFR5cGU+ID0+IHtcbiAgcmV0dXJuIG5ldyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0PFR5cGU+KG9wdGlvbnMsIGluc3RhbmNlKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0PFR5cGUgPSB7IHBlbTogc3RyaW5nIH0+IGV4dGVuZHMgSHR0cFBhcmFtcyB7XG4gIHByaXZhdGUgcGFyYW1zITogSHR0cFBhcmFtcztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogSHR0cFBhcmFtc09wdGlvbnM8VHlwZT4sIGluc3RhbmNlPzogSHR0cFBhcmFtcykge1xuICAgIHN1cGVyKG9wdGlvbnMgYXMgYW55KTtcblxuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMucGFyYW1zID0gbmV3IEh0dHBQYXJhbXMob3B0aW9ucyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KSB7XG4gICAgICB0aGlzLnBhcmFtcyA9IGluc3RhbmNlLmdldEluc3RhbmNlKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgICB0aGlzLnBhcmFtcyA9IGluc3RhbmNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5zdGFuY2UoKTogSHR0cFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zO1xuICB9XG5cbiAgc2V0SW5zdGFuY2UoaW5zdGFuY2U6IEh0dHBQYXJhbXMpIHtcbiAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KSB7XG4gICAgICB0aGlzLnBhcmFtcyA9IGluc3RhbmNlLmdldEluc3RhbmNlKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgICB0aGlzLnBhcmFtcyA9IGluc3RhbmNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgc2V0KHBhcmFtOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTogVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCB7XG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLnBhcmFtcy5zZXQocGFyYW0sIHZhbHVlKTtcblxuICAgIHJldHVybiB0aGlzIGFzIFV0aWxzSHR0cFBhcmFtc1JlcXVlc3Q7XG4gIH1cblxuICBvdmVycmlkZSBoYXMocGFyYW06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtcy5oYXMocGFyYW0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0KHBhcmFtOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuZ2V0KHBhcmFtKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldEFsbChwYXJhbTogc3RyaW5nKTogc3RyaW5nW10gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuZ2V0QWxsKHBhcmFtKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtcy5rZXlzKCk7XG4gIH1cblxuICBvdmVycmlkZSBhcHBlbmQocGFyYW06IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pOiBIdHRwUGFyYW1zIHtcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMucGFyYW1zLmFwcGVuZChwYXJhbSwgdmFsdWUpO1xuXG4gICAgcmV0dXJuIHRoaXMgYXMgSHR0cFBhcmFtcztcbiAgfVxuXG4gIG92ZXJyaWRlIGFwcGVuZEFsbChwYXJhbXM6IHsgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB9KTogSHR0cFBhcmFtcyB7XG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLnBhcmFtcy5hcHBlbmRBbGwocGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzIGFzIEh0dHBQYXJhbXM7XG4gIH1cblxuICBvdmVycmlkZSBkZWxldGUocGFyYW06IHN0cmluZywgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTogVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCB7XG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLnBhcmFtcy5kZWxldGUocGFyYW0sIHZhbHVlKTtcblxuICAgIHJldHVybiB0aGlzIGFzIFV0aWxzSHR0cFBhcmFtc1JlcXVlc3Q7XG4gIH1cblxuICBvdmVycmlkZSB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhcmFtcy50b1N0cmluZygpO1xuICB9XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUGFyYW1zT3B0aW9uczxUeXBlPiB7XG4gIGZyb21TdHJpbmc/OiBzdHJpbmc7XG4gIGZyb21PYmplY3Q/OiBUWVBFX0ZST01fT0JKRUNUPFR5cGU+O1xuICBlbmNvZGVyPzogSHR0cFBhcmFtZXRlckNvZGVjO1xufVxuZXhwb3J0IHR5cGUgR0VUX1BBVEhfVkFSSUFCTEU8VHlwZVBhdGgsIFR5cGVPdGhlciA9IHVua25vd24+ID0ge1xuICBbUHJvcGVydHkgaW4ga2V5b2YgVHlwZVBhdGggYXMgYHBhdGhWYXJpYWJsZS0ke0xvd2VyY2FzZTxzdHJpbmcgJiBQcm9wZXJ0eT59YF06IFR5cGVQYXRoW1Byb3BlcnR5XTtcbn0gJiBUeXBlT3RoZXI7XG5cbnR5cGUgVFlQRV9GUk9NX09CSkVDVDxUeXBlPiA9IFR5cGUgZXh0ZW5kcyB1bmRlZmluZWQgfCBudWxsID8geyBwZW06IHN0cmluZyB9IDogeyBwZW0/OiBzdHJpbmcgfSAmIHtcbiAgW1Byb3BlcnR5IGluIGtleW9mIFR5cGVdPzogVHlwZVtQcm9wZXJ0eV07XG59OyJdfQ==
package/esm2022/index.mjs CHANGED
@@ -22,4 +22,5 @@ export * from './pattern';
22
22
  export * from './xss-filter';
23
23
  export * from './two-way-signal-object';
24
24
  export * from './format-date';
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RvbSc7XG5leHBvcnQgKiBmcm9tICcuL3VybC1zZWFyY2gtcGFyYW1zJztcbmV4cG9ydCAqIGZyb20gJy4vdXVpZCc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xvcic7XG5leHBvcnQgKiBmcm9tICcuL2NyeXB0byc7XG5leHBvcnQgKiBmcm9tICcuL2NyeXB0by0zcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXktY29kZSc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAtcGFyYW1zJztcbmV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXktY2FjaGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jYWNoZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC1udW1iZXInO1xuZXhwb3J0ICogZnJvbSAnLi9yZW1vdmUtZW1vamknO1xuZXhwb3J0ICogZnJvbSAnLi9lc2NhcGUtaHRtbCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW11bmljYXRlLW1pY3JvJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb24tY2hlY2stZW1iZWQtZnJhbWUnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWxldGUtdW5pY29kZSc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1jb2xvci1ieS1pZCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3BhdHRlcm4nO1xuZXhwb3J0ICogZnJvbSAnLi94c3MtZmlsdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHdvLXdheS1zaWduYWwtb2JqZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWF0LWRhdGUnO1xuIl19
25
+ export * from './encode-url.define';
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vdXJsLXNlYXJjaC1wYXJhbXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dWlkJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbG9yJztcbmV4cG9ydCAqIGZyb20gJy4vY3J5cHRvJztcbmV4cG9ydCAqIGZyb20gJy4vY3J5cHRvLTNyZCc7XG5leHBvcnQgKiBmcm9tICcuL2tleS1jb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1wYXJhbXMnO1xuZXhwb3J0ICogZnJvbSAnLi9sYW5ndWFnZSc7XG5leHBvcnQgKiBmcm9tICcuL2tleS1jYWNoZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhY2hlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWF0LW51bWJlcic7XG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZS1lbW9qaSc7XG5leHBvcnQgKiBmcm9tICcuL2VzY2FwZS1odG1sJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbXVuaWNhdGUtbWljcm8nO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbi1jaGVjay1lbWJlZC1mcmFtZSc7XG5leHBvcnQgKiBmcm9tICcuL2RlbGV0ZS11bmljb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LWNvbG9yLWJ5LWlkJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vcGF0dGVybic7XG5leHBvcnQgKiBmcm9tICcuL3hzcy1maWx0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi90d28td2F5LXNpZ25hbC1vYmplY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtYXQtZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2VuY29kZS11cmwuZGVmaW5lJzsiXX0=
@@ -246,6 +246,19 @@ const isNil = (value) => {
246
246
  const isEmpty = (value) => {
247
247
  return value === null || value === '' || value === undefined || (typeof value === 'object' && (JSON.stringify(value) === '{}' || JSON.stringify(value) === '[]'));
248
248
  };
249
+ const omitBy = (objData, predicate) => {
250
+ if (!objData || typeof objData !== 'object' || Array.isArray(objData)) {
251
+ return objData;
252
+ }
253
+ const newObj = {};
254
+ Object.keys(objData).forEach(key => {
255
+ const valueOfKey = get(objData, key);
256
+ if (!predicate(valueOfKey)) {
257
+ set(newObj, key, valueOfKey);
258
+ }
259
+ });
260
+ return newObj;
261
+ };
249
262
  const get = (obj, path, defaultValue = undefined) => {
250
263
  if (obj == null) {
251
264
  return defaultValue;
@@ -705,7 +718,7 @@ class UtilsKeyCodeConstant {
705
718
  }
706
719
 
707
720
  /* eslint-disable @typescript-eslint/no-explicit-any */
708
- const HttpParamsRequestInstance = (options, instance) => {
721
+ const UtilsHttpParamsRequestInstance = (options, instance) => {
709
722
  return new UtilsHttpParamsRequest(options, instance);
710
723
  };
711
724
  class UtilsHttpParamsRequest extends HttpParams {
@@ -1270,7 +1283,6 @@ class UtilsCache {
1270
1283
  keyCacheStartWith = isKeyMD5 ? keyCacheStartWith : md5(keyCacheStartWith);
1271
1284
  request.onsuccess = (e) => {
1272
1285
  const data = e.target.result;
1273
- console.log(data);
1274
1286
  if (!Array.isArray(data)) {
1275
1287
  return resolve({});
1276
1288
  }
@@ -1442,6 +1454,7 @@ const ERROR_MESSAGE_MAX_VALID = 'i18n_message_error_input_max_value';
1442
1454
  const ERROR_MESSAGE_MIN_LENGTH = 'i18n_message_error_input_min_length';
1443
1455
  const ERROR_MESSAGE_MAX_LENGTH = 'i18n_message_error_input_max_length';
1444
1456
  const CHARACTER_DATA_EMPTY = '__';
1457
+ const DEFAULT_START_PAGE_0 = 'defaultStartPage0';
1445
1458
 
1446
1459
  /* eslint-disable no-useless-escape */
1447
1460
  const PATTERN_EMAIL = () => {
@@ -1578,9 +1591,19 @@ const updateFunctionFormatDate = (functionCustom) => {
1578
1591
  };
1579
1592
  const formatDate = () => functionFormatDate;
1580
1593
 
1594
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1595
+ const endCodeUrl = (objectData, isBody) => {
1596
+ objectData = omitBy(objectData, param => param === '' || isNil(param));
1597
+ let res = '';
1598
+ for (const p in objectData) {
1599
+ res += `&${p}=${encodeURIComponent(objectData[p])}`;
1600
+ }
1601
+ return res === '' ? '' : `${isBody ? '' : '?'}${res.substring(1)}`;
1602
+ };
1603
+
1581
1604
  /**
1582
1605
  * Generated bundle index. Do not edit.
1583
1606
  */
1584
1607
 
1585
- export { CHARACTER_DATA_EMPTY, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, GetColorById, HttpParamsRequestInstance, PATTERN_ACCOUNT, PATTERN_DOMAIN, PATTERN_EMAIL, PATTERN_EMOJI, PATTERN_ENCODE_URI, PATTERN_GET_FIELD_BY_RULE_FIELD_REPLACE, PATTERN_HOST_URL, PATTERN_KEY, PATTERN_MOBILE_PHONE, PATTERN_NAME, PATTERN_NAME_PROFILE, PATTERN_NAME_SPECIAL, PATTERN_NAME_UTF8, PATTERN_NUMBER, PATTERN_PEM, PATTERN_PHONE, PATTERN_PHONE_NORMAL, PATTERN_RULE_FIELD_REPLACE, PATTERN_TAX, PATTERN_URL, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertObjectToSignal, convertSignalToObject, decrypt, decrypt3rd, deleteUnicode, emojiPattern, encrypt, encrypt3rd, escapeHtml, formatDate, formatNumber, generateInterface, get, getColorById, getKeyCacheByArrayObject, getPlatFromBrowser, getViewport, groupBy, isEmbedFrame, isEmpty, isEqual, isNil, keyBy, listColorDefine$1 as listColorDefine, md5, range, removeEmoji, rgbToHex, set, setCaretPosition, setKeyCrypto, setKeyCrypto3rd, setStyles, uniqBy, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uuid, viewDataNumberByLanguage, xssFilter };
1608
+ export { CHARACTER_DATA_EMPTY, DEFAULT_START_PAGE_0, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, GetColorById, PATTERN_ACCOUNT, PATTERN_DOMAIN, PATTERN_EMAIL, PATTERN_EMOJI, PATTERN_ENCODE_URI, PATTERN_GET_FIELD_BY_RULE_FIELD_REPLACE, PATTERN_HOST_URL, PATTERN_KEY, PATTERN_MOBILE_PHONE, PATTERN_NAME, PATTERN_NAME_PROFILE, PATTERN_NAME_SPECIAL, PATTERN_NAME_UTF8, PATTERN_NUMBER, PATTERN_PEM, PATTERN_PHONE, PATTERN_PHONE_NORMAL, PATTERN_RULE_FIELD_REPLACE, PATTERN_TAX, PATTERN_URL, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertObjectToSignal, convertSignalToObject, decrypt, decrypt3rd, deleteUnicode, emojiPattern, encrypt, encrypt3rd, endCodeUrl, escapeHtml, formatDate, formatNumber, generateInterface, get, getColorById, getKeyCacheByArrayObject, getPlatFromBrowser, getViewport, groupBy, isEmbedFrame, isEmpty, isEqual, isNil, keyBy, listColorDefine$1 as listColorDefine, md5, omitBy, range, removeEmoji, rgbToHex, set, setCaretPosition, setKeyCrypto, setKeyCrypto3rd, setStyles, uniqBy, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uuid, viewDataNumberByLanguage, xssFilter };
1586
1609
  //# sourceMappingURL=libs-ui-utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-utils.mjs","sources":["../../../../libs-ui/utils/src/dom.ts","../../../../libs-ui/utils/src/url-search-params.ts","../../../../libs-ui/utils/src/crypto.ts","../../../../libs-ui/utils/src/uuid.ts","../../../../libs-ui/utils/src/helpers.ts","../../../../libs-ui/utils/src/color.ts","../../../../libs-ui/utils/src/crypto-3rd.ts","../../../../libs-ui/utils/src/key-code.ts","../../../../libs-ui/utils/src/http-params.ts","../../../../libs-ui/utils/src/language.ts","../../../../libs-ui/utils/src/key-cache.ts","../../../../libs-ui/utils/src/function-check-embed-frame.ts","../../../../libs-ui/utils/src/communicate-micro.ts","../../../../libs-ui/utils/src/cache.ts","../../../../libs-ui/utils/src/format-number.ts","../../../../libs-ui/utils/src/remove-emoji.ts","../../../../libs-ui/utils/src/escape-html.ts","../../../../libs-ui/utils/src/delete-unicode.ts","../../../../libs-ui/utils/src/get-color-by-id.ts","../../../../libs-ui/utils/src/constants.ts","../../../../libs-ui/utils/src/pattern.ts","../../../../libs-ui/utils/src/xss-filter.ts","../../../../libs-ui/utils/src/two-way-signal-object.ts","../../../../libs-ui/utils/src/format-date.ts","../../../../libs-ui/utils/src/libs-ui-utils.ts"],"sourcesContent":["import { Renderer2 } from \"@angular/core\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\n\nexport const getPlatFromBrowser = ()=> {\n const userAgent = navigator.userAgent;\n let tem;\n let match = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n\n if (/trident/i.test(match[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\n\n return 'IE ' + (tem[1] || '');\n }\n if (match[1] === 'Chrome') {\n tem = userAgent.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem !== null) {\n return tem.slice(1).join(' ').replace('OPR', 'Opera');\n }\n\n }\n match = match[2] ? [match[1], match[2]] : [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = userAgent.match(/version\\/(\\d+)/i)) !== null) {\n match.splice(1, 1, tem[1]);\n }\n\n return match.join(' ');\n}\n\nexport const cloneIBoundingClientRect = (rect: IBoundingClientRect): IBoundingClientRect => {\n return {\n top: rect['top'],\n left: rect['left'],\n width: rect['width'],\n height: rect['height'],\n bottom: rect['bottom']\n };\n}\n\nexport const setStyles = (el: HTMLElement, styles: Record<string, string>, render2: Renderer2): void => {\n Object.keys(styles).forEach((key: string) => render2.setStyle(el, key, styles[key]));\n}\n\nexport const getViewport = (win: Window = window): { width: number; height: number } => {\n const doc = win.document.documentElement,\n body = win.document.getElementsByTagName('body')[0],\n w = win.innerWidth || doc.clientWidth || body.clientWidth,\n h = win.innerHeight || doc.clientHeight || body.clientHeight;\n\n return { width: w, height: h };\n}\n\nexport const setCaretPosition = (element: HTMLTextAreaElement | HTMLInputElement, position: number): void => {\n if (!element || !element.setSelectionRange) {\n return;\n }\n element.focus();\n element.setSelectionRange(position, position);\n}\n\nexport const checkViewInScreen = (container: HTMLElement, element: HTMLElement, elementScroll?: HTMLElement, maxTopLeft?: { top?: number, left?: number }): boolean => {\n if (!container || !element) {\n return false;\n }\n\n const rectContainer = cloneIBoundingClientRect(container.getBoundingClientRect());\n\n if (elementScroll) {\n const rectElementScroll = elementScroll.getBoundingClientRect();\n\n rectContainer['left'] = rectElementScroll.left;\n rectContainer['top'] = rectElementScroll.top;\n\n }\n\n const rectElement = element.getBoundingClientRect();\n const { left, top } = rectElement;\n const topContainer = rectContainer['top'];\n const leftContainer = rectContainer['left'];\n const widthContainer = rectContainer['width'];\n const heightContainer = rectContainer['height'];\n const scrollTopContainer = container.scrollTop;\n const scrollLeftContainer = container.scrollLeft;\n const limitTop = topContainer + scrollTopContainer + heightContainer;\n const limitLeft = leftContainer + scrollLeftContainer + widthContainer;\n\n const maxTopItem = top + (maxTopLeft?.top || 0);\n const maxLeftItem = left + (maxTopLeft?.left || 0);\n\n if (topContainer <= maxTopItem && maxTopItem <= limitTop && leftContainer <= maxLeftItem && maxLeftItem <= limitLeft) {\n return true;\n }\n\n return false;\n};\n\nexport const checkMouseOverInContainer = (mousePosition: { clientX: number; clientY: number }, element?: HTMLElement, rect?: DOMRect): boolean => {\n if (!element && !rect) {\n return false;\n }\n const rectElement = rect || element?.getBoundingClientRect() || {} as DOMRect;\n const { left, top, width, height } = rectElement;\n const limitLeft = left + width;\n const limitTop = top + height;\n const { clientX, clientY } = mousePosition;\n\n if (left <= clientX && clientX <= limitLeft && top <= clientY && clientY <= limitTop) {\n return true;\n }\n\n return false;\n};","export class UtilsUrlSearchParams {\n private static instance: UtilsUrlSearchParams;\n private params: Array<{ key: string, value: string }>;\n constructor(paramString: string) {\n this.params = new Array<{ key: string, value: string }>();\n this.params.length = 0;\n this.params.push(...this.buildParams(paramString));\n }\n\n static getInstance() {\n if (!this.instance) {\n this.instance = new UtilsUrlSearchParams('');\n }\n\n return this.instance;\n }\n\n public static toStringParamObject(params: { [key in string]: string }) {\n const paramsArr: Array<{ key: string, value: string }> = Object.keys(params).map(key => {\n return {\n key,\n value: params[key]\n };\n });\n\n return UtilsUrlSearchParams.ToString(paramsArr);\n }\n\n public static ToString(params: Array<{ key: string, value: string }>) {\n let paramsStr = '';\n\n params.sort((item1, item2) => item1.key.localeCompare(item2.key)).forEach((item) => {\n const { key, value } = item;\n\n paramsStr = `${paramsStr}${paramsStr ? '&' : ''}${key}=${value}`;\n });\n\n return paramsStr;\n }\n\n private buildParams(paramString: string): Array<{ key: string, value: string }> {\n const paramsBuild = new Array<{ key: string, value: string }>();\n\n if (!paramString) {\n return paramsBuild;\n }\n\n const paramsError = paramString.split('?');\n\n if (paramsError.length > 2) {\n paramString = `${paramsError[0]}?${paramsError[1]}&${paramsError.slice(2).join('&')}`;\n }\n\n const params = paramString.replace(/\\S+[?]/g, '').split('&');\n\n if (params) {\n params.forEach(param => {\n if (param.indexOf('=') < 0) {\n return;\n }\n let [key, value] = param.split('=');\n\n key = key.replace(/[?&]+/g, '');\n value = decodeURIComponent(value.replace(/\\+/g, ' '));\n if (!paramsBuild.some(param => param.key === key)) {\n paramsBuild.push({ key, value });\n }\n });\n }\n\n return paramsBuild;\n }\n\n public set(key: string, value: string) {\n const paramByKey = this.params.find(param => param.key === key) as Record<string, string>;\n\n if (!paramByKey) {\n this.params.push({ key, value: decodeURIComponent(value.replace(/\\+/g, ' ')) });\n\n return;\n }\n\n paramByKey['value'] = value;\n }\n\n public get(key: string) {\n return this.params.find(param => param.key === key)?.value;\n }\n\n public has(key: string) {\n return this.params.some(param => param.key === key);\n }\n\n public delete(key: string) {\n const index = this.params.findIndex(param => param.key === key);\n\n if (index >= 0) {\n this.params.splice(index, 1);\n }\n }\n\n public length() {\n return this.params.length;\n }\n\n public toString(params?: Array<{ key: string, value: string }>) {\n params = params || this.params;\n\n return UtilsUrlSearchParams.ToString(params);\n }\n\n public getParamObject() {\n const params = {} as Record<string, string>;\n\n this.params.forEach(item => {\n params[item.key] = item.value;\n });\n\n return params;\n }\n\n public compareParams(param1: string, param2: string) {\n const params1 = this.toString(this.buildParams(param1));\n const params2 = this.toString(this.buildParams(param2));\n\n return params1 === params2;\n }\n\n}\n","\nimport CryptoES from 'crypto-es';\n\nlet key = '12~@#loqwsxacva(3rdhaq12';\n\nexport const setKeyCrypto = (value: string) => {\n if (value.length !== 24 && value.length !== 32) {\n throw Error(`key.length = ${value.length}; Key phải là 1 chuỗi dài 24 hoặc 32 ký tự`);\n }\n key = value;\n};\n\nconst keyStore = () => {\n return key;\n}\n\nexport const encrypt = (plainData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.encrypt(plainData, key, options).toString();\n};\n\nexport const decrypt = (encryptedData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);\n};\n\nexport const md5 = (plainData: string) => {\n return CryptoES.MD5(plainData).toString();\n};\n\n","import { md5 } from \"./crypto\";\n\nexport const uuid = (): string => {\n const timestamp = performance.now() * 1000;\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-=[]{}|;:,.<>?/~';\n let randomString = '';\n\n for (let i = 0; i < 5; i++) {\n randomString += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n const baseString = `${Math.floor(timestamp)}-${randomString}`;\n const charArray = baseString.split('');\n\n for (let i = charArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n\n [charArray[i], charArray[j]] = [charArray[j], charArray[i]];\n }\n\n const shuffledString = charArray.join('');\n\n return md5(shuffledString);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ElementRef, TemplateRef, isSignal } from \"@angular/core\";\n\n/**Các hàm tương tự thư viện lodash */\nexport const isNil = (value: unknown): boolean => {\n return value === null || value === undefined;\n};\n\nexport const isEmpty = (value: unknown) => {\n return value === null || value === '' || value === undefined || (typeof value === 'object' && (JSON.stringify(value) === '{}' || JSON.stringify(value) === '[]'));\n};\n\nexport const get = <T = any>(obj: any, path: string | string[], defaultValue: any = undefined): T => {\n if (obj == null) {\n return defaultValue;\n }\n if (isSignal(obj)) {\n obj = obj();\n }\n const paths = Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.$1').split('.');\n for (let i = 0; i < paths.length; i++) {\n if (obj == null || !Object.prototype.hasOwnProperty.call(obj, paths[i])) {\n return defaultValue;\n }\n const val = isSignal(obj[paths[i]]) ? obj[paths[i]]() : obj[paths[i]];\n\n obj = val;\n }\n\n return obj;\n};\n\nexport const set = <T = any>(obj: any, path: string | string[], value: any): T => {\n if (!obj || (typeof obj !== \"object\" && !isSignal(obj)) || (isSignal(obj) && typeof obj() !== \"object\")) {\n throw new Error(\"The first argument must be an object\");\n }\n\n const pathArray = Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.[$1]').split('.');\n\n let current: any = isSignal(obj) ? obj() : obj;\n\n let lastIsSignal = false;\n pathArray.forEach((key, index) => {\n if (index < pathArray.length - 1) {\n if (!(key in current) || typeof current[key] !== \"object\") {\n const nextKey = pathArray[index + 1];\n\n key = key.replace(/\\[(\\d+)]/g, '$1');\n current[key] = /\\[(\\d+)]/g.test(nextKey) ? [] : {};\n }\n current = key ? current[key] : current;\n lastIsSignal = isSignal(current);\n current = lastIsSignal ? current() : current;\n return;\n }\n\n // Gán giá trị ở cuối đường dẫn\n key = key.replace(/\\[(\\d+)]/g, '$1');\n if (lastIsSignal) {\n current.update((data: any) => {\n data[key] = value;\n return { ...data };\n });\n return;\n }\n current[key] = value;\n });\n\n return obj;\n};\n\nexport const cloneDeep = <T = any>(data: any): T => {\n if (data === null || typeof data !== 'object') {\n return data;\n }\n\n if (data instanceof Date) {\n return new Date(data.getTime()) as T;\n }\n\n if (data instanceof RegExp) {\n return new RegExp(data.source, data.flags) as T;\n }\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n data.forEach((val, key) => {\n mapCopy.set(cloneDeep(key), cloneDeep(val));\n });\n return mapCopy as T;\n }\n\n if (data instanceof Set) {\n const setCopy = new Set();\n data.forEach(val => {\n setCopy.add(cloneDeep(val));\n });\n return setCopy as T;\n }\n\n if (Array.isArray(data)) {\n return data.map(item => cloneDeep(item)) as T;\n }\n\n if (isSignal(data)) {\n return cloneDeep(data());\n }\n\n const result: Record<string, any> = {};\n for (const key in data) {\n const value = data[key];\n if (value instanceof TemplateRef || value instanceof ElementRef || value instanceof Element) {\n result[key] = value;\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n result[key] = cloneDeep(value);\n }\n }\n\n return result as T;\n};\n\nexport const keyBy = (data: Array<Record<any, any>>, key: string): Record<any, any> => {\n if (!data || !data.length || !key) {\n return {};\n }\n return data.reduce((dir, nextItem) => {\n const valueOfKey = nextItem[key];\n if (typeof valueOfKey !== 'string' && typeof valueOfKey !== 'number') {\n return dir;\n }\n dir[valueOfKey] = nextItem;\n return dir;\n }, {});\n};\n\nexport const groupBy = (data: Array<Record<any, any>>, key: string): Record<any, any> => {\n if (!data || !Object.keys(data).length || !key) {\n return {};\n }\n return data.reduce((dir, nextItem) => {\n const valueOfKey = nextItem[key];\n if (typeof valueOfKey !== 'string' && typeof valueOfKey !== 'number') {\n return dir;\n }\n if (!dir[valueOfKey]) {\n dir[valueOfKey] = [];\n }\n dir[valueOfKey].push(nextItem);\n return dir;\n }, {});\n};\n\nexport const range = (start: number, end?: number, step?: number): Array<number> => {\n if (end === undefined || end === null) {\n end = start;\n start = 0;\n }\n\n if (!step) {\n step = end < 0 ? -1 : 1;\n }\n\n if (end < start && step > 0) {\n step *= -1;\n }\n\n const valueStartByStep = step + start;\n const direction = start < end ? 'asc' : 'desc';\n if ((direction === 'asc' && (valueStartByStep < start || valueStartByStep > end)) || (direction === 'desc' && (valueStartByStep > start || valueStartByStep < end))) {\n return [start];\n }\n\n const arr = new Array<number>();\n\n for (let index = 0; index < Math.abs(end - start); index++) {\n let value = start + index * step;\n if (index === 0) {\n value = start;\n }\n\n if ((direction === 'asc' && (value < start || value > end)) || (direction === 'desc' && (value > start || value < end))) {\n return arr;\n }\n\n arr.push(value);\n }\n\n return arr;\n}\n\nexport const isEqual = (value1: any, value2: any): boolean => {\n if (value1 === value2 || (value1 === null && value2 === null) || (value1 === undefined && value2 === undefined)) {\n return true;\n }\n if (typeof value1 !== 'object' || typeof value2 !== 'object' || (Array.isArray(value1) && !Array.isArray(value2))) {\n return false;\n }\n\n if (Array.isArray(value1)) {\n if (value1.length !== value2.length) {\n return false\n }\n\n return !value1.some((item, index) => !isEqual(item, value2[index]));\n }\n\n if (Object.keys(value1).length !== Object.keys(value2).length) {\n return false;\n }\n return !Object.keys(value1).some((key) => !isEqual(value1[key], value2[key]));\n}\n\nexport const uniqBy = <T>(data: Array<T>, key?: string): Array<T> => {\n if (!key || !data || !data.length || typeof data[0] !== 'object') {\n return Array.from(new Set(data));\n }\n\n const dataUnique = keyBy(data as Array<Record<string, any>>, key);\n\n return Object.keys(dataUnique).map(key => dataUnique[key]);\n}\n\nexport const generateInterface = (obj: any, interfaceName: string): string => {\n const generateType = (value: any): string => {\n if (value === null) {\n return 'null';\n }\n const type = typeof value;\n\n if (type === 'string') {\n return 'string';\n }\n if (type === 'number') {\n return 'number';\n }\n if (type === 'boolean') {\n return 'boolean';\n }\n if (type === 'undefined') {\n return 'any';\n }\n\n if (value instanceof Date) {\n return 'Date';\n }\n\n if (value instanceof RegExp) {\n return 'RegExp';\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return 'Array<any>';\n }\n return `Array<${generateType(value[0])}>`;\n }\n\n if (type === 'object') {\n let interfaceStr = '{\\n';\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n const valueType = generateType(value[key]);\n interfaceStr += ` ${key}: ${valueType};\\n`;\n }\n }\n interfaceStr += '}';\n return interfaceStr;\n }\n\n return 'any';\n };\n\n const interfaceStr = `interface ${interfaceName} ${generateType(obj)}`;\n return interfaceStr;\n};","\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface IColorContrastFromOrigin {\n step: number;\n label: string,\n light: string;\n dark: string\n};\nconst step = 20;\nconst percent = 0.05;\n\nexport const colorStepContrastFromOrigin = (color: string, stepNumber: number) => {\n return colorContrastFromOrigin(color).find(item => item.step === stepNumber);\n};\n\nexport const colorContrastFromOrigin = (color: string): Array<IColorContrastFromOrigin> => {\n const parsedColorsArray = parseColorValues(color);\n const colors: any = [];\n let calculatedShades: Array<string> = [];\n let calculatedTints: Array<string> = [];\n\n if (parsedColorsArray !== null) {\n for (let i = 0; i < parsedColorsArray.length; i++) {\n calculatedShades = calculateShades(parsedColorsArray[i]);\n calculatedTints = calculateTints(parsedColorsArray[i]);\n }\n\n for (let i = 0; i <= step; i++) {\n colors.push({ step: i * 5, label: `${i * 5}%`, dark: `#${calculatedShades[i]}`, light: `#${calculatedTints[i]}` });\n }\n }\n\n return colors;\n};\n\nconst parseColorValues = (colorValues: any) => {\n let colorValuesArray = colorValues.match(/\\b[0-9A-Fa-f]{3}\\b|[0-9A-Fa-f]{6}\\b/g);\n\n if (colorValuesArray) {\n colorValuesArray = colorValuesArray.map((item: any) => {\n if (item.length === 3) {\n let newItem = item.toString().split('');\n\n newItem = newItem.reduce((acc: any, it: any) => {\n return acc + it + it;\n }, '');\n\n return newItem;\n }\n\n return item;\n });\n }\n\n return colorValuesArray;\n};\n\nconst calculateShades = (colorValue: any) => {\n return calculate(colorValue, rgbShade).concat(\"000000\");\n};\n\nconst calculateTints = (colorValue: any) => {\n return calculate(colorValue, rgbTint).concat(\"ffffff\");\n};\n\nconst calculate = (colorValue: any, shadeOrTint: any) => {\n const color = hexToRGB(colorValue);\n const shadeValues: Array<string> = [];\n\n for (let i = 0; i < step; i++) {\n shadeValues[i] = rgbToHex(shadeOrTint(color, i));\n }\n\n return shadeValues;\n};\n\nconst rgbShade = (rgb: any, i: any) => { return { red: rgb.red * (1 - percent * i), green: rgb.green * (1 - percent * i), blue: rgb.blue * (1 - percent * i) } };\nconst rgbTint = (rgb: any, i: any) => { return { red: rgb.red + (255 - rgb.red) * i * percent, green: rgb.green + (255 - rgb.green) * i * percent, blue: rgb.blue + (255 - rgb.blue) * i * percent } };\n\n\nexport const rgbToHex = (rgb: any) => { return intToHex(rgb.red) + intToHex(rgb.green) + intToHex(rgb.blue) };\nconst hexToRGB = (colorValue: any) => { return { red: parseInt(colorValue.substr(0, 2), 16), green: parseInt(colorValue.substr(2, 2), 16), blue: parseInt(colorValue.substr(4, 2), 16) } };\nconst intToHex = (rgbint: any) => { return pad(Math.min(Math.max(Math.round(rgbint), 0), 255).toString(16), 2) };\n\nconst pad = (number: any, length: any) => {\n let str = '' + number;\n\n while (str.length < length) { str = '0' + str }\n\n return str;\n};\n\nexport const listColorDefine: Array<string> = ['#E62222', '#B81B1B', '#EB4E4E', '#F97316', '#C75C12', '#FA8F45', '#FFB700', '#CC9200', '#FFC533', '#84CC16', '#6AA312', '#9dd645', '#00BC62', '#00A757', '#33DA8A', '#06B6D4', '#1B59C4', '#4E8CF7', '#0EA5E9',\n '#1B59C4', '#4E8CF7', '#226FF5', '#1B59C4', '#4E8CF7', '#6366F1', '#4F52C1', '#8285F4', '#5B04B3', '#49038F', '#7C36C2', '#D946EF', '#AE38BF', '#E16BF2', '#EC4899', '#BD3A7A', '#F06DAD', '#F43F5E', '#C3324B', '#F6657E', '#757380', '#5E5C66', '#918F99',\n '#202020', '#1A1A1A', '#4D4D4D'\n];\n\nexport const GetColorById = (str: string): string => {\n let hashString = 0;\n\n if (!str) {\n return '';\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n\n hashString = ((hashString << 5) - hashString) + char;\n hashString = hashString & hashString;\n }\n\n return listColorDefine[Math.abs(hashString) % listColorDefine.length];\n};\n\n\n","\nimport CryptoES from 'crypto-es';\n\nlet key = '12~@#loqwsxacva(3rdhaq12';\n\nexport const setKeyCrypto3rd = (value: string) => {\n if (value.length !== 24 && value.length !== 32) {\n throw Error(`key.length = ${value.length}; Key phải là 1 chuỗi dài 24 hoặc 32 ký tự`);\n }\n key = value;\n};\n\n\nconst keyStore = () => {\n return key;\n}\n\nexport const encrypt3rd = (plainData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.encrypt(plainData, key, options).toString();\n};\n\nexport const decrypt3rd = (encryptedData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);\n};","export abstract class UtilsKeyCodeConstant {\n static readonly MAC_ENTER = 3;\n static readonly BACKSPACE = 8;\n static readonly TAB = 9;\n static readonly NUM_CENTER = 12;\n static readonly ENTER = 13;\n static readonly SHIFT = 16;\n static readonly CONTROL = 17;\n static readonly ALT = 18;\n static readonly PAUSE = 19;\n static readonly CAPS_LOCK = 20;\n static readonly ESCAPE = 27;\n static readonly SPACE = 32;\n static readonly PAGE_UP = 33;\n static readonly PAGE_DOWN = 34;\n static readonly END = 35;\n static readonly HOME = 36;\n static readonly LEFT_ARROW = 37;\n static readonly UP_ARROW = 38;\n static readonly RIGHT_ARROW = 39;\n static readonly DOWN_ARROW = 40;\n static readonly PLUS_SIGN = 43;\n static readonly PRINT_SCREEN = 44;\n static readonly INSERT = 45;\n static readonly DELETE = 46;\n static readonly ZERO = 48;\n static readonly ONE = 49;\n static readonly TWO = 50;\n static readonly THREE = 51;\n static readonly FOUR = 52;\n static readonly FIVE = 53;\n static readonly SIX = 54;\n static readonly SEVEN = 55;\n static readonly EIGHT = 56;\n static readonly NINE = 57;\n static readonly FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\n static readonly FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\n static readonly QUESTION_MARK = 63;\n static readonly AT_SIGN = 64;\n static readonly A = 65;\n static readonly B = 66;\n static readonly C = 67;\n static readonly D = 68;\n static readonly E = 69;\n static readonly F = 70;\n static readonly G = 71;\n static readonly H = 72;\n static readonly I = 73;\n static readonly J = 74;\n static readonly K = 75;\n static readonly L = 76;\n static readonly M = 77;\n static readonly N = 78;\n static readonly O = 79;\n static readonly P = 80;\n static readonly Q = 81;\n static readonly R = 82;\n static readonly S = 83;\n static readonly T = 84;\n static readonly U = 85;\n static readonly V = 86;\n static readonly W = 87;\n static readonly X = 88;\n static readonly Y = 89;\n static readonly Z = 90;\n static readonly META = 91; // WIN_KEY_LEFT\n static readonly MAC_WK_CMD_LEFT = 91;\n static readonly MAC_WK_CMD_RIGHT = 93;\n static readonly CONTEXT_MENU = 93;\n static readonly NUMPAD_ZERO = 96;\n static readonly NUMPAD_ONE = 97;\n static readonly NUMPAD_TWO = 98;\n static readonly NUMPAD_THREE = 99;\n static readonly NUMPAD_FOUR = 100;\n static readonly NUMPAD_FIVE = 101;\n static readonly NUMPAD_SIX = 102;\n static readonly NUMPAD_SEVEN = 103;\n static readonly NUMPAD_EIGHT = 104;\n static readonly NUMPAD_NINE = 105;\n static readonly NUMPAD_MULTIPLY = 106;\n static readonly NUMPAD_PLUS = 107;\n static readonly NUMPAD_MINUS = 109;\n static readonly NUMPAD_PERIOD = 110;\n static readonly NUMPAD_DIVIDE = 111;\n static readonly F1 = 112;\n static readonly F2 = 113;\n static readonly F3 = 114;\n static readonly F4 = 115;\n static readonly F5 = 116;\n static readonly F6 = 117;\n static readonly F7 = 118;\n static readonly F8 = 119;\n static readonly F9 = 120;\n static readonly F10 = 121;\n static readonly F11 = 122;\n static readonly F12 = 123;\n static readonly NUM_LOCK = 144;\n static readonly SCROLL_LOCK = 145;\n static readonly FIRST_MEDIA = 166;\n static readonly FF_MINUS = 173;\n static readonly MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\n static readonly VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\n static readonly VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\n static readonly FF_MUTE = 181;\n static readonly FF_VOLUME_DOWN = 182;\n static readonly LAST_MEDIA = 183;\n static readonly FF_VOLUME_UP = 183;\n static readonly SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\n static readonly EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\n static readonly COMMA = 188;\n static readonly DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\n static readonly PERIOD = 190;\n static readonly SLASH = 191;\n static readonly APOSTROPHE = 192;\n static readonly TILDE = 192;\n static readonly OPEN_SQUARE_BRACKET = 219;\n static readonly BACKSLASH = 220;\n static readonly CLOSE_SQUARE_BRACKET = 221;\n static readonly SINGLE_QUOTE = 222;\n static readonly MAC_META = 224;\n }\n ","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParameterCodec, HttpParams } from \"@angular/common/http\";\n\nexport const HttpParamsRequestInstance = <Type>(options?: HttpParamsOptions<Type>, instance?: HttpParams): UtilsHttpParamsRequest<Type> => {\n return new UtilsHttpParamsRequest<Type>(options, instance);\n};\n\nexport class UtilsHttpParamsRequest<Type = { pem: string }> extends HttpParams {\n private params!: HttpParams;\n\n constructor(options?: HttpParamsOptions<Type>, instance?: HttpParams) {\n super(options as any);\n\n if (!instance) {\n this.params = new HttpParams(options);\n\n return;\n }\n\n if (instance instanceof UtilsHttpParamsRequest) {\n this.params = instance.getInstance();\n\n return;\n }\n\n if (instance instanceof HttpParams) {\n this.params = instance;\n\n return;\n }\n }\n\n getInstance(): HttpParams {\n return this.params;\n }\n\n setInstance(instance: HttpParams) {\n if (instance instanceof UtilsHttpParamsRequest) {\n this.params = instance.getInstance();\n\n return;\n }\n\n if (instance instanceof HttpParams) {\n this.params = instance;\n\n return;\n }\n }\n\n override set(param: string, value: string | number | boolean): UtilsHttpParamsRequest {\n this.params = this.params.set(param, value);\n\n return this as UtilsHttpParamsRequest;\n }\n\n override has(param: string): boolean {\n return this.params.has(param);\n }\n\n override get(param: string): string | null {\n return this.params.get(param);\n }\n\n override getAll(param: string): string[] | null {\n return this.params.getAll(param);\n }\n\n override keys(): string[] {\n return this.params.keys();\n }\n\n override append(param: string, value: string | number | boolean): HttpParams {\n this.params = this.params.append(param, value);\n\n return this as HttpParams;\n }\n\n override appendAll(params: { [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean> }): HttpParams {\n this.params = this.params.appendAll(params);\n\n return this as HttpParams;\n }\n\n override delete(param: string, value?: string | number | boolean): UtilsHttpParamsRequest {\n this.params = this.params.delete(param, value);\n\n return this as UtilsHttpParamsRequest;\n }\n\n override toString(): string {\n return this.params.toString();\n }\n}\n\nexport declare interface HttpParamsOptions<Type> {\n fromString?: string;\n fromObject?: TYPE_FROM_OBJECT<Type>;\n encoder?: HttpParameterCodec;\n}\nexport type GET_PATH_VARIABLE<TypePath, TypeOther = unknown> = {\n [Property in keyof TypePath as `pathVariable-${Lowercase<string & Property>}`]: TypePath[Property];\n} & TypeOther;\n\ntype TYPE_FROM_OBJECT<Type> = Type extends undefined | null ? { pem: string } : { pem?: string } & {\n [Property in keyof Type]?: Type[Property];\n};","\nexport class UtilsLanguageConstants {\n public static VI = 'vi';\n public static EN = 'en';\n public static defaultLang = UtilsLanguageConstants.VI;\n};","import { HttpParams } from \"@angular/common/http\";\nimport { md5 } from \"./crypto\";\n\nexport const getKeyCacheByArrayObject = (keyCache: string, argumentsValue?: Array<unknown>): string =>{\n if (!keyCache || !argumentsValue) {\n return '';\n }\n let keyBuild = `${JSON.stringify(argumentsValue.slice(1))}-key-cache-plus`;\n\n if (argumentsValue && argumentsValue[0] instanceof HttpParams) {\n const httpParams = argumentsValue[0];\n const keys = argumentsValue[0].keys().sort((str1, str2) => str1.localeCompare(str2));\n\t\t\tkeys.forEach(key => {\n\t\t\t\t\tkeyBuild = `${keyBuild}${JSON.stringify(httpParams.get(key))}`;\n\t\t\t});\n }\n const keyCachePlus = md5(keyBuild);\n const keyCacheMD5 = md5(keyCache);\n\n return `${keyCacheMD5}-${md5(`${keyCacheMD5}-${keyCachePlus}`)}`;\n}\n\n ","let functionCheck = () => {\n return window.parent !== window.top;\n}\nexport const updateFunctionCheckEmbedFrame = (functionCustom: () => boolean) => {\n functionCheck = functionCustom;\n}\n\nexport const isEmbedFrame = (): boolean => {\n return functionCheck();\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Subject, filter, fromEvent, takeUntil } from \"rxjs\";\nimport { decrypt, encrypt } from \"./crypto\";\nimport { decrypt3rd, encrypt3rd } from \"./crypto-3rd\";\nimport { isEmbedFrame } from \"./function-check-embed-frame\";\nimport { UtilsCache } from \"./cache\";\nexport class UtilsCommunicateMicroKeyGlobal {\n public static KEY_MESSAGE_MODAL = 'LIBS_UI_MODEL_EVENT';\n}\n\nexport class UtilsCommunicateMicro {\n public static readonly PREFIX_TYPE = '3RD_INTEGRATE_MICRO_SITE_';\n private static readonly KEY_GET_ALL_MESSAGE = 'MICRO_SITES_ALL_MESSAGE';\n private static initdEvent?: boolean;\n private static subs: Map<string, Subject<MessageEvent>> = new Map();\n private static allMessageSub: Subject<MessageEvent> = new Subject();\n\n public static initEvent(currentWindow: Window, onDestroy: Subject<void>) {\n if (this.initdEvent) {\n return;\n }\n this.initdEvent = true;\n if (!this.subs.get(UtilsCommunicateMicro.KEY_GET_ALL_MESSAGE)) {\n this.subs.set(UtilsCommunicateMicro.KEY_GET_ALL_MESSAGE, UtilsCommunicateMicro.allMessageSub);\n }\n\n fromEvent<MessageEvent>(currentWindow, 'message').pipe(takeUntil(onDestroy)).subscribe(e => {\n const event = { data: { ...e.data } } as MessageEvent;\n\n const data = event.data;\n const type = data.type;\n\n if (!type) {\n return this.allMessageSub.next(event);\n }\n const sub = UtilsCommunicateMicro.GetMessage(type);\n\n if (!type || !data.response) {\n return;\n }\n try {\n if (type.includes(UtilsCommunicateMicro.PREFIX_TYPE)) {\n\n data.response = JSON.parse(decrypt3rd(data.response));\n sub.next(event);\n this.allMessageSub.next(event);\n\n return;\n }\n data.response = JSON.parse(decrypt(data.response));\n sub.next(event);\n this.allMessageSub.next(event);\n } catch (error) {\n console.log(error);\n sub.next(event);\n this.allMessageSub.next(event);\n }\n });\n\n UtilsCommunicateMicro.GetMessage(UtilsCache.typeKeyClearLocalStorage).pipe(filter(e => e.data.response !== UtilsCache.idService), takeUntil(onDestroy)).subscribe(() => {\n console.log('clear all cache by event');\n UtilsCache.ClearAll();\n });\n }\n\n static PostMessageToParent(data: any) {\n data = this.convertData(data);\n try {\n if (isEmbedFrame()) {\n window?.parent?.postMessage(data, \"*\");\n\n return;\n }\n\n window?.top?.postMessage(data, \"*\");\n } catch (error) {\n console.log(error);\n }\n }\n\n static PostMessageToChildren(data: any) {\n data = this.convertData(data);\n const iframes = document.querySelectorAll(\"iframe\");\n\n Array.from(iframes).forEach(iframe => {\n iframe?.contentWindow?.postMessage(data, '*');\n });\n\n }\n\n static PostMessageToOpener(data: any) {\n if (!window.opener) {\n return;\n }\n data = this.convertData(data);\n\n window.opener.postMessage(data, '*');\n }\n\n private static convertData(data: any) {\n if (!data || !data.type || !data.response) {\n return data;\n }\n data = { ...data };\n const type = data.type;\n\n if (type.includes(this.PREFIX_TYPE)) {\n try {\n JSON.parse(decrypt3rd(data.response));\n\n return data;\n } catch (_) {\n data.response = encrypt3rd(JSON.stringify(data.response));\n\n return data;\n }\n\n }\n try {\n JSON.parse(decrypt(data.response));\n\n return data;\n } catch (_) {\n data.response = encrypt(JSON.stringify(data.response));\n\n return data;\n }\n }\n\n static GetMessage(messageType: string | Array<string>): Subject<MessageEvent> {\n if (!this.initdEvent) {\n throw Error(\"chưa khơi tạo hàm lắng nghe sự kiện, gọi UtilsCommunicateMicro.initEvent(window) tại root component\")\n }\n if (typeof messageType === 'string') {\n let sub = this.subs.get(messageType);\n\n if (!sub) {\n sub = new Subject();\n this.subs.set(messageType, sub);\n\n return sub;\n }\n\n return sub;\n }\n if (!Array.isArray(messageType) || !messageType.length) {\n throw new Error('message type empty');\n }\n const types = messageType.sort().join(';');\n\n let sub = this.subs.get(types);\n\n if (sub) {\n return sub;\n }\n\n sub = new Subject();\n this.subs.set(types, sub);\n this.initSubject(sub, messageType);\n\n return sub;\n }\n\n private static initSubject(subRoot: Subject<MessageEvent>, messageType: Array<string>) {\n messageType.forEach(key => {\n this.GetMessage(key).subscribe(e => {\n subRoot.next(e);\n });\n });\n }\n}\n","/* eslint-disable no-async-promise-executor */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { signal } from '@angular/core';\nimport { UtilsCommunicateMicro } from './communicate-micro';\nimport { decrypt, encrypt, md5 } from './crypto';\nimport { getPlatFromBrowser } from './dom';\nimport { isEmbedFrame } from './function-check-embed-frame';\nimport { isNil } from './helpers';\nimport { UtilsLanguageConstants } from './language';\nimport { uuid } from './uuid';\n\nexport class UtilsCache {\n public static readonly CACHE_EXPIRE_TIME_DEFAULT = 5 * 60;\n public static readonly CACHE_EXPIRE_NONE = -1;\n public static readonly idService = uuid();\n public static typeKeyClearLocalStorage = 'LIBS_UI_CLEAR_LOCAL_STORAGE_EVENT';\n\n private static languageKeyCache = 'SR3xQKxHgffiCevPQRralg';\n private static listKeyKeepWhenClearALll = Array<string>();\n private static initdEvent?: boolean;\n private static language = signal<string>(UtilsLanguageConstants.defaultLang);\n private static storage: { [key: string]: unknown };\n private static dbName = 'libs-ui-cache';\n private static itemIndexByKey = 'key';\n private static dbVersion = 1;\n private static db: IDBDatabase | null = null;\n\n public static init(config: { indexedDBName?: string, languageKeyCache?: string, typeKeyClearLocalStorage?: string, listKeyKeepWhenClearAll?: Array<string> }) {\n if (UtilsCache.initdEvent) {\n return;\n }\n UtilsCache.initdEvent = true;\n if (config.indexedDBName) {\n UtilsCache.dbName = config.indexedDBName;\n }\n if (config.typeKeyClearLocalStorage) {\n UtilsCache.typeKeyClearLocalStorage = config.typeKeyClearLocalStorage;\n }\n if (config.listKeyKeepWhenClearAll) {\n UtilsCache.listKeyKeepWhenClearALll = config.listKeyKeepWhenClearAll;\n }\n if (config.languageKeyCache) {\n UtilsCache.languageKeyCache = config.languageKeyCache;\n }\n this.language.set(UtilsCache.Get(UtilsCache.languageKeyCache, UtilsLanguageConstants.defaultLang));\n }\n\n public static setLang(lang: string) {\n if (lang !== UtilsLanguageConstants.VI && lang !== UtilsLanguageConstants.EN) {\n throw Error('Language support vi | en');\n }\n UtilsCache.language.set(lang);\n UtilsCache.Set(UtilsCache.languageKeyCache, lang);\n }\n\n public static getLang() {\n return UtilsCache.language();\n }\n\n private static openDB() {\n return new Promise(resolve => {\n const request = indexedDB.open(UtilsCache.dbName, UtilsCache.dbVersion);\n\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\n const db = (event.target as IDBOpenDBRequest).result;\n\n if (!db.objectStoreNames.contains(UtilsCache.dbName)) {\n const objectStore = db.createObjectStore(UtilsCache.dbName, { keyPath: UtilsCache.itemIndexByKey, autoIncrement: true });\n\n objectStore.createIndex(UtilsCache.itemIndexByKey, UtilsCache.itemIndexByKey, { unique: true });\n }\n };\n\n request.onsuccess = () => {\n UtilsCache.db = request.result;\n resolve(true);\n };\n\n request.onerror = (event) => {\n console.error('Error opening IndexedDB:', event);\n resolve(false);\n };\n });\n }\n\n private static async getObjectStore() {\n if (!UtilsCache.db) {\n await UtilsCache.openDB();\n }\n const transaction = UtilsCache.db?.transaction([UtilsCache.dbName], 'readwrite');\n if (!transaction) {\n return null;\n }\n\n return transaction.objectStore(UtilsCache.dbName);\n }\n\n private static get LocalStorage(): any {\n try {\n if (typeof window.localStorage !== 'undefined') {\n const OS = getPlatFromBrowser();\n\n if (OS.includes('Safari') && parseFloat(OS.split(' ').pop() || '0') >= 16) {\n\n return this.getLocalStorageFakeOnSafari();\n }\n\n return localStorage;\n }\n\n return this.getLocalStorageFake();\n } catch (error) {\n console.log(error);\n return this.getLocalStorageFake();\n }\n }\n\n private static getLocalStorageFakeOnSafari() {\n if (typeof window.localStorage !== 'undefined' && !UtilsCache.storage && Object.keys(localStorage).length) {\n this.storage = { ...localStorage };\n }\n\n return {\n setItem: (key: string, value: string) => {\n localStorage.setItem(key, value);\n this.storage[key] = value;\n },\n getItem: (key: string) => {\n const value = localStorage.getItem(key);\n\n if (value) {\n return value;\n }\n\n if (!this.storage || isNil(this.storage[key])) {\n return null;\n }\n\n localStorage.setItem(key, this.storage[key] as string);\n\n return this.storage?.[key];\n },\n removeItem: (key: string) => {\n delete this.storage?.[key];\n localStorage.removeItem(key);\n },\n clear: () => {\n this.storage = {};\n localStorage.clear();\n }\n };\n }\n\n private static getLocalStorageFake() {\n if (!UtilsCache.storage) {\n this.storage = {};\n }\n\n return {\n setItem: (key: string, value: unknown) => {\n this.storage[key] = value;\n },\n getItem: (key: string) => {\n return this.storage?.[key];\n },\n removeItem: (key: string) => {\n delete this.storage?.[key];\n },\n clear: () => {\n this.storage = {};\n }\n };\n }\n\n public static async GetAsync<T = any>(key: string, default_value?: any, isKeyMD5 = false): Promise<T> {\n key = isKeyMD5 ? key : md5(key);\n\n return new Promise<T>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n\n return resolve(default_value);\n }\n const request = objectStore.get(key);\n\n request.onsuccess = () => {\n if (!request.result) {\n return resolve(default_value);\n }\n const data = JSON.parse(decrypt(request.result.value));\n\n if (data.expire === UtilsCache.CACHE_EXPIRE_NONE) {\n return resolve(data.json);\n }\n const currentMillisecond = (new Date().valueOf() / 1000);\n\n if (data.expire < currentMillisecond) {\n\n return resolve(default_value);\n }\n\n return resolve(data.json);\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n\n public static Get<T = any>(key: string, default_value?: any): T { // support cho những file không thể inject UtilsCache\n if (!key) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n const cachedData = this.LocalStorage.getItem(key);\n\n if (!cachedData) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n try {\n const data = JSON.parse(decrypt(cachedData));\n\n if (data.expire === UtilsCache.CACHE_EXPIRE_NONE) {\n return data.value;\n }\n const currentMillisecond = (new Date().valueOf() / 1000);\n\n if (data.expire < currentMillisecond) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n\n return data.value;\n\n } catch (error) {\n console.log(error);\n\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n }\n\n public static GetDefaultValueBySpecificKey(key: string, default_value: any) {\n return default_value;\n\n }\n\n public static async SetAsync<T = any>(key: string, value: any, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, isKeyMD5 = false): Promise<T> { // support inject UtilsCache\n return new Promise<T>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n key = isKeyMD5 ? key : md5(key);\n try {\n const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;\n const data: any = {\n value: encrypt(JSON.stringify({ json: value, expire: currentMillisecond })),\n };\n data[UtilsCache.itemIndexByKey] = key;\n\n if (!objectStore) {\n return reject(new Error('Can not open object store'));\n }\n const request = objectStore?.put(data);\n request.onsuccess = () => {\n resolve(request.result as any);\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n\n } catch (error) {\n reject(error);\n }\n });\n }\n\n\n static Set(key: string, value: any, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT): boolean { // support cho những file không inject UtilsCache\n const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;\n const data = {\n value: value,\n expire: currentMillisecond\n };\n\n try {\n this.LocalStorage.setItem(key, encrypt(JSON.stringify(data)));\n return true;\n } catch (error) {\n console.log(error);\n return false;\n }\n }\n\n public static async ClearAsync(key: string, isMD5 = false) {\n return new Promise<void>(async (resolve) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve();\n }\n const request = objectStore.delete(isMD5 ? key : md5(key));\n\n request.onsuccess = () => {\n resolve();\n };\n request.onerror = () => {\n resolve();\n };\n });\n }\n\n\n static Clear(key: string) {\n if (key.includes('kc-callback-')) {\n return;\n }\n this.LocalStorage.removeItem(key);\n }\n\n public static ClearAllAsync() {\n return new Promise<void>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve();\n }\n\n const request = objectStore.clear();\n request.onsuccess = () => {\n console.log('Database deleted successfully');\n resolve();\n };\n\n request.onerror = (event: Event) => {\n console.error('Error deleting database:', (event.target as IDBRequest).error);\n reject((event.target as IDBRequest).error);\n };\n });\n }\n\n static ClearAll() {\n const keys = [...UtilsCache.listKeyKeepWhenClearALll];\n Object.keys(this.LocalStorage).forEach(key => {\n if (key.includes('kc-callback-')) {\n keys.push(key);\n }\n });\n\n const stores = UtilsCache.GetDataByKeys(Array.from(keys));\n\n this.LocalStorage.clear();\n\n UtilsCache.SetDataByKey(stores);\n if (isEmbedFrame()) {\n const data = {\n type: UtilsCache.typeKeyClearLocalStorage,\n response: {\n idEvent: this.idService\n }\n };\n UtilsCommunicateMicro.PostMessageToParent(data);\n }\n }\n\n private static GetDataByKeys(keys: Array<string>) {\n const stores = new Map();\n\n keys.forEach((key: string) => {\n if (key.includes('kc-callback-')) {\n stores.set(key, this.LocalStorage.getItem(key));\n\n return;\n }\n stores.set(key, UtilsCache.Get(key));\n });\n\n return stores;\n }\n\n private static SetDataByKey(stores: Map<string, any>) {\n stores.forEach((value: any, key: string) => {\n if (key.includes('kc-callback-')) {\n this.LocalStorage.setItem(key, value);\n\n return;\n }\n if (key === UtilsCache.languageKeyCache) {\n return UtilsCache.setLang(value);\n }\n UtilsCache.Set(key, value, UtilsCache.CACHE_EXPIRE_NONE);\n });\n }\n\n public static DeleteKeyStartWithAsync(keyCacheStartWith: string, isKeyMD5 = false) {\n return new Promise(async (resolve) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve({});\n }\n\n // Lấy tất cả các keys từ index\n const request = objectStore.getAll();\n\n keyCacheStartWith = isKeyMD5 ? keyCacheStartWith : md5(keyCacheStartWith);\n\n\n request.onsuccess = (e: any) => {\n const data = e.target.result as Array<any>;\n console.log(data);\n\n if (!Array.isArray(data)) {\n return resolve({});\n }\n\n data.forEach(obj => {\n if (obj[UtilsCache.itemIndexByKey].startsWith(keyCacheStartWith)) {\n UtilsCache.ClearAsync(obj[UtilsCache.itemIndexByKey], true);\n }\n });\n\n return resolve({});\n };\n\n request.onerror = () => {\n return resolve({});\n };\n });\n }\n\n public static DeleteKeyStartWith(keyCache: string, isMD5 = false) {\n keyCache = isMD5 ? md5(keyCache) : keyCache;\n const keys = Object.keys(UtilsCache.LocalStorage);\n\n if (!keys || !keys.length) {\n return;\n }\n\n keys.forEach(key => {\n if (key.startsWith(keyCache)) {\n this.Clear(key);\n }\n });\n }\n\n public static DeleteDatabaseIndexDB(dbName: string) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(dbName);\n\n request.onsuccess = () => {\n console.log('Database deleted successfully');\n resolve(true);\n };\n\n request.onerror = (event: Event) => {\n console.error('Error deleting database:', (event.target as IDBRequest).error);\n reject((event.target as IDBRequest).error);\n };\n\n request.onblocked = () => {\n console.warn('Delete request is blocked');\n };\n });\n }\n}\n","import { UtilsCache } from \"./cache\";\nimport { isNil } from \"./helpers\";\nimport { UtilsLanguageConstants } from \"./language\";\n\n\nexport const formatNumber = (value: string | number): string => {\n const lang = UtilsCache.getLang();\n\n if (lang === UtilsLanguageConstants.EN) {\n return `${value}`.replace(/[,]/g, '');\n }\n\n return `${value}`.replace(/[.]/g, '').replace(/[,]/g, '.');\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const viewDataNumberByLanguage = (value: string | number, acceptNegativeValue: boolean | undefined, parseFixed = 1, ignoreFormatSeparator = false, ignoreParseFloat = false): any => {\n const lang = UtilsCache.getLang()\n\n if (!`${value}`.trim()) {\n return '';\n }\n if (isNil(value) || (!acceptNegativeValue && +value <= 0)) {\n return 0;\n }\n if (typeof value === 'string' && !ignoreFormatSeparator) {\n value = formatNumber(value);\n }\n\n const isFloat = value.toString().includes('.');\n const [intStr, floatStr] = value.toString().split('.');\n\n if (!floatStr?.length) {\n parseFixed = 0;\n }\n const round = (value: number, parseFixed: number) => {\n const fixed = Math.pow(10, parseFixed);\n\n return Math.round(value * fixed) / fixed;\n };\n\n if (parseFixed > (floatStr?.length || 0)) {\n const maxParseFixed = (acceptNegativeValue && +value < 0) ? 17 : 16;\n const fixed = maxParseFixed - (intStr?.length || 0);\n\n parseFixed = parseFixed < fixed ? parseFixed : fixed;\n }\n\n if (isFloat && !ignoreParseFloat) {\n value = parseFloat(round(+value, parseFixed).toFixed(parseFixed));\n }\n\n // Xử lý không format dữ liệu phần thập phân\n const valueString = value.toString();\n const index = valueString.indexOf('.');\n\n if (index !== -1 && (parseFixed > 3 || ignoreParseFloat)) {\n let decimalPart = valueString.substring(index + 1, valueString.length);\n let int = valueString.substring(0, index + 1);\n\n if (ignoreParseFloat) {\n decimalPart = decimalPart.substring(0, parseFixed);\n }\n if (lang === UtilsLanguageConstants.EN) {\n int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n\n return `${int}${decimalPart}`;\n }\n int = int.replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n return `${int}${decimalPart}`;\n }\n if (index === -1 || parseFixed <= 3) {\n if (lang === UtilsLanguageConstants.EN) {\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n return value.toString().replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n }\n};","export const emojiPattern = ()=> {\n return /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g;\n}\nexport const removeEmoji = (text: string) => {\n if (!text || !text.trim()) {\n return text;\n }\n \n return text.replace(emojiPattern(), '');\n};","export const escapeHtml = (data: string): string => {\n if (!data || typeof data !== 'string') {\n return data;\n }\n\n return data\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#039;\");\n};\n","export const deleteUnicode = (str: string) => {\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ|ễ/g, 'e');\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\n str = str.replace(/đ/g, 'd');\n str = str.replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, 'A');\n str = str.replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, 'E');\n str = str.replace(/Ì|Í|Ị|Ỉ|Ĩ/g, 'I');\n str = str.replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, 'O');\n str = str.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, 'U');\n str = str.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, 'Y');\n str = str.replace(/Đ/g, 'D');\n\n str = str.replace(/\\u0300|\\u0301|\\u0303|\\u0309|\\u0323/g, \"\"); // ̀ ́ ̃ ̉ ̣ huyền, sắc, ngã, hỏi, nặng\n str = str.replace(/\\u02C6|\\u0306|\\u031B/g, \"\"); // ˆ ̆ ̛ Â, Ê, Ă, Ơ, Ư\n\n return str.normalize();\n};","const listColorDefine: Array<string> = ['#E62222', '#B81B1B', '#EB4E4E', '#F97316', '#C75C12', '#FA8F45', '#FFB700', '#CC9200', '#FFC533', '#84CC16', '#6AA312', '#9dd645', '#00BC62', '#00A757', '#33DA8A', '#06B6D4', '#1B59C4', '#4E8CF7', '#0EA5E9',\n '#1B59C4', '#4E8CF7', '#226FF5', '#1B59C4', '#4E8CF7', '#6366F1', '#4F52C1', '#8285F4', '#5B04B3', '#49038F', '#7C36C2', '#D946EF', '#AE38BF', '#E16BF2', '#EC4899', '#BD3A7A', '#F06DAD', '#F43F5E', '#C3324B', '#F6657E', '#757380', '#5E5C66', '#918F99',\n '#202020', '#1A1A1A', '#4D4D4D'\n];\n\nexport const getColorById = (str: string): string => {\n let hashString = 0;\n\n if (!str) {\n return '';\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n\n hashString = ((hashString << 5) - hashString) + char;\n hashString = hashString & hashString;\n }\n\n return listColorDefine[Math.abs(hashString) % listColorDefine.length];\n};\n\n","export const ERROR_MESSAGE_EMPTY_VALID = 'i18n_valid_empty_message';\nexport const ERROR_MESSAGE_PATTEN_VALID = 'i18n_valid_pattern_message';\nexport const ERROR_MESSAGE_MIN_VALID = 'i18n_message_error_input_min_value';\nexport const ERROR_MESSAGE_MAX_VALID = 'i18n_message_error_input_max_value';\nexport const ERROR_MESSAGE_MIN_LENGTH = 'i18n_message_error_input_min_length';\nexport const ERROR_MESSAGE_MAX_LENGTH = 'i18n_message_error_input_max_length';\nexport const CHARACTER_DATA_EMPTY = '__';","/* eslint-disable no-useless-escape */\nexport const PATTERN_EMAIL = () => {\n return /^[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]@[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]\\.[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]$/;\n}\nexport const PATTERN_URL = () => {\n return /^(http|https|ftp):(\\/){2}[^\\s]+[.]{1}[^\\s]+$/;\n}\n\nexport const PATTERN_HOST_URL = () => {\n return /^((https|http|ftp):[/]{2}[^/\\s]+)/;\n}\n\nexport const PATTERN_DOMAIN = () => {\n return /^([a-zA-Z0-9])(([a-z0-9-]{1,61})?[a-z0-9]{1})?(\\.[a-z0-9](([a-z0-9-]{1,61})?[a-z0-9]{1})?)?(\\.[a-zA-Z]{2,4})+$/;\n}\n\nexport const PATTERN_MOBILE_PHONE = () => {\n return /^(\\+?84|0|84)([0-9]{9})$/;\n}\n\nexport const PATTERN_PHONE = () => {\n return /^(\\+?84|[0-9]|84)([0-9]{2,9})$/;\n}\n\nexport const PATTERN_PHONE_NORMAL = () => {\n return /^(\\+?84|[0-9]|84)([0-9]{9,10})$/;\n}\n\nexport const PATTERN_NUMBER = () => {\n return /\\d+/g;\n}\nexport const PATTERN_ENCODE_URI = () => {\n return /%([0-9A-F]{2})/g;\n}\nexport const PATTERN_NAME = () => {\n return /^\\w+[A-Za-z\\s\\d]+$/;\n}\nexport const PATTERN_NAME_UTF8 = () => {\n return /^[ àáảãạăắằẵặẳâầấậẫẩđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹÀÁẢÃẠĂẮẰẴẶẲÂẦẤẬẪẨĐÈÉẺẼẸÊỀẾỂỄỆÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸA-Za-z0-9]+$/;\n}\nexport const PATTERN_NAME_SPECIAL = () => {\n return /[~!@#$%^&*()-+=<>,?\\/\\\\:;\"']/;\n}\nexport const PATTERN_NAME_PROFILE = () => {\n return /([\\w\\W\\d\\s]+)+/;\n}\nexport const PATTERN_EMOJI = () => {\n return /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g;\n}\nexport const PATTERN_RULE_FIELD_REPLACE = () => {\n return /[{]{2}[a-zA-Z_-]+[}]{2}/g;\n}\nexport const PATTERN_GET_FIELD_BY_RULE_FIELD_REPLACE = () => {\n return /[a-zA-Z_-]+/g;\n}\n\nexport const PATTERN_PEM = () => {\n return /^(0|1):([0-9]{1,2}):(\\{\\{path-api\\}\\}):([a-zA-Z0-9\\/]+)$/g;\n}\n\nexport const PATTERN_TAX = () => {\n return /^([0-9]){10}(-[0-9]{3})?$/;\n}\n\nexport const PATTERN_KEY = () => {\n return /^([0-9]){10}(-[0-9]{3})?$/;\n}\n\nexport const PATTERN_ACCOUNT = () => {\n return /^(?=.*@)[a-z0-9@._-]{2,63}$/;\n}\n","export type TYPE_FUNCTION_XSS = (data: string) => Promise<string>;\nlet functionXssFilter: TYPE_FUNCTION_XSS = async (value: string): Promise<string> => {\n return value;\n}\n\nexport const updateFunctionXssFilter = (functionCustom: TYPE_FUNCTION_XSS) => {\n functionXssFilter = functionCustom;\n}\n\nexport const xssFilter: TYPE_FUNCTION_XSS = async (data: string) => {\n return await functionXssFilter(data);\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { signal, TemplateRef, ElementRef, WritableSignal, isSignal } from \"@angular/core\";\nimport { cloneDeep } from \"./helpers\";\n\nexport const convertObjectToSignal = <T = any>(data: any, isCloneDeep = true): T => {\n if (data === null || typeof data !== 'object' || isSignal(data)) {\n return data;\n }\n if (Array.isArray(data)) {\n return signal(data.map(item => convertObjectToSignal(item, isCloneDeep))) as T;\n }\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n Array.from(data.keys()).forEach(key => {\n mapCopy.set(key, convertObjectToSignal(data.get(key), isCloneDeep));\n });\n return signal(mapCopy) as T;\n }\n\n data = signal(isCloneDeep ? { ...data } : data);\n\n for (const key in data()) {\n const value = data()[key];\n if (value instanceof TemplateRef || value instanceof ElementRef || value instanceof Element || value instanceof Date || value instanceof RegExp || value instanceof Set || value instanceof Map) {\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(data(), key)) {\n data()[key] = convertObjectToSignal(value, isCloneDeep);\n }\n }\n\n return data as T;\n};\n\nexport const convertSignalToObject = <T = any>(data: any, isCloneDeep = true): T => {\n if (data === null || (typeof data !== 'function' && typeof data !== 'object')) {\n return data;\n }\n if (isSignal(data)) {\n data = (data as WritableSignal<unknown>)();\n }\n\n\n if (Array.isArray(data)) {\n if (!isSignal(data[0])) {\n return data as T;\n }\n return data.map(item => convertSignalToObject(isCloneDeep ? cloneDeep(item) : item, isCloneDeep)) as T;\n }\n\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n Array.from(data.keys()).forEach(key => {\n mapCopy.set(key, convertSignalToObject(isCloneDeep ? cloneDeep(data.get(key)) : data.get(key), isCloneDeep));\n });\n return mapCopy as T;\n }\n const result: Record<string, any> = isCloneDeep ? {} : data;\n for (const key in data) {\n const value = data[key];\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n result[key] = convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep);\n }\n }\n\n return result as T;\n};\n","import * as dayjs from 'dayjs';\nexport type TYPE_FUNCTION_FORMAT_DATE = (time: string | number | dayjs.Dayjs | undefined | null, format: string, lang?: string) => string;\nlet functionFormatDate: TYPE_FUNCTION_FORMAT_DATE | undefined = undefined;\n\n\nexport const updateFunctionFormatDate = (functionCustom: TYPE_FUNCTION_FORMAT_DATE) => {\n functionFormatDate = functionCustom;\n}\n\nexport const formatDate = () => functionFormatDate;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["key","keyStore","listColorDefine"],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-utils.mjs","sources":["../../../../libs-ui/utils/src/dom.ts","../../../../libs-ui/utils/src/url-search-params.ts","../../../../libs-ui/utils/src/crypto.ts","../../../../libs-ui/utils/src/uuid.ts","../../../../libs-ui/utils/src/helpers.ts","../../../../libs-ui/utils/src/color.ts","../../../../libs-ui/utils/src/crypto-3rd.ts","../../../../libs-ui/utils/src/key-code.ts","../../../../libs-ui/utils/src/http-params.ts","../../../../libs-ui/utils/src/language.ts","../../../../libs-ui/utils/src/key-cache.ts","../../../../libs-ui/utils/src/function-check-embed-frame.ts","../../../../libs-ui/utils/src/communicate-micro.ts","../../../../libs-ui/utils/src/cache.ts","../../../../libs-ui/utils/src/format-number.ts","../../../../libs-ui/utils/src/remove-emoji.ts","../../../../libs-ui/utils/src/escape-html.ts","../../../../libs-ui/utils/src/delete-unicode.ts","../../../../libs-ui/utils/src/get-color-by-id.ts","../../../../libs-ui/utils/src/constants.ts","../../../../libs-ui/utils/src/pattern.ts","../../../../libs-ui/utils/src/xss-filter.ts","../../../../libs-ui/utils/src/two-way-signal-object.ts","../../../../libs-ui/utils/src/format-date.ts","../../../../libs-ui/utils/src/encode-url.define.ts","../../../../libs-ui/utils/src/libs-ui-utils.ts"],"sourcesContent":["import { Renderer2 } from \"@angular/core\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\n\nexport const getPlatFromBrowser = ()=> {\n const userAgent = navigator.userAgent;\n let tem;\n let match = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n\n if (/trident/i.test(match[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\n\n return 'IE ' + (tem[1] || '');\n }\n if (match[1] === 'Chrome') {\n tem = userAgent.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem !== null) {\n return tem.slice(1).join(' ').replace('OPR', 'Opera');\n }\n\n }\n match = match[2] ? [match[1], match[2]] : [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = userAgent.match(/version\\/(\\d+)/i)) !== null) {\n match.splice(1, 1, tem[1]);\n }\n\n return match.join(' ');\n}\n\nexport const cloneIBoundingClientRect = (rect: IBoundingClientRect): IBoundingClientRect => {\n return {\n top: rect['top'],\n left: rect['left'],\n width: rect['width'],\n height: rect['height'],\n bottom: rect['bottom']\n };\n}\n\nexport const setStyles = (el: HTMLElement, styles: Record<string, string>, render2: Renderer2): void => {\n Object.keys(styles).forEach((key: string) => render2.setStyle(el, key, styles[key]));\n}\n\nexport const getViewport = (win: Window = window): { width: number; height: number } => {\n const doc = win.document.documentElement,\n body = win.document.getElementsByTagName('body')[0],\n w = win.innerWidth || doc.clientWidth || body.clientWidth,\n h = win.innerHeight || doc.clientHeight || body.clientHeight;\n\n return { width: w, height: h };\n}\n\nexport const setCaretPosition = (element: HTMLTextAreaElement | HTMLInputElement, position: number): void => {\n if (!element || !element.setSelectionRange) {\n return;\n }\n element.focus();\n element.setSelectionRange(position, position);\n}\n\nexport const checkViewInScreen = (container: HTMLElement, element: HTMLElement, elementScroll?: HTMLElement, maxTopLeft?: { top?: number, left?: number }): boolean => {\n if (!container || !element) {\n return false;\n }\n\n const rectContainer = cloneIBoundingClientRect(container.getBoundingClientRect());\n\n if (elementScroll) {\n const rectElementScroll = elementScroll.getBoundingClientRect();\n\n rectContainer['left'] = rectElementScroll.left;\n rectContainer['top'] = rectElementScroll.top;\n\n }\n\n const rectElement = element.getBoundingClientRect();\n const { left, top } = rectElement;\n const topContainer = rectContainer['top'];\n const leftContainer = rectContainer['left'];\n const widthContainer = rectContainer['width'];\n const heightContainer = rectContainer['height'];\n const scrollTopContainer = container.scrollTop;\n const scrollLeftContainer = container.scrollLeft;\n const limitTop = topContainer + scrollTopContainer + heightContainer;\n const limitLeft = leftContainer + scrollLeftContainer + widthContainer;\n\n const maxTopItem = top + (maxTopLeft?.top || 0);\n const maxLeftItem = left + (maxTopLeft?.left || 0);\n\n if (topContainer <= maxTopItem && maxTopItem <= limitTop && leftContainer <= maxLeftItem && maxLeftItem <= limitLeft) {\n return true;\n }\n\n return false;\n};\n\nexport const checkMouseOverInContainer = (mousePosition: { clientX: number; clientY: number }, element?: HTMLElement, rect?: DOMRect): boolean => {\n if (!element && !rect) {\n return false;\n }\n const rectElement = rect || element?.getBoundingClientRect() || {} as DOMRect;\n const { left, top, width, height } = rectElement;\n const limitLeft = left + width;\n const limitTop = top + height;\n const { clientX, clientY } = mousePosition;\n\n if (left <= clientX && clientX <= limitLeft && top <= clientY && clientY <= limitTop) {\n return true;\n }\n\n return false;\n};","export class UtilsUrlSearchParams {\n private static instance: UtilsUrlSearchParams;\n private params: Array<{ key: string, value: string }>;\n constructor(paramString: string) {\n this.params = new Array<{ key: string, value: string }>();\n this.params.length = 0;\n this.params.push(...this.buildParams(paramString));\n }\n\n static getInstance() {\n if (!this.instance) {\n this.instance = new UtilsUrlSearchParams('');\n }\n\n return this.instance;\n }\n\n public static toStringParamObject(params: { [key in string]: string }) {\n const paramsArr: Array<{ key: string, value: string }> = Object.keys(params).map(key => {\n return {\n key,\n value: params[key]\n };\n });\n\n return UtilsUrlSearchParams.ToString(paramsArr);\n }\n\n public static ToString(params: Array<{ key: string, value: string }>) {\n let paramsStr = '';\n\n params.sort((item1, item2) => item1.key.localeCompare(item2.key)).forEach((item) => {\n const { key, value } = item;\n\n paramsStr = `${paramsStr}${paramsStr ? '&' : ''}${key}=${value}`;\n });\n\n return paramsStr;\n }\n\n private buildParams(paramString: string): Array<{ key: string, value: string }> {\n const paramsBuild = new Array<{ key: string, value: string }>();\n\n if (!paramString) {\n return paramsBuild;\n }\n\n const paramsError = paramString.split('?');\n\n if (paramsError.length > 2) {\n paramString = `${paramsError[0]}?${paramsError[1]}&${paramsError.slice(2).join('&')}`;\n }\n\n const params = paramString.replace(/\\S+[?]/g, '').split('&');\n\n if (params) {\n params.forEach(param => {\n if (param.indexOf('=') < 0) {\n return;\n }\n let [key, value] = param.split('=');\n\n key = key.replace(/[?&]+/g, '');\n value = decodeURIComponent(value.replace(/\\+/g, ' '));\n if (!paramsBuild.some(param => param.key === key)) {\n paramsBuild.push({ key, value });\n }\n });\n }\n\n return paramsBuild;\n }\n\n public set(key: string, value: string) {\n const paramByKey = this.params.find(param => param.key === key) as Record<string, string>;\n\n if (!paramByKey) {\n this.params.push({ key, value: decodeURIComponent(value.replace(/\\+/g, ' ')) });\n\n return;\n }\n\n paramByKey['value'] = value;\n }\n\n public get(key: string) {\n return this.params.find(param => param.key === key)?.value;\n }\n\n public has(key: string) {\n return this.params.some(param => param.key === key);\n }\n\n public delete(key: string) {\n const index = this.params.findIndex(param => param.key === key);\n\n if (index >= 0) {\n this.params.splice(index, 1);\n }\n }\n\n public length() {\n return this.params.length;\n }\n\n public toString(params?: Array<{ key: string, value: string }>) {\n params = params || this.params;\n\n return UtilsUrlSearchParams.ToString(params);\n }\n\n public getParamObject() {\n const params = {} as Record<string, string>;\n\n this.params.forEach(item => {\n params[item.key] = item.value;\n });\n\n return params;\n }\n\n public compareParams(param1: string, param2: string) {\n const params1 = this.toString(this.buildParams(param1));\n const params2 = this.toString(this.buildParams(param2));\n\n return params1 === params2;\n }\n\n}\n","\nimport CryptoES from 'crypto-es';\n\nlet key = '12~@#loqwsxacva(3rdhaq12';\n\nexport const setKeyCrypto = (value: string) => {\n if (value.length !== 24 && value.length !== 32) {\n throw Error(`key.length = ${value.length}; Key phải là 1 chuỗi dài 24 hoặc 32 ký tự`);\n }\n key = value;\n};\n\nconst keyStore = () => {\n return key;\n}\n\nexport const encrypt = (plainData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.encrypt(plainData, key, options).toString();\n};\n\nexport const decrypt = (encryptedData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);\n};\n\nexport const md5 = (plainData: string) => {\n return CryptoES.MD5(plainData).toString();\n};\n\n","import { md5 } from \"./crypto\";\n\nexport const uuid = (): string => {\n const timestamp = performance.now() * 1000;\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-=[]{}|;:,.<>?/~';\n let randomString = '';\n\n for (let i = 0; i < 5; i++) {\n randomString += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n const baseString = `${Math.floor(timestamp)}-${randomString}`;\n const charArray = baseString.split('');\n\n for (let i = charArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n\n [charArray[i], charArray[j]] = [charArray[j], charArray[i]];\n }\n\n const shuffledString = charArray.join('');\n\n return md5(shuffledString);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ElementRef, TemplateRef, isSignal } from \"@angular/core\";\n\n/**Các hàm tương tự thư viện lodash */\nexport const isNil = (value: unknown): value is null | undefined => {\n return value === null || value === undefined;\n};\n\nexport const isEmpty = (value: unknown) => {\n return value === null || value === '' || value === undefined || (typeof value === 'object' && (JSON.stringify(value) === '{}' || JSON.stringify(value) === '[]'));\n};\n\nexport const omitBy = <T>(objData: Record<string, any>, predicate: (val: any) => boolean): T => {\n if (!objData || typeof objData !== 'object' || Array.isArray(objData)) {\n return objData as T;\n }\n const newObj = {} as T;\n\n Object.keys(objData).forEach(key => {\n const valueOfKey = get(objData, key);\n if (!predicate(valueOfKey)) {\n set(newObj, key, valueOfKey)\n }\n })\n return newObj;\n};\n\nexport const get = <T = any>(obj: any, path: string | string[], defaultValue: any = undefined): T => {\n if (obj == null) {\n return defaultValue;\n }\n if (isSignal(obj)) {\n obj = obj();\n }\n const paths = Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.$1').split('.');\n for (let i = 0; i < paths.length; i++) {\n if (obj == null || !Object.prototype.hasOwnProperty.call(obj, paths[i])) {\n return defaultValue;\n }\n const val = isSignal(obj[paths[i]]) ? obj[paths[i]]() : obj[paths[i]];\n\n obj = val;\n }\n\n return obj;\n};\n\nexport const set = <T = any>(obj: any, path: string | string[], value: any): T => {\n if (!obj || (typeof obj !== \"object\" && !isSignal(obj)) || (isSignal(obj) && typeof obj() !== \"object\")) {\n throw new Error(\"The first argument must be an object\");\n }\n\n const pathArray = Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.[$1]').split('.');\n\n let current: any = isSignal(obj) ? obj() : obj;\n\n let lastIsSignal = false;\n pathArray.forEach((key, index) => {\n if (index < pathArray.length - 1) {\n if (!(key in current) || typeof current[key] !== \"object\") {\n const nextKey = pathArray[index + 1];\n\n key = key.replace(/\\[(\\d+)]/g, '$1');\n current[key] = /\\[(\\d+)]/g.test(nextKey) ? [] : {};\n }\n current = key ? current[key] : current;\n lastIsSignal = isSignal(current);\n current = lastIsSignal ? current() : current;\n return;\n }\n\n // Gán giá trị ở cuối đường dẫn\n key = key.replace(/\\[(\\d+)]/g, '$1');\n if (lastIsSignal) {\n current.update((data: any) => {\n data[key] = value;\n return { ...data };\n });\n return;\n }\n current[key] = value;\n });\n\n return obj;\n};\n\nexport const cloneDeep = <T = any>(data: any): T => {\n if (data === null || typeof data !== 'object') {\n return data;\n }\n\n if (data instanceof Date) {\n return new Date(data.getTime()) as T;\n }\n\n if (data instanceof RegExp) {\n return new RegExp(data.source, data.flags) as T;\n }\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n data.forEach((val, key) => {\n mapCopy.set(cloneDeep(key), cloneDeep(val));\n });\n return mapCopy as T;\n }\n\n if (data instanceof Set) {\n const setCopy = new Set();\n data.forEach(val => {\n setCopy.add(cloneDeep(val));\n });\n return setCopy as T;\n }\n\n if (Array.isArray(data)) {\n return data.map(item => cloneDeep(item)) as T;\n }\n\n if (isSignal(data)) {\n return cloneDeep(data());\n }\n\n const result: Record<string, any> = {};\n for (const key in data) {\n const value = data[key];\n if (value instanceof TemplateRef || value instanceof ElementRef || value instanceof Element) {\n result[key] = value;\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n result[key] = cloneDeep(value);\n }\n }\n\n return result as T;\n};\n\nexport const keyBy = (data: Array<Record<any, any>>, key: string): Record<any, any> => {\n if (!data || !data.length || !key) {\n return {};\n }\n return data.reduce((dir, nextItem) => {\n const valueOfKey = nextItem[key];\n if (typeof valueOfKey !== 'string' && typeof valueOfKey !== 'number') {\n return dir;\n }\n dir[valueOfKey] = nextItem;\n return dir;\n }, {});\n};\n\nexport const groupBy = (data: Array<Record<any, any>>, key: string): Record<any, any> => {\n if (!data || !Object.keys(data).length || !key) {\n return {};\n }\n return data.reduce((dir, nextItem) => {\n const valueOfKey = nextItem[key];\n if (typeof valueOfKey !== 'string' && typeof valueOfKey !== 'number') {\n return dir;\n }\n if (!dir[valueOfKey]) {\n dir[valueOfKey] = [];\n }\n dir[valueOfKey].push(nextItem);\n return dir;\n }, {});\n};\n\nexport const range = (start: number, end?: number, step?: number): Array<number> => {\n if (end === undefined || end === null) {\n end = start;\n start = 0;\n }\n\n if (!step) {\n step = end < 0 ? -1 : 1;\n }\n\n if (end < start && step > 0) {\n step *= -1;\n }\n\n const valueStartByStep = step + start;\n const direction = start < end ? 'asc' : 'desc';\n if ((direction === 'asc' && (valueStartByStep < start || valueStartByStep > end)) || (direction === 'desc' && (valueStartByStep > start || valueStartByStep < end))) {\n return [start];\n }\n\n const arr = new Array<number>();\n\n for (let index = 0; index < Math.abs(end - start); index++) {\n let value = start + index * step;\n if (index === 0) {\n value = start;\n }\n\n if ((direction === 'asc' && (value < start || value > end)) || (direction === 'desc' && (value > start || value < end))) {\n return arr;\n }\n\n arr.push(value);\n }\n\n return arr;\n}\n\nexport const isEqual = (value1: any, value2: any): boolean => {\n if (value1 === value2 || (value1 === null && value2 === null) || (value1 === undefined && value2 === undefined)) {\n return true;\n }\n if (typeof value1 !== 'object' || typeof value2 !== 'object' || (Array.isArray(value1) && !Array.isArray(value2))) {\n return false;\n }\n\n if (Array.isArray(value1)) {\n if (value1.length !== value2.length) {\n return false\n }\n\n return !value1.some((item, index) => !isEqual(item, value2[index]));\n }\n\n if (Object.keys(value1).length !== Object.keys(value2).length) {\n return false;\n }\n return !Object.keys(value1).some((key) => !isEqual(value1[key], value2[key]));\n}\n\nexport const uniqBy = <T>(data: Array<T>, key?: string): Array<T> => {\n if (!key || !data || !data.length || typeof data[0] !== 'object') {\n return Array.from(new Set(data));\n }\n\n const dataUnique = keyBy(data as Array<Record<string, any>>, key);\n\n return Object.keys(dataUnique).map(key => dataUnique[key]);\n}\n\nexport const generateInterface = (obj: any, interfaceName: string): string => {\n const generateType = (value: any): string => {\n if (value === null) {\n return 'null';\n }\n const type = typeof value;\n\n if (type === 'string') {\n return 'string';\n }\n if (type === 'number') {\n return 'number';\n }\n if (type === 'boolean') {\n return 'boolean';\n }\n if (type === 'undefined') {\n return 'any';\n }\n\n if (value instanceof Date) {\n return 'Date';\n }\n\n if (value instanceof RegExp) {\n return 'RegExp';\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return 'Array<any>';\n }\n return `Array<${generateType(value[0])}>`;\n }\n\n if (type === 'object') {\n let interfaceStr = '{\\n';\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n const valueType = generateType(value[key]);\n interfaceStr += ` ${key}: ${valueType};\\n`;\n }\n }\n interfaceStr += '}';\n return interfaceStr;\n }\n\n return 'any';\n };\n\n const interfaceStr = `interface ${interfaceName} ${generateType(obj)}`;\n return interfaceStr;\n};","\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface IColorContrastFromOrigin {\n step: number;\n label: string,\n light: string;\n dark: string\n};\nconst step = 20;\nconst percent = 0.05;\n\nexport const colorStepContrastFromOrigin = (color: string, stepNumber: number) => {\n return colorContrastFromOrigin(color).find(item => item.step === stepNumber);\n};\n\nexport const colorContrastFromOrigin = (color: string): Array<IColorContrastFromOrigin> => {\n const parsedColorsArray = parseColorValues(color);\n const colors: any = [];\n let calculatedShades: Array<string> = [];\n let calculatedTints: Array<string> = [];\n\n if (parsedColorsArray !== null) {\n for (let i = 0; i < parsedColorsArray.length; i++) {\n calculatedShades = calculateShades(parsedColorsArray[i]);\n calculatedTints = calculateTints(parsedColorsArray[i]);\n }\n\n for (let i = 0; i <= step; i++) {\n colors.push({ step: i * 5, label: `${i * 5}%`, dark: `#${calculatedShades[i]}`, light: `#${calculatedTints[i]}` });\n }\n }\n\n return colors;\n};\n\nconst parseColorValues = (colorValues: any) => {\n let colorValuesArray = colorValues.match(/\\b[0-9A-Fa-f]{3}\\b|[0-9A-Fa-f]{6}\\b/g);\n\n if (colorValuesArray) {\n colorValuesArray = colorValuesArray.map((item: any) => {\n if (item.length === 3) {\n let newItem = item.toString().split('');\n\n newItem = newItem.reduce((acc: any, it: any) => {\n return acc + it + it;\n }, '');\n\n return newItem;\n }\n\n return item;\n });\n }\n\n return colorValuesArray;\n};\n\nconst calculateShades = (colorValue: any) => {\n return calculate(colorValue, rgbShade).concat(\"000000\");\n};\n\nconst calculateTints = (colorValue: any) => {\n return calculate(colorValue, rgbTint).concat(\"ffffff\");\n};\n\nconst calculate = (colorValue: any, shadeOrTint: any) => {\n const color = hexToRGB(colorValue);\n const shadeValues: Array<string> = [];\n\n for (let i = 0; i < step; i++) {\n shadeValues[i] = rgbToHex(shadeOrTint(color, i));\n }\n\n return shadeValues;\n};\n\nconst rgbShade = (rgb: any, i: any) => { return { red: rgb.red * (1 - percent * i), green: rgb.green * (1 - percent * i), blue: rgb.blue * (1 - percent * i) } };\nconst rgbTint = (rgb: any, i: any) => { return { red: rgb.red + (255 - rgb.red) * i * percent, green: rgb.green + (255 - rgb.green) * i * percent, blue: rgb.blue + (255 - rgb.blue) * i * percent } };\n\n\nexport const rgbToHex = (rgb: any) => { return intToHex(rgb.red) + intToHex(rgb.green) + intToHex(rgb.blue) };\nconst hexToRGB = (colorValue: any) => { return { red: parseInt(colorValue.substr(0, 2), 16), green: parseInt(colorValue.substr(2, 2), 16), blue: parseInt(colorValue.substr(4, 2), 16) } };\nconst intToHex = (rgbint: any) => { return pad(Math.min(Math.max(Math.round(rgbint), 0), 255).toString(16), 2) };\n\nconst pad = (number: any, length: any) => {\n let str = '' + number;\n\n while (str.length < length) { str = '0' + str }\n\n return str;\n};\n\nexport const listColorDefine: Array<string> = ['#E62222', '#B81B1B', '#EB4E4E', '#F97316', '#C75C12', '#FA8F45', '#FFB700', '#CC9200', '#FFC533', '#84CC16', '#6AA312', '#9dd645', '#00BC62', '#00A757', '#33DA8A', '#06B6D4', '#1B59C4', '#4E8CF7', '#0EA5E9',\n '#1B59C4', '#4E8CF7', '#226FF5', '#1B59C4', '#4E8CF7', '#6366F1', '#4F52C1', '#8285F4', '#5B04B3', '#49038F', '#7C36C2', '#D946EF', '#AE38BF', '#E16BF2', '#EC4899', '#BD3A7A', '#F06DAD', '#F43F5E', '#C3324B', '#F6657E', '#757380', '#5E5C66', '#918F99',\n '#202020', '#1A1A1A', '#4D4D4D'\n];\n\nexport const GetColorById = (str: string): string => {\n let hashString = 0;\n\n if (!str) {\n return '';\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n\n hashString = ((hashString << 5) - hashString) + char;\n hashString = hashString & hashString;\n }\n\n return listColorDefine[Math.abs(hashString) % listColorDefine.length];\n};\n\n\n","\nimport CryptoES from 'crypto-es';\n\nlet key = '12~@#loqwsxacva(3rdhaq12';\n\nexport const setKeyCrypto3rd = (value: string) => {\n if (value.length !== 24 && value.length !== 32) {\n throw Error(`key.length = ${value.length}; Key phải là 1 chuỗi dài 24 hoặc 32 ký tự`);\n }\n key = value;\n};\n\n\nconst keyStore = () => {\n return key;\n}\n\nexport const encrypt3rd = (plainData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.encrypt(plainData, key, options).toString();\n};\n\nexport const decrypt3rd = (encryptedData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);\n};","export abstract class UtilsKeyCodeConstant {\n static readonly MAC_ENTER = 3;\n static readonly BACKSPACE = 8;\n static readonly TAB = 9;\n static readonly NUM_CENTER = 12;\n static readonly ENTER = 13;\n static readonly SHIFT = 16;\n static readonly CONTROL = 17;\n static readonly ALT = 18;\n static readonly PAUSE = 19;\n static readonly CAPS_LOCK = 20;\n static readonly ESCAPE = 27;\n static readonly SPACE = 32;\n static readonly PAGE_UP = 33;\n static readonly PAGE_DOWN = 34;\n static readonly END = 35;\n static readonly HOME = 36;\n static readonly LEFT_ARROW = 37;\n static readonly UP_ARROW = 38;\n static readonly RIGHT_ARROW = 39;\n static readonly DOWN_ARROW = 40;\n static readonly PLUS_SIGN = 43;\n static readonly PRINT_SCREEN = 44;\n static readonly INSERT = 45;\n static readonly DELETE = 46;\n static readonly ZERO = 48;\n static readonly ONE = 49;\n static readonly TWO = 50;\n static readonly THREE = 51;\n static readonly FOUR = 52;\n static readonly FIVE = 53;\n static readonly SIX = 54;\n static readonly SEVEN = 55;\n static readonly EIGHT = 56;\n static readonly NINE = 57;\n static readonly FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\n static readonly FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\n static readonly QUESTION_MARK = 63;\n static readonly AT_SIGN = 64;\n static readonly A = 65;\n static readonly B = 66;\n static readonly C = 67;\n static readonly D = 68;\n static readonly E = 69;\n static readonly F = 70;\n static readonly G = 71;\n static readonly H = 72;\n static readonly I = 73;\n static readonly J = 74;\n static readonly K = 75;\n static readonly L = 76;\n static readonly M = 77;\n static readonly N = 78;\n static readonly O = 79;\n static readonly P = 80;\n static readonly Q = 81;\n static readonly R = 82;\n static readonly S = 83;\n static readonly T = 84;\n static readonly U = 85;\n static readonly V = 86;\n static readonly W = 87;\n static readonly X = 88;\n static readonly Y = 89;\n static readonly Z = 90;\n static readonly META = 91; // WIN_KEY_LEFT\n static readonly MAC_WK_CMD_LEFT = 91;\n static readonly MAC_WK_CMD_RIGHT = 93;\n static readonly CONTEXT_MENU = 93;\n static readonly NUMPAD_ZERO = 96;\n static readonly NUMPAD_ONE = 97;\n static readonly NUMPAD_TWO = 98;\n static readonly NUMPAD_THREE = 99;\n static readonly NUMPAD_FOUR = 100;\n static readonly NUMPAD_FIVE = 101;\n static readonly NUMPAD_SIX = 102;\n static readonly NUMPAD_SEVEN = 103;\n static readonly NUMPAD_EIGHT = 104;\n static readonly NUMPAD_NINE = 105;\n static readonly NUMPAD_MULTIPLY = 106;\n static readonly NUMPAD_PLUS = 107;\n static readonly NUMPAD_MINUS = 109;\n static readonly NUMPAD_PERIOD = 110;\n static readonly NUMPAD_DIVIDE = 111;\n static readonly F1 = 112;\n static readonly F2 = 113;\n static readonly F3 = 114;\n static readonly F4 = 115;\n static readonly F5 = 116;\n static readonly F6 = 117;\n static readonly F7 = 118;\n static readonly F8 = 119;\n static readonly F9 = 120;\n static readonly F10 = 121;\n static readonly F11 = 122;\n static readonly F12 = 123;\n static readonly NUM_LOCK = 144;\n static readonly SCROLL_LOCK = 145;\n static readonly FIRST_MEDIA = 166;\n static readonly FF_MINUS = 173;\n static readonly MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\n static readonly VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\n static readonly VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\n static readonly FF_MUTE = 181;\n static readonly FF_VOLUME_DOWN = 182;\n static readonly LAST_MEDIA = 183;\n static readonly FF_VOLUME_UP = 183;\n static readonly SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\n static readonly EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\n static readonly COMMA = 188;\n static readonly DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\n static readonly PERIOD = 190;\n static readonly SLASH = 191;\n static readonly APOSTROPHE = 192;\n static readonly TILDE = 192;\n static readonly OPEN_SQUARE_BRACKET = 219;\n static readonly BACKSLASH = 220;\n static readonly CLOSE_SQUARE_BRACKET = 221;\n static readonly SINGLE_QUOTE = 222;\n static readonly MAC_META = 224;\n }\n ","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParameterCodec, HttpParams } from \"@angular/common/http\";\n\nexport const UtilsHttpParamsRequestInstance = <Type>(options?: HttpParamsOptions<Type>, instance?: HttpParams): UtilsHttpParamsRequest<Type> => {\n return new UtilsHttpParamsRequest<Type>(options, instance);\n};\n\nexport class UtilsHttpParamsRequest<Type = { pem: string }> extends HttpParams {\n private params!: HttpParams;\n\n constructor(options?: HttpParamsOptions<Type>, instance?: HttpParams) {\n super(options as any);\n\n if (!instance) {\n this.params = new HttpParams(options);\n\n return;\n }\n\n if (instance instanceof UtilsHttpParamsRequest) {\n this.params = instance.getInstance();\n\n return;\n }\n\n if (instance instanceof HttpParams) {\n this.params = instance;\n\n return;\n }\n }\n\n getInstance(): HttpParams {\n return this.params;\n }\n\n setInstance(instance: HttpParams) {\n if (instance instanceof UtilsHttpParamsRequest) {\n this.params = instance.getInstance();\n\n return;\n }\n\n if (instance instanceof HttpParams) {\n this.params = instance;\n\n return;\n }\n }\n\n override set(param: string, value: string | number | boolean): UtilsHttpParamsRequest {\n this.params = this.params.set(param, value);\n\n return this as UtilsHttpParamsRequest;\n }\n\n override has(param: string): boolean {\n return this.params.has(param);\n }\n\n override get(param: string): string | null {\n return this.params.get(param);\n }\n\n override getAll(param: string): string[] | null {\n return this.params.getAll(param);\n }\n\n override keys(): string[] {\n return this.params.keys();\n }\n\n override append(param: string, value: string | number | boolean): HttpParams {\n this.params = this.params.append(param, value);\n\n return this as HttpParams;\n }\n\n override appendAll(params: { [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean> }): HttpParams {\n this.params = this.params.appendAll(params);\n\n return this as HttpParams;\n }\n\n override delete(param: string, value?: string | number | boolean): UtilsHttpParamsRequest {\n this.params = this.params.delete(param, value);\n\n return this as UtilsHttpParamsRequest;\n }\n\n override toString(): string {\n return this.params.toString();\n }\n}\n\nexport declare interface HttpParamsOptions<Type> {\n fromString?: string;\n fromObject?: TYPE_FROM_OBJECT<Type>;\n encoder?: HttpParameterCodec;\n}\nexport type GET_PATH_VARIABLE<TypePath, TypeOther = unknown> = {\n [Property in keyof TypePath as `pathVariable-${Lowercase<string & Property>}`]: TypePath[Property];\n} & TypeOther;\n\ntype TYPE_FROM_OBJECT<Type> = Type extends undefined | null ? { pem: string } : { pem?: string } & {\n [Property in keyof Type]?: Type[Property];\n};","\nexport class UtilsLanguageConstants {\n public static VI = 'vi';\n public static EN = 'en';\n public static defaultLang = UtilsLanguageConstants.VI;\n};","import { HttpParams } from \"@angular/common/http\";\nimport { md5 } from \"./crypto\";\n\nexport const getKeyCacheByArrayObject = (keyCache: string, argumentsValue?: Array<unknown>): string =>{\n if (!keyCache || !argumentsValue) {\n return '';\n }\n let keyBuild = `${JSON.stringify(argumentsValue.slice(1))}-key-cache-plus`;\n\n if (argumentsValue && argumentsValue[0] instanceof HttpParams) {\n const httpParams = argumentsValue[0];\n const keys = argumentsValue[0].keys().sort((str1, str2) => str1.localeCompare(str2));\n\t\t\tkeys.forEach(key => {\n\t\t\t\t\tkeyBuild = `${keyBuild}${JSON.stringify(httpParams.get(key))}`;\n\t\t\t});\n }\n const keyCachePlus = md5(keyBuild);\n const keyCacheMD5 = md5(keyCache);\n\n return `${keyCacheMD5}-${md5(`${keyCacheMD5}-${keyCachePlus}`)}`;\n}\n\n ","let functionCheck = () => {\n return window.parent !== window.top;\n}\nexport const updateFunctionCheckEmbedFrame = (functionCustom: () => boolean) => {\n functionCheck = functionCustom;\n}\n\nexport const isEmbedFrame = (): boolean => {\n return functionCheck();\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Subject, filter, fromEvent, takeUntil } from \"rxjs\";\nimport { decrypt, encrypt } from \"./crypto\";\nimport { decrypt3rd, encrypt3rd } from \"./crypto-3rd\";\nimport { isEmbedFrame } from \"./function-check-embed-frame\";\nimport { UtilsCache } from \"./cache\";\nexport class UtilsCommunicateMicroKeyGlobal {\n public static KEY_MESSAGE_MODAL = 'LIBS_UI_MODEL_EVENT';\n}\n\nexport class UtilsCommunicateMicro {\n public static readonly PREFIX_TYPE = '3RD_INTEGRATE_MICRO_SITE_';\n private static readonly KEY_GET_ALL_MESSAGE = 'MICRO_SITES_ALL_MESSAGE';\n private static initdEvent?: boolean;\n private static subs: Map<string, Subject<MessageEvent>> = new Map();\n private static allMessageSub: Subject<MessageEvent> = new Subject();\n\n public static initEvent(currentWindow: Window, onDestroy: Subject<void>) {\n if (this.initdEvent) {\n return;\n }\n this.initdEvent = true;\n if (!this.subs.get(UtilsCommunicateMicro.KEY_GET_ALL_MESSAGE)) {\n this.subs.set(UtilsCommunicateMicro.KEY_GET_ALL_MESSAGE, UtilsCommunicateMicro.allMessageSub);\n }\n\n fromEvent<MessageEvent>(currentWindow, 'message').pipe(takeUntil(onDestroy)).subscribe(e => {\n const event = { data: { ...e.data } } as MessageEvent;\n\n const data = event.data;\n const type = data.type;\n\n if (!type) {\n return this.allMessageSub.next(event);\n }\n const sub = UtilsCommunicateMicro.GetMessage(type);\n\n if (!type || !data.response) {\n return;\n }\n try {\n if (type.includes(UtilsCommunicateMicro.PREFIX_TYPE)) {\n\n data.response = JSON.parse(decrypt3rd(data.response));\n sub.next(event);\n this.allMessageSub.next(event);\n\n return;\n }\n data.response = JSON.parse(decrypt(data.response));\n sub.next(event);\n this.allMessageSub.next(event);\n } catch (error) {\n console.log(error);\n sub.next(event);\n this.allMessageSub.next(event);\n }\n });\n\n UtilsCommunicateMicro.GetMessage(UtilsCache.typeKeyClearLocalStorage).pipe(filter(e => e.data.response !== UtilsCache.idService), takeUntil(onDestroy)).subscribe(() => {\n console.log('clear all cache by event');\n UtilsCache.ClearAll();\n });\n }\n\n static PostMessageToParent(data: any) {\n data = this.convertData(data);\n try {\n if (isEmbedFrame()) {\n window?.parent?.postMessage(data, \"*\");\n\n return;\n }\n\n window?.top?.postMessage(data, \"*\");\n } catch (error) {\n console.log(error);\n }\n }\n\n static PostMessageToChildren(data: any) {\n data = this.convertData(data);\n const iframes = document.querySelectorAll(\"iframe\");\n\n Array.from(iframes).forEach(iframe => {\n iframe?.contentWindow?.postMessage(data, '*');\n });\n\n }\n\n static PostMessageToOpener(data: any) {\n if (!window.opener) {\n return;\n }\n data = this.convertData(data);\n\n window.opener.postMessage(data, '*');\n }\n\n private static convertData(data: any) {\n if (!data || !data.type || !data.response) {\n return data;\n }\n data = { ...data };\n const type = data.type;\n\n if (type.includes(this.PREFIX_TYPE)) {\n try {\n JSON.parse(decrypt3rd(data.response));\n\n return data;\n } catch (_) {\n data.response = encrypt3rd(JSON.stringify(data.response));\n\n return data;\n }\n\n }\n try {\n JSON.parse(decrypt(data.response));\n\n return data;\n } catch (_) {\n data.response = encrypt(JSON.stringify(data.response));\n\n return data;\n }\n }\n\n static GetMessage(messageType: string | Array<string>): Subject<MessageEvent> {\n if (!this.initdEvent) {\n throw Error(\"chưa khơi tạo hàm lắng nghe sự kiện, gọi UtilsCommunicateMicro.initEvent(window) tại root component\")\n }\n if (typeof messageType === 'string') {\n let sub = this.subs.get(messageType);\n\n if (!sub) {\n sub = new Subject();\n this.subs.set(messageType, sub);\n\n return sub;\n }\n\n return sub;\n }\n if (!Array.isArray(messageType) || !messageType.length) {\n throw new Error('message type empty');\n }\n const types = messageType.sort().join(';');\n\n let sub = this.subs.get(types);\n\n if (sub) {\n return sub;\n }\n\n sub = new Subject();\n this.subs.set(types, sub);\n this.initSubject(sub, messageType);\n\n return sub;\n }\n\n private static initSubject(subRoot: Subject<MessageEvent>, messageType: Array<string>) {\n messageType.forEach(key => {\n this.GetMessage(key).subscribe(e => {\n subRoot.next(e);\n });\n });\n }\n}\n","/* eslint-disable no-async-promise-executor */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { signal } from '@angular/core';\nimport { UtilsCommunicateMicro } from './communicate-micro';\nimport { decrypt, encrypt, md5 } from './crypto';\nimport { getPlatFromBrowser } from './dom';\nimport { isEmbedFrame } from './function-check-embed-frame';\nimport { isNil } from './helpers';\nimport { UtilsLanguageConstants } from './language';\nimport { uuid } from './uuid';\n\nexport class UtilsCache {\n public static readonly CACHE_EXPIRE_TIME_DEFAULT = 5 * 60;\n public static readonly CACHE_EXPIRE_NONE = -1;\n public static readonly idService = uuid();\n public static typeKeyClearLocalStorage = 'LIBS_UI_CLEAR_LOCAL_STORAGE_EVENT';\n\n private static languageKeyCache = 'SR3xQKxHgffiCevPQRralg';\n private static listKeyKeepWhenClearALll = Array<string>();\n private static initdEvent?: boolean;\n private static language = signal<string>(UtilsLanguageConstants.defaultLang);\n private static storage: { [key: string]: unknown };\n private static dbName = 'libs-ui-cache';\n private static itemIndexByKey = 'key';\n private static dbVersion = 1;\n private static db: IDBDatabase | null = null;\n\n public static init(config: { indexedDBName?: string, languageKeyCache?: string, typeKeyClearLocalStorage?: string, listKeyKeepWhenClearAll?: Array<string> }) {\n if (UtilsCache.initdEvent) {\n return;\n }\n UtilsCache.initdEvent = true;\n if (config.indexedDBName) {\n UtilsCache.dbName = config.indexedDBName;\n }\n if (config.typeKeyClearLocalStorage) {\n UtilsCache.typeKeyClearLocalStorage = config.typeKeyClearLocalStorage;\n }\n if (config.listKeyKeepWhenClearAll) {\n UtilsCache.listKeyKeepWhenClearALll = config.listKeyKeepWhenClearAll;\n }\n if (config.languageKeyCache) {\n UtilsCache.languageKeyCache = config.languageKeyCache;\n }\n this.language.set(UtilsCache.Get(UtilsCache.languageKeyCache, UtilsLanguageConstants.defaultLang));\n }\n\n public static setLang(lang: string) {\n if (lang !== UtilsLanguageConstants.VI && lang !== UtilsLanguageConstants.EN) {\n throw Error('Language support vi | en');\n }\n UtilsCache.language.set(lang);\n UtilsCache.Set(UtilsCache.languageKeyCache, lang);\n }\n\n public static getLang() {\n return UtilsCache.language();\n }\n\n private static openDB() {\n return new Promise(resolve => {\n const request = indexedDB.open(UtilsCache.dbName, UtilsCache.dbVersion);\n\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\n const db = (event.target as IDBOpenDBRequest).result;\n\n if (!db.objectStoreNames.contains(UtilsCache.dbName)) {\n const objectStore = db.createObjectStore(UtilsCache.dbName, { keyPath: UtilsCache.itemIndexByKey, autoIncrement: true });\n\n objectStore.createIndex(UtilsCache.itemIndexByKey, UtilsCache.itemIndexByKey, { unique: true });\n }\n };\n\n request.onsuccess = () => {\n UtilsCache.db = request.result;\n resolve(true);\n };\n\n request.onerror = (event) => {\n console.error('Error opening IndexedDB:', event);\n resolve(false);\n };\n });\n }\n\n private static async getObjectStore() {\n if (!UtilsCache.db) {\n await UtilsCache.openDB();\n }\n const transaction = UtilsCache.db?.transaction([UtilsCache.dbName], 'readwrite');\n if (!transaction) {\n return null;\n }\n\n return transaction.objectStore(UtilsCache.dbName);\n }\n\n private static get LocalStorage(): any {\n try {\n if (typeof window.localStorage !== 'undefined') {\n const OS = getPlatFromBrowser();\n\n if (OS.includes('Safari') && parseFloat(OS.split(' ').pop() || '0') >= 16) {\n\n return this.getLocalStorageFakeOnSafari();\n }\n\n return localStorage;\n }\n\n return this.getLocalStorageFake();\n } catch (error) {\n console.log(error);\n return this.getLocalStorageFake();\n }\n }\n\n private static getLocalStorageFakeOnSafari() {\n if (typeof window.localStorage !== 'undefined' && !UtilsCache.storage && Object.keys(localStorage).length) {\n this.storage = { ...localStorage };\n }\n\n return {\n setItem: (key: string, value: string) => {\n localStorage.setItem(key, value);\n this.storage[key] = value;\n },\n getItem: (key: string) => {\n const value = localStorage.getItem(key);\n\n if (value) {\n return value;\n }\n\n if (!this.storage || isNil(this.storage[key])) {\n return null;\n }\n\n localStorage.setItem(key, this.storage[key] as string);\n\n return this.storage?.[key];\n },\n removeItem: (key: string) => {\n delete this.storage?.[key];\n localStorage.removeItem(key);\n },\n clear: () => {\n this.storage = {};\n localStorage.clear();\n }\n };\n }\n\n private static getLocalStorageFake() {\n if (!UtilsCache.storage) {\n this.storage = {};\n }\n\n return {\n setItem: (key: string, value: unknown) => {\n this.storage[key] = value;\n },\n getItem: (key: string) => {\n return this.storage?.[key];\n },\n removeItem: (key: string) => {\n delete this.storage?.[key];\n },\n clear: () => {\n this.storage = {};\n }\n };\n }\n\n public static async GetAsync<T = any>(key: string, default_value?: any, isKeyMD5 = false): Promise<T> {\n key = isKeyMD5 ? key : md5(key);\n\n return new Promise<T>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n\n return resolve(default_value);\n }\n const request = objectStore.get(key);\n\n request.onsuccess = () => {\n if (!request.result) {\n return resolve(default_value);\n }\n const data = JSON.parse(decrypt(request.result.value));\n\n if (data.expire === UtilsCache.CACHE_EXPIRE_NONE) {\n return resolve(data.json);\n }\n const currentMillisecond = (new Date().valueOf() / 1000);\n\n if (data.expire < currentMillisecond) {\n\n return resolve(default_value);\n }\n\n return resolve(data.json);\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n\n public static Get<T = any>(key: string, default_value?: any): T { // support cho những file không thể inject UtilsCache\n if (!key) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n const cachedData = this.LocalStorage.getItem(key);\n\n if (!cachedData) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n try {\n const data = JSON.parse(decrypt(cachedData));\n\n if (data.expire === UtilsCache.CACHE_EXPIRE_NONE) {\n return data.value;\n }\n const currentMillisecond = (new Date().valueOf() / 1000);\n\n if (data.expire < currentMillisecond) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n\n return data.value;\n\n } catch (error) {\n console.log(error);\n\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n }\n\n public static GetDefaultValueBySpecificKey(key: string, default_value: any) {\n return default_value;\n\n }\n\n public static async SetAsync<T = any>(key: string, value: any, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, isKeyMD5 = false): Promise<T> { // support inject UtilsCache\n return new Promise<T>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n key = isKeyMD5 ? key : md5(key);\n try {\n const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;\n const data: any = {\n value: encrypt(JSON.stringify({ json: value, expire: currentMillisecond })),\n };\n data[UtilsCache.itemIndexByKey] = key;\n\n if (!objectStore) {\n return reject(new Error('Can not open object store'));\n }\n const request = objectStore?.put(data);\n request.onsuccess = () => {\n resolve(request.result as any);\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n\n } catch (error) {\n reject(error);\n }\n });\n }\n\n\n static Set(key: string, value: any, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT): boolean { // support cho những file không inject UtilsCache\n const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;\n const data = {\n value: value,\n expire: currentMillisecond\n };\n\n try {\n this.LocalStorage.setItem(key, encrypt(JSON.stringify(data)));\n return true;\n } catch (error) {\n console.log(error);\n return false;\n }\n }\n\n public static async ClearAsync(key: string, isMD5 = false) {\n return new Promise<void>(async (resolve) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve();\n }\n const request = objectStore.delete(isMD5 ? key : md5(key));\n\n request.onsuccess = () => {\n resolve();\n };\n request.onerror = () => {\n resolve();\n };\n });\n }\n\n\n static Clear(key: string) {\n if (key.includes('kc-callback-')) {\n return;\n }\n this.LocalStorage.removeItem(key);\n }\n\n public static ClearAllAsync() {\n return new Promise<void>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve();\n }\n\n const request = objectStore.clear();\n request.onsuccess = () => {\n console.log('Database deleted successfully');\n resolve();\n };\n\n request.onerror = (event: Event) => {\n console.error('Error deleting database:', (event.target as IDBRequest).error);\n reject((event.target as IDBRequest).error);\n };\n });\n }\n\n static ClearAll() {\n const keys = [...UtilsCache.listKeyKeepWhenClearALll];\n Object.keys(this.LocalStorage).forEach(key => {\n if (key.includes('kc-callback-')) {\n keys.push(key);\n }\n });\n\n const stores = UtilsCache.GetDataByKeys(Array.from(keys));\n\n this.LocalStorage.clear();\n\n UtilsCache.SetDataByKey(stores);\n if (isEmbedFrame()) {\n const data = {\n type: UtilsCache.typeKeyClearLocalStorage,\n response: {\n idEvent: this.idService\n }\n };\n UtilsCommunicateMicro.PostMessageToParent(data);\n }\n }\n\n private static GetDataByKeys(keys: Array<string>) {\n const stores = new Map();\n\n keys.forEach((key: string) => {\n if (key.includes('kc-callback-')) {\n stores.set(key, this.LocalStorage.getItem(key));\n\n return;\n }\n stores.set(key, UtilsCache.Get(key));\n });\n\n return stores;\n }\n\n private static SetDataByKey(stores: Map<string, any>) {\n stores.forEach((value: any, key: string) => {\n if (key.includes('kc-callback-')) {\n this.LocalStorage.setItem(key, value);\n\n return;\n }\n if (key === UtilsCache.languageKeyCache) {\n return UtilsCache.setLang(value);\n }\n UtilsCache.Set(key, value, UtilsCache.CACHE_EXPIRE_NONE);\n });\n }\n\n public static DeleteKeyStartWithAsync(keyCacheStartWith: string, isKeyMD5 = false) {\n return new Promise(async (resolve) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve({});\n }\n\n // Lấy tất cả các keys từ index\n const request = objectStore.getAll();\n\n keyCacheStartWith = isKeyMD5 ? keyCacheStartWith : md5(keyCacheStartWith);\n\n\n request.onsuccess = (e: any) => {\n const data = e.target.result as Array<any>;\n\n if (!Array.isArray(data)) {\n return resolve({});\n }\n\n data.forEach(obj => {\n if (obj[UtilsCache.itemIndexByKey].startsWith(keyCacheStartWith)) {\n UtilsCache.ClearAsync(obj[UtilsCache.itemIndexByKey], true);\n }\n });\n\n return resolve({});\n };\n\n request.onerror = () => {\n return resolve({});\n };\n });\n }\n\n public static DeleteKeyStartWith(keyCache: string, isMD5 = false) {\n keyCache = isMD5 ? md5(keyCache) : keyCache;\n const keys = Object.keys(UtilsCache.LocalStorage);\n\n if (!keys || !keys.length) {\n return;\n }\n\n keys.forEach(key => {\n if (key.startsWith(keyCache)) {\n this.Clear(key);\n }\n });\n }\n\n public static DeleteDatabaseIndexDB(dbName: string) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(dbName);\n\n request.onsuccess = () => {\n console.log('Database deleted successfully');\n resolve(true);\n };\n\n request.onerror = (event: Event) => {\n console.error('Error deleting database:', (event.target as IDBRequest).error);\n reject((event.target as IDBRequest).error);\n };\n\n request.onblocked = () => {\n console.warn('Delete request is blocked');\n };\n });\n }\n}\n","import { UtilsCache } from \"./cache\";\nimport { isNil } from \"./helpers\";\nimport { UtilsLanguageConstants } from \"./language\";\n\n\nexport const formatNumber = (value: string | number): string => {\n const lang = UtilsCache.getLang();\n\n if (lang === UtilsLanguageConstants.EN) {\n return `${value}`.replace(/[,]/g, '');\n }\n\n return `${value}`.replace(/[.]/g, '').replace(/[,]/g, '.');\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const viewDataNumberByLanguage = (value: string | number, acceptNegativeValue: boolean | undefined, parseFixed = 1, ignoreFormatSeparator = false, ignoreParseFloat = false): any => {\n const lang = UtilsCache.getLang()\n\n if (!`${value}`.trim()) {\n return '';\n }\n if (isNil(value) || (!acceptNegativeValue && +value <= 0)) {\n return 0;\n }\n if (typeof value === 'string' && !ignoreFormatSeparator) {\n value = formatNumber(value);\n }\n\n const isFloat = value.toString().includes('.');\n const [intStr, floatStr] = value.toString().split('.');\n\n if (!floatStr?.length) {\n parseFixed = 0;\n }\n const round = (value: number, parseFixed: number) => {\n const fixed = Math.pow(10, parseFixed);\n\n return Math.round(value * fixed) / fixed;\n };\n\n if (parseFixed > (floatStr?.length || 0)) {\n const maxParseFixed = (acceptNegativeValue && +value < 0) ? 17 : 16;\n const fixed = maxParseFixed - (intStr?.length || 0);\n\n parseFixed = parseFixed < fixed ? parseFixed : fixed;\n }\n\n if (isFloat && !ignoreParseFloat) {\n value = parseFloat(round(+value, parseFixed).toFixed(parseFixed));\n }\n\n // Xử lý không format dữ liệu phần thập phân\n const valueString = value.toString();\n const index = valueString.indexOf('.');\n\n if (index !== -1 && (parseFixed > 3 || ignoreParseFloat)) {\n let decimalPart = valueString.substring(index + 1, valueString.length);\n let int = valueString.substring(0, index + 1);\n\n if (ignoreParseFloat) {\n decimalPart = decimalPart.substring(0, parseFixed);\n }\n if (lang === UtilsLanguageConstants.EN) {\n int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n\n return `${int}${decimalPart}`;\n }\n int = int.replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n return `${int}${decimalPart}`;\n }\n if (index === -1 || parseFixed <= 3) {\n if (lang === UtilsLanguageConstants.EN) {\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n return value.toString().replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n }\n};","export const emojiPattern = ()=> {\n return /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g;\n}\nexport const removeEmoji = (text: string) => {\n if (!text || !text.trim()) {\n return text;\n }\n \n return text.replace(emojiPattern(), '');\n};","export const escapeHtml = (data: string): string => {\n if (!data || typeof data !== 'string') {\n return data;\n }\n\n return data\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#039;\");\n};\n","export const deleteUnicode = (str: string) => {\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ|ễ/g, 'e');\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\n str = str.replace(/đ/g, 'd');\n str = str.replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, 'A');\n str = str.replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, 'E');\n str = str.replace(/Ì|Í|Ị|Ỉ|Ĩ/g, 'I');\n str = str.replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, 'O');\n str = str.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, 'U');\n str = str.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, 'Y');\n str = str.replace(/Đ/g, 'D');\n\n str = str.replace(/\\u0300|\\u0301|\\u0303|\\u0309|\\u0323/g, \"\"); // ̀ ́ ̃ ̉ ̣ huyền, sắc, ngã, hỏi, nặng\n str = str.replace(/\\u02C6|\\u0306|\\u031B/g, \"\"); // ˆ ̆ ̛ Â, Ê, Ă, Ơ, Ư\n\n return str.normalize();\n};","const listColorDefine: Array<string> = ['#E62222', '#B81B1B', '#EB4E4E', '#F97316', '#C75C12', '#FA8F45', '#FFB700', '#CC9200', '#FFC533', '#84CC16', '#6AA312', '#9dd645', '#00BC62', '#00A757', '#33DA8A', '#06B6D4', '#1B59C4', '#4E8CF7', '#0EA5E9',\n '#1B59C4', '#4E8CF7', '#226FF5', '#1B59C4', '#4E8CF7', '#6366F1', '#4F52C1', '#8285F4', '#5B04B3', '#49038F', '#7C36C2', '#D946EF', '#AE38BF', '#E16BF2', '#EC4899', '#BD3A7A', '#F06DAD', '#F43F5E', '#C3324B', '#F6657E', '#757380', '#5E5C66', '#918F99',\n '#202020', '#1A1A1A', '#4D4D4D'\n];\n\nexport const getColorById = (str: string): string => {\n let hashString = 0;\n\n if (!str) {\n return '';\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n\n hashString = ((hashString << 5) - hashString) + char;\n hashString = hashString & hashString;\n }\n\n return listColorDefine[Math.abs(hashString) % listColorDefine.length];\n};\n\n","export const ERROR_MESSAGE_EMPTY_VALID = 'i18n_valid_empty_message';\nexport const ERROR_MESSAGE_PATTEN_VALID = 'i18n_valid_pattern_message';\nexport const ERROR_MESSAGE_MIN_VALID = 'i18n_message_error_input_min_value';\nexport const ERROR_MESSAGE_MAX_VALID = 'i18n_message_error_input_max_value';\nexport const ERROR_MESSAGE_MIN_LENGTH = 'i18n_message_error_input_min_length';\nexport const ERROR_MESSAGE_MAX_LENGTH = 'i18n_message_error_input_max_length';\nexport const CHARACTER_DATA_EMPTY = '__';\nexport const DEFAULT_START_PAGE_0 = 'defaultStartPage0';","/* eslint-disable no-useless-escape */\nexport const PATTERN_EMAIL = () => {\n return /^[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]@[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]\\.[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]$/;\n}\nexport const PATTERN_URL = () => {\n return /^(http|https|ftp):(\\/){2}[^\\s]+[.]{1}[^\\s]+$/;\n}\n\nexport const PATTERN_HOST_URL = () => {\n return /^((https|http|ftp):[/]{2}[^/\\s]+)/;\n}\n\nexport const PATTERN_DOMAIN = () => {\n return /^([a-zA-Z0-9])(([a-z0-9-]{1,61})?[a-z0-9]{1})?(\\.[a-z0-9](([a-z0-9-]{1,61})?[a-z0-9]{1})?)?(\\.[a-zA-Z]{2,4})+$/;\n}\n\nexport const PATTERN_MOBILE_PHONE = () => {\n return /^(\\+?84|0|84)([0-9]{9})$/;\n}\n\nexport const PATTERN_PHONE = () => {\n return /^(\\+?84|[0-9]|84)([0-9]{2,9})$/;\n}\n\nexport const PATTERN_PHONE_NORMAL = () => {\n return /^(\\+?84|[0-9]|84)([0-9]{9,10})$/;\n}\n\nexport const PATTERN_NUMBER = () => {\n return /\\d+/g;\n}\nexport const PATTERN_ENCODE_URI = () => {\n return /%([0-9A-F]{2})/g;\n}\nexport const PATTERN_NAME = () => {\n return /^\\w+[A-Za-z\\s\\d]+$/;\n}\nexport const PATTERN_NAME_UTF8 = () => {\n return /^[ àáảãạăắằẵặẳâầấậẫẩđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹÀÁẢÃẠĂẮẰẴẶẲÂẦẤẬẪẨĐÈÉẺẼẸÊỀẾỂỄỆÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸA-Za-z0-9]+$/;\n}\nexport const PATTERN_NAME_SPECIAL = () => {\n return /[~!@#$%^&*()-+=<>,?\\/\\\\:;\"']/;\n}\nexport const PATTERN_NAME_PROFILE = () => {\n return /([\\w\\W\\d\\s]+)+/;\n}\nexport const PATTERN_EMOJI = () => {\n return /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g;\n}\nexport const PATTERN_RULE_FIELD_REPLACE = () => {\n return /[{]{2}[a-zA-Z_-]+[}]{2}/g;\n}\nexport const PATTERN_GET_FIELD_BY_RULE_FIELD_REPLACE = () => {\n return /[a-zA-Z_-]+/g;\n}\n\nexport const PATTERN_PEM = () => {\n return /^(0|1):([0-9]{1,2}):(\\{\\{path-api\\}\\}):([a-zA-Z0-9\\/]+)$/g;\n}\n\nexport const PATTERN_TAX = () => {\n return /^([0-9]){10}(-[0-9]{3})?$/;\n}\n\nexport const PATTERN_KEY = () => {\n return /^([0-9]){10}(-[0-9]{3})?$/;\n}\n\nexport const PATTERN_ACCOUNT = () => {\n return /^(?=.*@)[a-z0-9@._-]{2,63}$/;\n}\n","export type TYPE_FUNCTION_XSS = (data: string) => Promise<string>;\nlet functionXssFilter: TYPE_FUNCTION_XSS = async (value: string): Promise<string> => {\n return value;\n}\n\nexport const updateFunctionXssFilter = (functionCustom: TYPE_FUNCTION_XSS) => {\n functionXssFilter = functionCustom;\n}\n\nexport const xssFilter: TYPE_FUNCTION_XSS = async (data: string) => {\n return await functionXssFilter(data);\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { signal, TemplateRef, ElementRef, WritableSignal, isSignal } from \"@angular/core\";\nimport { cloneDeep } from \"./helpers\";\n\nexport const convertObjectToSignal = <T = any>(data: any, isCloneDeep = true): T => {\n if (data === null || typeof data !== 'object' || isSignal(data)) {\n return data;\n }\n if (Array.isArray(data)) {\n return signal(data.map(item => convertObjectToSignal(item, isCloneDeep))) as T;\n }\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n Array.from(data.keys()).forEach(key => {\n mapCopy.set(key, convertObjectToSignal(data.get(key), isCloneDeep));\n });\n return signal(mapCopy) as T;\n }\n\n data = signal(isCloneDeep ? { ...data } : data);\n\n for (const key in data()) {\n const value = data()[key];\n if (value instanceof TemplateRef || value instanceof ElementRef || value instanceof Element || value instanceof Date || value instanceof RegExp || value instanceof Set || value instanceof Map) {\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(data(), key)) {\n data()[key] = convertObjectToSignal(value, isCloneDeep);\n }\n }\n\n return data as T;\n};\n\nexport const convertSignalToObject = <T = any>(data: any, isCloneDeep = true): T => {\n if (data === null || (typeof data !== 'function' && typeof data !== 'object')) {\n return data;\n }\n if (isSignal(data)) {\n data = (data as WritableSignal<unknown>)();\n }\n\n\n if (Array.isArray(data)) {\n if (!isSignal(data[0])) {\n return data as T;\n }\n return data.map(item => convertSignalToObject(isCloneDeep ? cloneDeep(item) : item, isCloneDeep)) as T;\n }\n\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n Array.from(data.keys()).forEach(key => {\n mapCopy.set(key, convertSignalToObject(isCloneDeep ? cloneDeep(data.get(key)) : data.get(key), isCloneDeep));\n });\n return mapCopy as T;\n }\n const result: Record<string, any> = isCloneDeep ? {} : data;\n for (const key in data) {\n const value = data[key];\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n result[key] = convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep);\n }\n }\n\n return result as T;\n};\n","import * as dayjs from 'dayjs';\nexport type TYPE_FUNCTION_FORMAT_DATE = (time: string | number | dayjs.Dayjs | undefined | null, format: string, lang?: string) => string;\nlet functionFormatDate: TYPE_FUNCTION_FORMAT_DATE | undefined = undefined;\n\n\nexport const updateFunctionFormatDate = (functionCustom: TYPE_FUNCTION_FORMAT_DATE) => {\n functionFormatDate = functionCustom;\n}\n\nexport const formatDate = () => functionFormatDate;","import { isNil, omitBy } from './helpers';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const endCodeUrl = (objectData: any, isBody: boolean): string => {\n objectData = omitBy(objectData, param => param === '' || isNil(param));\n let res = '';\n\n for (const p in objectData) {\n res += `&${p}=${encodeURIComponent(objectData[p])}`;\n }\n\n return res === '' ? '' : `${isBody ? '' : '?'}${res.substring(1)}`;\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["key","keyStore","listColorDefine"],"mappings":"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"}
package/helpers.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /**Các hàm tương tự thư viện lodash */
2
- export declare const isNil: (value: unknown) => boolean;
2
+ export declare const isNil: (value: unknown) => value is null | undefined;
3
3
  export declare const isEmpty: (value: unknown) => boolean;
4
+ export declare const omitBy: <T>(objData: Record<string, any>, predicate: (val: any) => boolean) => T;
4
5
  export declare const get: <T = any>(obj: any, path: string | string[], defaultValue?: any) => T;
5
6
  export declare const set: <T = any>(obj: any, path: string | string[], value: any) => T;
6
7
  export declare const cloneDeep: <T = any>(data: any) => T;
package/http-params.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { HttpParameterCodec, HttpParams } from "@angular/common/http";
2
- export declare const HttpParamsRequestInstance: <Type>(options?: HttpParamsOptions<Type>, instance?: HttpParams) => UtilsHttpParamsRequest<Type>;
2
+ export declare const UtilsHttpParamsRequestInstance: <Type>(options?: HttpParamsOptions<Type>, instance?: HttpParams) => UtilsHttpParamsRequest<Type>;
3
3
  export declare class UtilsHttpParamsRequest<Type = {
4
4
  pem: string;
5
5
  }> extends HttpParams {
package/index.d.ts CHANGED
@@ -22,3 +22,4 @@ 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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/utils",
3
- "version": "0.2.68",
3
+ "version": "0.2.69",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0",