kwikid-forms 0.6.43 → 0.6.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/bundles/kwikid-forms.umd.js +1020 -835
  2. package/bundles/kwikid-forms.umd.js.map +1 -1
  3. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.component.js +22 -32
  4. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.definitions.js +2 -1
  5. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.helper.js +2 -4
  6. package/esm2015/lib/builder/builder-form-editor/builder.form-editor.constants.js +5 -5
  7. package/esm2015/lib/builder/builder-form-editor/builder.form-editor.service.js +6 -5
  8. package/esm2015/lib/builder/builder-form-list/builder-forms-list.component.js +4 -6
  9. package/esm2015/lib/builder/builder.component.js +43 -53
  10. package/esm2015/lib/builder/builder.helper.js +11 -13
  11. package/esm2015/lib/renderer/config-converter/config-converter.constants.js +22 -7
  12. package/esm2015/lib/renderer/config-converter/config-converter.helper.js +9 -10
  13. package/esm2015/lib/renderer/config-converter/config-converter.js +61 -37
  14. package/esm2015/lib/renderer/form-view/definitions/form-view.actions.definition.js +1 -1
  15. package/esm2015/lib/renderer/form-view/definitions/form-view.apis.definition.js +1 -1
  16. package/esm2015/lib/renderer/form-view/definitions/form-view.commons.definition.js +2 -1
  17. package/esm2015/lib/renderer/form-view/definitions/form-view.fields.definition.js +2 -1
  18. package/esm2015/lib/renderer/form-view/definitions/form-view.logs.definition.js +2 -1
  19. package/esm2015/lib/renderer/form-view/form-view.api.service.js +25 -24
  20. package/esm2015/lib/renderer/form-view/form-view.component.js +456 -292
  21. package/esm2015/lib/renderer/form-view/form-view.constants.js +17 -0
  22. package/esm2015/lib/renderer/form-view/form-view.module.js +15 -3
  23. package/esm2015/lib/renderer/form-view/form-view.service.js +6 -7
  24. package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +44 -58
  25. package/esm2015/lib/renderer/form-view/helpers/form-view.camera.helper.js +16 -20
  26. package/esm2015/lib/renderer/form-view/helpers/form-view.defaults.helper.js +36 -97
  27. package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +95 -92
  28. package/esm2015/lib/renderer/form-view/helpers/form-view.form-validations.helper.js +23 -22
  29. package/esm2015/lib/renderer/form-view/helpers/form-view.tasks.helper.js +5 -5
  30. package/esm2015/lib/renderer/form-view/pipes/filter-image-url-or-base64-from-object.pipe.js +34 -0
  31. package/esm2015/lib/renderer/form-view/pipes/filter-video-url-or-base64-from-object.pipe.js +30 -0
  32. package/esm2015/lib/renderer/forms-list/forms-list.component.js +31 -39
  33. package/esm2015/lib/renderer/forms-list/forms-list.definitions.js +2 -1
  34. package/esm2015/lib/renderer/renderer.actions.definitions.js +1 -1
  35. package/esm2015/lib/renderer/renderer.component.js +87 -113
  36. package/esm2015/lib/renderer/renderer.definitions.js +2 -1
  37. package/esm2015/lib/renderer/renderer.helper.js +2 -4
  38. package/fesm2015/kwikid-forms.js +1063 -922
  39. package/fesm2015/kwikid-forms.js.map +1 -1
  40. package/lib/builder/builder-form-editor/builder-form-editor.component.d.ts +4 -5
  41. package/lib/builder/builder-form-editor/builder.form-editor.service.d.ts +0 -1
  42. package/lib/builder/builder-form-list/builder-forms-list.component.d.ts +3 -5
  43. package/lib/renderer/config-converter/config-converter.constants.d.ts +21 -6
  44. package/lib/renderer/config-converter/config-converter.helper.d.ts +1 -0
  45. package/lib/renderer/form-view/definitions/form-view.fields.definition.d.ts +45 -25
  46. package/lib/renderer/form-view/form-view.api.service.d.ts +0 -1
  47. package/lib/renderer/form-view/form-view.component.d.ts +13 -13
  48. package/lib/renderer/form-view/form-view.constants.d.ts +16 -0
  49. package/lib/renderer/form-view/form-view.module.d.ts +10 -8
  50. package/lib/renderer/form-view/form-view.service.d.ts +1 -2
  51. package/lib/renderer/form-view/helpers/form-view.camera.helper.d.ts +5 -7
  52. package/lib/renderer/form-view/helpers/form-view.defaults.helper.d.ts +4 -6
  53. package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +1 -1
  54. package/lib/renderer/form-view/helpers/form-view.form-validations.helper.d.ts +1 -2
  55. package/lib/renderer/form-view/helpers/form-view.tasks.helper.d.ts +1 -1
  56. package/lib/renderer/form-view/pipes/filter-image-url-or-base64-from-object.pipe.d.ts +7 -0
  57. package/lib/renderer/form-view/pipes/filter-video-url-or-base64-from-object.pipe.d.ts +7 -0
  58. package/lib/renderer/forms-list/forms-list.component.d.ts +1 -2
  59. package/package.json +1 -1
@@ -1,37 +1,33 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
2
  import { checkObjectKeyExists, logMethod, Source } from "kwikid-toolkit";
