@bizdoc/core 1.16.22 → 1.16.25

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 (43) hide show
  1. package/esm2020/lib/admin/configuration-designer/cube-axes-filter.component.mjs +2 -2
  2. package/esm2020/lib/admin/configuration-designer/declarations.mjs +2 -3
  3. package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +43 -42
  4. package/esm2020/lib/admin/configuration-designer/designer-privileges.component.mjs +6 -8
  5. package/esm2020/lib/admin/configuration-designer/designer.base.mjs +3 -1
  6. package/esm2020/lib/admin/configuration-designer/designer.component.mjs +74 -47
  7. package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +6 -5
  8. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +29 -14
  9. package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +22 -21
  10. package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +80 -25
  11. package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +13 -7
  12. package/esm2020/lib/admin/configuration-designer/elements/policy.component.mjs +5 -4
  13. package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +6 -7
  14. package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +3 -2
  15. package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +5 -4
  16. package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +3 -2
  17. package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +3 -3
  18. package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +5 -8
  19. package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +5 -4
  20. package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +4 -3
  21. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +2 -2
  22. package/esm2020/lib/admin/system.service.mjs +1 -1
  23. package/esm2020/lib/core/translations.mjs +10 -2
  24. package/esm2020/lib/cube/cube-menu.component.mjs +2 -2
  25. package/esm2020/lib/home/home-base.component.mjs +2 -2
  26. package/fesm2015/bizdoc-core.mjs +457 -348
  27. package/fesm2015/bizdoc-core.mjs.map +1 -1
  28. package/fesm2020/bizdoc-core.mjs +454 -346
  29. package/fesm2020/bizdoc-core.mjs.map +1 -1
  30. package/lib/admin/configuration-designer/declarations.d.ts +1 -2
  31. package/lib/admin/configuration-designer/designer-element.component.d.ts +7 -11
  32. package/lib/admin/configuration-designer/designer.base.d.ts +1 -0
  33. package/lib/admin/configuration-designer/designer.component.d.ts +10 -6
  34. package/lib/admin/configuration-designer/elements/action.component.d.ts +1 -3
  35. package/lib/admin/configuration-designer/elements/cube.component.d.ts +3 -6
  36. package/lib/admin/configuration-designer/elements/folder.component.d.ts +11 -3
  37. package/lib/admin/configuration-designer/elements/form.component.d.ts +21 -6
  38. package/lib/admin/configuration-designer/elements/policy.component.d.ts +1 -2
  39. package/lib/admin/configuration-designer/elements/report.component.d.ts +0 -1
  40. package/lib/admin/configuration-designer/elements/utility.component.d.ts +1 -3
  41. package/lib/admin/system.service.d.ts +8 -6
  42. package/lib/core/translations.d.ts +8 -0
  43. package/package.json +1 -1
