@smarterplan/ngx-smarterplan-core 0.4.60 → 0.4.62

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.
@@ -180,6 +180,15 @@ export class ZoneService {
180
180
  const floors = zones.filter((zone) => zone.layer && zone.layer.name.includes("FLOOR"));
181
181
  return floors.length > 0 ? floors[0] : null;
182
182
  }
183
+ /**
184
+ * Get zones woth audio track
185
+ * @param spaceID
186
+ * @returns Promise<Zone[]>
187
+ */
188
+ async getAudioZonesForSpace(spaceID) {
189
+ const allZones = await this.getZonesBySpace(spaceID);
190
+ return allZones.filter((zone) => zone.audioID);
191
+ }
183
192
  }
184
193
  ZoneService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, deps: [{ token: 'currentAPIService' }, { token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Injectable });
185
194
  ZoneService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, providedIn: "root" });
@@ -192,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
192
201
  type: Inject,
193
202
  args: ['currentAPIService']
194
203
  }] }, { type: i1.BaseUserService }]; } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT25ELE1BQU0sT0FBTyxXQUFXO0lBR3BCLFlBQXlDLFdBQWdCLEVBQVUsV0FBNEI7UUFBNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzNGLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDakMsTUFBTSxJQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ25ELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdELElBQUksS0FBSyxFQUFFO2dCQUNQLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtvQkFDNUIsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBVSxDQUFDO29CQUN2QyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3pCO2FBQ0o7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbkQ7SUFFTCxDQUFDO0lBRUQs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VTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlnQixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGJPYmplY3RUeXBlLCBab25lIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3VzZXIuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBab25lU2VydmljZSB7XHJcbiAgICBBUEk6IGFueTsgLy9BV1MgQVBJU2VydmljZVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSwgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRab25lc0J5U3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxBcnJheTxab25lPj4ge1xyXG4gICAgICAgIGNvbnN0IGxpc3Q6IFpvbmVbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLkFQSS5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkoJ1pvbmVzQnlTcGFjZScpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAgICAgaWYgKHpvbmVzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHpvbmUgb2Ygem9uZXMuaXRlbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB6b25lT2JqZWN0ID0geyAuLi56b25lIH0gYXMgWm9uZTtcclxuICAgICAgICAgICAgICAgICAgICB6b25lT2JqZWN0LnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoem9uZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKHpvbmVPYmplY3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBsaXN0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWm9uZXNCeVNwYWNlIG5vdCBpbXBsZW1lbnRlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25Gb3JMb2NhdGlvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IFtdO1xyXG4gICAgICAgIGlmIChtaXNzaW9uRm9yTG9jYXRpb24gJiYgbWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBhbGxvd2VkWm9uZSA9IGF3YWl0IHRoaXMuZ2V0Wm9uZShtaXNzaW9uRm9yTG9jYXRpb24uem9uZUlEKTtcclxuICAgICAgICAgICAgYWxsb3dlZFpvbmUudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbChhbGxvd2VkWm9uZSk7XHJcbiAgICAgICAgICAgIGlmIChhbGxvd2VkWm9uZS5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxpc3QucHVzaChhbGxvd2VkWm9uZS5wYXJlbnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhlIHdob2xlIGJ1aWxkaW5nIGlzIGF1dGhvcml6ZWRcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsaXN0LnB1c2goYWxsb3dlZFpvbmUpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGF3YWl0IHRoaXMuQVBJLkxpc3Rab25lcyh7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJRDogeyBlcTogYWxsb3dlZFpvbmUuaWQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRab25lID0geyAuLi5jaGlsZCB9IGFzIFpvbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRab25lLnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChjaGlsZFpvbmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGlzdDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJab25lc0lEc0ZvclVzZXIoem9uZXM6IFpvbmVbXSk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICAgICAgY29uc3QgeyBzcGFjZUlEIH0gPSB6b25lc1swXTtcclxuICAgICAgICBjb25zdCB6b25lSURzID0gbmV3IFNldCh6b25lcy5tYXAoKHpvbmUpID0+IHpvbmUuaWQpKTtcclxuICAgICAgICBjb25zdCBhbGxvd2VkWm9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRab25lcyA9IGFsbG93ZWRab25lcy5maWx0ZXIoKHpvbmUpID0+XHJcbiAgICAgICAgICAgIHpvbmVJRHMuaGFzKHpvbmUuaWQpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkWm9uZXM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlWm9uZSh7IGlkOiB6b25lSUQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKFxyXG4gICAgICAgIHN3ZWVwSUQ6IHN0cmluZyxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IHpvbmVzU3BhY2UgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKSkuaXRlbXM7XHJcbiAgICAgICAgcmV0dXJuIHpvbmVzU3BhY2UuZmlsdGVyKFxyXG4gICAgICAgICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHN3ZWVwSUQpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcclxuICAgIHNvcnRab25lc0Zyb21DaGlsZFRvUGFyZW50KHpvbmVzVG9Tb3J0OiBab25lW10pIHtcclxuICAgICAgICAvLyBnZXQgZGVmYXVsdFxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRab25lID0gem9uZXNUb1NvcnQuZmluZCgoeikgPT4gIXoucGFyZW50SUQpO1xyXG4gICAgICAgIGlmIChkZWZhdWx0Wm9uZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleE9mID0gem9uZXNUb1NvcnQuaW5kZXhPZihkZWZhdWx0Wm9uZSk7XHJcbiAgICAgICAgICAgIHpvbmVzVG9Tb3J0LnNwbGljZShpbmRleE9mLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChhLnBhcmVudElEID09PSBiLmlkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gc28gZmFyIGJ5IG51bWJlciBvZiBuYXZpZ2F0aW9uIHBvaW50cyBpbiB0aGVtXHJcbiAgICAgICAgLy8gY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KFxyXG4gICAgICAgIC8vICAgICAoYSwgYikgPT4gYS5uYXZpZ2F0aW9ucy5pdGVtcy5sZW5ndGggLSBiLm5hdmlnYXRpb25zLml0ZW1zLmxlbmd0aCxcclxuICAgICAgICAvLyApO1xyXG4gICAgICAgIGlmIChkZWZhdWx0Wm9uZSkge1xyXG4gICAgICAgICAgICB6b25lcy5wdXNoKGRlZmF1bHRab25lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHpvbmVzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFpvbmVzRm9yT2JqZWN0KFxyXG4gICAgICAgIG9iamVjdDogRGJPYmplY3RUeXBlLFxyXG4gICAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgICAgICBpZiAob2JqZWN0LnBvaXMuaXRlbXMgJiYgb2JqZWN0LnBvaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBbcG9pXSA9IG9iamVjdC5wb2lzLml0ZW1zO1xyXG4gICAgICAgICAgICBpZiAocG9pLm1hdHRlcnBvcnRTd2VlcElEKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKFxyXG4gICAgICAgICAgICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcclxuICAgICAgICAgICAgICAgICAgICBvYmplY3Quc3BhY2VJRCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gem9uZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlVmlydHVhbFpvbmUoem9uZUlucHV0OiBab25lKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICAgICAgem9uZUlucHV0LnN3ZWVwSURzID0gW107XHJcbiAgICAgICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKHpvbmVJbnB1dCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJ2aXJ0dWFsIHpvbmUgY3JlYXRlZFwiLCB6b25lKTtcclxuICAgICAgICByZXR1cm4gem9uZTtcclxuICAgIH1cclxuXHJcbiAgICB6b25lSXNWaXJ0dWFsKHpvbmU6IFpvbmUpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXpvbmUuc3dlZXBJRHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgKHpvbmUudGFncyAmJiB6b25lLnRhZ3MuaW5jbHVkZXMoXCJ2aXJ0dWFsXCIpKSB8fFxyXG4gICAgICAgICAgICB6b25lLnN3ZWVwSURzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1vZGVsM0RGb3Jab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCB6b25lID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldFpvbmUoem9uZUlEKTtcclxuICAgICAgICBpZiAoem9uZS5ub2RlSURzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uR2V0Tm9kZSh6b25lLm5vZGVJRHNbMF0pO1xyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5tb2RlbDNEO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRab25lKHpvbmVJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGVmYXVsdFpvbmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihhc3luYyAoem9uZXMpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgem9uZXNCdWlsZGluZyA9IHpvbmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gXCJCVUlMRElOR1wiLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoem9uZXNCdWlsZGluZy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB6b25lc0J1aWxkaW5nWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFpvbmUgPSB6b25lcy5maW5kKCh6b25lKSA9PiAhem9uZS5wYXJlbnRJRCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRab25lO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZShpbnB1dDogWm9uZSk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlWm9uZShpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXN5bmMgZ2V0U29ydGVkWm9uZXNGb3JTd2VlcEZvclVzZXIoXHJcbiAgICAvLyAgICAgc3dlZXA6IHN0cmluZyxcclxuICAgIC8vICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAvLyApOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgLy8gICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gW107XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0ZvclN3ZWVwRm9yU3BhY2Uoc3dlZXAsIHNwYWNlSUQpO1xyXG4gICAgLy8gICAgIGlmICh6b25lcy5sZW5ndGggPT09IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gYXdhaXQgdGhpcy5maWx0ZXJab25lc0lEc0ZvclVzZXIoem9uZXMpO1xyXG4gICAgLy8gICAgIGlmIChmaWx0ZXJlZFpvbmVzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgbGV0IHpvbmVzU29ydGVkID0gdGhpcy5zb3J0Wm9uZXNGcm9tQ2hpbGRUb1BhcmVudChmaWx0ZXJlZFpvbmVzKTtcclxuICAgIC8vICAgICAgICAgem9uZXNTb3J0ZWQgPSB6b25lc1NvcnRlZC5maWx0ZXIoKHpvbmUpID0+IHpvbmUgIT09IHVuZGVmaW5lZCk7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiB6b25lc1NvcnRlZDtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIFtdO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZVpvbmUoaW5wdXQ6IGFueSk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlWm9uZShpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Wm9uZXNGb3JOb2RlRm9yU3BhY2UoXHJcbiAgICAgICAgbm9kZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKGFzeW5jICh6b25lcykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gem9uZXMuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubm9kZUlEcyAmJiB6b25lLm5vZGVJRHMuaW5jbHVkZXMobm9kZUlEKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkWm9uZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBab25lIChsYXllciBGTE9PUikgZm9yIGEgbWF0dGVycG9ydCBzd2VlcCBJRCBpbiBhIGdpdmVuIFNwYWNlXHJcbiAgICAgKiBAcGFyYW0gc3dlZXBJRCBcclxuICAgICAqIEBwYXJhbSBzcGFjZUlEIFxyXG4gICAgICogQHJldHVybnMgWm9uZVxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRGbG9vclpvbmVGb3JTd2VlcEluU3BhY2Uoc3dlZXBJRDogc3RyaW5nLCBzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKHN3ZWVwSUQsIHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IGZsb29ycyA9IHpvbmVzLmZpbHRlcihcclxuICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lLmluY2x1ZGVzKFwiRkxPT1JcIiksXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmxvb3JzLmxlbmd0aCA+IDAgPyBmbG9vcnNbMF0gOiBudWxsO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT25ELE1BQU0sT0FBTyxXQUFXO0lBR3BCLFlBQXlDLFdBQWdCLEVBQVUsV0FBNEI7UUFBNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzNGLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDakMsTUFBTSxJQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ25ELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdELElBQUksS0FBSyxFQUFFO2dCQUNQLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtvQkFDNUIsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBVSxDQUFDO29CQUN2QyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3pCO2FBQ0o7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbkQ7SUFFTCxDQUFDO0lBRUQs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TSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7O3dHQWxPUSxXQUFXLGtCQUdBLG1CQUFtQjs0R0FIOUIsV0FBVyxjQUZSLE1BQU07MkZBRVQsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlnQixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGJPYmplY3RUeXBlLCBab25lIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3VzZXIuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBab25lU2VydmljZSB7XHJcbiAgICBBUEk6IGFueTsgLy9BV1MgQVBJU2VydmljZVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSwgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRab25lc0J5U3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxBcnJheTxab25lPj4ge1xyXG4gICAgICAgIGNvbnN0IGxpc3Q6IFpvbmVbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLkFQSS5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkoJ1pvbmVzQnlTcGFjZScpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAgICAgaWYgKHpvbmVzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHpvbmUgb2Ygem9uZXMuaXRlbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB6b25lT2JqZWN0ID0geyAuLi56b25lIH0gYXMgWm9uZTtcclxuICAgICAgICAgICAgICAgICAgICB6b25lT2JqZWN0LnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoem9uZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKHpvbmVPYmplY3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBsaXN0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWm9uZXNCeVNwYWNlIG5vdCBpbXBsZW1lbnRlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25Gb3JMb2NhdGlvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IFtdO1xyXG4gICAgICAgIGlmIChtaXNzaW9uRm9yTG9jYXRpb24gJiYgbWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBhbGxvd2VkWm9uZSA9IGF3YWl0IHRoaXMuZ2V0Wm9uZShtaXNzaW9uRm9yTG9jYXRpb24uem9uZUlEKTtcclxuICAgICAgICAgICAgYWxsb3dlZFpvbmUudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbChhbGxvd2VkWm9uZSk7XHJcbiAgICAgICAgICAgIGlmIChhbGxvd2VkWm9uZS5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxpc3QucHVzaChhbGxvd2VkWm9uZS5wYXJlbnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhlIHdob2xlIGJ1aWxkaW5nIGlzIGF1dGhvcml6ZWRcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsaXN0LnB1c2goYWxsb3dlZFpvbmUpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGF3YWl0IHRoaXMuQVBJLkxpc3Rab25lcyh7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJRDogeyBlcTogYWxsb3dlZFpvbmUuaWQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRab25lID0geyAuLi5jaGlsZCB9IGFzIFpvbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRab25lLnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChjaGlsZFpvbmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGlzdDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJab25lc0lEc0ZvclVzZXIoem9uZXM6IFpvbmVbXSk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICAgICAgY29uc3QgeyBzcGFjZUlEIH0gPSB6b25lc1swXTtcclxuICAgICAgICBjb25zdCB6b25lSURzID0gbmV3IFNldCh6b25lcy5tYXAoKHpvbmUpID0+IHpvbmUuaWQpKTtcclxuICAgICAgICBjb25zdCBhbGxvd2VkWm9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRab25lcyA9IGFsbG93ZWRab25lcy5maWx0ZXIoKHpvbmUpID0+XHJcbiAgICAgICAgICAgIHpvbmVJRHMuaGFzKHpvbmUuaWQpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkWm9uZXM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlWm9uZSh7IGlkOiB6b25lSUQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKFxyXG4gICAgICAgIHN3ZWVwSUQ6IHN0cmluZyxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IHpvbmVzU3BhY2UgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKSkuaXRlbXM7XHJcbiAgICAgICAgcmV0dXJuIHpvbmVzU3BhY2UuZmlsdGVyKFxyXG4gICAgICAgICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHN3ZWVwSUQpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcclxuICAgIHNvcnRab25lc0Zyb21DaGlsZFRvUGFyZW50KHpvbmVzVG9Tb3J0OiBab25lW10pIHtcclxuICAgICAgICAvLyBnZXQgZGVmYXVsdFxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRab25lID0gem9uZXNUb1NvcnQuZmluZCgoeikgPT4gIXoucGFyZW50SUQpO1xyXG4gICAgICAgIGlmIChkZWZhdWx0Wm9uZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleE9mID0gem9uZXNUb1NvcnQuaW5kZXhPZihkZWZhdWx0Wm9uZSk7XHJcbiAgICAgICAgICAgIHpvbmVzVG9Tb3J0LnNwbGljZShpbmRleE9mLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChhLnBhcmVudElEID09PSBiLmlkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gc28gZmFyIGJ5IG51bWJlciBvZiBuYXZpZ2F0aW9uIHBvaW50cyBpbiB0aGVtXHJcbiAgICAgICAgLy8gY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KFxyXG4gICAgICAgIC8vICAgICAoYSwgYikgPT4gYS5uYXZpZ2F0aW9ucy5pdGVtcy5sZW5ndGggLSBiLm5hdmlnYXRpb25zLml0ZW1zLmxlbmd0aCxcclxuICAgICAgICAvLyApO1xyXG4gICAgICAgIGlmIChkZWZhdWx0Wm9uZSkge1xyXG4gICAgICAgICAgICB6b25lcy5wdXNoKGRlZmF1bHRab25lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHpvbmVzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFpvbmVzRm9yT2JqZWN0KFxyXG4gICAgICAgIG9iamVjdDogRGJPYmplY3RUeXBlLFxyXG4gICAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgICAgICBpZiAob2JqZWN0LnBvaXMuaXRlbXMgJiYgb2JqZWN0LnBvaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBbcG9pXSA9IG9iamVjdC5wb2lzLml0ZW1zO1xyXG4gICAgICAgICAgICBpZiAocG9pLm1hdHRlcnBvcnRTd2VlcElEKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKFxyXG4gICAgICAgICAgICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcclxuICAgICAgICAgICAgICAgICAgICBvYmplY3Quc3BhY2VJRCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gem9uZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlVmlydHVhbFpvbmUoem9uZUlucHV0OiBab25lKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICAgICAgem9uZUlucHV0LnN3ZWVwSURzID0gW107XHJcbiAgICAgICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKHpvbmVJbnB1dCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJ2aXJ0dWFsIHpvbmUgY3JlYXRlZFwiLCB6b25lKTtcclxuICAgICAgICByZXR1cm4gem9uZTtcclxuICAgIH1cclxuXHJcbiAgICB6b25lSXNWaXJ0dWFsKHpvbmU6IFpvbmUpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXpvbmUuc3dlZXBJRHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgKHpvbmUudGFncyAmJiB6b25lLnRhZ3MuaW5jbHVkZXMoXCJ2aXJ0dWFsXCIpKSB8fFxyXG4gICAgICAgICAgICB6b25lLnN3ZWVwSURzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1vZGVsM0RGb3Jab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCB6b25lID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldFpvbmUoem9uZUlEKTtcclxuICAgICAgICBpZiAoem9uZS5ub2RlSURzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uR2V0Tm9kZSh6b25lLm5vZGVJRHNbMF0pO1xyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5tb2RlbDNEO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRab25lKHpvbmVJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGVmYXVsdFpvbmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihhc3luYyAoem9uZXMpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgem9uZXNCdWlsZGluZyA9IHpvbmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gXCJCVUlMRElOR1wiLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoem9uZXNCdWlsZGluZy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB6b25lc0J1aWxkaW5nWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFpvbmUgPSB6b25lcy5maW5kKCh6b25lKSA9PiAhem9uZS5wYXJlbnRJRCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRab25lO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZShpbnB1dDogWm9uZSk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlWm9uZShpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXN5bmMgZ2V0U29ydGVkWm9uZXNGb3JTd2VlcEZvclVzZXIoXHJcbiAgICAvLyAgICAgc3dlZXA6IHN0cmluZyxcclxuICAgIC8vICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAvLyApOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgLy8gICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gW107XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0ZvclN3ZWVwRm9yU3BhY2Uoc3dlZXAsIHNwYWNlSUQpO1xyXG4gICAgLy8gICAgIGlmICh6b25lcy5sZW5ndGggPT09IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gYXdhaXQgdGhpcy5maWx0ZXJab25lc0lEc0ZvclVzZXIoem9uZXMpO1xyXG4gICAgLy8gICAgIGlmIChmaWx0ZXJlZFpvbmVzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgbGV0IHpvbmVzU29ydGVkID0gdGhpcy5zb3J0Wm9uZXNGcm9tQ2hpbGRUb1BhcmVudChmaWx0ZXJlZFpvbmVzKTtcclxuICAgIC8vICAgICAgICAgem9uZXNTb3J0ZWQgPSB6b25lc1NvcnRlZC5maWx0ZXIoKHpvbmUpID0+IHpvbmUgIT09IHVuZGVmaW5lZCk7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiB6b25lc1NvcnRlZDtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIFtdO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZVpvbmUoaW5wdXQ6IGFueSk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlWm9uZShpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Wm9uZXNGb3JOb2RlRm9yU3BhY2UoXHJcbiAgICAgICAgbm9kZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKGFzeW5jICh6b25lcykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gem9uZXMuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubm9kZUlEcyAmJiB6b25lLm5vZGVJRHMuaW5jbHVkZXMobm9kZUlEKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkWm9uZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBab25lIChsYXllciBGTE9PUikgZm9yIGEgbWF0dGVycG9ydCBzd2VlcCBJRCBpbiBhIGdpdmVuIFNwYWNlXHJcbiAgICAgKiBAcGFyYW0gc3dlZXBJRCBcclxuICAgICAqIEBwYXJhbSBzcGFjZUlEIFxyXG4gICAgICogQHJldHVybnMgWm9uZVxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRGbG9vclpvbmVGb3JTd2VlcEluU3BhY2Uoc3dlZXBJRDogc3RyaW5nLCBzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKHN3ZWVwSUQsIHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IGZsb29ycyA9IHpvbmVzLmZpbHRlcihcclxuICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lLmluY2x1ZGVzKFwiRkxPT1JcIiksXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmxvb3JzLmxlbmd0aCA+IDAgPyBmbG9vcnNbMF0gOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IHpvbmVzIHdvdGggYXVkaW8gdHJhY2tcclxuICAgICAqIEBwYXJhbSBzcGFjZUlEIFxyXG4gICAgICogQHJldHVybnMgIFByb21pc2U8Wm9uZVtdPlxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRBdWRpb1pvbmVzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgICAgICBjb25zdCBhbGxab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIHJldHVybiBhbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUuYXVkaW9JRCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -18,7 +18,7 @@ export class NavigatorService {
18
18
  this.navBarZoneIDChange = new Subject();
19
19
  this.isVisibleChanged = new Subject();
20
20
  this.zonesForUserChange = new Subject();
21
- this.queueSweeps = [];
21
+ this.audioZoneChange = new Subject();
22
22
  this.matterportService.currentSweep
23
23
  .pipe(first()) // take first in order not to wait 2 sec an first load
24
24
  .subscribe((sweep) => {
@@ -28,7 +28,7 @@ export class NavigatorService {
28
28
  }
29
29
  });
30
30
  this.matterportService.currentSweep
31
- .pipe(debounceTime(2000)) // delays values emitted and return only the latest
31
+ .pipe(debounceTime(1500)) // delays values emitted and return only the latest
32
32
  .subscribe((sweep) => {
33
33
  if (sweep === this.currentSweep) {
34
34
  return;
@@ -45,6 +45,7 @@ export class NavigatorService {
45
45
  if (!data.spaceID) {
46
46
  this.zonesForUserForSpace = null;
47
47
  this.zonesSortedForCurrentSweep = null;
48
+ this.audioZonesForSpace = null;
48
49
  this.currentZone = null;
49
50
  this.zoneChange.next(null);
50
51
  this.currentSweep = null;
@@ -118,6 +119,7 @@ export class NavigatorService {
118
119
  // if first load and zones are not set
119
120
  this.zonesForUserForSpace =
120
121
  await this.zoneService.getZonesBySpaceForUser(this.currentSpaceID);
122
+ this.audioZonesForSpace = await this.zoneService.getAudioZonesForSpace(this.currentSpaceID);
121
123
  this.setZonesForCurrentSweep();
122
124
  }
123
125
  checkRotationForSweep(sweep) {
@@ -131,7 +133,15 @@ export class NavigatorService {
131
133
  if (!this.currentSweep) {
132
134
  return;
133
135
  }
134
- const zonesForSweep = this.zonesForUserForSpace?.filter((zone) => zone.sweepIDs && zone.sweepIDs.includes(this.currentSweep));
136
+ let zonesForSweep = this.zonesForUserForSpace?.filter((zone) => zone.sweepIDs && zone.sweepIDs.includes(this.currentSweep));
137
+ const audioZone = this.audioZonesForSpace?.find((zone) => zone.sweepIDs && zone.sweepIDs.includes(this.currentSweep));
138
+ // console.log("audio zone", audioZone);
139
+ if (audioZone !== this.currentAudioZone) {
140
+ this.audioZoneChange.next(audioZone);
141
+ this.currentAudioZone = audioZone;
142
+ }
143
+ // filter out audio zone (not to show to user it's name)
144
+ zonesForSweep = zonesForSweep.filter((zone) => !zone.audio);
135
145
  if (zonesForSweep && zonesForSweep.length > 0) {
136
146
  this.zonesSortedForCurrentSweep = zonesForSweep.sort((a, b) => {
137
147
  if (a.sweepIDs.length === b.sweepIDs.length) {
@@ -165,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
165
175
  providedIn: "root",
166
176
  }]
167
177
  }], ctorParameters: function () { return [{ type: i1.MatterportService }, { type: i2.ViewerService }, { type: i3.ZoneService }, { type: i4.BaseUserService }]; } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFVckQsTUFBTSxPQUFPLGdCQUFnQjtJQXVDekIsWUFDWSxpQkFBb0MsRUFDcEMsYUFBNEIsRUFDNUIsV0FBd0IsRUFDeEIsV0FBNEI7UUFINUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUE3QnhDLHNCQUFpQixHQUNiLElBQUksR0FBRyxFQUFFLENBQUM7UUFJZCxxQkFBZ0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV6RCxlQUFVLEdBQXlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFakQsdUJBQWtCLEdBQTJCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFM0QscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQVExQyx1QkFBa0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUkzRCxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQVF2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWTthQUM5QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyx1REFBdUQ7YUFDckUsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLFlBQVks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LENBQUM7OzZHQTVNUSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZiLE1BQU07MkZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBab25lIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWF0dGVycG9ydFNlcnZpY2UgfSBmcm9tIFwiLi9tYXR0ZXJwb3J0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvem9uZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuL3VzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBWaWV3ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld2VyLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2aWdhdG9yU2VydmljZSB7XHJcblxyXG4gICAgY3VycmVudFN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAgIHRhcmdldFN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAgIHRhcmdldFJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9IHwgbnVsbDtcclxuXHJcbiAgICBjdXJyZW50TW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgICBjdXJyZW50U3BhY2VJRDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgICBjdXJyZW50Wm9uZTogWm9uZSB8IG51bGw7XHJcblxyXG4gICAgdmlzaXRMYXN0UG9zaXRpb246IE1hcDxzdHJpbmcsIHsgc3dlZXA6IHN0cmluZzsgcm90YXRpb246IGFueTsgfT4gPVxyXG4gICAgICAgIG5ldyBNYXAoKTtcclxuXHJcbiAgICBmbG9vclRvR286IFpvbmUgfCBudWxsO1xyXG5cclxuICAgIGxvY2F0aW9uSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHpvbmVDaGFuZ2U6IFN1YmplY3Q8Wm9uZSB8IG51bGw+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBuYXZCYXJab25lSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGlzVmlzaWJsZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIGN1cnJlbnROYXZCYXJMb2NhdGlvbklEOiBzdHJpbmc7XHJcblxyXG4gICAgY3VycmVudE5hdkJhclpvbmVJRDogc3RyaW5nO1xyXG5cclxuICAgIHpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwOiBab25lW10gfCBudWxsO1xyXG5cclxuICAgIHpvbmVzRm9yVXNlckNoYW5nZTogU3ViamVjdDxab25lW10gfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgem9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXSB8IG51bGw7XHJcblxyXG4gICAgcXVldWVTd2VlcHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBtYXR0ZXJwb3J0U2VydmljZTogTWF0dGVycG9ydFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3VycmVudFN3ZWVwXHJcbiAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpIC8vICB0YWtlIGZpcnN0IGluIG9yZGVyIG5vdCB0byB3YWl0IDIgc2VjIGFuIGZpcnN0IGxvYWRcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3dlZXA6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTd2VlcFxyXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWU8c3RyaW5nPigyMDAwKSkgLy8gIGRlbGF5cyB2YWx1ZXMgZW1pdHRlZCBhbmQgcmV0dXJuIG9ubHkgdGhlIGxhdGVzdFxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3dlZXAgPT09IHRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZpZXdlclNlcnZpY2Uudmlld2VySXNPbi5waXBlKCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAoZGF0YToge1xyXG4gICAgICAgICAgICAgICAgc3BhY2VJRDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICAgICAgICAgIG1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XHJcbiAgICAgICAgICAgICAgICBzd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICAgICAgICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9IHwgbnVsbDtcclxuICAgICAgICAgICAgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQgIT09IGRhdGEuc3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBkYXRhLnNwYWNlSUQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuc3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZUNoYW5nZS5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzYXZlIGxhc3QgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0UG9zZSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UucG9zZUNhbWVyYTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFBvc2UgJiYgdGhpcy5jdXJyZW50TW9kZWwzRCAmJiB0aGlzLnVzZXJTZXJ2aWNlLmN1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uc2V0KHRoaXMuY3VycmVudE1vZGVsM0QsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3ZWVwOiBsYXN0UG9zZS5zd2VlcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBsYXN0UG9zZS5yb3RhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsM0QgPSBkYXRhLm1vZGVsM0Q7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsM0QgPSBkYXRhLm1vZGVsM0Q7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IGRhdGEuc3dlZXA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IGRhdGEucm90YXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZpZXdlckxvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5pc0NoYW5nZWQuc3Vic2NyaWJlKChpc0Nvbm5lY3RlZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB1c2VyIGRpc2Nvbm5lY3RlZCwgY2xlYW4gTWFwXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwobW9kZWwzRDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uZ2V0KG1vZGVsM0QpO1xyXG4gICAgfVxyXG5cclxuICAgIGdvVG9Td2VlcFdpdGhSb3RhdGlvbihcclxuICAgICAgICBzd2VlcDogc3RyaW5nLFxyXG4gICAgICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9IHwgbnVsbCA9IG51bGwsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl9nb190b19zd2VlcChzd2VlcCwgcm90YXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdvVG9GbG9vcihmbG9vcjogWm9uZSkge1xyXG4gICAgICAgIGxldCBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKGZsb29yLm1ldGFkYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0gSlNPTi5wYXJzZShmbG9vci5tZXRhZGF0YSk7XHJcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG1ldGFkYXRhLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX2Zsb29yKGZsb29yLm5hbWUsIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvblZpZXdlckxvYWRlZCgpIHtcclxuICAgICAgICBsZXQgc3dlZXBUb0dvOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgICAgICBsZXQgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gfCBudWxsID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy50YXJnZXRTd2VlcCkge1xyXG4gICAgICAgICAgICBzd2VlcFRvR28gPSB0aGlzLnRhcmdldFN3ZWVwO1xyXG4gICAgICAgICAgICByb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb25cclxuICAgICAgICAgICAgICAgID8gdGhpcy50YXJnZXRSb3RhdGlvblxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmNoZWNrUm90YXRpb25Gb3JTd2VlcCh0aGlzLnRhcmdldFN3ZWVwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0UG9zdGlvbiA9IHRoaXMuZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEISxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGxhc3RQb3N0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBzd2VlcFRvR28gPSBsYXN0UG9zdGlvbi5zd2VlcDtcclxuICAgICAgICAgICAgICAgIHJvdGF0aW9uID0gbGFzdFBvc3Rpb24ucm90YXRpb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0Um90YXRpb24pIHtcclxuICAgICAgICAgICAgcm90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc3dlZXBUb0dvICYmICF0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImdvIHRvIHN3ZWVwXCIsIHN3ZWVwVG9Hbyk7XHJcbiAgICAgICAgICAgIHRoaXMuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHN3ZWVwVG9Hbywgcm90YXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5mbG9vclRvR28pIHtcclxuICAgICAgICAgICAgdGhpcy5nb1RvRmxvb3IodGhpcy5mbG9vclRvR28pO1xyXG4gICAgICAgICAgICB0aGlzLmZsb29yVG9HbyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIGZpcnN0IGxvYWQgYW5kIHpvbmVzIGFyZSBub3Qgc2V0XHJcbiAgICAgICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcih0aGlzLmN1cnJlbnRTcGFjZUlEISk7XHJcbiAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrUm90YXRpb25Gb3JTd2VlcChzd2VlcDogc3RyaW5nKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGxhc3RQb3NpdGlvbiA9IHRoaXMudmlzaXRMYXN0UG9zaXRpb24uZ2V0KHRoaXMuY3VycmVudE1vZGVsM0QhKTtcclxuICAgICAgICBpZiAobGFzdFBvc2l0aW9uICYmIGxhc3RQb3NpdGlvbi5zd2VlcCA9PT0gc3dlZXApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxhc3RQb3NpdGlvbi5yb3RhdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTd2VlcCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHpvbmVzRm9yU3dlZXAgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlPy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh6b25lKSA9PlxyXG4gICAgICAgICAgICAgICAgem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHRoaXMuY3VycmVudFN3ZWVwISlcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh6b25lc0ZvclN3ZWVwICYmIHpvbmVzRm9yU3dlZXAubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwID0gem9uZXNGb3JTd2VlcC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYS5zd2VlcElEcyEubGVuZ3RoID09PSBiLnN3ZWVwSURzIS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc2FtZSBhbW91bnQgb2Ygc3dlZXBzOiBmbG9vciA9PSB0aGUgd2hvbGUgc3BhY2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYS5sYXllciAmJiBiLmxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB1dCB0eXBlIEJVSUxESU5HIGF0IHRoZSBlbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEubGF5ZXIubmFtZSAhPT0gXCJCVUlMRElOR1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IC0xXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGIubGF5ZXIubmFtZSAhPT0gXCJCVUlMRElOR1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wYXJlbnQ/LnN3ZWVwSURzID8gLTEgOiBiLnBhcmVudD8uc3dlZXBJRHMgPyAxIDogMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBhLnN3ZWVwSURzIS5sZW5ndGggLSBiLnN3ZWVwSURzIS5sZW5ndGg7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVzRm9yVXNlckNoYW5nZS5uZXh0KHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXApO1xyXG5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcC5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lICE9PSB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwWzBdXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgW3RoaXMuY3VycmVudFpvbmVdID0gdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMuem9uZUNoYW5nZS5uZXh0KHRoaXMuY3VycmVudFpvbmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufVxyXG4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFVckQsTUFBTSxPQUFPLGdCQUFnQjtJQTJDekIsWUFDWSxpQkFBb0MsRUFDcEMsYUFBNEIsRUFDNUIsV0FBd0IsRUFDeEIsV0FBNEI7UUFINUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFqQ3hDLHNCQUFpQixHQUNiLElBQUksR0FBRyxFQUFFLENBQUM7UUFJZCxxQkFBZ0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV6RCxlQUFVLEdBQXlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFakQsdUJBQWtCLEdBQTJCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFM0QscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQVExQyx1QkFBa0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUUzRCxvQkFBZSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBYzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZO2FBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDthQUNyRSxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUN6QixJQUFJ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RCxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMvRDtnQkFDRCxPQUFPLENBQUMsQ0FBQyxRQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFTLENBQUMsTUFBTSxDQUFDO1lBQ25ELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUU5RCxJQUNJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEVBQ3pEO2dCQUNFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzFDO1NBQ0o7SUFFTCxDQUFDOzs2R0E3TlEsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzJGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgWm9uZSB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1hdHRlcnBvcnRTZXJ2aWNlIH0gZnJvbSBcIi4vbWF0dGVycG9ydC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3pvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gXCIuL3ZpZXdlci5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvclNlcnZpY2Uge1xyXG5cclxuICAgIGN1cnJlbnRTd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgICB0YXJnZXRTd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgICB0YXJnZXRSb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSB8IG51bGw7XHJcblxyXG4gICAgY3VycmVudE1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gICAgY3VycmVudFNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gICAgY3VycmVudFpvbmU6IFpvbmUgfCBudWxsO1xyXG5cclxuICAgIHZpc2l0TGFzdFBvc2l0aW9uOiBNYXA8c3RyaW5nLCB7IHN3ZWVwOiBzdHJpbmc7IHJvdGF0aW9uOiBhbnk7IH0+ID1cclxuICAgICAgICBuZXcgTWFwKCk7XHJcblxyXG4gICAgZmxvb3JUb0dvOiBab25lIHwgbnVsbDtcclxuXHJcbiAgICBsb2NhdGlvbklEQ2hhbmdlOiBTdWJqZWN0PHN0cmluZyB8IG51bGw+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICB6b25lQ2hhbmdlOiBTdWJqZWN0PFpvbmUgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgbmF2QmFyWm9uZUlEQ2hhbmdlOiBTdWJqZWN0PHN0cmluZyB8IG51bGw+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBpc1Zpc2libGVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBjdXJyZW50TmF2QmFyTG9jYXRpb25JRDogc3RyaW5nO1xyXG5cclxuICAgIGN1cnJlbnROYXZCYXJab25lSUQ6IHN0cmluZztcclxuXHJcbiAgICB6b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDogWm9uZVtdIHwgbnVsbDtcclxuXHJcbiAgICB6b25lc0ZvclVzZXJDaGFuZ2U6IFN1YmplY3Q8Wm9uZVtdIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGF1ZGlvWm9uZUNoYW5nZTogU3ViamVjdDxab25lPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgem9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXSB8IG51bGw7XHJcblxyXG4gICAgY3VycmVudEF1ZGlvWm9uZTogWm9uZTtcclxuXHJcbiAgICBhdWRpb1pvbmVzRm9yU3BhY2U6IFpvbmVbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jdXJyZW50U3dlZXBcclxuICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSkgLy8gIHRha2UgZmlyc3QgaW4gb3JkZXIgbm90IHRvIHdhaXQgMiBzZWMgYW4gZmlyc3QgbG9hZFxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IHN3ZWVwO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3VycmVudFN3ZWVwXHJcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZTxzdHJpbmc+KDE1MDApKSAvLyAgZGVsYXlzIHZhbHVlcyBlbWl0dGVkIGFuZCByZXR1cm4gb25seSB0aGUgbGF0ZXN0XHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN3ZWVwOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChzd2VlcCA9PT0gdGhpcy5jdXJyZW50U3dlZXApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IHN3ZWVwO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudmlld2VyU2VydmljZS52aWV3ZXJJc09uLnBpcGUoKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBzcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICAgICAgICAgICAgbW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICAgICAgICAgIHN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICAgICAgICAgICAgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gfCBudWxsO1xyXG4gICAgICAgICAgICB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCAhPT0gZGF0YS5zcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IGRhdGEuc3BhY2VJRDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghZGF0YS5zcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdWRpb1pvbmVzRm9yU3BhY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZUNoYW5nZS5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzYXZlIGxhc3QgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0UG9zZSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UucG9zZUNhbWVyYTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFBvc2UgJiYgdGhpcy5jdXJyZW50TW9kZWwzRCAmJiB0aGlzLnVzZXJTZXJ2aWNlLmN1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uc2V0KHRoaXMuY3VycmVudE1vZGVsM0QsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3ZWVwOiBsYXN0UG9zZS5zd2VlcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBsYXN0UG9zZS5yb3RhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsM0QgPSBkYXRhLm1vZGVsM0Q7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsM0QgPSBkYXRhLm1vZGVsM0Q7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IGRhdGEuc3dlZXA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IGRhdGEucm90YXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZpZXdlckxvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5pc0NoYW5nZWQuc3Vic2NyaWJlKChpc0Nvbm5lY3RlZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB1c2VyIGRpc2Nvbm5lY3RlZCwgY2xlYW4gTWFwXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwobW9kZWwzRDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uZ2V0KG1vZGVsM0QpO1xyXG4gICAgfVxyXG5cclxuICAgIGdvVG9Td2VlcFdpdGhSb3RhdGlvbihcclxuICAgICAgICBzd2VlcDogc3RyaW5nLFxyXG4gICAgICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9IHwgbnVsbCA9IG51bGwsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl9nb190b19zd2VlcChzd2VlcCwgcm90YXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdvVG9GbG9vcihmbG9vcjogWm9uZSkge1xyXG4gICAgICAgIGxldCBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKGZsb29yLm1ldGFkYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0gSlNPTi5wYXJzZShmbG9vci5tZXRhZGF0YSk7XHJcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG1ldGFkYXRhLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX2Zsb29yKGZsb29yLm5hbWUsIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvblZpZXdlckxvYWRlZCgpIHtcclxuICAgICAgICBsZXQgc3dlZXBUb0dvOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgICAgICBsZXQgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gfCBudWxsID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy50YXJnZXRTd2VlcCkge1xyXG4gICAgICAgICAgICBzd2VlcFRvR28gPSB0aGlzLnRhcmdldFN3ZWVwO1xyXG4gICAgICAgICAgICByb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb25cclxuICAgICAgICAgICAgICAgID8gdGhpcy50YXJnZXRSb3RhdGlvblxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmNoZWNrUm90YXRpb25Gb3JTd2VlcCh0aGlzLnRhcmdldFN3ZWVwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0UG9zdGlvbiA9IHRoaXMuZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEISxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGxhc3RQb3N0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBzd2VlcFRvR28gPSBsYXN0UG9zdGlvbi5zd2VlcDtcclxuICAgICAgICAgICAgICAgIHJvdGF0aW9uID0gbGFzdFBvc3Rpb24ucm90YXRpb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0Um90YXRpb24pIHtcclxuICAgICAgICAgICAgcm90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc3dlZXBUb0dvICYmICF0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImdvIHRvIHN3ZWVwXCIsIHN3ZWVwVG9Hbyk7XHJcbiAgICAgICAgICAgIHRoaXMuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHN3ZWVwVG9Hbywgcm90YXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5mbG9vclRvR28pIHtcclxuICAgICAgICAgICAgdGhpcy5nb1RvRmxvb3IodGhpcy5mbG9vclRvR28pO1xyXG4gICAgICAgICAgICB0aGlzLmZsb29yVG9HbyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIGZpcnN0IGxvYWQgYW5kIHpvbmVzIGFyZSBub3Qgc2V0XHJcbiAgICAgICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcih0aGlzLmN1cnJlbnRTcGFjZUlEKTtcclxuICAgICAgICB0aGlzLmF1ZGlvWm9uZXNGb3JTcGFjZSA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0QXVkaW9ab25lc0ZvclNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1JvdGF0aW9uRm9yU3dlZXAoc3dlZXA6IHN0cmluZyk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gfCBudWxsIHtcclxuICAgICAgICBjb25zdCBsYXN0UG9zaXRpb24gPSB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldCh0aGlzLmN1cnJlbnRNb2RlbDNEISk7XHJcbiAgICAgICAgaWYgKGxhc3RQb3NpdGlvbiAmJiBsYXN0UG9zaXRpb24uc3dlZXAgPT09IHN3ZWVwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsYXN0UG9zaXRpb24ucm90YXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3dlZXApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgem9uZXNGb3JTd2VlcCA9IHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2U/LmZpbHRlcihcclxuICAgICAgICAgICAgKHpvbmUpID0+XHJcbiAgICAgICAgICAgICAgICB6b25lLnN3ZWVwSURzICYmIHpvbmUuc3dlZXBJRHMuaW5jbHVkZXModGhpcy5jdXJyZW50U3dlZXApXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhdWRpb1pvbmUgPSB0aGlzLmF1ZGlvWm9uZXNGb3JTcGFjZT8uZmluZChcclxuICAgICAgICAgICAgKHpvbmUpID0+XHJcbiAgICAgICAgICAgICAgICB6b25lLnN3ZWVwSURzICYmIHpvbmUuc3dlZXBJRHMuaW5jbHVkZXModGhpcy5jdXJyZW50U3dlZXApXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImF1ZGlvIHpvbmVcIiwgYXVkaW9ab25lKTtcclxuICAgICAgICBpZiAoYXVkaW9ab25lICE9PSB0aGlzLmN1cnJlbnRBdWRpb1pvbmUpIHtcclxuICAgICAgICAgICAgdGhpcy5hdWRpb1pvbmVDaGFuZ2UubmV4dChhdWRpb1pvbmUpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpb1pvbmUgPSBhdWRpb1pvbmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGZpbHRlciBvdXQgYXVkaW8gem9uZSAobm90IHRvIHNob3cgdG8gdXNlciBpdCdzIG5hbWUpXHJcbiAgICAgICAgem9uZXNGb3JTd2VlcCA9IHpvbmVzRm9yU3dlZXAuZmlsdGVyKCh6b25lKSA9PiAhem9uZS5hdWRpbyk7XHJcbiAgICAgICAgaWYgKHpvbmVzRm9yU3dlZXAgJiYgem9uZXNGb3JTd2VlcC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSB6b25lc0ZvclN3ZWVwLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhLnN3ZWVwSURzIS5sZW5ndGggPT09IGIuc3dlZXBJRHMhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzYW1lIGFtb3VudCBvZiBzd2VlcHM6IGZsb29yID09IHRoZSB3aG9sZSBzcGFjZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmxheWVyICYmIGIubGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHV0IHR5cGUgQlVJTERJTkcgYXQgdGhlIGVuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5sYXllci5uYW1lICE9PSBcIkJVSUxESU5HXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gLTFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYi5sYXllci5uYW1lICE9PSBcIkJVSUxESU5HXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnBhcmVudD8uc3dlZXBJRHMgPyAtMSA6IGIucGFyZW50Py5zd2VlcElEcyA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGEuc3dlZXBJRHMhLmxlbmd0aCAtIGIuc3dlZXBJRHMhLmxlbmd0aDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZXNGb3JVc2VyQ2hhbmdlLm5leHQodGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgIT09IHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXBbMF1cclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBbdGhpcy5jdXJyZW50Wm9uZV0gPSB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lQ2hhbmdlLm5leHQodGhpcy5jdXJyZW50Wm9uZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -3716,6 +3716,17 @@ class ZoneService {
3716
3716
  return floors.length > 0 ? floors[0] : null;
3717
3717
  });
3718
3718
  }
3719
+ /**
3720
+ * Get zones woth audio track
3721
+ * @param spaceID
3722
+ * @returns Promise<Zone[]>
3723
+ */
3724
+ getAudioZonesForSpace(spaceID) {
3725
+ return __awaiter(this, void 0, void 0, function* () {
3726
+ const allZones = yield this.getZonesBySpace(spaceID);
3727
+ return allZones.filter((zone) => zone.audioID);
3728
+ });
3729
+ }
3719
3730
  }
3720
3731
  ZoneService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, deps: [{ token: 'currentAPIService' }, { token: BaseUserService }], target: i0.ɵɵFactoryTarget.Injectable });
3721
3732
  ZoneService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, providedIn: "root" });
@@ -4757,7 +4768,7 @@ class NavigatorService {
4757
4768
  this.navBarZoneIDChange = new Subject();
4758
4769
  this.isVisibleChanged = new Subject();
4759
4770
  this.zonesForUserChange = new Subject();
4760
- this.queueSweeps = [];
4771
+ this.audioZoneChange = new Subject();
4761
4772
  this.matterportService.currentSweep
4762
4773
  .pipe(first()) // take first in order not to wait 2 sec an first load
4763
4774
  .subscribe((sweep) => {
@@ -4767,7 +4778,7 @@ class NavigatorService {
4767
4778
  }
4768
4779
  });
4769
4780
  this.matterportService.currentSweep
4770
- .pipe(debounceTime(2000)) // delays values emitted and return only the latest
4781
+ .pipe(debounceTime(1500)) // delays values emitted and return only the latest
4771
4782
  .subscribe((sweep) => {
4772
4783
  if (sweep === this.currentSweep) {
4773
4784
  return;
@@ -4784,6 +4795,7 @@ class NavigatorService {
4784
4795
  if (!data.spaceID) {
4785
4796
  this.zonesForUserForSpace = null;
4786
4797
  this.zonesSortedForCurrentSweep = null;
4798
+ this.audioZonesForSpace = null;
4787
4799
  this.currentZone = null;
4788
4800
  this.zoneChange.next(null);
4789
4801
  this.currentSweep = null;
@@ -4860,6 +4872,7 @@ class NavigatorService {
4860
4872
  // if first load and zones are not set
4861
4873
  this.zonesForUserForSpace =
4862
4874
  yield this.zoneService.getZonesBySpaceForUser(this.currentSpaceID);
4875
+ this.audioZonesForSpace = yield this.zoneService.getAudioZonesForSpace(this.currentSpaceID);
4863
4876
  this.setZonesForCurrentSweep();
4864
4877
  });
4865
4878
  }
@@ -4871,11 +4884,19 @@ class NavigatorService {
4871
4884
  return null;
4872
4885
  }
4873
4886
  setZonesForCurrentSweep() {
4874
- var _a;
4887
+ var _a, _b;
4875
4888
  if (!this.currentSweep) {
4876
4889
  return;
4877
4890
  }
4878
- const zonesForSweep = (_a = this.zonesForUserForSpace) === null || _a === void 0 ? void 0 : _a.filter((zone) => zone.sweepIDs && zone.sweepIDs.includes(this.currentSweep));
4891
+ let zonesForSweep = (_a = this.zonesForUserForSpace) === null || _a === void 0 ? void 0 : _a.filter((zone) => zone.sweepIDs && zone.sweepIDs.includes(this.currentSweep));
4892
+ const audioZone = (_b = this.audioZonesForSpace) === null || _b === void 0 ? void 0 : _b.find((zone) => zone.sweepIDs && zone.sweepIDs.includes(this.currentSweep));
4893
+ // console.log("audio zone", audioZone);
4894
+ if (audioZone !== this.currentAudioZone) {
4895
+ this.audioZoneChange.next(audioZone);
4896
+ this.currentAudioZone = audioZone;
4897
+ }
4898
+ // filter out audio zone (not to show to user it's name)
4899
+ zonesForSweep = zonesForSweep.filter((zone) => !zone.audio);
4879
4900
  if (zonesForSweep && zonesForSweep.length > 0) {
4880
4901
  this.zonesSortedForCurrentSweep = zonesForSweep.sort((a, b) => {
4881
4902
  var _a, _b;