3
3
  export class CameraHelper {
4
- constructor(field, formFields, allFormsData, formData, previousFormData, extraData) {
5
- this.cameraData = {};
4
+ constructor(field, object) {
5
+ this.activeCameraData = {};
6
6
  this._field = field;
7
- this._formFields = formFields;
8
- this._allFormsData = allFormsData;
9
- this._formData = formData;
10
- this._previousFormData = previousFormData;
11
- this._extraData = extraData;
7
+ this._object = object;
8
+ }
9
+ get object() {
10
+ return this._object;
11
+ }
12
+ set object(value) {
13
+ this._object = value;
12
14
  }
13
15
  getCameraWatermarkData() {
16
+ var _a, _b;
14
17
  return __awaiter(this, void 0, void 0, function* () {
15
- const sources = this._field.properties["watermarkDataSources"];
16
- for (let source of sources) {
17
- const sources = new Source({
18
- FIELD_CONFIG: this._field,
19
- FORM_FIELDS: this._formFields,
20
- FORM_DATA: this._formData,
21
- PREVIOUS_FORM_DATA: this._previousFormData,
22
- ALL_FORMS_DATA: this._allFormsData,
23
- EXTRA_DATA: this._extraData
24
- });
18
+ const sources = (_b = (_a = this._field.properties.features) === null || _a === void 0 ? void 0 : _a.watermark) === null || _b === void 0 ? void 0 : _b.sources;
19
+ for (const source of sources) {
20
+ const sources = new Source(Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field }));
25
21
  const value = yield sources.getValueFromSource(source);
26
22
  if (checkObjectKeyExists(source, "id")) {
27
- this.cameraData[source.id] = value;
23
+ this.activeCameraData[source.id] = value;
28
24
  }
29
25
  }
30
- return this.cameraData;
26
+ return this.activeCameraData;
31
27
  });
32
28
  }
33
29
  }
34
30
  __decorate([
35
31
  logMethod
36
32
  ], CameraHelper.prototype, "getCameraWatermarkData", null);
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmNhbWVyYS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvaGVscGVycy9mb3JtLXZpZXcuY2FtZXJhLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU16RSxNQUFNLE9BQU8sWUFBWTtJQVN2QixZQUNFLEtBQW9CLEVBQ3BCLFVBQWlCLEVBQ2pCLFlBQWlCLEVBQ2pCLFFBQWEsRUFDYixnQkFBcUIsRUFDckIsU0FBYztRQVJSLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFVM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFHSyxzQkFBc0I7O1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFFL0QsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDO29CQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztvQkFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCO29CQUMxQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWE7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtpQkFDNUIsQ0FBQyxDQUFDO2dCQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUV2RCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO2lCQUNwQzthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLENBQUM7S0FBQTtDQUNGO0FBckJDO0lBREMsU0FBUzswREFxQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja09iamVjdEtleUV4aXN0cywgbG9nTWV0aG9kLCBTb3VyY2UgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7XG4gIFRGaWVsZCxcbiAgVEZpZWxkQ2FwdHVyZVxufSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZm9ybS12aWV3LmZpZWxkcy5kZWZpbml0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBDYW1lcmFIZWxwZXIge1xuICBwcml2YXRlIF9hbGxGb3Jtc0RhdGE6IGFueTtcbiAgcHJpdmF0ZSBfZmllbGQ6IFRGaWVsZDtcbiAgcHJpdmF0ZSBfZm9ybUZpZWxkczogYW55W107XG4gIHByaXZhdGUgX2Zvcm1EYXRhOiBhbnk7XG4gIHByaXZhdGUgX3ByZXZpb3VzRm9ybURhdGE6IGFueTtcbiAgcHJpdmF0ZSBfZXh0cmFEYXRhOiBhbnk7XG4gIHByaXZhdGUgY2FtZXJhRGF0YTogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZmllbGQ6IFRGaWVsZENhcHR1cmUsXG4gICAgZm9ybUZpZWxkczogYW55W10sXG4gICAgYWxsRm9ybXNEYXRhOiBhbnksXG4gICAgZm9ybURhdGE6IGFueSxcbiAgICBwcmV2aW91c0Zvcm1EYXRhOiBhbnksXG4gICAgZXh0cmFEYXRhOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5fZmllbGQgPSBmaWVsZDtcbiAgICB0aGlzLl9mb3JtRmllbGRzID0gZm9ybUZpZWxkcztcbiAgICB0aGlzLl9hbGxGb3Jtc0RhdGEgPSBhbGxGb3Jtc0RhdGE7XG4gICAgdGhpcy5fZm9ybURhdGEgPSBmb3JtRGF0YTtcbiAgICB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhID0gcHJldmlvdXNGb3JtRGF0YTtcbiAgICB0aGlzLl9leHRyYURhdGEgPSBleHRyYURhdGE7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGdldENhbWVyYVdhdGVybWFya0RhdGEoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzb3VyY2VzID0gdGhpcy5fZmllbGQucHJvcGVydGllc1tcIndhdGVybWFya0RhdGFTb3VyY2VzXCJdO1xuXG4gICAgZm9yIChsZXQgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgU291cmNlKHtcbiAgICAgICAgRklFTERfQ09ORklHOiB0aGlzLl9maWVsZCxcbiAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgIEZPUk1fREFUQTogdGhpcy5fZm9ybURhdGEsXG4gICAgICAgIFBSRVZJT1VTX0ZPUk1fREFUQTogdGhpcy5fcHJldmlvdXNGb3JtRGF0YSxcbiAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YSxcbiAgICAgICAgRVhUUkFfREFUQTogdGhpcy5fZXh0cmFEYXRhXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgc291cmNlcy5nZXRWYWx1ZUZyb21Tb3VyY2Uoc291cmNlKTtcblxuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHNvdXJjZSwgXCJpZFwiKSkge1xuICAgICAgICB0aGlzLmNhbWVyYURhdGFbc291cmNlLmlkXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhbWVyYURhdGE7XG4gIH1cbn1cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmNhbWVyYS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvaGVscGVycy9mb3JtLXZpZXcuY2FtZXJhLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxNQUFNLE9BQU8sWUFBWTtJQWV2QixZQUFZLEtBQW9CLEVBQUUsTUFBVztRQUZyQyxxQkFBZ0IsR0FBUSxFQUFFLENBQUM7UUFHakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQWZELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBWUssc0JBQXNCOzs7WUFDMUIsTUFBTSxPQUFPLEdBQUcsTUFBQSxNQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBa0IsQ0FBQyxRQUFRLDBDQUFFLFNBQVMsMENBQy9ELE9BQU8sQ0FBQztZQUVaLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0saUNBQ3JCLElBQUksQ0FBQyxPQUFPLEtBQ2YsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQ3pCLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRXZELElBQUksb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDMUM7YUFDRjtZQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDOztLQUM5QjtDQUNGO0FBbEJDO0lBREMsU0FBUzswREFrQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja09iamVjdEtleUV4aXN0cywgbG9nTWV0aG9kLCBTb3VyY2UgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IFRGaWVsZENhcHR1cmUgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZm9ybS12aWV3LmZpZWxkcy5kZWZpbml0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBDYW1lcmFIZWxwZXIge1xuICBwcml2YXRlIF9vYmplY3Q6IGFueTtcblxuICBnZXQgb2JqZWN0KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX29iamVjdDtcbiAgfVxuXG4gIHNldCBvYmplY3QodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX29iamVjdCA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmllbGQ6IGFueTtcblxuICBwcml2YXRlIGFjdGl2ZUNhbWVyYURhdGE6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGZpZWxkOiBURmllbGRDYXB0dXJlLCBvYmplY3Q6IGFueSkge1xuICAgIHRoaXMuX2ZpZWxkID0gZmllbGQ7XG4gICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0O1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBhc3luYyBnZXRDYW1lcmFXYXRlcm1hcmtEYXRhKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc291cmNlcyA9ICh0aGlzLl9maWVsZC5wcm9wZXJ0aWVzIGFzIGFueSkuZmVhdHVyZXM/LndhdGVybWFya1xuICAgICAgPy5zb3VyY2VzO1xuXG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2Uoe1xuICAgICAgICAuLi50aGlzLl9vYmplY3QsXG4gICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBzb3VyY2VzLmdldFZhbHVlRnJvbVNvdXJjZShzb3VyY2UpO1xuXG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoc291cmNlLCBcImlkXCIpKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlQ2FtZXJhRGF0YVtzb3VyY2UuaWRdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQ2FtZXJhRGF0YTtcbiAgfVxufVxuIl19
@@ -1,16 +1,20 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
+ /* eslint-disable no-unused-vars */
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
4
  import { Action, Condition, Rule, Source, checkObjectKeyExists, isEmptyValue, isNotEmptyValue, logMethod, setValueToObjectPath } from "kwikid-toolkit";
