@ethlete/cdk 4.11.1 → 4.13.0

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 (21) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.mjs +5 -15
  3. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.mjs +4 -3
  4. package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +1 -2
  5. package/esm2022/lib/components/overlay/components/overlay/types/overlay.types.mjs +1 -1
  6. package/esm2022/lib/components/overlay/components/overlay/utils/filter-overlay.mjs +1 -1
  7. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-position-builder.mjs +4 -4
  8. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-ref.mjs +2 -1
  9. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-router.mjs +80 -83
  10. package/esm2022/lib/components/overlay/components/overlay/utils/sidebar-overlay.mjs +2 -14
  11. package/fesm2022/ethlete-cdk.mjs +85 -109
  12. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  13. package/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.d.ts +2 -7
  14. package/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.d.ts +3 -2
  15. package/lib/components/overlay/components/overlay/types/overlay.types.d.ts +4 -1
  16. package/lib/components/overlay/components/overlay/utils/filter-overlay.d.ts +2 -5
  17. package/lib/components/overlay/components/overlay/utils/overlay-position-builder.d.ts +4 -0
  18. package/lib/components/overlay/components/overlay/utils/overlay-ref.d.ts +1 -0
  19. package/lib/components/overlay/components/overlay/utils/overlay-router.d.ts +20 -20
  20. package/lib/components/overlay/components/overlay/utils/sidebar-overlay.d.ts +2 -8
  21. package/package.json +1 -1
@@ -12,6 +12,7 @@ export class OverlayRef {
12
12
  }