@@ -34,7 +34,7 @@ export class DesignerCubeFilterComponent {
34
34
  ngOnChanges(_changes) {
35
35
  Object.keys(this.form.controls).forEach(k => this.form.removeControl(k, { emitEvent: false }));
36
36
  this.cube.axes.forEach(a => {
37
- if (a.hidden || a.selectionMode === 'None')
37
+ if (a.selectionMode === 'None')
38
38
  return;
39
39
  let { descendentOf } = a;
40
40
  if (descendentOf) {
@@ -91,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
91
91
  }], form: [{
92
92
  type: Input
93
93
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViZS1heGVzLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvY3ViZS1heGVzLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvY3ViZS1heGVzLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVExRSxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLDJCQUEyQjtJQTZDdEMsa0JBQWtCO0lBQ2xCLFlBQTZCLFFBQXFCLEVBQ3hDLElBQWlCLEVBQ1IsR0FBZ0I7UUFGTixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3hDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDUixRQUFHLEdBQUgsR0FBRyxDQUFhO1FBL0MxQixZQUFPLEdBQUcsa0JBQWtCLENBQUM7UUFHN0IsWUFBTyxHQUEyRCxFQUFFLENBQUM7UUFDN0QsZ0JBQVcsR0FBRyxFQUFrQyxDQUFDO1FBQ2pELGVBQVUsR0FBRyxFQUFrQyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFD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ImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgY2xlYW51cCwgbWFwVG9BcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IEFYSVNfVkFMVUVfUEFUVEVSTiwgQ3ViZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdWJlL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IERlc2lnbmVyUmVmLCBFbGVtZW50TW9kZWwgfSBmcm9tICcuL2RlY2xhcmF0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1kZXNpZ25lci1jdWJlLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1YmUtYXhlcy1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2N1YmUtYXhlcy1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG4vKiogZmlsdGVyIGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBEZXNpZ25lckN1YmVGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgcmVhZG9ubHkgcGF0dGVybiA9IEFYSVNfVkFMVUVfUEFUVEVSTjtcclxuICBASW5wdXQoKSBjdWJlITogRWxlbWVudE1vZGVsO1xyXG4gIEBJbnB1dCgpIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgcmVhZG9ubHkgc291cmNlczogeyBbYXhpczogc3RyaW5nXTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiB9ID0ge307XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVjZW5kZW50cyA9IHt9IGFzIHsgW25hbWU6IHN0cmluZ106IHN0cmluZ1tdIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYW5jZXN0b3JzID0ge30gYXMgeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nW10gfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGsgPT4gdGhpcy5mb3JtLnJlbW92ZUNvbnRyb2woaywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKVxyXG4gICAgdGhpcy5jdWJlLmF4ZXMuZm9yRWFjaChhID0+IHtcclxuICAgICAgaWYgKGEuaGlkZGVuIHx8IGEuc2VsZWN0aW9uTW9kZSA9PT0gJ05vbmUnKSByZXR1cm47XHJcbiAgICAgIGxldCB7IGRlc2NlbmRlbnRPZiB9ID0gYTtcclxuICAgICAgaWYgKGRlc2NlbmRlbnRPZikge1xyXG4gICAgICAgIGxldCBhbmNlc3RvcnMgPSB0aGlzLl9hbmNlc3RvcnNbYS5uYW1lXSA9IFtdO1xyXG4gICAgICAgIHdoaWxlIChkZXNjZW5kZW50T2YpIHtcclxuICAgICAgICAgIGxldCBheGlzID0gdGhpcy5jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gZGVzY2VuZGVudE9mKTtcclxuICAgICAgICAgIGFuY2VzdG9ycy5wdXNoKGF4aXMubmFtZSk7XHJcbiAgICAgICAgICBpZiAoYS5zZWxlY3Rpb25Nb2RlICE9PSAnUGF0dGVybicpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9kZWNlbmRlbnRzW2Rlc2NlbmRlbnRPZl0pIHRoaXMuX2RlY2VuZGVudHNbZGVzY2VuZGVudE9mXSA9IFthLm5hbWVdO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuX2RlY2VuZGVudHNbZGVzY2VuZGVudE9mXS5wdXNoKGEubmFtZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkZXNjZW5kZW50T2YgPSBheGlzLmRlc2NlbmRlbnRPZjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnNvdXJjZXNbYS5uYW1lXSAmJiBhLnNlbGVjdGlvbk1vZGUgIT09ICdQYXR0ZXJuJykge1xyXG4gICAgICAgIHRoaXMuc291cmNlc1thLm5hbWVdID0gdGhpcy5fc2VydmljZS52YWx1ZXModGhpcy5jdWJlLm5hbWUsIGEubmFtZSkucGlwZShtYXAobWFwVG9BcnJheSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLl9mYi5jb250cm9sKHRoaXMpO1xyXG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChhLm5hbWUsIGN0cmwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgY3RybC52YWx1ZUNoYW5nZXMucGlwZShmaWx0ZXIoKCkgPT4gY3RybC52YWxpZCksIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2RlY2VuZGVudHNbYS5uYW1lXSlcclxuICAgICAgICAgICAgZm9yIChsZXQgYXhpcyBvZiB0aGlzLl9kZWNlbmRlbnRzW2EubmFtZV0pIHtcclxuICAgICAgICAgICAgICBsZXQgZGVwcyA9IHt9O1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgdGhpcy5fYW5jZXN0b3JzW2F4aXNdKVxyXG4gICAgICAgICAgICAgICAgZGVwc1tuYW1lXSA9ICh0aGlzLmZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sKS52YWx1ZTtcclxuICAgICAgICAgICAgICBjbGVhbnVwKGRlcHMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc291cmNlc1theGlzXSA9IHRoaXMuX3NlcnZpY2UudmFsdWVzKHRoaXMuY3ViZS5uYW1lLCBheGlzLCBkZXBzKS5cclxuICAgICAgICAgICAgICAgIHBpcGUobWFwKG1hcFRvQXJyYXkpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG4gIC8qKiBmaWx0ZXIgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVmOiBEZXNpZ25lclJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZiOiBGb3JtQnVpbGRlcikge1xyXG4gIH1cclxuICBkaXNwbGF5KGtleVZhbHVlKSB7XHJcbiAgICByZXR1cm4ga2V5VmFsdWUgPyBrZXlWYWx1ZS52YWx1ZSA6IG51bGw7XHJcbiAgfVxyXG4gIGNoYW5nZShheGlzOiBzdHJpbmcsIGV2dDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzW2F4aXNdLnNldFZhbHVlKGV2dC5vcHRpb24udmFsdWUua2V5KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGgyIGNsYXNzPVwibWF0LXRpdGxlXCI+e3snRmlsdGVycyd8dHJhbnNsYXRlfX08L2gyPlxyXG48ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkICpuZ0Zvcj1cImxldCBhIG9mIGN1YmUuYXhlc1wiIFtuZ1N3aXRjaF09XCJhLnNlbGVjdGlvbk1vZGVcIiBbYXR0ci5kYXRhLWhlbHBdPVwiJ2F4aXMtJythLm5hbWVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidQYXR0ZXJuJ1wiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgIFtwYXR0ZXJuXT1cInBhdHRlcm5cIiBbYXV0b2ZvY3VzXVxyXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJhLm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiYS50aXRsZXx8YS5uYW1lXCIgLz5cclxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHNbYS5uYW1lXS5pbnZhbGlkXCI+e3snU2ltcGxlUGF0dGVybkVycicgfHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidTZWFyY2gnXCI+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwic2VnbWVudFwiICNpbnBcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJhLnRpdGxlfHxhLm5hbWVcIiAvPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjc2VnbWVudCBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJjaGFuZ2UoYS5uYW1lLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHIgb2Ygc291cmNlc1thLm5hbWVdIHwgYXN5bmMgfCBmaWx0ZXIgOiAndmFsdWUnIDogaW5wLnZhbHVlIHwgc2xpY2U6MDo1MFwiIFt2YWx1ZV09XCJyXCI+e3tyLnZhbHVlfX08L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJpbnAudmFsdWVcIiBtYXRTdWZmaXggYXJpYS1sYWJlbD1cIlwiIChjbGljayk9XCJpbnAudmFsdWUgPSAnJzsgZm9ybS5jb250cm9sc1thLm5hbWVdLnNldFZhbHVlKG51bGwpXCI+PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHNbYS5uYW1lXS5pbnZhbGlkXCI+e3snU2ltcGxlUGF0dGVybkVycicgfHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiYS5uYW1lXCIgW3BsYWNlaG9sZGVyXT1cImEudGl0bGV8fGEubmFtZVwiIFttdWx0aXBsZV09XCJhLnNlbGVjdGlvbk1vZGUgPT09ICdNdWx0aXBsZSdcIiAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImEuc2VsZWN0aW9uTW9kZSAhPT0gJ011bHRpcGxlJ1wiPnt7J0FsbCcgfCB0cmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHIgb2Ygc291cmNlc1thLm5hbWVdIHwgYXN5bmNcIiBbdmFsdWVdPVwici5rZXlcIj57e3IudmFsdWV9fTwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L2Rpdj5cclxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViZS1heGVzLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvY3ViZS1heGVzLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvY3ViZS1heGVzLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVExRSxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLDJCQUEyQjtJQTZDdEMsa0JBQWtCO0lBQ2xCLFlBQTZCLFFBQXFCLEVBQ3hDLElBQWlCLEVBQ1IsR0FBZ0I7UUFGTixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3hDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDUixRQUFHLEdBQUgsR0FBRyxDQUFhO1FBL0MxQixZQUFPLEdBQUcsa0JBQWtCLENBQUM7UUFHN0IsWUFBTyxHQUEyRCxFQUFFLENBQUM7UUFDN0QsZ0JBQVcsR0FBRyxFQUFrQyxDQUFDO1FBQ2pELGVBQVUsR0FBRyxFQUFrQyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFD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IElucHV0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGNsZWFudXAsIG1hcFRvQXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBBWElTX1ZBTFVFX1BBVFRFUk4sIEN1YmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXNpZ25lclJlZiwgRWxlbWVudE1vZGVsIH0gZnJvbSAnLi9kZWNsYXJhdGlvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZGVzaWduZXItY3ViZS1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdWJlLWF4ZXMtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdWJlLWF4ZXMtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuLyoqIGZpbHRlciBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgRGVzaWduZXJDdWJlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IHBhdHRlcm4gPSBBWElTX1ZBTFVFX1BBVFRFUk47XHJcbiAgQElucHV0KCkgY3ViZSE6IEVsZW1lbnRNb2RlbDtcclxuICBASW5wdXQoKSBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHJlYWRvbmx5IHNvdXJjZXM6IHsgW2F4aXM6IHN0cmluZ106IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4gfSA9IHt9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlY2VuZGVudHMgPSB7fSBhcyB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuY2VzdG9ycyA9IHt9IGFzIHsgW25hbWU6IHN0cmluZ106IHN0cmluZ1tdIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaChrID0+IHRoaXMuZm9ybS5yZW1vdmVDb250cm9sKGssIHsgZW1pdEV2ZW50OiBmYWxzZSB9KSlcclxuICAgIHRoaXMuY3ViZS5heGVzLmZvckVhY2goYSA9PiB7XHJcbiAgICAgIGlmIChhLnNlbGVjdGlvbk1vZGUgPT09ICdOb25lJykgcmV0dXJuO1xyXG4gICAgICBsZXQgeyBkZXNjZW5kZW50T2YgfSA9IGE7XHJcbiAgICAgIGlmIChkZXNjZW5kZW50T2YpIHtcclxuICAgICAgICBsZXQgYW5jZXN0b3JzID0gdGhpcy5fYW5jZXN0b3JzW2EubmFtZV0gPSBbXTtcclxuICAgICAgICB3aGlsZSAoZGVzY2VuZGVudE9mKSB7XHJcbiAgICAgICAgICBsZXQgYXhpcyA9IHRoaXMuY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IGRlc2NlbmRlbnRPZik7XHJcbiAgICAgICAgICBhbmNlc3RvcnMucHVzaChheGlzLm5hbWUpO1xyXG4gICAgICAgICAgaWYgKGEuc2VsZWN0aW9uTW9kZSAhPT0gJ1BhdHRlcm4nKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fZGVjZW5kZW50c1tkZXNjZW5kZW50T2ZdKSB0aGlzLl9kZWNlbmRlbnRzW2Rlc2NlbmRlbnRPZl0gPSBbYS5uYW1lXTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLl9kZWNlbmRlbnRzW2Rlc2NlbmRlbnRPZl0ucHVzaChhLm5hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVzY2VuZGVudE9mID0gYXhpcy5kZXNjZW5kZW50T2Y7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zb3VyY2VzW2EubmFtZV0gJiYgYS5zZWxlY3Rpb25Nb2RlICE9PSAnUGF0dGVybicpIHtcclxuICAgICAgICB0aGlzLnNvdXJjZXNbYS5uYW1lXSA9IHRoaXMuX3NlcnZpY2UudmFsdWVzKHRoaXMuY3ViZS5uYW1lLCBhLm5hbWUpLnBpcGUobWFwKG1hcFRvQXJyYXkpKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjdHJsID0gdGhpcy5fZmIuY29udHJvbCh0aGlzKTtcclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woYS5uYW1lLCBjdHJsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIGN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoZmlsdGVyKCgpID0+IGN0cmwudmFsaWQpLCBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLl9kZWNlbmRlbnRzW2EubmFtZV0pXHJcbiAgICAgICAgICAgIGZvciAobGV0IGF4aXMgb2YgdGhpcy5fZGVjZW5kZW50c1thLm5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRlcHMgPSB7fTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBuYW1lIG9mIHRoaXMuX2FuY2VzdG9yc1theGlzXSlcclxuICAgICAgICAgICAgICAgIGRlcHNbbmFtZV0gPSAodGhpcy5mb3JtLmdldChuYW1lKSBhcyBGb3JtQ29udHJvbCkudmFsdWU7XHJcbiAgICAgICAgICAgICAgY2xlYW51cChkZXBzKTtcclxuICAgICAgICAgICAgICB0aGlzLnNvdXJjZXNbYXhpc10gPSB0aGlzLl9zZXJ2aWNlLnZhbHVlcyh0aGlzLmN1YmUubmFtZSwgYXhpcywgZGVwcykuXHJcbiAgICAgICAgICAgICAgICBwaXBlKG1hcChtYXBUb0FycmF5KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuICAvKiogZmlsdGVyIGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlZjogRGVzaWduZXJSZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mYjogRm9ybUJ1aWxkZXIpIHtcclxuICB9XHJcbiAgZGlzcGxheShrZXlWYWx1ZSkge1xyXG4gICAgcmV0dXJuIGtleVZhbHVlID8ga2V5VmFsdWUudmFsdWUgOiBudWxsO1xyXG4gIH1cclxuICBjaGFuZ2UoYXhpczogc3RyaW5nLCBldnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcclxuICAgIHRoaXMuZm9ybS5jb250cm9sc1theGlzXS5zZXRWYWx1ZShldnQub3B0aW9uLnZhbHVlLmtleSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxoMiBjbGFzcz1cIm1hdC10aXRsZVwiPnt7J0ZpbHRlcnMnfHRyYW5zbGF0ZX19PC9oMj5cclxuPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gIDxtYXQtZm9ybS1maWVsZCAqbmdGb3I9XCJsZXQgYSBvZiBjdWJlLmF4ZXNcIiBbbmdTd2l0Y2hdPVwiYS5zZWxlY3Rpb25Nb2RlXCIgW2F0dHIuZGF0YS1oZWxwXT1cIidheGlzLScrYS5uYW1lXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInUGF0dGVybidcIj5cclxuICAgICAgPGlucHV0IG1hdElucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICBbcGF0dGVybl09XCJwYXR0ZXJuXCIgW2F1dG9mb2N1c11cclxuICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiYS5uYW1lXCIgW3BsYWNlaG9sZGVyXT1cImEudGl0bGV8fGEubmFtZVwiIC8+XHJcbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzW2EubmFtZV0uaW52YWxpZFwiPnt7J1NpbXBsZVBhdHRlcm5FcnInIHx0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInU2VhcmNoJ1wiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cInNlZ21lbnRcIiAjaW5wXHJcbiAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiYS50aXRsZXx8YS5uYW1lXCIgLz5cclxuICAgICAgPG1hdC1hdXRvY29tcGxldGUgI3NlZ21lbnQgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiY2hhbmdlKGEubmFtZSwgJGV2ZW50KVwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIHNvdXJjZXNbYS5uYW1lXSB8IGFzeW5jIHwgZmlsdGVyIDogJ3ZhbHVlJyA6IGlucC52YWx1ZSB8IHNsaWNlOjA6NTBcIiBbdmFsdWVdPVwiclwiPnt7ci52YWx1ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiaW5wLnZhbHVlXCIgbWF0U3VmZml4IGFyaWEtbGFiZWw9XCJcIiAoY2xpY2spPVwiaW5wLnZhbHVlID0gJyc7IGZvcm0uY29udHJvbHNbYS5uYW1lXS5zZXRWYWx1ZShudWxsKVwiPjxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzW2EubmFtZV0uaW52YWxpZFwiPnt7J1NpbXBsZVBhdHRlcm5FcnInIHx0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImEubmFtZVwiIFtwbGFjZWhvbGRlcl09XCJhLnRpdGxlfHxhLm5hbWVcIiBbbXVsdGlwbGVdPVwiYS5zZWxlY3Rpb25Nb2RlID09PSAnTXVsdGlwbGUnXCIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJhLnNlbGVjdGlvbk1vZGUgIT09ICdNdWx0aXBsZSdcIj57eydBbGwnIHwgdHJhbnNsYXRlfX08L21hdC1vcHRpb24+XHJcbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIHNvdXJjZXNbYS5uYW1lXSB8IGFzeW5jXCIgW3ZhbHVlXT1cInIua2V5XCI+e3tyLnZhbHVlfX08L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1zZWxlY3Q+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -95,12 +95,11 @@ export class DesignerRef {
95
95
  get unlock() { return this._unlock$.asObservable(); }
96
96
  get state() { return this._state$.value; }
97
97
  set state(val) { this._state$.next(val); }
98
- create(element, template) {
98
+ create(element) {
99
99
  const ref = new DesignerRef(this._designer, element, 'widget');
100
100
  const injector = Injector.create([{
101
101
  provide: DesignerRef, useValue: ref
102
102
  }], this._element.injector);
103
- element.template = template;
104
103
  element.injector = injector;
105
104
  return element;
106
105
  }
@@ -126,4 +125,4 @@ export function programName(name) {
126
125
  replace(NAME_CHAR, (c, i) => (i > 0 && name.charAt(i - 1) !== '-' ? '-' : '') + c.toLowerCase()).
127
126
  replace(NON_NAME_CHAR, '_');
128
127
  }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2RlY2xhcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsT0FBTyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0JKO0lBQ0wsS0FBSyxFQUFFOzs7Ozs7OztPQVFGO0lBQ0wsS0FBSyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7T0FlRjtJQUNMLFVBQVUsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQlA7SUFDTCxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7T0FXZjtDQUNOLENBQUM7QUFDRixNQUFNO0FBQ04sTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFBb0IsU0FBd0IsRUFDbEMsUUFBc0IsRUFDdkIsSUFBZ0I7UUFGTCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUp6QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNsQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFHWixDQUFDO0lBQzlCLElBQUksUUFBUSxLQUFtQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxLQUFxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxNQUFNLENBQUMsT0FBb0IsRUFBRSxRQUFpQjtRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQXVCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0UsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHO2FBQ3BDLENBQUMsRUFBRyxJQUFJLENBQUMsUUFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxPQUF3QixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDN0MsT0FBd0IsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzlDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQVNELE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBcUI7SUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBQ0QsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFzQjtJQUM1QyxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFNBQVMsR0FBRyxTQUFTLEVBQ3pCLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDNUI7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZO0lBQ3RDLE9BQU8sSUFBSTtRQUNULE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTY29wZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIENoYXJ0VHlwZSwgQ3ViZUZpbHRlciwgRmllbGRJbmZvLCBGb2xkZXJDb2x1bW4sIEd1aWRlU3RlcCwgUG9zaXRpb25Qb2xpY3ksIFZpZXdUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmV4cG9ydCBjb25zdCBGQU1JTFlfU1ZHID0ge1xyXG4gIFwiQXp1cmVcIjogYDxzdmcgd2lkdGg9XCIzNFwiIGhlaWdodD1cIjM0XCIgdmlld0JveD1cIjAgMCA5NiA5NlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgIDxkZWZzPlxyXG4gICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImUzOTljMTlmLWI2OGYtNDI5ZC1iMTc2LTE4YzIxMTdmZjczY1wiIHgxPVwiLTEwMzIuMTcyXCIgeDI9XCItMTA1OS4yMTNcIiB5MT1cIjE0NS4zMTJcIiB5Mj1cIjY1LjQyNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEgMCAwIC0xIDEwNzUgMTU4KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxyXG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxMTRhOGJcIi8+XHJcbiAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzA2NjliY1wiLz5cclxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxyXG4gICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImFjMmE2ZmMyLWNhNDgtNDMyNy05YTNjLWQ0ZGNjMzI1NmUxNVwiIHgxPVwiLTEwMjMuNzI1XCIgeDI9XCItMTAyOS45OFwiIHkxPVwiMTA4LjA4M1wiIHkyPVwiMTA1Ljk2OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEgMCAwIC0xIDEwNzUgMTU4KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxyXG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1vcGFjaXR5PVwiLjNcIi8+XHJcbiAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIi4wNzFcIiBzdG9wLW9wYWNpdHk9XCIuMlwiLz5cclxuICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiLjMyMVwiIHN0b3Atb3BhY2l0eT1cIi4xXCIvPlxyXG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuNjIzXCIgc3RvcC1vcGFjaXR5PVwiLjA1XCIvPlxyXG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz5cclxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxyXG4gICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImE3ZmVlOTcwLWE3ODQtNGJiMS1hZjhkLTYzZDE4ZTVmN2RiOVwiIHgxPVwiLTEwMjcuMTY1XCIgeDI9XCItOTk3LjQ4MlwiIHkxPVwiMTQ3LjY0MlwiIHkyPVwiNjguNTYxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSAwIDAgLTEgMTA3NSAxNTgpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XHJcbiAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzNjY2JmNFwiLz5cclxuICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMjg5MmRmXCIvPlxyXG4gICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICA8L2RlZnM+XHJcbiAgICA8cGF0aCBmaWxsPVwidXJsKCNlMzk5YzE5Zi1iNjhmLTQyOWQtYjE3Ni0xOGMyMTE3ZmY3M2MpXCIgZD1cIk0zMy4zMzggNi41NDRoMjYuMDM4bC0yNy4wMyA4MC4wODdhNC4xNTIgNC4xNTIgMCAwIDEtMy45MzMgMi44MjRIOC4xNDlhNC4xNDUgNC4xNDUgMCAwIDEtMy45MjgtNS40N0wyOS40MDQgOS4zNjhhNC4xNTIgNC4xNTIgMCAwIDEgMy45MzQtMi44MjV6XCIvPlxyXG4gICAgPHBhdGggZmlsbD1cIiMwMDc4ZDRcIiBkPVwiTTcxLjE3NSA2MC4yNjFoLTQxLjI5YTEuOTExIDEuOTExIDAgMCAwLTEuMzA1IDMuMzA5bDI2LjUzMiAyNC43NjRhNC4xNzEgNC4xNzEgMCAwIDAgMi44NDYgMS4xMjFoMjMuMzh6XCIvPlxyXG4gICAgPHBhdGggZmlsbD1cInVybCgjYWMyYTZmYzItY2E0OC00MzI3LTlhM2MtZDRkY2MzMjU2ZTE1KVwiIGQ9XCJNMzMuMzM4IDYuNTQ0YTQuMTE4IDQuMTE4IDAgMCAwLTMuOTQzIDIuODc5TDQuMjUyIDgzLjkxN2E0LjE0IDQuMTQgMCAwIDAgMy45MDggNS41MzhoMjAuNzg3YTQuNDQzIDQuNDQzIDAgMCAwIDMuNDEtMi45bDUuMDE0LTE0Ljc3NyAxNy45MSAxNi43MDVhNC4yMzcgNC4yMzcgMCAwIDAgMi42NjYuOTcySDgxLjI0TDcxLjAyNCA2MC4yNjFsLTI5Ljc4MS4wMDdMNTkuNDcgNi41NDR6XCIvPlxyXG4gICAgPHBhdGggZmlsbD1cInVybCgjYTdmZWU5NzAtYTc4NC00YmIxLWFmOGQtNjNkMThlNWY3ZGI5KVwiIGQ9XCJNNjYuNTk1IDkuMzY0YTQuMTQ1IDQuMTQ1IDAgMCAwLTMuOTI4LTIuODJIMzMuNjQ4YTQuMTQ2IDQuMTQ2IDAgMCAxIDMuOTI4IDIuODJsMjUuMTg0IDc0LjYyYTQuMTQ2IDQuMTQ2IDAgMCAxLTMuOTI4IDUuNDcyaDI5LjAyYTQuMTQ2IDQuMTQ2IDAgMCAwIDMuOTI3LTUuNDcyelwiLz5cclxuPC9zdmc+YCxcclxuICAnU0FQJzogYDxzdmcgaGVpZ2h0PVwiNDVcIiB2aWV3Qm94PVwiMCAwIDE5Mi43NTYgMTkyLjc1NlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICA8ZGVmcz48L2RlZnM+XHJcbiAgPHBhdGggZmlsbD1cIiNmZmZcIiBkPVwiTSAwIDAgTCAxOTIuNzU2IDAgTCAxOTIuNzU2IDE5Mi43NTYgTCAwIDE5Mi43NTYgTCAwIDAgWlwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCI+PC9wYXRoPlxyXG4gIDxwYXRoIGQ9XCJNIDE4My43MjcgNjYuNzc1IEMgMTg3LjAwNiA2Ni43NzUgMTg5LjkyMiA2My44NjEgMTg5LjkyMiA2MC4yMTcgQyAxODkuOTIyIDU2Ljc1NiAxODcuMDA2IDU0LjAyMyAxODMuNzI3IDU0LjAyMyBDIDE4MC4yNjYgNTQuMDIzIDE3Ny4xNyA1Ni43NTUgMTc3LjE3IDYwLjIxNyBDIDE3Ny4xNyA2My44NjEgMTgwLjI2NiA2Ni43NzUgMTgzLjcyNyA2Ni43NzUgWiBNIDE4My43MjcgNjUuODY1IEMgMTgwLjQ1IDY1Ljg2NSAxNzguMDgxIDYzLjQ5NyAxNzguMDgxIDYwLjIxOCBDIDE3OC4wODEgNTcuMzAzIDE4MC40NSA1NC45MzUgMTgzLjcyNyA1NC45MzUgQyAxODYuNjQ0IDU0LjkzNyAxODkuMDA4IDU3LjMwMSAxODkuMDEgNjAuMjE4IEMgMTg5LjAxIDYzLjQ5NyAxODYuNjQzIDY1Ljg2NSAxODMuNzI3IDY1Ljg2NSBaXCIgZmlsbD1cIiMyMzRiOGRcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiPjwvcGF0aD5cclxuICA8cGF0aCBkPVwiTSAxODIuMDg4IDYwLjk0NiBMIDE4NC4yNzQgNjAuOTQ2IEMgMTg1LjE4NiA2MC45NDYgMTg1LjM2OCA2MS40OTIgMTg1LjM2OCA2Mi4wMzkgQyAxODUuMzY4IDYyLjIyMiAxODUuMzY4IDYzLjMxNCAxODUuNTUgNjMuODYxIEwgMTg2LjY0NCA2My44NjEgTCAxODYuNjQ0IDYzLjQ5NyBDIDE4Ni40NjIgNjMuMzE0IDE4Ni4yNzkgNjMuMzE0IDE4Ni4yNzkgNjIuOTUgTCAxODYuMjc5IDYxLjg1NyBDIDE4Ni4yNzkgNjAuOTQ2IDE4NS45MTYgNjAuNzY0IDE4NS41NSA2MC41ODIgQyAxODYuMDk3IDYwLjIxOCAxODYuNDYyIDU5Ljg1MyAxODYuNDYyIDU4Ljc2MSBDIDE4Ni40NjIgNTcuNDg2IDE4NS4zNjggNTYuOTM5IDE4NC4yNzQgNTYuOTM5IEwgMTgxLjE3OCA1Ni45MzkgTCAxODEuMTc4IDYzLjg2MiBMIDE4Mi4wODggNjMuODYyIEwgMTgyLjA4OCA2MC45NDYgTCAxODIuMDg4IDYwLjk0NiBaIE0gMTgyLjA4OCA1Ny44NSBMIDE4NC4yNzQgNTcuODUgQyAxODQuODIxIDU3Ljg1IDE4NS41NDkgNTcuODUgMTg1LjU0OSA1OC45NDMgQyAxODUuNTQ5IDU5Ljg1NCAxODQuODIgNjAuMDM2IDE4NC4wOTIgNjAuMDM2IEwgMTgyLjA4OCA2MC4wMzYgTCAxODIuMDg4IDU3Ljg1IEwgMTgyLjA4OCA1Ny44NSBaIE0gMy4zODEgNTMuODQyIEwgODcuMTc4IDUzLjg0MiBMIDg3LjE3OCAxMzcuODIxIEwgMy4zODEgMTM3LjgyMSBMIDMuMzgxIDUzLjg0MiBaIE0gMTc0LjgwMSA1My44NDIgTCA5MC44MjIgNTMuODQyIEwgOTAuODIyIDEzNy44MjEgTCAxNzQuODAxIDUzLjg0MiBaXCIgZmlsbD1cIiMyMzRiOGRcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiPjwvcGF0aD5cclxuICA8cGF0aCBkPVwiTSA2OS41MDggMTI5LjI2IEwgNzYuMDY2IDEyOS4yNiBDIDg1LjcyMSAxMjkuMjYgODcuNTQzIDEyMS4wNjIgODcuMTc4IDExOC42OTQgQyA4Ni42MzIgMTEyLjg2NSA4Mi4yNiAxMDkuMjIxIDc2LjI0OCAxMDkuMjIxIEwgNjAuMjE3IDEwOS4yMjEgTCA2MC4yMTcgMTM4LjU1IEwgNjkuNTA4IDEzOC41NSBMIDY5LjUwOCAxMjkuMjYgWiBNIDY5LjUwOCAxMjIuMzM3IEwgNjkuNTA4IDExNS45NjEgTCA3My41MTUgMTE1Ljk2MSBDIDc2Ljc5NCAxMTUuOTYxIDc4LjA2OSAxMTYuNjkgNzguMDY5IDExOS4wNTggQyA3OC4wNjkgMTIwLjE1MSA3OC4wNjkgMTIyLjMzNyA3NC40MjYgMTIyLjMzNyBMIDY5LjUwOCAxMjIuMzM3IEwgNjkuNTA4IDEyMi4zMzcgWlwiIGZpbGw9XCIjZmZmXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIj48L3BhdGg+XHJcbiAgPHBhdGggZD1cIk0gMzkuOTk3IDEzMi4zNTYgTCA0OS4yODggMTMyLjM1NiBMIDUxLjY1NiAxMzguNTQ5IEwgNjEuNDkzIDEzOC41NDkgTCA1MC4zOCAxMDkuMjIxIEwgMzkuMjY4IDEwOS4yMjEgTCAyNy45NzQgMTM4LjU1IEwgMzcuNDQ3IDEzOC41NSBMIDM5Ljk5NyAxMzIuMzU2IEwgMzkuOTk3IDEzMi4zNTYgWiBNIDQ0LjkxNiAxMTcuNDE5IEwgNDguMTk1IDEyNi4xNjIgTCA0MS44MiAxMjYuMTYyIEwgNDQuOTE2IDExNy40MTkgWlwiIGZpbGw9XCIjZmZmXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIj48L3BhdGg+XHJcbiAgPHBhdGggZD1cIk0gMi44MzQgMTI5LjI2IEwgMi44MzQgMTMwLjkgQyAyLjgzNCAxMzYuNzI5IDkuOTM4IDEzOC45MTUgMTYuNjc5IDEzOC45MTUgQyAyNS43ODcgMTM4LjkxNSAzMS4yNTMgMTM1LjYzNiAzMS4yNTMgMTI5LjI2MSBDIDMxLjI1MyAxMTkuMDU5IDEzLjAzNiAxMjIuMTU2IDEzLjAzNiAxMTYuMTQ1IEMgMTMuMDM2IDExMy45NTggMTQuNjc2IDExMy4yMyAxNy4yMjYgMTEzLjIzIEMgMTguODY1IDExMy4yMyAxOS40MTIgMTEzLjU5NCAxOS45NTggMTEzLjk1OSBDIDIxLjA1MSAxMTQuNjg4IDIxLjA1MSAxMTUuNTk5IDIxLjA1MSAxMTcuMjM4IEwgMzAuNzA2IDExNy4yMzggTCAzMC43MDYgMTE2LjUwOSBDIDMwLjcwNiAxMTIuMTM3IDI2Ljg4IDEwOC40OTMgMTcuMjI2IDEwOC40OTMgQyA2LjY2IDEwOC40OTMgMy4zODEgMTEyLjUwMSAzLjM4MSAxMTcuMjM3IEMgMy4zODEgMTI3LjYyMSAyMS41OTggMTI0LjM0MSAyMS41OTggMTMwLjcxNyBDIDIxLjU5OCAxMzEuOTkyIDIwLjUwNSAxMzMuODE0IDE2LjY3OSAxMzMuODE0IEMgMTMuNTgyIDEzMy44MTQgMTIuNDg5IDEzMi4zNTcgMTIuNDg5IDEzMC4xNyBMIDEyLjQ4OSAxMjkuMjYgTCAyLjgzNCAxMjkuMjYgTCAyLjgzNCAxMjkuMjYgWlwiIGZpbGw9XCIjZmZmXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIj48L3BhdGg+XHJcbjwvc3ZnPmAsXHJcbiAgJ01mZyc6IGA8c3ZnIGhlaWdodD1cIjM0XCIgdmlld0JveD1cIjAgMCAxMDAgNTBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgPGRlZnM+PC9kZWZzPlxyXG4gIDxyZWN0IHdpZHRoPVwiOTNcIiBoZWlnaHQ9XCIzOFwiIHN0eWxlPVwiZmlsbDogcmdiKDIxNiwgMjE2LCAyMTYpO1wiPjwvcmVjdD5cclxuICA8ZyB0cmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgMSwgNSwgNilcIj5cclxuICAgIDxnPlxyXG4gICAgICA8Zz5cclxuICAgICAgICA8cGF0aCBmaWxsPVwiI0ZGRkZGRlwiIGQ9XCJNNDEuMSwxLjhsMTMuMSwyMC41aC0zLjhMNDcsMTcuMUgzNS42bC0zLjEsNS4yaC0zLjhMNDEuMSwxLjh6IE0zNy4yLDE0LjVoOC4xbC00LjItNi42TDM3LjIsMTQuNXpcIj48L3BhdGg+XHJcbiAgICAgICAgPHBhdGggZmlsbD1cIiNGRkZGRkZcIiBkPVwiTTU5LjMsMi41aDkuM2M4LjgsMCwxMi43LDUuMiwxMi43LDkuOWMwLDUuMS00LjgsOS45LTEyLjYsOS45aC05LjNWMi41eiBNNjIuNywxOS43aDUuNFxyXG5cdFx0XHRcdGM3LjgsMCw5LjUtNC45LDkuNS03LjRjMC00LTMtNy40LTkuNy03LjRoLTUuM1YxOS43elwiPjwvcGF0aD5cclxuICAgICAgICA8cGF0aCBmaWxsPVwiI0ZGRkZGRlwiIGQ9XCJNMjUuNywxMi4zYzAtNS44LTUuNC0xMC4xLTEyLjUtMTAuMUM1LjQsMi4yLDAsNi40LDAsMTIuNGMwLDYsNS40LDEwLjIsMTMuMSwxMC4yYzEuNCwwLDIuNi0wLjIsMy44LTAuNVxyXG5cdFx0XHRcdGwzLjMsMi42aDVsLTQuOS0zLjlDMjMuNiwxOSwyNS43LDE1LjksMjUuNywxMi4zeiBNMTMuMSwyMGMtNi40LDAtOS41LTMuNS05LjUtNy41YzAtMywyLjMtNy42LDkuNS03LjZjNS4zLDAsOS4yLDMuMyw5LjIsNy43XHJcblx0XHRcdFx0QzIyLjEsMTYuNSwxOC40LDIwLDEzLjEsMjB6XCI+PC9wYXRoPlxyXG4gICAgICA8L2c+XHJcbiAgICA8L2c+XHJcbiAgPC9nPlxyXG48L3N2Zz5gLFxyXG4gICdQcmlvcml0eSc6IGA8c3ZnIGZpbGw9XCJub25lXCIgaGVpZ2h0PVwiNjBcIiB2aWV3Qm94PVwiMCAwIDI0MCAxMzNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgPGc+XHJcbiAgICA8cGF0aCBkPVwiTSAwIDAgTCAyNDAgMCBMIDI0MCA4MC40NyBMIDAgODAuNDcgTCAwIDAgWlwiIGZpbGw9XCIjZmZmXCIgc3R5bGU9XCJcIi8+XHJcbiAgICA8ZyB0cmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgMSwgLTEyLjUyNDg0MSwgLTI0LjU5MTQ0NClcIj5cclxuICAgICAgPHBhdGggZD1cIk0gMTc3Ljc0OCA1MC42NzMgTCAxNzMuNjQyIDUwLjY3MyBMIDE3My42NDIgNTUuMDIyIEwgMTc3Ljc0OCA1NS4wMjIgTCAxNzcuNzQ4IDUwLjY3MyBaXCIgZmlsbD1cIiMwMGFlZWZcIi8+XHJcbiAgICAgIDxwYXRoIGQ9XCJNIDYyLjczNCA1Ni41NzggQyA2Mi43MzQgNTUuNDQgNjIuNDIzIDU1LjA3NyA2MS40MzcgNTUuMDI2IEwgNTkuMjYzIDU0Ljg2OSBMIDU5LjI2MyA1MC42NzQgTCA2OC4wMTkgNTAuNjc0IEwgNjguMDE5IDU0LjU1OCBDIDY5LjIxMSA1MS45NjggNzEuOTU2IDQ5Ljg5NiA3NS4zNzMgNDkuODk2IEMgNzcuMDg2IDQ5Ljg5NiA3OC42NCA1MC4yMDcgODAuMzQ4IDUxLjAzNSBMIDgwLjM0OCA1OC43NTUgTCA3NS41MzEgNTkuMTE3IEwgNzUuNTMxIDU2LjczNCBDIDc1LjUzMSA1Ni4xMTMgNzUuNDI4IDU1LjY0NyA3NS4wMTIgNTUuNDQgQyA3NC41NDQgNTUuMjMyIDc0LjE4IDU1LjE4IDczLjYxMyA1NS4xOCBDIDcwLjgxNSA1NS4xOCA2OC44OTggNTcuNDA5IDY4Ljg5OCA2MC40MTQgTCA2OC44OTggNzIuNDMxIEwgNzMuNDA4IDcyLjYzNiBMIDczLjQwOCA3Ni43MyBMIDU5LjUyIDc2LjczIEwgNTkuNTIgNzIuNzk1IEwgNjEuMjMyIDcyLjYzNiBDIDYyLjIxNyA3Mi41MzMgNjIuNzM0IDcyLjIyNCA2Mi43MzQgNzAuOTI5IEwgNjIuNzM0IDU2LjU3OCBaXCIgZmlsbD1cIiMwMDBcIi8+XHJcbiAgICAgIDxwYXRoIGQ9XCJNIDExNS40NjkgNjMuODMyIEMgMTE1LjQ2OSA1OC4wMzEgMTE0LjA3NCA1NC40NTYgMTA5LjkzIDU0LjQ1NiBDIDEwNS44MzMgNTQuNDU2IDEwNC4xNzcgNTcuOTc4IDEwNC4xNzcgNjIuOTUyIEMgMTA0LjE3NyA2Ny43NjggMTA0Ljg1IDcyLjk0NiAxMDkuODI1IDcyLjk0NiBDIDExMy44NjUgNzIuOTQ2IDExNS40NjkgNjkuMjIxIDExNS40NjkgNjMuODMyIFogTSAxMTAuMjM5IDQ5Ljg5NiBDIDExNC4wNzQgNDkuODk2IDEyMS43ODkgNTEuMDg1IDEyMS43ODkgNjMuMDAzIEMgMTIxLjc4OSA3Mi45NDYgMTE2LjI0NyA3Ny41MDcgMTA5LjQxIDc3LjUwNyBDIDEwMi40NjcgNzcuNTA3IDk3LjkwOSA3My4wNTMgOTcuOTA5IDYzLjY3NCBDIDk3LjkwOSA1Mi45MDIgMTA0LjkwNCA0OS44OTYgMTEwLjIzOSA0OS44OTYgWlwiIGZpbGw9XCIjMDAwXCIvPlxyXG4gICAgICA8cGF0aCBkPVwiTSAxMjcuNTQzIDU2LjU3OCBDIDEyNy41NDMgNTUuNDQgMTI3LjIzNSA1NS4wNzcgMTI2LjI1IDU1LjAyNiBMIDEyNC4wNzIgNTQuODY5IEwgMTI0LjA3MiA1MC42NzQgTCAxMzIuODMgNTAuNjc0IEwgMTMyLjgzIDU0LjU1OCBDIDEzNC4wMTkgNTEuOTY4IDEzNi43NjYgNDkuODk2IDE0MC4xODcgNDkuODk2IEMgMTQxLjg5NCA0OS44OTYgMTQzLjQ0OSA1MC4yMDcgMTQ1LjE1OCA1MS4wMzUgTCAxNDUuMTU4IDU4Ljc1NSBMIDE0MC4zNDEgNTkuMTE3IEwgMTQwLjM0MSA1Ni43MzQgQyAxNDAuMzQxIDU2LjExMyAxNDAuMjM4IDU1LjY0NyAxMzkuODIyIDU1LjQ0IEMgMTM5LjM1NiA1NS4yMzIgMTM4Ljk5NSA1NS4xOCAxMzguNDI1IDU1LjE4IEMgMTM1LjYyNSA1NS4xOCAxMzMuNzEgNTcuNDA5IDEzMy43MSA2MC40MTQgTCAxMzMuNzEgNzIuNDMxIEwgMTM4LjIxNSA3Mi42MzYgTCAxMzguMjE1IDc2LjczIEwgMTI0LjMzMyA3Ni43MyBMIDEyNC4zMzMgNzIuNzk1IEwgMTI2LjA0MiA3Mi42MzYgQyAxMjcuMDI2IDcyLjUzMyAxMjcuNTQzIDcyLjIyNCAxMjcuNTQzIDcwLjkyOSBMIDEyNy41NDMgNTYuNTc4IFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gMjAyLjAxNiA3MS44MTIgQyAyMDAuMjAzIDc0LjQgMTk3LjA0NiA3NS44NTEgMTkzLjYyMiA3NS44NTEgQyAxODguNDQzIDc1Ljg1MSAxODUuNTk0IDczLjAwMSAxODUuNTk0IDY2Ljg4NyBMIDE4NS41OTQgNTYuNDc3IEMgMTg1LjU5NCA1NS4zODYgMTg1LjE3OCA1NS4wNzggMTg0LjMwMSA1NS4wMjMgTCAxODIuNjM5IDU0LjkyMSBMIDE4Mi42MzkgNTAuNjczIEwgMTkxLjc1NiA1MC42NzMgTCAxOTEuNzU2IDY1LjU0MSBDIDE5MS43NTYgNjguNyAxOTIuMjc0IDcxLjA4NCAxOTUuNTkxIDcxLjA4NCBDIDE5OS4yMiA3MS4wODQgMjAxLjEzNiA2OC42NDcgMjAxLjEzNiA2NS45NTcgTCAyMDEuMTM2IDU2LjU3OCBDIDIwMS4xMzYgNTUuNDQgMjAwLjgyMiA1NS4wMjMgMTk5LjgzNyA1NS4wMjMgTCAxOTguMTgyIDU0LjkyMSBMIDE5OC4xODIgNTAuNjczIEwgMjA3LjI5NyA1MC42NzMgTCAyMDcuMjk3IDc1Ljc0NyBDIDIwNy4yOTcgODQuMjk2IDIwMyA4Ny44MTcgMTk1LjI3OCA4Ny44MTcgQyAxOTIuMDE2IDg3LjgxNyAxODcuNzE5IDg3LjE5NiAxODUuNTQ0IDg2LjEwOSBMIDE4NS41NDQgODAuNjk0IEwgMTkwLjQ2MyA4MC4yNzggTCAxOTAuNDYzIDgwLjk3OCBDIDE5MC40NjMgODEuOTYyIDE5MC43MjEgODIuNDgyIDE5MS42NTcgODIuODQzIEMgMTkyLjYzOSA4My4yMDcgMTkzLjc4MSA4My4zNjIgMTk1LjMzNCA4My4zNjIgQyAyMDAuMDk5IDgzLjM2MiAyMDIuMDE2IDgwLjQ2MSAyMDIuMDE2IDc1Ljc0NyBMIDIwMi4wMTYgNzEuODEyIFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gMTU3LjY3MSA3Mi40MyBMIDE1Ny42NzEgNTAuNjc0IEwgMTQ4LjM5OCA1MC42NzQgTCAxNDguMzk4IDU0Ljk3MiBMIDE1MC4yMSA1NS4wNzcgQyAxNTEuMTkzIDU1LjA3NyAxNTEuNTA4IDU1LjQzOSAxNTEuNTA4IDU2LjU3NyBMIDE1MS41MzUgNzYuNzMgTCAxNjAuNjIyIDc2LjczIEwgMTYwLjYyMiA3Mi41ODYgTCAxNTcuNjcxIDcyLjQzIFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gOTIuODYgNzIuNDMgTCA5Mi44NiA1MC42NzQgTCA4My41ODkgNTAuNjc0IEwgODMuNTg5IDU0Ljk3MiBMIDg1LjM5OSA1NS4wNzcgQyA4Ni4zODYgNTUuMDc3IDg2LjY5NyA1NS40MzkgODYuNjk3IDU2LjU3NyBMIDg2LjY2OSA3Ni43MyBMIDk1LjgxNCA3Ni43MyBMIDk1LjgxNCA3Mi41ODYgTCA5Mi44NiA3Mi40MyBaXCIgZmlsbD1cIiMwMDBcIi8+XHJcbiAgICAgIDxwYXRoIGQ9XCJNIDE3OS4xNzEgNzEuNjUzIEMgMTc4LjM0NiA3Mi4xNzMgMTc3LjA0OCA3Mi43NDEgMTc1LjY1MyA3Mi43NDEgQyAxNzMuNTI0IDcyLjc0MSAxNzIuMjgxIDcxLjgxMSAxNzIuMjgxIDY4LjY0NyBMIDE3Mi4yODEgNDUuMTgzIEwgMTY4LjkxNiA0NS4xODMgQyAxNjcuODI4IDQ4LjEzNCAxNjYuNTg2IDUwLjkzMyAxNjIuOTU4IDUxLjI0MiBMIDE2Mi40NDIgNTUuMDIzIEwgMTY2LjEyIDU1LjAyMyBMIDE2Ni4xMiA2OC44NTUgQyAxNjYuMTIgNzIuNDgxIDE2Ni4wNjYgNzcuNDU1IDE3NC4xNDQgNzcuNDU1IEMgMTc2LjU4MiA3Ny40NTUgMTc5LjE3MSA3Ni43MyAxODAuNzI4IDc1LjY0NCBMIDE3OS4xNzEgNzEuNjUzIFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gNDQuMzMyIDcyLjU4NyBDIDQyLjk4NiA3Mi41ODcgNDEuMTIxIDcyLjE3MyAzOS43NzUgNzEuMjkxIEwgMzkuNzc1IDU5LjM3NyBDIDM5Ljc3NSA1Ni45OTUgNDIuMDUzIDU0LjkyIDQ1LjAwNyA1NC45MiBDIDQ3Ljc1MSA1NC45MiA1MC4yNDIgNTYuNjg0IDUwLjI0MiA2My41NzIgQyA1MC4yNDIgNjguMDc3IDQ4LjczNyA3Mi41ODcgNDQuMzMyIDcyLjU4NyBaIE0gNDcuMjg5IDQ5Ljg5NiBDIDQyLjg4NCA0OS44OTYgNDAuMDM2IDUyLjI3OSAzOS4xMDMgNTQuMDQgTCAzOS4xMDMgNTAuNjc1IEwgMzAuMzQ3IDUwLjY3NSBMIDMwLjM0NyA1NC44NjggTCAzMi41MjUgNTUuMDIzIEMgMzMuNTA3IDU1LjAyMyAzMy44MTYgNTUuNDQgMzMuODE2IDU2LjU3OCBMIDMzLjc4MSA4Ny40NTUgTCA0My45NjggODcuNDU1IEwgNDMuOTY4IDgzLjM2MiBMIDM5Ljc3NSA4My4xNTMgTCAzOS43NzUgNzYuMDA1IEMgNDEuMTIxIDc2LjgzMyA0My4yOTYgNzcuNTA3IDQ1LjMxNyA3Ny41MDcgQyA1Mi4xNTggNzcuNTA3IDU2LjY2MiA3Mi41ODcgNTYuNjYyIDYzLjA1NSBDIDU2LjY2MiA1My43ODMgNTMuMDM4IDQ5Ljg5NiA0Ny4yODkgNDkuODk2IFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gMjEyLjg4MiA3Mi42NjIgTCAyMTIuODgyIDczLjI3MiBMIDIxMS42NzQgNzMuMjcyIEwgMjExLjY3NCA3Ni42NzYgTCAyMTAuOTI3IDc2LjY3NiBMIDIxMC45MjcgNzMuMjcyIEwgMjA5LjcxNyA3My4yNzIgTCAyMDkuNzE3IDcyLjY2MiBMIDIxMi44ODIgNzIuNjYyIFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gMjE1LjQwMSA3NS4xOTQgQyAyMTUuNDI5IDc1LjI1OCAyMTUuNDU2IDc1LjMyMiAyMTUuNDggNzUuMzg4IEMgMjE1LjUxIDc1LjMyMiAyMTUuNTM0IDc1LjI1MyAyMTUuNTY0IDc1LjE5IEMgMjE1LjU4OSA3NS4xMjQgMjE1LjYxOCA3NS4wNjYgMjE1LjY1IDc1LjAwNCBMIDIxNi44NCA3Mi43ODEgQyAyMTYuODU1IDcyLjc1MiAyMTYuODY4IDcyLjczIDIxNi44ODQgNzIuNzE3IEMgMjE2LjkwMSA3Mi42OTcgMjE2LjkyMSA3Mi42ODUgMjE2LjkzOSA3Mi42NzggQyAyMTYuOTU2IDcyLjY2OSAyMTYuOTggNzIuNjY4IDIxNy4wMDMgNzIuNjY1IEMgMjE3LjAyMyA3Mi42NjMgMjE3LjA1NyA3Mi42NjIgMjE3LjA4OSA3Mi42NjIgTCAyMTcuNjUzIDcyLjY2MiBMIDIxNy42NTMgNzYuNjc2IEwgMjE2Ljk5NCA3Ni42NzYgTCAyMTYuOTk0IDc0LjA4MiBDIDIxNi45OTQgNzQuMDMzIDIxNi45OTUgNzMuOTggMjE2Ljk5OSA3My45MjYgQyAyMTcuMDAyIDczLjg2NiAyMTcuMDA1IDczLjgwOSAyMTcuMDExIDczLjc1MSBMIDIxNS43OTkgNzYuMDI2IEMgMjE1Ljc3IDc2LjA3NSAyMTUuNzM0IDc2LjExNyAyMTUuNjg5IDc2LjE0NiBDIDIxNS42NDYgNzYuMTc1IDIxNS41OTQgNzYuMTg3IDIxNS41MzQgNzYuMTg3IEwgMjE1LjQzMyA3Ni4xODcgQyAyMTUuMzczIDc2LjE4NyAyMTUuMzE5IDc2LjE3NSAyMTUuMjc1IDc2LjE0NiBDIDIxNS4yMzMgNzYuMTE3IDIxNS4xOTUgNzYuMDc1IDIxNS4xNjUgNzYuMDI2IEwgMjEzLjk0MSA3My43NDIgQyAyMTMuOTQ3IDczLjgwMyAyMTMuOTUgNzMuODYxIDIxMy45NTMgNzMuOTIgQyAyMTMuOTU3IDczLjk3OCAyMTMuOTU4IDc0LjAzMiAyMTMuOTU4IDc0LjA4MiBMIDIxMy45NTggNzYuNjc2IEwgMjEzLjI5OSA3Ni42NzYgTCAyMTMuMjk5IDcyLjY2MiBMIDIxMy44NjYgNzIuNjYyIEMgMjEzLjg5OSA3Mi42NjIgMjEzLjkyNCA3Mi42NjMgMjEzLjk1IDcyLjY2NSBDIDIxMy45NzQgNzIuNjY4IDIxMy45OTIgNzIuNjY5IDIxNC4wMTUgNzIuNjc4IEMgMjE0LjAzNSA3Mi42ODUgMjE0LjA1MiA3Mi42OTcgMjE0LjA2NyA3Mi43MTcgQyAyMTQuMDg5IDcyLjczIDIxNC4xMDMgNzIuNzUyIDIxNC4xMTYgNzIuNzgxIEwgMjE1LjMxNCA3NS4wMDkgQyAyMTUuMzQ4IDc1LjA2OCAyMTUuMzc1IDc1LjEzMyAyMTUuNDAxIDc1LjE5NCBaXCIgZmlsbD1cIiMwMDBcIi8+XHJcbiAgICA8L2c+XHJcbiAgPC9nPlxyXG48L3N2Zz5gLFxyXG4gICdBY3RpdmUgRGlyZWN0b3J5JzogYDxzdmcgdmlld0JveD1cIjAgMCA5NTQuMSAxNTguMlwiIGhlaWdodD1cIjM4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gIDxkZWZzPjwvZGVmcz5cclxuICA8c3R5bGU+LnN0MHtmaWxsOiMwMGFhZjJ9PC9zdHlsZT5cclxuICA8ZyBpZD1cIkxheWVyXzJfMV9cIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAtMzMuNTYxKVwiPlxyXG4gICAgPGcgaWQ9XCJMYXllcl8xLTJcIj5cclxuICAgICAgPHBhdGggaWQ9XCJwYXRoNlwiIGNsYXNzPVwic3QwXCIgZD1cIk0xNTguNiAxNTQuMnYzMy4zYzAgMy45LTEuMiA0LjctNC45IDQuMS0yNC44LTMuNy00OS45LTcuMS03NC45LTEwLjYtNC41LS42LTYuMS0yLjItNi4xLTcuMS40LTE3LjcuMi0zNS41IDAtNTMuNCAwLTMuOSAxLjItNS4xIDUuMS01LjEgMjUuNi4yIDUwLjguMiA3NS45LjIgNC4xIDAgNS4xIDEuNiA1LjEgNS4zLS40IDExLjItLjIgMjIuMi0uMiAzMy4zelwiIHRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAxLCA1OC42NzgxNjQsIDMzLjY1OTgwNClcIj48L3BhdGg+XHJcbiAgICAgIDxwYXRoIGlkPVwicGF0aDhcIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTE2LjEgMTA5LjJjLTEyLjYgMC0yNS4yLS4yLTM3LjggMC0zLjkgMC01LjUtLjgtNS41LTUuMy4yLTE4LjEuMi0zNS45IDAtNTMuOCAwLTMuNSAxLjItNC43IDQuNS01LjMgMjUuOC0zLjcgNTEuNi03LjMgNzcuNC0xMS4yIDQuNS0uNiAzLjcgMi40IDMuNyA0LjkgMCAxNiAuMiAzMi4zIDAgNDguMyAwIDUuOS0uMiAxMS44IDAgMTcuNy4yIDMuNy0xLjIgNC43LTQuNyA0LjctMTIuNC0uMi0yNSAwLTM3LjYgMHpcIiB0cmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgMSwgNTguNjc4MTY0LCAzMy42NTk4MDQpXCI+PC9wYXRoPlxyXG4gICAgICA8cGF0aCBpZD1cInBhdGgxMFwiIGNsYXNzPVwic3QwXCIgZD1cIk0zMi43IDExNS45aDI4LjJjMyAwIDQuMyAxIDQuMyA0LjF2NTUuNmMwIDMuMi0xLjQgMy41LTQuMyAzLjItMTguNy0yLjgtMzcuNC01LjUtNTYtOC4xLTMuNy0uNi00LjktMS44LTQuOS01LjcuMi0xNC44LjItMjkuNiAwLTQ0LjcgMC0zLjcgMS00LjcgNC43LTQuNyA5LjUuMyAxOC42LjMgMjggLjN6XCIgdHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIDEsIDU4LjY3ODE2NCwgMzMuNjU5ODA0KVwiPjwvcGF0aD5cclxuICAgICAgPHBhdGggaWQ9XCJwYXRoMTJcIiBjbGFzcz1cInN0MFwiIGQ9XCJNMzIuNyAxMDkuMkg0LjljLTMuNSAwLTQuNy0xLjItNC43LTQuOS4yLTE0LjYuMi0yOS4yIDAtNDMuOSAwLTMuNSAxLTQuNyA0LjctNS4zIDE4LjctMi40IDM3LjQtNS4xIDU2LTguMSA0LjMtLjYgNC43LjggNC43IDQuM3Y1My4yYzAgMy45LTEuNiA0LjUtNS4xIDQuNS05LjMgMC0xOC43LjItMjcuOC4yelwiIHRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAxLCA1OC42NzgxNjQsIDMzLjY1OTgwNClcIj48L3BhdGg+XHJcbiAgICA8L2c+XHJcbiAgPC9nPlxyXG48L3N2Zz5gXHJcbn07XHJcbi8qKiAqL1xyXG5leHBvcnQgY2xhc3MgRGVzaWduZXJSZWY8TyA9IGFueT4ge1xyXG4gIF91bmxvY2skID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBfc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rlc2lnbmVyOiBEZXNpZ25lck1vZGVsLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudE1vZGVsLFxyXG4gICAgcHVibGljIG1vZGU6IERlc2lnbk1vZGUpIHsgfVxyXG4gIGdldCBkZXNpZ25lcigpOiBEZXNpZ25lckluZm8geyByZXR1cm4gdGhpcy5fZGVzaWduZXI7IH1cclxuICBnZXQgbW9kZWwoKTogRWxlbWVudEluZm88Tz4geyByZXR1cm4gdGhpcy5fZWxlbWVudDsgfVxyXG4gIGdldCB1bmxvY2soKSB7IHJldHVybiB0aGlzLl91bmxvY2skLmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgZ2V0IHN0YXRlKCkgeyByZXR1cm4gdGhpcy5fc3RhdGUkLnZhbHVlOyB9XHJcbiAgc2V0IHN0YXRlKHZhbCkgeyB0aGlzLl9zdGF0ZSQubmV4dCh2YWwpOyB9XHJcbiAgY3JlYXRlKGVsZW1lbnQ6IEVsZW1lbnRJbmZvLCB0ZW1wbGF0ZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgcmVmID0gbmV3IERlc2lnbmVyUmVmKHRoaXMuX2Rlc2lnbmVyLCBlbGVtZW50IGFzIEVsZW1lbnRNb2RlbCwgJ3dpZGdldCcpO1xyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW3tcclxuICAgICAgcHJvdmlkZTogRGVzaWduZXJSZWYsIHVzZVZhbHVlOiByZWZcclxuICAgIH1dLCAodGhpcy5fZWxlbWVudCBhcyBFbGVtZW50TW9kZWwpLmluamVjdG9yKTtcclxuICAgIChlbGVtZW50IGFzIEVsZW1lbnRNb2RlbCkudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcclxuICAgIChlbGVtZW50IGFzIEVsZW1lbnRNb2RlbCkuaW5qZWN0b3IgPSBpbmplY3RvcjtcclxuICAgIHJldHVybiBlbGVtZW50O1xyXG4gIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxUPiB7XHJcbiAgbW9kZWw6IEVsZW1lbnRJbmZvPFQ+O1xyXG4gIG1vZGU6IERlc2lnbk1vZGU7XHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG4gIG9uQ29udGludWU/KCk7XHJcbiAgb25GaW5pc2g/KCk7XHJcbn1cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBEZXNpZ25Nb2RlID0gJ2FkZCcgfCAnZWRpdCcgfCAnd2lkZ2V0JztcclxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVsZW1lbnQpKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlPZih2YWw6IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgaWYgKCF2YWwpIHJldHVybiBbXTtcclxuICBpZiAoaXNTdHJpbmcodmFsKSkgcmV0dXJuIFt2YWxdO1xyXG4gIHJldHVybiB2YWw7XHJcbn1cclxuXHJcbmNvbnN0IE5BTUVfQ0hBUiA9IC9bQS1aXSsvZyxcclxuICBOT05fTkFNRV9DSEFSID0gL1teXFx3XSsvZztcclxuLyoqXHJcbiAqIFxyXG4gKiBAcGFyYW0gbmFtZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2dyYW1OYW1lKG5hbWU6IHN0cmluZykge1xyXG4gIHJldHVybiBuYW1lLlxyXG4gICAgcmVwbGFjZSgnICcsICctJykuXHJcbiAgICByZXBsYWNlKE5BTUVfQ0hBUiwgKGMsIGkpID0+IChpID4gMCAmJiBuYW1lLmNoYXJBdChpIC0gMSkgIT09ICctJyA/ICctJyA6ICcnKSArIGMudG9Mb3dlckNhc2UoKSkuXHJcbiAgICByZXBsYWNlKE5PTl9OQU1FX0NIQVIsICdfJyk7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lck1vZGVsIHtcclxuICB0eXBlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0VHlwZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGd1aWRlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICByZXBvcnRzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRSZXBvcnRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb3JtczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Rm9ybXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGN1YmVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRDdWJlczogVGVtcGxhdGVJbmZvW107XHJcbiAgdXRpbGl0aWVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRVdGlsaXRpZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGZvbGRlcnM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgcm9sZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgcnVsZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFJ1bGVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBwb2xpY2llczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0UG9saWNpZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHZpZXdzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRWaWV3czogVGVtcGxhdGVJbmZvW107XHJcbiAgd2lkZ2V0czogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0V2lkZ2V0czogVGVtcGxhdGVJbmZvW107XHJcbiAgYWN0aW9uczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0QWN0aW9uczogVGVtcGxhdGVJbmZvW107XHJcbiAgc3RhdGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVJbmZvIHtcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBmYW1pbHk/OiBzdHJpbmc7XHJcbiAgaGVscD86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGFyZ3VtZW50cz86IEZpZWxkSW5mb1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE1vZGVsPFQgPSBhbnk+IHtcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgaW5qZWN0b3I6IEluamVjdG9yO1xyXG4gIG9yZGluYWw/OiBudW1iZXI7XHJcbiAgaGVscD86IHN0cmluZztcclxuICBjb25maWd1cmF0aW9uRmlsZT86IHN0cmluZztcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIHJlc291cmNlPzogc3RyaW5nO1xyXG4gIGNvcHlPZj86IHN0cmluZztcclxuICBmYW1pbHk/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgZHJhZnQ/OiBib29sZWFuO1xyXG4gIGVtcHR5PzogYm9vbGVhbjtcclxuICBvcHRpb25zPzogVDtcclxuICBhcmd1bWVudHM/OiBGaWVsZEluZm9bXTtcclxuICBwcml2aWxlZ2VzPzogUHJpdmlsZWdlc01vZGVsO1xyXG4gIGZpbHRlcnM/OiBDdWJlRmlsdGVyO1xyXG4gIGNvbHVtbnM/OiBGb2xkZXJDb2x1bW5bXTtcclxuICBhbm9tYWx5PzogQW5vbWFseVBvbGljeTtcclxuICB2ZXJiPzogc3RyaW5nO1xyXG4gIHlvdT86IHN0cmluZztcclxuICB5b3VNYWxlPzogc3RyaW5nO1xyXG4gIHlvdUZlbWFsZT86IHN0cmluZztcclxuICBwYXN0Pzogc3RyaW5nO1xyXG4gIHBhc3RNYWxlPzogc3RyaW5nO1xyXG4gIHBhc3RGZW1hbGU/OiBzdHJpbmc7XHJcbiAgYWRqZWN0aXZlPzogc3RyaW5nO1xyXG4gIGxvZ2dhYmxlPzogYm9vbGVhbjtcclxuICBhZGplY3RpdmVQbHVyYWw/OiBzdHJpbmc7XHJcbiAgYXNzaWduYWJsZT86IGJvb2xlYW47XHJcbiAgcG9zaXRpb24/OiBQb3NpdGlvblBvbGljeTtcclxuICBtdWx0aXBsZT86IGJvb2xlYW47XHJcbiAgc2hhcGU/OiBzdHJpbmc7XHJcbiAgZ3JvdXA/OiBudW1iZXI7XHJcbiAgZGF0YVR5cGU/OiBzdHJpbmc7XHJcbiAgc3RlcHM/OiBHdWlkZVN0ZXBbXTtcclxuICBjdXJyZW5jeUNvZGU/OiBzdHJpbmc7XHJcbiAgYXhlcz86IEN1YmVBeGlzTW9kZWxbXTtcclxuICB2aWV3cz86IEN1YmVWaWV3TW9kZWxbXTtcclxuICBpbmRpY2VzPzogQ3ViZUluZGV4TW9kZWxbXTtcclxuICBzY29wZT86IFNjb3BlVHlwZTtcclxuICBjb2xvcj86IHN0cmluZztcclxuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XHJcbiAgcnVsZXM/OiBQZXJtaXNzaW9uTW9kZWxbXTtcclxuICBwb3NpdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XHJcbiAgcGF0dGVybnM/OiBQYXR0ZXJuTW9kZWxbXTtcclxuICBwcmlvcml0eT86IG51bWJlcjtcclxuICBjdWJlcz86IHN0cmluZ1tdO1xyXG4gIHZhbHVlPzogc3RyaW5nO1xyXG4gIHNlcXVlbmNlUG9saWN5PzogJ0JvdGgnIHwgJ0VpdGhlcicgfCAnSGlnaGVyJztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEN1YmVJbmRleE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgYWNjdW11bGF0ZT86IGJvb2xlYW47XHJcbiAgaGlkZGVuPzogYm9vbGVhbjtcclxuICB0aXRsZTogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3ViZVZpZXdNb2RlbCB7XHJcbiAgcHJpdmlsZWdlcz86IFByaXZpbGVnZXNNb2RlbDtcclxuICB4QXhpczogc3RyaW5nW107XHJcbiAgc2VyaWVzPzogc3RyaW5nW107XHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgaW5kaWNlcz86IHN0cmluZ1tdO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZ3VpZGU/OiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgdHlwZTogVmlld1R5cGU7XHJcbiAgY2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG4gIGluZGljZXNDaGFydFR5cGU/OiBDaGFydFR5cGU7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuTW9kZWwge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgYXhlczogQXhlc01hcDtcclxuICBoaWRkZW4/OiBib29sZWFuO1xyXG4gIHJ1bGU/OiBzdHJpbmc7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEN1YmVBeGlzTW9kZWwge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRhdGFUeXBlOiBzdHJpbmc7XHJcbiAgaGlkZGVuPzogYm9vbGVhbjtcclxuICBjb21iaW5hdGlvbj86IGJvb2xlYW47XHJcbiAgaW5kZXhhYmxlPzogYm9vbGVhbjtcclxuICBzZW5zaXRpdmU/OiBib29sZWFuO1xyXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcclxuICBzZWxlY3Rpb25Nb2RlPzogJ1NpbmdsZScgfCAnUGF0dGVybicgfCAnTXVsdGlwbGUnIHwgJ1NlYXJjaCcgfCAnTm9uZSc7XHJcbiAgZGVzY2VuZGVudE9mPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCB0eXBlIEFub21hbHlQb2xpY3kgPSAnUG9zaXRpb25zJyB8ICdSZWNpcGllbnRzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybk1vZGVsIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIHJ1bGU/OiBzdHJpbmc7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25Nb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmlsZWdlc01vZGVsIHtcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lckluZm8ge1xyXG4gIHR5cGVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGd1aWRlczogRWxlbWVudEluZm9bXTtcclxuICByZXBvcnRzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHRSZXBvcnRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb3JtczogRWxlbWVudEluZm9bXTtcclxuICBjdWJlczogRWxlbWVudEluZm9bXTtcclxuICB1dGlsaXRpZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgZm9sZGVyczogRWxlbWVudEluZm9bXTtcclxuICByb2xlczogRWxlbWVudEluZm9bXTtcclxuICBydWxlczogRWxlbWVudEluZm9bXTtcclxuICBwb2xpY2llczogRWxlbWVudEluZm9bXTtcclxuICB2aWV3czogRWxlbWVudEluZm9bXTtcclxuICB3aWRnZXRzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGFjdGlvbnM6IEVsZW1lbnRJbmZvW107XHJcbiAgc3RhdGVzOiBFbGVtZW50SW5mb1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudEluZm88VCA9IGFueT4ge1xyXG4gIGZhbWlseT86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGtleT86IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgZHJhZnQ/OiBib29sZWFuO1xyXG4gIGVtcHR5PzogYm9vbGVhbjtcclxuICBvcHRpb25zPzogVDtcclxufVxyXG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2RlY2xhcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsT0FBTyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0JKO0lBQ0wsS0FBSyxFQUFFOzs7Ozs7OztPQVFGO0lBQ0wsS0FBSyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7T0FlRjtJQUNMLFVBQVUsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQlA7SUFDTCxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7T0FXZjtDQUNOLENBQUM7QUFDRixNQUFNO0FBQ04sTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFBb0IsU0FBd0IsRUFDbEMsUUFBc0IsRUFDdkIsSUFBZ0I7UUFGTCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUp6QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNsQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFHWixDQUFDO0lBQzlCLElBQUksUUFBUSxLQUFtQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxLQUFxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxNQUFNLENBQUMsT0FBb0I7UUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUF1QixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRzthQUNwQyxDQUFDLEVBQUcsSUFBSSxDQUFDLFFBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsT0FBd0IsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzlDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQVNELE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBcUI7SUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBQ0QsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFzQjtJQUM1QyxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFNBQVMsR0FBRyxTQUFTLEVBQ3pCLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDNUI7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZO0lBQ3RDLE9BQU8sSUFBSTtRQUNULE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTY29wZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIENoYXJ0VHlwZSwgQ3ViZUZpbHRlciwgRmllbGRJbmZvLCBGb2xkZXJDb2x1bW4sIEd1aWRlU3RlcCwgUG9zaXRpb25Qb2xpY3ksIFZpZXdUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmV4cG9ydCBjb25zdCBGQU1JTFlfU1ZHID0ge1xyXG4gIFwiQXp1cmVcIjogYDxzdmcgd2lkdGg9XCIzNFwiIGhlaWdodD1cIjM0XCIgdmlld0JveD1cIjAgMCA5NiA5NlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgIDxkZWZzPlxyXG4gICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImUzOTljMTlmLWI2OGYtNDI5ZC1iMTc2LTE4YzIxMTdmZjczY1wiIHgxPVwiLTEwMzIuMTcyXCIgeDI9XCItMTA1OS4yMTNcIiB5MT1cIjE0NS4zMTJcIiB5Mj1cIjY1LjQyNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEgMCAwIC0xIDEwNzUgMTU4KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxyXG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxMTRhOGJcIi8+XHJcbiAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzA2NjliY1wiLz5cclxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxyXG4gICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImFjMmE2ZmMyLWNhNDgtNDMyNy05YTNjLWQ0ZGNjMzI1NmUxNVwiIHgxPVwiLTEwMjMuNzI1XCIgeDI9XCItMTAyOS45OFwiIHkxPVwiMTA4LjA4M1wiIHkyPVwiMTA1Ljk2OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEgMCAwIC0xIDEwNzUgMTU4KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxyXG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1vcGFjaXR5PVwiLjNcIi8+XHJcbiAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIi4wNzFcIiBzdG9wLW9wYWNpdHk9XCIuMlwiLz5cclxuICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiLjMyMVwiIHN0b3Atb3BhY2l0eT1cIi4xXCIvPlxyXG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuNjIzXCIgc3RvcC1vcGFjaXR5PVwiLjA1XCIvPlxyXG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz5cclxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxyXG4gICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImE3ZmVlOTcwLWE3ODQtNGJiMS1hZjhkLTYzZDE4ZTVmN2RiOVwiIHgxPVwiLTEwMjcuMTY1XCIgeDI9XCItOTk3LjQ4MlwiIHkxPVwiMTQ3LjY0MlwiIHkyPVwiNjguNTYxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSAwIDAgLTEgMTA3NSAxNTgpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XHJcbiAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzNjY2JmNFwiLz5cclxuICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMjg5MmRmXCIvPlxyXG4gICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICA8L2RlZnM+XHJcbiAgICA8cGF0aCBmaWxsPVwidXJsKCNlMzk5YzE5Zi1iNjhmLTQyOWQtYjE3Ni0xOGMyMTE3ZmY3M2MpXCIgZD1cIk0zMy4zMzggNi41NDRoMjYuMDM4bC0yNy4wMyA4MC4wODdhNC4xNTIgNC4xNTIgMCAwIDEtMy45MzMgMi44MjRIOC4xNDlhNC4xNDUgNC4xNDUgMCAwIDEtMy45MjgtNS40N0wyOS40MDQgOS4zNjhhNC4xNTIgNC4xNTIgMCAwIDEgMy45MzQtMi44MjV6XCIvPlxyXG4gICAgPHBhdGggZmlsbD1cIiMwMDc4ZDRcIiBkPVwiTTcxLjE3NSA2MC4yNjFoLTQxLjI5YTEuOTExIDEuOTExIDAgMCAwLTEuMzA1IDMuMzA5bDI2LjUzMiAyNC43NjRhNC4xNzEgNC4xNzEgMCAwIDAgMi44NDYgMS4xMjFoMjMuMzh6XCIvPlxyXG4gICAgPHBhdGggZmlsbD1cInVybCgjYWMyYTZmYzItY2E0OC00MzI3LTlhM2MtZDRkY2MzMjU2ZTE1KVwiIGQ9XCJNMzMuMzM4IDYuNTQ0YTQuMTE4IDQuMTE4IDAgMCAwLTMuOTQzIDIuODc5TDQuMjUyIDgzLjkxN2E0LjE0IDQuMTQgMCAwIDAgMy45MDggNS41MzhoMjAuNzg3YTQuNDQzIDQuNDQzIDAgMCAwIDMuNDEtMi45bDUuMDE0LTE0Ljc3NyAxNy45MSAxNi43MDVhNC4yMzcgNC4yMzcgMCAwIDAgMi42NjYuOTcySDgxLjI0TDcxLjAyNCA2MC4yNjFsLTI5Ljc4MS4wMDdMNTkuNDcgNi41NDR6XCIvPlxyXG4gICAgPHBhdGggZmlsbD1cInVybCgjYTdmZWU5NzAtYTc4NC00YmIxLWFmOGQtNjNkMThlNWY3ZGI5KVwiIGQ9XCJNNjYuNTk1IDkuMzY0YTQuMTQ1IDQuMTQ1IDAgMCAwLTMuOTI4LTIuODJIMzMuNjQ4YTQuMTQ2IDQuMTQ2IDAgMCAxIDMuOTI4IDIuODJsMjUuMTg0IDc0LjYyYTQuMTQ2IDQuMTQ2IDAgMCAxLTMuOTI4IDUuNDcyaDI5LjAyYTQuMTQ2IDQuMTQ2IDAgMCAwIDMuOTI3LTUuNDcyelwiLz5cclxuPC9zdmc+YCxcclxuICAnU0FQJzogYDxzdmcgaGVpZ2h0PVwiNDVcIiB2aWV3Qm94PVwiMCAwIDE5Mi43NTYgMTkyLjc1NlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICA8ZGVmcz48L2RlZnM+XHJcbiAgPHBhdGggZmlsbD1cIiNmZmZcIiBkPVwiTSAwIDAgTCAxOTIuNzU2IDAgTCAxOTIuNzU2IDE5Mi43NTYgTCAwIDE5Mi43NTYgTCAwIDAgWlwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCI+PC9wYXRoPlxyXG4gIDxwYXRoIGQ9XCJNIDE4My43MjcgNjYuNzc1IEMgMTg3LjAwNiA2Ni43NzUgMTg5LjkyMiA2My44NjEgMTg5LjkyMiA2MC4yMTcgQyAxODkuOTIyIDU2Ljc1NiAxODcuMDA2IDU0LjAyMyAxODMuNzI3IDU0LjAyMyBDIDE4MC4yNjYgNTQuMDIzIDE3Ny4xNyA1Ni43NTUgMTc3LjE3IDYwLjIxNyBDIDE3Ny4xNyA2My44NjEgMTgwLjI2NiA2Ni43NzUgMTgzLjcyNyA2Ni43NzUgWiBNIDE4My43MjcgNjUuODY1IEMgMTgwLjQ1IDY1Ljg2NSAxNzguMDgxIDYzLjQ5NyAxNzguMDgxIDYwLjIxOCBDIDE3OC4wODEgNTcuMzAzIDE4MC40NSA1NC45MzUgMTgzLjcyNyA1NC45MzUgQyAxODYuNjQ0IDU0LjkzNyAxODkuMDA4IDU3LjMwMSAxODkuMDEgNjAuMjE4IEMgMTg5LjAxIDYzLjQ5NyAxODYuNjQzIDY1Ljg2NSAxODMuNzI3IDY1Ljg2NSBaXCIgZmlsbD1cIiMyMzRiOGRcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiPjwvcGF0aD5cclxuICA8cGF0aCBkPVwiTSAxODIuMDg4IDYwLjk0NiBMIDE4NC4yNzQgNjAuOTQ2IEMgMTg1LjE4NiA2MC45NDYgMTg1LjM2OCA2MS40OTIgMTg1LjM2OCA2Mi4wMzkgQyAxODUuMzY4IDYyLjIyMiAxODUuMzY4IDYzLjMxNCAxODUuNTUgNjMuODYxIEwgMTg2LjY0NCA2My44NjEgTCAxODYuNjQ0IDYzLjQ5NyBDIDE4Ni40NjIgNjMuMzE0IDE4Ni4yNzkgNjMuMzE0IDE4Ni4yNzkgNjIuOTUgTCAxODYuMjc5IDYxLjg1NyBDIDE4Ni4yNzkgNjAuOTQ2IDE4NS45MTYgNjAuNzY0IDE4NS41NSA2MC41ODIgQyAxODYuMDk3IDYwLjIxOCAxODYuNDYyIDU5Ljg1MyAxODYuNDYyIDU4Ljc2MSBDIDE4Ni40NjIgNTcuNDg2IDE4NS4zNjggNTYuOTM5IDE4NC4yNzQgNTYuOTM5IEwgMTgxLjE3OCA1Ni45MzkgTCAxODEuMTc4IDYzLjg2MiBMIDE4Mi4wODggNjMuODYyIEwgMTgyLjA4OCA2MC45NDYgTCAxODIuMDg4IDYwLjk0NiBaIE0gMTgyLjA4OCA1Ny44NSBMIDE4NC4yNzQgNTcuODUgQyAxODQuODIxIDU3Ljg1IDE4NS41NDkgNTcuODUgMTg1LjU0OSA1OC45NDMgQyAxODUuNTQ5IDU5Ljg1NCAxODQuODIgNjAuMDM2IDE4NC4wOTIgNjAuMDM2IEwgMTgyLjA4OCA2MC4wMzYgTCAxODIuMDg4IDU3Ljg1IEwgMTgyLjA4OCA1Ny44NSBaIE0gMy4zODEgNTMuODQyIEwgODcuMTc4IDUzLjg0MiBMIDg3LjE3OCAxMzcuODIxIEwgMy4zODEgMTM3LjgyMSBMIDMuMzgxIDUzLjg0MiBaIE0gMTc0LjgwMSA1My44NDIgTCA5MC44MjIgNTMuODQyIEwgOTAuODIyIDEzNy44MjEgTCAxNzQuODAxIDUzLjg0MiBaXCIgZmlsbD1cIiMyMzRiOGRcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiPjwvcGF0aD5cclxuICA8cGF0aCBkPVwiTSA2OS41MDggMTI5LjI2IEwgNzYuMDY2IDEyOS4yNiBDIDg1LjcyMSAxMjkuMjYgODcuNTQzIDEyMS4wNjIgODcuMTc4IDExOC42OTQgQyA4Ni42MzIgMTEyLjg2NSA4Mi4yNiAxMDkuMjIxIDc2LjI0OCAxMDkuMjIxIEwgNjAuMjE3IDEwOS4yMjEgTCA2MC4yMTcgMTM4LjU1IEwgNjkuNTA4IDEzOC41NSBMIDY5LjUwOCAxMjkuMjYgWiBNIDY5LjUwOCAxMjIuMzM3IEwgNjkuNTA4IDExNS45NjEgTCA3My41MTUgMTE1Ljk2MSBDIDc2Ljc5NCAxMTUuOTYxIDc4LjA2OSAxMTYuNjkgNzguMDY5IDExOS4wNTggQyA3OC4wNjkgMTIwLjE1MSA3OC4wNjkgMTIyLjMzNyA3NC40MjYgMTIyLjMzNyBMIDY5LjUwOCAxMjIuMzM3IEwgNjkuNTA4IDEyMi4zMzcgWlwiIGZpbGw9XCIjZmZmXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIj48L3BhdGg+XHJcbiAgPHBhdGggZD1cIk0gMzkuOTk3IDEzMi4zNTYgTCA0OS4yODggMTMyLjM1NiBMIDUxLjY1NiAxMzguNTQ5IEwgNjEuNDkzIDEzOC41NDkgTCA1MC4zOCAxMDkuMjIxIEwgMzkuMjY4IDEwOS4yMjEgTCAyNy45NzQgMTM4LjU1IEwgMzcuNDQ3IDEzOC41NSBMIDM5Ljk5NyAxMzIuMzU2IEwgMzkuOTk3IDEzMi4zNTYgWiBNIDQ0LjkxNiAxMTcuNDE5IEwgNDguMTk1IDEyNi4xNjIgTCA0MS44MiAxMjYuMTYyIEwgNDQuOTE2IDExNy40MTkgWlwiIGZpbGw9XCIjZmZmXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIj48L3BhdGg+XHJcbiAgPHBhdGggZD1cIk0gMi44MzQgMTI5LjI2IEwgMi44MzQgMTMwLjkgQyAyLjgzNCAxMzYuNzI5IDkuOTM4IDEzOC45MTUgMTYuNjc5IDEzOC45MTUgQyAyNS43ODcgMTM4LjkxNSAzMS4yNTMgMTM1LjYzNiAzMS4yNTMgMTI5LjI2MSBDIDMxLjI1MyAxMTkuMDU5IDEzLjAzNiAxMjIuMTU2IDEzLjAzNiAxMTYuMTQ1IEMgMTMuMDM2IDExMy45NTggMTQuNjc2IDExMy4yMyAxNy4yMjYgMTEzLjIzIEMgMTguODY1IDExMy4yMyAxOS40MTIgMTEzLjU5NCAxOS45NTggMTEzLjk1OSBDIDIxLjA1MSAxMTQuNjg4IDIxLjA1MSAxMTUuNTk5IDIxLjA1MSAxMTcuMjM4IEwgMzAuNzA2IDExNy4yMzggTCAzMC43MDYgMTE2LjUwOSBDIDMwLjcwNiAxMTIuMTM3IDI2Ljg4IDEwOC40OTMgMTcuMjI2IDEwOC40OTMgQyA2LjY2IDEwOC40OTMgMy4zODEgMTEyLjUwMSAzLjM4MSAxMTcuMjM3IEMgMy4zODEgMTI3LjYyMSAyMS41OTggMTI0LjM0MSAyMS41OTggMTMwLjcxNyBDIDIxLjU5OCAxMzEuOTkyIDIwLjUwNSAxMzMuODE0IDE2LjY3OSAxMzMuODE0IEMgMTMuNTgyIDEzMy44MTQgMTIuNDg5IDEzMi4zNTcgMTIuNDg5IDEzMC4xNyBMIDEyLjQ4OSAxMjkuMjYgTCAyLjgzNCAxMjkuMjYgTCAyLjgzNCAxMjkuMjYgWlwiIGZpbGw9XCIjZmZmXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIj48L3BhdGg+XHJcbjwvc3ZnPmAsXHJcbiAgJ01mZyc6IGA8c3ZnIGhlaWdodD1cIjM0XCIgdmlld0JveD1cIjAgMCAxMDAgNTBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgPGRlZnM+PC9kZWZzPlxyXG4gIDxyZWN0IHdpZHRoPVwiOTNcIiBoZWlnaHQ9XCIzOFwiIHN0eWxlPVwiZmlsbDogcmdiKDIxNiwgMjE2LCAyMTYpO1wiPjwvcmVjdD5cclxuICA8ZyB0cmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgMSwgNSwgNilcIj5cclxuICAgIDxnPlxyXG4gICAgICA8Zz5cclxuICAgICAgICA8cGF0aCBmaWxsPVwiI0ZGRkZGRlwiIGQ9XCJNNDEuMSwxLjhsMTMuMSwyMC41aC0zLjhMNDcsMTcuMUgzNS42bC0zLjEsNS4yaC0zLjhMNDEuMSwxLjh6IE0zNy4yLDE0LjVoOC4xbC00LjItNi42TDM3LjIsMTQuNXpcIj48L3BhdGg+XHJcbiAgICAgICAgPHBhdGggZmlsbD1cIiNGRkZGRkZcIiBkPVwiTTU5LjMsMi41aDkuM2M4LjgsMCwxMi43LDUuMiwxMi43LDkuOWMwLDUuMS00LjgsOS45LTEyLjYsOS45aC05LjNWMi41eiBNNjIuNywxOS43aDUuNFxyXG5cdFx0XHRcdGM3LjgsMCw5LjUtNC45LDkuNS03LjRjMC00LTMtNy40LTkuNy03LjRoLTUuM1YxOS43elwiPjwvcGF0aD5cclxuICAgICAgICA8cGF0aCBmaWxsPVwiI0ZGRkZGRlwiIGQ9XCJNMjUuNywxMi4zYzAtNS44LTUuNC0xMC4xLTEyLjUtMTAuMUM1LjQsMi4yLDAsNi40LDAsMTIuNGMwLDYsNS40LDEwLjIsMTMuMSwxMC4yYzEuNCwwLDIuNi0wLjIsMy44LTAuNVxyXG5cdFx0XHRcdGwzLjMsMi42aDVsLTQuOS0zLjlDMjMuNiwxOSwyNS43LDE1LjksMjUuNywxMi4zeiBNMTMuMSwyMGMtNi40LDAtOS41LTMuNS05LjUtNy41YzAtMywyLjMtNy42LDkuNS03LjZjNS4zLDAsOS4yLDMuMyw5LjIsNy43XHJcblx0XHRcdFx0QzIyLjEsMTYuNSwxOC40LDIwLDEzLjEsMjB6XCI+PC9wYXRoPlxyXG4gICAgICA8L2c+XHJcbiAgICA8L2c+XHJcbiAgPC9nPlxyXG48L3N2Zz5gLFxyXG4gICdQcmlvcml0eSc6IGA8c3ZnIGZpbGw9XCJub25lXCIgaGVpZ2h0PVwiNjBcIiB2aWV3Qm94PVwiMCAwIDI0MCAxMzNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgPGc+XHJcbiAgICA8cGF0aCBkPVwiTSAwIDAgTCAyNDAgMCBMIDI0MCA4MC40NyBMIDAgODAuNDcgTCAwIDAgWlwiIGZpbGw9XCIjZmZmXCIgc3R5bGU9XCJcIi8+XHJcbiAgICA8ZyB0cmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgMSwgLTEyLjUyNDg0MSwgLTI0LjU5MTQ0NClcIj5cclxuICAgICAgPHBhdGggZD1cIk0gMTc3Ljc0OCA1MC42NzMgTCAxNzMuNjQyIDUwLjY3MyBMIDE3My42NDIgNTUuMDIyIEwgMTc3Ljc0OCA1NS4wMjIgTCAxNzcuNzQ4IDUwLjY3MyBaXCIgZmlsbD1cIiMwMGFlZWZcIi8+XHJcbiAgICAgIDxwYXRoIGQ9XCJNIDYyLjczNCA1Ni41NzggQyA2Mi43MzQgNTUuNDQgNjIuNDIzIDU1LjA3NyA2MS40MzcgNTUuMDI2IEwgNTkuMjYzIDU0Ljg2OSBMIDU5LjI2MyA1MC42NzQgTCA2OC4wMTkgNTAuNjc0IEwgNjguMDE5IDU0LjU1OCBDIDY5LjIxMSA1MS45NjggNzEuOTU2IDQ5Ljg5NiA3NS4zNzMgNDkuODk2IEMgNzcuMDg2IDQ5Ljg5NiA3OC42NCA1MC4yMDcgODAuMzQ4IDUxLjAzNSBMIDgwLjM0OCA1OC43NTUgTCA3NS41MzEgNTkuMTE3IEwgNzUuNTMxIDU2LjczNCBDIDc1LjUzMSA1Ni4xMTMgNzUuNDI4IDU1LjY0NyA3NS4wMTIgNTUuNDQgQyA3NC41NDQgNTUuMjMyIDc0LjE4IDU1LjE4IDczLjYxMyA1NS4xOCBDIDcwLjgxNSA1NS4xOCA2OC44OTggNTcuNDA5IDY4Ljg5OCA2MC40MTQgTCA2OC44OTggNzIuNDMxIEwgNzMuNDA4IDcyLjYzNiBMIDczLjQwOCA3Ni43MyBMIDU5LjUyIDc2LjczIEwgNTkuNTIgNzIuNzk1IEwgNjEuMjMyIDcyLjYzNiBDIDYyLjIxNyA3Mi41MzMgNjIuNzM0IDcyLjIyNCA2Mi43MzQgNzAuOTI5IEwgNjIuNzM0IDU2LjU3OCBaXCIgZmlsbD1cIiMwMDBcIi8+XHJcbiAgICAgIDxwYXRoIGQ9XCJNIDExNS40NjkgNjMuODMyIEMgMTE1LjQ2OSA1OC4wMzEgMTE0LjA3NCA1NC40NTYgMTA5LjkzIDU0LjQ1NiBDIDEwNS44MzMgNTQuNDU2IDEwNC4xNzcgNTcuOTc4IDEwNC4xNzcgNjIuOTUyIEMgMTA0LjE3NyA2Ny43NjggMTA0Ljg1IDcyLjk0NiAxMDkuODI1IDcyLjk0NiBDIDExMy44NjUgNzIuOTQ2IDExNS40NjkgNjkuMjIxIDExNS40NjkgNjMuODMyIFogTSAxMTAuMjM5IDQ5Ljg5NiBDIDExNC4wNzQgNDkuODk2IDEyMS43ODkgNTEuMDg1IDEyMS43ODkgNjMuMDAzIEMgMTIxLjc4OSA3Mi45NDYgMTE2LjI0NyA3Ny41MDcgMTA5LjQxIDc3LjUwNyBDIDEwMi40NjcgNzcuNTA3IDk3LjkwOSA3My4wNTMgOTcuOTA5IDYzLjY3NCBDIDk3LjkwOSA1Mi45MDIgMTA0LjkwNCA0OS44OTYgMTEwLjIzOSA0OS44OTYgWlwiIGZpbGw9XCIjMDAwXCIvPlxyXG4gICAgICA8cGF0aCBkPVwiTSAxMjcuNTQzIDU2LjU3OCBDIDEyNy41NDMgNTUuNDQgMTI3LjIzNSA1NS4wNzcgMTI2LjI1IDU1LjAyNiBMIDEyNC4wNzIgNTQuODY5IEwgMTI0LjA3MiA1MC42NzQgTCAxMzIuODMgNTAuNjc0IEwgMTMyLjgzIDU0LjU1OCBDIDEzNC4wMTkgNTEuOTY4IDEzNi43NjYgNDkuODk2IDE0MC4xODcgNDkuODk2IEMgMTQxLjg5NCA0OS44OTYgMTQzLjQ0OSA1MC4yMDcgMTQ1LjE1OCA1MS4wMzUgTCAxNDUuMTU4IDU4Ljc1NSBMIDE0MC4zNDEgNTkuMTE3IEwgMTQwLjM0MSA1Ni43MzQgQyAxNDAuMzQxIDU2LjExMyAxNDAuMjM4IDU1LjY0NyAxMzkuODIyIDU1LjQ0IEMgMTM5LjM1NiA1NS4yMzIgMTM4Ljk5NSA1NS4xOCAxMzguNDI1IDU1LjE4IEMgMTM1LjYyNSA1NS4xOCAxMzMuNzEgNTcuNDA5IDEzMy43MSA2MC40MTQgTCAxMzMuNzEgNzIuNDMxIEwgMTM4LjIxNSA3Mi42MzYgTCAxMzguMjE1IDc2LjczIEwgMTI0LjMzMyA3Ni43MyBMIDEyNC4zMzMgNzIuNzk1IEwgMTI2LjA0MiA3Mi42MzYgQyAxMjcuMDI2IDcyLjUzMyAxMjcuNTQzIDcyLjIyNCAxMjcuNTQzIDcwLjkyOSBMIDEyNy41NDMgNTYuNTc4IFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gMjAyLjAxNiA3MS44MTIgQyAyMDAuMjAzIDc0LjQgMTk3LjA0NiA3NS44NTEgMTkzLjYyMiA3NS44NTEgQyAxODguNDQzIDc1Ljg1MSAxODUuNTk0IDczLjAwMSAxODUuNTk0IDY2Ljg4NyBMIDE4NS41OTQgNTYuNDc3IEMgMTg1LjU5NCA1NS4zODYgMTg1LjE3OCA1NS4wNzggMTg0LjMwMSA1NS4wMjMgTCAxODIuNjM5IDU0LjkyMSBMIDE4Mi42MzkgNTAuNjczIEwgMTkxLjc1NiA1MC42NzMgTCAxOTEuNzU2IDY1LjU0MSBDIDE5MS43NTYgNjguNyAxOTIuMjc0IDcxLjA4NCAxOTUuNTkxIDcxLjA4NCBDIDE5OS4yMiA3MS4wODQgMjAxLjEzNiA2OC42NDcgMjAxLjEzNiA2NS45NTcgTCAyMDEuMTM2IDU2LjU3OCBDIDIwMS4xMzYgNTUuNDQgMjAwLjgyMiA1NS4wMjMgMTk5LjgzNyA1NS4wMjMgTCAxOTguMTgyIDU0LjkyMSBMIDE5OC4xODIgNTAuNjczIEwgMjA3LjI5NyA1MC42NzMgTCAyMDcuMjk3IDc1Ljc0NyBDIDIwNy4yOTcgODQuMjk2IDIwMyA4Ny44MTcgMTk1LjI3OCA4Ny44MTcgQyAxOTIuMDE2IDg3LjgxNyAxODcuNzE5IDg3LjE5NiAxODUuNTQ0IDg2LjEwOSBMIDE4NS41NDQgODAuNjk0IEwgMTkwLjQ2MyA4MC4yNzggTCAxOTAuNDYzIDgwLjk3OCBDIDE5MC40NjMgODEuOTYyIDE5MC43MjEgODIuNDgyIDE5MS42NTcgODIuODQzIEMgMTkyLjYzOSA4My4yMDcgMTkzLjc4MSA4My4zNjIgMTk1LjMzNCA4My4zNjIgQyAyMDAuMDk5IDgzLjM2MiAyMDIuMDE2IDgwLjQ2MSAyMDIuMDE2IDc1Ljc0NyBMIDIwMi4wMTYgNzEuODEyIFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gMTU3LjY3MSA3Mi40MyBMIDE1Ny42NzEgNTAuNjc0IEwgMTQ4LjM5OCA1MC42NzQgTCAxNDguMzk4IDU0Ljk3MiBMIDE1MC4yMSA1NS4wNzcgQyAxNTEuMTkzIDU1LjA3NyAxNTEuNTA4IDU1LjQzOSAxNTEuNTA4IDU2LjU3NyBMIDE1MS41MzUgNzYuNzMgTCAxNjAuNjIyIDc2LjczIEwgMTYwLjYyMiA3Mi41ODYgTCAxNTcuNjcxIDcyLjQzIFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gOTIuODYgNzIuNDMgTCA5Mi44NiA1MC42NzQgTCA4My41ODkgNTAuNjc0IEwgODMuNTg5IDU0Ljk3MiBMIDg1LjM5OSA1NS4wNzcgQyA4Ni4zODYgNTUuMDc3IDg2LjY5NyA1NS40MzkgODYuNjk3IDU2LjU3NyBMIDg2LjY2OSA3Ni43MyBMIDk1LjgxNCA3Ni43MyBMIDk1LjgxNCA3Mi41ODYgTCA5Mi44NiA3Mi40MyBaXCIgZmlsbD1cIiMwMDBcIi8+XHJcbiAgICAgIDxwYXRoIGQ9XCJNIDE3OS4xNzEgNzEuNjUzIEMgMTc4LjM0NiA3Mi4xNzMgMTc3LjA0OCA3Mi43NDEgMTc1LjY1MyA3Mi43NDEgQyAxNzMuNTI0IDcyLjc0MSAxNzIuMjgxIDcxLjgxMSAxNzIuMjgxIDY4LjY0NyBMIDE3Mi4yODEgNDUuMTgzIEwgMTY4LjkxNiA0NS4xODMgQyAxNjcuODI4IDQ4LjEzNCAxNjYuNTg2IDUwLjkzMyAxNjIuOTU4IDUxLjI0MiBMIDE2Mi40NDIgNTUuMDIzIEwgMTY2LjEyIDU1LjAyMyBMIDE2Ni4xMiA2OC44NTUgQyAxNjYuMTIgNzIuNDgxIDE2Ni4wNjYgNzcuNDU1IDE3NC4xNDQgNzcuNDU1IEMgMTc2LjU4MiA3Ny40NTUgMTc5LjE3MSA3Ni43MyAxODAuNzI4IDc1LjY0NCBMIDE3OS4xNzEgNzEuNjUzIFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gNDQuMzMyIDcyLjU4NyBDIDQyLjk4NiA3Mi41ODcgNDEuMTIxIDcyLjE3MyAzOS43NzUgNzEuMjkxIEwgMzkuNzc1IDU5LjM3NyBDIDM5Ljc3NSA1Ni45OTUgNDIuMDUzIDU0LjkyIDQ1LjAwNyA1NC45MiBDIDQ3Ljc1MSA1NC45MiA1MC4yNDIgNTYuNjg0IDUwLjI0MiA2My41NzIgQyA1MC4yNDIgNjguMDc3IDQ4LjczNyA3Mi41ODcgNDQuMzMyIDcyLjU4NyBaIE0gNDcuMjg5IDQ5Ljg5NiBDIDQyLjg4NCA0OS44OTYgNDAuMDM2IDUyLjI3OSAzOS4xMDMgNTQuMDQgTCAzOS4xMDMgNTAuNjc1IEwgMzAuMzQ3IDUwLjY3NSBMIDMwLjM0NyA1NC44NjggTCAzMi41MjUgNTUuMDIzIEMgMzMuNTA3IDU1LjAyMyAzMy44MTYgNTUuNDQgMzMuODE2IDU2LjU3OCBMIDMzLjc4MSA4Ny40NTUgTCA0My45NjggODcuNDU1IEwgNDMuOTY4IDgzLjM2MiBMIDM5Ljc3NSA4My4xNTMgTCAzOS43NzUgNzYuMDA1IEMgNDEuMTIxIDc2LjgzMyA0My4yOTYgNzcuNTA3IDQ1LjMxNyA3Ny41MDcgQyA1Mi4xNTggNzcuNTA3IDU2LjY2MiA3Mi41ODcgNTYuNjYyIDYzLjA1NSBDIDU2LjY2MiA1My43ODMgNTMuMDM4IDQ5Ljg5NiA0Ny4yODkgNDkuODk2IFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gMjEyLjg4MiA3Mi42NjIgTCAyMTIuODgyIDczLjI3MiBMIDIxMS42NzQgNzMuMjcyIEwgMjExLjY3NCA3Ni42NzYgTCAyMTAuOTI3IDc2LjY3NiBMIDIxMC45MjcgNzMuMjcyIEwgMjA5LjcxNyA3My4yNzIgTCAyMDkuNzE3IDcyLjY2MiBMIDIxMi44ODIgNzIuNjYyIFpcIiBmaWxsPVwiIzAwMFwiLz5cclxuICAgICAgPHBhdGggZD1cIk0gMjE1LjQwMSA3NS4xOTQgQyAyMTUuNDI5IDc1LjI1OCAyMTUuNDU2IDc1LjMyMiAyMTUuNDggNzUuMzg4IEMgMjE1LjUxIDc1LjMyMiAyMTUuNTM0IDc1LjI1MyAyMTUuNTY0IDc1LjE5IEMgMjE1LjU4OSA3NS4xMjQgMjE1LjYxOCA3NS4wNjYgMjE1LjY1IDc1LjAwNCBMIDIxNi44NCA3Mi43ODEgQyAyMTYuODU1IDcyLjc1MiAyMTYuODY4IDcyLjczIDIxNi44ODQgNzIuNzE3IEMgMjE2LjkwMSA3Mi42OTcgMjE2LjkyMSA3Mi42ODUgMjE2LjkzOSA3Mi42NzggQyAyMTYuOTU2IDcyLjY2OSAyMTYuOTggNzIuNjY4IDIxNy4wMDMgNzIuNjY1IEMgMjE3LjAyMyA3Mi42NjMgMjE3LjA1NyA3Mi42NjIgMjE3LjA4OSA3Mi42NjIgTCAyMTcuNjUzIDcyLjY2MiBMIDIxNy42NTMgNzYuNjc2IEwgMjE2Ljk5NCA3Ni42NzYgTCAyMTYuOTk0IDc0LjA4MiBDIDIxNi45OTQgNzQuMDMzIDIxNi45OTUgNzMuOTggMjE2Ljk5OSA3My45MjYgQyAyMTcuMDAyIDczLjg2NiAyMTcuMDA1IDczLjgwOSAyMTcuMDExIDczLjc1MSBMIDIxNS43OTkgNzYuMDI2IEMgMjE1Ljc3IDc2LjA3NSAyMTUuNzM0IDc2LjExNyAyMTUuNjg5IDc2LjE0NiBDIDIxNS42NDYgNzYuMTc1IDIxNS41OTQgNzYuMTg3IDIxNS41MzQgNzYuMTg3IEwgMjE1LjQzMyA3Ni4xODcgQyAyMTUuMzczIDc2LjE4NyAyMTUuMzE5IDc2LjE3NSAyMTUuMjc1IDc2LjE0NiBDIDIxNS4yMzMgNzYuMTE3IDIxNS4xOTUgNzYuMDc1IDIxNS4xNjUgNzYuMDI2IEwgMjEzLjk0MSA3My43NDIgQyAyMTMuOTQ3IDczLjgwMyAyMTMuOTUgNzMuODYxIDIxMy45NTMgNzMuOTIgQyAyMTMuOTU3IDczLjk3OCAyMTMuOTU4IDc0LjAzMiAyMTMuOTU4IDc0LjA4MiBMIDIxMy45NTggNzYuNjc2IEwgMjEzLjI5OSA3Ni42NzYgTCAyMTMuMjk5IDcyLjY2MiBMIDIxMy44NjYgNzIuNjYyIEMgMjEzLjg5OSA3Mi42NjIgMjEzLjkyNCA3Mi42NjMgMjEzLjk1IDcyLjY2NSBDIDIxMy45NzQgNzIuNjY4IDIxMy45OTIgNzIuNjY5IDIxNC4wMTUgNzIuNjc4IEMgMjE0LjAzNSA3Mi42ODUgMjE0LjA1MiA3Mi42OTcgMjE0LjA2NyA3Mi43MTcgQyAyMTQuMDg5IDcyLjczIDIxNC4xMDMgNzIuNzUyIDIxNC4xMTYgNzIuNzgxIEwgMjE1LjMxNCA3NS4wMDkgQyAyMTUuMzQ4IDc1LjA2OCAyMTUuMzc1IDc1LjEzMyAyMTUuNDAxIDc1LjE5NCBaXCIgZmlsbD1cIiMwMDBcIi8+XHJcbiAgICA8L2c+XHJcbiAgPC9nPlxyXG48L3N2Zz5gLFxyXG4gICdBY3RpdmUgRGlyZWN0b3J5JzogYDxzdmcgdmlld0JveD1cIjAgMCA5NTQuMSAxNTguMlwiIGhlaWdodD1cIjM4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gIDxkZWZzPjwvZGVmcz5cclxuICA8c3R5bGU+LnN0MHtmaWxsOiMwMGFhZjJ9PC9zdHlsZT5cclxuICA8ZyBpZD1cIkxheWVyXzJfMV9cIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAtMzMuNTYxKVwiPlxyXG4gICAgPGcgaWQ9XCJMYXllcl8xLTJcIj5cclxuICAgICAgPHBhdGggaWQ9XCJwYXRoNlwiIGNsYXNzPVwic3QwXCIgZD1cIk0xNTguNiAxNTQuMnYzMy4zYzAgMy45LTEuMiA0LjctNC45IDQuMS0yNC44LTMuNy00OS45LTcuMS03NC45LTEwLjYtNC41LS42LTYuMS0yLjItNi4xLTcuMS40LTE3LjcuMi0zNS41IDAtNTMuNCAwLTMuOSAxLjItNS4xIDUuMS01LjEgMjUuNi4yIDUwLjguMiA3NS45LjIgNC4xIDAgNS4xIDEuNiA1LjEgNS4zLS40IDExLjItLjIgMjIuMi0uMiAzMy4zelwiIHRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAxLCA1OC42NzgxNjQsIDMzLjY1OTgwNClcIj48L3BhdGg+XHJcbiAgICAgIDxwYXRoIGlkPVwicGF0aDhcIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTE2LjEgMTA5LjJjLTEyLjYgMC0yNS4yLS4yLTM3LjggMC0zLjkgMC01LjUtLjgtNS41LTUuMy4yLTE4LjEuMi0zNS45IDAtNTMuOCAwLTMuNSAxLjItNC43IDQuNS01LjMgMjUuOC0zLjcgNTEuNi03LjMgNzcuNC0xMS4yIDQuNS0uNiAzLjcgMi40IDMuNyA0LjkgMCAxNiAuMiAzMi4zIDAgNDguMyAwIDUuOS0uMiAxMS44IDAgMTcuNy4yIDMuNy0xLjIgNC43LTQuNyA0LjctMTIuNC0uMi0yNSAwLTM3LjYgMHpcIiB0cmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgMSwgNTguNjc4MTY0LCAzMy42NTk4MDQpXCI+PC9wYXRoPlxyXG4gICAgICA8cGF0aCBpZD1cInBhdGgxMFwiIGNsYXNzPVwic3QwXCIgZD1cIk0zMi43IDExNS45aDI4LjJjMyAwIDQuMyAxIDQuMyA0LjF2NTUuNmMwIDMuMi0xLjQgMy41LTQuMyAzLjItMTguNy0yLjgtMzcuNC01LjUtNTYtOC4xLTMuNy0uNi00LjktMS44LTQuOS01LjcuMi0xNC44LjItMjkuNiAwLTQ0LjcgMC0zLjcgMS00LjcgNC43LTQuNyA5LjUuMyAxOC42LjMgMjggLjN6XCIgdHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIDEsIDU4LjY3ODE2NCwgMzMuNjU5ODA0KVwiPjwvcGF0aD5cclxuICAgICAgPHBhdGggaWQ9XCJwYXRoMTJcIiBjbGFzcz1cInN0MFwiIGQ9XCJNMzIuNyAxMDkuMkg0LjljLTMuNSAwLTQuNy0xLjItNC43LTQuOS4yLTE0LjYuMi0yOS4yIDAtNDMuOSAwLTMuNSAxLTQuNyA0LjctNS4zIDE4LjctMi40IDM3LjQtNS4xIDU2LTguMSA0LjMtLjYgNC43LjggNC43IDQuM3Y1My4yYzAgMy45LTEuNiA0LjUtNS4xIDQuNS05LjMgMC0xOC43LjItMjcuOC4yelwiIHRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAxLCA1OC42NzgxNjQsIDMzLjY1OTgwNClcIj48L3BhdGg+XHJcbiAgICA8L2c+XHJcbiAgPC9nPlxyXG48L3N2Zz5gXHJcbn07XHJcbi8qKiAqL1xyXG5leHBvcnQgY2xhc3MgRGVzaWduZXJSZWY8TyA9IGFueT4ge1xyXG4gIF91bmxvY2skID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBfc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rlc2lnbmVyOiBEZXNpZ25lck1vZGVsLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudE1vZGVsLFxyXG4gICAgcHVibGljIG1vZGU6IERlc2lnbk1vZGUpIHsgfVxyXG4gIGdldCBkZXNpZ25lcigpOiBEZXNpZ25lckluZm8geyByZXR1cm4gdGhpcy5fZGVzaWduZXI7IH1cclxuICBnZXQgbW9kZWwoKTogRWxlbWVudEluZm88Tz4geyByZXR1cm4gdGhpcy5fZWxlbWVudDsgfVxyXG4gIGdldCB1bmxvY2soKSB7IHJldHVybiB0aGlzLl91bmxvY2skLmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgZ2V0IHN0YXRlKCkgeyByZXR1cm4gdGhpcy5fc3RhdGUkLnZhbHVlOyB9XHJcbiAgc2V0IHN0YXRlKHZhbCkgeyB0aGlzLl9zdGF0ZSQubmV4dCh2YWwpOyB9XHJcbiAgY3JlYXRlKGVsZW1lbnQ6IEVsZW1lbnRJbmZvKSB7XHJcbiAgICBjb25zdCByZWYgPSBuZXcgRGVzaWduZXJSZWYodGhpcy5fZGVzaWduZXIsIGVsZW1lbnQgYXMgRWxlbWVudE1vZGVsLCAnd2lkZ2V0Jyk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbe1xyXG4gICAgICBwcm92aWRlOiBEZXNpZ25lclJlZiwgdXNlVmFsdWU6IHJlZlxyXG4gICAgfV0sICh0aGlzLl9lbGVtZW50IGFzIEVsZW1lbnRNb2RlbCkuaW5qZWN0b3IpO1xyXG4gICAgKGVsZW1lbnQgYXMgRWxlbWVudE1vZGVsKS5pbmplY3RvciA9IGluamVjdG9yO1xyXG4gICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PFQ+IHtcclxuICBtb2RlbDogRWxlbWVudEluZm88VD47XHJcbiAgbW9kZTogRGVzaWduTW9kZTtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgb25Db250aW51ZT8oKTtcclxuICBvbkZpbmlzaD8oKTtcclxufVxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIERlc2lnbk1vZGUgPSAnYWRkJyB8ICdlZGl0JyB8ICd3aWRnZXQnO1xyXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWxlbWVudCkpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBhcnJheU9mKHZhbDogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuICBpZiAoIXZhbCkgcmV0dXJuIFtdO1xyXG4gIGlmIChpc1N0cmluZyh2YWwpKSByZXR1cm4gW3ZhbF07XHJcbiAgcmV0dXJuIHZhbDtcclxufVxyXG5cclxuY29uc3QgTkFNRV9DSEFSID0gL1tBLVpdKy9nLFxyXG4gIE5PTl9OQU1FX0NIQVIgPSAvW15cXHddKy9nO1xyXG4vKipcclxuICogXHJcbiAqIEBwYXJhbSBuYW1lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcHJvZ3JhbU5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIG5hbWUuXHJcbiAgICByZXBsYWNlKCcgJywgJy0nKS5cclxuICAgIHJlcGxhY2UoTkFNRV9DSEFSLCAoYywgaSkgPT4gKGkgPiAwICYmIG5hbWUuY2hhckF0KGkgLSAxKSAhPT0gJy0nID8gJy0nIDogJycpICsgYy50b0xvd2VyQ2FzZSgpKS5cclxuICAgIHJlcGxhY2UoTk9OX05BTUVfQ0hBUiwgJ18nKTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2lnbmVyTW9kZWwge1xyXG4gIHR5cGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRUeXBlczogVGVtcGxhdGVJbmZvW107XHJcbiAgZ3VpZGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHJlcG9ydHM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFJlcG9ydHM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGZvcm1zOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRGb3JtczogVGVtcGxhdGVJbmZvW107XHJcbiAgY3ViZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdEN1YmVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICB1dGlsaXRpZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFV0aWxpdGllczogVGVtcGxhdGVJbmZvW107XHJcbiAgZm9sZGVyczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICByb2xlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICBydWxlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0UnVsZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHBvbGljaWVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRQb2xpY2llczogVGVtcGxhdGVJbmZvW107XHJcbiAgdmlld3M6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFZpZXdzOiBUZW1wbGF0ZUluZm9bXTtcclxuICB3aWRnZXRzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRXaWRnZXRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBhY3Rpb25zOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRBY3Rpb25zOiBUZW1wbGF0ZUluZm9bXTtcclxuICBzdGF0ZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUluZm8ge1xyXG4gIHRlbXBsYXRlPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGtleT86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGZhbWlseT86IHN0cmluZztcclxuICBoZWxwPzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgYXJndW1lbnRzPzogRmllbGRJbmZvW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50TW9kZWw8VCA9IGFueT4ge1xyXG4gIGtleT86IHN0cmluZztcclxuICBpbmplY3RvcjogSW5qZWN0b3I7XHJcbiAgb3JkaW5hbD86IG51bWJlcjtcclxuICBoZWxwPzogc3RyaW5nO1xyXG4gIGNvbmZpZ3VyYXRpb25GaWxlPzogc3RyaW5nO1xyXG4gIHRlbXBsYXRlPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XHJcbiAgY29weU9mPzogc3RyaW5nO1xyXG4gIGZhbWlseT86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBkcmFmdD86IGJvb2xlYW47XHJcbiAgZW1wdHk/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiBUO1xyXG4gIGFyZ3VtZW50cz86IEZpZWxkSW5mb1tdO1xyXG4gIHByaXZpbGVnZXM/OiBQcml2aWxlZ2VzTW9kZWw7XHJcbiAgZmlsdGVycz86IEN1YmVGaWx0ZXI7XHJcbiAgY29sdW1ucz86IEZvbGRlckNvbHVtbltdO1xyXG4gIGFub21hbHk/OiBBbm9tYWx5UG9saWN5O1xyXG4gIHZlcmI/OiBzdHJpbmc7XHJcbiAgeW91Pzogc3RyaW5nO1xyXG4gIHlvdU1hbGU/OiBzdHJpbmc7XHJcbiAgeW91RmVtYWxlPzogc3RyaW5nO1xyXG4gIHBhc3Q/OiBzdHJpbmc7XHJcbiAgcGFzdE1hbGU/OiBzdHJpbmc7XHJcbiAgcGFzdEZlbWFsZT86IHN0cmluZztcclxuICBhZGplY3RpdmU/OiBzdHJpbmc7XHJcbiAgbG9nZ2FibGU/OiBib29sZWFuO1xyXG4gIGFkamVjdGl2ZVBsdXJhbD86IHN0cmluZztcclxuICBhc3NpZ25hYmxlPzogYm9vbGVhbjtcclxuICBwb3NpdGlvbj86IFBvc2l0aW9uUG9saWN5O1xyXG4gIG11bHRpcGxlPzogYm9vbGVhbjtcclxuICBzaGFwZT86IHN0cmluZztcclxuICBncm91cD86IG51bWJlcjtcclxuICBkYXRhVHlwZT86IHN0cmluZztcclxuICBzdGVwcz86IEd1aWRlU3RlcFtdO1xyXG4gIGN1cnJlbmN5Q29kZT86IHN0cmluZztcclxuICBheGVzPzogQ3ViZUF4aXNNb2RlbFtdO1xyXG4gIHZpZXdzPzogQ3ViZVZpZXdNb2RlbFtdO1xyXG4gIGluZGljZXM/OiBDdWJlSW5kZXhNb2RlbFtdO1xyXG4gIHNjb3BlPzogU2NvcGVUeXBlO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICBydWxlcz86IFBlcm1pc3Npb25Nb2RlbFtdO1xyXG4gIHBvc2l0aW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfTtcclxuICBwYXR0ZXJucz86IFBhdHRlcm5Nb2RlbFtdO1xyXG4gIHByaW9yaXR5PzogbnVtYmVyO1xyXG4gIGN1YmVzPzogc3RyaW5nW107XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgc2VxdWVuY2VQb2xpY3k/OiAnQm90aCcgfCAnRWl0aGVyJyB8ICdIaWdoZXInO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3ViZUluZGV4TW9kZWwge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBhY2N1bXVsYXRlPzogYm9vbGVhbjtcclxuICBoaWRkZW4/OiBib29sZWFuO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDdWJlVmlld01vZGVsIHtcclxuICBwcml2aWxlZ2VzPzogUHJpdmlsZWdlc01vZGVsO1xyXG4gIHhBeGlzOiBzdHJpbmdbXTtcclxuICBzZXJpZXM/OiBzdHJpbmdbXTtcclxuICBmaWx0ZXJzPzogQXhlc01hcDtcclxuICBpbmRpY2VzPzogc3RyaW5nW107XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBndWlkZT86IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICB0eXBlOiBWaWV3VHlwZTtcclxuICBjaGFydFR5cGU/OiBDaGFydFR5cGU7XHJcbiAgaW5kaWNlc0NoYXJ0VHlwZT86IENoYXJ0VHlwZTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5Nb2RlbCB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3ViZUF4aXNNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZGF0YVR5cGU6IHN0cmluZztcclxuICBjb21iaW5hdGlvbj86IGJvb2xlYW47XHJcbiAgaW5kZXhhYmxlPzogYm9vbGVhbjtcclxuICBzZW5zaXRpdmU/OiBib29sZWFuO1xyXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcclxuICBzZWxlY3Rpb25Nb2RlPzogJ1NpbmdsZScgfCAnUGF0dGVybicgfCAnTXVsdGlwbGUnIHwgJ1NlYXJjaCcgfCAnTm9uZSc7XHJcbiAgZGVzY2VuZGVudE9mPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCB0eXBlIEFub21hbHlQb2xpY3kgPSAnUG9zaXRpb25zJyB8ICdSZWNpcGllbnRzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybk1vZGVsIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIHJ1bGU/OiBzdHJpbmc7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25Nb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmlsZWdlc01vZGVsIHtcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lckluZm8ge1xyXG4gIHR5cGVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGd1aWRlczogRWxlbWVudEluZm9bXTtcclxuICByZXBvcnRzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHRSZXBvcnRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb3JtczogRWxlbWVudEluZm9bXTtcclxuICBjdWJlczogRWxlbWVudEluZm9bXTtcclxuICB1dGlsaXRpZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgZm9sZGVyczogRWxlbWVudEluZm9bXTtcclxuICByb2xlczogRWxlbWVudEluZm9bXTtcclxuICBydWxlczogRWxlbWVudEluZm9bXTtcclxuICBwb2xpY2llczogRWxlbWVudEluZm9bXTtcclxuICB2aWV3czogRWxlbWVudEluZm9bXTtcclxuICB3aWRnZXRzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGFjdGlvbnM6IEVsZW1lbnRJbmZvW107XHJcbiAgc3RhdGVzOiBFbGVtZW50SW5mb1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudEluZm88VCA9IGFueT4ge1xyXG4gIGZhbWlseT86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGtleT86IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgZHJhZnQ/OiBib29sZWFuO1xyXG4gIGVtcHR5PzogYm9vbGVhbjtcclxuICBvcHRpb25zPzogVDtcclxufVxyXG4iXX0=
@@ -1,22 +1,22 @@
1
- import { Component, ContentChild, Directive, EventEmitter, Inject, Input, Optional, Output } from "@angular/core";
2
- import { FormGroup, Validators } from "@angular/forms";
1
+ import { Component, ContentChild, Directive, EventEmitter, Inject, Input, Output } from "@angular/core";
2
+ import { Validators } from "@angular/forms";
3
3
  import { ComponentPortal } from "@angular/cdk/portal";
4
4
  import { Subject, takeUntil } from "rxjs";
5
5
  import { DesignerRef, programName, FAMILY_SVG } from "./declarations";
6
6
  import { LayoutComponent } from "../../core/layout/layout.component";
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/forms";
9
- import * as i2 from "../../core/slots/pane-ref";
10
- import * as i3 from "../../core/component-factory-resolver";
11
- import * as i4 from "@angular/common";
12
- import * as i5 from "@angular/cdk/portal";
13
- import * as i6 from "@angular/material/toolbar";
14
- import * as i7 from "@angular/material/form-field";
15
- import * as i8 from "@angular/material/button";
16
- import * as i9 from "@angular/material/input";
17
- import * as i10 from "@angular/material/icon";
18
- import * as i11 from "../../core/popup/tooltip.directive";
19
- import * as i12 from "./designer-privileges.component";
9
+ import * as i2 from "../../core/component-factory-resolver";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@angular/cdk/portal";
12
+ import * as i5 from "@angular/material/toolbar";
13
+ import * as i6 from "@angular/material/form-field";
14
+ import * as i7 from "@angular/material/button";
15
+ import * as i8 from "@angular/material/input";
16
+ import * as i9 from "@angular/material/icon";
17
+ import * as i10 from "../../core/popup/tooltip.directive";
18
+ import * as i11 from "./designer-privileges.component";
19
+ import * as i12 from "./icon-picker.component";
20
20
  import * as i13 from "../../core/pipes/sanitize-html.pipe";
21
21
  import * as i14 from "../../core/pipes/translate.pipe";
22
22
  import * as i15 from "./declarations";
@@ -62,14 +62,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
62
62
  /**
63
63
  */
64
64
  export class DesignerItemComponent {
65
- constructor(_element, _fb, _pane, _ref, _cfr) {
65
+ constructor(_element, _fb, _ref, _cfr) {
66
66
  this._element = _element;
67
67
  this._fb = _fb;
68
- this._pane = _pane;
69
68
  this._ref = _ref;
70
69
  this._cfr = _cfr;
71
70
  this.svg = FAMILY_SVG;
72
- this.form = new FormGroup({});
73
71
  this.onContinue = new EventEmitter();
74
72
  this.onSave = new EventEmitter();
75
73
  this._destroy = new Subject();
@@ -80,12 +78,12 @@ export class DesignerItemComponent {
80
78
  const { instance } = componentRef;
81
79
  this._customDesignerInstance = instance;
82
80
  instance.model = this.model;
83
- if (this.mode === 'add' && !this._customDesignerInstance.onContinue) {
84
- this.mode = 'edit';
85
- this._addEditControls();
81
+ if (this.mode === 'add' && !instance.onContinue) {
86
82
  this.onContinue.emit();
83
+ this.mode = 'edit';
84
+ this._form();
87
85
  }
88
- this._customDesignerInstance.mode = this.mode;
86
+ instance.mode = this.mode;
89
87
  if (this.mode !== 'widget') {
90
88
  this.form.addControl('options', instance.form, { emitEvent: false });
91
89
  instance.form.patchValue(this.model.options, { emitEvent: false });
@@ -103,6 +101,8 @@ export class DesignerItemComponent {
103
101
  if (this.mode == 'add') {
104
102
  this.form.markAsDirty();
105
103
  this.form.patchValue({});
104
+ if (this.model.copyOf)
105
+ this.mode = 'edit';
106
106
  }
107
107
  if (this.model.template) {
108
108
  const comp = this._cfr.component(this.model.template);
@@ -113,29 +113,29 @@ export class DesignerItemComponent {
113
113
  else if (this.mode === 'add')
114
114
  this.mode = 'edit';
115
115
  this.mode === 'edit' &&
116
- this._addEditControls();
116
+ this._form();
117
117
  this.mode !== 'widget' &&
118
118
  this._ref._state$.pipe(takeUntil(this._destroy)).subscribe(v => this.optionsstate = v);
119
119
  }
120
- _addEditControls() {
120
+ _form() {
121
121
  const name = this._fb.control(null, Validators.required), title = this._fb.control(null, Validators.required);
122
122
  this.model.resource && title.disable();
123
123
  if (this.model.draft)
124
124
  title.valueChanges.
125
- pipe(takeUntil(this._destroy)).subscribe((t) => t && name.setValue(programName(t)));
125
+ pipe( /*takeUntil(this._destroy)*/).subscribe((t) => t && name.setValue(programName(t)));
126
126
  else
127
127
  name.disable();
128
- this.form.addControl('name', name);
129
- this.form.addControl('title', title);
130
- this.model.privileges &&
131
- this.form.addControl('privileges', this._fb.group({
132
- rule: null,
133
- roles: this._fb.control(null),
134
- }), { emitEvent: false });
135
- this.form.patchValue(this.model, { emitEvent: !this.model.draft });
128
+ this.form.addControl('name', name, { emitEvent: false });
129
+ this.form.addControl('title', title, { emitEvent: false });
130
+ this.icon && this.form.addControl('icon', this._fb.control(null), { emitEvent: false });
131
+ this.privileges && this.form.addControl('privileges', this._fb.group({
132
+ rule: null,
133
+ roles: []
134
+ }));
135
+ this.form.patchValue(this.model, { emitEvent: false });
136
136
  }
137
137
  ngAfterViewInit() {
138
- this.mode !== 'widget' &&
138
+ (this.mode === 'edit' || (this.mode === 'add' && !this.options)) &&
139
139
  setTimeout(() => this._element.nativeElement.querySelector('input')?.focus());
140
140
  }
141
141
  unlock(evt) {
@@ -151,16 +151,15 @@ export class DesignerItemComponent {
151
151
  Object.assign(this.options, this._customDesignerInstance.form.getRawValue());
152
152
  }
153
153
  this.onContinue.emit();
154
- this._addEditControls();
155
154
  if (this._customDesignerInstance)
156
155
  this._customDesignerInstance.mode = 'edit';
157
156
  this.mode = 'edit';
157
+ this._form();
158
158
  }
159
159
  save() {
160
160
  Object.assign(this.model, this.form.getRawValue());
161
161
  this._customDesignerInstance?.onFinish && this._customDesignerInstance.onFinish();
162
162
  this.onSave.emit(this.model);
163
- this._pane.close();
164
163
  }
165
164
  /**
166
165
  * Ctrl-s save
@@ -177,17 +176,19 @@ export class DesignerItemComponent {
177
176
  this._destroy?.complete();
178
177
  }
179
178
  }
180
- DesignerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DesignerItemComponent, deps: [{ token: i0.ElementRef }, { token: i1.FormBuilder }, { token: i2.PaneRef, optional: true }, { token: DesignerRef }, { token: i3.BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
181
- DesignerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: { form: "form" }, outputs: { onContinue: "continue", onSave: "save" }, queries: [{ propertyName: "editContent", first: true, predicate: EditContentDirective, descendants: true }, { propertyName: "widgetContent", first: true, predicate: WidgetContentDirective, descendants: true }], ngImport: i0, template: "<ng-conatiner [ngSwitch]=\"mode\">\r\n <!--add mode-->\r\n <form autocomplete=\"off\" class=\"column\" *ngSwitchCase=\"'add'\">\r\n <!--arguments-->\r\n <ng-container *ngIf=\"arguments\" (attached)=\"argumentsattached($event)\" [cdkPortalOutlet]=\"arguments\"></ng-container>\r\n <!--options-->\r\n <ng-container *ngIf=\"options\" (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n <div class=\"row actions\">\r\n <span class=\"divider\"></span>\r\n <button mat-stroked-button [disabled]=\"!form.valid\" (click)=\"continue()\">{{'Continue'|translate}}&nbsp;<mat-icon>double_arrow</mat-icon></button>\r\n </div>\r\n </form>\r\n <!--edit mode-->\r\n <ng-container *ngSwitchCase=\"'edit'\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!form.valid || !form.dirty\"><mat-icon>save</mat-icon></button>\r\n </mat-toolbar>\r\n <p class=\"help\">{{model.help}}</p>\r\n <p *ngIf=\"model.resource\" class=\"message\" (click)=\"unlock($event)\" [innerHTML]=\"'UnlockMultilang'|translate\"></p>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\"\r\n (document:keydown)=\"handleKeyboardEvent($event)\">\r\n <ng-container *ngIf=\"!optionsstate\">\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required #title />\r\n <mat-error *ngIf=\"form.get('title').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Title'|translate)\"></mat-error>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n <mat-error *ngIf=\"form.get('name').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Name'|translate)\"></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!--arguments-->\r\n <ng-container *ngIf=\"arguments\" (attached)=\"argumentsattached($event)\" [cdkPortalOutlet]=\"arguments\"></ng-container>\r\n <!--options-->\r\n <ng-container *ngIf=\"options\" (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"editContent?.templateRef\"></ng-container>\r\n <!--privileges-->\r\n <bizdoc-designer-privileges *ngIf=\"form.contains('privileges') && !optionsstate\" [form]=\"form.get('privileges')\"></bizdoc-designer-privileges>\r\n </form>\r\n </ng-container>\r\n <!--widget mode -->\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"model.family\">\r\n <div *ngIf=\"svg[model.family]\" [innerHTML]=\"svg[model.family]|sanitizeHtml\" [bizdocTooltip]=\"model.family\"></div>\r\n <div *ngIf=\"!svg[model.family]\">{{model.family}}</div>\r\n </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"widgetContent?.templateRef\"></ng-container>\r\n <!--options-->\r\n <ng-container *ngIf=\"options\" (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n </ng-container>\r\n</ng-conatiner>\r\n", styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}p.message{margin:5px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i7.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i11.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i12.DesignerPrivilegesComponent, selector: "bizdoc-designer-privileges", inputs: ["form"] }, { kind: "pipe", type: i13.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
179
+ DesignerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DesignerItemComponent, deps: [{ token: i0.ElementRef }, { token: i1.FormBuilder }, { token: DesignerRef }, { token: i2.BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
180
+ DesignerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: { privileges: "privileges", icon: "icon", form: "form" }, outputs: { onContinue: "continue", onSave: "save" }, queries: [{ propertyName: "editContent", first: true, predicate: EditContentDirective, descendants: true }, { propertyName: "widgetContent", first: true, predicate: WidgetContentDirective, descendants: true }], ngImport: i0, template: " <!--widget mode -->\r\n<ng-container *ngIf=\"mode === 'widget'; else editing\">\r\n <ng-container *ngIf=\"model.family\">\r\n <div *ngIf=\"svg[model.family]\" [innerHTML]=\"svg[model.family]|sanitizeHtml\" [bizdocTooltip]=\"model.family\"></div>\r\n <div *ngIf=\"!svg[model.family]\">{{model.family}}</div>\r\n </ng-container>\r\n <!--options-->\r\n <ng-container (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"widgetContent?.templateRef\"></ng-container>\r\n</ng-container>\r\n<!--add or edit mode-->\r\n<ng-template #editing>\r\n <ng-container *ngIf=\"mode === 'edit'\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!form.valid || !form.dirty\"><mat-icon>save</mat-icon></button>\r\n </mat-toolbar>\r\n <p *ngIf=\"model.resource\" class=\"message\" (click)=\"unlock($event)\" [innerHTML]=\"'UnlockMultilang'|translate\"></p>\r\n </ng-container>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\" (keydown)=\"handleKeyboardEvent($event)\">\r\n <ng-container *ngIf=\"mode === 'edit' && !optionsstate\">\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required #title />\r\n <mat-error *ngIf=\"form.get('title').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Title'|translate)\"></mat-error>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n <mat-error *ngIf=\"form.get('name').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Name'|translate)\"></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <bizdoc-icon-picker *ngIf=\"icon\" formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </ng-container>\r\n <!--arguments-->\r\n <ng-container *ngIf=\"arguments\" (attached)=\"argumentsattached($event)\" [cdkPortalOutlet]=\"arguments\"></ng-container>\r\n <!--options-->\r\n <ng-container *ngIf=\"options\" (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n <ng-container *ngIf=\"mode === 'edit'\" [ngTemplateOutlet]=\"editContent?.templateRef\"></ng-container>\r\n <!--privileges-->\r\n <bizdoc-designer-privileges *ngIf=\"form.contains('privileges') && !optionsstate\" [form]=\"form.get('privileges')\"></bizdoc-designer-privileges>\r\n </form>\r\n <div class=\"row actions\" *ngIf=\"mode === 'add'\">\r\n <span class=\"divider\"></span>\r\n <button mat-stroked-button [disabled]=\"!form.valid\" (click)=\"continue()\" type=\"button\">{{'Continue'|translate}}&nbsp;<mat-icon>double_arrow</mat-icon></button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}p.message{margin:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i10.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i11.DesignerPrivilegesComponent, selector: "bizdoc-designer-privileges", inputs: ["form"] }, { kind: "component", type: i12.IconPickerComponent, selector: "bizdoc-icon-picker", inputs: ["value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "pipe", type: i13.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
182
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DesignerItemComponent, decorators: [{
183
182
  type: Component,
184
- args: [{ selector: 'bizdoc-designer-element', template: "<ng-conatiner [ngSwitch]=\"mode\">\r\n <!--add mode-->\r\n <form autocomplete=\"off\" class=\"column\" *ngSwitchCase=\"'add'\">\r\n <!--arguments-->\r\n <ng-container *ngIf=\"arguments\" (attached)=\"argumentsattached($event)\" [cdkPortalOutlet]=\"arguments\"></ng-container>\r\n <!--options-->\r\n <ng-container *ngIf=\"options\" (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n <div class=\"row actions\">\r\n <span class=\"divider\"></span>\r\n <button mat-stroked-button [disabled]=\"!form.valid\" (click)=\"continue()\">{{'Continue'|translate}}&nbsp;<mat-icon>double_arrow</mat-icon></button>\r\n </div>\r\n </form>\r\n <!--edit mode-->\r\n <ng-container *ngSwitchCase=\"'edit'\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!form.valid || !form.dirty\"><mat-icon>save</mat-icon></button>\r\n </mat-toolbar>\r\n <p class=\"help\">{{model.help}}</p>\r\n <p *ngIf=\"model.resource\" class=\"message\" (click)=\"unlock($event)\" [innerHTML]=\"'UnlockMultilang'|translate\"></p>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\"\r\n (document:keydown)=\"handleKeyboardEvent($event)\">\r\n <ng-container *ngIf=\"!optionsstate\">\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required #title />\r\n <mat-error *ngIf=\"form.get('title').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Title'|translate)\"></mat-error>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n <mat-error *ngIf=\"form.get('name').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Name'|translate)\"></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!--arguments-->\r\n <ng-container *ngIf=\"arguments\" (attached)=\"argumentsattached($event)\" [cdkPortalOutlet]=\"arguments\"></ng-container>\r\n <!--options-->\r\n <ng-container *ngIf=\"options\" (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"editContent?.templateRef\"></ng-container>\r\n <!--privileges-->\r\n <bizdoc-designer-privileges *ngIf=\"form.contains('privileges') && !optionsstate\" [form]=\"form.get('privileges')\"></bizdoc-designer-privileges>\r\n </form>\r\n </ng-container>\r\n <!--widget mode -->\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"model.family\">\r\n <div *ngIf=\"svg[model.family]\" [innerHTML]=\"svg[model.family]|sanitizeHtml\" [bizdocTooltip]=\"model.family\"></div>\r\n <div *ngIf=\"!svg[model.family]\">{{model.family}}</div>\r\n </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"widgetContent?.templateRef\"></ng-container>\r\n <!--options-->\r\n <ng-container *ngIf=\"options\" (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n </ng-container>\r\n</ng-conatiner>\r\n", styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}p.message{margin:5px}\n"] }]
185
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormBuilder }, { type: i2.PaneRef, decorators: [{
186
- type: Optional
187
- }] }, { type: i15.DesignerRef, decorators: [{
183
+ args: [{ selector: 'bizdoc-designer-element', template: " <!--widget mode -->\r\n<ng-container *ngIf=\"mode === 'widget'; else editing\">\r\n <ng-container *ngIf=\"model.family\">\r\n <div *ngIf=\"svg[model.family]\" [innerHTML]=\"svg[model.family]|sanitizeHtml\" [bizdocTooltip]=\"model.family\"></div>\r\n <div *ngIf=\"!svg[model.family]\">{{model.family}}</div>\r\n </ng-container>\r\n <!--options-->\r\n <ng-container (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"widgetContent?.templateRef\"></ng-container>\r\n</ng-container>\r\n<!--add or edit mode-->\r\n<ng-template #editing>\r\n <ng-container *ngIf=\"mode === 'edit'\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!form.valid || !form.dirty\"><mat-icon>save</mat-icon></button>\r\n </mat-toolbar>\r\n <p *ngIf=\"model.resource\" class=\"message\" (click)=\"unlock($event)\" [innerHTML]=\"'UnlockMultilang'|translate\"></p>\r\n </ng-container>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\" (keydown)=\"handleKeyboardEvent($event)\">\r\n <ng-container *ngIf=\"mode === 'edit' && !optionsstate\">\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required #title />\r\n <mat-error *ngIf=\"form.get('title').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Title'|translate)\"></mat-error>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n <mat-error *ngIf=\"form.get('name').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Name'|translate)\"></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <bizdoc-icon-picker *ngIf=\"icon\" formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </ng-container>\r\n <!--arguments-->\r\n <ng-container *ngIf=\"arguments\" (attached)=\"argumentsattached($event)\" [cdkPortalOutlet]=\"arguments\"></ng-container>\r\n <!--options-->\r\n <ng-container *ngIf=\"options\" (attached)=\"optionsattached($event)\" [cdkPortalOutlet]=\"options\"></ng-container>\r\n <ng-container *ngIf=\"mode === 'edit'\" [ngTemplateOutlet]=\"editContent?.templateRef\"></ng-container>\r\n <!--privileges-->\r\n <bizdoc-designer-privileges *ngIf=\"form.contains('privileges') && !optionsstate\" [form]=\"form.get('privileges')\"></bizdoc-designer-privileges>\r\n </form>\r\n <div class=\"row actions\" *ngIf=\"mode === 'add'\">\r\n <span class=\"divider\"></span>\r\n <button mat-stroked-button [disabled]=\"!form.valid\" (click)=\"continue()\" type=\"button\">{{'Continue'|translate}}&nbsp;<mat-icon>double_arrow</mat-icon></button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}p.message{margin:5px}\n"] }]
184
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormBuilder }, { type: i15.DesignerRef, decorators: [{
188
185
  type: Inject,
189
186
  args: [DesignerRef]
190
- }] }, { type: i3.BizDocComponentFactoryResolver }]; }, propDecorators: { form: [{
187
+ }] }, { type: i2.BizDocComponentFactoryResolver }]; }, propDecorators: { privileges: [{
188
+ type: Input
189
+ }], icon: [{
190
+ type: Input
191
+ }], form: [{
191
192
  type: Input
192
193
  }], onContinue: [{
193
194
  type: Output,
@@ -202,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
202
203
  type: ContentChild,
203
204
  args: [WidgetContentDirective]
204
205
  }] } });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ25MLE9BQU8sRUFBNEIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBQUUsV0FBVyxFQUFnQixXQUFXLEVBQWMsVUFBVSxFQUE0QixNQUFNLGdCQUFnQixDQUFDO0FBQzFILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNckUsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixXQUFpQztRQUFqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7SUFBSSxDQUFDOztpSEFEOUMsb0JBQW9CO3FHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzs7QUFPRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW1CLFdB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bXBvbmVudCwgQ29tcG9uZW50UmVmLCBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tIFwiLi4vLi4vY29yZS9jb21wb25lbnQtZmFjdG9yeS1yZXNvbHZlclwiO1xyXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyUmVmLCBFbGVtZW50TW9kZWwsIHByb2dyYW1OYW1lLCBEZXNpZ25Nb2RlLCBGQU1JTFlfU1ZHLCBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiLi9kZWNsYXJhdGlvbnNcIjtcclxuaW1wb3J0IHsgTGF5b3V0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUvbGF5b3V0L2xheW91dC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gXCIuLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tiaXpkb2NFZGl0Q29udGVudF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0Q29udGVudERpcmVjdGl2ZSB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPikgeyB9XHJcbn1cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYml6ZG9jQ29udGVudF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXaWRnZXRDb250ZW50RGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+KSB7IH1cclxufVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tiaXpkb2NBZGRDb250ZW50XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZENvbnRlbnREaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4pIHsgfVxyXG59XHJcblxyXG4vKipcclxuKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZGVzaWduZXItZWxlbWVudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICdkZXNpZ25lci1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBEZXNpZ25lckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IHN2ZyA9IEZBTUlMWV9TVkc7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQE91dHB1dCgnY29udGludWUnKSByZWFkb25seSBvbkNvbnRpbnVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoJ3NhdmUnKSByZWFkb25seSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEVsZW1lbnRNb2RlbD4oKTtcclxuICByb2xlczogUm9sZVtdO1xyXG4gIGZyb2xlczogUm9sZVtdO1xyXG4gIEBDb250ZW50Q2hpbGQoRWRpdENvbnRlbnREaXJlY3RpdmUpIGVkaXRDb250ZW50OiBFZGl0Q29udGVudERpcmVjdGl2ZTtcclxuICBAQ29udGVudENoaWxkKFdpZGdldENvbnRlbnREaXJlY3RpdmUpIHdpZGdldENvbnRlbnQ6IFdpZGdldENvbnRlbnREaXJlY3RpdmU7XHJcbiAgb3B0aW9uczogUG9ydGFsPGFueT47XHJcbiAgYXJndW1lbnRzOiBQb3J0YWw8YW55PjtcclxuICBtb2RlOiBEZXNpZ25Nb2RlO1xyXG4gIG1vZGVsOiBFbGVtZW50TW9kZWw8YW55PjtcclxuICByb2xlc2ZpbHRlcjogRm9ybUNvbnRyb2w7XHJcbiAgcHJpdmF0ZSBfY3VzdG9tRGVzaWduZXJJbnN0YW5jZTogRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PGFueT47XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgb3B0aW9uc3N0YXRlOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BhbmU6IFBhbmVSZWYsXHJcbiAgICBASW5qZWN0KERlc2lnbmVyUmVmKSBwcml2YXRlIF9yZWY6IERlc2lnbmVyUmVmPGFueT4sXHJcbiAgICBwcml2YXRlIF9jZnI6IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICApIHtcclxuICAgIHRoaXMubW9kZSA9IF9yZWYubW9kZTtcclxuICAgIHRoaXMubW9kZWwgPSBfcmVmLm1vZGVsIGFzIEVsZW1lbnRNb2RlbDtcclxuICB9XHJcbiAgb3B0aW9uc2F0dGFjaGVkKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxhbnk+Pikge1xyXG4gICAgY29uc3QgeyBpbnN0YW5jZSB9ID0gY29tcG9uZW50UmVmO1xyXG4gICAgdGhpcy5fY3VzdG9tRGVzaWduZXJJbnN0YW5jZSA9IGluc3RhbmNlIGFzIERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxhbnk+O1xyXG4gICAgaW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2FkZCcgJiYgIXRoaXMuX2N1c3RvbURlc2lnbmVySW5zdGFuY2Uub25Db250aW51ZSkge1xyXG4gICAgICB0aGlzLm1vZGUgPSAnZWRpdCc7XHJcbiAgICAgIHRoaXMuX2FkZEVkaXRDb250cm9scygpO1xyXG4gICAgICB0aGlzLm9uQ29udGludWUuZW1pdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY3VzdG9tRGVzaWduZXJJbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlO1xyXG4gICAgaWYgKHRoaXMubW9kZSAhPT0gJ3dpZGdldCcpIHtcclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ29wdGlvbnMnLCBpbnN0YW5jZS5mb3JtLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIGluc3RhbmNlLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsLm9wdGlvbnMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJndW1lbnRzYXR0YWNoZWQoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TGF5b3V0Q29tcG9uZW50Pikge1xyXG4gICAgY29uc3QgeyBpbnN0YW5jZSB9ID0gY29tcG9uZW50UmVmO1xyXG4gICAgaW5zdGFuY2UuZmllbGRzID0gdGhpcy5tb2RlbC5hcmd1bWVudHM7XHJcbiAgICBpbnN0YW5jZS5tb2RlbCA9IHRoaXMubW9kZWwub3B0aW9ucztcclxuICAgIGluc3RhbmNlLmxheW91dCgpO1xyXG4gICAgdGhpcy5tb2RlICE9PSAnd2lkZ2V0JyAmJlxyXG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgnb3B0aW9ucycsIGluc3RhbmNlLmZvcm0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdhZGQnKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7fSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlbC50ZW1wbGF0ZSkge1xyXG4gICAgICBjb25zdCBjb21wID0gdGhpcy5fY2ZyLmNvbXBvbmVudCh0aGlzLm1vZGVsLnRlbXBsYXRlKTtcclxuICAgICAgdGhpcy5vcHRpb25zID0gbmV3IENvbXBvbmVudFBvcnRhbDxEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ8YW55Pj4oY29tcCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLm1vZGUgIT09ICd3aWRnZXQnICYmIHRoaXMubW9kZWwuYXJndW1lbnRzPy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuYXJndW1lbnRzID0gbmV3IENvbXBvbmVudFBvcnRhbChMYXlvdXRDb21wb25lbnQpO1xyXG4gICAgZWxzZSBpZiAodGhpcy5tb2RlID09PSAnYWRkJylcclxuICAgICAgdGhpcy5tb2RlID0gJ2VkaXQnO1xyXG5cclxuICAgIHRoaXMubW9kZSA9PT0gJ2VkaXQnICYmXHJcbiAgICAgIHRoaXMuX2FkZEVkaXRDb250cm9scygpO1xyXG4gICAgdGhpcy5tb2RlICE9PSAnd2lkZ2V0JyAmJlxyXG4gICAgICB0aGlzLl9yZWYuX3N0YXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHYgPT5cclxuICAgICAgICB0aGlzLm9wdGlvbnNzdGF0ZSA9IHYpO1xyXG4gIH1cclxuICBwcml2YXRlIF9hZGRFZGl0Q29udHJvbHMoKSB7XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgdGl0bGUgPSB0aGlzLl9mYi5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgdGhpcy5tb2RlbC5yZXNvdXJjZSAmJiB0aXRsZS5kaXNhYmxlKCk7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5kcmFmdCkgdGl0bGUudmFsdWVDaGFuZ2VzLlxyXG4gICAgICBwaXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCh0OiBzdHJpbmcpID0+XHJcbiAgICAgICAgdCAmJiBuYW1lLnNldFZhbHVlKHByb2dyYW1OYW1lKHQpKVxyXG4gICAgICApO1xyXG4gICAgZWxzZVxyXG4gICAgICBuYW1lLmRpc2FibGUoKTtcclxuICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCduYW1lJywgbmFtZSk7XHJcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgndGl0bGUnLCB0aXRsZSk7XHJcbiAgICB0aGlzLm1vZGVsLnByaXZpbGVnZXMgJiZcclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ3ByaXZpbGVnZXMnLFxyXG4gICAgICAgIHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgICAgICAgIHJ1bGU6IG51bGwsXHJcbiAgICAgICAgICByb2xlczogdGhpcy5fZmIuY29udHJvbDxzdHJpbmdbXT4obnVsbCksXHJcbiAgICAgICAgfSksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwsIHsgZW1pdEV2ZW50OiAhdGhpcy5tb2RlbC5kcmFmdCB9KTtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5tb2RlICE9PSAnd2lkZ2V0JyAmJlxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpPy5mb2N1cygpKTtcclxuICB9XHJcbiAgdW5sb2NrKGV2dDogRXZlbnQpIHtcclxuICAgIGlmICgoZXZ0LnNyY0VsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUgIT09ICdBJykgcmV0dXJuO1xyXG4gICAgdGhpcy5tb2RlbC5yZXNvdXJjZSA9IG51bGw7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCd0aXRsZScpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5fcmVmLl91bmxvY2skLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuICBjb250aW51ZSgpIHtcclxuICAgIGlmICh0aGlzLl9jdXN0b21EZXNpZ25lckluc3RhbmNlPy5vbkNvbnRpbnVlKSB7XHJcbiAgICAgIHRoaXMuX2N1c3RvbURlc2lnbmVySW5zdGFuY2Uub25Db250aW51ZSgpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgdGhpcy5fY3VzdG9tRGVzaWduZXJJbnN0YW5jZS5mb3JtLmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNvbnRpbnVlLmVtaXQoKTtcclxuICAgIHRoaXMuX2FkZEVkaXRDb250cm9scygpO1xyXG4gICAgaWYgKHRoaXMuX2N1c3RvbURlc2lnbmVySW5zdGFuY2UpXHJcbiAgICAgIHRoaXMuX2N1c3RvbURlc2lnbmVySW5zdGFuY2UubW9kZSA9ICdlZGl0JztcclxuICAgIHRoaXMubW9kZSA9ICdlZGl0JztcclxuICB9XHJcbiAgc2F2ZSgpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgdGhpcy5fY3VzdG9tRGVzaWduZXJJbnN0YW5jZT8ub25GaW5pc2ggJiYgdGhpcy5fY3VzdG9tRGVzaWduZXJJbnN0YW5jZS5vbkZpbmlzaCgpO1xyXG4gICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMuX3BhbmUuY2xvc2UoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3RybC1zIHNhdmVcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiAoZXZlbnQud2hpY2ggPT09IDgzIHx8IGV2ZW50LndoaWNoID09PSAxMTUpKSB7XHJcbiAgICAgIHRoaXMuZm9ybS52YWxpZCAmJiB0aGlzLnNhdmUoKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Py5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95Py5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29uYXRpbmVyIFtuZ1N3aXRjaF09XCJtb2RlXCI+XHJcbiAgPCEtLWFkZCBtb2RlLS0+XHJcbiAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2x1bW5cIiAqbmdTd2l0Y2hDYXNlPVwiJ2FkZCdcIj5cclxuICAgIDwhLS1hcmd1bWVudHMtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcmd1bWVudHNcIiAoYXR0YWNoZWQpPVwiYXJndW1lbnRzYXR0YWNoZWQoJGV2ZW50KVwiIFtjZGtQb3J0YWxPdXRsZXRdPVwiYXJndW1lbnRzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tb3B0aW9ucy0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNcIiAoYXR0YWNoZWQpPVwib3B0aW9uc2F0dGFjaGVkKCRldmVudClcIiBbY2RrUG9ydGFsT3V0bGV0XT1cIm9wdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgYWN0aW9uc1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiIChjbGljayk9XCJjb250aW51ZSgpXCI+e3snQ29udGludWUnfHRyYW5zbGF0ZX19Jm5ic3A7PG1hdC1pY29uPmRvdWJsZV9hcnJvdzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbiAgPCEtLWVkaXQgbW9kZS0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidlZGl0J1wiPlxyXG4gICAgPG1hdC10b29sYmFyPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkIHx8ICFmb3JtLmRpcnR5XCI+PG1hdC1pY29uPnNhdmU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuICAgIDxwIGNsYXNzPVwiaGVscFwiPnt7bW9kZWwuaGVscH19PC9wPlxyXG4gICAgPHAgKm5nSWY9XCJtb2RlbC5yZXNvdXJjZVwiIGNsYXNzPVwibWVzc2FnZVwiIChjbGljayk9XCJ1bmxvY2soJGV2ZW50KVwiIFtpbm5lckhUTUxdPVwiJ1VubG9ja011bHRpbGFuZyd8dHJhbnNsYXRlXCI+PC9wPlxyXG4gICAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJjb2x1bW5cIlxyXG4gICAgICAgICAgKGRvY3VtZW50OmtleWRvd24pPVwiaGFuZGxlS2V5Ym9hcmRFdmVudCgkZXZlbnQpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9uc3N0YXRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J1RpdGxlJ3x0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIiByZXF1aXJlZCAjdGl0bGUgLz5cclxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uZ2V0KCd0aXRsZScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgW2lubmVySFRNTF09XCInUmVxdWlyZWRFcnInfHRyYW5zbGF0ZTooJ1RpdGxlJ3x0cmFuc2xhdGUpXCI+PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snTmFtZSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiByZXF1aXJlZCAvPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5nZXQoJ25hbWUnKS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIFtpbm5lckhUTUxdPVwiJ1JlcXVpcmVkRXJyJ3x0cmFuc2xhdGU6KCdOYW1lJ3x0cmFuc2xhdGUpXCI+PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1hcmd1bWVudHMtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXJndW1lbnRzXCIgKGF0dGFjaGVkKT1cImFyZ3VtZW50c2F0dGFjaGVkKCRldmVudClcIiBbY2RrUG9ydGFsT3V0bGV0XT1cImFyZ3VtZW50c1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS1vcHRpb25zLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNcIiAoYXR0YWNoZWQpPVwib3B0aW9uc2F0dGFjaGVkKCRldmVudClcIiBbY2RrUG9ydGFsT3V0bGV0XT1cIm9wdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdENvbnRlbnQ/LnRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1wcml2aWxlZ2VzLS0+XHJcbiAgICAgIDxiaXpkb2MtZGVzaWduZXItcHJpdmlsZWdlcyAqbmdJZj1cImZvcm0uY29udGFpbnMoJ3ByaXZpbGVnZXMnKSAmJiAhb3B0aW9uc3N0YXRlXCIgW2Zvcm1dPVwiZm9ybS5nZXQoJ3ByaXZpbGVnZXMnKVwiPjwvYml6ZG9jLWRlc2lnbmVyLXByaXZpbGVnZXM+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPCEtLXdpZGdldCBtb2RlIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5mYW1pbHlcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cInN2Z1ttb2RlbC5mYW1pbHldXCIgW2lubmVySFRNTF09XCJzdmdbbW9kZWwuZmFtaWx5XXxzYW5pdGl6ZUh0bWxcIiBbYml6ZG9jVG9vbHRpcF09XCJtb2RlbC5mYW1pbHlcIj48L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFzdmdbbW9kZWwuZmFtaWx5XVwiPnt7bW9kZWwuZmFtaWx5fX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ3aWRnZXRDb250ZW50Py50ZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLW9wdGlvbnMtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zXCIgKGF0dGFjaGVkKT1cIm9wdGlvbnNhdHRhY2hlZCgkZXZlbnQpXCIgW2Nka1BvcnRhbE91dGxldF09XCJvcHRpb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29uYXRpbmVyPlxyXG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDekssT0FBTyxFQUF1QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLFdBQVcsRUFBZ0IsV0FBVyxFQUFjLFVBQVUsRUFBNEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT3JFLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBbUIsV0FBaUM7UUFBakMsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO0lBQUksQ0FBQzs7aUhBRDlDLG9CQUFvQjtxR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEM7O0FBT0QsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFtQixXQUFpQztRQUFqQyxnQkFBVyxHQUFY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Q0ksYUFBYTtzQkFBbEQsWUFBWTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tIFwiLi4vLi4vY29yZS9jb21wb25lbnQtZmFjdG9yeS1yZXNvbHZlclwiO1xyXG5pbXBvcnQgeyBEZXNpZ25lclJlZiwgRWxlbWVudE1vZGVsLCBwcm9ncmFtTmFtZSwgRGVzaWduTW9kZSwgRkFNSUxZX1NWRywgRGVzaWduZXJFbGVtZW50Q29tcG9uZW50IH0gZnJvbSBcIi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IExheW91dENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlL2xheW91dC9sYXlvdXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVTQ0FQRSB9IGZyb20gXCJAYW5ndWxhci9jZGsva2V5Y29kZXNcIjtcclxuaW1wb3J0IHsgZWxlbWVudCB9IGZyb20gXCJwcm90cmFjdG9yXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tiaXpkb2NFZGl0Q29udGVudF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0Q29udGVudERpcmVjdGl2ZSB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPikgeyB9XHJcbn1cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYml6ZG9jQ29udGVudF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXaWRnZXRDb250ZW50RGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+KSB7IH1cclxufVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tiaXpkb2NBZGRDb250ZW50XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZENvbnRlbnREaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4pIHsgfVxyXG59XHJcblxyXG4vKipcclxuKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZGVzaWduZXItZWxlbWVudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICdkZXNpZ25lci1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBEZXNpZ25lckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IHN2ZyA9IEZBTUlMWV9TVkc7XHJcbiAgQElucHV0KCkgcHJpdmlsZWdlczogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpY29uOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuICBAT3V0cHV0KCdjb250aW51ZScpIHJlYWRvbmx5IG9uQ29udGludWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgnc2F2ZScpIHJlYWRvbmx5IG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWxlbWVudE1vZGVsPigpO1xyXG4gIEBDb250ZW50Q2hpbGQoRWRpdENvbnRlbnREaXJlY3RpdmUpIGVkaXRDb250ZW50OiBFZGl0Q29udGVudERpcmVjdGl2ZTtcclxuICBAQ29udGVudENoaWxkKFdpZGdldENvbnRlbnREaXJlY3RpdmUpIHdpZGdldENvbnRlbnQ6IFdpZGdldENvbnRlbnREaXJlY3RpdmU7XHJcbiAgb3B0aW9uczogUG9ydGFsPGFueT47XHJcbiAgYXJndW1lbnRzOiBQb3J0YWw8YW55PjtcclxuICBtb2RlOiBEZXNpZ25Nb2RlO1xyXG4gIG1vZGVsOiBFbGVtZW50TW9kZWw8YW55PjtcclxuICBwcml2YXRlIF9jdXN0b21EZXNpZ25lckluc3RhbmNlOiBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ8YW55PjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBvcHRpb25zc3RhdGU6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgQEluamVjdChEZXNpZ25lclJlZikgcHJpdmF0ZSBfcmVmOiBEZXNpZ25lclJlZjxhbnk+LFxyXG4gICAgcHJpdmF0ZSBfY2ZyOiBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1vZGUgPSBfcmVmLm1vZGU7XHJcbiAgICB0aGlzLm1vZGVsID0gX3JlZi5tb2RlbCBhcyBFbGVtZW50TW9kZWw7XHJcbiAgfVxyXG4gIG9wdGlvbnNhdHRhY2hlZChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ8YW55Pj4pIHtcclxuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IGNvbXBvbmVudFJlZjtcclxuICAgIHRoaXMuX2N1c3RvbURlc2lnbmVySW5zdGFuY2UgPSBpbnN0YW5jZSBhcyBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ8YW55PjtcclxuICAgIGluc3RhbmNlLm1vZGVsID0gdGhpcy5tb2RlbDtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdhZGQnICYmICFpbnN0YW5jZS5vbkNvbnRpbnVlKSB7XHJcbiAgICAgIHRoaXMub25Db250aW51ZS5lbWl0KCk7XHJcbiAgICAgIHRoaXMubW9kZSA9ICdlZGl0JztcclxuICAgICAgdGhpcy5fZm9ybSgpO1xyXG4gICAgfVxyXG4gICAgaW5zdGFuY2UubW9kZSA9IHRoaXMubW9kZTtcclxuICAgIGlmICh0aGlzLm1vZGUgIT09ICd3aWRnZXQnKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCdvcHRpb25zJywgaW5zdGFuY2UuZm9ybSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICBpbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbC5vcHRpb25zLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFyZ3VtZW50c2F0dGFjaGVkKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPExheW91dENvbXBvbmVudD4pIHtcclxuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IGNvbXBvbmVudFJlZjtcclxuICAgIGluc3RhbmNlLmZpZWxkcyA9IHRoaXMubW9kZWwuYXJndW1lbnRzO1xyXG4gICAgaW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsLm9wdGlvbnM7XHJcbiAgICBpbnN0YW5jZS5sYXlvdXQoKTtcclxuICAgIHRoaXMubW9kZSAhPT0gJ3dpZGdldCcgJiZcclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ29wdGlvbnMnLCBpbnN0YW5jZS5mb3JtLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnYWRkJykge1xyXG4gICAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe30pO1xyXG4gICAgICBpZiAodGhpcy5tb2RlbC5jb3B5T2YpXHJcbiAgICAgICAgdGhpcy5tb2RlID0gJ2VkaXQnO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZWwudGVtcGxhdGUpIHtcclxuICAgICAgY29uc3QgY29tcCA9IHRoaXMuX2Nmci5jb21wb25lbnQodGhpcy5tb2RlbC50ZW1wbGF0ZSk7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IG5ldyBDb21wb25lbnRQb3J0YWw8RGVzaWduZXJFbGVtZW50Q29tcG9uZW50PGFueT4+KGNvbXApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5tb2RlICE9PSAnd2lkZ2V0JyAmJiB0aGlzLm1vZGVsLmFyZ3VtZW50cz8ubGVuZ3RoKVxyXG4gICAgICB0aGlzLmFyZ3VtZW50cyA9IG5ldyBDb21wb25lbnRQb3J0YWwoTGF5b3V0Q29tcG9uZW50KTtcclxuICAgIGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ2FkZCcpXHJcbiAgICAgIHRoaXMubW9kZSA9ICdlZGl0JztcclxuXHJcbiAgICB0aGlzLm1vZGUgPT09ICdlZGl0JyAmJlxyXG4gICAgICB0aGlzLl9mb3JtKCk7XHJcbiAgICB0aGlzLm1vZGUgIT09ICd3aWRnZXQnICYmXHJcbiAgICAgIHRoaXMuX3JlZi5fc3RhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodiA9PlxyXG4gICAgICAgIHRoaXMub3B0aW9uc3N0YXRlID0gdik7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Zvcm0oKSB7XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgdGl0bGUgPSB0aGlzLl9mYi5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgdGhpcy5tb2RlbC5yZXNvdXJjZSAmJiB0aXRsZS5kaXNhYmxlKCk7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5kcmFmdCkgdGl0bGUudmFsdWVDaGFuZ2VzLlxyXG4gICAgICBwaXBlKC8qdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKi8pLnN1YnNjcmliZSgodDogc3RyaW5nKSA9PlxyXG4gICAgICAgIHQgJiYgbmFtZS5zZXRWYWx1ZShwcm9ncmFtTmFtZSh0KSlcclxuICAgICAgKTtcclxuICAgIGVsc2VcclxuICAgICAgbmFtZS5kaXNhYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgnbmFtZScsIG5hbWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCd0aXRsZScsIHRpdGxlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB0aGlzLmljb24gJiYgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2ljb24nLCB0aGlzLl9mYi5jb250cm9sKG51bGwpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB0aGlzLnByaXZpbGVnZXMgJiYgdGhpcy5mb3JtLmFkZENvbnRyb2woJ3ByaXZpbGVnZXMnLCB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICAgIHJ1bGU6IG51bGwsXHJcbiAgICAgIHJvbGVzOiBbXVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAodGhpcy5tb2RlID09PSAnZWRpdCcgfHwgKHRoaXMubW9kZSA9PT0gJ2FkZCcgJiYgIXRoaXMub3B0aW9ucykpICYmXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk/LmZvY3VzKCkpO1xyXG4gIH1cclxuICB1bmxvY2soZXZ0OiBFdmVudCkge1xyXG4gICAgaWYgKChldnQuc3JjRWxlbWVudCBhcyBIVE1MRWxlbWVudCkudGFnTmFtZSAhPT0gJ0EnKSByZXR1cm47XHJcbiAgICB0aGlzLm1vZGVsLnJlc291cmNlID0gbnVsbDtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3RpdGxlJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLl9yZWYuX3VubG9jayQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIGNvbnRpbnVlKCkge1xyXG4gICAgaWYgKHRoaXMuX2N1c3RvbURlc2lnbmVySW5zdGFuY2U/Lm9uQ29udGludWUpIHtcclxuICAgICAgdGhpcy5fY3VzdG9tRGVzaWduZXJJbnN0YW5jZS5vbkNvbnRpbnVlKCk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCB0aGlzLl9jdXN0b21EZXNpZ25lckluc3RhbmNlLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ29udGludWUuZW1pdCgpO1xyXG4gICAgaWYgKHRoaXMuX2N1c3RvbURlc2lnbmVySW5zdGFuY2UpXHJcbiAgICAgIHRoaXMuX2N1c3RvbURlc2lnbmVySW5zdGFuY2UubW9kZSA9ICdlZGl0JztcclxuICAgIHRoaXMubW9kZSA9ICdlZGl0JztcclxuICAgIHRoaXMuX2Zvcm0oKTtcclxuICB9XHJcbiAgc2F2ZSgpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgdGhpcy5fY3VzdG9tRGVzaWduZXJJbnN0YW5jZT8ub25GaW5pc2ggJiYgdGhpcy5fY3VzdG9tRGVzaWduZXJJbnN0YW5jZS5vbkZpbmlzaCgpO1xyXG4gICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLm1vZGVsKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3RybC1zIHNhdmVcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiAoZXZlbnQud2hpY2ggPT09IDgzIHx8IGV2ZW50LndoaWNoID09PSAxMTUpKSB7XHJcbiAgICAgIHRoaXMuZm9ybS52YWxpZCAmJiB0aGlzLnNhdmUoKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Py5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95Py5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCIgIDwhLS13aWRnZXQgbW9kZSAtLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICd3aWRnZXQnOyBlbHNlIGVkaXRpbmdcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuZmFtaWx5XCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic3ZnW21vZGVsLmZhbWlseV1cIiBbaW5uZXJIVE1MXT1cInN2Z1ttb2RlbC5mYW1pbHldfHNhbml0aXplSHRtbFwiIFtiaXpkb2NUb29sdGlwXT1cIm1vZGVsLmZhbWlseVwiPjwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFzdmdbbW9kZWwuZmFtaWx5XVwiPnt7bW9kZWwuZmFtaWx5fX08L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8IS0tb3B0aW9ucy0tPlxyXG4gIDxuZy1jb250YWluZXIgKGF0dGFjaGVkKT1cIm9wdGlvbnNhdHRhY2hlZCgkZXZlbnQpXCIgW2Nka1BvcnRhbE91dGxldF09XCJvcHRpb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ3aWRnZXRDb250ZW50Py50ZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPCEtLWFkZCBvciBlZGl0IG1vZGUtLT5cclxuPG5nLXRlbXBsYXRlICNlZGl0aW5nPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09PSAnZWRpdCdcIj5cclxuICAgIDxtYXQtdG9vbGJhcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCAhZm9ybS5kaXJ0eVwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LXRvb2xiYXI+XHJcbiAgICA8cCAqbmdJZj1cIm1vZGVsLnJlc291cmNlXCIgY2xhc3M9XCJtZXNzYWdlXCIgKGNsaWNrKT1cInVubG9jaygkZXZlbnQpXCIgW2lubmVySFRNTF09XCInVW5sb2NrTXVsdGlsYW5nJ3x0cmFuc2xhdGVcIj48L3A+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJjb2x1bW5cIiAoa2V5ZG93bik9XCJoYW5kbGVLZXlib2FyZEV2ZW50KCRldmVudClcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09PSAnZWRpdCcgJiYgIW9wdGlvbnNzdGF0ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57eydUaXRsZSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHJlcXVpcmVkICN0aXRsZSAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uZ2V0KCd0aXRsZScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgW2lubmVySFRNTF09XCInUmVxdWlyZWRFcnInfHRyYW5zbGF0ZTooJ1RpdGxlJ3x0cmFuc2xhdGUpXCI+PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAmbmJzcDtcclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnt7J05hbWUnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHJlcXVpcmVkIC8+XHJcbiAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5nZXQoJ25hbWUnKS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIFtpbm5lckhUTUxdPVwiJ1JlcXVpcmVkRXJyJ3x0cmFuc2xhdGU6KCdOYW1lJ3x0cmFuc2xhdGUpXCI+PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxiaXpkb2MtaWNvbi1waWNrZXIgKm5nSWY9XCJpY29uXCIgZm9ybUNvbnRyb2xOYW1lPVwiaWNvblwiIHJlcXVpcmVkPjwvYml6ZG9jLWljb24tcGlja2VyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tYXJndW1lbnRzLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXJndW1lbnRzXCIgKGF0dGFjaGVkKT1cImFyZ3VtZW50c2F0dGFjaGVkKCRldmVudClcIiBbY2RrUG9ydGFsT3V0bGV0XT1cImFyZ3VtZW50c1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLW9wdGlvbnMtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zXCIgKGF0dGFjaGVkKT1cIm9wdGlvbnNhdHRhY2hlZCgkZXZlbnQpXCIgW2Nka1BvcnRhbE91dGxldF09XCJvcHRpb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ2VkaXQnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdENvbnRlbnQ/LnRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tcHJpdmlsZWdlcy0tPlxyXG4gICAgPGJpemRvYy1kZXNpZ25lci1wcml2aWxlZ2VzICpuZ0lmPVwiZm9ybS5jb250YWlucygncHJpdmlsZWdlcycpICYmICFvcHRpb25zc3RhdGVcIiBbZm9ybV09XCJmb3JtLmdldCgncHJpdmlsZWdlcycpXCI+PC9iaXpkb2MtZGVzaWduZXItcHJpdmlsZWdlcz5cclxuICA8L2Zvcm0+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBhY3Rpb25zXCIgKm5nSWY9XCJtb2RlID09PSAnYWRkJ1wiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCIgKGNsaWNrKT1cImNvbnRpbnVlKClcIiB0eXBlPVwiYnV0dG9uXCI+e3snQ29udGludWUnfHRyYW5zbGF0ZX19Jm5ic3A7PG1hdC1pY29uPmRvdWJsZV9hcnJvdzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==