3
5
  import { convertFormFieldEmptyValueToKwikUIFormat } from "./form-view.fields.helper";
4
6
  export class Defaults {
5
- constructor(field, formFields, allFormsData, formData, previousFormData, extraData, takeAction) {
7
+ constructor(field, object, takeAction) {
6
8
  this._field = field;
7
- this._formFields = formFields;
8
- this._allFormsData = allFormsData;
9
- this._formData = formData;
10
- this._previousFormData = previousFormData;
11
- this._extraData = extraData;
9
+ this._object = object;
12
10
  this._takeAction = takeAction;
13
11
  }
12
+ get object() {
13
+ return this._object;
14
+ }
15
+ set object(value) {
16
+ this._object = value;
17
+ }
14
18
  getFormFieldValue() {
15
19
  return __awaiter(this, void 0, void 0, function* () {
16
20
  let defaultValue;
@@ -23,28 +27,12 @@ export class Defaults {
23
27
  }
24
28
  else if (!checkObjectKeyExists(this._field.default.value, "sources")) {
25
29
  const engine = this._field.default.value;
26
- const triggers = engine.triggers;
27
- const rules = engine.rules;
28
- const actions = engine.actions;
29
- const rulesMapping = new Rule(rules, {
30
- FIELD_CONFIG: this._field,
31
- FORM_FIELDS: this._formFields,
32
- FORM_DATA: this._formData,
33
- PREVIOUS_FORM_DATA: this._previousFormData,
34
- ALL_FORMS_DATA: this._allFormsData,
35
- EXTRA_DATA: this._extraData
36
- }).mapping();
37
- for (let action of actions) {
30
+ const { triggers, rules, actions } = engine;
31
+ const rulesMapping = new Rule(rules, Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field })).mapping();
32
+ for (const action of actions) {
38
33
  const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
39
34
  if (conditionEvaluation) {
40
- const actions = new Action(action, rulesMapping, {
41
- FIELD_CONFIG: this._field,
42
- FORM_FIELDS: this._formFields,
43
- FORM_DATA: this._formData,
44
- PREVIOUS_FORM_DATA: this._previousFormData,
45
- ALL_FORMS_DATA: this._allFormsData,
46
- EXTRA_DATA: this._extraData
47
- }, this._takeAction);
35
+ const actions = new Action(action, rulesMapping, Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field }), this._takeAction);
48
36
  yield actions.execute();
49
37
  }
50
38
  }
@@ -54,47 +42,26 @@ export class Defaults {
54
42
  }
55
43
  }
56
44
  else {
57
- const sources = this._field.default.value.sources;
45
+ const { sources } = this._field.default.value;
58
46
  let sourceIndex = 0;
59
- for (let source of sources) {
60
- const sources = new Source({
61
- FIELD_CONFIG: this._field,
62
- FORM_FIELDS: this._formFields,
63
- FORM_DATA: this._formData,
64
- PREVIOUS_FORM_DATA: this._previousFormData,
65
- ALL_FORMS_DATA: this._allFormsData,
66
- EXTRA_DATA: this._extraData
67
- });
47
+ for (const source of sources) {
48
+ const sources = new Source(Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field }));
68
49
  const value = sources.getValueFromSource(source);
69
50
  // Set the Value of current source.
70
51
  this._field = setValueToObjectPath(this._field, `default.value.sources.[${sourceIndex}].value`, value);
71
- const validation = source.validation;
72
- const triggers = validation.triggers;
73
- const rules = validation.rules;
74
- const actions = validation.actions;
75
- const rulesMapping = new Rule(rules, {
76
- FIELD_CONFIG: this._field,
77
- FORM_FIELDS: this._formFields,
78
- FORM_DATA: this._formData,
79
- PREVIOUS_FORM_DATA: this._previousFormData,
80
- ALL_FORMS_DATA: this._allFormsData,
81
- EXTRA_DATA: this._extraData
82
- }).mapping();
83
- for (let action of actions) {
52
+ const { validation } = source;
53
+ const { triggers } = validation;
54
+ const { rules } = validation;
55
+ const { actions } = validation;
56
+ const rulesMapping = new Rule(rules, Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field })).mapping();
57
+ for (const action of actions) {
84
58
  const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
85
59
  if (conditionEvaluation) {
86
- const actions = new Action(action, rulesMapping, {
87
- FIELD_CONFIG: this._field,
88
- FORM_FIELDS: this._formFields,
89
- FORM_DATA: this._formData,
90
- PREVIOUS_FORM_DATA: this._previousFormData,
91
- ALL_FORMS_DATA: this._allFormsData,
92
- EXTRA_DATA: this._extraData
93
- }, this._takeAction);
60
+ const actions = new Action(action, rulesMapping, Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field }), this._takeAction);
94
61
  yield actions.execute();
95
62
  }
96
63
  }