13
13
  constructor(_ref, config, _containerInstance) {
14
14
  this._ref = _ref;
15
+ this.config = config;
15
16
  this._containerInstance = _containerInstance;
16
17
  this.componentInstance = null;
17
18
  this.componentRef = null;
@@ -159,4 +160,4 @@ export class OverlayRef {
159
160
  this.headerTemplate.set(template);
160
161
  }
161
162
  }
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvb3ZlcmxheS1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxPQUFPLEVBQTZCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFnRCxNQUFNLFVBQVUsQ0FBQztBQW1CdkYsOERBQThEO0FBQzlELE1BQU0sT0FBTyxVQUFVO0lBb0NyQixJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUlELFlBQ1UsSUFBd0IsRUFDaEMsTUFBcUIsRUFDZCxrQkFBNkM7UUFGNUMsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFFekIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEyQjtRQWhEdEQsc0JBQWlCLEdBQWEsSUFBSSxDQUFDO1FBQzFCLGlCQUFZLEdBQTJCLElBQUksQ0FBQztRQUtwQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUM3QyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUE0QixDQUFDO1FBR2hFLFdBQU0sR0FBaUIsYUFBYSxDQUFDLElBQUksQ0FBQztRQU9sRDs7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QixDQUFDLGVBQTRCLEVBQUUsTUFBVSxFQUFFLEtBQWU7UUFDeEUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGVBQWUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxrQ0FBa0MsQ0FBQyxXQUE0QjtRQUM3RCxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUU5QixJQUFJLENBQUMsbUNBQW1DLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxxQ0FBcUMsQ0FBQyxXQUE0QjtRQUNoRSxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUU5QixJQUFJLENBQUMsbUNBQW1DLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxRQUFxQztRQUM3RCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpYWxvZ1JlZiBhcyBDZGtEaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvZGlhbG9nJztcbmltcG9ydCB7IEVTQ0FQRSwgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgR2xvYmFsUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgVGVtcGxhdGVSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyLCBtZXJnZSwgc2tpcFVudGlsLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBPVkVSTEFZX1NUQVRFLCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UG9zaXRpb24sIE92ZXJsYXlTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUNsb3NlQ2FsbEV2ZW50PFIgPSBhbnk+IHtcbiAgcmVzdWx0OiBSIHwgdW5kZWZpbmVkO1xuICBmb3JjZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUxheW91dCB7XG4gIGhhc0hlYWRlcjogYm9vbGVhbjtcbiAgaGFzQm9keTogYm9vbGVhbjtcbiAgaGFzRm9vdGVyOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlIZWFkZXJUZW1wbGF0ZXMge1xuICBjdXJyZW50OiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw7XG4gIHByZXZpb3VzOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgT3ZlcmxheVJlZjxUID0gYW55LCBSID0gYW55PiB7XG4gIGNvbXBvbmVudEluc3RhbmNlOiBUIHwgbnVsbCA9IG51bGw7XG4gIHJlYWRvbmx5IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+IHwgbnVsbCA9IG51bGw7XG4gIGRpc2FibGVDbG9zZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBpZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyT3BlbmVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmVmb3JlQ2xvc2VkID0gbmV3IFN1YmplY3Q8UiB8IHVuZGVmaW5lZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xvc2VDYWxsZWQgPSBuZXcgU3ViamVjdDxPdmVybGF5Q2xvc2VDYWxsRXZlbnQ8Uj4+KCk7XG5cbiAgcHJpdmF0ZSBfcmVzdWx0OiBSIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9zdGF0ZTogT3ZlcmxheVN0YXRlID0gT1ZFUkxBWV9TVEFURS5PUEVOO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9jbG9zZUludGVyYWN0aW9uVHlwZTogRm9jdXNPcmlnaW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2lzRXNjQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pc0JhY2tkcm9wQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pc0Nsb3NlRm5DbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZUNsb3NlRnJvbUludGVybmFsSW5pdGlhdG9ycyA9IG5ldyBTZXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xuXG4gIGdldCBfaW50ZXJuYWxEaXNhYmxlQ2xvc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVDbG9zZUZyb21JbnRlcm5hbEluaXRpYXRvcnMuc2l6ZSA+IDA7XG4gIH1cblxuICBnZXQgX2Nka1JlZigpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmO1xuICB9XG5cbiAgaGVhZGVyVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZWY6IENka0RpYWxvZ1JlZjxSLCBUPixcbiAgICBjb25maWc6IE92ZXJsYXlDb25maWcsXG4gICAgcHVibGljIF9jb250YWluZXJJbnN0YW5jZTogT3ZlcmxheUNvbnRhaW5lckNvbXBvbmVudCxcbiAgKSB7XG4gICAgdGhpcy5kaXNhYmxlQ2xvc2UgPSBjb25maWcuZGlzYWJsZUNsb3NlO1xuICAgIHRoaXMuaWQgPSBfcmVmLmlkO1xuXG4gICAgX2NvbnRhaW5lckluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZS5zdGF0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCA9PT0gJ2VudGVyZWQnKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9hZnRlck9wZW5lZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2FmdGVyT3BlbmVkLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcblxuICAgIF9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgPT09ICdsZWZ0JyksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZmluaXNoT3ZlcmxheUNsb3NlKCk7XG4gICAgICB9KTtcblxuICAgIF9yZWYub3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9iZWZvcmVDbG9zZWQubmV4dCh0aGlzLl9yZXN1bHQpO1xuICAgICAgdGhpcy5fYmVmb3JlQ2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9maW5pc2hPdmVybGF5Q2xvc2UoKTtcbiAgICB9KTtcblxuICAgIG1lcmdlKFxuICAgICAgdGhpcy5iYWNrZHJvcENsaWNrKCksXG4gICAgICB0aGlzLmtleWRvd25FdmVudHMoKS5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUgJiYgIXRoaXMuZGlzYWJsZUNsb3NlICYmICFoYXNNb2RpZmllcktleShldmVudCkpLFxuICAgICAgKSxcbiAgICApXG4gICAgICAucGlwZShza2lwVW50aWwoX2NvbnRhaW5lckluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZS5zdGF0ZSQucGlwZShmaWx0ZXIoKGUpID0+IGUgPT09ICdlbnRlcmluZycpKSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMuX2lzRXNjQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSAmJiBldmVudC50eXBlID09PSAna2V5ZG93bicpIHx8XG4gICAgICAgICAgKHRoaXMuX2lzQmFja2Ryb3BDbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ICYmIGV2ZW50LnR5cGUgIT09ICdrZXlkb3duJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVDbG9zZSAmJiAhdGhpcy5faW50ZXJuYWxEaXNhYmxlQ2xvc2UpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuX2Nsb3NlT3ZlcmxheVZpYShldmVudC50eXBlID09PSAna2V5ZG93bicgPyAna2V5Ym9hcmQnIDogJ21vdXNlJywgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBjbG9zZShyZXN1bHQ/OiBSLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09IE9WRVJMQVlfU1RBVEUuQ0xPU0lORyB8fCB0aGlzLl9zdGF0ZSA9PT0gT1ZFUkxBWV9TVEFURS5DTE9TRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jbG9zZUNhbGxlZC5uZXh0KHsgcmVzdWx0LCBmb3JjZWQ6IGZvcmNlID8/IGZhbHNlIH0pO1xuXG4gICAgaWYgKHRoaXMuX2lzQ2xvc2VGbkNsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgJiYgIWZvcmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0O1xuXG4gICAgdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlLnN0YXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50ID09PSAnbGVhdmluZycpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2JlZm9yZUNsb3NlZC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9yZWYub3ZlcmxheVJlZi5kZXRhY2hCYWNrZHJvcCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgPT09ICdsZWZ0JyksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2ZpbmlzaE92ZXJsYXlDbG9zZSgpKTtcblxuICAgIHRoaXMuX3N0YXRlID0gT1ZFUkxBWV9TVEFURS5DTE9TSU5HO1xuICAgIHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZS5sZWF2ZSgpO1xuICB9XG5cbiAgYWZ0ZXJPcGVuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyT3BlbmVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgYWZ0ZXJDbG9zZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZi5jbG9zZWQ7XG4gIH1cblxuICBiZWZvcmVDbG9zZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JlZm9yZUNsb3NlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGJhY2tkcm9wQ2xpY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZi5iYWNrZHJvcENsaWNrO1xuICB9XG5cbiAga2V5ZG93bkV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmLmtleWRvd25FdmVudHM7XG4gIH1cblxuICBjbG9zZUNhbGxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VDYWxsZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbihwb3NpdGlvbj86IE92ZXJsYXlQb3NpdGlvbik6IHRoaXMge1xuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5fcmVmLmNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5IGFzIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3k7XG5cbiAgICBpZiAocG9zaXRpb24gJiYgKHBvc2l0aW9uLmxlZnQgfHwgcG9zaXRpb24ucmlnaHQpKSB7XG4gICAgICBwb3NpdGlvbi5sZWZ0ID8gc3RyYXRlZ3kubGVmdChwb3NpdGlvbi5sZWZ0KSA6IHN0cmF0ZWd5LnJpZ2h0KHBvc2l0aW9uLnJpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyYXRlZ3kuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uICYmIChwb3NpdGlvbi50b3AgfHwgcG9zaXRpb24uYm90dG9tKSkge1xuICAgICAgcG9zaXRpb24udG9wID8gc3RyYXRlZ3kudG9wKHBvc2l0aW9uLnRvcCkgOiBzdHJhdGVneS5ib3R0b20ocG9zaXRpb24uYm90dG9tKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyYXRlZ3kuY2VudGVyVmVydGljYWxseSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlZi51cGRhdGVQb3NpdGlvbigpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVTaXplKHdpZHRoID0gJycsIGhlaWdodCA9ICcnKTogdGhpcyB7XG4gICAgdGhpcy5fcmVmLnVwZGF0ZVNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRQYW5lbENsYXNzKGNsYXNzZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgdGhpcy5fcmVmLmFkZFBhbmVsQ2xhc3MoY2xhc3Nlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZW1vdmVQYW5lbENsYXNzKGNsYXNzZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgdGhpcy5fcmVmLnJlbW92ZVBhbmVsQ2xhc3MoY2xhc3Nlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRTdGF0ZSgpOiBPdmVybGF5U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmlzaE92ZXJsYXlDbG9zZSgpIHtcbiAgICB0aGlzLl9zdGF0ZSA9IE9WRVJMQVlfU1RBVEUuQ0xPU0VEO1xuICAgIHRoaXMuX3JlZi5jbG9zZSh0aGlzLl9yZXN1bHQsIHsgZm9jdXNPcmlnaW46IHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlIH0pO1xuICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSBudWxsO1xuICB9XG5cbiAgX2Nsb3NlT3ZlcmxheVZpYShpbnRlcmFjdGlvblR5cGU6IEZvY3VzT3JpZ2luLCByZXN1bHQ/OiBSLCBmb3JjZT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbG9zZUludGVyYWN0aW9uVHlwZSA9IGludGVyYWN0aW9uVHlwZTtcbiAgICByZXR1cm4gdGhpcy5jbG9zZShyZXN1bHQsIGZvcmNlKTtcbiAgfVxuXG4gIF9hZGRJbnRlcm5hbEJhY2tkcm9wQ2xvc2VJbml0aWF0b3IoaW5pdGlhdG9ySWQ6IHN0cmluZyB8IG51bWJlcikge1xuICAgIGlmICh0aGlzLmRpc2FibGVDbG9zZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fZGlzYWJsZUNsb3NlRnJvbUludGVybmFsSW5pdGlhdG9ycy5hZGQoaW5pdGlhdG9ySWQpO1xuICB9XG5cbiAgX3JlbW92ZUludGVybmFsQmFja2Ryb3BDbG9zZUluaXRpYXRvcihpbml0aWF0b3JJZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZUNsb3NlKSByZXR1cm47XG5cbiAgICB0aGlzLl9kaXNhYmxlQ2xvc2VGcm9tSW50ZXJuYWxJbml0aWF0b3JzLmRlbGV0ZShpbml0aWF0b3JJZCk7XG4gIH1cblxuICBfc2V0Q3VycmVudEhlYWRlclRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwpIHtcbiAgICB0aGlzLmhlYWRlclRlbXBsYXRlLnNldCh0ZW1wbGF0ZSk7XG4gIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvb3ZlcmxheS1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxPQUFPLEVBQTZCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFnRCxNQUFNLFVBQVUsQ0FBQztBQW1CdkYsOERBQThEO0FBQzlELE1BQU0sT0FBTyxVQUFVO0lBb0NyQixJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUlELFlBQ1UsSUFBd0IsRUFDekIsTUFBcUIsRUFDckIsa0JBQTZDO1FBRjVDLFNBQUksR0FBSixJQUFJLENBQW9CO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEyQjtRQWhEdEQsc0JBQWlCLEdBQWEsSUFBSSxDQUFDO1FBQzFCLGlCQUFZLEdBQTJCLElBQUksQ0FBQztRQUtwQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUM3QyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUE0QixDQUFDO1FBR2hFLFdBQU0sR0FBaUIs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LENBQUM7SUFDaEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLGVBQTRCLEVBQUUsTUFBVSxFQUFFLEtBQWU7UUFDeEUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGVBQWUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxrQ0FBa0MsQ0FBQyxXQUE0QjtRQUM3RCxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUU5QixJQUFJLENBQUMsbUNBQW1DLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxxQ0FBcUMsQ0FBQyxXQUE0QjtRQUNoRSxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUU5QixJQUFJLENBQUMsbUNBQW1DLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxRQUFxQztRQUM3RCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpYWxvZ1JlZiBhcyBDZGtEaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvZGlhbG9nJztcbmltcG9ydCB7IEVTQ0FQRSwgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgR2xvYmFsUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgVGVtcGxhdGVSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyLCBtZXJnZSwgc2tpcFVudGlsLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBPVkVSTEFZX1NUQVRFLCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UG9zaXRpb24sIE92ZXJsYXlTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUNsb3NlQ2FsbEV2ZW50PFIgPSBhbnk+IHtcbiAgcmVzdWx0OiBSIHwgdW5kZWZpbmVkO1xuICBmb3JjZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUxheW91dCB7XG4gIGhhc0hlYWRlcjogYm9vbGVhbjtcbiAgaGFzQm9keTogYm9vbGVhbjtcbiAgaGFzRm9vdGVyOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlIZWFkZXJUZW1wbGF0ZXMge1xuICBjdXJyZW50OiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw7XG4gIHByZXZpb3VzOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgT3ZlcmxheVJlZjxUID0gYW55LCBSID0gYW55PiB7XG4gIGNvbXBvbmVudEluc3RhbmNlOiBUIHwgbnVsbCA9IG51bGw7XG4gIHJlYWRvbmx5IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+IHwgbnVsbCA9IG51bGw7XG4gIGRpc2FibGVDbG9zZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBpZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyT3BlbmVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmVmb3JlQ2xvc2VkID0gbmV3IFN1YmplY3Q8UiB8IHVuZGVmaW5lZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xvc2VDYWxsZWQgPSBuZXcgU3ViamVjdDxPdmVybGF5Q2xvc2VDYWxsRXZlbnQ8Uj4+KCk7XG5cbiAgcHJpdmF0ZSBfcmVzdWx0OiBSIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9zdGF0ZTogT3ZlcmxheVN0YXRlID0gT1ZFUkxBWV9TVEFURS5PUEVOO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9jbG9zZUludGVyYWN0aW9uVHlwZTogRm9jdXNPcmlnaW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2lzRXNjQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pc0JhY2tkcm9wQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pc0Nsb3NlRm5DbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZUNsb3NlRnJvbUludGVybmFsSW5pdGlhdG9ycyA9IG5ldyBTZXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xuXG4gIGdldCBfaW50ZXJuYWxEaXNhYmxlQ2xvc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVDbG9zZUZyb21JbnRlcm5hbEluaXRpYXRvcnMuc2l6ZSA+IDA7XG4gIH1cblxuICBnZXQgX2Nka1JlZigpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmO1xuICB9XG5cbiAgaGVhZGVyVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZWY6IENka0RpYWxvZ1JlZjxSLCBUPixcbiAgICBwdWJsaWMgY29uZmlnOiBPdmVybGF5Q29uZmlnLFxuICAgIHB1YmxpYyBfY29udGFpbmVySW5zdGFuY2U6IE92ZXJsYXlDb250YWluZXJDb21wb25lbnQsXG4gICkge1xuICAgIHRoaXMuZGlzYWJsZUNsb3NlID0gY29uZmlnLmRpc2FibGVDbG9zZTtcbiAgICB0aGlzLmlkID0gX3JlZi5pZDtcblxuICAgIF9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgPT09ICdlbnRlcmVkJyksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpO1xuICAgICAgICB0aGlzLl9hZnRlck9wZW5lZC5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG5cbiAgICBfY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlLnN0YXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50ID09PSAnbGVmdCcpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2ZpbmlzaE92ZXJsYXlDbG9zZSgpO1xuICAgICAgfSk7XG5cbiAgICBfcmVmLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fYmVmb3JlQ2xvc2VkLm5leHQodGhpcy5fcmVzdWx0KTtcbiAgICAgIHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fZmluaXNoT3ZlcmxheUNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICBtZXJnZShcbiAgICAgIHRoaXMuYmFja2Ryb3BDbGljaygpLFxuICAgICAgdGhpcy5rZXlkb3duRXZlbnRzKCkucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFICYmICF0aGlzLmRpc2FibGVDbG9zZSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSxcbiAgICAgICksXG4gICAgKVxuICAgICAgLnBpcGUoc2tpcFVudGlsKF9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUuc3RhdGUkLnBpcGUoZmlsdGVyKChlKSA9PiBlID09PSAnZW50ZXJpbmcnKSkpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0aGlzLl9pc0VzY0Nsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgJiYgZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nKSB8fFxuICAgICAgICAgICh0aGlzLl9pc0JhY2tkcm9wQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSAmJiBldmVudC50eXBlICE9PSAna2V5ZG93bicpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlQ2xvc2UgJiYgIXRoaXMuX2ludGVybmFsRGlzYWJsZUNsb3NlKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLl9jbG9zZU92ZXJsYXlWaWEoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nID8gJ2tleWJvYXJkJyA6ICdtb3VzZScsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgY2xvc2UocmVzdWx0PzogUiwgZm9yY2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSBPVkVSTEFZX1NUQVRFLkNMT1NJTkcgfHwgdGhpcy5fc3RhdGUgPT09IE9WRVJMQVlfU1RBVEUuQ0xPU0VEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvc2VDYWxsZWQubmV4dCh7IHJlc3VsdCwgZm9yY2VkOiBmb3JjZSA/PyBmYWxzZSB9KTtcblxuICAgIGlmICh0aGlzLl9pc0Nsb3NlRm5DbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ICYmICFmb3JjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3VsdDtcblxuICAgIHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZS5zdGF0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCA9PT0gJ2xlYXZpbmcnKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9iZWZvcmVDbG9zZWQubmV4dChyZXN1bHQpO1xuICAgICAgICB0aGlzLl9iZWZvcmVDbG9zZWQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcmVmLm92ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlLnN0YXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50ID09PSAnbGVmdCcpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9maW5pc2hPdmVybGF5Q2xvc2UoKSk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9IE9WRVJMQVlfU1RBVEUuQ0xPU0lORztcbiAgICB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUubGVhdmUoKTtcbiAgfVxuXG4gIGFmdGVyT3BlbmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9hZnRlck9wZW5lZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGFmdGVyQ2xvc2VkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWYuY2xvc2VkO1xuICB9XG5cbiAgYmVmb3JlQ2xvc2VkKCkge1xuICAgIHJldHVybiB0aGlzLl9iZWZvcmVDbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBiYWNrZHJvcENsaWNrKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWYuYmFja2Ryb3BDbGljaztcbiAgfVxuXG4gIGtleWRvd25FdmVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZi5rZXlkb3duRXZlbnRzO1xuICB9XG5cbiAgY2xvc2VDYWxsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlQ2FsbGVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgdXBkYXRlUG9zaXRpb24ocG9zaXRpb24/OiBPdmVybGF5UG9zaXRpb24pOiB0aGlzIHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX3JlZi5jb25maWcucG9zaXRpb25TdHJhdGVneSBhcyBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5O1xuXG4gICAgaWYgKHBvc2l0aW9uICYmIChwb3NpdGlvbi5sZWZ0IHx8IHBvc2l0aW9uLnJpZ2h0KSkge1xuICAgICAgcG9zaXRpb24ubGVmdCA/IHN0cmF0ZWd5LmxlZnQocG9zaXRpb24ubGVmdCkgOiBzdHJhdGVneS5yaWdodChwb3NpdGlvbi5yaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmF0ZWd5LmNlbnRlckhvcml6b250YWxseSgpO1xuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiAmJiAocG9zaXRpb24udG9wIHx8IHBvc2l0aW9uLmJvdHRvbSkpIHtcbiAgICAgIHBvc2l0aW9uLnRvcCA/IHN0cmF0ZWd5LnRvcChwb3NpdGlvbi50b3ApIDogc3RyYXRlZ3kuYm90dG9tKHBvc2l0aW9uLmJvdHRvbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmF0ZWd5LmNlbnRlclZlcnRpY2FsbHkoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWYudXBkYXRlUG9zaXRpb24oKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdXBkYXRlU2l6ZSh3aWR0aCA9ICcnLCBoZWlnaHQgPSAnJyk6IHRoaXMge1xuICAgIHRoaXMuX3JlZi51cGRhdGVTaXplKHdpZHRoLCBoZWlnaHQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMge1xuICAgIHRoaXMuX3JlZi5hZGRQYW5lbENsYXNzKGNsYXNzZXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlUGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMge1xuICAgIHRoaXMuX3JlZi5yZW1vdmVQYW5lbENsYXNzKGNsYXNzZXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0U3RhdGUoKTogT3ZlcmxheVN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cblxuICBwcml2YXRlIF9maW5pc2hPdmVybGF5Q2xvc2UoKSB7XG4gICAgdGhpcy5fc3RhdGUgPSBPVkVSTEFZX1NUQVRFLkNMT1NFRDtcbiAgICB0aGlzLl9yZWYuY2xvc2UodGhpcy5fcmVzdWx0LCB7IGZvY3VzT3JpZ2luOiB0aGlzLl9jbG9zZUludGVyYWN0aW9uVHlwZSB9KTtcbiAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gbnVsbDtcbiAgfVxuXG4gIF9jbG9zZU92ZXJsYXlWaWEoaW50ZXJhY3Rpb25UeXBlOiBGb2N1c09yaWdpbiwgcmVzdWx0PzogUiwgZm9yY2U/OiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGUgPSBpbnRlcmFjdGlvblR5cGU7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2UocmVzdWx0LCBmb3JjZSk7XG4gIH1cblxuICBfYWRkSW50ZXJuYWxCYWNrZHJvcENsb3NlSW5pdGlhdG9yKGluaXRpYXRvcklkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlQ2xvc2UpIHJldHVybjtcblxuICAgIHRoaXMuX2Rpc2FibGVDbG9zZUZyb21JbnRlcm5hbEluaXRpYXRvcnMuYWRkKGluaXRpYXRvcklkKTtcbiAgfVxuXG4gIF9yZW1vdmVJbnRlcm5hbEJhY2tkcm9wQ2xvc2VJbml0aWF0b3IoaW5pdGlhdG9ySWQ6IHN0cmluZyB8IG51bWJlcikge1xuICAgIGlmICh0aGlzLmRpc2FibGVDbG9zZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fZGlzYWJsZUNsb3NlRnJvbUludGVybmFsSW5pdGlhdG9ycy5kZWxldGUoaW5pdGlhdG9ySWQpO1xuICB9XG5cbiAgX3NldEN1cnJlbnRIZWFkZXJUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsKSB7XG4gICAgdGhpcy5oZWFkZXJUZW1wbGF0ZS5zZXQodGVtcGxhdGUpO1xuICB9XG59XG4iXX0=
@@ -1,20 +1,24 @@
1
- import { Injectable, InjectionToken, computed, inject, isSignal, signal } from '@angular/core';
2
- import { toObservable, toSignal } from '@angular/core/rxjs-interop';
3
- import { fromNextFrame } from '@ethlete/core';
4
- import { map, switchMap } from 'rxjs';
5
- import * as i0 from "@angular/core";
1
+ import { DestroyRef, InjectionToken, computed, inject, isSignal, signal } from '@angular/core';
2
+ import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
3
+ import { Router } from '@angular/router';
4
+ import { RouterStateService, createComponentId, fromNextFrame } from '@ethlete/core';
5
+ import { map, skip, switchMap, tap } from 'rxjs';
6
+ import { OverlayRef } from './overlay-ref';
6
7
  export const OVERLAY_ROUTER_CONFIG_TOKEN = new InjectionToken('OVERLAY_ROUTER_CONFIG_TOKEN');
