@sd-angular/core 1.2.12 → 1.2.15

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.
@@ -3,6 +3,7 @@ import { __awaiter, __classPrivateFieldGet } from "tslib";
3
3
  import { Injectable, Inject, Optional } from '@angular/core';
4
4
  import { HttpClient } from '@angular/common/http';
5
5
  import { take, timeout } from 'rxjs/operators';
6
+ import $ from 'jquery';
6
7
  import { API_CONFIG } from './api.model';
7
8
  import { SdCacheService } from '@sd-angular/core/cache';
8
9
  import { SdTokenService } from './token.service';
@@ -20,6 +21,7 @@ export class SdApiService {
20
21
  this.configuration = configuration;
21
22
  this.cacheService = cacheService;
22
23
  this.tokenService = tokenService;
24
+ this.uploadId = 'U118fefb1-3085-4641-8cb8-f7fe5c28f509';
23
25
  _timeout.set(this, 120000); // 120s
24
26
  _cacheDuration.set(this, 2000); // 2s
25
27
  _cache.set(this, {});
@@ -222,6 +224,25 @@ export class SdApiService {
222
224
  }
223
225
  return get();
224
226
  });
227
+ this.uploadSingle = (url, option) => {
228
+ return new Promise((resolve, reject) => {
229
+ if ($(`#${this.uploadId}`).length) {
230
+ $('body').children(`#${this.uploadId}`).remove();
231
+ }
232
+ $('body').append(`<input id='${this.uploadId}' style='display: none' type='file' />`);
233
+ $(`#${this.uploadId}`).on('change', (evt) => {
234
+ try {
235
+ const target = evt.target;
236
+ const fileToUpload = target.files.item(0);
237
+ this.upload(url, fileToUpload, option).then(resolve).catch(reject);
238
+ }
239
+ catch (error) {
240
+ reject(error);
241
+ }
242
+ });
243
+ $(`#${this.uploadId}`).trigger('click');
244
+ });
245
+ };
225
246
  this.upload = (url, file, option) => __awaiter(this, void 0, void 0, function* () {
226
247
  var _c;
227
248
  const lastDot = file.name.lastIndexOf('.');
@@ -302,4 +323,4 @@ SdApiService.ctorParameters = () => [
302
323
  { type: SdCacheService },
303
324
  { type: SdTokenService }
304
325
  ];
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2FwaS8iLCJzb3VyY2VzIjpbInNyYy9saWIvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7Ozs7OztBQUs3QixNQUFNLE9BQU8sWUFBWTtJQWtCdkIsWUFDVSxVQUFzQixFQUNVLGFBQWdDLEVBQ2hFLFlBQTRCLEVBQzVCLFlBQTRCO1FBSDVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVSxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEUsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQXJCdEMsbUJBQVcsTUFBTSxFQUFDLENBQUMsT0FBTztRQUMxQix5QkFBaUIsSUFBSSxFQUFDLENBQUMsS0FBSztRQUM1QixpQkFTSSxFQUFFLEVBQUM7UUFFQyxjQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRTs7WUFDNUMsT0FB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QUFNLFNBQUMsVUFBVSxjQUFHLFFBQVE7WUE3QnhCLGNBQWM7WUFDZCxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHRha2UsIHRpbWVvdXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElBcGlDb25maWd1cmF0aW9uLCBBUElfQ09ORklHIH0gZnJvbSAnLi9hcGkubW9kZWwnO1xyXG5pbXBvcnQgeyBTZENhY2hlU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY2FjaGUnO1xyXG5pbXBvcnQgeyBTZFRva2VuU2VydmljZSB9IGZyb20gJy4vdG9rZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RBcGlTZXJ2aWNlIHtcclxuICAjdGltZW91dCA9IDEyMDAwMDsgLy8gMTIwc1xyXG4gICNjYWNoZUR1cmF0aW9uID0gMjAwMDsgLy8gMnNcclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IHtcclxuICAgICAgY3JlYXRlZERhdGU6IERhdGU7XHJcbiAgICAgIHN1YmplY3Q6IFN1YmplY3Q8YW55PjtcclxuICAgICAgcmVzcG9uc2U/OiB7XHJcbiAgICAgICAgc3RhdHVzPzogJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcclxuICAgICAgICByZXN1bHQ6IGFueSxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uPy50cmFuc2xhdGUodmFsdWUpIHx8IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KEFQSV9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogSUFwaUNvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogU2RDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRva2VuU2VydmljZTogU2RUb2tlblNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHBvc3QgPSBhc3luYyA8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgb3B0aW9ucz86IHtcclxuICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICBsZXQgaGFzaEtleSA9IHV1aWQudjQoKTtcclxuICAgIGlmICghKGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkpIHtcclxuICAgICAgaGFzaEtleSA9IGhhc2goe1xyXG4gICAgICAgIHVybCxcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgIGJvZHlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuI2NhY2hlW2hhc2hLZXldIHx8IERhdGUuYWRkTWlsaXNlY29uZHModGhpcy4jY2FjaGVbaGFzaEtleV0uY3JlYXRlZERhdGUsIHRoaXMuI2NhY2hlRHVyYXRpb24pIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XSA9IHtcclxuICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICBzdWJqZWN0OiBuZXcgU3ViamVjdCgpLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAob3B0aW9ucz8ucmVzcG9uc2VUeXBlICYmIG9wdGlvbnMucmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcclxuICAgICAgICB0aGlzLmh0dHBDbGllbnQucG9zdChlbmNvZGVVUkkodXJsKSwgYm9keSwge1xyXG4gICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgaGVhZGVycyxcclxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucz8ucmVzcG9uc2VUeXBlIGFzIGFueVxyXG4gICAgICAgIH0pLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgcmVzdWx0OiByZXNcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0Lm5leHQocmVzKTtcclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgcmVzdWx0OiBlcnJcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LnBvc3QoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgICAgICBoZWFkZXJzXHJcbiAgICAgICAgfSkucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5vaykge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICByZXN1bHQ6IHJlcy5ib2R5XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QubmV4dChyZXMuYm9keSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKHJlcy5ib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgcmVzdWx0OiBlcnJcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwb3N0Q2FjaGUgPSBhc3luYyA8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiB7XHJcbiAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgY2FjaGVIb3Vycz86IG51bWJlcjtcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICB9KTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucz8uaGVhZGVycyB8fCB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgdXJsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgZ2V0LCBzZXQsIGhhcyB9ID0gdGhpcy5jYWNoZVNlcnZpY2UuY3JlYXRlKHtcclxuICAgICAgdXJsLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgICBib2R5XHJcbiAgICB9LCB7XHJcbiAgICAgIHR5cGU6IG9wdGlvbnM/LmNhY2hlVHlwZSxcclxuICAgICAgaG91cnM6IG9wdGlvbnM/LmNhY2hlSG91cnNcclxuICAgIH0pO1xyXG4gICAgaWYgKCFoYXMoKSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBvc3QodXJsLCBib2R5LCBvcHRpb25zPy5oZWFkZXJzKTtcclxuICAgICAgc2V0KHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0KCk7XHJcbiAgfVxyXG5cclxuICBwdXQ8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8VD4ge1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5wdXQoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgfSkucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKS50b1Byb21pc2UoKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5vaykge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlamVjdChyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaCgoaHR0cEVycm9yUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgcmVqZWN0KGh0dHBFcnJvclJlc3BvbnNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICNkZWZpbmVQYXJhbXMgPSAocmVxdWVzdDogYW55KSA9PiB7XHJcbiAgICBjb25zdCBycSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVxdWVzdCkpIHtcclxuICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XHJcbiAgICAgICAgcnEucHVzaChcclxuICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkgYXMgc3RyaW5nKX09JHtlbmNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgICAgIHZhbHVlIGFzIHN0cmluZ1xyXG4gICAgICAgICAgKX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGA/JHtycT8uam9pbignJicpfWA7XHJcbiAgfVxyXG5cclxuICBnZXRXaXRoUGFyYW1zID0gPFQgPSBhbnk+KHVybDogc3RyaW5nLCBwYXJhbXM6IGFueSwgb3B0aW9ucz86IHtcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyxcclxuICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KGAke3VybH0ke3RoaXMuI2RlZmluZVBhcmFtcyhwYXJhbXMpfWAsIG9wdGlvbnM/LmhlYWRlcnMsIHsgLi4ub3B0aW9ucywgZW5jb2RlVVJJOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGdldENhY2hlV2l0aFBhcmFtcyA9IDxUID0gYW55Pih1cmw6IHN0cmluZywgcGFyYW1zOiBhbnksIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgb3B0aW9ucz86IHtcclxuICAgIHJlbG9hZD86IGJvb2xlYW4sXHJcbiAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgY2FjaGVIb3Vycz86IG51bWJlcjtcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICB9KTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDYWNoZShgJHt1cmx9JHt0aGlzLiNkZWZpbmVQYXJhbXMocGFyYW1zKX1gLCB7IC4uLm9wdGlvbnMsIGhlYWRlcnMsIGVuY29kZVVSSTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgPSA8VCA9IGFueT4odXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgb3B0aW9ucz86IHtcclxuICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgICBlbmNvZGVVUkk/OiBib29sZWFuXHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBlbmNvZGVkVXJsID0gb3B0aW9ucz8uZW5jb2RlVVJJID09PSBmYWxzZSA/IHVybCA6IGVuY29kZVVSSSh1cmwpO1xyXG4gICAgLy8gY29uc3QgaGFzaEtleSA9IGhhc2goe1xyXG4gICAgLy8gICBlbmNvZGVkVXJsLFxyXG4gICAgLy8gICBoZWFkZXJzXHJcbiAgICAvLyB9KTtcclxuICAgIGNvbnN0IGhhc2hLZXkgPSBoYXNoKHtcclxuICAgICAgZW5jb2RlZFVybCxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMuI2NhY2hlW2hhc2hLZXldIHx8IERhdGUuYWRkTWlsaXNlY29uZHModGhpcy4jY2FjaGVbaGFzaEtleV0uY3JlYXRlZERhdGUsIHRoaXMuI2NhY2hlRHVyYXRpb24pIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XSA9IHtcclxuICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICBzdWJqZWN0OiBuZXcgU3ViamVjdCgpXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChvcHRpb25zPy5yZXNwb25zZVR5cGUgJiYgb3B0aW9ucy5yZXNwb25zZVR5cGUgIT09ICdqc29uJykge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoZW5jb2RlZFVybCwgeyBvYnNlcnZlOiAnYm9keScsIGhlYWRlcnMsIHJlc3BvbnNlVHlwZTogb3B0aW9ucz8ucmVzcG9uc2VUeXBlIGFzIGFueSB9KVxyXG4gICAgICAgICAgLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiByZXNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiBlcnJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LmdldChlbmNvZGVkVXJsLCB7IG9ic2VydmU6ICdyZXNwb25zZScsIGhlYWRlcnMgfSlcclxuICAgICAgICAgIC5waXBlKHRpbWVvdXQodGhpcy4jdGltZW91dCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMub2spIHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5uZXh0KHJlcy5ib2R5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHlcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IocmVzLmJvZHkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiBlcnJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYWNoZSA9IGFzeW5jIDxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IHtcclxuICAgIHJlbG9hZD86IGJvb2xlYW4sXHJcbiAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgY2FjaGVIb3Vycz86IG51bWJlcjtcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICAgIGVuY29kZVVSST86IGJvb2xlYW5cclxuICB9KTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucz8uaGVhZGVycyB8fCB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgdXJsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGVuY29kZWRVcmwgPSBvcHRpb25zPy5lbmNvZGVVUkkgPT09IGZhbHNlID8gdXJsIDogZW5jb2RlVVJJKHVybCk7XHJcbiAgICBjb25zdCB7IGdldCwgc2V0LCBoYXMgfSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmNyZWF0ZSh7XHJcbiAgICAgIGVuY29kZWRVcmwsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgIH0sIHtcclxuICAgICAgdHlwZTogb3B0aW9ucz8uY2FjaGVUeXBlLFxyXG4gICAgICBob3Vyczogb3B0aW9ucz8uY2FjaGVIb3Vyc1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIWhhcygpIHx8IG9wdGlvbnM/LnJlbG9hZCkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldChlbmNvZGVkVXJsLCBvcHRpb25zPy5oZWFkZXJzLCB7IGVuY29kZVVSSTogZmFsc2UgfSk7XHJcbiAgICAgIHNldChyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldCgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlPFQgPSBhbnk+KHVybDogc3RyaW5nLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPFQ+IHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKGVuY29kZVVSSSh1cmwpLCB7IG9ic2VydmU6ICdyZXNwb25zZScsIGhlYWRlcnMgfSlcclxuICAgICAgICAucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKVxyXG4gICAgICAgIC50b1Byb21pc2UoKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0Lm9rKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5ib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KS5jYXRjaCgoaHR0cEVycm9yUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZWplY3QoaHR0cEVycm9yUmVzcG9uc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWQgPSBhc3luYyAodXJsOiBzdHJpbmcsIGZpbGU6IEZpbGUsIG9wdGlvbj86IHtcclxuICAgIGV4dGVuc2lvbnM/OiBzdHJpbmdbXSxcclxuICAgIG1heFNpemVJbk1iPzogbnVtYmVyLFxyXG4gICAgdmFsaWRhdG9yPzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IGxhc3REb3QgPSBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICAgIGlmIChsYXN0RG90ID09PSAtMSkge1xyXG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGUoYEludmFsaWQgZmlsZSBleHRlbnNpb25gKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnN1YnN0cmluZyhsYXN0RG90ICsgMSk7XHJcbiAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgIGlmIChvcHRpb24uZXh0ZW5zaW9ucz8ubGVuZ3RoICYmICFvcHRpb24uZXh0ZW5zaW9ucy5zb21lKGUgPT4gZS50b1VwcGVyQ2FzZSgpID09PSBleHRlbnNpb24udG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGUoJ1VwbG9hZGVkIGZpbGUgaXMgbm90IG1hdGNoIGV4dGVuc2lvbicpfSAke29wdGlvbi5leHRlbnNpb25zLmpvaW4oJywgJyl9YDtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbi5tYXhTaXplSW5NYiA+IDAgJiYgb3B0aW9uLm1heFNpemVJbk1iICogMTAyNCAqIDEwMjQgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGUoJ01heCBmaWxlIHNpemUnKX0gJHtvcHRpb24ubWF4U2l6ZUluTWJ9IE1ic2A7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24udmFsaWRhdG9yICYmIG9wdGlvbi52YWxpZGF0b3IoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBvcHRpb24udmFsaWRhdG9yKGZpbGUubmFtZSk7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wb3N0KHVybCwgZm9ybURhdGEpO1xyXG4gIH1cclxufVxyXG4iXX0=
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2FwaS8iLCJzb3VyY2VzIjpbInNyYy9saWIvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFLN0IsTUFBTSxPQUFPLFlBQVk7SUFxQnZCLFlBQ1UsVUFBc0IsRUFDVSxhQUFnQyxFQUNoRSxZQUE0QixFQUM1QixZQUE0QjtRQUg1QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ1Usa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hFLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUF4QjlCLGFBQVEsR0FBRyx1Q0FBdUMsQ0FBQztRQUUzRCxtQkFBVyxNQUFNLEVBQUMsQ0FBQyxPQUFPO1FBRTFCLHlCQUFpQixJQUFJLEVBQUMsQ0FBQyxLQUFLO1FBQzVCLGlC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QUFNO2FBQ25COzs7WUFaUSxVQUFVOzRDQW9DZCxNQUFNLFNBQUMsVUFBVSxjQUFHLFFBQVE7WUFoQ3hCLGNBQWM7WUFDZCxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHRha2UsIHRpbWVvdXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XHJcbmltcG9ydCB7IElBcGlDb25maWd1cmF0aW9uLCBBUElfQ09ORklHIH0gZnJvbSAnLi9hcGkubW9kZWwnO1xyXG5pbXBvcnQgeyBTZENhY2hlU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY2FjaGUnO1xyXG5pbXBvcnQgeyBTZFRva2VuU2VydmljZSB9IGZyb20gJy4vdG9rZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RBcGlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHVwbG9hZElkID0gJ1UxMThmZWZiMS0zMDg1LTQ2NDEtOGNiOC1mN2ZlNWMyOGY1MDknO1xyXG5cclxuICAjdGltZW91dCA9IDEyMDAwMDsgLy8gMTIwc1xyXG5cclxuICAjY2FjaGVEdXJhdGlvbiA9IDIwMDA7IC8vIDJzXHJcbiAgI2NhY2hlOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiB7XHJcbiAgICAgIGNyZWF0ZWREYXRlOiBEYXRlO1xyXG4gICAgICBzdWJqZWN0OiBTdWJqZWN0PGFueT47XHJcbiAgICAgIHJlc3BvbnNlPzoge1xyXG4gICAgICAgIHN0YXR1cz86ICdzdWNjZXNzJyB8ICdlcnJvcic7XHJcbiAgICAgICAgcmVzdWx0OiBhbnksXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9ID0ge307XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbj8udHJhbnNsYXRlKHZhbHVlKSB8fCB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgQEluamVjdChBUElfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZ3VyYXRpb246IElBcGlDb25maWd1cmF0aW9uLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IFNkQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFNkVG9rZW5TZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwb3N0ID0gYXN5bmMgPFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIG9wdGlvbnM/OiB7XHJcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xyXG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG4gICAgbGV0IGhhc2hLZXkgPSB1dWlkLnY0KCk7XHJcbiAgICBpZiAoIShib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XHJcbiAgICAgIGhhc2hLZXkgPSBoYXNoKHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgICBib2R5XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLiNjYWNoZVtoYXNoS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW2hhc2hLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNjYWNoZUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0gPSB7XHJcbiAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKSxcclxuICAgICAgfTtcclxuICAgICAgaWYgKG9wdGlvbnM/LnJlc3BvbnNlVHlwZSAmJiBvcHRpb25zLnJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LnBvc3QoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICByZXNwb25zZVR5cGU6IG9wdGlvbnM/LnJlc3BvbnNlVHlwZSBhcyBhbnlcclxuICAgICAgICB9KS5waXBlKHRpbWVvdXQodGhpcy4jdGltZW91dCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgIHJlc3VsdDogcmVzXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHJlc3VsdDogZXJyXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0KGVuY29kZVVSSSh1cmwpLCBib2R5LCB7XHJcbiAgICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgaGVhZGVyc1xyXG4gICAgICAgIH0pLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMub2spIHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0Lm5leHQocmVzLmJvZHkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHlcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihyZXMuYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHJlc3VsdDogZXJyXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICB0aHJvdyB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZS5yZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcG9zdENhY2hlID0gYXN5bmMgPFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzoge1xyXG4gICAgY2FjaGVUeXBlPzogJ2RlZmF1bHQnIHwgJ3Nlc3Npb24nIHwgJ2xvY2FsJztcclxuICAgIGNhY2hlSG91cnM/OiBudW1iZXI7XHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnM/LmhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IGdldCwgc2V0LCBoYXMgfSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmNyZWF0ZSh7XHJcbiAgICAgIHVybCxcclxuICAgICAgaGVhZGVycyxcclxuICAgICAgYm9keVxyXG4gICAgfSwge1xyXG4gICAgICB0eXBlOiBvcHRpb25zPy5jYWNoZVR5cGUsXHJcbiAgICAgIGhvdXJzOiBvcHRpb25zPy5jYWNoZUhvdXJzXHJcbiAgICB9KTtcclxuICAgIGlmICghaGFzKCkpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wb3N0KHVybCwgYm9keSwgb3B0aW9ucz8uaGVhZGVycyk7XHJcbiAgICAgIHNldChyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldCgpO1xyXG4gIH1cclxuXHJcbiAgcHV0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPFQ+IHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBDbGllbnQucHV0KGVuY29kZVVSSSh1cmwpLCBib2R5LCB7XHJcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgIH0pLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSkudG9Qcm9taXNlKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQub2spIHtcclxuICAgICAgICAgIHJlc29sdmUocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkuY2F0Y2goKGh0dHBFcnJvclJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJlamVjdChodHRwRXJyb3JSZXNwb25zZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAjZGVmaW5lUGFyYW1zID0gKHJlcXVlc3Q6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgcnEgPSBbXTtcclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlcXVlc3QpKSB7XHJcbiAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xyXG4gICAgICAgIHJxLnB1c2goXHJcbiAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5IGFzIHN0cmluZyl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxyXG4gICAgICAgICAgICB2YWx1ZSBhcyBzdHJpbmdcclxuICAgICAgICAgICl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBgPyR7cnE/LmpvaW4oJyYnKX1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2l0aFBhcmFtcyA9IDxUID0gYW55Pih1cmw6IHN0cmluZywgcGFyYW1zOiBhbnksIG9wdGlvbnM/OiB7XHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMsXHJcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xyXG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmdldChgJHt1cmx9JHt0aGlzLiNkZWZpbmVQYXJhbXMocGFyYW1zKX1gLCBvcHRpb25zPy5oZWFkZXJzLCB7IC4uLm9wdGlvbnMsIGVuY29kZVVSSTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDYWNoZVdpdGhQYXJhbXMgPSA8VCA9IGFueT4odXJsOiBzdHJpbmcsIHBhcmFtczogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIG9wdGlvbnM/OiB7XHJcbiAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgY2FjaGVUeXBlPzogJ2RlZmF1bHQnIHwgJ3Nlc3Npb24nIHwgJ2xvY2FsJztcclxuICAgIGNhY2hlSG91cnM/OiBudW1iZXI7XHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGUoYCR7dXJsfSR7dGhpcy4jZGVmaW5lUGFyYW1zKHBhcmFtcyl9YCwgeyAuLi5vcHRpb25zLCBoZWFkZXJzLCBlbmNvZGVVUkk6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0ID0gPFQgPSBhbnk+KHVybDogc3RyaW5nLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIG9wdGlvbnM/OiB7XHJcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xyXG4gICAgZW5jb2RlVVJJPzogYm9vbGVhblxyXG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZW5jb2RlZFVybCA9IG9wdGlvbnM/LmVuY29kZVVSSSA9PT0gZmFsc2UgPyB1cmwgOiBlbmNvZGVVUkkodXJsKTtcclxuICAgIC8vIGNvbnN0IGhhc2hLZXkgPSBoYXNoKHtcclxuICAgIC8vICAgZW5jb2RlZFVybCxcclxuICAgIC8vICAgaGVhZGVyc1xyXG4gICAgLy8gfSk7XHJcbiAgICBjb25zdCBoYXNoS2V5ID0gaGFzaCh7XHJcbiAgICAgIGVuY29kZWRVcmwsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgIH0pO1xyXG4gICAgaWYgKCF0aGlzLiNjYWNoZVtoYXNoS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW2hhc2hLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNjYWNoZUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0gPSB7XHJcbiAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAob3B0aW9ucz8ucmVzcG9uc2VUeXBlICYmIG9wdGlvbnMucmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcclxuICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGVuY29kZWRVcmwsIHsgb2JzZXJ2ZTogJ2JvZHknLCBoZWFkZXJzLCByZXNwb25zZVR5cGU6IG9wdGlvbnM/LnJlc3BvbnNlVHlwZSBhcyBhbnkgfSlcclxuICAgICAgICAgIC5waXBlKHRpbWVvdXQodGhpcy4jdGltZW91dCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogcmVzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QubmV4dChyZXMpO1xyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogZXJyXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoZW5jb2RlZFVybCwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCBoZWFkZXJzIH0pXHJcbiAgICAgICAgICAucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzLm9rKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHlcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QubmV4dChyZXMuYm9keSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6IHJlcy5ib2R5XHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKHJlcy5ib2R5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogZXJyXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICB0aHJvdyB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZS5yZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2FjaGUgPSBhc3luYyA8VCA9IGFueT4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiB7XHJcbiAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgY2FjaGVUeXBlPzogJ2RlZmF1bHQnIHwgJ3Nlc3Npb24nIHwgJ2xvY2FsJztcclxuICAgIGNhY2hlSG91cnM/OiBudW1iZXI7XHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgICBlbmNvZGVVUkk/OiBib29sZWFuXHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnM/LmhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBlbmNvZGVkVXJsID0gb3B0aW9ucz8uZW5jb2RlVVJJID09PSBmYWxzZSA/IHVybCA6IGVuY29kZVVSSSh1cmwpO1xyXG4gICAgY29uc3QgeyBnZXQsIHNldCwgaGFzIH0gPSB0aGlzLmNhY2hlU2VydmljZS5jcmVhdGUoe1xyXG4gICAgICBlbmNvZGVkVXJsLFxyXG4gICAgICBoZWFkZXJzXHJcbiAgICB9LCB7XHJcbiAgICAgIHR5cGU6IG9wdGlvbnM/LmNhY2hlVHlwZSxcclxuICAgICAgaG91cnM6IG9wdGlvbnM/LmNhY2hlSG91cnNcclxuICAgIH0pO1xyXG4gICAgaWYgKCFoYXMoKSB8fCBvcHRpb25zPy5yZWxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXQoZW5jb2RlZFVybCwgb3B0aW9ucz8uaGVhZGVycywgeyBlbmNvZGVVUkk6IGZhbHNlIH0pO1xyXG4gICAgICBzZXQocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiBnZXQoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZTxUID0gYW55Pih1cmw6IHN0cmluZywgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxUPiB7XHJcbiAgICBoZWFkZXJzID0gaGVhZGVycyB8fCB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgdXJsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5odHRwQ2xpZW50LmRlbGV0ZShlbmNvZGVVUkkodXJsKSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCBoZWFkZXJzIH0pXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSlcclxuICAgICAgICAudG9Qcm9taXNlKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5vaykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5ib2R5KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdChyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkuY2F0Y2goKGh0dHBFcnJvclJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVqZWN0KGh0dHBFcnJvclJlc3BvbnNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkU2luZ2xlID0gKHVybDogc3RyaW5nLCBvcHRpb24/OiB7XHJcbiAgICBleHRlbnNpb25zPzogc3RyaW5nW10sXHJcbiAgICBtYXhTaXplSW5NYj86IG51bWJlcixcclxuICAgIHZhbGlkYXRvcj86IChmaWxlTmFtZTogc3RyaW5nKSA9PiBzdHJpbmdcclxuICB9KTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICgkKGAjJHt0aGlzLnVwbG9hZElkfWApLmxlbmd0aCkge1xyXG4gICAgICAgICQoJ2JvZHknKS5jaGlsZHJlbihgIyR7dGhpcy51cGxvYWRJZH1gKS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgICAkKCdib2R5JykuYXBwZW5kKGA8aW5wdXQgaWQ9JyR7dGhpcy51cGxvYWRJZH0nIHN0eWxlPSdkaXNwbGF5OiBub25lJyB0eXBlPSdmaWxlJyAvPmApO1xyXG4gICAgICAkKGAjJHt0aGlzLnVwbG9hZElkfWApLm9uKCdjaGFuZ2UnLCAoZXZ0OiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldnQudGFyZ2V0O1xyXG4gICAgICAgICAgY29uc3QgZmlsZVRvVXBsb2FkID0gdGFyZ2V0LmZpbGVzLml0ZW0oMCk7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZCh1cmwsIGZpbGVUb1VwbG9hZCwgb3B0aW9uKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgJChgIyR7dGhpcy51cGxvYWRJZH1gKS50cmlnZ2VyKCdjbGljaycpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWQgPSBhc3luYyAodXJsOiBzdHJpbmcsIGZpbGU6IEZpbGUsIG9wdGlvbj86IHtcclxuICAgIGV4dGVuc2lvbnM/OiBzdHJpbmdbXSxcclxuICAgIG1heFNpemVJbk1iPzogbnVtYmVyLFxyXG4gICAgdmFsaWRhdG9yPzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IGxhc3REb3QgPSBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICAgIGlmIChsYXN0RG90ID09PSAtMSkge1xyXG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGUoYEludmFsaWQgZmlsZSBleHRlbnNpb25gKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnN1YnN0cmluZyhsYXN0RG90ICsgMSk7XHJcbiAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgIGlmIChvcHRpb24uZXh0ZW5zaW9ucz8ubGVuZ3RoICYmICFvcHRpb24uZXh0ZW5zaW9ucy5zb21lKGUgPT4gZS50b1VwcGVyQ2FzZSgpID09PSBleHRlbnNpb24udG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGUoJ1VwbG9hZGVkIGZpbGUgaXMgbm90IG1hdGNoIGV4dGVuc2lvbicpfSAke29wdGlvbi5leHRlbnNpb25zLmpvaW4oJywgJyl9YDtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbi5tYXhTaXplSW5NYiA+IDAgJiYgb3B0aW9uLm1heFNpemVJbk1iICogMTAyNCAqIDEwMjQgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGUoJ01heCBmaWxlIHNpemUnKX0gJHtvcHRpb24ubWF4U2l6ZUluTWJ9IE1ic2A7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24udmFsaWRhdG9yICYmIG9wdGlvbi52YWxpZGF0b3IoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBvcHRpb24udmFsaWRhdG9yKGZpbGUubmFtZSk7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wb3N0KHVybCwgZm9ybURhdGEpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -65,6 +65,7 @@ export class SdCacheService {
65
65
  });
66
66
  _set.set(this, (key, option) => {
67
67
  return (data) => {
68
+ data = data !== null && data !== void 0 ? data : null;
68
69
  __classPrivateFieldGet(this, _cache)[key] = {
69
70
  data: JSON.parse(JSON.stringify(data)),
70
71
  createdOn: new Date()
@@ -91,6 +92,7 @@ export class SdCacheService {
91
92
  _setServer.set(this, (key, option) => {
92
93
  return (data) => __awaiter(this, void 0, void 0, function* () {
93
94
  var _a;
95
+ data = data !== null && data !== void 0 ? data : null;
94
96
  __classPrivateFieldGet(this, _cache)[key] = {
95
97
  data: JSON.parse(JSON.stringify(data)),
96
98
  createdOn: new Date()
@@ -247,4 +249,4 @@ SdCacheService.decorators = [
247
249
  SdCacheService.ctorParameters = () => [
248
250
  { type: undefined, decorators: [{ type: Inject, args: [CACHE_CONFIG,] }, { type: Optional }] }
249
251
  ];
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvY2FjaGUvIiwic291cmNlcyI6WyJzcmMvbGliL2NhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQW1GLE1BQU0sZUFBZSxDQUFDO0FBQzlILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS2hELE1BQU0sT0FBTyxjQUFjO0lBVXpCLFlBQXNELGFBQWtDO1FBQWxDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVR4RixpQkFLSSxFQUFFLEVBQUM7UUFDUCxtQkFFSSxFQUFFLEVBQUM7UUE0RFAsZUFBTyxDQUFVLEdBQVcsRUFBRSxNQUFzQixFQUFhLEVBQUU7WUFDakUsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxLQUFLLEdBQUcscUNBQVksR0FBRyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSxNQUFLLFNBQVMsRUFBRTtvQkFDOUIsSUFBSTt3QkFDRixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ2pEO29CQUFDLFdBQU07d0JBQ04sS0FBSyxHQUFHLFNBQVMsQ0FBQztxQkFDbkI7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJ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LEtBQUssUUFBUSxFQUFFO1lBQ3BDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLENBQUMsdUNBQWMsT0FBTyxDQUFDLEVBQUU7WUFDM0IsdUNBQWMsT0FBTyxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQU0sTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsTUFBTSxHQUFHLEdBQUcsOENBQUEsSUFBSSxFQUFlLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLEdBQUcsR0FBRyw4Q0FBQSxJQUFJLEVBQWUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sR0FBRyxHQUFHLDhDQUFBLElBQUksRUFBWSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsaURBQUEsSUFBSSxFQUFlLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRCxPQUFPO1lBQ0wsR0FBRztZQUNILEdBQUc7WUFDSCxHQUFHO1lBQ0gsTUFBTTtZQUNOLFFBQVEsRUFBRSx1Q0FBYyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RELENBQUM7SUFDSixDQUFDOzs7OztZQXRFRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs0Q0FXYyxNQUFNLFNBQUMsWUFBWSxjQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgQ0FDSEVfQ09ORklHLCBJQ2FjaGVDb25maWd1cmF0aW9uLCBTZENhY2hlLCBTZENhY2hlT3B0aW9uLCBTZENhY2hlU2VydmVyLCBTZENhY2hlU2VydmVyT3B0aW9uIH0gZnJvbSAnLi9jYWNoZS5tb2RlbCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkQ2FjaGVTZXJ2aWNlIHtcclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IHtcclxuICAgICAgZGF0YTogYW55LFxyXG4gICAgICBjcmVhdGVkT246IERhdGVcclxuICAgIH1cclxuICB9ID0ge307XHJcbiAgI3N1YmplY3Q6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIH0gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENBQ0hFX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBJQ2FjaGVDb25maWd1cmF0aW9uKSB7XHJcbiAgfVxyXG5cclxuICBjcmVhdGU8VCA9IGFueT4oa2V5OiBzdHJpbmcgfCBvYmplY3QsIG9wdGlvbj86IFNkQ2FjaGVPcHRpb248VD4pOiBTZENhY2hlPFQ+IHtcclxuICAgIGlmICgha2V5KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignS2V5IGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgaGFzaEtleTogc3RyaW5nID0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgKGtleSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGhhc2hLZXkgPSBrZXk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiAoa2V5KSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaGFzaEtleSA9IGhhc2goa2V5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXknKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy4jc3ViamVjdFtoYXNoS2V5XSkge1xyXG4gICAgICB0aGlzLiNzdWJqZWN0W2hhc2hLZXldID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG9wdGlvbj8uZGVmYXVsdCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBnZXQgPSB0aGlzLiNnZXQ8VD4oaGFzaEtleSwgb3B0aW9uKTtcclxuICAgIGNvbnN0IHNldCA9IHRoaXMuI3NldDxUPihoYXNoS2V5LCBvcHRpb24pO1xyXG4gICAgY29uc3QgaGFzID0gdGhpcy4jaGFzKGhhc2hLZXksIG9wdGlvbik7XHJcbiAgICBjb25zdCByZW1vdmUgPSB0aGlzLiNyZW1vdmUoaGFzaEtleSwgb3B0aW9uKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdldCxcclxuICAgICAgc2V0LFxyXG4gICAgICBoYXMsXHJcbiAgICAgIHJlbW92ZSxcclxuICAgICAgb2JzZXJ2ZXI6IHRoaXMuI3N1YmplY3RbaGFzaEtleV0ucGlwZShtYXAoZ2V0KSlcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTZXJ2ZXI8VCA9IGFueT4oa2V5OiBzdHJpbmcgfCBvYmplY3QsIG9wdGlvbj86IFNkQ2FjaGVPcHRpb248VD4pOiBTZENhY2hlU2VydmVyPFQ+IHtcclxuICAgIGlmICgha2V5KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignS2V5IGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgaGFzaEtleTogc3RyaW5nID0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgKGtleSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGhhc2hLZXkgPSBrZXk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiAoa2V5KSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaGFzaEtleSA9IGhhc2goa2V5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXknKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy4jc3ViamVjdFtoYXNoS2V5XSkge1xyXG4gICAgICB0aGlzLiNzdWJqZWN0W2hhc2hLZXldID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG9wdGlvbj8uZGVmYXVsdCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBnZXQgPSB0aGlzLiNnZXRTZXJ2ZXI8VD4oaGFzaEtleSwgb3B0aW9uKTtcclxuICAgIGNvbnN0IHNldCA9IHRoaXMuI3NldFNlcnZlcjxUPihoYXNoS2V5LCBvcHRpb24pO1xyXG4gICAgY29uc3QgaGFzID0gdGhpcy4jaGFzU2VydmVyKGhhc2hLZXksIG9wdGlvbik7XHJcbiAgICBjb25zdCByZW1vdmUgPSB0aGlzLiNyZW1vdmVTZXJ2ZXIoaGFzaEtleSwgb3B0aW9uKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdldCxcclxuICAgICAgc2V0LFxyXG4gICAgICBoYXMsXHJcbiAgICAgIHJlbW92ZSxcclxuICAgICAgb2JzZXJ2ZXI6IHRoaXMuI3N1YmplY3RbaGFzaEtleV0ucGlwZShzd2l0Y2hNYXAoZ2V0KSlcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAjZ2V0ID0gPFQgPSBhbnk+KGtleTogc3RyaW5nLCBvcHRpb24/OiBTZENhY2hlT3B0aW9uKTogKCgpID0+IFQpID0+IHtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGxldCBjYWNoZSA9IHRoaXMuI2NhY2hlW2tleV07XHJcbiAgICAgIGlmIChvcHRpb24/LnR5cGUgPT09ICdzZXNzaW9uJykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjYWNoZSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIGNhY2hlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9uPy50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNhY2hlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIGNhY2hlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNhY2hlKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbj8uZGVmYXVsdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9uPy5ob3VycyAmJiBEYXRlLmFkZEhvdXJzKGNhY2hlLmNyZWF0ZWRPbiwgb3B0aW9uPy5ob3VycykgPCBuZXcgRGF0ZSgpKSB7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlID0gdGhpcy4jcmVtb3ZlKGtleSwgb3B0aW9uKTtcclxuICAgICAgICByZW1vdmUoKTtcclxuICAgICAgICByZXR1cm4gb3B0aW9uPy5kZWZhdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNhY2hlLmRhdGEpKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAjZ2V0U2VydmVyID0gPFQgPSBhbnk+KGtleTogc3RyaW5nLCBvcHRpb24/OiBTZENhY2hlU2VydmVyT3B0aW9uKTogKCgpID0+IFByb21pc2U8VD4pID0+IHtcclxuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGxldCBjYWNoZSA9IHRoaXMuI2NhY2hlW2tleV07XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24/LmdldCkge1xyXG4gICAgICAgIGNhY2hlID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLmdldChrZXksIG9wdGlvbikuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjYWNoZSkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb24/LmRlZmF1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbj8uaG91cnMgJiYgRGF0ZS5hZGRIb3VycyhjYWNoZS5jcmVhdGVkT24sIG9wdGlvbj8uaG91cnMpIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICAgIGNvbnN0IHJlbW92ZSA9IHRoaXMuI3JlbW92ZVNlcnZlcihrZXksIG9wdGlvbik7XHJcbiAgICAgICAgcmVtb3ZlKCk7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbj8uZGVmYXVsdDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjYWNoZS5kYXRhKSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgI3NldCA9IDxUID0gYW55PihrZXk6IHN0cmluZywgb3B0aW9uPzogU2RDYWNoZU9wdGlvbik6ICgoZGF0YTogVCkgPT4gdm9pZCkgPT4ge1xyXG4gICAgcmV0dXJuIChkYXRhOiBUKSA9PiB7XHJcbiAgICAgIHRoaXMuI2NhY2hlW2tleV0gPSB7XHJcbiAgICAgICAgZGF0YTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSksXHJcbiAgICAgICAgY3JlYXRlZE9uOiBuZXcgRGF0ZSgpXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChvcHRpb24/LnR5cGUgPT09ICdzZXNzaW9uJykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodGhpcy4jY2FjaGVba2V5XSkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9uPy50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodGhpcy4jY2FjaGVba2V5XSkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLiNzdWJqZWN0W2tleV0ubmV4dCh0aGlzLiNjYWNoZVtrZXldLmRhdGEpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gICNzZXRTZXJ2ZXIgPSA8VCA9IGFueT4oa2V5OiBzdHJpbmcsIG9wdGlvbj86IFNkQ2FjaGVTZXJ2ZXJPcHRpb24pOiAoKGRhdGE6IFQpID0+IFByb21pc2U8dm9pZD4pID0+IHtcclxuICAgIHJldHVybiBhc3luYyAoZGF0YTogVCkgPT4ge1xyXG4gICAgICB0aGlzLiNjYWNoZVtrZXldID0ge1xyXG4gICAgICAgIGRhdGE6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpLFxyXG4gICAgICAgIGNyZWF0ZWRPbjogbmV3IERhdGUoKVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5zZXQpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLnNldChrZXksIHRoaXMuI2NhY2hlW2tleV0sIG9wdGlvbik7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuI3N1YmplY3Rba2V5XS5uZXh0KHRoaXMuI2NhY2hlW2tleV0uZGF0YSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgI2hhcyA9IChrZXk6IHN0cmluZywgb3B0aW9uPzogU2RDYWNoZU9wdGlvbik6ICgoKSA9PiBib29sZWFuKSA9PiB7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBsZXQgY2FjaGUgPSB0aGlzLiNjYWNoZVtrZXldO1xyXG5cclxuICAgICAgaWYgKG9wdGlvbj8udHlwZSA9PT0gJ3Nlc3Npb24nKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNhY2hlID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgY2FjaGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24/LnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY2FjaGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgY2FjaGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghY2FjaGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbj8uaG91cnMgJiYgRGF0ZS5hZGRIb3VycyhjYWNoZS5jcmVhdGVkT24sIG9wdGlvbj8uaG91cnMpIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNoYXNTZXJ2ZXIgPSAoa2V5OiBzdHJpbmcsIG9wdGlvbj86IFNkQ2FjaGVTZXJ2ZXJPcHRpb24pOiAoKCkgPT4gUHJvbWlzZTxib29sZWFuPikgPT4ge1xyXG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcclxuICAgICAgbGV0IGNhY2hlID0gdGhpcy4jY2FjaGVba2V5XTtcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbj8uZ2V0KSB7XHJcbiAgICAgICAgY2FjaGUgPSBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGtleSwgb3B0aW9uKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNhY2hlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24/LmhvdXJzICYmIERhdGUuYWRkSG91cnMoY2FjaGUuY3JlYXRlZE9uLCBvcHRpb24/LmhvdXJzKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgI3JlbW92ZSA9IChrZXk6IHN0cmluZywgb3B0aW9uPzogU2RDYWNoZU9wdGlvbik6ICgoKSA9PiB2b2lkKSA9PiB7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB0aGlzLiNjYWNoZVtrZXldID0gdW5kZWZpbmVkO1xyXG4gICAgICBpZiAob3B0aW9uPy50eXBlID09PSAnc2Vzc2lvbicpIHtcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbj8udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jc3ViamVjdFtrZXldLm5leHQodW5kZWZpbmVkKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAjcmVtb3ZlU2VydmVyID0gKGtleTogc3RyaW5nLCBvcHRpb24/OiBTZENhY2hlU2VydmVyT3B0aW9uKTogKCgpID0+IFByb21pc2U8dm9pZD4pID0+IHtcclxuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIHRoaXMuI2NhY2hlW2tleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24/LnJlbW92ZSkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbi5yZW1vdmUoa2V5LCBvcHRpb24pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jc3ViamVjdFtrZXldLm5leHQodW5kZWZpbmVkKTtcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvY2FjaGUvIiwic291cmNlcyI6WyJzcmMvbGliL2NhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQW1GLE1BQU0sZUFBZSxDQUFDO0FBQzlILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS2hELE1BQU0sT0FBTyxjQUFjO0lBVXpCLFlBQXNELGFBQWtDO1FBQWxDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVR4RixpQkFLSSxFQUFFLEVBQUM7UUFDUCxtQkFFSSxFQUFFLEVBQUM7UUE0RFAsZUFBTyxDQUFVLEdBQVcsRUFBRSxNQUFzQixFQUFhLEVBQUU7WUFDakUsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxLQUFLLEdBQUcscUNBQVksR0FBRyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSxNQUFLLFNBQVMsRUFBRTtvQkFDOUIsSUFBSTt3QkFDRixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ2pEO29CQUFDLFdBQU07d0JBQ04sS0FBSyxHQUFHLFNBQVMsQ0FBQztxQkFDbkI7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJ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QUksQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxHQUFHLEdBQUcsQ0FBQztTQUNmO2FBQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQ3BDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLENBQUMsdUNBQWMsT0FBTyxDQUFDLEVBQUU7WUFDM0IsdUNBQWMsT0FBTyxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQU0sTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsTUFBTSxHQUFHLEdBQUcsOENBQUEsSUFBSSxFQUFlLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLEdBQUcsR0FBRyw4Q0FBQSxJQUFJLEVBQWUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sR0FBRyxHQUFHLDhDQUFBLElBQUksRUFBWSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsaURBQUEsSUFBSSxFQUFlLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRCxPQUFPO1lBQ0wsR0FBRztZQUNILEdBQUc7WUFDSCxHQUFHO1lBQ0gsTUFBTTtZQUNOLFFBQVEsRUFBRSx1Q0FBYyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RELENBQUM7SUFDSixDQUFDOzs7OztZQXRFRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs0Q0FXYyxNQUFNLFNBQUMsWUFBWSxjQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgQ0FDSEVfQ09ORklHLCBJQ2FjaGVDb25maWd1cmF0aW9uLCBTZENhY2hlLCBTZENhY2hlT3B0aW9uLCBTZENhY2hlU2VydmVyLCBTZENhY2hlU2VydmVyT3B0aW9uIH0gZnJvbSAnLi9jYWNoZS5tb2RlbCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkQ2FjaGVTZXJ2aWNlIHtcclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IHtcclxuICAgICAgZGF0YTogYW55LFxyXG4gICAgICBjcmVhdGVkT246IERhdGVcclxuICAgIH1cclxuICB9ID0ge307XHJcbiAgI3N1YmplY3Q6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIH0gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENBQ0hFX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBJQ2FjaGVDb25maWd1cmF0aW9uKSB7XHJcbiAgfVxyXG5cclxuICBjcmVhdGU8VCA9IGFueT4oa2V5OiBzdHJpbmcgfCBvYmplY3QsIG9wdGlvbj86IFNkQ2FjaGVPcHRpb248VD4pOiBTZENhY2hlPFQ+IHtcclxuICAgIGlmICgha2V5KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignS2V5IGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgaGFzaEtleTogc3RyaW5nID0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgKGtleSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGhhc2hLZXkgPSBrZXk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiAoa2V5KSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaGFzaEtleSA9IGhhc2goa2V5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXknKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy4jc3ViamVjdFtoYXNoS2V5XSkge1xyXG4gICAgICB0aGlzLiNzdWJqZWN0W2hhc2hLZXldID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG9wdGlvbj8uZGVmYXVsdCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBnZXQgPSB0aGlzLiNnZXQ8VD4oaGFzaEtleSwgb3B0aW9uKTtcclxuICAgIGNvbnN0IHNldCA9IHRoaXMuI3NldDxUPihoYXNoS2V5LCBvcHRpb24pO1xyXG4gICAgY29uc3QgaGFzID0gdGhpcy4jaGFzKGhhc2hLZXksIG9wdGlvbik7XHJcbiAgICBjb25zdCByZW1vdmUgPSB0aGlzLiNyZW1vdmUoaGFzaEtleSwgb3B0aW9uKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdldCxcclxuICAgICAgc2V0LFxyXG4gICAgICBoYXMsXHJcbiAgICAgIHJlbW92ZSxcclxuICAgICAgb2JzZXJ2ZXI6IHRoaXMuI3N1YmplY3RbaGFzaEtleV0ucGlwZShtYXAoZ2V0KSlcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTZXJ2ZXI8VCA9IGFueT4oa2V5OiBzdHJpbmcgfCBvYmplY3QsIG9wdGlvbj86IFNkQ2FjaGVPcHRpb248VD4pOiBTZENhY2hlU2VydmVyPFQ+IHtcclxuICAgIGlmICgha2V5KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignS2V5IGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgaGFzaEtleTogc3RyaW5nID0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgKGtleSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGhhc2hLZXkgPSBrZXk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiAoa2V5KSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaGFzaEtleSA9IGhhc2goa2V5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXknKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy4jc3ViamVjdFtoYXNoS2V5XSkge1xyXG4gICAgICB0aGlzLiNzdWJqZWN0W2hhc2hLZXldID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG9wdGlvbj8uZGVmYXVsdCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBnZXQgPSB0aGlzLiNnZXRTZXJ2ZXI8VD4oaGFzaEtleSwgb3B0aW9uKTtcclxuICAgIGNvbnN0IHNldCA9IHRoaXMuI3NldFNlcnZlcjxUPihoYXNoS2V5LCBvcHRpb24pO1xyXG4gICAgY29uc3QgaGFzID0gdGhpcy4jaGFzU2VydmVyKGhhc2hLZXksIG9wdGlvbik7XHJcbiAgICBjb25zdCByZW1vdmUgPSB0aGlzLiNyZW1vdmVTZXJ2ZXIoaGFzaEtleSwgb3B0aW9uKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdldCxcclxuICAgICAgc2V0LFxyXG4gICAgICBoYXMsXHJcbiAgICAgIHJlbW92ZSxcclxuICAgICAgb2JzZXJ2ZXI6IHRoaXMuI3N1YmplY3RbaGFzaEtleV0ucGlwZShzd2l0Y2hNYXAoZ2V0KSlcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAjZ2V0ID0gPFQgPSBhbnk+KGtleTogc3RyaW5nLCBvcHRpb24/OiBTZENhY2hlT3B0aW9uKTogKCgpID0+IFQpID0+IHtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGxldCBjYWNoZSA9IHRoaXMuI2NhY2hlW2tleV07XHJcbiAgICAgIGlmIChvcHRpb24/LnR5cGUgPT09ICdzZXNzaW9uJykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjYWNoZSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIGNhY2hlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9uPy50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNhY2hlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIGNhY2hlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNhY2hlKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbj8uZGVmYXVsdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9uPy5ob3VycyAmJiBEYXRlLmFkZEhvdXJzKGNhY2hlLmNyZWF0ZWRPbiwgb3B0aW9uPy5ob3VycykgPCBuZXcgRGF0ZSgpKSB7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlID0gdGhpcy4jcmVtb3ZlKGtleSwgb3B0aW9uKTtcclxuICAgICAgICByZW1vdmUoKTtcclxuICAgICAgICByZXR1cm4gb3B0aW9uPy5kZWZhdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNhY2hlLmRhdGEpKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAjZ2V0U2VydmVyID0gPFQgPSBhbnk+KGtleTogc3RyaW5nLCBvcHRpb24/OiBTZENhY2hlU2VydmVyT3B0aW9uKTogKCgpID0+IFByb21pc2U8VD4pID0+IHtcclxuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGxldCBjYWNoZSA9IHRoaXMuI2NhY2hlW2tleV07XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24/LmdldCkge1xyXG4gICAgICAgIGNhY2hlID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLmdldChrZXksIG9wdGlvbikuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjYWNoZSkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb24/LmRlZmF1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbj8uaG91cnMgJiYgRGF0ZS5hZGRIb3VycyhjYWNoZS5jcmVhdGVkT24sIG9wdGlvbj8uaG91cnMpIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICAgIGNvbnN0IHJlbW92ZSA9IHRoaXMuI3JlbW92ZVNlcnZlcihrZXksIG9wdGlvbik7XHJcbiAgICAgICAgcmVtb3ZlKCk7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbj8uZGVmYXVsdDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjYWNoZS5kYXRhKSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgI3NldCA9IDxUID0gYW55PihrZXk6IHN0cmluZywgb3B0aW9uPzogU2RDYWNoZU9wdGlvbik6ICgoZGF0YTogVCkgPT4gdm9pZCkgPT4ge1xyXG4gICAgcmV0dXJuIChkYXRhOiBUKSA9PiB7XHJcbiAgICAgIGRhdGEgPSBkYXRhID8/IG51bGw7XHJcbiAgICAgIHRoaXMuI2NhY2hlW2tleV0gPSB7XHJcbiAgICAgICAgZGF0YTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSksXHJcbiAgICAgICAgY3JlYXRlZE9uOiBuZXcgRGF0ZSgpXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChvcHRpb24/LnR5cGUgPT09ICdzZXNzaW9uJykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodGhpcy4jY2FjaGVba2V5XSkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9uPy50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodGhpcy4jY2FjaGVba2V5XSkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLiNzdWJqZWN0W2tleV0ubmV4dCh0aGlzLiNjYWNoZVtrZXldLmRhdGEpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gICNzZXRTZXJ2ZXIgPSA8VCA9IGFueT4oa2V5OiBzdHJpbmcsIG9wdGlvbj86IFNkQ2FjaGVTZXJ2ZXJPcHRpb24pOiAoKGRhdGE6IFQpID0+IFByb21pc2U8dm9pZD4pID0+IHtcclxuICAgIHJldHVybiBhc3luYyAoZGF0YTogVCkgPT4ge1xyXG4gICAgICBkYXRhID0gZGF0YSA/PyBudWxsO1xyXG4gICAgICB0aGlzLiNjYWNoZVtrZXldID0ge1xyXG4gICAgICAgIGRhdGE6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpLFxyXG4gICAgICAgIGNyZWF0ZWRPbjogbmV3IERhdGUoKVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5zZXQpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLnNldChrZXksIHRoaXMuI2NhY2hlW2tleV0sIG9wdGlvbik7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuI3N1YmplY3Rba2V5XS5uZXh0KHRoaXMuI2NhY2hlW2tleV0uZGF0YSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgI2hhcyA9IChrZXk6IHN0cmluZywgb3B0aW9uPzogU2RDYWNoZU9wdGlvbik6ICgoKSA9PiBib29sZWFuKSA9PiB7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBsZXQgY2FjaGUgPSB0aGlzLiNjYWNoZVtrZXldO1xyXG5cclxuICAgICAgaWYgKG9wdGlvbj8udHlwZSA9PT0gJ3Nlc3Npb24nKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNhY2hlID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgY2FjaGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24/LnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY2FjaGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgY2FjaGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghY2FjaGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbj8uaG91cnMgJiYgRGF0ZS5hZGRIb3VycyhjYWNoZS5jcmVhdGVkT24sIG9wdGlvbj8uaG91cnMpIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNoYXNTZXJ2ZXIgPSAoa2V5OiBzdHJpbmcsIG9wdGlvbj86IFNkQ2FjaGVTZXJ2ZXJPcHRpb24pOiAoKCkgPT4gUHJvbWlzZTxib29sZWFuPikgPT4ge1xyXG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcclxuICAgICAgbGV0IGNhY2hlID0gdGhpcy4jY2FjaGVba2V5XTtcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbj8uZ2V0KSB7XHJcbiAgICAgICAgY2FjaGUgPSBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGtleSwgb3B0aW9uKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNhY2hlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24/LmhvdXJzICYmIERhdGUuYWRkSG91cnMoY2FjaGUuY3JlYXRlZE9uLCBvcHRpb24/LmhvdXJzKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgI3JlbW92ZSA9IChrZXk6IHN0cmluZywgb3B0aW9uPzogU2RDYWNoZU9wdGlvbik6ICgoKSA9PiB2b2lkKSA9PiB7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB0aGlzLiNjYWNoZVtrZXldID0gdW5kZWZpbmVkO1xyXG4gICAgICBpZiAob3B0aW9uPy50eXBlID09PSAnc2Vzc2lvbicpIHtcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbj8udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jc3ViamVjdFtrZXldLm5leHQodW5kZWZpbmVkKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAjcmVtb3ZlU2VydmVyID0gKGtleTogc3RyaW5nLCBvcHRpb24/OiBTZENhY2hlU2VydmVyT3B0aW9uKTogKCgpID0+IFByb21pc2U8dm9pZD4pID0+IHtcclxuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIHRoaXMuI2NhY2hlW2tleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24/LnJlbW92ZSkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbi5yZW1vdmUoa2V5LCBvcHRpb24pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jc3ViamVjdFtrZXldLm5leHQodW5kZWZpbmVkKTtcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
@@ -158,4 +158,4 @@ SdFilter.propDecorators = {
158
158
  _filterOption: [{ type: Input, args: ['option',] }],
159
159
  sdFilterDefs: [{ type: ContentChildren, args: [SdFilterDefDirective,] }]
160
160
  };
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZmlsdGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTZELGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLGVBQWUsRUFBdUIsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFFLE9BQU8sRUFBTyxTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRdkUsTUFBTSxPQUFPLFFBQVE7SUFrQm5CLFlBQ1UsYUFBb0MsRUFDcEMsY0FBZ0MsRUFDaEMsYUFBOEI7UUFGOUIsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFwQnhDLGtCQUFVLHNDQUFzQyxFQUFDO1FBVWpELCtCQUF1QixJQUFJLGVBQWUsQ0FBaUIsSUFBSSxDQUFDLEVBQUM7UUFDakUsd0JBQWdCLElBQUksWUFBWSxFQUFFLEVBQUM7UUFDSSxpQkFBWSxHQUFHLElBQUksU0FBUyxFQUF3QixDQUFDO1FBQzVGLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6Qixr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QUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUN6RSxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDO2dCQUNyQywyQ0FBQSxJQUFJLEVBQVMsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBaURELFdBQVc7UUFDVCw0Q0FBbUIsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OztZQXhJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLGl3S0FBc0M7O2FBRXZDOzs7WUFYUSxxQkFBcUI7WUFJVixnQkFBZ0I7WUFEM0IsZUFBZTs7OzRCQWFyQixLQUFLLFNBQUMsUUFBUTsyQkFTZCxlQUFlLFNBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgKiBhcyBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFNkRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLWZpbHRlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRmlsdGVyLCBTZEZpbHRlckluZm9ybWF0aW9uLCBGaWx0ZXJPYmplY3QsIFNkRmlsdGVyT3B0aW9uLCBTZFF1aWNrRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL2ZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RTZXR0aW5nLCBTZFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9zZXR0aW5nJztcclxuaW1wb3J0IHsgU2RDYWNoZVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NhY2hlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RGaWx0ZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICNwcmVmaXggPSAnNjFkMjJlOGUtZWVlOC00YWFkLThlMWMtMDQ0YTUzMmZlYTkxJztcclxuICBzZXR0aW5nOiBTZFNldHRpbmc8U2RGaWx0ZXJJbmZvcm1hdGlvbj47XHJcbiAgZmlsdGVyT3B0aW9uOiBTZEZpbHRlck9wdGlvbjtcclxuICBASW5wdXQoJ29wdGlvbicpIHNldCBfZmlsdGVyT3B0aW9uKG9wdGlvbjogU2RGaWx0ZXJPcHRpb24pIHtcclxuICAgIGNvbnNvbGUubG9nKG9wdGlvbik7XHJcbiAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICB0aGlzLiNmaWx0ZXJPcHRpb25DaGFuZ2VzLm5leHQob3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcbiAgI2ZpbHRlck9wdGlvbkNoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNkRmlsdGVyT3B0aW9uPihudWxsKTtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RGaWx0ZXJEZWZEaXJlY3RpdmUpIHNkRmlsdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RGaWx0ZXJEZWZEaXJlY3RpdmU+KCk7XHJcbiAgaXNNb2JpbGVPclRhYmxldCA9IGZhbHNlO1xyXG4gIGZpbHRlckNoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlck9iamVjdD4oe30pO1xyXG4gIGZpbHRlckluZm9ybWF0aW9uOiBPYnNlcnZhYmxlPFNkRmlsdGVySW5mb3JtYXRpb24+O1xyXG4gIGluZm9ybWF0aW9uOiBTZEZpbHRlckluZm9ybWF0aW9uO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNldHRpbmdTZXJ2aWNlOiBTZFNldHRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBTZEZpbHRlclNlcnZpY2UpIHtcclxuICAgIHRoaXMuaXNNb2JpbGVPclRhYmxldCA9ICF0aGlzLmRldmljZVNlcnZpY2UuaXNEZXNrdG9wKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIGlmICghdGhpcy4ja2V5KSB7XHJcbiAgICAvLyAgIHRoaXMuc2V0dGluZyA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPFNkRmlsdGVySW5mb3JtYXRpb24+KHV1aWQudjQoKSwge1xyXG4gICAgLy8gICAgIHR5cGU6ICdzZXNzaW9uJyxcclxuICAgIC8vICAgICBkZWZhdWx0OiB7XHJcbiAgICAvLyAgICAgICBmaWx0ZXI6IHt9LFxyXG4gICAgLy8gICAgICAgdmlzaWJsZToge30sXHJcbiAgICAvLyAgICAgICBxdWlja0ZpbHRlcnM6IFtdLFxyXG4gICAgLy8gICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogbnVsbFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLnNldHRpbmcgPSB0aGlzLnNldHRpbmdTZXJ2aWNlLmNyZWF0ZTxTZEZpbHRlckluZm9ybWF0aW9uPih0aGlzLiNrZXksIHtcclxuICAgIC8vICAgICBkZWZhdWx0OiB7XHJcbiAgICAvLyAgICAgICBmaWx0ZXI6IHt9LFxyXG4gICAgLy8gICAgICAgdmlzaWJsZToge30sXHJcbiAgICAvLyAgICAgICBxdWlja0ZpbHRlcnM6IFtdLFxyXG4gICAgLy8gICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogbnVsbFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuI2ZpbHRlck9wdGlvbkNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5maWx0ZXJPcHRpb24pKS5zdWJzY3JpYmUoKGZpbHRlck9wdGlvbikgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhmaWx0ZXJPcHRpb24pO1xyXG4gICAgICBpZiAoIWZpbHRlck9wdGlvbikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkZWZhdWx0SW5mb3JtYXRpb246IFNkRmlsdGVySW5mb3JtYXRpb24gPSB7XHJcbiAgICAgICAgZmlsdGVyOiB7fSxcclxuICAgICAgICB2aXNpYmxlOiB7fSxcclxuICAgICAgICBxdWlja0ZpbHRlcnM6IGZpbHRlck9wdGlvbj8ucXVpY2tGaWx0ZXI/LmRlZmF1bHRzIHx8IFtdLFxyXG4gICAgICAgIHNlbGVjdGVkUXVpY2tGaWx0ZXI6IGZpbHRlck9wdGlvbj8ucXVpY2tGaWx0ZXI/LnNlbGVjdGVkRGVmYXVsdFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoIWZpbHRlck9wdGlvbi5rZXkpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcgPSB0aGlzLnNldHRpbmdTZXJ2aWNlLmNyZWF0ZTxTZEZpbHRlckluZm9ybWF0aW9uPih1dWlkLnY0KCksIHtcclxuICAgICAgICAgIHR5cGU6ICdzZXNzaW9uJyxcclxuICAgICAgICAgIGRlZmF1bHQ6IGRlZmF1bHRJbmZvcm1hdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZyA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPFNkRmlsdGVySW5mb3JtYXRpb24+KHtcclxuICAgICAgICAgIHByZWZpeDogdGhpcy4jcHJlZml4LFxyXG4gICAgICAgICAga2V5OiBmaWx0ZXJPcHRpb24ua2V5XHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgZGVmYXVsdDogZGVmYXVsdEluZm9ybWF0aW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbmZvcm1hdGlvbiA9IHRoaXMuc2V0dGluZy5nZXQoKTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5pbmZvcm1hdGlvbik7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZXR0aW5nLm9ic2VydmVyLnN1YnNjcmliZShmaWx0ZXJJbmZvcm1hdGlvbiA9PiB7XHJcbiAgICAgICAgdGhpcy5pbmZvcm1hdGlvbiA9IGZpbHRlckluZm9ybWF0aW9uO1xyXG4gICAgICAgIHRoaXMuI2Zvcm1hdChmaWx0ZXJPcHRpb24/LmZpbHRlcnMsIHRoaXMuaW5mb3JtYXRpb24pO1xyXG4gICAgICB9KSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlciA9IChmaWx0ZXI/OiBGaWx0ZXIpID0+IHtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlcy5uZXh0KHtcclxuICAgICAgZmlsdGVyOiB7IC4uLnRoaXMuaW5mb3JtYXRpb24uZmlsdGVyIH0sXHJcbiAgICAgIGZpbHRlckRlZjogeyAuLi50aGlzLmluZm9ybWF0aW9uLmZpbHRlckRlZiB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldHRpbmcuc2V0KHRoaXMuaW5mb3JtYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhciA9ICgpID0+IHtcclxuICAgIHRoaXMuaW5mb3JtYXRpb24uZmlsdGVyID0ge307XHJcbiAgICB0aGlzLmluZm9ybWF0aW9uLmZpbHRlckRlZiA9IHt9O1xyXG4gICAgdGhpcy5vbkZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgI2Zvcm1hdCA9IChmaWx0ZXJzOiBGaWx0ZXJbXSwgaW5mb3JtYXRpb246IFNkRmlsdGVySW5mb3JtYXRpb24pID0+IHtcclxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcclxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICAgIGluZm9ybWF0aW9uLmZpbHRlcltmaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogaW5mb3JtYXRpb24uZmlsdGVyW2ZpbHRlci5maWVsZF0/LmZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGluZm9ybWF0aW9uLmZpbHRlcltmaWx0ZXIuZmllbGRdPy50byA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGluZm9ybWF0aW9uLmZpbHRlcltmaWx0ZXIuZmllbGRdID0gaW5mb3JtYXRpb24uZmlsdGVyW2ZpbHRlci5maWVsZF0gPz8gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjZmlyc3RMb2FkID0gKGZpbHRlcnM6IEZpbHRlcltdLCBpbmZvcm1hdGlvbjogU2RGaWx0ZXJJbmZvcm1hdGlvbikgPT4ge1xyXG4gICAgaWYgKGluZm9ybWF0aW9uLnNlbGVjdGVkUXVpY2tGaWx0ZXIgJiYgaW5mb3JtYXRpb24ucXVpY2tGaWx0ZXJzLnNvbWUoZSA9PiBlLmNvZGUgPT09IGluZm9ybWF0aW9uLnNlbGVjdGVkUXVpY2tGaWx0ZXIpKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gaW5mb3JtYXRpb24ucXVpY2tGaWx0ZXJzLmZpbmQoZSA9PiBlLmNvZGUgPT09IGluZm9ybWF0aW9uLnNlbGVjdGVkUXVpY2tGaWx0ZXIpO1xyXG4gICAgICBpbmZvcm1hdGlvbi5maWx0ZXIgPSB7IC4uLnNlbGVjdGVkLmZpbHRlciB9O1xyXG4gICAgICBpbmZvcm1hdGlvbi5maWx0ZXJEZWYgPSB7IC4uLnNlbGVjdGVkLmZpbHRlckRlZiB9O1xyXG4gICAgICB0aGlzLiNmb3JtYXQoZmlsdGVycywgaW5mb3JtYXRpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ2RhdGVyYW5nZScpIHtcclxuICAgICAgICAgIGluZm9ybWF0aW9uLmZpbHRlcltmaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgICBmcm9tOiBpbmZvcm1hdGlvbi5maWx0ZXJbZmlsdGVyLmZpZWxkXT8uZnJvbSA/PyBmaWx0ZXIuZGVmYXVsdD8uZnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHRvOiBpbmZvcm1hdGlvbi5maWx0ZXJbZmlsdGVyLmZpZWxkXT8udG8gPz8gZmlsdGVyLmRlZmF1bHQ/LnRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaW5mb3JtYXRpb24uZmlsdGVyW2ZpbHRlci5maWVsZF0gPSBpbmZvcm1hdGlvbi5maWx0ZXJbZmlsdGVyLmZpZWxkXSA/PyBmaWx0ZXIuZGVmYXVsdCA/PyB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmlsdGVyID0gKGFyZ3M6IHtcclxuICAgIGZpbHRlcjogYW55LFxyXG4gICAgZmlsdGVyRGVmOiBhbnlcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGZpbHRlciwgZmlsdGVyRGVmIH0gPSBhcmdzO1xyXG4gICAgdGhpcy5pbmZvcm1hdGlvbiA9IHtcclxuICAgICAgLi4udGhpcy5pbmZvcm1hdGlvbixcclxuICAgICAgZmlsdGVyOiB7IC4uLmZpbHRlciB9LFxyXG4gICAgICBmaWx0ZXJEZWY6IHsgLi4uZmlsdGVyRGVmIH1cclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZmlsdGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTZELGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLGVBQWUsRUFBdUIsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFFLE9BQU8sRUFBTyxTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFPdkUsTUFBTSxPQUFPLFFBQVE7SUFrQm5CLFlBQ1UsYUFBb0MsRUFDcEMsY0FBZ0MsRUFDaEMsYUFBOEI7UUFGOUIsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFwQnhDLGtCQUFVLHNDQUFzQyxFQUFDO1FBVWpELCtCQUF1QixJQUFJLGVBQWUsQ0FBaUIsSUFBSSxDQUFDLEVBQUM7UUFDakUsd0JBQWdCLElBQUksWUFBWSxFQUFFLEVBQUM7UUFDSSxpQkFBWSxHQUFHLElBQUksU0FBUyxFQUF3QixDQUFDO1FBQzVGLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6Qixr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QUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUN6RSxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDO2dCQUNyQywyQ0FBQSxJQUFJLEVBQVMsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBaURELFdBQVc7UUFDVCw0Q0FBbUIsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OztZQXhJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLGl3S0FBc0M7O2FBRXZDOzs7WUFWUSxxQkFBcUI7WUFJVixnQkFBZ0I7WUFEM0IsZUFBZTs7OzRCQVlyQixLQUFLLFNBQUMsUUFBUTsyQkFTZCxlQUFlLFNBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgKiBhcyBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFNkRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLWZpbHRlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRmlsdGVyLCBTZEZpbHRlckluZm9ybWF0aW9uLCBGaWx0ZXJPYmplY3QsIFNkRmlsdGVyT3B0aW9uLCBTZFF1aWNrRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL2ZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RTZXR0aW5nLCBTZFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9zZXR0aW5nJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RGaWx0ZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICNwcmVmaXggPSAnNjFkMjJlOGUtZWVlOC00YWFkLThlMWMtMDQ0YTUzMmZlYTkxJztcclxuICBzZXR0aW5nOiBTZFNldHRpbmc8U2RGaWx0ZXJJbmZvcm1hdGlvbj47XHJcbiAgZmlsdGVyT3B0aW9uOiBTZEZpbHRlck9wdGlvbjtcclxuICBASW5wdXQoJ29wdGlvbicpIHNldCBfZmlsdGVyT3B0aW9uKG9wdGlvbjogU2RGaWx0ZXJPcHRpb24pIHtcclxuICAgIGNvbnNvbGUubG9nKG9wdGlvbik7XHJcbiAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICB0aGlzLiNmaWx0ZXJPcHRpb25DaGFuZ2VzLm5leHQob3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcbiAgI2ZpbHRlck9wdGlvbkNoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNkRmlsdGVyT3B0aW9uPihudWxsKTtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RGaWx0ZXJEZWZEaXJlY3RpdmUpIHNkRmlsdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RGaWx0ZXJEZWZEaXJlY3RpdmU+KCk7XHJcbiAgaXNNb2JpbGVPclRhYmxldCA9IGZhbHNlO1xyXG4gIGZpbHRlckNoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlck9iamVjdD4oe30pO1xyXG4gIGZpbHRlckluZm9ybWF0aW9uOiBPYnNlcnZhYmxlPFNkRmlsdGVySW5mb3JtYXRpb24+O1xyXG4gIGluZm9ybWF0aW9uOiBTZEZpbHRlckluZm9ybWF0aW9uO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNldHRpbmdTZXJ2aWNlOiBTZFNldHRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBTZEZpbHRlclNlcnZpY2UpIHtcclxuICAgIHRoaXMuaXNNb2JpbGVPclRhYmxldCA9ICF0aGlzLmRldmljZVNlcnZpY2UuaXNEZXNrdG9wKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIGlmICghdGhpcy4ja2V5KSB7XHJcbiAgICAvLyAgIHRoaXMuc2V0dGluZyA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPFNkRmlsdGVySW5mb3JtYXRpb24+KHV1aWQudjQoKSwge1xyXG4gICAgLy8gICAgIHR5cGU6ICdzZXNzaW9uJyxcclxuICAgIC8vICAgICBkZWZhdWx0OiB7XHJcbiAgICAvLyAgICAgICBmaWx0ZXI6IHt9LFxyXG4gICAgLy8gICAgICAgdmlzaWJsZToge30sXHJcbiAgICAvLyAgICAgICBxdWlja0ZpbHRlcnM6IFtdLFxyXG4gICAgLy8gICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogbnVsbFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLnNldHRpbmcgPSB0aGlzLnNldHRpbmdTZXJ2aWNlLmNyZWF0ZTxTZEZpbHRlckluZm9ybWF0aW9uPih0aGlzLiNrZXksIHtcclxuICAgIC8vICAgICBkZWZhdWx0OiB7XHJcbiAgICAvLyAgICAgICBmaWx0ZXI6IHt9LFxyXG4gICAgLy8gICAgICAgdmlzaWJsZToge30sXHJcbiAgICAvLyAgICAgICBxdWlja0ZpbHRlcnM6IFtdLFxyXG4gICAgLy8gICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogbnVsbFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuI2ZpbHRlck9wdGlvbkNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5maWx0ZXJPcHRpb24pKS5zdWJzY3JpYmUoKGZpbHRlck9wdGlvbikgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhmaWx0ZXJPcHRpb24pO1xyXG4gICAgICBpZiAoIWZpbHRlck9wdGlvbikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkZWZhdWx0SW5mb3JtYXRpb246IFNkRmlsdGVySW5mb3JtYXRpb24gPSB7XHJcbiAgICAgICAgZmlsdGVyOiB7fSxcclxuICAgICAgICB2aXNpYmxlOiB7fSxcclxuICAgICAgICBxdWlja0ZpbHRlcnM6IGZpbHRlck9wdGlvbj8ucXVpY2tGaWx0ZXI/LmRlZmF1bHRzIHx8IFtdLFxyXG4gICAgICAgIHNlbGVjdGVkUXVpY2tGaWx0ZXI6IGZpbHRlck9wdGlvbj8ucXVpY2tGaWx0ZXI/LnNlbGVjdGVkRGVmYXVsdFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoIWZpbHRlck9wdGlvbi5rZXkpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcgPSB0aGlzLnNldHRpbmdTZXJ2aWNlLmNyZWF0ZTxTZEZpbHRlckluZm9ybWF0aW9uPih1dWlkLnY0KCksIHtcclxuICAgICAgICAgIHR5cGU6ICdzZXNzaW9uJyxcclxuICAgICAgICAgIGRlZmF1bHQ6IGRlZmF1bHRJbmZvcm1hdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZyA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPFNkRmlsdGVySW5mb3JtYXRpb24+KHtcclxuICAgICAgICAgIHByZWZpeDogdGhpcy4jcHJlZml4LFxyXG4gICAgICAgICAga2V5OiBmaWx0ZXJPcHRpb24ua2V5XHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgZGVmYXVsdDogZGVmYXVsdEluZm9ybWF0aW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbmZvcm1hdGlvbiA9IHRoaXMuc2V0dGluZy5nZXQoKTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5pbmZvcm1hdGlvbik7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZXR0aW5nLm9ic2VydmVyLnN1YnNjcmliZShmaWx0ZXJJbmZvcm1hdGlvbiA9PiB7XHJcbiAgICAgICAgdGhpcy5pbmZvcm1hdGlvbiA9IGZpbHRlckluZm9ybWF0aW9uO1xyXG4gICAgICAgIHRoaXMuI2Zvcm1hdChmaWx0ZXJPcHRpb24/LmZpbHRlcnMsIHRoaXMuaW5mb3JtYXRpb24pO1xyXG4gICAgICB9KSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlciA9IChmaWx0ZXI/OiBGaWx0ZXIpID0+IHtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlcy5uZXh0KHtcclxuICAgICAgZmlsdGVyOiB7IC4uLnRoaXMuaW5mb3JtYXRpb24uZmlsdGVyIH0sXHJcbiAgICAgIGZpbHRlckRlZjogeyAuLi50aGlzLmluZm9ybWF0aW9uLmZpbHRlckRlZiB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldHRpbmcuc2V0KHRoaXMuaW5mb3JtYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhciA9ICgpID0+IHtcclxuICAgIHRoaXMuaW5mb3JtYXRpb24uZmlsdGVyID0ge307XHJcbiAgICB0aGlzLmluZm9ybWF0aW9uLmZpbHRlckRlZiA9IHt9O1xyXG4gICAgdGhpcy5vbkZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgI2Zvcm1hdCA9IChmaWx0ZXJzOiBGaWx0ZXJbXSwgaW5mb3JtYXRpb246IFNkRmlsdGVySW5mb3JtYXRpb24pID0+IHtcclxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcclxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICAgIGluZm9ybWF0aW9uLmZpbHRlcltmaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogaW5mb3JtYXRpb24uZmlsdGVyW2ZpbHRlci5maWVsZF0/LmZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGluZm9ybWF0aW9uLmZpbHRlcltmaWx0ZXIuZmllbGRdPy50byA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGluZm9ybWF0aW9uLmZpbHRlcltmaWx0ZXIuZmllbGRdID0gaW5mb3JtYXRpb24uZmlsdGVyW2ZpbHRlci5maWVsZF0gPz8gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjZmlyc3RMb2FkID0gKGZpbHRlcnM6IEZpbHRlcltdLCBpbmZvcm1hdGlvbjogU2RGaWx0ZXJJbmZvcm1hdGlvbikgPT4ge1xyXG4gICAgaWYgKGluZm9ybWF0aW9uLnNlbGVjdGVkUXVpY2tGaWx0ZXIgJiYgaW5mb3JtYXRpb24ucXVpY2tGaWx0ZXJzLnNvbWUoZSA9PiBlLmNvZGUgPT09IGluZm9ybWF0aW9uLnNlbGVjdGVkUXVpY2tGaWx0ZXIpKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gaW5mb3JtYXRpb24ucXVpY2tGaWx0ZXJzLmZpbmQoZSA9PiBlLmNvZGUgPT09IGluZm9ybWF0aW9uLnNlbGVjdGVkUXVpY2tGaWx0ZXIpO1xyXG4gICAgICBpbmZvcm1hdGlvbi5maWx0ZXIgPSB7IC4uLnNlbGVjdGVkLmZpbHRlciB9O1xyXG4gICAgICBpbmZvcm1hdGlvbi5maWx0ZXJEZWYgPSB7IC4uLnNlbGVjdGVkLmZpbHRlckRlZiB9O1xyXG4gICAgICB0aGlzLiNmb3JtYXQoZmlsdGVycywgaW5mb3JtYXRpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ2RhdGVyYW5nZScpIHtcclxuICAgICAgICAgIGluZm9ybWF0aW9uLmZpbHRlcltmaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgICBmcm9tOiBpbmZvcm1hdGlvbi5maWx0ZXJbZmlsdGVyLmZpZWxkXT8uZnJvbSA/PyBmaWx0ZXIuZGVmYXVsdD8uZnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHRvOiBpbmZvcm1hdGlvbi5maWx0ZXJbZmlsdGVyLmZpZWxkXT8udG8gPz8gZmlsdGVyLmRlZmF1bHQ/LnRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaW5mb3JtYXRpb24uZmlsdGVyW2ZpbHRlci5maWVsZF0gPSBpbmZvcm1hdGlvbi5maWx0ZXJbZmlsdGVyLmZpZWxkXSA/PyBmaWx0ZXIuZGVmYXVsdCA/PyB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmlsdGVyID0gKGFyZ3M6IHtcclxuICAgIGZpbHRlcjogYW55LFxyXG4gICAgZmlsdGVyRGVmOiBhbnlcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGZpbHRlciwgZmlsdGVyRGVmIH0gPSBhcmdzO1xyXG4gICAgdGhpcy5pbmZvcm1hdGlvbiA9IHtcclxuICAgICAgLi4udGhpcy5pbmZvcm1hdGlvbixcclxuICAgICAgZmlsdGVyOiB7IC4uLmZpbHRlciB9LFxyXG4gICAgICBmaWx0ZXJEZWY6IHsgLi4uZmlsdGVyRGVmIH1cclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -5,6 +5,7 @@ import { switchMap, map, catchError, timeout, take } from 'rxjs/operators';
5
5
  import hash from 'object-hash';
6
6
  import { SdCacheService } from '@sd-angular/core/cache';
7
7
  import { __awaiter, __classPrivateFieldGet } from 'tslib';
8
+ import $ from 'jquery';
8
9
  import { v4 } from 'uuid';
9
10
 
10
11
  const API_CONFIG = new InjectionToken('api.configuration');
@@ -133,6 +134,7 @@ class SdApiService {
133
134
  this.configuration = configuration;
134
135
  this.cacheService = cacheService;
135
136
  this.tokenService = tokenService;
137
+ this.uploadId = 'U118fefb1-3085-4641-8cb8-f7fe5c28f509';
136
138
  _timeout.set(this, 120000); // 120s
137
139
  _cacheDuration.set(this, 2000); // 2s
138
140
  _cache.set(this, {});
@@ -335,6 +337,25 @@ class SdApiService {
335
337
  }
336
338
  return get();
337
339
  });
340
+ this.uploadSingle = (url, option) => {
341
+ return new Promise((resolve, reject) => {
342
+ if ($(`#${this.uploadId}`).length) {
343
+ $('body').children(`#${this.uploadId}`).remove();
344
+ }
345
+ $('body').append(`<input id='${this.uploadId}' style='display: none' type='file' />`);
346
+ $(`#${this.uploadId}`).on('change', (evt) => {
347
+ try {
348
+ const target = evt.target;
349
+ const fileToUpload = target.files.item(0);
350
+ this.upload(url, fileToUpload, option).then(resolve).catch(reject);
351
+ }
352
+ catch (error) {
353
+ reject(error);
354
+ }
355
+ });
356
+ $(`#${this.uploadId}`).trigger('click');
357
+ });
358
+ };
338
359
  this.upload = (url, file, option) => __awaiter(this, void 0, void 0, function* () {
339
360
  var _c;
340
361
  const lastDot = file.name.lastIndexOf('.');
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-api.js","sources":["../../../../projects/sd-core/api/src/lib/api.model.ts","../../../../projects/sd-core/api/src/lib/token.service.ts","../../../../projects/sd-core/api/src/lib/http.interceptor.ts","../../../../projects/sd-core/api/src/lib/api.module.ts","../../../../projects/sd-core/api/src/lib/api.service.ts","../../../../projects/sd-core/api/src/lib/http.service.ts","../../../../projects/sd-core/api/src/public-api.ts","../../../../projects/sd-core/api/sd-angular-core-api.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { HttpErrorResponse, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport hash from 'object-hash';\r\n\r\nexport interface IApiConfiguration {\r\n host?: string;\r\n tokenHeader?: string;\r\n customHeaders?: (args?: { url?: string }) => HttpHeaders;\r\n beforeRemote?: (request: HttpRequest<any>) => void | Promise<void>;\r\n afterRemote?: (response: HttpResponse<any> | HttpErrorResponse) => void | Promise<void>;\r\n translate?: (value: string) => string;\r\n}\r\n\r\nexport const API_CONFIG = new InjectionToken<IApiConfiguration>('api.configuration');\r\n\r\nexport const TOKEN = hash({\r\n origin: location.origin,\r\n key: 'ed4a2ffc-af43-41fb-9ac9-970f43d99571'\r\n});","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { IApiConfiguration, API_CONFIG, TOKEN } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTokenService {\r\n\r\n get token() {\r\n const { get } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n return get();\r\n }\r\n\r\n set = (token: string) => {\r\n const { set } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n set(token);\r\n }\r\n\r\n clear = () => {\r\n const { remove } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n remove();\r\n }\r\n\r\n customHeaders = (args?: { url?: string }) => {\r\n return this.configuration?.customHeaders?.(args) || null;\r\n }\r\n\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService) {\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { from, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { API_CONFIG, IApiConfiguration } from './api.model';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable()\r\nexport class SdHttpInterceptor implements HttpInterceptor {\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private tokenService: SdTokenService\r\n ) { }\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (this.configuration?.tokenHeader && this.tokenService.token) {\r\n request = request.clone({ headers: request.headers.set(this.configuration.tokenHeader, this.tokenService.token) });\r\n }\r\n\r\n if (!request.url.startsWith('http')) {\r\n request = request.clone({\r\n url: (this.configuration?.host || location.host) + request.url\r\n });\r\n }\r\n if (request.body instanceof FormData) {\r\n request = request.clone({\r\n headers: request.headers.delete('Content-Type')\r\n });\r\n }\r\n const beforeRemote = this.configuration?.beforeRemote?.(request);\r\n if (beforeRemote instanceof Promise) {\r\n return from(beforeRemote).pipe(\r\n switchMap(() => next.handle(request)),\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n return next.handle(request).pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { SdHttpInterceptor } from './http.interceptor';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpClientModule,\r\n ],\r\n exports: [\r\n HttpClientModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: SdHttpInterceptor, multi: true }\r\n ],\r\n})\r\nexport class SdApiModule { }\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { take, timeout } from 'rxjs/operators';\r\nimport { IApiConfiguration, API_CONFIG } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\nimport { SdTokenService } from './token.service';\r\nimport { Subject } from 'rxjs';\r\nimport hash from 'object-hash';\r\nimport * as uuid from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdApiService {\r\n #timeout = 120000; // 120s\r\n #cacheDuration = 2000; // 2s\r\n #cache: {\r\n [key: string]: {\r\n createdDate: Date;\r\n subject: Subject<any>;\r\n response?: {\r\n status?: 'success' | 'error';\r\n result: any,\r\n }\r\n }\r\n } = {};\r\n\r\n private translate = (value: string): string => {\r\n return this.configuration?.translate(value) || value;\r\n }\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n post = async <T = any>(url: string, body?: any, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n let hashKey = uuid.v4();\r\n if (!(body instanceof FormData)) {\r\n hashKey = hash({\r\n url,\r\n headers,\r\n body\r\n });\r\n }\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject(),\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'body',\r\n headers,\r\n responseType: options?.responseType as any\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n postCache = async <T = any>(url: string, body?: any, options?: {\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const { get, set, has } = this.cacheService.create({\r\n url,\r\n headers,\r\n body\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has()) {\r\n const result = await this.post(url, body, options?.headers);\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n put<T = any>(url: string, body?: any, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.put(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n #defineParams = (request: any) => {\r\n const rq = [];\r\n for (const [key, value] of Object.entries(request)) {\r\n if (value || value === 0) {\r\n rq.push(\r\n `${encodeURIComponent(key as string)}=${encodeURIComponent(\r\n value as string\r\n )}`\r\n );\r\n }\r\n }\r\n return `?${rq?.join('&')}`;\r\n }\r\n\r\n getWithParams = <T = any>(url: string, params: any, options?: {\r\n headers?: HttpHeaders,\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n return this.get(`${url}${this.#defineParams(params)}`, options?.headers, { ...options, encodeURI: false });\r\n }\r\n\r\n getCacheWithParams = <T = any>(url: string, params: any, headers?: HttpHeaders, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n return this.getCache(`${url}${this.#defineParams(params)}`, { ...options, headers, encodeURI: false });\r\n }\r\n\r\n get = <T = any>(url: string, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n // const hashKey = hash({\r\n // encodedUrl,\r\n // headers\r\n // });\r\n const hashKey = hash({\r\n encodedUrl,\r\n headers\r\n });\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject()\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.get(encodedUrl, { observe: 'body', headers, responseType: options?.responseType as any })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.get(encodedUrl, { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n getCache = async <T = any>(url: string, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n const { get, set, has } = this.cacheService.create({\r\n encodedUrl,\r\n headers\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has() || options?.reload) {\r\n const result = await this.get(encodedUrl, options?.headers, { encodeURI: false });\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n delete<T = any>(url: string, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.delete(encodeURI(url), { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout))\r\n .toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n upload = async (url: string, file: File, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }) => {\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n const message = this.translate(`Invalid file extension`);\r\n throw new Error(message);\r\n }\r\n const extension = file.name.substring(lastDot + 1);\r\n if (option) {\r\n if (option.extensions?.length && !option.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {\r\n const message = `[${file.name}] ${this.translate('Uploaded file is not match extension')} ${option.extensions.join(', ')}`;\r\n throw new Error(message);\r\n }\r\n if (option.maxSizeInMb > 0 && option.maxSizeInMb * 1024 * 1024 < file.size) {\r\n const message = `[${file.name}] ${this.translate('Max file size')} ${option.maxSizeInMb} Mbs`;\r\n throw new Error(message);\r\n }\r\n if (option.validator && option.validator(file.name)) {\r\n const message = option.validator(file.name);\r\n throw new Error(message);\r\n }\r\n }\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, file.name);\r\n return await this.post(url, formData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdHttpService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n get =<T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.get<T>(url, option);\r\n }\r\n\r\n post = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.post<T>(url, body, option);\r\n }\r\n\r\n put = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.put<T>(url, body, option);\r\n }\r\n\r\n delete = <T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.delete<T>(url, option);\r\n }\r\n\r\n request = <T = any>(method: string, url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.request<T>(method, url, option);\r\n }\r\n}\r\n\r\ninterface ObservableOption {\r\n body?: any;\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'body';\r\n params?: HttpParams | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType?: 'json';\r\n withCredentials?: boolean;\r\n}","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/api.module';\r\nexport * from './lib/token.service';\r\nexport * from './lib/api.model';\r\nexport * from './lib/api.service';\r\nexport * from './lib/http.service';\r\nexport * from './lib/http.interceptor';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-api.js","sources":["../../../../projects/sd-core/api/src/lib/api.model.ts","../../../../projects/sd-core/api/src/lib/token.service.ts","../../../../projects/sd-core/api/src/lib/http.interceptor.ts","../../../../projects/sd-core/api/src/lib/api.module.ts","../../../../projects/sd-core/api/src/lib/api.service.ts","../../../../projects/sd-core/api/src/lib/http.service.ts","../../../../projects/sd-core/api/src/public-api.ts","../../../../projects/sd-core/api/sd-angular-core-api.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { HttpErrorResponse, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport hash from 'object-hash';\r\n\r\nexport interface IApiConfiguration {\r\n host?: string;\r\n tokenHeader?: string;\r\n customHeaders?: (args?: { url?: string }) => HttpHeaders;\r\n beforeRemote?: (request: HttpRequest<any>) => void | Promise<void>;\r\n afterRemote?: (response: HttpResponse<any> | HttpErrorResponse) => void | Promise<void>;\r\n translate?: (value: string) => string;\r\n}\r\n\r\nexport const API_CONFIG = new InjectionToken<IApiConfiguration>('api.configuration');\r\n\r\nexport const TOKEN = hash({\r\n origin: location.origin,\r\n key: 'ed4a2ffc-af43-41fb-9ac9-970f43d99571'\r\n});","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { IApiConfiguration, API_CONFIG, TOKEN } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTokenService {\r\n\r\n get token() {\r\n const { get } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n return get();\r\n }\r\n\r\n set = (token: string) => {\r\n const { set } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n set(token);\r\n }\r\n\r\n clear = () => {\r\n const { remove } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n remove();\r\n }\r\n\r\n customHeaders = (args?: { url?: string }) => {\r\n return this.configuration?.customHeaders?.(args) || null;\r\n }\r\n\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService) {\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { from, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { API_CONFIG, IApiConfiguration } from './api.model';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable()\r\nexport class SdHttpInterceptor implements HttpInterceptor {\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private tokenService: SdTokenService\r\n ) { }\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (this.configuration?.tokenHeader && this.tokenService.token) {\r\n request = request.clone({ headers: request.headers.set(this.configuration.tokenHeader, this.tokenService.token) });\r\n }\r\n\r\n if (!request.url.startsWith('http')) {\r\n request = request.clone({\r\n url: (this.configuration?.host || location.host) + request.url\r\n });\r\n }\r\n if (request.body instanceof FormData) {\r\n request = request.clone({\r\n headers: request.headers.delete('Content-Type')\r\n });\r\n }\r\n const beforeRemote = this.configuration?.beforeRemote?.(request);\r\n if (beforeRemote instanceof Promise) {\r\n return from(beforeRemote).pipe(\r\n switchMap(() => next.handle(request)),\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n return next.handle(request).pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { SdHttpInterceptor } from './http.interceptor';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpClientModule,\r\n ],\r\n exports: [\r\n HttpClientModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: SdHttpInterceptor, multi: true }\r\n ],\r\n})\r\nexport class SdApiModule { }\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { take, timeout } from 'rxjs/operators';\r\nimport $ from 'jquery';\r\nimport { IApiConfiguration, API_CONFIG } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\nimport { SdTokenService } from './token.service';\r\nimport { Subject } from 'rxjs';\r\nimport hash from 'object-hash';\r\nimport * as uuid from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdApiService {\r\n private uploadId = 'U118fefb1-3085-4641-8cb8-f7fe5c28f509';\r\n\r\n #timeout = 120000; // 120s\r\n\r\n #cacheDuration = 2000; // 2s\r\n #cache: {\r\n [key: string]: {\r\n createdDate: Date;\r\n subject: Subject<any>;\r\n response?: {\r\n status?: 'success' | 'error';\r\n result: any,\r\n }\r\n }\r\n } = {};\r\n\r\n private translate = (value: string): string => {\r\n return this.configuration?.translate(value) || value;\r\n }\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n post = async <T = any>(url: string, body?: any, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n let hashKey = uuid.v4();\r\n if (!(body instanceof FormData)) {\r\n hashKey = hash({\r\n url,\r\n headers,\r\n body\r\n });\r\n }\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject(),\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'body',\r\n headers,\r\n responseType: options?.responseType as any\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n postCache = async <T = any>(url: string, body?: any, options?: {\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const { get, set, has } = this.cacheService.create({\r\n url,\r\n headers,\r\n body\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has()) {\r\n const result = await this.post(url, body, options?.headers);\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n put<T = any>(url: string, body?: any, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.put(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n #defineParams = (request: any) => {\r\n const rq = [];\r\n for (const [key, value] of Object.entries(request)) {\r\n if (value || value === 0) {\r\n rq.push(\r\n `${encodeURIComponent(key as string)}=${encodeURIComponent(\r\n value as string\r\n )}`\r\n );\r\n }\r\n }\r\n return `?${rq?.join('&')}`;\r\n }\r\n\r\n getWithParams = <T = any>(url: string, params: any, options?: {\r\n headers?: HttpHeaders,\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n return this.get(`${url}${this.#defineParams(params)}`, options?.headers, { ...options, encodeURI: false });\r\n }\r\n\r\n getCacheWithParams = <T = any>(url: string, params: any, headers?: HttpHeaders, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n return this.getCache(`${url}${this.#defineParams(params)}`, { ...options, headers, encodeURI: false });\r\n }\r\n\r\n get = <T = any>(url: string, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n // const hashKey = hash({\r\n // encodedUrl,\r\n // headers\r\n // });\r\n const hashKey = hash({\r\n encodedUrl,\r\n headers\r\n });\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject()\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.get(encodedUrl, { observe: 'body', headers, responseType: options?.responseType as any })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.get(encodedUrl, { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n getCache = async <T = any>(url: string, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n const { get, set, has } = this.cacheService.create({\r\n encodedUrl,\r\n headers\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has() || options?.reload) {\r\n const result = await this.get(encodedUrl, options?.headers, { encodeURI: false });\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n delete<T = any>(url: string, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.delete(encodeURI(url), { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout))\r\n .toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n uploadSingle = (url: string, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }): Promise<any> => {\r\n return new Promise((resolve, reject) => {\r\n if ($(`#${this.uploadId}`).length) {\r\n $('body').children(`#${this.uploadId}`).remove();\r\n }\r\n $('body').append(`<input id='${this.uploadId}' style='display: none' type='file' />`);\r\n $(`#${this.uploadId}`).on('change', (evt: any) => {\r\n try {\r\n const target: DataTransfer = evt.target;\r\n const fileToUpload = target.files.item(0);\r\n this.upload(url, fileToUpload, option).then(resolve).catch(reject);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n $(`#${this.uploadId}`).trigger('click');\r\n });\r\n }\r\n\r\n upload = async (url: string, file: File, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }) => {\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n const message = this.translate(`Invalid file extension`);\r\n throw new Error(message);\r\n }\r\n const extension = file.name.substring(lastDot + 1);\r\n if (option) {\r\n if (option.extensions?.length && !option.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {\r\n const message = `[${file.name}] ${this.translate('Uploaded file is not match extension')} ${option.extensions.join(', ')}`;\r\n throw new Error(message);\r\n }\r\n if (option.maxSizeInMb > 0 && option.maxSizeInMb * 1024 * 1024 < file.size) {\r\n const message = `[${file.name}] ${this.translate('Max file size')} ${option.maxSizeInMb} Mbs`;\r\n throw new Error(message);\r\n }\r\n if (option.validator && option.validator(file.name)) {\r\n const message = option.validator(file.name);\r\n throw new Error(message);\r\n }\r\n }\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, file.name);\r\n return await this.post(url, formData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdHttpService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n get =<T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.get<T>(url, option);\r\n }\r\n\r\n post = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.post<T>(url, body, option);\r\n }\r\n\r\n put = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.put<T>(url, body, option);\r\n }\r\n\r\n delete = <T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.delete<T>(url, option);\r\n }\r\n\r\n request = <T = any>(method: string, url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.request<T>(method, url, option);\r\n }\r\n}\r\n\r\ninterface ObservableOption {\r\n body?: any;\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'body';\r\n params?: HttpParams | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType?: 'json';\r\n withCredentials?: boolean;\r\n}","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/api.module';\r\nexport * from './lib/token.service';\r\nexport * from './lib/api.model';\r\nexport * from './lib/api.service';\r\nexport * from './lib/http.service';\r\nexport * from './lib/http.interceptor';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}