97
- sourceIndex++;
64
+ sourceIndex += 1;
98
65
  }
99
66
  defaultValue = this._field.default.value.value;
100
67
  if (isEmptyValue(defaultValue)) {
@@ -107,27 +74,13 @@ export class Defaults {
107
74
  getFormFieldApiValue() {
108
75
  return __awaiter(this, void 0, void 0, function* () {
109
76
  const apiConfig = this._field.default.api;
110
- const rules = apiConfig.rules;
111
- const actions = apiConfig.actions;
112
- const rulesMapping = new Rule(rules, {
113
- FIELD_CONFIG: this._field,
114
- FORM_FIELDS: this._formFields,
115
- FORM_DATA: this._formData,
116
- PREVIOUS_FORM_DATA: this._previousFormData,
117
- ALL_FORMS_DATA: this._allFormsData,
118
- EXTRA_DATA: this._extraData
119
- }).mapping();
120
- for (let action of actions) {
77
+ const { rules } = apiConfig;
78
+ const { actions } = apiConfig;
79
+ const rulesMapping = new Rule(rules, Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field })).mapping();
80
+ for (const action of actions) {
121
81
  const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
122
82
  if (conditionEvaluation) {
123
- const actions = new Action(action, rulesMapping, {
124
- FIELD_CONFIG: this._field,
125
- FORM_FIELDS: this._formFields,
126
- FORM_DATA: this._formData,
127
- PREVIOUS_FORM_DATA: this._previousFormData,
128
- ALL_FORMS_DATA: this._allFormsData,
129
- EXTRA_DATA: this._extraData
130
- }, this._takeAction);
83
+ const actions = new Action(action, rulesMapping, Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field }), this._takeAction);
131
84
  yield actions.execute();
132
85
  }
133
86
  }
@@ -136,27 +89,13 @@ export class Defaults {
136
89
  getFormFieldOptions() {
137
90
  return __awaiter(this, void 0, void 0, function* () {
138
91
  const optionsConfig = this._field.default.options;
139
- const rules = optionsConfig.rules;
140
- const actions = optionsConfig.actions;
141
- const rulesMapping = new Rule(rules, {
142
- FIELD_CONFIG: this._field,
143
- FORM_FIELDS: this._formFields,
144
- FORM_DATA: this._formData,
145
- PREVIOUS_FORM_DATA: this._previousFormData,
146
- ALL_FORMS_DATA: this._allFormsData,
147
- EXTRA_DATA: this._extraData
148
- }).mapping();
149
- for (let action of actions) {
92
+ const { rules } = optionsConfig;
93
+ const { actions } = optionsConfig;
94
+ const rulesMapping = new Rule(rules, Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field })).mapping();
95
+ for (const action of actions) {
150
96
  const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
151
97
  if (conditionEvaluation) {
152
- const actions = new Action(action, rulesMapping, {
153
- FIELD_CONFIG: this._field,
154
- FORM_FIELDS: this._formFields,
155
- FORM_DATA: this._formData,
156
- PREVIOUS_FORM_DATA: this._previousFormData,
157
- ALL_FORMS_DATA: this._allFormsData,
158
- EXTRA_DATA: this._extraData
159
- }, this._takeAction);
98
+ const actions = new Action(action, rulesMapping, Object.assign(Object.assign({}, this._object), { FIELD_CONFIG: this._field }), this._takeAction);
160
99
  yield actions.execute();
161
100
  }
162
101
  }
@@ -172,4 +111,4 @@ __decorate([
172
111
  __decorate([
173
112
  logMethod
174
113
  ], Defaults.prototype, "getFormFieldOptions", null);
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmRlZmF1bHRzLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy5kZWZhdWx0cy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULElBQUksRUFDSixNQUFNLEVBSU4sb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULG9CQUFvQixFQUNyQixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJGLE1BQU0sT0FBTyxRQUFRO0lBU25CLFlBQ0UsS0FBYSxFQUNiLFVBQWlCLEVBQ2pCLFlBQWlCLEVBQ2pCLFFBQWEsRUFDYixnQkFBcUIsRUFDckIsU0FBYyxFQUNkLFVBQW9CO1FBRXBCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBR0ssaUJBQWlCOztZQUNyQixJQUFJLFlBQWlCLENBQUM7WUFFdEIsSUFDRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO2dCQUN4RCxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FB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QUFFLENBQUM7WUFFYixLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDMUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLFNBQVMsQ0FDdkMsTUFBTSxDQUFDLFNBQVMsRUFDaEIsWUFBWSxDQUNiLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRWIsSUFBSSxtQkFBbUIsRUFBRTtvQkFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQ3hCLE1BQU0sRUFDTixZQUFZLEVBQ1o7d0JBQ0UsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNO3dCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7d0JBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzt3QkFDekIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjt3QkFDMUMsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7cUJBQzVCLEVBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztvQkFFRixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDekI7YUFDRjtRQUNILENBQUM7S0FBQTtDQUNGO0FBeE5DO0lBREMsU0FBUztpREFvSVQ7QUFHRDtJQURDLFNBQVM7b0RBd0NUO0FBR0Q7SUFEQyxTQUFTO21EQXdDVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFjdGlvbixcbiAgQ29uZGl0aW9uLFxuICBSdWxlLFxuICBTb3VyY2UsXG4gIFRBY3Rpb24sXG4gIFRFbmdpbmUsXG4gIFRSdWxlLFxuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgaXNFbXB0eVZhbHVlLFxuICBpc05vdEVtcHR5VmFsdWUsXG4gIGxvZ01ldGhvZCxcbiAgc2V0VmFsdWVUb09iamVjdFBhdGhcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBURmllbGQgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZm9ybS12aWV3LmZpZWxkcy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBUVHJpZ2dlciB9IGZyb20gXCIuLi9kZWZpbml0aW9ucy9mb3JtLXZpZXcudHJpZ2dlcnMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgY29udmVydEZvcm1GaWVsZEVtcHR5VmFsdWVUb0t3aWtVSUZvcm1hdCB9IGZyb20gXCIuL2Zvcm0tdmlldy5maWVsZHMuaGVscGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0cyB7XG4gIHByaXZhdGUgX2FsbEZvcm1zRGF0YTogYW55O1xuICBwcml2YXRlIF9maWVsZDogVEZpZWxkO1xuICBwcml2YXRlIF9mb3JtRmllbGRzOiBhbnlbXTtcbiAgcHJpdmF0ZSBfZm9ybURhdGE6IGFueTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNGb3JtRGF0YTogYW55O1xuICBwcml2YXRlIF9leHRyYURhdGE6IGFueTtcbiAgcHJpdmF0ZSBfdGFrZUFjdGlvbjogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZmllbGQ6IFRGaWVsZCxcbiAgICBmb3JtRmllbGRzOiBhbnlbXSxcbiAgICBhbGxGb3Jtc0RhdGE6IGFueSxcbiAgICBmb3JtRGF0YTogYW55LFxuICAgIHByZXZpb3VzRm9ybURhdGE6IGFueSxcbiAgICBleHRyYURhdGE6IGFueSxcbiAgICB0YWtlQWN0aW9uOiBGdW5jdGlvblxuICApIHtcbiAgICB0aGlzLl9maWVsZCA9IGZpZWxkO1xuICAgIHRoaXMuX2Zvcm1GaWVsZHMgPSBmb3JtRmllbGRzO1xuICAgIHRoaXMuX2FsbEZvcm1zRGF0YSA9IGFsbEZvcm1zRGF0YTtcbiAgICB0aGlzLl9mb3JtRGF0YSA9IGZvcm1EYXRhO1xuICAgIHRoaXMuX3ByZXZpb3VzRm9ybURhdGEgPSBwcmV2aW91c0Zvcm1EYXRhO1xuICAgIHRoaXMuX2V4dHJhRGF0YSA9IGV4dHJhRGF0YTtcbiAgICB0aGlzLl90YWtlQWN0aW9uID0gdGFrZUFjdGlvbjtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgZ2V0Rm9ybUZpZWxkVmFsdWUoKSB7XG4gICAgbGV0IGRlZmF1bHRWYWx1ZTogYW55O1xuXG4gICAgaWYgKFxuICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fZmllbGQuZGVmYXVsdC52YWx1ZSwgXCJ2YWx1ZVwiKSAmJlxuICAgICAgaXNOb3RFbXB0eVZhbHVlKHRoaXMuX2ZpZWxkLmRlZmF1bHQudmFsdWUudmFsdWUpXG4gICAgKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLl9maWVsZC5kZWZhdWx0LnZhbHVlLnZhbHVlO1xuXG4gICAgICBpZiAoaXNFbXB0eVZhbHVlKGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gY29udmVydEZvcm1GaWVsZEVtcHR5VmFsdWVUb0t3aWtVSUZvcm1hdCh0aGlzLl9maWVsZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fZmllbGQuZGVmYXVsdC52YWx1ZSwgXCJzb3VyY2VzXCIpKSB7XG4gICAgICBjb25zdCBlbmdpbmU6IFRFbmdpbmUgPSB0aGlzLl9maWVsZC5kZWZhdWx0LnZhbHVlIGFzIGFueTtcblxuICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IGVuZ2luZS50cmlnZ2VycztcbiAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSBlbmdpbmUucnVsZXM7XG4gICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9IGVuZ2luZS5hY3Rpb25zO1xuXG4gICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywge1xuICAgICAgICBGSUVMRF9DT05GSUc6IHRoaXMuX2ZpZWxkLFxuICAgICAgICBGT1JNX0ZJRUxEUzogdGhpcy5fZm9ybUZpZWxkcyxcbiAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgICAgUFJFVklPVVNfRk9STV9EQVRBOiB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxuICAgICAgICBBTExfRk9STVNfREFUQTogdGhpcy5fYWxsRm9ybXNEYXRhLFxuICAgICAgICBFWFRSQV9EQVRBOiB0aGlzLl9leHRyYURhdGFcbiAgICAgIH0pLm1hcHBpbmcoKTtcblxuICAgICAgZm9yIChsZXQgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uRXZhbHVhdGlvbiA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XG4gICAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgICAgIEZPUk1fRklFTERTOiB0aGlzLl9mb3JtRmllbGRzLFxuICAgICAgICAgICAgICBGT1JNX0RBVEE6IHRoaXMuX2Zvcm1EYXRhLFxuICAgICAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgICAgIEFMTF9GT1JNU19EQVRBOiB0aGlzLl9hbGxGb3Jtc0RhdGEsXG4gICAgICAgICAgICAgIEVYVFJBX0RBVEE6IHRoaXMuX2V4dHJhRGF0YVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5fZmllbGQuZGVmYXVsdC52YWx1ZS52YWx1ZTtcblxuICAgICAgaWYgKGlzRW1wdHlWYWx1ZShkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNvbnZlcnRGb3JtRmllbGRFbXB0eVZhbHVlVG9Ld2lrVUlGb3JtYXQodGhpcy5fZmllbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb3VyY2VzID0gdGhpcy5fZmllbGQuZGVmYXVsdC52YWx1ZS5zb3VyY2VzO1xuXG4gICAgICBsZXQgc291cmNlSW5kZXggPSAwO1xuICAgICAgZm9yIChsZXQgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2Uoe1xuICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YSxcbiAgICAgICAgICBFWFRSQV9EQVRBOiB0aGlzLl9leHRyYURhdGFcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc291cmNlcy5nZXRWYWx1ZUZyb21Tb3VyY2Uoc291cmNlKTtcblxuICAgICAgICAvLyBTZXQgdGhlIFZhbHVlIG9mIGN1cnJlbnQgc291cmNlLlxuICAgICAgICB0aGlzLl9maWVsZCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgIHRoaXMuX2ZpZWxkLFxuICAgICAgICAgIGBkZWZhdWx0LnZhbHVlLnNvdXJjZXMuWyR7c291cmNlSW5kZXh9XS52YWx1ZWAsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWxpZGF0aW9uOiBURW5naW5lID0gKHNvdXJjZSBhcyBhbnkpLnZhbGlkYXRpb247XG5cbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24udHJpZ2dlcnM7XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uLnJ1bGVzO1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9IHZhbGlkYXRpb24uYWN0aW9ucztcblxuICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywge1xuICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YSxcbiAgICAgICAgICBFWFRSQV9EQVRBOiB0aGlzLl9leHRyYURhdGFcbiAgICAgICAgfSkubWFwcGluZygpO1xuXG4gICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uRXZhbHVhdGlvbiA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgICAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgICAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YSxcbiAgICAgICAgICAgICAgICBFWFRSQV9EQVRBOiB0aGlzLl9leHRyYURhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc291cmNlSW5kZXgrKztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5fZmllbGQuZGVmYXVsdC52YWx1ZS52YWx1ZTtcblxuICAgICAgaWYgKGlzRW1wdHlWYWx1ZShkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNvbnZlcnRGb3JtRmllbGRFbXB0eVZhbHVlVG9Ld2lrVUlGb3JtYXQodGhpcy5fZmllbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGdldEZvcm1GaWVsZEFwaVZhbHVlKCkge1xuICAgIGNvbnN0IGFwaUNvbmZpZyA9IHRoaXMuX2ZpZWxkLmRlZmF1bHQuYXBpO1xuXG4gICAgY29uc3QgcnVsZXMgPSBhcGlDb25maWcucnVsZXM7XG4gICAgY29uc3QgYWN0aW9ucyA9IGFwaUNvbmZpZy5hY3Rpb25zO1xuXG4gICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHtcbiAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICBGT1JNX0ZJRUxEUzogdGhpcy5fZm9ybUZpZWxkcyxcbiAgICAgIEZPUk1fREFUQTogdGhpcy5fZm9ybURhdGEsXG4gICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICBBTExfRk9STVNfREFUQTogdGhpcy5fYWxsRm9ybXNEYXRhLFxuICAgICAgRVhUUkFfREFUQTogdGhpcy5fZXh0cmFEYXRhXG4gICAgfSkubWFwcGluZygpO1xuXG4gICAgZm9yIChsZXQgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBGSUVMRF9DT05GSUc6IHRoaXMuX2ZpZWxkLFxuICAgICAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgICAgICBGT1JNX0RBVEE6IHRoaXMuX2Zvcm1EYXRhLFxuICAgICAgICAgICAgUFJFVklPVVNfRk9STV9EQVRBOiB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxuICAgICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YSxcbiAgICAgICAgICAgIEVYVFJBX0RBVEE6IHRoaXMuX2V4dHJhRGF0YVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgZ2V0Rm9ybUZpZWxkT3B0aW9ucygpIHtcbiAgICBjb25zdCBvcHRpb25zQ29uZmlnID0gdGhpcy5fZmllbGQuZGVmYXVsdC5vcHRpb25zO1xuXG4gICAgY29uc3QgcnVsZXMgPSBvcHRpb25zQ29uZmlnLnJ1bGVzO1xuICAgIGNvbnN0IGFjdGlvbnMgPSBvcHRpb25zQ29uZmlnLmFjdGlvbnM7XG5cbiAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywge1xuICAgICAgRklFTERfQ09ORklHOiB0aGlzLl9maWVsZCxcbiAgICAgIEZPUk1fRklFTERTOiB0aGlzLl9mb3JtRmllbGRzLFxuICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgIFBSRVZJT1VTX0ZPUk1fREFUQTogdGhpcy5fcHJldmlvdXNGb3JtRGF0YSxcbiAgICAgIEFMTF9GT1JNU19EQVRBOiB0aGlzLl9hbGxGb3Jtc0RhdGEsXG4gICAgICBFWFRSQV9EQVRBOiB0aGlzLl9leHRyYURhdGFcbiAgICB9KS5tYXBwaW5nKCk7XG5cbiAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgY29uZGl0aW9uRXZhbHVhdGlvbiA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICBpZiAoY29uZGl0aW9uRXZhbHVhdGlvbikge1xuICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgICBGT1JNX0ZJRUxEUzogdGhpcy5fZm9ybUZpZWxkcyxcbiAgICAgICAgICAgIEZPUk1fREFUQTogdGhpcy5fZm9ybURhdGEsXG4gICAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgICBBTExfRk9STVNfREFUQTogdGhpcy5fYWxsRm9ybXNEYXRhLFxuICAgICAgICAgICAgRVhUUkFfREFUQTogdGhpcy5fZXh0cmFEYXRhXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmRlZmF1bHRzLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy5kZWZhdWx0cy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1DQUFtQztBQUNuQyxzREFBc0Q7QUFDdEQsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxFQUNKLE1BQU0sRUFFTixvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckYsTUFBTSxPQUFPLFFBQVE7SUFlbkIsWUFBWSxLQUFhLEVBQUUsTUFBVyxFQUFFLFVBQWU7UUFDckQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQWhCRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQWFLLGlCQUFpQjs7WUFDckIsSUFBSSxZQUFpQixDQUFDO1lBRXRCLElBQ0Usb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztnQkFDeEQsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDaEQ7Z0JB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bnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBDb25kaXRpb24sXG4gIFJ1bGUsXG4gIFNvdXJjZSxcbiAgVEVuZ2luZSxcbiAgY2hlY2tPYmplY3RLZXlFeGlzdHMsXG4gIGlzRW1wdHlWYWx1ZSxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2QsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgVEZpZWxkIH0gZnJvbSBcIi4uL2RlZmluaXRpb25zL2Zvcm0tdmlldy5maWVsZHMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgY29udmVydEZvcm1GaWVsZEVtcHR5VmFsdWVUb0t3aWtVSUZvcm1hdCB9IGZyb20gXCIuL2Zvcm0tdmlldy5maWVsZHMuaGVscGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0cyB7XG4gIHByaXZhdGUgX29iamVjdDogYW55O1xuXG4gIGdldCBvYmplY3QoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0O1xuICB9XG5cbiAgc2V0IG9iamVjdCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9maWVsZDogYW55O1xuXG4gIHByaXZhdGUgX3Rha2VBY3Rpb246IGFueTtcblxuICBjb25zdHJ1Y3RvcihmaWVsZDogVEZpZWxkLCBvYmplY3Q6IGFueSwgdGFrZUFjdGlvbjogYW55KSB7XG4gICAgdGhpcy5fZmllbGQgPSBmaWVsZDtcbiAgICB0aGlzLl9vYmplY3QgPSBvYmplY3Q7XG4gICAgdGhpcy5fdGFrZUFjdGlvbiA9IHRha2VBY3Rpb247XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGdldEZvcm1GaWVsZFZhbHVlKCkge1xuICAgIGxldCBkZWZhdWx0VmFsdWU6IGFueTtcblxuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX2ZpZWxkLmRlZmF1bHQudmFsdWUsIFwidmFsdWVcIikgJiZcbiAgICAgIGlzTm90RW1wdHlWYWx1ZSh0aGlzLl9maWVsZC5kZWZhdWx0LnZhbHVlLnZhbHVlKVxuICAgICkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5fZmllbGQuZGVmYXVsdC52YWx1ZS52YWx1ZTtcblxuICAgICAgaWYgKGlzRW1wdHlWYWx1ZShkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNvbnZlcnRGb3JtRmllbGRFbXB0eVZhbHVlVG9Ld2lrVUlGb3JtYXQodGhpcy5fZmllbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX2ZpZWxkLmRlZmF1bHQudmFsdWUsIFwic291cmNlc1wiKSkge1xuICAgICAgY29uc3QgZW5naW5lOiBURW5naW5lID0gdGhpcy5fZmllbGQuZGVmYXVsdC52YWx1ZSBhcyBhbnk7XG5cbiAgICAgIGNvbnN0IHsgdHJpZ2dlcnMsIHJ1bGVzLCBhY3Rpb25zIH0gPSBlbmdpbmU7XG5cbiAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB7XG4gICAgICAgIC4uLnRoaXMuX29iamVjdCxcbiAgICAgICAgRklFTERfQ09ORklHOiB0aGlzLl9maWVsZFxuICAgICAgfSkubWFwcGluZygpO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICBpZiAoY29uZGl0aW9uRXZhbHVhdGlvbikge1xuICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi50aGlzLl9vYmplY3QsXG4gICAgICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuX2ZpZWxkLmRlZmF1bHQudmFsdWUudmFsdWU7XG5cbiAgICAgIGlmIChpc0VtcHR5VmFsdWUoZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBjb252ZXJ0Rm9ybUZpZWxkRW1wdHlWYWx1ZVRvS3dpa1VJRm9ybWF0KHRoaXMuX2ZpZWxkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyBzb3VyY2VzIH0gPSB0aGlzLl9maWVsZC5kZWZhdWx0LnZhbHVlO1xuXG4gICAgICBsZXQgc291cmNlSW5kZXggPSAwO1xuICAgICAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICBjb25zdCBzb3VyY2VzID0gbmV3IFNvdXJjZSh7XG4gICAgICAgICAgLi4udGhpcy5fb2JqZWN0LFxuICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGRcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc291cmNlcy5nZXRWYWx1ZUZyb21Tb3VyY2Uoc291cmNlKTtcblxuICAgICAgICAvLyBTZXQgdGhlIFZhbHVlIG9mIGN1cnJlbnQgc291cmNlLlxuICAgICAgICB0aGlzLl9maWVsZCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgIHRoaXMuX2ZpZWxkLFxuICAgICAgICAgIGBkZWZhdWx0LnZhbHVlLnNvdXJjZXMuWyR7c291cmNlSW5kZXh9XS52YWx1ZWAsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB7IHZhbGlkYXRpb24gfSA9IHNvdXJjZSBhcyBhbnk7XG5cbiAgICAgICAgY29uc3QgeyB0cmlnZ2VycyB9ID0gdmFsaWRhdGlvbjtcbiAgICAgICAgY29uc3QgeyBydWxlcyB9ID0gdmFsaWRhdGlvbjtcbiAgICAgICAgY29uc3QgeyBhY3Rpb25zIH0gPSB2YWxpZGF0aW9uO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB7XG4gICAgICAgICAgLi4udGhpcy5fb2JqZWN0LFxuICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGRcbiAgICAgICAgfSkubWFwcGluZygpO1xuXG4gICAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBjb25kaXRpb25FdmFsdWF0aW9uID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgICBpZiAoY29uZGl0aW9uRXZhbHVhdGlvbikge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc291cmNlSW5kZXggKz0gMTtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5fZmllbGQuZGVmYXVsdC52YWx1ZS52YWx1ZTtcblxuICAgICAgaWYgKGlzRW1wdHlWYWx1ZShkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNvbnZlcnRGb3JtRmllbGRFbXB0eVZhbHVlVG9Ld2lrVUlGb3JtYXQodGhpcy5fZmllbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGdldEZvcm1GaWVsZEFwaVZhbHVlKCkge1xuICAgIGNvbnN0IGFwaUNvbmZpZyA9IHRoaXMuX2ZpZWxkLmRlZmF1bHQuYXBpO1xuXG4gICAgY29uc3QgeyBydWxlcyB9ID0gYXBpQ29uZmlnO1xuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gYXBpQ29uZmlnO1xuXG4gICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHtcbiAgICAgIC4uLnRoaXMuX29iamVjdCxcbiAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGRcbiAgICB9KS5tYXBwaW5nKCk7XG5cbiAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICBjb25zdCBjb25kaXRpb25FdmFsdWF0aW9uID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4udGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgRklFTERfQ09ORklHOiB0aGlzLl9maWVsZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgZ2V0Rm9ybUZpZWxkT3B0aW9ucygpIHtcbiAgICBjb25zdCBvcHRpb25zQ29uZmlnID0gdGhpcy5fZmllbGQuZGVmYXVsdC5vcHRpb25zO1xuXG4gICAgY29uc3QgeyBydWxlcyB9ID0gb3B0aW9uc0NvbmZpZztcbiAgICBjb25zdCB7IGFjdGlvbnMgfSA9IG9wdGlvbnNDb25maWc7XG5cbiAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywge1xuICAgICAgLi4udGhpcy5fb2JqZWN0LFxuICAgICAgRklFTERfQ09ORklHOiB0aGlzLl9maWVsZFxuICAgIH0pLm1hcHBpbmcoKTtcblxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi50aGlzLl9vYmplY3QsXG4gICAgICAgICAgICBGSUVMRF9DT05GSUc6IHRoaXMuX2ZpZWxkXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=