7
8
  export class OverlayRouterService {
8
9
  constructor() {
9
- this.config = inject(OVERLAY_ROUTER_CONFIG_TOKEN);
10
- this.syncCurrentRoute = signal('/');
10
+ this._router = inject(Router);
11
+ this._routerStateService = inject(RouterStateService);
12
+ this._id = createComponentId('ovr');
13
+ this._overlayRef = inject(OverlayRef);
14
+ this._config = inject(OVERLAY_ROUTER_CONFIG_TOKEN);
15
+ this._syncCurrentRoute = signal(this._getInitialRoute());
16
+ this._nativeBrowserTempBackNavigationStack = signal([]);
11
17
  // The current route, but delayed by one frame to ensure that the needed animation classes are applied.
12
- this.currentRoute = toSignal(toObservable(this.syncCurrentRoute).pipe(switchMap((r) => fromNextFrame().pipe(map(() => r)))), { initialValue: '/' });
13
- this.routeHistory = signal([]);
14
- this.rootHistoryItem = signal(null);
18
+ this.currentRoute = toSignal(toObservable(this._syncCurrentRoute).pipe(switchMap((r) => fromNextFrame().pipe(map(() => r)))), { initialValue: this._getInitialRoute() });
15
19
  this.extraRoutes = signal([]);
16
20
  this.routes = computed(() => {
17
- const allRoutes = [...this.config.routes, ...this.extraRoutes()];
21
+ const allRoutes = [...this._config.routes, ...this.extraRoutes()];
18
22
  const allRoundsWithTransformedInputs = allRoutes.map((route) => {
19
23
  return {
20
24
  ...route,
@@ -32,7 +36,7 @@ export class OverlayRouterService {
32
36
  return allRoundsWithTransformedInputs;
33
37
  });
34
38
  this.currentPage = computed(() => {
35
- const currentRoute = this.syncCurrentRoute();
39
+ const currentRoute = this._syncCurrentRoute();
36
40
  for (const route of this.routes()) {
37
41
  if (route.path === currentRoute) {
38
42
  return route;
@@ -40,22 +44,57 @@ export class OverlayRouterService {
40
44
  }
41
45
  return null;
42
46
  });
43
- this.lastPage = computed(() => {
44
- const history = this.routeHistory();
45
- if (history.length) {
46
- return history[history.length - 1];
47
+ this.navigationDirection = signal('forward');
48
+ this._disableCloseOnNavigation();
49
+ this._updateBrowserUrl(this._syncCurrentRoute());
50
+ this._routerStateService
51
+ .selectQueryParam(this._id)
52
+ .pipe(takeUntilDestroyed(), skip(1), tap((route) => {
53
+ // The user navigated back or forward using the browser history
54
+ if (!route) {
55
+ // The route query param no longer exists - close the overlay
56
+ this._overlayRef.close();
47
57
  }
48
- return null;
49
- });
50
- this.canGoBack = computed(() => {
51
- return this.routeHistory().length;
58
+ else if (route !== this._syncCurrentRoute()) {
59
+ const navStack = this._nativeBrowserTempBackNavigationStack();
60
+ const currentRoute = this._syncCurrentRoute();
61
+ if (!navStack.length) {
62
+ // If the nav stack is empty the only way to navigate is back.
63
+ this.navigate(route, { navigationDirection: 'backward' });
64
+ this._nativeBrowserTempBackNavigationStack.set([currentRoute]);
65
+ }
66
+ else {
67
+ const lastItem = navStack[navStack.length - 1];
68
+ if (route === lastItem) {
69
+ // The new route matches the last item in the back nav stack.
70
+ // This means we are going forward again.
71
+ this.navigate(route, { navigationDirection: 'forward' });
72
+ this._nativeBrowserTempBackNavigationStack.set(navStack.slice(0, -1));
73
+ }
74
+ else {
75
+ // Else we are going back.
76
+ this.navigate(route, { navigationDirection: 'backward' });
77
+ this._nativeBrowserTempBackNavigationStack.set([...navStack, currentRoute]);
78
+ }
79
+ }
80
+ }
81
+ else {
82
+ // The navigation was triggered by ui interaction. Clear the back nav stack.
83
+ this._nativeBrowserTempBackNavigationStack.set([]);
84
+ }
85
+ }))
86
+ .subscribe();
87
+ inject(DestroyRef).onDestroy(() => {
88
+ // Remove the dialog route from the browser url
89
+ this._updateBrowserUrl(undefined);
52
90
  });
53
- this.navigationDirection = signal('forward');
54
- this._navigateToInitialRoute();
55
91
  }
56
- navigate(route) {
92
+ navigate(route, config) {
57
93
  const resolvedRoute = this.resolvePath(route);
58
- if (resolvedRoute.type === 'back') {
94
+ if (config?.navigationDirection) {
95
+ this.navigationDirection.set(config.navigationDirection);
96
+ }
97
+ else if (resolvedRoute.type === 'back') {
59
98
  this.navigationDirection.set('backward');
60
99
  }
61
100
  else {
@@ -63,14 +102,6 @@ export class OverlayRouterService {
63
102
  }
64
103
  this._updateCurrentRoute(resolvedRoute.route);
65
104
  }
66
- back() {
67
- const prevRoute = this.lastPage();
68
- if (!prevRoute)
69
- return;
70
- this.navigationDirection.set('backward');
71
- this.routeHistory.set(this.routeHistory().slice(0, -1));
72
- this._updateCurrentRoute(prevRoute, { updateHistory: false });
73
- }
74
105
  resolvePath(route) {
75
106
  if (Array.isArray(route)) {
76
107
  route = route.join('/');
@@ -82,7 +113,7 @@ export class OverlayRouterService {
82
113
  const isReplaceCurrent = route.startsWith('./');
83
114
  const isBack = route.startsWith('../');
84
115
  const isForward = !isAbsolute && !isReplaceCurrent && !isBack;
85
- const curr = this.syncCurrentRoute();
116
+ const curr = this._syncCurrentRoute();
86
117
  if (isForward) {
87
118
  route = `${curr}/${route}`;
88
119
  }
@@ -120,64 +151,30 @@ export class OverlayRouterService {
120
151
  removeRoute(path) {
121
152
  this.extraRoutes.set(this.extraRoutes().filter((r) => r.path !== path));
122
153
  }
123
- _updateCurrentRoute(route, config) {
124
- console.log('from', this.syncCurrentRoute(), 'to', route, 'with config', config);
125
- if (route === this.syncCurrentRoute())
154
+ _updateCurrentRoute(route) {
155
+ if (route === this._syncCurrentRoute())
126
156
  return;
127
157
  if (this.routes().findIndex((r) => r.path === route) === -1) {
128
- console.error(`The route "${route}" does not exist.`, this.config);
158
+ console.error(`The route "${route}" does not exist.`, this._config);
129
159
  return;
130
160
  }
131
- const lastRoute = this.syncCurrentRoute();
132
- if (config?.updateHistory === true || config?.updateHistory === undefined) {
133
- const history = this.routeHistory();
134
- if (history[history.length - 1] !== lastRoute) {
135
- const newHistory = [...history, lastRoute];
136
- // limit the history to 25 items
137
- if (newHistory.length > 25) {
138
- newHistory.shift();
139
- }
140
- const rootHistoryItem = this.rootHistoryItem();
141
- if (rootHistoryItem && newHistory[0] !== rootHistoryItem) {
142
- newHistory.unshift(rootHistoryItem);
143
- }
144
- this.routeHistory.set(newHistory);
145
- }
146
- }
147
- this.syncCurrentRoute.set(route);
161
+ this._syncCurrentRoute.set(route);
162
+ this._updateBrowserUrl(route);
148
163
  }
149
- _removeItemFromHistory(item) {
150
- const history = this.routeHistory();
151
- const cleanedHistory = history.filter((i) => i !== item);
152
- console.log({
153
- history,
154
- cleanedHistory,
155
- len: cleanedHistory.length,
156
- null: cleanedHistory[0],
157
- curr: this.syncCurrentRoute(),
158
- });
159
- if (cleanedHistory.length === 1 && cleanedHistory[0] === this.syncCurrentRoute()) {
160
- this.routeHistory.set([]);
161
- }
162
- else {
163
- this.routeHistory.set(cleanedHistory);
164
- }
164
+ _getInitialRoute() {
165
+ return this._config.initialRoute ?? this._config.routes[0]?.path ?? '/';
165
166
  }
166
167
  _navigateToInitialRoute() {
167
- if (this.config.initialRoute) {
168
- this._updateCurrentRoute(this.config.initialRoute ?? '/', { updateHistory: false });
169
- }
170
- else {
171
- const first = this.config.routes[0]?.path;
172
- this._updateCurrentRoute(first ?? '/', { updateHistory: false });
173
- }
168
+ this._updateCurrentRoute(this._getInitialRoute());
169
+ }
170
+ _updateBrowserUrl(route) {
171
+ this._router.navigate(['.'], { queryParams: { [this._id]: route }, queryParamsHandling: 'merge' });
172
+ }
173
+ _disableCloseOnNavigation() {
174
+ // @ts-expect-error - private property
175
+ this._overlayRef._cdkRef.overlayRef._locationChanges?.unsubscribe?.();
174
176
  }
175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlayRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
176
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlayRouterService }); }
177
177
  }
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlayRouterService, decorators: [{
179
- type: Injectable
180
- }], ctorParameters: () => [] });
181
178
  export const provideOverlayRouterConfig = (config) => {
182
179
  return [
183
180
  {
@@ -187,4 +184,4 @@ export const provideOverlayRouterConfig = (config) => {
187
184
  OverlayRouterService,
188
185
  ];
189
186
  };
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvb3ZlcmxheS1yb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQXNCLDZCQUE2QixDQUFDLENBQUM7QUF3Q2xILE1BQU0sT0FBTyxvQkFBb0I7SUFtRS9CO1FBbEVBLFdBQU0sR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUU3QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0IsdUdBQXVHO1FBQ3ZHLGlCQUFZLEdBQUcsUUFBUSxDQUNyQixZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDOUYsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQ3RCLENBQUM7UUFFRixpQkFBWSxHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FB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QyxNQUEyQixFQUFFLEVBQUU7SUFDeEUsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxRQUFRLEVBQUUsTUFBTTtTQUNqQjtRQUNELG9CQUFvQjtLQUNyQixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGNvbXB1dGVkLCBpbmplY3QsIGlzU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmcm9tTmV4dEZyYW1lIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgT1ZFUkxBWV9ST1VURVJfQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPE92ZXJsYXlSb3V0ZXJDb25maWc+KCdPVkVSTEFZX1JPVVRFUl9DT05GSUdfVE9LRU4nKTtcblxuZXhwb3J0IHR5cGUgT3ZlcmxheVJvdXRlID0ge1xuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB0byByZW5kZXIuXG4gICAqL1xuICBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRoZSByb3V0ZSBvZiB0aGUgcGFnZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogXCIvXCIgLy8gVGhlIHJvb3Qgcm91dGVcbiAgICogXCIvdHdvXCIgLy8gVGhlIHJvdXRlIFwidHdvXCJcbiAgICovXG4gIHBhdGg6IGAvJHtzdHJpbmd9YDtcblxuICAvKipcbiAgICogVGhlIGlucHV0cyB0byBwYXNzIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBpbnB1dHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbmV4cG9ydCB0eXBlIE92ZXJsYXlSb3V0ZXJDb25maWcgPSB7XG4gIC8qKlxuICAgKiBUaGUgcm91dGVzIHRvIGJlIGFibGUgdG8gbmF2aWdhdGUgdG8uXG4gICAqL1xuICByb3V0ZXM6IE92ZXJsYXlSb3V0ZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcm91dGUgb24gd2hpY2ggdG8gc3RhcnQuXG4gICAqIEBkZWZhdWx0IFwiXCIgLy8gVGhlIHJvb3Qgcm91dGVcbiAgICogQGRlZmF1bHQgcm91dGVzWzBdLnBhdGggLy8gVGhlIGZpcnN0IHJvdXRlIGlmIG5vIHJvb3Qgcm91dGUgaXMgZGVmaW5lZFxuICAgKi9cbiAgaW5pdGlhbFJvdXRlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgT3ZlcmxheVJvdXRlck5hdmlnYXRpb25EaXJlY3Rpb24gPSAnZm9yd2FyZCcgfCAnYmFja3dhcmQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3ZlcmxheVJvdXRlclNlcnZpY2Uge1xuICBjb25maWcgPSBpbmplY3QoT1ZFUkxBWV9ST1VURVJfQ09ORklHX1RPS0VOKTtcblxuICBzeW5jQ3VycmVudFJvdXRlID0gc2lnbmFsKCcvJyk7XG5cbiAgLy8gVGhlIGN1cnJlbnQgcm91dGUsIGJ1dCBkZWxheWVkIGJ5IG9uZSBmcmFtZSB0byBlbnN1cmUgdGhhdCB0aGUgbmVlZGVkIGFuaW1hdGlvbiBjbGFzc2VzIGFyZSBhcHBsaWVkLlxuICBjdXJyZW50Um91dGUgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUodGhpcy5zeW5jQ3VycmVudFJvdXRlKS5waXBlKHN3aXRjaE1hcCgocikgPT4gZnJvbU5leHRGcmFtZSgpLnBpcGUobWFwKCgpID0+IHIpKSkpLFxuICAgIHsgaW5pdGlhbFZhbHVlOiAnLycgfSxcbiAgKTtcblxuICByb3V0ZUhpc3RvcnkgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcm9vdEhpc3RvcnlJdGVtID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBleHRyYVJvdXRlcyA9IHNpZ25hbDxPdmVybGF5Um91dGVbXT4oW10pO1xuXG4gIHJvdXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhbGxSb3V0ZXMgPSBbLi4udGhpcy5jb25maWcucm91dGVzLCAuLi50aGlzLmV4dHJhUm91dGVzKCldO1xuXG4gICAgY29uc3QgYWxsUm91bmRzV2l0aFRyYW5zZm9ybWVkSW5wdXRzID0gYWxsUm91dGVzLm1hcCgocm91dGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJvdXRlLFxuICAgICAgICBpbnB1dHM6IE9iamVjdC5lbnRyaWVzKHJvdXRlLmlucHV0cyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzU2lnbmFsKHZhbHVlKSkge1xuICAgICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sXG4gICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFsbFJvdW5kc1dpdGhUcmFuc2Zvcm1lZElucHV0cztcbiAgfSk7XG5cbiAgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5zeW5jQ3VycmVudFJvdXRlKCk7XG5cbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMucm91dGVzKCkpIHtcbiAgICAgIGlmIChyb3V0ZS5wYXRoID09PSBjdXJyZW50Um91dGUpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9KTtcblxuICBsYXN0UGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBoaXN0b3J5ID0gdGhpcy5yb3V0ZUhpc3RvcnkoKTtcblxuICAgIGlmIChoaXN0b3J5Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGhpc3RvcnlbaGlzdG9yeS5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSk7XG5cbiAgY2FuR29CYWNrID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlSGlzdG9yeSgpLmxlbmd0aDtcbiAgfSk7XG5cbiAgbmF2aWdhdGlvbkRpcmVjdGlvbiA9IHNpZ25hbDxPdmVybGF5Um91dGVyTmF2aWdhdGlvbkRpcmVjdGlvbj4oJ2ZvcndhcmQnKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9uYXZpZ2F0ZVRvSW5pdGlhbFJvdXRlKCk7XG4gIH1cblxuICBuYXZpZ2F0ZShyb3V0ZTogc3RyaW5nIHwgKHN0cmluZyB8IG51bWJlcilbXSkge1xuICAgIGNvbnN0IHJlc29sdmVkUm91dGUgPSB0aGlzLnJlc29sdmVQYXRoKHJvdXRlKTtcblxuICAgIGlmIChyZXNvbHZlZFJvdXRlLnR5cGUgPT09ICdiYWNrJykge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uRGlyZWN0aW9uLnNldCgnYmFja3dhcmQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uRGlyZWN0aW9uLnNldCgnZm9yd2FyZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRSb3V0ZShyZXNvbHZlZFJvdXRlLnJvdXRlKTtcbiAgfVxuXG4gIGJhY2soKSB7XG4gICAgY29uc3QgcHJldlJvdXRlID0gdGhpcy5sYXN0UGFnZSgpO1xuXG4gICAgaWYgKCFwcmV2Um91dGUpIHJldHVybjtcblxuICAgIHRoaXMubmF2aWdhdGlvbkRpcmVjdGlvbi5zZXQoJ2JhY2t3YXJkJyk7XG5cbiAgICB0aGlzLnJvdXRlSGlzdG9yeS5zZXQodGhpcy5yb3V0ZUhpc3RvcnkoKS5zbGljZSgwLCAtMSkpO1xuICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRSb3V0ZShwcmV2Um91dGUsIHsgdXBkYXRlSGlzdG9yeTogZmFsc2UgfSk7XG4gIH1cblxuICByZXNvbHZlUGF0aChyb3V0ZTogc3RyaW5nIHwgKHN0cmluZyB8IG51bWJlcilbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJvdXRlKSkge1xuICAgICAgcm91dGUgPSByb3V0ZS5qb2luKCcvJyk7XG4gICAgfVxuXG4gICAgaWYgKHJvdXRlID09PSAnJykge1xuICAgICAgcm91dGUgPSAnLyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNBYnNvbHV0ZSA9IHJvdXRlLnN0YXJ0c1dpdGgoJy8nKTtcbiAgICBjb25zdCBpc1JlcGxhY2VDdXJyZW50ID0gcm91dGUuc3RhcnRzV2l0aCgnLi8nKTtcbiAgICBjb25zdCBpc0JhY2sgPSByb3V0ZS5zdGFydHNXaXRoKCcuLi8nKTtcbiAgICBjb25zdCBpc0ZvcndhcmQgPSAhaXNBYnNvbHV0ZSAmJiAhaXNSZXBsYWNlQ3VycmVudCAmJiAhaXNCYWNrO1xuXG4gICAgY29uc3QgY3VyciA9IHRoaXMuc3luY0N1cnJlbnRSb3V0ZSgpO1xuXG4gICAgaWYgKGlzRm9yd2FyZCkge1xuICAgICAgcm91dGUgPSBgJHtjdXJyfS8ke3JvdXRlfWA7XG4gICAgfSBlbHNlIGlmIChpc1JlcGxhY2VDdXJyZW50KSB7XG4gICAgICBjb25zdCBjdXJyU2VnbWVudHMgPSBjdXJyLnNwbGl0KCcvJykuZmlsdGVyKChzKSA9PiBzICE9PSAnJyk7XG4gICAgICBjdXJyU2VnbWVudHMucG9wKCk7XG5cbiAgICAgIGNvbnN0IG5ld1NlZ21lbnRzID0gcm91dGUuc3BsaXQoJy8nKS5maWx0ZXIoKHMpID0+IHMgIT09ICcuJyk7XG5cbiAgICAgIHJvdXRlID0gYC8ke2N1cnJTZWdtZW50cy5jb25jYXQobmV3U2VnbWVudHMpLmpvaW4oJy8nKX1gO1xuICAgIH0gZWxzZSBpZiAoaXNCYWNrKSB7XG4gICAgICBjb25zdCBjdXJyU2VnbWVudHMgPSBjdXJyLnNwbGl0KCcvJykuZmlsdGVyKChzKSA9PiBzICE9PSAnJyk7XG4gICAgICBjb25zdCBuZXdTZWdtZW50cyA9IHJvdXRlLnNwbGl0KCcvJykuZmlsdGVyKChzKSA9PiBzICE9PSAnLi4nKTtcbiAgICAgIGNvbnN0IHN0ZXBzQmFjayA9IHJvdXRlLnNwbGl0KCcvJykuZmlsdGVyKChzKSA9PiBzID09PSAnLi4nKS5sZW5ndGg7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcHNCYWNrOyBpKyspIHtcbiAgICAgICAgY3VyclNlZ21lbnRzLnBvcCgpO1xuICAgICAgfVxuXG4gICAgICByb3V0ZSA9IGAvJHtjdXJyU2VnbWVudHMuY29uY2F0KG5ld1NlZ21lbnRzKS5qb2luKCcvJyl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcm91dGUsXG4gICAgICB0eXBlOlxuICAgICAgICBpc0JhY2sgfHwgcm91dGUgPT09ICcvJ1xuICAgICAgICAgID8gJ2JhY2snXG4gICAgICAgICAgOiBpc1JlcGxhY2VDdXJyZW50XG4gICAgICAgICAgICA/ICdyZXBsYWNlLWN1cnJlbnQnXG4gICAgICAgICAgICA6IGlzQWJzb2x1dGVcbiAgICAgICAgICAgICAgPyAnYWJzb2x1dGUnXG4gICAgICAgICAgICAgIDogaXNGb3J3YXJkXG4gICAgICAgICAgICAgICAgPyAnZm9yd2FyZCdcbiAgICAgICAgICAgICAgICA6ICd1bmtub3duJyxcbiAgICB9IGFzIGNvbnN0O1xuICB9XG5cbiAgYWRkUm91dGUocm91dGU6IE92ZXJsYXlSb3V0ZSkge1xuICAgIHRoaXMuZXh0cmFSb3V0ZXMuc2V0KFsuLi50aGlzLmV4dHJhUm91dGVzKCksIHJvdXRlXSk7XG4gIH1cblxuICByZW1vdmVSb3V0ZShwYXRoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4dHJhUm91dGVzLnNldCh0aGlzLmV4dHJhUm91dGVzKCkuZmlsdGVyKChyKSA9PiByLnBhdGggIT09IHBhdGgpKTtcbiAgfVxuXG4gIF91cGRhdGVDdXJyZW50Um91dGUocm91dGU6IHN0cmluZywgY29uZmlnPzogeyB1cGRhdGVIaXN0b3J5PzogYm9vbGVhbiB9KSB7XG4gICAgY29uc29sZS5sb2coJ2Zyb20nLCB0aGlzLnN5bmNDdXJyZW50Um91dGUoKSwgJ3RvJywgcm91dGUsICd3aXRoIGNvbmZpZycsIGNvbmZpZyk7XG5cbiAgICBpZiAocm91dGUgPT09IHRoaXMuc3luY0N1cnJlbnRSb3V0ZSgpKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5yb3V0ZXMoKS5maW5kSW5kZXgoKHIpID0+IHIucGF0aCA9PT0gcm91dGUpID09PSAtMSkge1xuICAgICAgY29uc29sZS5lcnJvcihgVGhlIHJvdXRlIFwiJHtyb3V0ZX1cIiBkb2VzIG5vdCBleGlzdC5gLCB0aGlzLmNvbmZpZyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGFzdFJvdXRlID0gdGhpcy5zeW5jQ3VycmVudFJvdXRlKCk7XG5cbiAgICBpZiAoY29uZmlnPy51cGRhdGVIaXN0b3J5ID09PSB0cnVlIHx8IGNvbmZpZz8udXBkYXRlSGlzdG9yeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gdGhpcy5yb3V0ZUhpc3RvcnkoKTtcblxuICAgICAgaWYgKGhpc3RvcnlbaGlzdG9yeS5sZW5ndGggLSAxXSAhPT0gbGFzdFJvdXRlKSB7XG4gICAgICAgIGNvbnN0IG5ld0hpc3RvcnkgPSBbLi4uaGlzdG9yeSwgbGFzdFJvdXRlXTtcblxuICAgICAgICAvLyBsaW1pdCB0aGUgaGlzdG9yeSB0byAyNSBpdGVtc1xuICAgICAgICBpZiAobmV3SGlzdG9yeS5sZW5ndGggPiAyNSkge1xuICAgICAgICAgIG5ld0hpc3Rvcnkuc2hpZnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvb3RIaXN0b3J5SXRlbSA9IHRoaXMucm9vdEhpc3RvcnlJdGVtKCk7XG4gICAgICAgIGlmIChyb290SGlzdG9yeUl0ZW0gJiYgbmV3SGlzdG9yeVswXSAhPT0gcm9vdEhpc3RvcnlJdGVtKSB7XG4gICAgICAgICAgbmV3SGlzdG9yeS51bnNoaWZ0KHJvb3RIaXN0b3J5SXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJvdXRlSGlzdG9yeS5zZXQobmV3SGlzdG9yeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zeW5jQ3VycmVudFJvdXRlLnNldChyb3V0ZSk7XG4gIH1cblxuICBfcmVtb3ZlSXRlbUZyb21IaXN0b3J5KGl0ZW06IHN0cmluZykge1xuICAgIGNvbnN0IGhpc3RvcnkgPSB0aGlzLnJvdXRlSGlzdG9yeSgpO1xuICAgIGNvbnN0IGNsZWFuZWRIaXN0b3J5ID0gaGlzdG9yeS5maWx0ZXIoKGkpID0+IGkgIT09IGl0ZW0pO1xuXG4gICAgY29uc29sZS5sb2coe1xuICAgICAgaGlzdG9yeSxcbiAgICAgIGNsZWFuZWRIaXN0b3J5LFxuICAgICAgbGVuOiBjbGVhbmVkSGlzdG9yeS5sZW5ndGgsXG4gICAgICBudWxsOiBjbGVhbmVkSGlzdG9yeVswXSxcbiAgICAgIGN1cnI6IHRoaXMuc3luY0N1cnJlbnRSb3V0ZSgpLFxuICAgIH0pO1xuXG4gICAgaWYgKGNsZWFuZWRIaXN0b3J5Lmxlbmd0aCA9PT0gMSAmJiBjbGVhbmVkSGlzdG9yeVswXSA9PT0gdGhpcy5zeW5jQ3VycmVudFJvdXRlKCkpIHtcbiAgICAgIHRoaXMucm91dGVIaXN0b3J5LnNldChbXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVIaXN0b3J5LnNldChjbGVhbmVkSGlzdG9yeSk7XG4gICAgfVxuICB9XG5cbiAgX25hdmlnYXRlVG9Jbml0aWFsUm91dGUoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmluaXRpYWxSb3V0ZSkge1xuICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudFJvdXRlKHRoaXMuY29uZmlnLmluaXRpYWxSb3V0ZSA/PyAnLycsIHsgdXBkYXRlSGlzdG9yeTogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5jb25maWcucm91dGVzWzBdPy5wYXRoO1xuICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudFJvdXRlKGZpcnN0ID8/ICcvJywgeyB1cGRhdGVIaXN0b3J5OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVPdmVybGF5Um91dGVyQ29uZmlnID0gKGNvbmZpZzogT3ZlcmxheVJvdXRlckNvbmZpZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE9WRVJMQVlfUk9VVEVSX0NPTkZJR19UT0tFTixcbiAgICAgIHVzZVZhbHVlOiBjb25maWcsXG4gICAgfSxcbiAgICBPdmVybGF5Um91dGVyU2VydmljZSxcbiAgXTtcbn07XG4iXX0=
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvb3ZlcmxheS1yb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQVksUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFzQiw2QkFBNkIsQ0FBQyxDQUFDO0FBMkNsSCxNQUFNLE9BQU8sb0JBQW9CO0lBd0QvQjtRQXZEQSxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pELFFBQUcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxZQUFPLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFOUMsc0JBQWlC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QUFDO0lBQ3hFLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsTUFBMkIsRUFBYyxFQUFFO0lBQ3BGLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsUUFBUSxFQUFFLE1BQU07U0FDakI7UUFDRCxvQkFBb0I7S0FDckIsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGlvblRva2VuLCBQcm92aWRlciwgY29tcHV0ZWQsIGluamVjdCwgaXNTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJvdXRlclN0YXRlU2VydmljZSwgY3JlYXRlQ29tcG9uZW50SWQsIGZyb21OZXh0RnJhbWUgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IG1hcCwgc2tpcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICcuL292ZXJsYXktcmVmJztcblxuZXhwb3J0IGNvbnN0IE9WRVJMQVlfUk9VVEVSX0NPTkZJR19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPdmVybGF5Um91dGVyQ29uZmlnPignT1ZFUkxBWV9ST1VURVJfQ09ORklHX1RPS0VOJyk7XG5cbmV4cG9ydCB0eXBlIE92ZXJsYXlSb3V0ZSA9IHtcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdG8gcmVuZGVyLlxuICAgKi9cbiAgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUaGUgcm91dGUgb2YgdGhlIHBhZ2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIFwiL1wiIC8vIFRoZSByb290IHJvdXRlXG4gICAqIFwiL3R3b1wiIC8vIFRoZSByb3V0ZSBcInR3b1wiXG4gICAqL1xuICBwYXRoOiBgLyR7c3RyaW5nfWA7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dHMgdG8gcGFzcyB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgaW5wdXRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBPdmVybGF5Um91dGVyQ29uZmlnID0ge1xuICAvKipcbiAgICogVGhlIHJvdXRlcyB0byBiZSBhYmxlIHRvIG5hdmlnYXRlIHRvLlxuICAgKi9cbiAgcm91dGVzOiBPdmVybGF5Um91dGVbXTtcblxuICAvKipcbiAgICogVGhlIHJvdXRlIG9uIHdoaWNoIHRvIHN0YXJ0LlxuICAgKiBAZGVmYXVsdCBcIlwiIC8vIFRoZSByb290IHJvdXRlXG4gICAqIEBkZWZhdWx0IHJvdXRlc1swXS5wYXRoIC8vIFRoZSBmaXJzdCByb3V0ZSBpZiBubyByb290IHJvdXRlIGlzIGRlZmluZWRcbiAgICovXG4gIGluaXRpYWxSb3V0ZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE92ZXJsYXlSb3V0ZXJOYXZpZ2F0aW9uRGlyZWN0aW9uID0gJ2ZvcndhcmQnIHwgJ2JhY2t3YXJkJztcblxuZXhwb3J0IHR5cGUgT3ZlcmxheVJvdXRlck5hdmlnYXRlQ29uZmlnID0ge1xuICBuYXZpZ2F0aW9uRGlyZWN0aW9uPzogT3ZlcmxheVJvdXRlck5hdmlnYXRpb25EaXJlY3Rpb247XG59O1xuXG5leHBvcnQgY2xhc3MgT3ZlcmxheVJvdXRlclNlcnZpY2Uge1xuICBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIF9yb3V0ZXJTdGF0ZVNlcnZpY2UgPSBpbmplY3QoUm91dGVyU3RhdGVTZXJ2aWNlKTtcbiAgX2lkID0gY3JlYXRlQ29tcG9uZW50SWQoJ292cicpO1xuICBfb3ZlcmxheVJlZiA9IGluamVjdChPdmVybGF5UmVmKTtcbiAgX2NvbmZpZyA9IGluamVjdChPVkVSTEFZX1JPVVRFUl9DT05GSUdfVE9LRU4pO1xuXG4gIF9zeW5jQ3VycmVudFJvdXRlID0gc2lnbmFsKHRoaXMuX2dldEluaXRpYWxSb3V0ZSgpKTtcbiAgX25hdGl2ZUJyb3dzZXJUZW1wQmFja05hdmlnYXRpb25TdGFjayA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuXG4gIC8vIFRoZSBjdXJyZW50IHJvdXRlLCBidXQgZGVsYXllZCBieSBvbmUgZnJhbWUgdG8gZW5zdXJlIHRoYXQgdGhlIG5lZWRlZCBhbmltYXRpb24gY2xhc3NlcyBhcmUgYXBwbGllZC5cbiAgY3VycmVudFJvdXRlID0gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuX3N5bmNDdXJyZW50Um91dGUpLnBpcGUoc3dpdGNoTWFwKChyKSA9PiBmcm9tTmV4dEZyYW1lKCkucGlwZShtYXAoKCkgPT4gcikpKSksXG4gICAgeyBpbml0aWFsVmFsdWU6IHRoaXMuX2dldEluaXRpYWxSb3V0ZSgpIH0sXG4gICk7XG5cbiAgZXh0cmFSb3V0ZXMgPSBzaWduYWw8T3ZlcmxheVJvdXRlW10+KFtdKTtcblxuICByb3V0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWxsUm91dGVzID0gWy4uLnRoaXMuX2NvbmZpZy5yb3V0ZXMsIC4uLnRoaXMuZXh0cmFSb3V0ZXMoKV07XG5cbiAgICBjb25zdCBhbGxSb3VuZHNXaXRoVHJhbnNmb3JtZWRJbnB1dHMgPSBhbGxSb3V0ZXMubWFwKChyb3V0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucm91dGUsXG4gICAgICAgIGlucHV0czogT2JqZWN0LmVudHJpZXMocm91dGUuaW5wdXRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNTaWduYWwodmFsdWUpKSB7XG4gICAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWxsUm91bmRzV2l0aFRyYW5zZm9ybWVkSW5wdXRzO1xuICB9KTtcblxuICBjdXJyZW50UGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLl9zeW5jQ3VycmVudFJvdXRlKCk7XG5cbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMucm91dGVzKCkpIHtcbiAgICAgIGlmIChyb3V0ZS5wYXRoID09PSBjdXJyZW50Um91dGUpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9KTtcblxuICBuYXZpZ2F0aW9uRGlyZWN0aW9uID0gc2lnbmFsPE92ZXJsYXlSb3V0ZXJOYXZpZ2F0aW9uRGlyZWN0aW9uPignZm9yd2FyZCcpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2Rpc2FibGVDbG9zZU9uTmF2aWdhdGlvbigpO1xuICAgIHRoaXMuX3VwZGF0ZUJyb3dzZXJVcmwodGhpcy5fc3luY0N1cnJlbnRSb3V0ZSgpKTtcblxuICAgIHRoaXMuX3JvdXRlclN0YXRlU2VydmljZVxuICAgICAgLnNlbGVjdFF1ZXJ5UGFyYW0odGhpcy5faWQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHRhcCgocm91dGUpID0+IHtcbiAgICAgICAgICAvLyBUaGUgdXNlciBuYXZpZ2F0ZWQgYmFjayBvciBmb3J3YXJkIHVzaW5nIHRoZSBicm93c2VyIGhpc3RvcnlcbiAgICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICAvLyBUaGUgcm91dGUgcXVlcnkgcGFyYW0gbm8gbG9uZ2VyIGV4aXN0cyAtIGNsb3NlIHRoZSBvdmVybGF5XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmNsb3NlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyb3V0ZSAhPT0gdGhpcy5fc3luY0N1cnJlbnRSb3V0ZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBuYXZTdGFjayA9IHRoaXMuX25hdGl2ZUJyb3dzZXJUZW1wQmFja05hdmlnYXRpb25TdGFjaygpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5fc3luY0N1cnJlbnRSb3V0ZSgpO1xuXG4gICAgICAgICAgICBpZiAoIW5hdlN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAvLyBJZiB0aGUgbmF2IHN0YWNrIGlzIGVtcHR5IHRoZSBvbmx5IHdheSB0byBuYXZpZ2F0ZSBpcyBiYWNrLlxuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlKHJvdXRlLCB7IG5hdmlnYXRpb25EaXJlY3Rpb246ICdiYWNrd2FyZCcgfSk7XG4gICAgICAgICAgICAgIHRoaXMuX25hdGl2ZUJyb3dzZXJUZW1wQmFja05hdmlnYXRpb25TdGFjay5zZXQoW2N1cnJlbnRSb3V0ZV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgbGFzdEl0ZW0gPSBuYXZTdGFja1tuYXZTdGFjay5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgICBpZiAocm91dGUgPT09IGxhc3RJdGVtKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIG5ldyByb3V0ZSBtYXRjaGVzIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGJhY2sgbmF2IHN0YWNrLlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgYXJlIGdvaW5nIGZvcndhcmQgYWdhaW4uXG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZShyb3V0ZSwgeyBuYXZpZ2F0aW9uRGlyZWN0aW9uOiAnZm9yd2FyZCcgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmF0aXZlQnJvd3NlclRlbXBCYWNrTmF2aWdhdGlvblN0YWNrLnNldChuYXZTdGFjay5zbGljZSgwLCAtMSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEVsc2Ugd2UgYXJlIGdvaW5nIGJhY2suXG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZShyb3V0ZSwgeyBuYXZpZ2F0aW9uRGlyZWN0aW9uOiAnYmFja3dhcmQnIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX25hdGl2ZUJyb3dzZXJUZW1wQmFja05hdmlnYXRpb25TdGFjay5zZXQoWy4uLm5hdlN0YWNrLCBjdXJyZW50Um91dGVdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGUgbmF2aWdhdGlvbiB3YXMgdHJpZ2dlcmVkIGJ5IHVpIGludGVyYWN0aW9uLiBDbGVhciB0aGUgYmFjayBuYXYgc3RhY2suXG4gICAgICAgICAgICB0aGlzLl9uYXRpdmVCcm93c2VyVGVtcEJhY2tOYXZpZ2F0aW9uU3RhY2suc2V0KFtdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICAvLyBSZW1vdmUgdGhlIGRpYWxvZyByb3V0ZSBmcm9tIHRoZSBicm93c2VyIHVybFxuICAgICAgdGhpcy5fdXBkYXRlQnJvd3NlclVybCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgbmF2aWdhdGUocm91dGU6IHN0cmluZyB8IChzdHJpbmcgfCBudW1iZXIpW10sIGNvbmZpZz86IE92ZXJsYXlSb3V0ZXJOYXZpZ2F0ZUNvbmZpZykge1xuICAgIGNvbnN0IHJlc29sdmVkUm91dGUgPSB0aGlzLnJlc29sdmVQYXRoKHJvdXRlKTtcbiAgICBpZiAoY29uZmlnPy5uYXZpZ2F0aW9uRGlyZWN0aW9uKSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24uc2V0KGNvbmZpZy5uYXZpZ2F0aW9uRGlyZWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHJlc29sdmVkUm91dGUudHlwZSA9PT0gJ2JhY2snKSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24uc2V0KCdiYWNrd2FyZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24uc2V0KCdmb3J3YXJkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ3VycmVudFJvdXRlKHJlc29sdmVkUm91dGUucm91dGUpO1xuICB9XG5cbiAgcmVzb2x2ZVBhdGgocm91dGU6IHN0cmluZyB8IChzdHJpbmcgfCBudW1iZXIpW10pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3V0ZSkpIHtcbiAgICAgIHJvdXRlID0gcm91dGUuam9pbignLycpO1xuICAgIH1cblxuICAgIGlmIChyb3V0ZSA9PT0gJycpIHtcbiAgICAgIHJvdXRlID0gJy8nO1xuICAgIH1cblxuICAgIGNvbnN0IGlzQWJzb2x1dGUgPSByb3V0ZS5zdGFydHNXaXRoKCcvJyk7XG4gICAgY29uc3QgaXNSZXBsYWNlQ3VycmVudCA9IHJvdXRlLnN0YXJ0c1dpdGgoJy4vJyk7XG4gICAgY29uc3QgaXNCYWNrID0gcm91dGUuc3RhcnRzV2l0aCgnLi4vJyk7XG4gICAgY29uc3QgaXNGb3J3YXJkID0gIWlzQWJzb2x1dGUgJiYgIWlzUmVwbGFjZUN1cnJlbnQgJiYgIWlzQmFjaztcblxuICAgIGNvbnN0IGN1cnIgPSB0aGlzLl9zeW5jQ3VycmVudFJvdXRlKCk7XG5cbiAgICBpZiAoaXNGb3J3YXJkKSB7XG4gICAgICByb3V0ZSA9IGAke2N1cnJ9LyR7cm91dGV9YDtcbiAgICB9IGVsc2UgaWYgKGlzUmVwbGFjZUN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGN1cnJTZWdtZW50cyA9IGN1cnIuc3BsaXQoJy8nKS5maWx0ZXIoKHMpID0+IHMgIT09ICcnKTtcbiAgICAgIGN1cnJTZWdtZW50cy5wb3AoKTtcblxuICAgICAgY29uc3QgbmV3U2VnbWVudHMgPSByb3V0ZS5zcGxpdCgnLycpLmZpbHRlcigocykgPT4gcyAhPT0gJy4nKTtcblxuICAgICAgcm91dGUgPSBgLyR7Y3VyclNlZ21lbnRzLmNvbmNhdChuZXdTZWdtZW50cykuam9pbignLycpfWA7XG4gICAgfSBlbHNlIGlmIChpc0JhY2spIHtcbiAgICAgIGNvbnN0IGN1cnJTZWdtZW50cyA9IGN1cnIuc3BsaXQoJy8nKS5maWx0ZXIoKHMpID0+IHMgIT09ICcnKTtcbiAgICAgIGNvbnN0IG5ld1NlZ21lbnRzID0gcm91dGUuc3BsaXQoJy8nKS5maWx0ZXIoKHMpID0+IHMgIT09ICcuLicpO1xuICAgICAgY29uc3Qgc3RlcHNCYWNrID0gcm91dGUuc3BsaXQoJy8nKS5maWx0ZXIoKHMpID0+IHMgPT09ICcuLicpLmxlbmd0aDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGVwc0JhY2s7IGkrKykge1xuICAgICAgICBjdXJyU2VnbWVudHMucG9wKCk7XG4gICAgICB9XG5cbiAgICAgIHJvdXRlID0gYC8ke2N1cnJTZWdtZW50cy5jb25jYXQobmV3U2VnbWVudHMpLmpvaW4oJy8nKX1gO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByb3V0ZSxcbiAgICAgIHR5cGU6XG4gICAgICAgIGlzQmFjayB8fCByb3V0ZSA9PT0gJy8nXG4gICAgICAgICAgPyAnYmFjaydcbiAgICAgICAgICA6IGlzUmVwbGFjZUN1cnJlbnRcbiAgICAgICAgICAgID8gJ3JlcGxhY2UtY3VycmVudCdcbiAgICAgICAgICAgIDogaXNBYnNvbHV0ZVxuICAgICAgICAgICAgICA/ICdhYnNvbHV0ZSdcbiAgICAgICAgICAgICAgOiBpc0ZvcndhcmRcbiAgICAgICAgICAgICAgICA/ICdmb3J3YXJkJ1xuICAgICAgICAgICAgICAgIDogJ3Vua25vd24nLFxuICAgIH0gYXMgY29uc3Q7XG4gIH1cblxuICBhZGRSb3V0ZShyb3V0ZTogT3ZlcmxheVJvdXRlKSB7XG4gICAgdGhpcy5leHRyYVJvdXRlcy5zZXQoWy4uLnRoaXMuZXh0cmFSb3V0ZXMoKSwgcm91dGVdKTtcbiAgfVxuXG4gIHJlbW92ZVJvdXRlKHBhdGg6IHN0cmluZykge1xuICAgIHRoaXMuZXh0cmFSb3V0ZXMuc2V0KHRoaXMuZXh0cmFSb3V0ZXMoKS5maWx0ZXIoKHIpID0+IHIucGF0aCAhPT0gcGF0aCkpO1xuICB9XG5cbiAgX3VwZGF0ZUN1cnJlbnRSb3V0ZShyb3V0ZTogc3RyaW5nKSB7XG4gICAgaWYgKHJvdXRlID09PSB0aGlzLl9zeW5jQ3VycmVudFJvdXRlKCkpIHJldHVybjtcblxuICAgIGlmICh0aGlzLnJvdXRlcygpLmZpbmRJbmRleCgocikgPT4gci5wYXRoID09PSByb3V0ZSkgPT09IC0xKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBUaGUgcm91dGUgXCIke3JvdXRlfVwiIGRvZXMgbm90IGV4aXN0LmAsIHRoaXMuX2NvbmZpZyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3luY0N1cnJlbnRSb3V0ZS5zZXQocm91dGUpO1xuXG4gICAgdGhpcy5fdXBkYXRlQnJvd3NlclVybChyb3V0ZSk7XG4gIH1cblxuICBfZ2V0SW5pdGlhbFJvdXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuaW5pdGlhbFJvdXRlID8/IHRoaXMuX2NvbmZpZy5yb3V0ZXNbMF0/LnBhdGggPz8gJy8nO1xuICB9XG5cbiAgX25hdmlnYXRlVG9Jbml0aWFsUm91dGUoKSB7XG4gICAgdGhpcy5fdXBkYXRlQ3VycmVudFJvdXRlKHRoaXMuX2dldEluaXRpYWxSb3V0ZSgpKTtcbiAgfVxuXG4gIF91cGRhdGVCcm93c2VyVXJsKHJvdXRlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWycuJ10sIHsgcXVlcnlQYXJhbXM6IHsgW3RoaXMuX2lkXTogcm91dGUgfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVDbG9zZU9uTmF2aWdhdGlvbigpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gcHJpdmF0ZSBwcm9wZXJ0eVxuICAgIHRoaXMuX292ZXJsYXlSZWYuX2Nka1JlZi5vdmVybGF5UmVmLl9sb2NhdGlvbkNoYW5nZXM/LnVuc3Vic2NyaWJlPy4oKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcHJvdmlkZU92ZXJsYXlSb3V0ZXJDb25maWcgPSAoY29uZmlnOiBPdmVybGF5Um91dGVyQ29uZmlnKTogUHJvdmlkZXJbXSA9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogT1ZFUkxBWV9ST1VURVJfQ09ORklHX1RPS0VOLFxuICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICB9LFxuICAgIE92ZXJsYXlSb3V0ZXJTZXJ2aWNlLFxuICBdO1xufTtcbiJdfQ==
@@ -1,10 +1,9 @@
1
- import { Injectable, InjectionToken, inject, signal } from '@angular/core';
1
+ import { InjectionToken, inject, signal } from '@angular/core';
2
2
  import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
3
3
  import { ViewportService } from '@ethlete/core';
4
4
  import { distinctUntilChanged, tap } from 'rxjs';
5
5
  import { OverlaySidebarPageComponent } from '../partials/overlay-sidebar-page';
6
6
  import { OverlayRouterService } from './overlay-router';
7
- import * as i0 from "@angular/core";
8
7
  export const SIDEBAR_OVERLAY_CONFIG = new InjectionToken('SIDEBAR_OVERLAY_CONFIG');
9
8
  export class SidebarOverlayService {
10
9
  constructor() {
@@ -21,14 +20,10 @@ export class SidebarOverlayService {
21
20
  .pipe(distinctUntilChanged(), tap((renderSidebar) => {
22
21
  if (renderSidebar) {
23
22
  this.router.removeRoute(sidebarPageRoute);
24
- this.router.rootHistoryItem.set(null);
25
23
  // if the user is currently on the sidebar route, navigate to the initial route.
26
24
  if (this.router.currentRoute() === sidebarPageRoute) {
27
25
  this.router._navigateToInitialRoute();
28
26
  }
29
- // clean up all history entries that are the sidebar route.
30
- // we don't want to navigate to the sidebar route if the sidebar is already visible as a actual sidebar.
31
- this.router._removeItemFromHistory(sidebarPageRoute);
32
27
  }
33
28
  else {
34
29
  this.router.addRoute({
@@ -39,18 +34,11 @@ export class SidebarOverlayService {
39
34
  bodyTemplate: this.sidebarContentTemplate,
40
35
  },
41
36
  });
42
- // ensure that the sidebar route is always the last route in the history so it can be reached.
43
- this.router.rootHistoryItem.set(sidebarPageRoute);
44
37
  }
45
38
  }), takeUntilDestroyed())
46
39
  .subscribe();
47
40
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SidebarOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SidebarOverlayService }); }
50
41
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SidebarOverlayService, decorators: [{
52
- type: Injectable
53
- }], ctorParameters: () => [] });
54
42
  export const provideSidebarOverlayConfig = (config) => {
55
43
  return [
56
44
  {
@@ -60,4 +48,4 @@ export const provideSidebarOverlayConfig = (config) => {
60
48
  SidebarOverlayService,
61
49
  ];
62
50
  };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1vdmVybGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L3V0aWxzL3NpZGViYXItb3ZlcmxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBZSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEYsT0FBTyxFQUFjLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUV4RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsd0JBQXdCLENBQUMsQ0FBQztBQW1CekcsTUFBTSxPQUFPLHFCQUFxQjtJQVloQztRQVhBLFdBQU0sR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxXQUFNLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFdEMsa0JBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3JHLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLElBQUksRUFBRSxDQUFDO1NBQzdGLENBQUMsQ0FBQztRQUVILDJCQUFzQixHQUFHLE1BQU0sQ0FBOEIsSUFBSSxDQUFDLENBQUM7UUFDbkUsMEJBQXFCLEdBQUcsTUFBTSxDQUF3QyxJQUFJLENBQUMsQ0FBQztRQUcxRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksVUFBVSxDQUFDO1FBRXBFLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQzdCLElBQUksQ0FDSCxvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwQixJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUUxQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXRDLGdGQUFnRjtnQkFDaEYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxLQUFLLGdCQUFnQixFQUFFLENBQUM7b0JBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDeEMsQ0FBQztnQkFFRCwyREFBMkQ7Z0JBQzNELHdHQUF3RztnQkFDeEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsU0FBUyxFQUFFLDJCQUEyQjtvQkFDdEMsTUFBTSxFQUFFO3dCQUNOLGNBQWMsRUFBRSxJQUFJLENBQUMscUJBQXFCO3dCQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjtxQkFDMUM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUVILDhGQUE4RjtnQkFDOUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs4R0FqRFUscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7O0FBcURYLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBNEIsRUFBRSxFQUFFO0lBQzFFLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxzQkFBc0I7WUFDL0IsUUFBUSxFQUFFLE1BQU07U0FDakI7UUFDRCxxQkFBcUI7S0FDdEIsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBUZW1wbGF0ZVJlZiwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEJyZWFrcG9pbnQsIFZpZXdwb3J0U2VydmljZSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vcGFydGlhbHMvb3ZlcmxheS1oZWFkZXItdGVtcGxhdGUnO1xuaW1wb3J0IHsgT3ZlcmxheVNpZGViYXJQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFydGlhbHMvb3ZlcmxheS1zaWRlYmFyLXBhZ2UnO1xuaW1wb3J0IHsgT3ZlcmxheVJvdXRlclNlcnZpY2UgfSBmcm9tICcuL292ZXJsYXktcm91dGVyJztcblxuZXhwb3J0IGNvbnN0IFNJREVCQVJfT1ZFUkxBWV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2lkZWJhck92ZXJsYXlDb25maWc+KCdTSURFQkFSX09WRVJMQVlfQ09ORklHJyk7XG5cbmV4cG9ydCB0eXBlIFNpZGViYXJPdmVybGF5Q29uZmlnID0ge1xuICAvKipcbiAgICogT24gbW9iaWxlIGRldmljZXMsIHRoZSBzaWRlYmFyIHdpbGwgYmUgc2hvd24gYXMgYSBzZXBhcmF0ZSBwYWdlIHRoYXQgY2FuIGJlIG5hdmlnYXRlZCB0by5cbiAgICogVGhpcyBpcyB0aGUgcm91dGUgdG8gdGhlIHNpZGViYXIgcGFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCIvc2lkZWJhclwiXG4gICAqL1xuICBzaWRlYmFyUGFnZVJvdXRlPzogYC8ke3N0cmluZ31gO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJlYWtwb2ludCBmcm9tIHdoaWNoIHRvIHJlbmRlciB0aGUgc2lkZWJhci4gQ2FuIGJlIGEgYnJlYWtwb2ludCBvciBhIG51bWJlciByZXByZXNlbnRpbmcgdGhlIHBpeGVsIHdpZHRoLlxuICAgKiBAZGVmYXVsdCBcIm1kXCJcbiAgICovXG4gIHJlbmRlclNpZGViYXJGcm9tPzogQnJlYWtwb2ludCB8IG51bWJlcjtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTaWRlYmFyT3ZlcmxheVNlcnZpY2Uge1xuICBjb25maWcgPSBpbmplY3QoU0lERUJBUl9PVkVSTEFZX0NPTkZJRyk7XG4gIHZpZXdwb3J0U2VydmljZSA9IGluamVjdChWaWV3cG9ydFNlcnZpY2UpO1xuICByb3V0ZXIgPSBpbmplY3QoT3ZlcmxheVJvdXRlclNlcnZpY2UpO1xuXG4gIHJlbmRlclNpZGViYXIgPSB0b1NpZ25hbCh0aGlzLnZpZXdwb3J0U2VydmljZS5vYnNlcnZlKHsgbWluOiB0aGlzLmNvbmZpZy5yZW5kZXJTaWRlYmFyRnJvbSA/PyAnbWQnIH0pLCB7XG4gICAgaW5pdGlhbFZhbHVlOiB0aGlzLnZpZXdwb3J0U2VydmljZS5pc01hdGNoZWQoeyBtaW46IHRoaXMuY29uZmlnLnJlbmRlclNpZGViYXJGcm9tID8/ICdtZCcgfSksXG4gIH0pO1xuXG4gIHNpZGViYXJDb250ZW50VGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKTtcbiAgc2lkZWJhckhlYWRlclRlbXBsYXRlID0gc2lnbmFsPE92ZXJsYXlIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHNpZGViYXJQYWdlUm91dGUgPSB0aGlzLmNvbmZpZy5zaWRlYmFyUGFnZVJvdXRlID8/ICcvc2lkZWJhcic7XG5cbiAgICB0b09ic2VydmFibGUodGhpcy5yZW5kZXJTaWRlYmFyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRhcCgocmVuZGVyU2lkZWJhcikgPT4ge1xuICAgICAgICAgIGlmIChyZW5kZXJTaWRlYmFyKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5yZW1vdmVSb3V0ZShzaWRlYmFyUGFnZVJvdXRlKTtcblxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIucm9vdEhpc3RvcnlJdGVtLnNldChudWxsKTtcblxuICAgICAgICAgICAgLy8gaWYgdGhlIHVzZXIgaXMgY3VycmVudGx5IG9uIHRoZSBzaWRlYmFyIHJvdXRlLCBuYXZpZ2F0ZSB0byB0aGUgaW5pdGlhbCByb3V0ZS5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlci5jdXJyZW50Um91dGUoKSA9PT0gc2lkZWJhclBhZ2VSb3V0ZSkge1xuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5fbmF2aWdhdGVUb0luaXRpYWxSb3V0ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBjbGVhbiB1cCBhbGwgaGlzdG9yeSBlbnRyaWVzIHRoYXQgYXJlIHRoZSBzaWRlYmFyIHJvdXRlLlxuICAgICAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBuYXZpZ2F0ZSB0byB0aGUgc2lkZWJhciByb3V0ZSBpZiB0aGUgc2lkZWJhciBpcyBhbHJlYWR5IHZpc2libGUgYXMgYSBhY3R1YWwgc2lkZWJhci5cbiAgICAgICAgICAgIHRoaXMucm91dGVyLl9yZW1vdmVJdGVtRnJvbUhpc3Rvcnkoc2lkZWJhclBhZ2VSb3V0ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLmFkZFJvdXRlKHtcbiAgICAgICAgICAgICAgcGF0aDogc2lkZWJhclBhZ2VSb3V0ZSxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBPdmVybGF5U2lkZWJhclBhZ2VDb21wb25lbnQsXG4gICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgIGhlYWRlclRlbXBsYXRlOiB0aGlzLnNpZGViYXJIZWFkZXJUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICBib2R5VGVtcGxhdGU6IHRoaXMuc2lkZWJhckNvbnRlbnRUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgc2lkZWJhciByb3V0ZSBpcyBhbHdheXMgdGhlIGxhc3Qgcm91dGUgaW4gdGhlIGhpc3Rvcnkgc28gaXQgY2FuIGJlIHJlYWNoZWQuXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5yb290SGlzdG9yeUl0ZW0uc2V0KHNpZGViYXJQYWdlUm91dGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlU2lkZWJhck92ZXJsYXlDb25maWcgPSAoY29uZmlnOiBTaWRlYmFyT3ZlcmxheUNvbmZpZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNJREVCQVJfT1ZFUkxBWV9DT05GSUcsXG4gICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgIH0sXG4gICAgU2lkZWJhck92ZXJsYXlTZXJ2aWNlLFxuICBdO1xufTtcbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1vdmVybGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L3V0aWxzL3NpZGViYXItb3ZlcmxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUF5QixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEYsT0FBTyxFQUFjLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUF1Qix3QkFBd0IsQ0FBQyxDQUFDO0FBa0J6RyxNQUFNLE9BQU8scUJBQXFCO0lBWWhDO1FBWEEsV0FBTSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFDLFdBQU0sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV0QyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDckcsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksSUFBSSxFQUFFLENBQUM7U0FDN0YsQ0FBQyxDQUFDO1FBRUgsMkJBQXNCLEdBQUcsTUFBTSxDQUE4QixJQUFJLENBQUMsQ0FBQztRQUNuRSwwQkFBcUIsR0FBRyxNQUFNLENBQXdDLElBQUksQ0FBQyxDQUFDO1FBRzFFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxVQUFVLENBQUM7UUFFcEUsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDN0IsSUFBSSxDQUNILG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3BCLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBRTFDLGdGQUFnRjtnQkFDaEYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxLQUFLLGdCQUFnQixFQUFFLENBQUM7b0JBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDeEMsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsU0FBUyxFQUFFLDJCQUEyQjtvQkFDdEMsTUFBTSxFQUFFO3dCQUNOLGNBQWMsRUFBRSxJQUFJLENBQUMscUJBQXFCO3dCQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjtxQkFDMUM7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUE0QixFQUFjLEVBQUU7SUFDdEYsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixRQUFRLEVBQUUsTUFBTTtTQUNqQjtRQUNELHFCQUFxQjtLQUN0QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyLCBUZW1wbGF0ZVJlZiwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEJyZWFrcG9pbnQsIFZpZXdwb3J0U2VydmljZSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vcGFydGlhbHMvb3ZlcmxheS1oZWFkZXItdGVtcGxhdGUnO1xuaW1wb3J0IHsgT3ZlcmxheVNpZGViYXJQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFydGlhbHMvb3ZlcmxheS1zaWRlYmFyLXBhZ2UnO1xuaW1wb3J0IHsgT3ZlcmxheVJvdXRlclNlcnZpY2UgfSBmcm9tICcuL292ZXJsYXktcm91dGVyJztcblxuZXhwb3J0IGNvbnN0IFNJREVCQVJfT1ZFUkxBWV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2lkZWJhck92ZXJsYXlDb25maWc+KCdTSURFQkFSX09WRVJMQVlfQ09ORklHJyk7XG5cbmV4cG9ydCB0eXBlIFNpZGViYXJPdmVybGF5Q29uZmlnID0ge1xuICAvKipcbiAgICogT24gbW9iaWxlIGRldmljZXMsIHRoZSBzaWRlYmFyIHdpbGwgYmUgc2hvd24gYXMgYSBzZXBhcmF0ZSBwYWdlIHRoYXQgY2FuIGJlIG5hdmlnYXRlZCB0by5cbiAgICogVGhpcyBpcyB0aGUgcm91dGUgdG8gdGhlIHNpZGViYXIgcGFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCIvc2lkZWJhclwiXG4gICAqL1xuICBzaWRlYmFyUGFnZVJvdXRlPzogYC8ke3N0cmluZ31gO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJlYWtwb2ludCBmcm9tIHdoaWNoIHRvIHJlbmRlciB0aGUgc2lkZWJhci4gQ2FuIGJlIGEgYnJlYWtwb2ludCBvciBhIG51bWJlciByZXByZXNlbnRpbmcgdGhlIHBpeGVsIHdpZHRoLlxuICAgKiBAZGVmYXVsdCBcIm1kXCJcbiAgICovXG4gIHJlbmRlclNpZGViYXJGcm9tPzogQnJlYWtwb2ludCB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjbGFzcyBTaWRlYmFyT3ZlcmxheVNlcnZpY2Uge1xuICBjb25maWcgPSBpbmplY3QoU0lERUJBUl9PVkVSTEFZX0NPTkZJRyk7XG4gIHZpZXdwb3J0U2VydmljZSA9IGluamVjdChWaWV3cG9ydFNlcnZpY2UpO1xuICByb3V0ZXIgPSBpbmplY3QoT3ZlcmxheVJvdXRlclNlcnZpY2UpO1xuXG4gIHJlbmRlclNpZGViYXIgPSB0b1NpZ25hbCh0aGlzLnZpZXdwb3J0U2VydmljZS5vYnNlcnZlKHsgbWluOiB0aGlzLmNvbmZpZy5yZW5kZXJTaWRlYmFyRnJvbSA/PyAnbWQnIH0pLCB7XG4gICAgaW5pdGlhbFZhbHVlOiB0aGlzLnZpZXdwb3J0U2VydmljZS5pc01hdGNoZWQoeyBtaW46IHRoaXMuY29uZmlnLnJlbmRlclNpZGViYXJGcm9tID8/ICdtZCcgfSksXG4gIH0pO1xuXG4gIHNpZGViYXJDb250ZW50VGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKTtcbiAgc2lkZWJhckhlYWRlclRlbXBsYXRlID0gc2lnbmFsPE92ZXJsYXlIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHNpZGViYXJQYWdlUm91dGUgPSB0aGlzLmNvbmZpZy5zaWRlYmFyUGFnZVJvdXRlID8/ICcvc2lkZWJhcic7XG5cbiAgICB0b09ic2VydmFibGUodGhpcy5yZW5kZXJTaWRlYmFyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRhcCgocmVuZGVyU2lkZWJhcikgPT4ge1xuICAgICAgICAgIGlmIChyZW5kZXJTaWRlYmFyKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5yZW1vdmVSb3V0ZShzaWRlYmFyUGFnZVJvdXRlKTtcblxuICAgICAgICAgICAgLy8gaWYgdGhlIHVzZXIgaXMgY3VycmVudGx5IG9uIHRoZSBzaWRlYmFyIHJvdXRlLCBuYXZpZ2F0ZSB0byB0aGUgaW5pdGlhbCByb3V0ZS5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlci5jdXJyZW50Um91dGUoKSA9PT0gc2lkZWJhclBhZ2VSb3V0ZSkge1xuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5fbmF2aWdhdGVUb0luaXRpYWxSb3V0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5hZGRSb3V0ZSh7XG4gICAgICAgICAgICAgIHBhdGg6IHNpZGViYXJQYWdlUm91dGUsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogT3ZlcmxheVNpZGViYXJQYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICBoZWFkZXJUZW1wbGF0ZTogdGhpcy5zaWRlYmFySGVhZGVyVGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgYm9keVRlbXBsYXRlOiB0aGlzLnNpZGViYXJDb250ZW50VGVtcGxhdGUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcHJvdmlkZVNpZGViYXJPdmVybGF5Q29uZmlnID0gKGNvbmZpZzogU2lkZWJhck92ZXJsYXlDb25maWcpOiBQcm92aWRlcltdID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTSURFQkFSX09WRVJMQVlfQ09ORklHLFxuICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICB9LFxuICAgIFNpZGViYXJPdmVybGF5U2VydmljZSxcbiAgXTtcbn07XG4iXX0=